Repository: alttester/AltTester-Unity-SDK (language: python)

Issue:
Regular input stops working while SDK is connected to AltProxy
<!-- Short summary -->
## Actual result

### AR
<!-- How does the app behave in this scenario? --> 
Before using AltProxy it was ok for the SDK to use the custom input system when connected to the tests or to the desktop.
Now it becomes a problem as SDK needs to be connected to the proxy all the time which **❗stops regular input from working**.

### Additional info
<!-- Add screenshots or recording that shows how the app misbehaves. Logs and the OS on which the bug was reproduced could also come in handy. --> 
- The finding of this bug occurred when trying and not succeding to use the keyboard input in an instrumented TrashCat game (WebGL build with AltTester Unity SDK from `feature-proxy` branch)
- This behavior has a significant impact on the AltTester Desktop users not being able to use all types of inputs in the instrumented builds while using the Desktop app (even though in running tests the input should be handled)

## Expected result

### ER
<!-- How do you expect the app to behave in this scenario? --> 
Regular input should work when SDK is connected to AltProxy.

## Testability
<!-- Add suggestions on how to test the bugfix. -->
Check in an TrashCat instrumented build while connected to the proxy that the input from the keyboard works.


Discussion / hints:
@sandraaltom I put this in `Backlog`, but it should be decided with the dev team how to prioritize it considering the impact it has on the functionality of instrumented builds in relation to using the Desktop app.
@iulianatodoran please also check this issue on the current released version. 

Fix patch:
diff --git a/Assets/AltTester/AltDriver/Commands/DriverCommunicationWebSocket.cs b/Assets/AltTester/AltDriver/Commands/DriverCommunicationWebSocket.cs
index 7c906823a..93fb36c2d 100644
--- a/Assets/AltTester/AltDriver/Commands/DriverCommunicationWebSocket.cs
+++ b/Assets/AltTester/AltDriver/Commands/DriverCommunicationWebSocket.cs
@@ -136,7 +136,6 @@ public T Recvall<T>(CommandParams param)
             }
         }
 
-
         public void Send(CommandParams param)
         {
             param.messageId = DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString();
@@ -154,6 +153,7 @@ public void Close()
             logger.Info(string.Format("Closing connection to AltTester on: {0}", _uri));
             this.wsClient.Close();
         }
+
         public void SetCommandTimeout(int timeout)
         {
             commandTimeout = timeout;
@@ -172,7 +172,6 @@ protected void OnMessage(object sender, string data)
                 messages.Enqueue(message);
                 logger.Debug("response received: " + trimLog(data));
             }
-
         }
 
         private void handleNotification(CommandResponse message)
@@ -266,6 +265,7 @@ private void handleErrors(CommandError error)
             logger.Debug(error.type + " is not handled by driver.");
             throw new UnknownErrorException(error.message);
         }
+
         private string trimLog(string log, int maxLogLength = 1000)
         {
             if (string.IsNullOrEmpty(log)) return log;
@@ -334,6 +334,7 @@ public void RemoveNotificationListener(NotificationType notificationType)
                     break;
             }
         }
+
         public void SetDelayAfterCommand(float delay)
         {
             delayAfterCommand = delay;
diff --git a/Assets/AltTester/AltDriver/Commands/Parameters/CommandParams.cs b/Assets/AltTester/AltDriver/Commands/Parameters/CommandParams.cs
index 462855cf3..96514e329 100644
--- a/Assets/AltTester/AltDriver/Commands/Parameters/CommandParams.cs
+++ b/Assets/AltTester/AltDriver/Commands/Parameters/CommandParams.cs
@@ -9,6 +9,8 @@ public class CommandParams
         public string messageId;
         public string driverId;
         public string commandName;
+        public bool isNotification;
+
         public CommandParams()
         {
             CommandAttribute cmdAttribute =
@@ -703,6 +705,7 @@ public AltEndTouchParams(int fingerId)
             this.fingerId = fingerId;
         }
     }
+
     [Command("activateNotification")]
     public class ActivateNotification : CommandParams
     {
@@ -713,6 +716,7 @@ public ActivateNotification(NotificationType notificationType)
             NotificationType = notificationType;
         }
     }
+
     [Command("deactivateNotification")]
     public class DeactivateNotification : CommandParams
     {
diff --git a/Assets/AltTester/AltServer/Commands/AltCommands/AltActivateNotificationCommand.cs b/Assets/AltTester/AltServer/Commands/AltCommands/AltActivateNotificationCommand.cs
index a4f5ec8cd..9daca93a1 100644
--- a/Assets/AltTester/AltServer/Commands/AltCommands/AltActivateNotificationCommand.cs
+++ b/Assets/AltTester/AltServer/Commands/AltCommands/AltActivateNotificationCommand.cs
@@ -9,11 +9,12 @@ namespace AltTester.Commands
     public class AltActivateNotificationCommand : AltCommand<ActivateNotification, string>
     {
         ICommandHandler commandHandler;
+
         public AltActivateNotificationCommand(ICommandHandler commandHandler, ActivateNotification cmdParams) : base(cmdParams)
         {
             this.commandHandler = commandHandler;
-
         }
+
         public override string Execute()
         {
             switch (CommandParams.NotificationType)
@@ -33,6 +34,5 @@ public override string Execute()
             }
             return "Ok";
         }
-
     }
-}
\ No newline at end of file
+}
diff --git a/Assets/AltTester/AltServer/Commands/AltCommands/AltInvalidCommand.cs b/Assets/AltTester/AltServer/Commands/AltCommands/AltInvalidCommand.cs
index c6d46a400..20ad685c6 100644
--- a/Assets/AltTester/AltServer/Commands/AltCommands/AltInvalidCommand.cs
+++ b/Assets/AltTester/AltServer/Commands/AltCommands/AltInvalidCommand.cs
@@ -8,11 +8,11 @@ public class AltInvalidCommand : AltCommand<CommandParams, string>
     {
         private readonly Exception ex;
 
-
         public AltInvalidCommand(CommandParams cmdParams, Exception ex) : base(cmdParams ?? new CommandParams(AltErrors.errorInvalidCommand, null))
         {
             this.ex = ex;
         }
+
         public override string Execute()
         {
             throw new InvalidCommandException(ex);
diff --git a/Assets/AltTester/AltServer/Commands/UnityNotification/AltLoadSceneNotification.cs b/Assets/AltTester/AltServer/Commands/UnityNotification/AltLoadSceneNotification.cs
index 3502436df..6e1a96a49 100644
--- a/Assets/AltTester/AltServer/Commands/UnityNotification/AltLoadSceneNotification.cs
+++ b/Assets/AltTester/AltServer/Commands/UnityNotification/AltLoadSceneNotification.cs
@@ -14,7 +14,6 @@ public AltLoadSceneNotification(ICommandHandler commandHandler, bool isOn) : bas
             {
                 SceneManager.sceneLoaded += onSceneLoaded;
             }
-
         }
 
         static void onSceneLoaded(Scene scene, LoadSceneMode mode)
diff --git a/Assets/AltTester/AltServer/Commands/UnityNotification/AltLogNotification.cs b/Assets/AltTester/AltServer/Commands/UnityNotification/AltLogNotification.cs
index 5577440f7..65e6cacf1 100644
--- a/Assets/AltTester/AltServer/Commands/UnityNotification/AltLogNotification.cs
+++ b/Assets/AltTester/AltServer/Commands/UnityNotification/AltLogNotification.cs
@@ -16,7 +16,6 @@ public AltLogNotification(ICommandHandler commandHandler, bool isOn) : base(comm
             {
                 Application.logMessageReceived += onLogReceived;
             }
-
         }
 
         static void onLogReceived(string message, string stackTrace, LogType type)
diff --git a/Assets/AltTester/AltServer/Communication/AltClientWebSocketHandler.cs b/Assets/AltTester/AltServer/Communication/AltClientWebSocketHandler.cs
index 948ea5171..0db54dd24 100644
--- a/Assets/AltTester/AltServer/Communication/AltClientWebSocketHandler.cs
+++ b/Assets/AltTester/AltServer/Communication/AltClientWebSocketHandler.cs
@@ -7,13 +7,11 @@ public class AltClientWebSocketHandler : BaseWebSocketHandler
     {
         private readonly WebSocket _webSocket;
 
-
         public AltClientWebSocketHandler(WebSocket webSocket, ICommandHandler commandHandler) : base(commandHandler)
         {
             this._webSocket = webSocket;
             webSocket.OnMessage += this.onMessage;
 
-
             this._commandHandler.OnSendMessage += webSocket.Send;
         }
 
diff --git a/Assets/AltTester/AltServer/Communication/AltResponseQueue.cs b/Assets/AltTester/AltServer/Communication/AltResponseQueue.cs
index d79f10942..417e7b93a 100644
--- a/Assets/AltTester/AltServer/Communication/AltResponseQueue.cs
+++ b/Assets/AltTester/AltServer/Communication/AltResponseQueue.cs
@@ -11,7 +11,9 @@ public class AltResponseQueue
 
         public void Cycle()
         {
-            if (responseQueue.Count == 0) return;
+            if (responseQueue.Count == 0) {
+                return;
+            }
 
             lock (queueLock)
             {
diff --git a/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs b/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs
deleted file mode 100644
index 35d4e4dc8..000000000
--- a/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using AltTester.Logging;
-using AltWebSocketSharp.Server;
-using AltWebSocketSharp;
-
-namespace AltTester.Communication
-{
-    public class AltServerWebSocketHandler : WebSocketBehavior
-    {
-        private static readonly NLog.Logger logger = ServerLogManager.Instance.GetCurrentClassLogger();
-        private ICommandHandler commandHandler;
-
-        public CommunicationErrorHandler OnErrorHandler;
-        public CommunicationHandler OnClientConnected;
-        public CommunicationHandler OnClientDisconnected;
-
-        public AltServerWebSocketHandler()
-        {
-
-        }
-
-        public void Init(ICommandHandler cmdHandler)
-        {
-            this.commandHandler = cmdHandler;
-            commandHandler.OnSendMessage += this.Send;
-        }
-
-        protected override void OnOpen()
-        {
-            base.OnOpen();
-
-            logger.Debug("Client " + this.ID + " connected.");
-            if (OnClientConnected != null) OnClientConnected.Invoke();
-        }
-
-        protected override void OnClose(CloseEventArgs e)
-        {
-            base.OnClose(e);
-            logger.Debug("Client " + this.ID + " disconnected.");
-            if (OnClientDisconnected != null) OnClientDisconnected.Invoke();
-            commandHandler.OnSendMessage -= this.Send;
-        }
-
-        protected override void OnError(ErrorEventArgs e)
-        {
-            base.OnError(e);
-            if (OnErrorHandler != null)
-                OnErrorHandler.Invoke(e.Message, e.Exception);
-        }
-
-        protected override void OnMessage(MessageEventArgs e)
-        {
-            base.OnMessage(e);
-            commandHandler.OnMessage(e.Data);
-        }
-    }
-}
\ No newline at end of file
diff --git a/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs.meta b/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs.meta
deleted file mode 100644
index 52f0158c4..000000000
--- a/Assets/AltTester/AltServer/Communication/AltServerWebSocketHandler.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: b802b628166b4a04bad6457633b869fd
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/Assets/AltTester/AltServer/Communication/AltWebGLWebSocketHandler.cs b/Assets/AltTester/AltServer/Communication/AltWebGLWebSocketHandler.cs
index b6cfed908..24effffdd 100644
--- a/Assets/AltTester/AltServer/Communication/AltWebGLWebSocketHandler.cs
+++ b/Assets/AltTester/AltServer/Communication/AltWebGLWebSocketHandler.cs
@@ -13,13 +13,11 @@ public AltWebGLWebSocketHandler(ICommandHandler cmdHandler, WebGLWebSocket webSo
             this._webSocket.OnMessage += this.onMessage;
 
             _commandHandler.OnSendMessage += (message) =>
-             {
-                 this._webSocket.SendText(message).ConfigureAwait(false).GetAwaiter().GetResult();
-             };
-
-
-
+            {
+                this._webSocket.SendText(message).ConfigureAwait(false).GetAwaiter().GetResult();
+            };
         }
+
         private void onMessage(byte[] data)
         {
             var message = Encoding.UTF8.GetString(data);
@@ -27,4 +25,4 @@ private void onMessage(byte[] data)
         }
     }
 #endif
-}
\ No newline at end of file
+}
diff --git a/Assets/AltTester/AltServer/Communication/BaseWebSocketHandler.cs b/Assets/AltTester/AltServer/Communication/BaseWebSocketHandler.cs
index 920bb84d0..b0032bbea 100644
--- a/Assets/AltTester/AltServer/Communication/BaseWebSocketHandler.cs
+++ b/Assets/AltTester/AltServer/Communication/BaseWebSocketHandler.cs
@@ -4,10 +4,9 @@ public class BaseWebSocketHandler
     {
         protected readonly ICommandHandler _commandHandler;
 
-
         public BaseWebSocketHandler(ICommandHandler commandHandler)
         {
             _commandHandler = commandHandler;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/Assets/AltTester/AltServer/Communication/CommandHandler.cs b/Assets/AltTester/AltServer/Communication/CommandHandler.cs
index 6030a2573..1df525a32 100644
--- a/Assets/AltTester/AltServer/Communication/CommandHandler.cs
+++ b/Assets/AltTester/AltServer/Communication/CommandHandler.cs
@@ -14,6 +14,7 @@ namespace AltTester.Communication
     public class CommandHandler : ICommandHandler
     {
         private static readonly NLog.Logger logger = ServerLogManager.Instance.GetCurrentClassLogger();
+        private static readonly JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings { Culture = CultureInfo.InvariantCulture };
 
         public CommandHandler()
         {
@@ -21,29 +22,33 @@ public CommandHandler()
 
         public SendMessageHandler OnSendMessage { get; set; }
 
+        public NotificationHandler OnDriverConnect { get; set; }
+        public NotificationHandler OnDriverDisconnect { get; set; }
+
         public void Send(string data)
         {
             if (this.OnSendMessage != null)
             {
                 this.OnSendMessage.Invoke(data);
-                logger.Debug("response sent: " + trimLog(data));
+                logger.Debug(string.Format("response sent: {0}", trimLog(data)));
             }
         }
 
         public void OnMessage(string data)
         {
-            logger.Debug("command received: " + trimLog(data));
+            logger.Debug(string.Format("command received: {0}", trimLog(data)));
 
-            var jsonSerializerSettings = new JsonSerializerSettings
-            {
-                Culture = CultureInfo.InvariantCulture
-            };
             Func<string> executeAndSerialize = null;
             CommandParams cmdParams = null;
 
             try
             {
                 cmdParams = JsonConvert.DeserializeObject<CommandParams>(data, jsonSerializerSettings);
+                if (cmdParams.isNotification) {
+                    handleNotifications(cmdParams);
+                    return;
+                }
+
                 var type = getCommandType((string)cmdParams.commandName);
                 var commandParams = JsonConvert.DeserializeObject(data, type, jsonSerializerSettings) as CommandParams;
                 executeAndSerialize = createCommand(commandParams);
@@ -59,22 +64,30 @@ public void OnMessage(string data)
 
             AltRunner._responseQueue.ScheduleResponse(delegate
                 {
-
                     var response = executeAndSerialize();
-                    //TODO: remove this
-                    if (!cmdParams.commandName.Equals("endTouch")) //Temporary solution to ignore first "Ok"
+
+                    // TODO: Remove this if statement
+                    if (!cmdParams.commandName.Equals("endTouch")) // Temporary solution to ignore first "Ok"
                     {
-                        //Do not remove the send only the if
+                        // Do not remove the send only the if statement
                         this.Send(response);
                     }
                 });
         }
 
-        private string trimLog(string log, int maxLogLength = 1000)
-        {
-            if (string.IsNullOrEmpty(log)) return log;
-            if (log.Length <= maxLogLength) return log;
-            return log.Substring(0, maxLogLength) + "[...]";
+        public void handleNotifications(CommandParams cmdParams) {
+            if (cmdParams.commandName == "DriverConnectedNotification") {
+                if (this.OnDriverConnect != null)
+                {
+                    this.OnDriverConnect.Invoke(cmdParams.driverId);
+                }
+            }
+            else if (cmdParams.commandName == "DriverDisconnectedNotification") {
+                if (this.OnDriverDisconnect != null)
+                {
+                    this.OnDriverDisconnect.Invoke(cmdParams.driverId);
+                }
+            }
         }
 
         private Func<string> createCommand(CommandParams cmdParams)
@@ -327,16 +340,34 @@ private Type getCommandType(string commandName)
             var derivedType = typeof(CommandParams);
             var type = assembly.GetTypes().FirstOrDefault(t =>
                {
-                   if (derivedType.IsAssignableFrom(t)) // if type derrives from CommandParams
-                   {
-                       CommandAttribute cmdAttribute = (CommandAttribute)Attribute.GetCustomAttribute(t, typeof(CommandAttribute));
-                       return cmdAttribute != null && cmdAttribute.Name == commandName;
-                   }
-                   return false;
+                    if (derivedType.IsAssignableFrom(t)) // If type derrives from CommandParams
+                    {
+                        CommandAttribute cmdAttribute = (CommandAttribute)Attribute.GetCustomAttribute(t, typeof(CommandAttribute));
+                        return cmdAttribute != null && cmdAttribute.Name == commandName;
+                    }
+
+                    return false;
                });
 
-            if (type == null) { throw new CommandNotFoundException(string.Format("Command `{0}` not found", commandName)); }
+            if (type == null)
+            {
+                throw new CommandNotFoundException(string.Format("Command `{0}` not found", commandName));
+            }
+
             return type;
         }
+
+        private string trimLog(string log, int maxLogLength = 1000)
+        {
+            if (string.IsNullOrEmpty(log)) {
+                return log;
+            }
+
+            if (log.Length <= maxLogLength) {
+                return log;
+            }
+
+            return log.Substring(0, maxLogLength) + "[...]";
+        }
     }
 }
diff --git a/Assets/AltTester/AltServer/Communication/ICommandHandler.cs b/Assets/AltTester/AltServer/Communication/ICommandHandler.cs
index 7acde43e2..aebfdb4e3 100644
--- a/Assets/AltTester/AltServer/Communication/ICommandHandler.cs
+++ b/Assets/AltTester/AltServer/Communication/ICommandHandler.cs
@@ -1,9 +1,15 @@
 namespace AltTester.Communication
 {
+    public delegate void NotificationHandler(string driverId);
+
     public interface ICommandHandler
     {
         SendMessageHandler OnSendMessage { get; set; }
+
+        NotificationHandler OnDriverConnect { get; set; }
+        NotificationHandler OnDriverDisconnect { get; set; }
+
         void Send(string data);
         void OnMessage(string data);
     }
-}
\ No newline at end of file
+}
diff --git a/Assets/AltTester/AltServer/Communication/ICommunication.cs b/Assets/AltTester/AltServer/Communication/ICommunication.cs
index 385da6006..e792f4d02 100644
--- a/Assets/AltTester/AltServer/Communication/ICommunication.cs
+++ b/Assets/AltTester/AltServer/Communication/ICommunication.cs
@@ -5,6 +5,7 @@ namespace AltTester.Communication
     public delegate void SendMessageHandler(string message);
     public delegate void CommunicationHandler();
     public delegate void CommunicationErrorHandler(string message, Exception error);
+
     public interface ICommunication
     {
         CommunicationHandler OnConnect { get; set; }
@@ -20,15 +21,13 @@ public class UnhandledStartCommError : Exception
     {
         public UnhandledStartCommError(string message, Exception innerException) : base(message, innerException)
         {
-
         }
     }
+
     public class AddressInUseCommError : Exception
     {
         public AddressInUseCommError(string message) : base(message)
         {
-
         }
     }
-
-}
\ No newline at end of file
+}
diff --git a/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs b/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs
deleted file mode 100644
index e16990df5..000000000
--- a/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs
+++ /dev/null
@@ -1,98 +0,0 @@
-using System;
-using AltTester.Logging;
-using AltWebSocketSharp.Server;
-
-namespace AltTester.Communication
-{
-    public class WebSocketServerCommunication : ICommunication
-    {
-        private static readonly NLog.Logger logger = ServerLogManager.Instance.GetCurrentClassLogger();
-
-        private readonly int port;
-        private readonly string host;
-
-        WebSocketServer wsServer;
-        AltServerWebSocketHandler wsHandler = null;
-
-        public WebSocketServerCommunication(ICommandHandler cmdHandler, string host, int port)
-        {
-            this.port = port;
-            this.host = host;
-            Uri uri;
-            if (!Uri.TryCreate(string.Format("ws://{0}:{1}/", host, port), UriKind.Absolute, out uri))
-            {
-                throw new Exception(String.Format("Invalid host or port {0}:{1}", host, port));
-            }
-
-            wsServer = new WebSocketServer(uri.ToString());
-            wsServer.AllowForwardedRequest = true;
-
-            wsServer.AddWebSocketService<AltServerWebSocketHandler>("/altws", (context, handler) =>
-            {
-                if (wsServer.WebSocketServices["/altws"].Sessions.Count == 1)
-                {
-                    throw new Exception("Driver already connected.");
-                }
-
-                handler.Init(cmdHandler);
-                this.wsHandler = handler;
-
-                this.wsHandler.OnErrorHandler += (message, exception) =>
-                {
-                    if (this.OnError != null) this.OnError.Invoke(message, exception);
-                };
-
-                this.wsHandler.OnClientConnected += () =>
-                {
-                    if (this.OnConnect != null) this.OnConnect.Invoke();
-                };
-
-                this.wsHandler.OnClientDisconnected += () =>
-                {
-                    if (this.OnDisconnect != null)
-                    {
-                        if (wsServer.WebSocketServices["/altws"].Sessions.Count == 0)
-                        {
-                            this.OnDisconnect();
-                        }
-                    }
-                };
-            });
-        }
-
-        public bool IsConnected { get { return wsServer.WebSocketServices["/altws"].Sessions.Count > 0; } }
-        public bool IsListening { get { return wsServer.IsListening; } }
-
-        public CommunicationHandler OnConnect { get; set; }
-        public CommunicationHandler OnDisconnect { get; set; }
-        public CommunicationErrorHandler OnError { get; set; }
-
-        public void Start()
-        {
-            try
-            {
-                if (!wsServer.IsListening)
-                {
-                    wsServer.Start();
-                }
-            }
-            catch (Exception ex)
-            {
-                if (ex is InvalidOperationException && ex.InnerException != null && (ex.InnerException.Message.Contains("Only one usage of each socket address") || ex.InnerException.Message.Contains("Address already in use")))
-                {
-                    string message = String.Format("Port {0} is in use by another program. Start AltTester with a different port.", port);
-
-                    throw new AddressInUseCommError(message);
-                }
-
-                logger.Error(ex.GetType().ToString(), ex.InnerException.Message);
-                throw new UnhandledStartCommError("An unexpected error occurred while starting AltTester.", ex);
-            }
-        }
-
-        public void Stop()
-        {
-            wsServer.Stop();
-        }
-    }
-}
\ No newline at end of file
diff --git a/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs.meta b/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs.meta
deleted file mode 100644
index ee86cfe3e..000000000
--- a/Assets/AltTester/AltServer/Communication/WebSocketServerCommunication.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 23c86e46fd6341648ad0d47ff382c2a0
-MonoImporter:
-  externalObjects: {}
-  serializedVersion: 2
-  defaultReferences: []
-  executionOrder: 0
-  icon: {instanceID: 0}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/Assets/AltTester/AltServer/UI/AltDialog.cs b/Assets/AltTester/AltServer/UI/AltDialog.cs
index 1083a468a..63540b86c 100644
--- a/Assets/AltTester/AltServer/UI/AltDialog.cs
+++ b/Assets/AltTester/AltServer/UI/AltDialog.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using AltTester;
 using AltTester.Communication;
 using AltTester.Logging;
@@ -46,13 +47,15 @@ public class AltDialog : UnityEngine.MonoBehaviour
         private readonly AltResponseQueue _updateQueue = new AltResponseQueue();
         private bool _wasConnectedBefore = false;
 
+        HashSet<string> _connectedDrivers = new HashSet<string>();
+
         protected void Start()
         {
             Dialog.SetActive(InstrumentationSettings.ShowPopUp);
 
             SetTitle("AltTester v." + AltRunner.VERSION);
             SetUpCloseButton();
-            setUpIcon();
+            SetUpIcon();
             SetUpHostInputField();
             SetUpPortInputField();
             SetUpGameNameInputField();
@@ -93,7 +96,7 @@ private void SetUpCloseButton()
             CloseButton.onClick.AddListener(ToggleDialog);
         }
 
-        private void setUpIcon()
+        private void SetUpIcon()
         {
             Icon.GetComponent<UnityEngine.UI.Button>().onClick.AddListener(ToggleDialog);
         }
@@ -180,6 +183,8 @@ public void SetUpRestartButton()
         private void InitClient()
         {
             var cmdHandler = new CommandHandler();
+            cmdHandler.OnDriverConnect += OnDriverConnect;
+            cmdHandler.OnDriverDisconnect += OnDriverDisconnect;
 
 #if UNITY_WEBGL && !UNITY_EDITOR
             _communication = new WebSocketWebGLCommunication(cmdHandler, InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort);
@@ -198,11 +203,11 @@ private void StartClient()
 
             try
             {
-                if (_communication == null || !_communication.IsListening) // start only if it is not already listening
+                if (_communication == null || !_communication.IsListening) // Start only if it is not already listening
                 {
                     _communication.Start();
                 }
-                if (!_communication.IsConnected) // display dialog only if not connected
+                if (!_communication.IsConnected) // Display dialog only if not connected
                 {
                     OnStart();
                 }
@@ -239,42 +244,25 @@ private void OnStart()
         {
             string message = String.Format("Waiting to connect to AltProxy on {0}:{1} with game name: '{2}'.", InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort, InstrumentationSettings.GameName);
             SetMessage(message, SUCCESS_COLOR, Dialog.activeSelf || _wasConnectedBefore);
+
             _wasConnectedBefore = false;
         }
 
         private void OnConnect()
         {
-            string message = String.Format("Connected to AltProxy on {0}:{1} with game name: '{2}'.", InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort, InstrumentationSettings.GameName);
-
-#if ALTTESTER && ENABLE_LEGACY_INPUT_MANAGER
-            Input.UseCustomInput = true;
-            UnityEngine.Debug.Log("Custom input: " + Input.UseCustomInput);
-#endif
+            string message = String.Format("Connected to AltProxy on {0}:{1} with game name: '{2}'. Waiting for Driver to connect.", InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort, InstrumentationSettings.GameName);
 
             _updateQueue.ScheduleResponse(() =>
             {
-#if ALTTESTER && ENABLE_INPUT_SYSTEM
-                NewInputSystem.DisableDefaultDevicesAndEnableAltDevices();
-#endif
-
-                SetMessage(message, SUCCESS_COLOR, false);
+                SetMessage(message, SUCCESS_COLOR, true);
                 _wasConnectedBefore = true;
             });
         }
 
         private void OnDisconnect()
         {
-#if ALTTESTER && ENABLE_LEGACY_INPUT_MANAGER
-            Input.UseCustomInput = false;
-            UnityEngine.Debug.Log("Custom input: " + Input.UseCustomInput);
-#endif
-
             _updateQueue.ScheduleResponse(() =>
             {
-#if ALTTESTER && ENABLE_INPUT_SYSTEM
-                NewInputSystem.EnableDefaultDevicesAndDisableAltDevices();
-#endif
-
                 StartClient();
             });
         }
@@ -288,5 +276,51 @@ private void OnError(string message, Exception ex)
                 logger.Error(ex);
             }
         }
+
+        private void OnDriverConnect(string driverId) {
+            logger.Debug("Driver Connected: " + driverId);
+            string message = String.Format("Connected to AltProxy on {0}:{1} with game name: '{2}'. Driver connected.", InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort, InstrumentationSettings.GameName);
+
+            _connectedDrivers.Add(driverId);
+
+            if (_connectedDrivers.Count == 1) {
+                #if ALTTESTER && ENABLE_LEGACY_INPUT_MANAGER
+                    Input.UseCustomInput = true;
+                    UnityEngine.Debug.Log("Custom input: " + Input.UseCustomInput);
+                #endif
+
+                _updateQueue.ScheduleResponse(() =>
+                {
+                    SetMessage(message, SUCCESS_COLOR, false);
+
+                    #if ALTTESTER && ENABLE_INPUT_SYSTEM
+                        NewInputSystem.DisableDefaultDevicesAndEnableAltDevices();
+                    #endif
+                });
+            }
+        }
+
+        private void OnDriverDisconnect(string driverId) {
+            logger.Debug("Driver Disconect: " + driverId);
+            string message = String.Format("Connected to AltProxy on {0}:{1} with game name: '{2}'. Waiting for Driver to connect.", InstrumentationSettings.ProxyHost, InstrumentationSettings.ProxyPort, InstrumentationSettings.GameName);
+
+            _connectedDrivers.Remove(driverId);
+
+            if (_connectedDrivers.Count == 0) {
+                #if ALTTESTER && ENABLE_LEGACY_INPUT_MANAGER
+                    Input.UseCustomInput = false;
+                    UnityEngine.Debug.Log("Custom input: " + Input.UseCustomInput);
+                #endif
+
+                _updateQueue.ScheduleResponse(() =>
+                {
+                    SetMessage(message, SUCCESS_COLOR, true);
+
+                    #if ALTTESTER && ENABLE_INPUT_SYSTEM
+                        NewInputSystem.EnableDefaultDevicesAndDisableAltDevices();
+                    #endif
+                });
+            }
+        }
     }
 }
diff --git a/Assets/AltTester/Examples/Test/Editor/Server/WebSocketClientCommunicationTests.cs b/Assets/AltTester/Examples/Test/Editor/Server/WebSocketClientCommunicationTests.cs
index d5d409108..d4d484eb8 100644
--- a/Assets/AltTester/Examples/Test/Editor/Server/WebSocketClientCommunicationTests.cs
+++ b/Assets/AltTester/Examples/Test/Editor/Server/WebSocketClientCommunicationTests.cs
@@ -11,6 +11,9 @@ public class MockCommandHandler : ICommandHandler
     {
         public SendMessageHandler OnSendMessage { get; set; }
 
+        public NotificationHandler OnDriverConnect { get; set; }
+        public NotificationHandler OnDriverDisconnect { get; set; }
+
         public void OnMessage(string data)
         {
             throw new System.NotImplementedException();
@@ -25,8 +28,6 @@ public void Send(string data)
         }
     }
 
-
-
     public class MockServerHandler : WebSocketBehavior
     {
         protected override void OnOpen()
@@ -45,6 +46,7 @@ protected override void OnError(ErrorEventArgs e)
         }
 
     }
+
     public class WebSocketClientCommunicationTests
     {
 
diff --git a/Assets/AltTester/Prefab/AltTesterPrefab.prefab b/Assets/AltTester/Prefab/AltTesterPrefab.prefab
index f5c3e6e4f..a76983603 100644
--- a/Assets/AltTester/Prefab/AltTesterPrefab.prefab
+++ b/Assets/AltTester/Prefab/AltTesterPrefab.prefab
@@ -1,6 +1,6 @@
 %YAML 1.1
 %TAG !u! tag:unity3d.com,2011:
---- !u!1 &449034062078938578
+--- !u!1 &10285523652890483
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -8,133 +8,79 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 4410838169864489169}
-  - component: {fileID: 8698181352472616323}
-  - component: {fileID: 7258070670105658327}
-  - component: {fileID: 505871223611805908}
-  - component: {fileID: 3687441469893430067}
+  - component: {fileID: 3099150881029014954}
+  - component: {fileID: 5604513869533128247}
+  - component: {fileID: 2618149272756237905}
   m_Layer: 0
-  m_Name: Icon
+  m_Name: Text
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &4410838169864489169
+--- !u!224 &3099150881029014954
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 449034062078938578}
+  m_GameObject: {fileID: 10285523652890483}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 1676452156175230966}
-  m_RootOrder: 1
+  m_Father: {fileID: 8304018292803917035}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 1, y: 0}
-  m_AnchorMax: {x: 1, y: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 100, y: 100}
-  m_Pivot: {x: 1, y: 0}
---- !u!222 &8698181352472616323
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5604513869533128247
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 449034062078938578}
+  m_GameObject: {fileID: 10285523652890483}
   m_CullTransparentMesh: 1
---- !u!114 &7258070670105658327
+--- !u!114 &2618149272756237905
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 449034062078938578}
+  m_GameObject: {fileID: 10285523652890483}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_Color: {r: 0, g: 0, b: 0, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 21300000, guid: 0f1a80f61f5b88b4e936cd2851440318, type: 3}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!114 &505871223611805908
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 449034062078938578}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_WrapAround: 0
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
-    m_ColorMultiplier: 1
-    m_FadeDuration: 0.1
-  m_SpriteState:
-    m_HighlightedSprite: {fileID: 0}
-    m_PressedSprite: {fileID: 0}
-    m_SelectedSprite: {fileID: 0}
-    m_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_SelectedTrigger: Selected
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 7258070670105658327}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
---- !u!114 &3687441469893430067
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 449034062078938578}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 4a4cdcb385f2cce45936ea93e75583bd, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
---- !u!1 &738126676287569003
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Restart
+--- !u!1 &317154317761755472
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -142,9 +88,9 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 4627188203740057804}
-  - component: {fileID: 3483841807574686382}
-  - component: {fileID: 788782935915342788}
+  - component: {fileID: 1641534143240905910}
+  - component: {fileID: 1461785136516597558}
+  - component: {fileID: 1251523043746177562}
   m_Layer: 0
   m_Name: Placeholder
   m_TagString: Untagged
@@ -152,19 +98,19 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &4627188203740057804
+--- !u!224 &1641534143240905910
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 738126676287569003}
+  m_GameObject: {fileID: 317154317761755472}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 4246334686442813728}
+  m_Father: {fileID: 8358375899040149343}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
@@ -172,21 +118,21 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: -0.5}
   m_SizeDelta: {x: -20, y: -13}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &3483841807574686382
+--- !u!222 &1461785136516597558
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 738126676287569003}
+  m_GameObject: {fileID: 317154317761755472}
   m_CullTransparentMesh: 1
---- !u!114 &788782935915342788
+--- !u!114 &1251523043746177562
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 738126676287569003}
+  m_GameObject: {fileID: 317154317761755472}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -213,8 +159,8 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: Enter host...
---- !u!1 &956927854398574264
+  m_Text: Enter game name...
+--- !u!1 &324886965155536395
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -222,79 +168,83 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 2620730506608833440}
-  - component: {fileID: 181010460714018216}
-  - component: {fileID: 4816170860523843048}
+  - component: {fileID: 2025872396341108583}
+  - component: {fileID: 1544444852692323465}
+  - component: {fileID: 6179567792600487058}
   m_Layer: 0
-  m_Name: Placeholder
+  m_Name: Dialog
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &2620730506608833440
+--- !u!224 &2025872396341108583
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 956927854398574264}
+  m_GameObject: {fileID: 324886965155536395}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 8190920868934888228}
-  m_RootOrder: 1
+  m_Children:
+  - {fileID: 7107267703016578963}
+  - {fileID: 5076835906871760337}
+  - {fileID: 8641514271335108404}
+  - {fileID: 4669032243788926043}
+  - {fileID: 5574091098227206381}
+  - {fileID: 8358375899040149343}
+  - {fileID: 8304018292803917035}
+  - {fileID: 1631572687043238285}
+  m_Father: {fileID: 658334975836887177}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -0.5}
-  m_SizeDelta: {x: -20, y: -13}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 440, y: 600}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &181010460714018216
+--- !u!222 &1544444852692323465
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 956927854398574264}
+  m_GameObject: {fileID: 324886965155536395}
   m_CullTransparentMesh: 1
---- !u!114 &4816170860523843048
+--- !u!114 &6179567792600487058
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 956927854398574264}
+  m_GameObject: {fileID: 324886965155536395}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_Color: {r: 0, g: 0.6470588, b: 0.1411765, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 18
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 0
-    m_AlignByGeometry: 0
-    m_RichText: 0
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: Enter game name...
---- !u!1 &1228964689939392235
+  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &621419571185653203
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -302,83 +252,79 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 5866523722121990150}
-  - component: {fileID: 6616719580227668041}
-  - component: {fileID: 4331812108233849932}
-  - component: {fileID: 1795353457515706081}
+  - component: {fileID: 7506753605745758196}
+  - component: {fileID: 3710771653197337881}
+  - component: {fileID: 8466805805671048750}
   m_Layer: 0
-  m_Name: AltTesterPrefab
+  m_Name: Placeholder
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!4 &5866523722121990150
-Transform:
+--- !u!224 &7506753605745758196
+RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1228964689939392235}
+  m_GameObject: {fileID: 621419571185653203}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 5166831254713514639}
-  - {fileID: 1676452156175230966}
-  m_Father: {fileID: 0}
-  m_RootOrder: 0
+  m_Children: []
+  m_Father: {fileID: 5574091098227206381}
+  m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &6616719580227668041
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1228964689939392235}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: d64f576b163a84c53be56deef13c731f, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  InstrumentationSettings:
-    InstrumentationMode: 0
-    ProxyHost: 127.0.0.1
-    ProxyPort: 13000
-    GameName: __default__
-    InputVisualizer: 1
-    ShowPopUp: 1
-  RunOnlyInDebugMode: 1
-  outlineShader: {fileID: 4800000, guid: 37d07aac6f4b1dc48924e98e1e398261, type: 3}
-  panelHightlightPrefab: {fileID: 1422609480502334, guid: c2c3ede7bbf3b184c9c6d7cc4cf5cad3,
-    type: 3}
-  InputsVisualizer: {fileID: 7508638377519631617}
---- !u!114 &4331812108233849932
-MonoBehaviour:
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &3710771653197337881
+CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1228964689939392235}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: d624c3e46e0f6e149b2b2a3ce225decd, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
---- !u!114 &1795353457515706081
+  m_GameObject: {fileID: 621419571185653203}
+  m_CullTransparentMesh: 1
+--- !u!114 &8466805805671048750
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1228964689939392235}
+  m_GameObject: {fileID: 621419571185653203}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 14a59e5c699bb6443adf60af1a0deb56, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
---- !u!1 &1642915212523132302
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: Enter port number...
+--- !u!1 &886402527714355695
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -386,52 +332,53 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 6989121793255234228}
-  - component: {fileID: 4801483685865507974}
-  - component: {fileID: 35263886574459920}
-  - component: {fileID: 4037177448690788357}
+  - component: {fileID: 8304018292803917035}
+  - component: {fileID: 7194236844366982799}
+  - component: {fileID: 1099116456080019096}
+  - component: {fileID: 3522253570947247987}
   m_Layer: 0
-  m_Name: CloseButton
+  m_Name: RestartButton
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &6989121793255234228
+--- !u!224 &8304018292803917035
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1642915212523132302}
+  m_GameObject: {fileID: 886402527714355695}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 7
+  m_Children:
+  - {fileID: 3099150881029014954}
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 1, y: 1}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: -15, y: -15}
-  m_SizeDelta: {x: 16, y: 16}
-  m_Pivot: {x: 1, y: 1}
---- !u!222 &4801483685865507974
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: -255}
+  m_SizeDelta: {x: 240, y: 34}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7194236844366982799
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1642915212523132302}
+  m_GameObject: {fileID: 886402527714355695}
   m_CullTransparentMesh: 1
---- !u!114 &35263886574459920
+--- !u!114 &1099116456080019096
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1642915212523132302}
+  m_GameObject: {fileID: 886402527714355695}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
@@ -445,7 +392,7 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 21300000, guid: 903bb101d290e67469548feecf3b0ba2, type: 3}
+  m_Sprite: {fileID: 0}
   m_Type: 0
   m_PreserveAspect: 0
   m_FillCenter: 1
@@ -455,13 +402,13 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
---- !u!114 &4037177448690788357
+--- !u!114 &3522253570947247987
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1642915212523132302}
+  m_GameObject: {fileID: 886402527714355695}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
@@ -495,11 +442,11 @@ MonoBehaviour:
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
   m_Interactable: 1
-  m_TargetGraphic: {fileID: 35263886574459920}
+  m_TargetGraphic: {fileID: 1099116456080019096}
   m_OnClick:
     m_PersistentCalls:
       m_Calls: []
---- !u!1 &2425596674375365111
+--- !u!1 &2373991094671943220
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -507,9 +454,9 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 8878901629948208661}
-  - component: {fileID: 1939636037002165905}
-  - component: {fileID: 5260783621109189231}
+  - component: {fileID: 5076835906871760337}
+  - component: {fileID: 6641283940814119993}
+  - component: {fileID: 4825339984740297780}
   m_Layer: 0
   m_Name: Message
   m_TagString: Untagged
@@ -517,41 +464,41 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &8878901629948208661
+--- !u!224 &5076835906871760337
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2425596674375365111}
+  m_GameObject: {fileID: 2373991094671943220}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 2022683990036758718}
+  m_Father: {fileID: 2025872396341108583}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: 60}
-  m_SizeDelta: {x: 400, y: 100}
+  m_AnchoredPosition: {x: 0, y: 100}
+  m_SizeDelta: {x: 400, y: 120}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &1939636037002165905
+--- !u!222 &6641283940814119993
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2425596674375365111}
+  m_GameObject: {fileID: 2373991094671943220}
   m_CullTransparentMesh: 1
---- !u!114 &5260783621109189231
+--- !u!114 &4825339984740297780
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2425596674375365111}
+  m_GameObject: {fileID: 2373991094671943220}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -579,7 +526,7 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: Starting communication protocol!
---- !u!1 &2986978323786935637
+--- !u!1 &2426969341063749656
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -587,54 +534,54 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 4246334686442813728}
-  - component: {fileID: 6125687714062357}
-  - component: {fileID: 1909651341837829454}
-  - component: {fileID: 4410839949252251435}
+  - component: {fileID: 5574091098227206381}
+  - component: {fileID: 8979199747709462451}
+  - component: {fileID: 6161522942202778277}
+  - component: {fileID: 2151151441147216545}
   m_Layer: 0
-  m_Name: HostInputField
+  m_Name: PortInputField
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &4246334686442813728
+--- !u!224 &5574091098227206381
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2986978323786935637}
+  m_GameObject: {fileID: 2426969341063749656}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 5217845159523958199}
-  - {fileID: 4627188203740057804}
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 3
+  - {fileID: 8700682341986467457}
+  - {fileID: 7506753605745758196}
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: -110}
+  m_AnchoredPosition: {x: 0, y: -155}
   m_SizeDelta: {x: 240, y: 34}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &6125687714062357
+--- !u!222 &8979199747709462451
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2986978323786935637}
+  m_GameObject: {fileID: 2426969341063749656}
   m_CullTransparentMesh: 1
---- !u!114 &1909651341837829454
+--- !u!114 &6161522942202778277
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2986978323786935637}
+  m_GameObject: {fileID: 2426969341063749656}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
@@ -658,13 +605,13 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
---- !u!114 &4410839949252251435
+--- !u!114 &2151151441147216545
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2986978323786935637}
+  m_GameObject: {fileID: 2426969341063749656}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
@@ -698,9 +645,9 @@ MonoBehaviour:
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
   m_Interactable: 1
-  m_TargetGraphic: {fileID: 1909651341837829454}
-  m_TextComponent: {fileID: 5157892080109619652}
-  m_Placeholder: {fileID: 788782935915342788}
+  m_TargetGraphic: {fileID: 6161522942202778277}
+  m_TextComponent: {fileID: 5378376240120746642}
+  m_Placeholder: {fileID: 8466805805671048750}
   m_ContentType: 0
   m_InputType: 0
   m_AsteriskChar: 42
@@ -726,7 +673,7 @@ MonoBehaviour:
   m_CaretWidth: 1
   m_ReadOnly: 0
   m_ShouldActivateOnSelect: 1
---- !u!1 &3093092994527821093
+--- !u!1 &2529341275180177180
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -734,79 +681,52 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 4616216501943089721}
-  - component: {fileID: 2936479195990250797}
-  - component: {fileID: 522855385917300759}
+  - component: {fileID: 5809815463446070544}
+  - component: {fileID: 3358727836237761043}
   m_Layer: 0
-  m_Name: Title
+  m_Name: InputVisualiser
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &4616216501943089721
+--- !u!224 &5809815463446070544
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3093092994527821093}
+  m_GameObject: {fileID: 2529341275180177180}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 2022683990036758718}
+  m_Father: {fileID: 1510290506537729495}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 1}
-  m_AnchorMax: {x: 0.5, y: 1}
-  m_AnchoredPosition: {x: 0, y: -31}
-  m_SizeDelta: {x: 300, y: 75}
-  m_Pivot: {x: 0.5, y: 1}
---- !u!222 &2936479195990250797
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3093092994527821093}
-  m_CullTransparentMesh: 1
---- !u!114 &522855385917300759
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!114 &3358727836237761043
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3093092994527821093}
+  m_GameObject: {fileID: 2529341275180177180}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: 029f906513940c040a4d8eeffa69ff41, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 30
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: AltTester v.1.8.0
---- !u!1 &3541545581625402848
+  VisibleTime: 1
+  Template: {fileID: 114304672768169282, guid: 5d369c3b330fa7447b709aee47e379f4, type: 3}
+  growthBound: 2
+  approachSpeed: 0.02
+--- !u!1 &2662721043924412788
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -814,233 +734,146 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 1334246898019007452}
-  - component: {fileID: 1042173607505097364}
-  - component: {fileID: 7351050583416304265}
+  - component: {fileID: 8358375899040149343}
+  - component: {fileID: 4801985420792007845}
+  - component: {fileID: 5928714902883965002}
+  - component: {fileID: 185481480942964287}
   m_Layer: 0
-  m_Name: Placeholder
+  m_Name: GameNameInputField
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &1334246898019007452
+--- !u!224 &8358375899040149343
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3541545581625402848}
+  m_GameObject: {fileID: 2662721043924412788}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 1784358651286493674}
-  m_RootOrder: 1
+  m_Children:
+  - {fileID: 3696253901750726199}
+  - {fileID: 1641534143240905910}
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -0.5}
-  m_SizeDelta: {x: -20, y: -13}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: -200}
+  m_SizeDelta: {x: 240, y: 34}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &1042173607505097364
+--- !u!222 &4801985420792007845
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3541545581625402848}
+  m_GameObject: {fileID: 2662721043924412788}
   m_CullTransparentMesh: 1
---- !u!114 &7351050583416304265
+--- !u!114 &5928714902883965002
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3541545581625402848}
+  m_GameObject: {fileID: 2662721043924412788}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 18
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 0
-    m_AlignByGeometry: 0
-    m_RichText: 0
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: Enter port number...
---- !u!1 &4256579585509217353
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 5796061996277996679}
-  - component: {fileID: 7508638377519631617}
-  m_Layer: 0
-  m_Name: InputVisualiser
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &5796061996277996679
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4256579585509217353}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 5166831254713514639}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0, y: 0}
---- !u!114 &7508638377519631617
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 4256579585509217353}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 029f906513940c040a4d8eeffa69ff41, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  VisibleTime: 1
-  Template: {fileID: 114304672768169282, guid: 5d369c3b330fa7447b709aee47e379f4, type: 3}
-  growthBound: 2
-  approachSpeed: 0.02
---- !u!1 &5238619985350649241
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 5166831254713514639}
-  - component: {fileID: 9042170097211909456}
-  - component: {fileID: 2847772345350149729}
-  - component: {fileID: 4163619051590173755}
-  m_Layer: 0
-  m_Name: CanvasInputVisualiser
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &5166831254713514639
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5238619985350649241}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 0, y: 0, z: 0}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 5796061996277996679}
-  m_Father: {fileID: 5866523722121990150}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 0, y: 0}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0, y: 0}
---- !u!223 &9042170097211909456
-Canvas:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5238619985350649241}
-  m_Enabled: 1
-  serializedVersion: 3
-  m_RenderMode: 0
-  m_Camera: {fileID: 0}
-  m_PlaneDistance: 100
-  m_PixelPerfect: 0
-  m_ReceivesEvents: 1
-  m_OverrideSorting: 0
-  m_OverridePixelPerfect: 0
-  m_SortingBucketNormalizedSize: 0
-  m_AdditionalShaderChannelsFlag: 0
-  m_SortingLayerID: 0
-  m_SortingOrder: 32767
-  m_TargetDisplay: 0
---- !u!114 &2847772345350149729
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5238619985350649241}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_UiScaleMode: 0
-  m_ReferencePixelsPerUnit: 100
-  m_ScaleFactor: 1
-  m_ReferenceResolution: {x: 800, y: 600}
-  m_ScreenMatchMode: 0
-  m_MatchWidthOrHeight: 0
-  m_PhysicalUnit: 3
-  m_FallbackScreenDPI: 96
-  m_DefaultSpriteDPI: 96
-  m_DynamicPixelsPerUnit: 1
-  m_PresetInfoIsWorld: 0
---- !u!114 &4163619051590173755
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &185481480942964287
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5238619985350649241}
+  m_GameObject: {fileID: 2662721043924412788}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_IgnoreReversedGraphics: 1
-  m_BlockingObjects: 0
-  m_BlockingMask:
-    serializedVersion: 2
-    m_Bits: 4294967295
---- !u!1 &5427687088531769327
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 5928714902883965002}
+  m_TextComponent: {fileID: 3520383502205934430}
+  m_Placeholder: {fileID: 1251523043746177562}
+  m_ContentType: 0
+  m_InputType: 0
+  m_AsteriskChar: 42
+  m_KeyboardType: 0
+  m_LineType: 0
+  m_HideMobileInput: 0
+  m_CharacterValidation: 0
+  m_CharacterLimit: 0
+  m_OnSubmit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnDidEndEdit:
+    m_PersistentCalls:
+      m_Calls: []
+  m_OnValueChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+  m_CustomCaretColor: 0
+  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_Text: 
+  m_CaretBlinkRate: 0.85
+  m_CaretWidth: 1
+  m_ReadOnly: 0
+  m_ShouldActivateOnSelect: 1
+--- !u!1 &3187636917621324977
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1048,11 +881,11 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 1676452156175230966}
-  - component: {fileID: 4640527429665281664}
-  - component: {fileID: 6903482810984065426}
-  - component: {fileID: 2744146476097596218}
-  - component: {fileID: 6973451926187064551}
+  - component: {fileID: 658334975836887177}
+  - component: {fileID: 7176746108551974073}
+  - component: {fileID: 6185120661540278555}
+  - component: {fileID: 1175984317631128758}
+  - component: {fileID: 7154293199835554809}
   m_Layer: 0
   m_Name: AltDialog
   m_TagString: Untagged
@@ -1060,21 +893,21 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &1676452156175230966
+--- !u!224 &658334975836887177
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5427687088531769327}
+  m_GameObject: {fileID: 3187636917621324977}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 0, y: 0, z: 0}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 2022683990036758718}
-  - {fileID: 4410838169864489169}
-  m_Father: {fileID: 5866523722121990150}
+  - {fileID: 2025872396341108583}
+  - {fileID: 3065318223923881068}
+  m_Father: {fileID: 173220801694919246}
   m_RootOrder: 1
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
@@ -1082,13 +915,13 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 0, y: 0}
---- !u!223 &4640527429665281664
+--- !u!223 &7176746108551974073
 Canvas:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5427687088531769327}
+  m_GameObject: {fileID: 3187636917621324977}
   m_Enabled: 1
   serializedVersion: 3
   m_RenderMode: 0
@@ -1103,13 +936,13 @@ Canvas:
   m_SortingLayerID: 0
   m_SortingOrder: 32767
   m_TargetDisplay: 0
---- !u!114 &6903482810984065426
+--- !u!114 &6185120661540278555
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5427687088531769327}
+  m_GameObject: {fileID: 3187636917621324977}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
@@ -1126,13 +959,13 @@ MonoBehaviour:
   m_DefaultSpriteDPI: 96
   m_DynamicPixelsPerUnit: 1
   m_PresetInfoIsWorld: 0
---- !u!114 &2744146476097596218
+--- !u!114 &1175984317631128758
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5427687088531769327}
+  m_GameObject: {fileID: 3187636917621324977}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
@@ -1143,28 +976,28 @@ MonoBehaviour:
   m_BlockingMask:
     serializedVersion: 2
     m_Bits: 4294967295
---- !u!114 &6973451926187064551
+--- !u!114 &7154293199835554809
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5427687088531769327}
+  m_GameObject: {fileID: 3187636917621324977}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 325c72dd5e578034a80d253437df2106, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  Dialog: {fileID: 8749272277128690411}
-  TitleText: {fileID: 522855385917300759}
-  MessageText: {fileID: 5260783621109189231}
-  CloseButton: {fileID: 4037177448690788357}
-  Icon: {fileID: 7258070670105658327}
-  HostInputField: {fileID: 4410839949252251435}
-  PortInputField: {fileID: 7523575752243860958}
-  GameNameInputField: {fileID: 4017187274886740918}
-  RestartButton: {fileID: 6158923888250694228}
---- !u!1 &5606785098817080640
+  Dialog: {fileID: 324886965155536395}
+  TitleText: {fileID: 503032742267609750}
+  MessageText: {fileID: 4825339984740297780}
+  CloseButton: {fileID: 8333555455189455926}
+  Icon: {fileID: 7203053245468445205}
+  HostInputField: {fileID: 7127813294200200465}
+  PortInputField: {fileID: 2151151441147216545}
+  GameNameInputField: {fileID: 185481480942964287}
+  RestartButton: {fileID: 3522253570947247987}
+--- !u!1 &3421404118541810477
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1172,79 +1005,200 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 4817116618600774058}
-  - component: {fileID: 7657863890309261991}
-  - component: {fileID: 1461794313564255268}
+  - component: {fileID: 1631572687043238285}
+  - component: {fileID: 1249825812997235617}
+  - component: {fileID: 5500003448990608009}
+  - component: {fileID: 8333555455189455926}
   m_Layer: 0
-  m_Name: Text
+  m_Name: CloseButton
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &4817116618600774058
+--- !u!224 &1631572687043238285
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5606785098817080640}
+  m_GameObject: {fileID: 3421404118541810477}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 1784358651286493674}
-  m_RootOrder: 0
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: -0.5}
-  m_SizeDelta: {x: -20, y: -13}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &7657863890309261991
+  m_AnchoredPosition: {x: -15, y: -15}
+  m_SizeDelta: {x: 16, y: 16}
+  m_Pivot: {x: 1, y: 1}
+--- !u!222 &1249825812997235617
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5606785098817080640}
+  m_GameObject: {fileID: 3421404118541810477}
   m_CullTransparentMesh: 1
---- !u!114 &1461794313564255268
+--- !u!114 &5500003448990608009
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 5606785098817080640}
+  m_GameObject: {fileID: 3421404118541810477}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0, b: 0, a: 1}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 18
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
+  m_Sprite: {fileID: 21300000, guid: 903bb101d290e67469548feecf3b0ba2, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &8333555455189455926
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3421404118541810477}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 5500003448990608009}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &4147009857528548610
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5734767344113412670}
+  - component: {fileID: 4586268056826255572}
+  - component: {fileID: 4884182143523760533}
+  m_Layer: 0
+  m_Name: Placeholder
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5734767344113412670
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4147009857528548610}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4669032243788926043}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4586268056826255572
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4147009857528548610}
+  m_CullTransparentMesh: 1
+--- !u!114 &4884182143523760533
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4147009857528548610}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
     m_Alignment: 0
     m_AlignByGeometry: 0
     m_RichText: 0
-    m_HorizontalOverflow: 1
+    m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: 
---- !u!1 &6089743739266686014
+  m_Text: Enter host...
+--- !u!1 &4714964912545169319
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1252,57 +1206,138 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 1784358651286493674}
-  - component: {fileID: 392291692285577227}
-  - component: {fileID: 3837120685047145317}
-  - component: {fileID: 7523575752243860958}
+  - component: {fileID: 173220801694919246}
+  - component: {fileID: 8556826037364914374}
+  - component: {fileID: 5771343995894601503}
+  - component: {fileID: 5100543633707381182}
   m_Layer: 0
-  m_Name: PortInputField
+  m_Name: AltTesterPrefab
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &1784358651286493674
-RectTransform:
+--- !u!4 &173220801694919246
+Transform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6089743739266686014}
+  m_GameObject: {fileID: 4714964912545169319}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 4817116618600774058}
-  - {fileID: 1334246898019007452}
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 4
+  - {fileID: 1510290506537729495}
+  - {fileID: 658334975836887177}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: -155}
-  m_SizeDelta: {x: 240, y: 34}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &392291692285577227
+--- !u!114 &8556826037364914374
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4714964912545169319}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d64f576b163a84c53be56deef13c731f, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  InstrumentationSettings:
+    InstrumentationMode: 0
+    ProxyHost: 127.0.0.1
+    ProxyPort: 13000
+    GameName: __default__
+    InputVisualizer: 1
+    ShowPopUp: 1
+  RunOnlyInDebugMode: 1
+  outlineShader: {fileID: 4800000, guid: 37d07aac6f4b1dc48924e98e1e398261, type: 3}
+  panelHightlightPrefab: {fileID: 1422609480502334, guid: c2c3ede7bbf3b184c9c6d7cc4cf5cad3,
+    type: 3}
+  InputsVisualizer: {fileID: 3358727836237761043}
+--- !u!114 &5771343995894601503
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4714964912545169319}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d624c3e46e0f6e149b2b2a3ce225decd, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &5100543633707381182
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4714964912545169319}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 14a59e5c699bb6443adf60af1a0deb56, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &5019998078032498143
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7107267703016578963}
+  - component: {fileID: 8664398660317589953}
+  - component: {fileID: 503032742267609750}
+  m_Layer: 0
+  m_Name: Title
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7107267703016578963
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5019998078032498143}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 1}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: 0, y: -31}
+  m_SizeDelta: {x: 300, y: 75}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &8664398660317589953
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6089743739266686014}
+  m_GameObject: {fileID: 5019998078032498143}
   m_CullTransparentMesh: 1
---- !u!114 &3837120685047145317
+--- !u!114 &503032742267609750
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6089743739266686014}
+  m_GameObject: {fileID: 5019998078032498143}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
@@ -1313,85 +1348,101 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 0}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!114 &7523575752243860958
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 30
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: AltTester v.1.8.1
+--- !u!1 &5670158775600214001
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7873647941765999930}
+  - component: {fileID: 7067582757512985542}
+  - component: {fileID: 5276819046113372566}
+  m_Layer: 0
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7873647941765999930
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5670158775600214001}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 4669032243788926043}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: -0.5}
+  m_SizeDelta: {x: -20, y: -13}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7067582757512985542
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5670158775600214001}
+  m_CullTransparentMesh: 1
+--- !u!114 &5276819046113372566
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6089743739266686014}
+  m_GameObject: {fileID: 5670158775600214001}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_WrapAround: 0
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
-    m_ColorMultiplier: 1
-    m_FadeDuration: 0.1
-  m_SpriteState:
-    m_HighlightedSprite: {fileID: 0}
-    m_PressedSprite: {fileID: 0}
-    m_SelectedSprite: {fileID: 0}
-    m_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_SelectedTrigger: Selected
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 3837120685047145317}
-  m_TextComponent: {fileID: 1461794313564255268}
-  m_Placeholder: {fileID: 7351050583416304265}
-  m_ContentType: 0
-  m_InputType: 0
-  m_AsteriskChar: 42
-  m_KeyboardType: 0
-  m_LineType: 0
-  m_HideMobileInput: 0
-  m_CharacterValidation: 0
-  m_CharacterLimit: 0
-  m_OnSubmit:
-    m_PersistentCalls:
-      m_Calls: []
-  m_OnDidEndEdit:
-    m_PersistentCalls:
-      m_Calls: []
-  m_OnValueChanged:
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
-  m_CustomCaretColor: 0
-  m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 18
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 0
+    m_AlignByGeometry: 0
+    m_RichText: 0
+    m_HorizontalOverflow: 1
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
   m_Text: 
-  m_CaretBlinkRate: 0.85
-  m_CaretWidth: 1
-  m_ReadOnly: 0
-  m_ShouldActivateOnSelect: 1
---- !u!1 &6298552668587865122
+--- !u!1 &6272654194735766864
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1399,79 +1450,234 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 8650069095507600988}
-  - component: {fileID: 4074251185670906698}
-  - component: {fileID: 6253835900334454878}
+  - component: {fileID: 1510290506537729495}
+  - component: {fileID: 1000099649815556580}
+  - component: {fileID: 1655733824985867241}
+  - component: {fileID: 3859434358828781789}
   m_Layer: 0
-  m_Name: Text
+  m_Name: CanvasInputVisualiser
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &8650069095507600988
+--- !u!224 &1510290506537729495
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6298552668587865122}
+  m_GameObject: {fileID: 6272654194735766864}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_LocalScale: {x: 0, y: 0, z: 0}
   m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 8567927220143662192}
+  m_Children:
+  - {fileID: 5809815463446070544}
+  m_Father: {fileID: 173220801694919246}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
+  m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 0, y: 0}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &4074251185670906698
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &1000099649815556580
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6272654194735766864}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 32767
+  m_TargetDisplay: 0
+--- !u!114 &1655733824985867241
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6272654194735766864}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &3859434358828781789
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6272654194735766864}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!1 &6730979341163725130
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3065318223923881068}
+  - component: {fileID: 4048050038387764}
+  - component: {fileID: 7203053245468445205}
+  - component: {fileID: 1814693233391153508}
+  - component: {fileID: 4658192954332585068}
+  m_Layer: 0
+  m_Name: Icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3065318223923881068
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6730979341163725130}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 658334975836887177}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 1, y: 0}
+--- !u!222 &4048050038387764
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6298552668587865122}
+  m_GameObject: {fileID: 6730979341163725130}
   m_CullTransparentMesh: 1
---- !u!114 &6253835900334454878
+--- !u!114 &7203053245468445205
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6730979341163725130}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 0f1a80f61f5b88b4e936cd2851440318, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &1814693233391153508
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6730979341163725130}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 7203053245468445205}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &4658192954332585068
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 6298552668587865122}
+  m_GameObject: {fileID: 6730979341163725130}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: 4a4cdcb385f2cce45936ea93e75583bd, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0, b: 0, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 18
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: Restart
---- !u!1 &7233544523102866465
+--- !u!1 &6948598989677981382
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1479,54 +1685,54 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 8190920868934888228}
-  - component: {fileID: 8724199976586423136}
-  - component: {fileID: 5159730516998353869}
-  - component: {fileID: 4017187274886740918}
+  - component: {fileID: 4669032243788926043}
+  - component: {fileID: 2058397410474277379}
+  - component: {fileID: 7228561239025916512}
+  - component: {fileID: 7127813294200200465}
   m_Layer: 0
-  m_Name: GameNameInputField
+  m_Name: HostInputField
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &8190920868934888228
+--- !u!224 &4669032243788926043
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7233544523102866465}
+  m_GameObject: {fileID: 6948598989677981382}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children:
-  - {fileID: 138094263974813120}
-  - {fileID: 2620730506608833440}
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 5
+  - {fileID: 7873647941765999930}
+  - {fileID: 5734767344113412670}
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: -200}
+  m_AnchoredPosition: {x: 0, y: -110}
   m_SizeDelta: {x: 240, y: 34}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &8724199976586423136
+--- !u!222 &2058397410474277379
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7233544523102866465}
+  m_GameObject: {fileID: 6948598989677981382}
   m_CullTransparentMesh: 1
---- !u!114 &5159730516998353869
+--- !u!114 &7228561239025916512
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7233544523102866465}
+  m_GameObject: {fileID: 6948598989677981382}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
@@ -1550,13 +1756,13 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
---- !u!114 &4017187274886740918
+--- !u!114 &7127813294200200465
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7233544523102866465}
+  m_GameObject: {fileID: 6948598989677981382}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
@@ -1590,9 +1796,9 @@ MonoBehaviour:
     m_SelectedTrigger: Selected
     m_DisabledTrigger: Disabled
   m_Interactable: 1
-  m_TargetGraphic: {fileID: 5159730516998353869}
-  m_TextComponent: {fileID: 1053251938234427840}
-  m_Placeholder: {fileID: 4816170860523843048}
+  m_TargetGraphic: {fileID: 7228561239025916512}
+  m_TextComponent: {fileID: 5276819046113372566}
+  m_Placeholder: {fileID: 4884182143523760533}
   m_ContentType: 0
   m_InputType: 0
   m_AsteriskChar: 42
@@ -1618,7 +1824,7 @@ MonoBehaviour:
   m_CaretWidth: 1
   m_ReadOnly: 0
   m_ShouldActivateOnSelect: 1
---- !u!1 &7628823630772556588
+--- !u!1 &7449859013363986110
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1626,9 +1832,9 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 5217845159523958199}
-  - component: {fileID: 7751027220653364445}
-  - component: {fileID: 5157892080109619652}
+  - component: {fileID: 8700682341986467457}
+  - component: {fileID: 1709790747665875319}
+  - component: {fileID: 5378376240120746642}
   m_Layer: 0
   m_Name: Text
   m_TagString: Untagged
@@ -1636,19 +1842,19 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &5217845159523958199
+--- !u!224 &8700682341986467457
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7628823630772556588}
+  m_GameObject: {fileID: 7449859013363986110}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 4246334686442813728}
+  m_Father: {fileID: 5574091098227206381}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
@@ -1656,21 +1862,21 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: -0.5}
   m_SizeDelta: {x: -20, y: -13}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &7751027220653364445
+--- !u!222 &1709790747665875319
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7628823630772556588}
+  m_GameObject: {fileID: 7449859013363986110}
   m_CullTransparentMesh: 1
---- !u!114 &5157892080109619652
+--- !u!114 &5378376240120746642
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7628823630772556588}
+  m_GameObject: {fileID: 7449859013363986110}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -1698,172 +1904,7 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: 
---- !u!1 &7857191148412553598
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 4347275100808007996}
-  - component: {fileID: 7203389461448233781}
-  - component: {fileID: 6078562987906390354}
-  m_Layer: 0
-  m_Name: InfoLabel
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &4347275100808007996
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7857191148412553598}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children: []
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 2
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: -50}
-  m_SizeDelta: {x: 400, y: 75}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &7203389461448233781
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7857191148412553598}
-  m_CullTransparentMesh: 1
---- !u!114 &6078562987906390354
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 7857191148412553598}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 1, g: 1, b: 1, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_FontData:
-    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
-    m_FontSize: 20
-    m_FontStyle: 0
-    m_BestFit: 0
-    m_MinSize: 10
-    m_MaxSize: 40
-    m_Alignment: 4
-    m_AlignByGeometry: 0
-    m_RichText: 1
-    m_HorizontalOverflow: 0
-    m_VerticalOverflow: 0
-    m_LineSpacing: 1
-  m_Text: To change the host, port or game name input a new value and press the Restart
-    button.
---- !u!1 &8749272277128690411
-GameObject:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  serializedVersion: 6
-  m_Component:
-  - component: {fileID: 2022683990036758718}
-  - component: {fileID: 7749415167159775601}
-  - component: {fileID: 4839667695453985739}
-  m_Layer: 0
-  m_Name: Dialog
-  m_TagString: Untagged
-  m_Icon: {fileID: 0}
-  m_NavMeshLayer: 0
-  m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &2022683990036758718
-RectTransform:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8749272277128690411}
-  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: 0}
-  m_LocalScale: {x: 1, y: 1, z: 1}
-  m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 4616216501943089721}
-  - {fileID: 8878901629948208661}
-  - {fileID: 4347275100808007996}
-  - {fileID: 4246334686442813728}
-  - {fileID: 1784358651286493674}
-  - {fileID: 8190920868934888228}
-  - {fileID: 8567927220143662192}
-  - {fileID: 6989121793255234228}
-  m_Father: {fileID: 1676452156175230966}
-  m_RootOrder: 0
-  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.5, y: 0.5}
-  m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 440, y: 600}
-  m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &7749415167159775601
-CanvasRenderer:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8749272277128690411}
-  m_CullTransparentMesh: 1
---- !u!114 &4839667695453985739
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8749272277128690411}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Material: {fileID: 0}
-  m_Color: {r: 0, g: 0.6470588, b: 0.1411765, a: 1}
-  m_RaycastTarget: 1
-  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
-  m_Maskable: 1
-  m_OnCullStateChanged:
-    m_PersistentCalls:
-      m_Calls: []
-  m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
-  m_Type: 1
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!1 &8939543962617238537
+--- !u!1 &8223567025381775458
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1871,9 +1912,9 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 138094263974813120}
-  - component: {fileID: 6641847353466845930}
-  - component: {fileID: 1053251938234427840}
+  - component: {fileID: 3696253901750726199}
+  - component: {fileID: 20204378151809956}
+  - component: {fileID: 3520383502205934430}
   m_Layer: 0
   m_Name: Text
   m_TagString: Untagged
@@ -1881,19 +1922,19 @@ GameObject:
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &138094263974813120
+--- !u!224 &3696253901750726199
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8939543962617238537}
+  m_GameObject: {fileID: 8223567025381775458}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
-  m_Father: {fileID: 8190920868934888228}
+  m_Father: {fileID: 8358375899040149343}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
@@ -1901,21 +1942,21 @@ RectTransform:
   m_AnchoredPosition: {x: 0, y: -0.5}
   m_SizeDelta: {x: -20, y: -13}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &6641847353466845930
+--- !u!222 &20204378151809956
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8939543962617238537}
+  m_GameObject: {fileID: 8223567025381775458}
   m_CullTransparentMesh: 1
---- !u!114 &1053251938234427840
+--- !u!114 &3520383502205934430
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 8939543962617238537}
+  m_GameObject: {fileID: 8223567025381775458}
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
@@ -1943,7 +1984,7 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: 
---- !u!1 &9053684824070360088
+--- !u!1 &8568460595404759499
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -1951,56 +1992,54 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 8567927220143662192}
-  - component: {fileID: 2761430590745093475}
-  - component: {fileID: 1462497863514407763}
-  - component: {fileID: 6158923888250694228}
+  - component: {fileID: 8641514271335108404}
+  - component: {fileID: 5511321733140059031}
+  - component: {fileID: 1392227924623515354}
   m_Layer: 0
-  m_Name: RestartButton
+  m_Name: InfoLabel
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
   m_IsActive: 1
---- !u!224 &8567927220143662192
+--- !u!224 &8641514271335108404
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 9053684824070360088}
+  m_GameObject: {fileID: 8568460595404759499}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children:
-  - {fileID: 8650069095507600988}
-  m_Father: {fileID: 2022683990036758718}
-  m_RootOrder: 6
+  m_Children: []
+  m_Father: {fileID: 2025872396341108583}
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: 0, y: -255}
-  m_SizeDelta: {x: 240, y: 34}
+  m_AnchoredPosition: {x: 0, y: -50}
+  m_SizeDelta: {x: 400, y: 75}
   m_Pivot: {x: 0.5, y: 0.5}
---- !u!222 &2761430590745093475
+--- !u!222 &5511321733140059031
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 9053684824070360088}
+  m_GameObject: {fileID: 8568460595404759499}
   m_CullTransparentMesh: 1
---- !u!114 &1462497863514407763
+--- !u!114 &1392227924623515354
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 9053684824070360088}
+  m_GameObject: {fileID: 8568460595404759499}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
@@ -2011,57 +2050,18 @@ MonoBehaviour:
   m_OnCullStateChanged:
     m_PersistentCalls:
       m_Calls: []
-  m_Sprite: {fileID: 0}
-  m_Type: 0
-  m_PreserveAspect: 0
-  m_FillCenter: 1
-  m_FillMethod: 4
-  m_FillAmount: 1
-  m_FillClockwise: 1
-  m_FillOrigin: 0
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
---- !u!114 &6158923888250694228
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 9053684824070360088}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  m_Navigation:
-    m_Mode: 3
-    m_WrapAround: 0
-    m_SelectOnUp: {fileID: 0}
-    m_SelectOnDown: {fileID: 0}
-    m_SelectOnLeft: {fileID: 0}
-    m_SelectOnRight: {fileID: 0}
-  m_Transition: 1
-  m_Colors:
-    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
-    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
-    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
-    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
-    m_ColorMultiplier: 1
-    m_FadeDuration: 0.1
-  m_SpriteState:
-    m_HighlightedSprite: {fileID: 0}
-    m_PressedSprite: {fileID: 0}
-    m_SelectedSprite: {fileID: 0}
-    m_DisabledSprite: {fileID: 0}
-  m_AnimationTriggers:
-    m_NormalTrigger: Normal
-    m_HighlightedTrigger: Highlighted
-    m_PressedTrigger: Pressed
-    m_SelectedTrigger: Selected
-    m_DisabledTrigger: Disabled
-  m_Interactable: 1
-  m_TargetGraphic: {fileID: 1462497863514407763}
-  m_OnClick:
-    m_PersistentCalls:
-      m_Calls: []
\ No newline at end of file
+  m_FontData:
+    m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
+    m_FontSize: 20
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 10
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: To change the host, port or game name input a new value and press the Restart
+    button.
diff --git a/Assets/Editor/CreateAltPrefab.cs b/Assets/Editor/CreateAltPrefab.cs
index a6ec1b44a..bedbbd1df 100644
--- a/Assets/Editor/CreateAltPrefab.cs
+++ b/Assets/Editor/CreateAltPrefab.cs
@@ -144,10 +144,10 @@ public static void CreateAUTPrefab()
             var MessageRectTransform = MessageGameObject.GetComponent<RectTransform>();
             MessageRectTransform.SetParent(DialogTransform, false);
 
-            MessageRectTransform.localPosition = new Vector3(0, 60, 0);
+            MessageRectTransform.localPosition = new Vector3(0, 100, 0);
             MessageRectTransform.anchorMin = new Vector2(0.5f, 0.5f);
             MessageRectTransform.anchorMax = new Vector2(0.5f, 0.5f);
-            MessageRectTransform.sizeDelta = new Vector2(400, 100);
+            MessageRectTransform.sizeDelta = new Vector2(400, 120);
             MessageRectTransform.pivot = new Vector2(0.5f, 0.5f);
 
             var MessageText = MessageGameObject.GetComponent<Text>();


Test patch:
diff --git a/Bindings~/python/tests/integration/test_scene01.py b/Bindings~/python/tests/integration/test_scene01.py
index 2ea34824e..8199056ab 100644
--- a/Bindings~/python/tests/integration/test_scene01.py
+++ b/Bindings~/python/tests/integration/test_scene01.py
@@ -824,10 +824,10 @@ def test_call_private_method(self):
     def test_reset_input(self):
         self.altdriver.key_down(AltKeyCode.P, 1)
         assert self.altdriver.find_object(By.NAME, "AltTesterPrefab").get_component_property(
-            "Altom.AltTester.NewInputSystem", "Keyboard.pKey.isPressed", "Assembly-CSharp") is True
+            "AltTester.NewInputSystem", "Keyboard.pKey.isPressed", "Assembly-CSharp") is True
         self.altdriver.reset_input()
         assert self.altdriver.find_object(By.NAME, "AltTesterPrefab").get_component_property(
-            "Altom.AltTester.NewInputSystem", "Keyboard.pKey.isPressed", "Assembly-CSharp") is False
+            "AltTester.NewInputSystem", "Keyboard.pKey.isPressed", "Assembly-CSharp") is False
 
         countKeyDown = self.altdriver.find_object(By.NAME, "AltTesterPrefab").get_component_property(
             "Input", "_keyCodesPressed.Count", "Assembly-CSharp")