diff --git a/OpenSim/Tests/Common/ANumericalToleranceConstraint.cs b/OpenSim/Tests/Common/ANumericalToleranceConstraint.cs
new file mode 100644
index 0000000000..893862f330
--- /dev/null
+++ b/OpenSim/Tests/Common/ANumericalToleranceConstraint.cs
@@ -0,0 +1,57 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using NUnit.Framework.Constraints;
+
+namespace OpenSim.Tests.Common
+{
+    public abstract class ANumericalToleranceConstraint : Constraint
+    {
+        protected double _tolerance;
+
+        public ANumericalToleranceConstraint(double tolerance)
+        {
+            if (tolerance < 0)
+            {
+                throw new ArgumentException("Tolerance cannot be negative.");
+            }
+            _tolerance = tolerance;
+        }
+
+        protected bool IsWithinDoubleConstraint(double doubleValue, double baseValue)
+        {
+            if (doubleValue >= baseValue - _tolerance && doubleValue <= baseValue + _tolerance)
+            {
+                return true;
+            }
+
+            return false;
+        }
+    }
+}
diff --git a/OpenSim/Tests/Common/DoubleToleranceConstraint.cs b/OpenSim/Tests/Common/DoubleToleranceConstraint.cs
new file mode 100644
index 0000000000..29b808df6d
--- /dev/null
+++ b/OpenSim/Tests/Common/DoubleToleranceConstraint.cs
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using NUnit.Framework;
+using NUnit.Framework.Constraints;
+using OpenSim.Tests.Common;
+
+namespace OpenSim.Tests.Common
+{
+    public class DoubleToleranceConstraint : ANumericalToleranceConstraint
+    {
+
+        private double _baseValue;
+        private double _valueToBeTested;
+
+        public DoubleToleranceConstraint(double baseValue, double tolerance) : base(tolerance)
+        {
+            _baseValue = baseValue;
+        }
+        
+        ///
+        ///Test whether the constraint is satisfied by a given value            
+        ///
+        ///The value to be tested
+        ///
+        ///True for success, false for failure
+        ///
+        public override bool Matches(object valueToBeTested)
+        {
+            if (valueToBeTested == null)
+            {
+                throw new ArgumentException("Constraint cannot be used upon null values.");
+            }
+            if( valueToBeTested.GetType() != typeof(double))
+            {
+                throw new ArgumentException("Constraint cannot be used upon non double-values.");
+            }
+
+            _valueToBeTested = (double)valueToBeTested;
+
+            return IsWithinDoubleConstraint(_valueToBeTested, _baseValue );
+        }
+
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WriteExpectedValue(string.Format("A value {0} within tolerance of plus or minus {1}",_baseValue,_tolerance));
+        }
+
+        public override void WriteActualValueTo(MessageWriter writer)
+        {
+            writer.WriteActualValue(_valueToBeTested);        
+        }
+    }
+}
diff --git a/OpenSim/Tests/Common/TestHelper.cs b/OpenSim/Tests/Common/TestHelper.cs
new file mode 100644
index 0000000000..1ec9e65ec7
--- /dev/null
+++ b/OpenSim/Tests/Common/TestHelper.cs
@@ -0,0 +1,53 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace OpenSim.Tests.Common
+{
+    public delegate void TestDelegate();
+
+    public class TestHelper
+    {
+        public static bool AssertThisDelegateCausesArgumentException(TestDelegate d)
+        {
+            try
+            {
+                d();
+            }
+            catch(ArgumentException e)
+            {
+                return true;
+            }
+
+            return false;
+        }
+    }
+}
diff --git a/OpenSim/Tests/Common/VectorToleranceConstraint.cs b/OpenSim/Tests/Common/VectorToleranceConstraint.cs
new file mode 100644
index 0000000000..39f1b1a59d
--- /dev/null
+++ b/OpenSim/Tests/Common/VectorToleranceConstraint.cs
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using libsecondlife;
+using NUnit.Framework;
+
+namespace OpenSim.Tests.Common
+{
+    public class VectorToleranceConstraint : ANumericalToleranceConstraint
+    {
+        private LLVector3 _baseValue;
+        private LLVector3 _valueToBeTested;
+
+        public VectorToleranceConstraint(LLVector3 baseValue, double tolerance) : base(tolerance)
+        {
+            _baseValue = baseValue;
+        }
+
+        ///
+        ///Test whether the constraint is satisfied by a given value            
+        ///
+        ///The value to be tested
+        ///
+        ///True for success, false for failure
+        ///
+        public override bool Matches(object valueToBeTested)
+        {
+            if (valueToBeTested == null)
+            {
+                throw new ArgumentException("Constraint cannot be used upon null values.");
+            }
+            if (valueToBeTested.GetType() != typeof (LLVector3))
+            {
+                throw new ArgumentException("Constraint cannot be used upon non vector values.");
+            }
+
+            _valueToBeTested = (LLVector3) valueToBeTested;
+
+            if (    IsWithinDoubleConstraint(_valueToBeTested.X,_baseValue.X) &&
+                    IsWithinDoubleConstraint(_valueToBeTested.Y,_baseValue.Y) &&
+                    IsWithinDoubleConstraint(_valueToBeTested.Z,_baseValue.Z) )
+            {
+                return true;
+            }
+
+            return false;
+        }
+
+        public override void WriteDescriptionTo(MessageWriter writer)
+        {
+            writer.WriteExpectedValue(
+                string.Format("A value {0} within tolerance of plus or minus {1}", _baseValue, _tolerance));
+        }
+
+        public override void WriteActualValueTo(MessageWriter writer)
+        {
+            writer.WriteActualValue(_valueToBeTested);
+        }
+    }
+}
diff --git a/OpenSim/Tests/Inventory/Properties/AssemblyInfo.cs b/OpenSim/Tests/Inventory/Properties/AssemblyInfo.cs
index dd537a557b..ac5dbd9820 100644
--- a/OpenSim/Tests/Inventory/Properties/AssemblyInfo.cs
+++ b/OpenSim/Tests/Inventory/Properties/AssemblyInfo.cs
@@ -1,3 +1,4 @@
+<<<<<<< .working
 using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
@@ -33,3 +34,68 @@ using System.Runtime.InteropServices;
 // by using the '*' as shown below:
 [assembly: AssemblyVersion("1.0.0.0")]
 [assembly: AssemblyFileVersion("1.0.0.0")]
+=======
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Inventory")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Lauridsen")]
+[assembly: AssemblyProduct("Inventory")]
+[assembly: AssemblyCopyright("Copyright © Lauridsen 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("2330add7-08a2-4f33-9ab8-74894fe7e3dd")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+>>>>>>> .merge-right.r3604
diff --git a/OpenSim/Tests/Inventory/TestInventory.cs b/OpenSim/Tests/Inventory/TestInventory.cs
index bc339b39c8..18a22c46eb 100644
--- a/OpenSim/Tests/Inventory/TestInventory.cs
+++ b/OpenSim/Tests/Inventory/TestInventory.cs
@@ -1,1008 +1,1008 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using NUnit.Framework;
-
-using libsecondlife;
-using OpenSim.Framework.Types;
-using OpenSim.Framework.Data;
-using OpenSim.Framework.Data.SQLite;
-using OpenSim.Framework.Data.MySQL;
-using OpenSim.Framework.Console;
-
-namespace OpenSim.Test.Inventory
-{
-    [TestFixture]
-    public class TestInventory
-    {
-        IInventoryData _dbPlugin;
-        LLUUID _agent_1_id;
-        public static LLUUID LibraryFolderRootUuid = new LLUUID("5926de2a-c2d7-4c11-ac4e-74512ffeb6d1");
-
-        Random _rnd = new Random((int)DateTime.Now.Ticks);
-
-        [TestFixtureSetUp]
-        public void SetupInventoryTest()
-        {
-
-            _agent_1_id = LLUUID.Random();
-
-            MainLog.Instance = new LogBase("UnitTest.log", "TEST", null, false);
-//            _dbPlugin = new SQLiteInventoryStore();
-            _dbPlugin = new MySQLInventoryData();
-            _dbPlugin.Initialise();
-        }
-
-        [TestFixtureTearDown]
-        public void TeardownInventoryTest()
-        {
-            _dbPlugin.Close();
-        }
-
-        private bool AreFoldersIdentical(InventoryFolderBase a, InventoryFolderBase b)
-        {
-            if (a.agentID != b.agentID) return false;
-            if (a.folderID != b.folderID) return false;
-            if (a.name != b.name) return false;
-            if (a.parentID != b.parentID) return false;
-            if (a.type != b.type) return false;
-            if (a.version != b.version) return false;
-            return true;
-        }
-
-        private bool AreItemsIdentical(InventoryItemBase a, InventoryItemBase b)
-        {
-            if (a.assetID != b.assetID) return false;
-            if (a.assetType != b.assetType) return false;
-            if (a.avatarID != b.avatarID) return false;
-            if (a.creatorsID != b.creatorsID) return false;
-            if (a.inventoryBasePermissions != b.inventoryBasePermissions) return false;
-            if (a.inventoryCurrentPermissions != b.inventoryCurrentPermissions) return false;
-            if (a.inventoryEveryOnePermissions != b.inventoryEveryOnePermissions) return false;
-            if (a.inventoryNextPermissions != b.inventoryNextPermissions) return false;
-            if (a.inventoryID != b.inventoryID) return false;
-            if (a.inventoryDescription != b.inventoryDescription) return false;
-            if (a.inventoryName != b.inventoryName) return false;
-            if (a.invType != b.invType) return false;
-            if (a.parentFolderID != b.parentFolderID) return false;
-            return true;
-        }
-        
-        /// 
-        /// Test that we can insert a root folder
-        /// 
-        [Test]
-        public void T01_SetupRootFolder()
-        {
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsNotNull(f, "Failed to get existing folder");
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            // Test that we only get the root folder, based on it's id, i.e. any other gui will not find the folder
-            f = _dbPlugin.getInventoryFolder(LLUUID.Zero);
-            Assert.IsNull(f, "get folder returned a folder, but shouldn't find one");
-
-            f = _dbPlugin.getInventoryFolder(LLUUID.Random());
-            Assert.IsNull(f, "get folder returned a folder, but shouldn't find one");
-
-            // test that we can delete the folder
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsNull(f, "get folder returned a folder, but it should have been deleted");
-        }
-
-        /// 
-        /// Make sure that all folders reported as root folders are root folders
-        /// 
-        [Test]
-        public void T02_TestRootFolder()
-        {
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            List folders = _dbPlugin.getUserRootFolders(_agent_1_id);
-            Assert.IsNotNull(folders, "Failed to get rootfolders for user");
-
-            bool foundRoot = false;
-            foreach(InventoryFolderBase f in folders) {
-
-                // a root folder has a zero valued LLUUID
-                Assert.AreEqual(f.parentID, LLUUID.Zero, "non root folder returned");
-
-
-                if(f.agentID == root.agentID)
-                {
-                    // we cannot have two different user specific root folders
-                    Assert.IsFalse(foundRoot, "Two different user specific root folders returned");
-
-                    Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-                    foundRoot = false;
-                }
-            }
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-        }
-
-        /// 
-        /// Test of folder hierarchy
-        /// 
-        [Test]
-        public void T03_TestRootFolder()
-        {
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            List folders = _dbPlugin.getInventoryFolders(_agent_1_id);
-            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
-            Assert.IsEmpty(folders, "non empty collection was returned, even though the list of sub-folders should be empty");
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child2 = new InventoryFolderBase();
-            child2.agentID = _agent_1_id;
-            child2.folderID = LLUUID.Random();
-            child2.name = "Child 2";
-            child2.parentID = root.folderID;
-            child2.type = 4;
-            child2.version = 4;
-            _dbPlugin.addInventoryFolder(child2);
-
-            folders = _dbPlugin.getInventoryFolders(_agent_1_id);
-            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
-            Assert.AreEqual(folders.Count, 2, "two children were reported as inserted into the root folder");
-
-            bool foundChild1 = false;
-            bool foundChild2 = false;
-
-            foreach (InventoryFolderBase f in folders)
-            {
-                if (f.folderID == child1.folderID)
-                {
-                    Assert.IsTrue(AreFoldersIdentical(child1, f), "Difference between stored and retrieved folder data");
-                    foundChild1 = true;
-                }
-                else if (f.folderID == child2.folderID)
-                {
-                    Assert.IsTrue(AreFoldersIdentical(child2, f), "Difference between stored and retrieved folder data");
-                    foundChild2 = true;
-                }
-                else
-                {
-                    Assert.Fail("found unknown child folder");
-                }
-            }
-
-            if (foundChild1 == false || foundChild2 == false)
-            {
-                Assert.Fail("one of the two child folders was not returned");
-            }
-
-            _dbPlugin.deleteInventoryFolder(child2.folderID);
-            _dbPlugin.deleteInventoryFolder(child1.folderID);
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-        }
-
-        /// 
-        /// Test of folder hierarchy, and deletion
-        /// 
-        [Test]
-        public void T04_TestRootFolder()
-        {
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child2 = new InventoryFolderBase();
-            child2.agentID = _agent_1_id;
-            child2.folderID = LLUUID.Random();
-            child2.name = "Child 2";
-            child2.parentID = root.folderID;
-            child2.type = 4;
-            child2.version = 4;
-            _dbPlugin.addInventoryFolder(child2);
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-
-            List folders = _dbPlugin.getInventoryFolders(_agent_1_id);
-            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
-            Assert.IsEmpty(folders, "non empty collection was returned, even though the list of sub-folders should be empty");
-
-            InventoryFolderBase f = _dbPlugin.getInventoryFolder(_agent_1_id);
-            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
-
-            f = _dbPlugin.getInventoryFolder(child1.folderID);
-            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
-
-            f = _dbPlugin.getInventoryFolder(child2.folderID);
-            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
-        }
-
-        /// 
-        /// Folder update
-        /// 
-        [Test]
-        public void T05_UpdateFolder()
-        {
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase f = _dbPlugin.getInventoryFolder(_agent_1_id);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.agentID = LLUUID.Random();
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.folderID = LLUUID.Random();
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.name = "Root folder 2";
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.parentID = LLUUID.Random();
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.type = (short)(root.type + 1);
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            root.version = (ushort)(root.version + 1);
-            _dbPlugin.updateInventoryFolder(root);
-            f = _dbPlugin.getInventoryFolder(root.folderID);
-            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-            _dbPlugin.deleteInventoryFolder(root.folderID);
-        }
-
-        /// 
-        /// Test that we can insert a root folder
-        /// 
-        [Test]
-        public void T06_SetupInventoryWithItems()
-        {
-
-            // Setup inventory
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child1Child = new InventoryFolderBase();
-            child1Child.agentID = _agent_1_id;
-            child1Child.folderID = LLUUID.Random();
-            child1Child.name = "Child 1 child";
-            child1Child.parentID = child1.folderID;
-            child1Child.type = 4;
-            child1Child.version = 4;
-            _dbPlugin.addInventoryFolder(child1Child);
-
-            InventoryFolderBase child2 = new InventoryFolderBase();
-            child2.agentID = _agent_1_id;
-            child2.folderID = LLUUID.Random();
-            child2.name = "Child 2";
-            child2.parentID = root.folderID;
-            child2.type = 5;
-            child2.version = 5;
-            _dbPlugin.addInventoryFolder(child2);
-
-            InventoryFolderBase child2Child = new InventoryFolderBase();
-            child2Child.agentID = _agent_1_id;
-            child2Child.folderID = LLUUID.Random();
-            child2Child.name = "Child 2 child";
-            child2Child.parentID = child2.folderID;
-            child2Child.type = 6;
-            child2Child.version = 6;
-            _dbPlugin.addInventoryFolder(child2Child);
-
-            InventoryItemBase rootItem = new InventoryItemBase();
-            rootItem.assetID = LLUUID.Random();
-            rootItem.assetType = _rnd.Next(1, 1000);
-            rootItem.avatarID = _agent_1_id;
-            rootItem.creatorsID = LLUUID.Random();
-            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1,1000000);
-            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryID = LLUUID.Random();
-            rootItem.inventoryDescription = "Root item, Description";
-            rootItem.inventoryName = "Root item";
-            rootItem.invType = _rnd.Next(1, 1000);
-            rootItem.parentFolderID = root.folderID;
-            _dbPlugin.addInventoryItem(rootItem);
-
-            InventoryItemBase child1Item = new InventoryItemBase();
-            child1Item.assetID = LLUUID.Random();
-            child1Item.assetType = _rnd.Next(1, 1000);
-            child1Item.avatarID = _agent_1_id;
-            child1Item.creatorsID = LLUUID.Random();
-            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryID = LLUUID.Random();
-            child1Item.inventoryDescription = "child1 item, Description";
-            child1Item.inventoryName = "child1 item";
-            child1Item.invType = _rnd.Next(1, 1000);
-            child1Item.parentFolderID = child1.folderID;
-            _dbPlugin.addInventoryItem(child1Item);
-
-            InventoryItemBase child1ChildItem = new InventoryItemBase();
-            child1ChildItem.assetID = LLUUID.Random();
-            child1ChildItem.assetType = _rnd.Next(1, 1000);
-            child1ChildItem.avatarID = _agent_1_id;
-            child1ChildItem.creatorsID = LLUUID.Random();
-            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryID = LLUUID.Random();
-            child1ChildItem.inventoryDescription = "child1Child item, Description";
-            child1ChildItem.inventoryName = "child1Child item";
-            child1ChildItem.invType = _rnd.Next(1, 1000);
-            child1ChildItem.parentFolderID = child1Child.folderID;
-            _dbPlugin.addInventoryItem(child1ChildItem);
-
-            InventoryItemBase child2Item = new InventoryItemBase();
-            child2Item.assetID = LLUUID.Random();
-            child2Item.assetType = _rnd.Next(1, 1000);
-            child2Item.avatarID = _agent_1_id;
-            child2Item.creatorsID = LLUUID.Random();
-            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryID = LLUUID.Random();
-            child2Item.inventoryDescription = "child2 item, Description";
-            child2Item.inventoryName = "child2 item";
-            child2Item.invType = _rnd.Next(1, 1000);
-            child2Item.parentFolderID = child2.folderID;
-            _dbPlugin.addInventoryItem(child2Item);
-
-            InventoryItemBase child2ChildItem = new InventoryItemBase();
-            child2ChildItem.assetID = LLUUID.Random();
-            child2ChildItem.assetType = _rnd.Next(1, 1000);
-            child2ChildItem.avatarID = _agent_1_id;
-            child2ChildItem.creatorsID = LLUUID.Random();
-            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryID = LLUUID.Random();
-            child2ChildItem.inventoryDescription = "child2Child item, Description";
-            child2ChildItem.inventoryName = "child2Child item";
-            child2ChildItem.invType = _rnd.Next(1, 1000);
-            child2ChildItem.parentFolderID = child2Child.folderID;
-            _dbPlugin.addInventoryItem(child2ChildItem);
-
-            // test read of items
-
-            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(child1Item, item));
-
-            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(child1ChildItem, item));
-
-            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(child2Item, item));
-
-            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(child2ChildItem, item));
-
-            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
-            _dbPlugin.deleteInventoryItem(child1Item.inventoryID);
-            _dbPlugin.deleteInventoryItem(child1ChildItem.inventoryID);
-            _dbPlugin.deleteInventoryItem(child2Item.inventoryID);
-            _dbPlugin.deleteInventoryItem(child2ChildItem.inventoryID);
-        }
-
-        /// 
-        /// Test that we can insert a root folder
-        /// 
-        [Test]
-        public void T07_DeleteInventoryWithItems()
-        {
-
-            // Setup inventory
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child1Child = new InventoryFolderBase();
-            child1Child.agentID = _agent_1_id;
-            child1Child.folderID = LLUUID.Random();
-            child1Child.name = "Child 1 child";
-            child1Child.parentID = child1.folderID;
-            child1Child.type = 4;
-            child1Child.version = 4;
-            _dbPlugin.addInventoryFolder(child1Child);
-
-            InventoryFolderBase child2 = new InventoryFolderBase();
-            child2.agentID = _agent_1_id;
-            child2.folderID = LLUUID.Random();
-            child2.name = "Child 2";
-            child2.parentID = root.folderID;
-            child2.type = 5;
-            child2.version = 5;
-            _dbPlugin.addInventoryFolder(child2);
-
-            InventoryFolderBase child2Child = new InventoryFolderBase();
-            child2Child.agentID = _agent_1_id;
-            child2Child.folderID = LLUUID.Random();
-            child2Child.name = "Child 2 child";
-            child2Child.parentID = child2.folderID;
-            child2Child.type = 6;
-            child2Child.version = 6;
-            _dbPlugin.addInventoryFolder(child2Child);
-
-            InventoryItemBase rootItem = new InventoryItemBase();
-            rootItem.assetID = LLUUID.Random();
-            rootItem.assetType = _rnd.Next(1, 1000);
-            rootItem.avatarID = _agent_1_id;
-            rootItem.creatorsID = LLUUID.Random();
-            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryID = LLUUID.Random();
-            rootItem.inventoryDescription = "Root item, Description";
-            rootItem.inventoryName = "Root item";
-            rootItem.invType = _rnd.Next(1, 1000);
-            rootItem.parentFolderID = root.folderID;
-            _dbPlugin.addInventoryItem(rootItem);
-
-            InventoryItemBase child1Item = new InventoryItemBase();
-            child1Item.assetID = LLUUID.Random();
-            child1Item.assetType = _rnd.Next(1, 1000);
-            child1Item.avatarID = _agent_1_id;
-            child1Item.creatorsID = LLUUID.Random();
-            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryID = LLUUID.Random();
-            child1Item.inventoryDescription = "child1 item, Description";
-            child1Item.inventoryName = "child1 item";
-            child1Item.invType = _rnd.Next(1, 1000);
-            child1Item.parentFolderID = child1.folderID;
-            _dbPlugin.addInventoryItem(child1Item);
-
-            InventoryItemBase child1ChildItem = new InventoryItemBase();
-            child1ChildItem.assetID = LLUUID.Random();
-            child1ChildItem.assetType = _rnd.Next(1, 1000);
-            child1ChildItem.avatarID = _agent_1_id;
-            child1ChildItem.creatorsID = LLUUID.Random();
-            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryID = LLUUID.Random();
-            child1ChildItem.inventoryDescription = "child1Child item, Description";
-            child1ChildItem.inventoryName = "child1Child item";
-            child1ChildItem.invType = _rnd.Next(1, 1000);
-            child1ChildItem.parentFolderID = child1Child.folderID;
-            _dbPlugin.addInventoryItem(child1ChildItem);
-
-            InventoryItemBase child2Item = new InventoryItemBase();
-            child2Item.assetID = LLUUID.Random();
-            child2Item.assetType = _rnd.Next(1, 1000);
-            child2Item.avatarID = _agent_1_id;
-            child2Item.creatorsID = LLUUID.Random();
-            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryID = LLUUID.Random();
-            child2Item.inventoryDescription = "child2 item, Description";
-            child2Item.inventoryName = "child2 item";
-            child2Item.invType = _rnd.Next(1, 1000);
-            child2Item.parentFolderID = child2.folderID;
-            _dbPlugin.addInventoryItem(child2Item);
-
-            InventoryItemBase child2ChildItem = new InventoryItemBase();
-            child2ChildItem.assetID = LLUUID.Random();
-            child2ChildItem.assetType = _rnd.Next(1, 1000);
-            child2ChildItem.avatarID = _agent_1_id;
-            child2ChildItem.creatorsID = LLUUID.Random();
-            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryID = LLUUID.Random();
-            child2ChildItem.inventoryDescription = "child2Child item, Description";
-            child2ChildItem.inventoryName = "child2Child item";
-            child2ChildItem.invType = _rnd.Next(1, 1000);
-            child2ChildItem.parentFolderID = child2Child.folderID;
-            _dbPlugin.addInventoryItem(child2ChildItem);
-
-            // test deletetion of items
-
-            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
-            _dbPlugin.deleteInventoryItem(child1Item.inventoryID);
-            _dbPlugin.deleteInventoryItem(child1ChildItem.inventoryID);
-            _dbPlugin.deleteInventoryItem(child2Item.inventoryID);
-            _dbPlugin.deleteInventoryItem(child2ChildItem.inventoryID);
-
-            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
-            Assert.IsNull(item);
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-        }
-
-
-        /// 
-        /// Test that we can insert a root folder
-        /// 
-        [Test]
-        public void T08_DeleteInventoryWithItems()
-        {
-
-            // Setup inventory
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child1Child = new InventoryFolderBase();
-            child1Child.agentID = _agent_1_id;
-            child1Child.folderID = LLUUID.Random();
-            child1Child.name = "Child 1 child";
-            child1Child.parentID = child1.folderID;
-            child1Child.type = 4;
-            child1Child.version = 4;
-            _dbPlugin.addInventoryFolder(child1Child);
-
-            InventoryFolderBase child2 = new InventoryFolderBase();
-            child2.agentID = _agent_1_id;
-            child2.folderID = LLUUID.Random();
-            child2.name = "Child 2";
-            child2.parentID = root.folderID;
-            child2.type = 5;
-            child2.version = 5;
-            _dbPlugin.addInventoryFolder(child2);
-
-            InventoryFolderBase child2Child = new InventoryFolderBase();
-            child2Child.agentID = _agent_1_id;
-            child2Child.folderID = LLUUID.Random();
-            child2Child.name = "Child 2 child";
-            child2Child.parentID = child2.folderID;
-            child2Child.type = 6;
-            child2Child.version = 6;
-            _dbPlugin.addInventoryFolder(child2Child);
-
-            InventoryItemBase rootItem = new InventoryItemBase();
-            rootItem.assetID = LLUUID.Random();
-            rootItem.assetType = _rnd.Next(1, 1000);
-            rootItem.avatarID = _agent_1_id;
-            rootItem.creatorsID = LLUUID.Random();
-            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryID = LLUUID.Random();
-            rootItem.inventoryDescription = "Root item, Description";
-            rootItem.inventoryName = "Root item";
-            rootItem.invType = _rnd.Next(1, 1000);
-            rootItem.parentFolderID = root.folderID;
-            _dbPlugin.addInventoryItem(rootItem);
-
-            InventoryItemBase child1Item = new InventoryItemBase();
-            child1Item.assetID = LLUUID.Random();
-            child1Item.assetType = _rnd.Next(1, 1000);
-            child1Item.avatarID = _agent_1_id;
-            child1Item.creatorsID = LLUUID.Random();
-            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1Item.inventoryID = LLUUID.Random();
-            child1Item.inventoryDescription = "child1 item, Description";
-            child1Item.inventoryName = "child1 item";
-            child1Item.invType = _rnd.Next(1, 1000);
-            child1Item.parentFolderID = child1.folderID;
-            _dbPlugin.addInventoryItem(child1Item);
-
-            InventoryItemBase child1ChildItem = new InventoryItemBase();
-            child1ChildItem.assetID = LLUUID.Random();
-            child1ChildItem.assetType = _rnd.Next(1, 1000);
-            child1ChildItem.avatarID = _agent_1_id;
-            child1ChildItem.creatorsID = LLUUID.Random();
-            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child1ChildItem.inventoryID = LLUUID.Random();
-            child1ChildItem.inventoryDescription = "child1Child item, Description";
-            child1ChildItem.inventoryName = "child1Child item";
-            child1ChildItem.invType = _rnd.Next(1, 1000);
-            child1ChildItem.parentFolderID = child1Child.folderID;
-            _dbPlugin.addInventoryItem(child1ChildItem);
-
-            InventoryItemBase child2Item = new InventoryItemBase();
-            child2Item.assetID = LLUUID.Random();
-            child2Item.assetType = _rnd.Next(1, 1000);
-            child2Item.avatarID = _agent_1_id;
-            child2Item.creatorsID = LLUUID.Random();
-            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2Item.inventoryID = LLUUID.Random();
-            child2Item.inventoryDescription = "child2 item, Description";
-            child2Item.inventoryName = "child2 item";
-            child2Item.invType = _rnd.Next(1, 1000);
-            child2Item.parentFolderID = child2.folderID;
-            _dbPlugin.addInventoryItem(child2Item);
-
-            InventoryItemBase child2ChildItem = new InventoryItemBase();
-            child2ChildItem.assetID = LLUUID.Random();
-            child2ChildItem.assetType = _rnd.Next(1, 1000);
-            child2ChildItem.avatarID = _agent_1_id;
-            child2ChildItem.creatorsID = LLUUID.Random();
-            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            child2ChildItem.inventoryID = LLUUID.Random();
-            child2ChildItem.inventoryDescription = "child2Child item, Description";
-            child2ChildItem.inventoryName = "child2Child item";
-            child2ChildItem.invType = _rnd.Next(1, 1000);
-            child2ChildItem.parentFolderID = child2Child.folderID;
-            _dbPlugin.addInventoryItem(child2ChildItem);
-
-            // test deletetion of items
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-
-            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
-            Assert.IsNull(item);
-
-            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
-            Assert.IsNull(item);
-
-        }
-
-        /// 
-        /// Test that we can update items
-        /// 
-        [Test]
-        public void T09_UpdateItem()
-        {
-
-            // Setup inventory
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryItemBase rootItem = new InventoryItemBase();
-            rootItem.assetID = LLUUID.Random();
-            rootItem.assetType = _rnd.Next(1, 1000);
-            rootItem.avatarID = _agent_1_id;
-            rootItem.creatorsID = LLUUID.Random();
-            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            rootItem.inventoryID = LLUUID.Random();
-            rootItem.inventoryDescription = "Root item, Description";
-            rootItem.inventoryName = "Root item";
-            rootItem.invType = _rnd.Next(1, 1000);
-            rootItem.parentFolderID = root.folderID;
-            _dbPlugin.addInventoryItem(rootItem);
-
-            rootItem.assetID = LLUUID.Random();
-            _dbPlugin.updateInventoryItem(rootItem);
-            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.assetType = rootItem.assetType+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.avatarID = LLUUID.Random();
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.creatorsID = LLUUID.Random();
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryBasePermissions = rootItem.inventoryBasePermissions+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryCurrentPermissions = rootItem.inventoryCurrentPermissions+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryDescription = "New description";
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryEveryOnePermissions = rootItem.inventoryEveryOnePermissions+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryName = "New name";
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.inventoryNextPermissions = rootItem.inventoryNextPermissions+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.invType = rootItem.invType+1;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            rootItem.parentFolderID = LLUUID.Zero;
-            _dbPlugin.updateInventoryItem(rootItem);
-            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
-            Assert.IsTrue(AreItemsIdentical(rootItem, item));
-
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
-        }
-
-
-        /// 
-        /// Test that we can insert a root folder
-        /// 
-        [Test]
-        public void T10_GetListOfItemsInFolder()
-        {
-
-            // Setup inventory
-            InventoryFolderBase root = new InventoryFolderBase();
-            root.agentID = _agent_1_id;
-            root.folderID = _agent_1_id;
-            root.name = "Root folder";
-            root.parentID = LLUUID.Zero;
-            root.type = 2;
-            root.version = 2;
-            _dbPlugin.addInventoryFolder(root);
-
-            InventoryFolderBase child1 = new InventoryFolderBase();
-            child1.agentID = _agent_1_id;
-            child1.folderID = LLUUID.Random();
-            child1.name = "Child 1";
-            child1.parentID = root.folderID;
-            child1.type = 3;
-            child1.version = 3;
-            _dbPlugin.addInventoryFolder(child1);
-
-            InventoryFolderBase child1Child = new InventoryFolderBase();
-            child1Child.agentID = _agent_1_id;
-            child1Child.folderID = LLUUID.Random();
-            child1Child.name = "Child 1 child";
-            child1Child.parentID = child1.folderID;
-            child1Child.type = 4;
-            child1Child.version = 4;
-            _dbPlugin.addInventoryFolder(child1Child);
-
-
-            InventoryItemBase item1 = new InventoryItemBase();
-            item1.assetID = LLUUID.Random();
-            item1.assetType = _rnd.Next(1, 1000);
-            item1.avatarID = _agent_1_id;
-            item1.creatorsID = LLUUID.Random();
-            item1.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            item1.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            item1.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            item1.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            item1.inventoryID = LLUUID.Random();
-            item1.inventoryDescription = "Item 1, description";
-            item1.inventoryName = "Item 1";
-            item1.invType = _rnd.Next(1, 1000);
-            item1.parentFolderID = child1Child.folderID;
-            _dbPlugin.addInventoryItem(item1);
-
-            InventoryItemBase item2 = new InventoryItemBase();
-            item2.assetID = LLUUID.Random();
-            item2.assetType = _rnd.Next(1, 1000);
-            item2.avatarID = _agent_1_id;
-            item2.creatorsID = LLUUID.Random();
-            item2.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
-            item2.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
-            item2.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
-            item2.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
-            item2.inventoryID = LLUUID.Random();
-            item2.inventoryDescription = "Item 1, description";
-            item2.inventoryName = "Item 1";
-            item2.invType = _rnd.Next(1, 1000);
-            item2.parentFolderID = child1Child.folderID;
-            _dbPlugin.addInventoryItem(item2);
-
-            List items = _dbPlugin.getInventoryInFolder(child1Child.folderID);
-            Assert.IsNotNull(items);
-            Assert.IsNotEmpty(items);
-
-            bool foundItem1 = false;
-            bool foundItem2 = false;
-
-            foreach (InventoryItemBase i in items)
-            {
-                if (i.inventoryID == item1.inventoryID)
-                {
-                    foundItem1 = true;
-                    Assert.IsTrue(AreItemsIdentical(item1, i));
-                }
-                else if (i.inventoryID == item2.inventoryID)
-                {
-                    foundItem2 = true;
-                    Assert.IsTrue(AreItemsIdentical(item2, i));
-                }
-                else
-                {
-                    Assert.Fail("Unknown inventory item found");
-                }
-            }
-
-            Assert.IsTrue(foundItem1 && foundItem2, "not all items were returned");
-            _dbPlugin.deleteInventoryFolder(_agent_1_id);
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using NUnit.Framework;
+
+using libsecondlife;
+using OpenSim.Framework.Types;
+using OpenSim.Framework.Data;
+using OpenSim.Framework.Data.SQLite;
+using OpenSim.Framework.Data.MySQL;
+using OpenSim.Framework.Console;
+
+namespace OpenSim.Test.Inventory
+{
+    [TestFixture]
+    public class TestInventory
+    {
+        IInventoryData _dbPlugin;
+        LLUUID _agent_1_id;
+        public static LLUUID LibraryFolderRootUuid = new LLUUID("5926de2a-c2d7-4c11-ac4e-74512ffeb6d1");
+
+        Random _rnd = new Random((int)DateTime.Now.Ticks);
+
+        [TestFixtureSetUp]
+        public void SetupInventoryTest()
+        {
+            _agent_1_id = LLUUID.Random();
+
+            MainConsole.Instance = new ConsoleBase("TEST", null);
+
+//            _dbPlugin = new SQLiteInventoryStore();
+            _dbPlugin = new MySQLInventoryData();
+            _dbPlugin.Initialise();
+        }
+
+        [TestFixtureTearDown]
+        public void TeardownInventoryTest()
+        {
+            _dbPlugin.Close();
+        }
+
+        private bool AreFoldersIdentical(InventoryFolderBase a, InventoryFolderBase b)
+        {
+            if (a.agentID != b.agentID) return false;
+            if (a.folderID != b.folderID) return false;
+            if (a.name != b.name) return false;
+            if (a.parentID != b.parentID) return false;
+            if (a.type != b.type) return false;
+            if (a.version != b.version) return false;
+            return true;
+        }
+
+        private bool AreItemsIdentical(InventoryItemBase a, InventoryItemBase b)
+        {
+            if (a.assetID != b.assetID) return false;
+            if (a.assetType != b.assetType) return false;
+            if (a.avatarID != b.avatarID) return false;
+            if (a.creatorsID != b.creatorsID) return false;
+            if (a.inventoryBasePermissions != b.inventoryBasePermissions) return false;
+            if (a.inventoryCurrentPermissions != b.inventoryCurrentPermissions) return false;
+            if (a.inventoryEveryOnePermissions != b.inventoryEveryOnePermissions) return false;
+            if (a.inventoryNextPermissions != b.inventoryNextPermissions) return false;
+            if (a.inventoryID != b.inventoryID) return false;
+            if (a.inventoryDescription != b.inventoryDescription) return false;
+            if (a.inventoryName != b.inventoryName) return false;
+            if (a.invType != b.invType) return false;
+            if (a.parentFolderID != b.parentFolderID) return false;
+            return true;
+        }
+        
+        /// 
+        /// Test that we can insert a root folder
+        /// 
+        [Test]
+        public void T01_SetupRootFolder()
+        {
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsNotNull(f, "Failed to get existing folder");
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            // Test that we only get the root folder, based on it's id, i.e. any other gui will not find the folder
+            f = _dbPlugin.getInventoryFolder(LLUUID.Zero);
+            Assert.IsNull(f, "get folder returned a folder, but shouldn't find one");
+
+            f = _dbPlugin.getInventoryFolder(LLUUID.Random());
+            Assert.IsNull(f, "get folder returned a folder, but shouldn't find one");
+
+            // test that we can delete the folder
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsNull(f, "get folder returned a folder, but it should have been deleted");
+        }
+
+        /// 
+        /// Make sure that all folders reported as root folders are root folders
+        /// 
+        [Test]
+        public void T02_TestRootFolder()
+        {
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            List folders = _dbPlugin.getUserRootFolders(_agent_1_id);
+            Assert.IsNotNull(folders, "Failed to get rootfolders for user");
+
+            bool foundRoot = false;
+            foreach(InventoryFolderBase f in folders) {
+
+                // a root folder has a zero valued LLUUID
+                Assert.AreEqual(f.parentID, LLUUID.Zero, "non root folder returned");
+
+
+                if(f.agentID == root.agentID)
+                {
+                    // we cannot have two different user specific root folders
+                    Assert.IsFalse(foundRoot, "Two different user specific root folders returned");
+
+                    Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+                    foundRoot = false;
+                }
+            }
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+        }
+
+        /// 
+        /// Test of folder hierarchy
+        /// 
+        [Test]
+        public void T03_TestRootFolder()
+        {
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            List folders = _dbPlugin.getInventoryFolders(_agent_1_id);
+            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
+            Assert.IsEmpty(folders, "non empty collection was returned, even though the list of sub-folders should be empty");
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child2 = new InventoryFolderBase();
+            child2.agentID = _agent_1_id;
+            child2.folderID = LLUUID.Random();
+            child2.name = "Child 2";
+            child2.parentID = root.folderID;
+            child2.type = 4;
+            child2.version = 4;
+            _dbPlugin.addInventoryFolder(child2);
+
+            folders = _dbPlugin.getInventoryFolders(_agent_1_id);
+            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
+            Assert.AreEqual(folders.Count, 2, "two children were reported as inserted into the root folder");
+
+            bool foundChild1 = false;
+            bool foundChild2 = false;
+
+            foreach (InventoryFolderBase f in folders)
+            {
+                if (f.folderID == child1.folderID)
+                {
+                    Assert.IsTrue(AreFoldersIdentical(child1, f), "Difference between stored and retrieved folder data");
+                    foundChild1 = true;
+                }
+                else if (f.folderID == child2.folderID)
+                {
+                    Assert.IsTrue(AreFoldersIdentical(child2, f), "Difference between stored and retrieved folder data");
+                    foundChild2 = true;
+                }
+                else
+                {
+                    Assert.Fail("found unknown child folder");
+                }
+            }
+
+            if (foundChild1 == false || foundChild2 == false)
+            {
+                Assert.Fail("one of the two child folders was not returned");
+            }
+
+            _dbPlugin.deleteInventoryFolder(child2.folderID);
+            _dbPlugin.deleteInventoryFolder(child1.folderID);
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+        }
+
+        /// 
+        /// Test of folder hierarchy, and deletion
+        /// 
+        [Test]
+        public void T04_TestRootFolder()
+        {
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child2 = new InventoryFolderBase();
+            child2.agentID = _agent_1_id;
+            child2.folderID = LLUUID.Random();
+            child2.name = "Child 2";
+            child2.parentID = root.folderID;
+            child2.type = 4;
+            child2.version = 4;
+            _dbPlugin.addInventoryFolder(child2);
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+
+            List folders = _dbPlugin.getInventoryFolders(_agent_1_id);
+            Assert.IsNotNull(folders, "null was returned, but an empty list of subfolders were expected");
+            Assert.IsEmpty(folders, "non empty collection was returned, even though the list of sub-folders should be empty");
+
+            InventoryFolderBase f = _dbPlugin.getInventoryFolder(_agent_1_id);
+            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
+
+            f = _dbPlugin.getInventoryFolder(child1.folderID);
+            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
+
+            f = _dbPlugin.getInventoryFolder(child2.folderID);
+            Assert.IsNull(f, "Folder was returned, even though is has been deleted");
+        }
+
+        /// 
+        /// Folder update
+        /// 
+        [Test]
+        public void T05_UpdateFolder()
+        {
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase f = _dbPlugin.getInventoryFolder(_agent_1_id);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.agentID = LLUUID.Random();
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.folderID = LLUUID.Random();
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.name = "Root folder 2";
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.parentID = LLUUID.Random();
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.type = (short)(root.type + 1);
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            root.version = (ushort)(root.version + 1);
+            _dbPlugin.updateInventoryFolder(root);
+            f = _dbPlugin.getInventoryFolder(root.folderID);
+            Assert.IsTrue(AreFoldersIdentical(root, f), "Difference between stored and retrieved folder data");
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+            _dbPlugin.deleteInventoryFolder(root.folderID);
+        }
+
+        /// 
+        /// Test that we can insert a root folder
+        /// 
+        [Test]
+        public void T06_SetupInventoryWithItems()
+        {
+
+            // Setup inventory
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child1Child = new InventoryFolderBase();
+            child1Child.agentID = _agent_1_id;
+            child1Child.folderID = LLUUID.Random();
+            child1Child.name = "Child 1 child";
+            child1Child.parentID = child1.folderID;
+            child1Child.type = 4;
+            child1Child.version = 4;
+            _dbPlugin.addInventoryFolder(child1Child);
+
+            InventoryFolderBase child2 = new InventoryFolderBase();
+            child2.agentID = _agent_1_id;
+            child2.folderID = LLUUID.Random();
+            child2.name = "Child 2";
+            child2.parentID = root.folderID;
+            child2.type = 5;
+            child2.version = 5;
+            _dbPlugin.addInventoryFolder(child2);
+
+            InventoryFolderBase child2Child = new InventoryFolderBase();
+            child2Child.agentID = _agent_1_id;
+            child2Child.folderID = LLUUID.Random();
+            child2Child.name = "Child 2 child";
+            child2Child.parentID = child2.folderID;
+            child2Child.type = 6;
+            child2Child.version = 6;
+            _dbPlugin.addInventoryFolder(child2Child);
+
+            InventoryItemBase rootItem = new InventoryItemBase();
+            rootItem.assetID = LLUUID.Random();
+            rootItem.assetType = _rnd.Next(1, 1000);
+            rootItem.avatarID = _agent_1_id;
+            rootItem.creatorsID = LLUUID.Random();
+            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1,1000000);
+            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryID = LLUUID.Random();
+            rootItem.inventoryDescription = "Root item, Description";
+            rootItem.inventoryName = "Root item";
+            rootItem.invType = _rnd.Next(1, 1000);
+            rootItem.parentFolderID = root.folderID;
+            _dbPlugin.addInventoryItem(rootItem);
+
+            InventoryItemBase child1Item = new InventoryItemBase();
+            child1Item.assetID = LLUUID.Random();
+            child1Item.assetType = _rnd.Next(1, 1000);
+            child1Item.avatarID = _agent_1_id;
+            child1Item.creatorsID = LLUUID.Random();
+            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryID = LLUUID.Random();
+            child1Item.inventoryDescription = "child1 item, Description";
+            child1Item.inventoryName = "child1 item";
+            child1Item.invType = _rnd.Next(1, 1000);
+            child1Item.parentFolderID = child1.folderID;
+            _dbPlugin.addInventoryItem(child1Item);
+
+            InventoryItemBase child1ChildItem = new InventoryItemBase();
+            child1ChildItem.assetID = LLUUID.Random();
+            child1ChildItem.assetType = _rnd.Next(1, 1000);
+            child1ChildItem.avatarID = _agent_1_id;
+            child1ChildItem.creatorsID = LLUUID.Random();
+            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryID = LLUUID.Random();
+            child1ChildItem.inventoryDescription = "child1Child item, Description";
+            child1ChildItem.inventoryName = "child1Child item";
+            child1ChildItem.invType = _rnd.Next(1, 1000);
+            child1ChildItem.parentFolderID = child1Child.folderID;
+            _dbPlugin.addInventoryItem(child1ChildItem);
+
+            InventoryItemBase child2Item = new InventoryItemBase();
+            child2Item.assetID = LLUUID.Random();
+            child2Item.assetType = _rnd.Next(1, 1000);
+            child2Item.avatarID = _agent_1_id;
+            child2Item.creatorsID = LLUUID.Random();
+            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryID = LLUUID.Random();
+            child2Item.inventoryDescription = "child2 item, Description";
+            child2Item.inventoryName = "child2 item";
+            child2Item.invType = _rnd.Next(1, 1000);
+            child2Item.parentFolderID = child2.folderID;
+            _dbPlugin.addInventoryItem(child2Item);
+
+            InventoryItemBase child2ChildItem = new InventoryItemBase();
+            child2ChildItem.assetID = LLUUID.Random();
+            child2ChildItem.assetType = _rnd.Next(1, 1000);
+            child2ChildItem.avatarID = _agent_1_id;
+            child2ChildItem.creatorsID = LLUUID.Random();
+            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryID = LLUUID.Random();
+            child2ChildItem.inventoryDescription = "child2Child item, Description";
+            child2ChildItem.inventoryName = "child2Child item";
+            child2ChildItem.invType = _rnd.Next(1, 1000);
+            child2ChildItem.parentFolderID = child2Child.folderID;
+            _dbPlugin.addInventoryItem(child2ChildItem);
+
+            // test read of items
+
+            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(child1Item, item));
+
+            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(child1ChildItem, item));
+
+            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(child2Item, item));
+
+            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(child2ChildItem, item));
+
+            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
+            _dbPlugin.deleteInventoryItem(child1Item.inventoryID);
+            _dbPlugin.deleteInventoryItem(child1ChildItem.inventoryID);
+            _dbPlugin.deleteInventoryItem(child2Item.inventoryID);
+            _dbPlugin.deleteInventoryItem(child2ChildItem.inventoryID);
+        }
+
+        /// 
+        /// Test that we can insert a root folder
+        /// 
+        [Test]
+        public void T07_DeleteInventoryWithItems()
+        {
+
+            // Setup inventory
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child1Child = new InventoryFolderBase();
+            child1Child.agentID = _agent_1_id;
+            child1Child.folderID = LLUUID.Random();
+            child1Child.name = "Child 1 child";
+            child1Child.parentID = child1.folderID;
+            child1Child.type = 4;
+            child1Child.version = 4;
+            _dbPlugin.addInventoryFolder(child1Child);
+
+            InventoryFolderBase child2 = new InventoryFolderBase();
+            child2.agentID = _agent_1_id;
+            child2.folderID = LLUUID.Random();
+            child2.name = "Child 2";
+            child2.parentID = root.folderID;
+            child2.type = 5;
+            child2.version = 5;
+            _dbPlugin.addInventoryFolder(child2);
+
+            InventoryFolderBase child2Child = new InventoryFolderBase();
+            child2Child.agentID = _agent_1_id;
+            child2Child.folderID = LLUUID.Random();
+            child2Child.name = "Child 2 child";
+            child2Child.parentID = child2.folderID;
+            child2Child.type = 6;
+            child2Child.version = 6;
+            _dbPlugin.addInventoryFolder(child2Child);
+
+            InventoryItemBase rootItem = new InventoryItemBase();
+            rootItem.assetID = LLUUID.Random();
+            rootItem.assetType = _rnd.Next(1, 1000);
+            rootItem.avatarID = _agent_1_id;
+            rootItem.creatorsID = LLUUID.Random();
+            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryID = LLUUID.Random();
+            rootItem.inventoryDescription = "Root item, Description";
+            rootItem.inventoryName = "Root item";
+            rootItem.invType = _rnd.Next(1, 1000);
+            rootItem.parentFolderID = root.folderID;
+            _dbPlugin.addInventoryItem(rootItem);
+
+            InventoryItemBase child1Item = new InventoryItemBase();
+            child1Item.assetID = LLUUID.Random();
+            child1Item.assetType = _rnd.Next(1, 1000);
+            child1Item.avatarID = _agent_1_id;
+            child1Item.creatorsID = LLUUID.Random();
+            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryID = LLUUID.Random();
+            child1Item.inventoryDescription = "child1 item, Description";
+            child1Item.inventoryName = "child1 item";
+            child1Item.invType = _rnd.Next(1, 1000);
+            child1Item.parentFolderID = child1.folderID;
+            _dbPlugin.addInventoryItem(child1Item);
+
+            InventoryItemBase child1ChildItem = new InventoryItemBase();
+            child1ChildItem.assetID = LLUUID.Random();
+            child1ChildItem.assetType = _rnd.Next(1, 1000);
+            child1ChildItem.avatarID = _agent_1_id;
+            child1ChildItem.creatorsID = LLUUID.Random();
+            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryID = LLUUID.Random();
+            child1ChildItem.inventoryDescription = "child1Child item, Description";
+            child1ChildItem.inventoryName = "child1Child item";
+            child1ChildItem.invType = _rnd.Next(1, 1000);
+            child1ChildItem.parentFolderID = child1Child.folderID;
+            _dbPlugin.addInventoryItem(child1ChildItem);
+
+            InventoryItemBase child2Item = new InventoryItemBase();
+            child2Item.assetID = LLUUID.Random();
+            child2Item.assetType = _rnd.Next(1, 1000);
+            child2Item.avatarID = _agent_1_id;
+            child2Item.creatorsID = LLUUID.Random();
+            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryID = LLUUID.Random();
+            child2Item.inventoryDescription = "child2 item, Description";
+            child2Item.inventoryName = "child2 item";
+            child2Item.invType = _rnd.Next(1, 1000);
+            child2Item.parentFolderID = child2.folderID;
+            _dbPlugin.addInventoryItem(child2Item);
+
+            InventoryItemBase child2ChildItem = new InventoryItemBase();
+            child2ChildItem.assetID = LLUUID.Random();
+            child2ChildItem.assetType = _rnd.Next(1, 1000);
+            child2ChildItem.avatarID = _agent_1_id;
+            child2ChildItem.creatorsID = LLUUID.Random();
+            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryID = LLUUID.Random();
+            child2ChildItem.inventoryDescription = "child2Child item, Description";
+            child2ChildItem.inventoryName = "child2Child item";
+            child2ChildItem.invType = _rnd.Next(1, 1000);
+            child2ChildItem.parentFolderID = child2Child.folderID;
+            _dbPlugin.addInventoryItem(child2ChildItem);
+
+            // test deletetion of items
+
+            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
+            _dbPlugin.deleteInventoryItem(child1Item.inventoryID);
+            _dbPlugin.deleteInventoryItem(child1ChildItem.inventoryID);
+            _dbPlugin.deleteInventoryItem(child2Item.inventoryID);
+            _dbPlugin.deleteInventoryItem(child2ChildItem.inventoryID);
+
+            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
+            Assert.IsNull(item);
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+        }
+
+
+        /// 
+        /// Test that we can insert a root folder
+        /// 
+        [Test]
+        public void T08_DeleteInventoryWithItems()
+        {
+
+            // Setup inventory
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child1Child = new InventoryFolderBase();
+            child1Child.agentID = _agent_1_id;
+            child1Child.folderID = LLUUID.Random();
+            child1Child.name = "Child 1 child";
+            child1Child.parentID = child1.folderID;
+            child1Child.type = 4;
+            child1Child.version = 4;
+            _dbPlugin.addInventoryFolder(child1Child);
+
+            InventoryFolderBase child2 = new InventoryFolderBase();
+            child2.agentID = _agent_1_id;
+            child2.folderID = LLUUID.Random();
+            child2.name = "Child 2";
+            child2.parentID = root.folderID;
+            child2.type = 5;
+            child2.version = 5;
+            _dbPlugin.addInventoryFolder(child2);
+
+            InventoryFolderBase child2Child = new InventoryFolderBase();
+            child2Child.agentID = _agent_1_id;
+            child2Child.folderID = LLUUID.Random();
+            child2Child.name = "Child 2 child";
+            child2Child.parentID = child2.folderID;
+            child2Child.type = 6;
+            child2Child.version = 6;
+            _dbPlugin.addInventoryFolder(child2Child);
+
+            InventoryItemBase rootItem = new InventoryItemBase();
+            rootItem.assetID = LLUUID.Random();
+            rootItem.assetType = _rnd.Next(1, 1000);
+            rootItem.avatarID = _agent_1_id;
+            rootItem.creatorsID = LLUUID.Random();
+            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryID = LLUUID.Random();
+            rootItem.inventoryDescription = "Root item, Description";
+            rootItem.inventoryName = "Root item";
+            rootItem.invType = _rnd.Next(1, 1000);
+            rootItem.parentFolderID = root.folderID;
+            _dbPlugin.addInventoryItem(rootItem);
+
+            InventoryItemBase child1Item = new InventoryItemBase();
+            child1Item.assetID = LLUUID.Random();
+            child1Item.assetType = _rnd.Next(1, 1000);
+            child1Item.avatarID = _agent_1_id;
+            child1Item.creatorsID = LLUUID.Random();
+            child1Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1Item.inventoryID = LLUUID.Random();
+            child1Item.inventoryDescription = "child1 item, Description";
+            child1Item.inventoryName = "child1 item";
+            child1Item.invType = _rnd.Next(1, 1000);
+            child1Item.parentFolderID = child1.folderID;
+            _dbPlugin.addInventoryItem(child1Item);
+
+            InventoryItemBase child1ChildItem = new InventoryItemBase();
+            child1ChildItem.assetID = LLUUID.Random();
+            child1ChildItem.assetType = _rnd.Next(1, 1000);
+            child1ChildItem.avatarID = _agent_1_id;
+            child1ChildItem.creatorsID = LLUUID.Random();
+            child1ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child1ChildItem.inventoryID = LLUUID.Random();
+            child1ChildItem.inventoryDescription = "child1Child item, Description";
+            child1ChildItem.inventoryName = "child1Child item";
+            child1ChildItem.invType = _rnd.Next(1, 1000);
+            child1ChildItem.parentFolderID = child1Child.folderID;
+            _dbPlugin.addInventoryItem(child1ChildItem);
+
+            InventoryItemBase child2Item = new InventoryItemBase();
+            child2Item.assetID = LLUUID.Random();
+            child2Item.assetType = _rnd.Next(1, 1000);
+            child2Item.avatarID = _agent_1_id;
+            child2Item.creatorsID = LLUUID.Random();
+            child2Item.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2Item.inventoryID = LLUUID.Random();
+            child2Item.inventoryDescription = "child2 item, Description";
+            child2Item.inventoryName = "child2 item";
+            child2Item.invType = _rnd.Next(1, 1000);
+            child2Item.parentFolderID = child2.folderID;
+            _dbPlugin.addInventoryItem(child2Item);
+
+            InventoryItemBase child2ChildItem = new InventoryItemBase();
+            child2ChildItem.assetID = LLUUID.Random();
+            child2ChildItem.assetType = _rnd.Next(1, 1000);
+            child2ChildItem.avatarID = _agent_1_id;
+            child2ChildItem.creatorsID = LLUUID.Random();
+            child2ChildItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            child2ChildItem.inventoryID = LLUUID.Random();
+            child2ChildItem.inventoryDescription = "child2Child item, Description";
+            child2ChildItem.inventoryName = "child2Child item";
+            child2ChildItem.invType = _rnd.Next(1, 1000);
+            child2ChildItem.parentFolderID = child2Child.folderID;
+            _dbPlugin.addInventoryItem(child2ChildItem);
+
+            // test deletetion of items
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+
+            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child1Item.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child1ChildItem.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child2Item.inventoryID);
+            Assert.IsNull(item);
+
+            item = _dbPlugin.getInventoryItem(child2ChildItem.inventoryID);
+            Assert.IsNull(item);
+
+        }
+
+        /// 
+        /// Test that we can update items
+        /// 
+        [Test]
+        public void T09_UpdateItem()
+        {
+
+            // Setup inventory
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryItemBase rootItem = new InventoryItemBase();
+            rootItem.assetID = LLUUID.Random();
+            rootItem.assetType = _rnd.Next(1, 1000);
+            rootItem.avatarID = _agent_1_id;
+            rootItem.creatorsID = LLUUID.Random();
+            rootItem.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            rootItem.inventoryID = LLUUID.Random();
+            rootItem.inventoryDescription = "Root item, Description";
+            rootItem.inventoryName = "Root item";
+            rootItem.invType = _rnd.Next(1, 1000);
+            rootItem.parentFolderID = root.folderID;
+            _dbPlugin.addInventoryItem(rootItem);
+
+            rootItem.assetID = LLUUID.Random();
+            _dbPlugin.updateInventoryItem(rootItem);
+            InventoryItemBase item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.assetType = rootItem.assetType+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.avatarID = LLUUID.Random();
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.creatorsID = LLUUID.Random();
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryBasePermissions = rootItem.inventoryBasePermissions+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryCurrentPermissions = rootItem.inventoryCurrentPermissions+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryDescription = "New description";
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryEveryOnePermissions = rootItem.inventoryEveryOnePermissions+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryName = "New name";
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.inventoryNextPermissions = rootItem.inventoryNextPermissions+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.invType = rootItem.invType+1;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            rootItem.parentFolderID = LLUUID.Zero;
+            _dbPlugin.updateInventoryItem(rootItem);
+            item = _dbPlugin.getInventoryItem(rootItem.inventoryID);
+            Assert.IsTrue(AreItemsIdentical(rootItem, item));
+
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+            _dbPlugin.deleteInventoryItem(rootItem.inventoryID);
+        }
+
+
+        /// 
+        /// Test that we can insert a root folder
+        /// 
+        [Test]
+        public void T10_GetListOfItemsInFolder()
+        {
+
+            // Setup inventory
+            InventoryFolderBase root = new InventoryFolderBase();
+            root.agentID = _agent_1_id;
+            root.folderID = _agent_1_id;
+            root.name = "Root folder";
+            root.parentID = LLUUID.Zero;
+            root.type = 2;
+            root.version = 2;
+            _dbPlugin.addInventoryFolder(root);
+
+            InventoryFolderBase child1 = new InventoryFolderBase();
+            child1.agentID = _agent_1_id;
+            child1.folderID = LLUUID.Random();
+            child1.name = "Child 1";
+            child1.parentID = root.folderID;
+            child1.type = 3;
+            child1.version = 3;
+            _dbPlugin.addInventoryFolder(child1);
+
+            InventoryFolderBase child1Child = new InventoryFolderBase();
+            child1Child.agentID = _agent_1_id;
+            child1Child.folderID = LLUUID.Random();
+            child1Child.name = "Child 1 child";
+            child1Child.parentID = child1.folderID;
+            child1Child.type = 4;
+            child1Child.version = 4;
+            _dbPlugin.addInventoryFolder(child1Child);
+
+
+            InventoryItemBase item1 = new InventoryItemBase();
+            item1.assetID = LLUUID.Random();
+            item1.assetType = _rnd.Next(1, 1000);
+            item1.avatarID = _agent_1_id;
+            item1.creatorsID = LLUUID.Random();
+            item1.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            item1.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            item1.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            item1.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            item1.inventoryID = LLUUID.Random();
+            item1.inventoryDescription = "Item 1, description";
+            item1.inventoryName = "Item 1";
+            item1.invType = _rnd.Next(1, 1000);
+            item1.parentFolderID = child1Child.folderID;
+            _dbPlugin.addInventoryItem(item1);
+
+            InventoryItemBase item2 = new InventoryItemBase();
+            item2.assetID = LLUUID.Random();
+            item2.assetType = _rnd.Next(1, 1000);
+            item2.avatarID = _agent_1_id;
+            item2.creatorsID = LLUUID.Random();
+            item2.inventoryBasePermissions = (uint)_rnd.Next(1, 1000000);
+            item2.inventoryCurrentPermissions = (uint)_rnd.Next(1, 1000000);
+            item2.inventoryEveryOnePermissions = (uint)_rnd.Next(1, 1000000);
+            item2.inventoryNextPermissions = (uint)_rnd.Next(1, 1000000);
+            item2.inventoryID = LLUUID.Random();
+            item2.inventoryDescription = "Item 1, description";
+            item2.inventoryName = "Item 1";
+            item2.invType = _rnd.Next(1, 1000);
+            item2.parentFolderID = child1Child.folderID;
+            _dbPlugin.addInventoryItem(item2);
+
+            List items = _dbPlugin.getInventoryInFolder(child1Child.folderID);
+            Assert.IsNotNull(items);
+            Assert.IsNotEmpty(items);
+
+            bool foundItem1 = false;
+            bool foundItem2 = false;
+
+            foreach (InventoryItemBase i in items)
+            {
+                if (i.inventoryID == item1.inventoryID)
+                {
+                    foundItem1 = true;
+                    Assert.IsTrue(AreItemsIdentical(item1, i));
+                }
+                else if (i.inventoryID == item2.inventoryID)
+                {
+                    foundItem2 = true;
+                    Assert.IsTrue(AreItemsIdentical(item2, i));
+                }
+                else
+                {
+                    Assert.Fail("Unknown inventory item found");
+                }
+            }
+
+            Assert.IsTrue(foundItem1 && foundItem2, "not all items were returned");
+            _dbPlugin.deleteInventoryFolder(_agent_1_id);
+        }
+    }
+}
diff --git a/OpenSim/Tests/OpenSim/Framework/UtilTest.cs b/OpenSim/Tests/OpenSim/Framework/UtilTest.cs
new file mode 100644
index 0000000000..78acc50689
--- /dev/null
+++ b/OpenSim/Tests/OpenSim/Framework/UtilTest.cs
@@ -0,0 +1,143 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using libsecondlife;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+using OpenSim.Tests.Common;
+
+namespace OpenSim.Framework.Tests
+{
+    [TestFixture]
+    public class UtilTests
+    {
+        [Test]
+        public void VectorOperationTests()
+        {
+            LLVector3 v1, v2;
+            double expectedDistance;
+            double expectedMagnitude;
+            double lowPrecisionTolerance = 0.001;
+
+            //Lets test a simple case of <0,0,0> and <5,5,5>
+            {
+                v1 = new LLVector3(0, 0, 0);
+                v2 = new LLVector3(5, 5, 5);
+                expectedDistance = 8.66;
+                Assert.That(Util.GetDistanceTo(v1, v2),
+                            new DoubleToleranceConstraint(expectedDistance, lowPrecisionTolerance),
+                            "Calculated distance between two vectors was not within tolerances.");
+
+                expectedMagnitude = 0;
+                Assert.That(Util.GetMagnitude(v1), Is.EqualTo(0), "Magnitude of null vector was not zero.");
+
+                expectedMagnitude = 8.66;
+                Assert.That(Util.GetMagnitude(v2),
+                            new DoubleToleranceConstraint(expectedMagnitude, lowPrecisionTolerance),
+                            "Magnitude of vector was incorrect.");
+
+                TestDelegate d = delegate() { Util.GetNormalizedVector(v1); };
+                bool causesArgumentException = TestHelper.AssertThisDelegateCausesArgumentException(d);
+                Assert.That(causesArgumentException, Is.True,
+                            "Getting magnitude of null vector did not cause argument exception.");
+
+                LLVector3 expectedNormalizedVector = new LLVector3(.577f, .577f, .577f);
+                double expectedNormalizedMagnitude = 1;
+                LLVector3 normalizedVector = Util.GetNormalizedVector(v2);
+                Assert.That(normalizedVector,
+                            new VectorToleranceConstraint(expectedNormalizedVector, lowPrecisionTolerance),
+                            "Normalized vector generated from vector was not what was expected.");
+                Assert.That(Util.GetMagnitude(normalizedVector),
+                            new DoubleToleranceConstraint(expectedNormalizedMagnitude, lowPrecisionTolerance),
+                            "Normalized vector generated from vector does not have magnitude of 1.");
+            }
+
+            //Lets test a simple case of <0,0,0> and <0,0,0>
+            {
+                v1 = new LLVector3(0, 0, 0);
+                v2 = new LLVector3(0, 0, 0);
+                expectedDistance = 0;
+                Assert.That(Util.GetDistanceTo(v1, v2),
+                            new DoubleToleranceConstraint(expectedDistance, lowPrecisionTolerance),
+                            "Calculated distance between two vectors was not within tolerances.");
+
+                expectedMagnitude = 0;
+                Assert.That(Util.GetMagnitude(v1), Is.EqualTo(0), "Magnitude of null vector was not zero.");
+
+                expectedMagnitude = 0;
+                Assert.That(Util.GetMagnitude(v2),
+                            new DoubleToleranceConstraint(expectedMagnitude, lowPrecisionTolerance),
+                            "Magnitude of vector was incorrect.");
+
+                TestDelegate d = delegate() { Util.GetNormalizedVector(v1); };
+                bool causesArgumentException = TestHelper.AssertThisDelegateCausesArgumentException(d);
+                Assert.That(causesArgumentException, Is.True,
+                            "Getting magnitude of null vector did not cause argument exception.");
+
+                d = delegate() { Util.GetNormalizedVector(v2); };
+                causesArgumentException = TestHelper.AssertThisDelegateCausesArgumentException(d);
+                Assert.That(causesArgumentException, Is.True,
+                            "Getting magnitude of null vector did not cause argument exception.");
+            }
+
+            //Lets test a simple case of <0,0,0> and <-5,-5,-5>
+            {
+                v1 = new LLVector3(0, 0, 0);
+                v2 = new LLVector3(-5, -5, -5);
+                expectedDistance = 8.66;
+                Assert.That(Util.GetDistanceTo(v1, v2),
+                            new DoubleToleranceConstraint(expectedDistance, lowPrecisionTolerance),
+                            "Calculated distance between two vectors was not within tolerances.");
+
+                expectedMagnitude = 0;
+                Assert.That(Util.GetMagnitude(v1), Is.EqualTo(0), "Magnitude of null vector was not zero.");
+
+                expectedMagnitude = 8.66;
+                Assert.That(Util.GetMagnitude(v2),
+                            new DoubleToleranceConstraint(expectedMagnitude, lowPrecisionTolerance),
+                            "Magnitude of vector was incorrect.");
+
+                TestDelegate d = delegate() { Util.GetNormalizedVector(v1); };
+                bool causesArgumentException = TestHelper.AssertThisDelegateCausesArgumentException(d);
+                Assert.That(causesArgumentException, Is.True,
+                            "Getting magnitude of null vector did not cause argument exception.");
+
+                LLVector3 expectedNormalizedVector = new LLVector3(-.577f, -.577f, -.577f);
+                double expectedNormalizedMagnitude = 1;
+                LLVector3 normalizedVector = Util.GetNormalizedVector(v2);
+                Assert.That(normalizedVector,
+                            new VectorToleranceConstraint(expectedNormalizedVector, lowPrecisionTolerance),
+                            "Normalized vector generated from vector was not what was expected.");
+                Assert.That(Util.GetMagnitude(normalizedVector),
+                            new DoubleToleranceConstraint(expectedNormalizedMagnitude, lowPrecisionTolerance),
+                            "Normalized vector generated from vector does not have magnitude of 1.");
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tests/UserServer/Stress/UserServerStressTest.cs b/OpenSim/Tests/UserServer/Stress/UserServerStressTest.cs
new file mode 100644
index 0000000000..a523d8369b
--- /dev/null
+++ b/OpenSim/Tests/UserServer/Stress/UserServerStressTest.cs
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+
+namespace OpenSim.Tests.UserServer.Stress
+{
+    /// 
+    /// In the future this class will programatically stress test the user server
+    /// 
+    public class UserServerStressTest
+    {
+        public static void Main(string[] args)
+        {     
+            log4net.Config.XmlConfigurator.Configure();
+
+            System.Console.WriteLine("Aborting - not yet functional");
+        }
+    }
+}
diff --git a/OpenSim/Tools/Export/OpenSimExport.cs b/OpenSim/Tools/Export/OpenSimExport.cs
index a08eea6fd3..8eebe35cb2 100644
--- a/OpenSim/Tools/Export/OpenSimExport.cs
+++ b/OpenSim/Tools/Export/OpenSimExport.cs
@@ -1,116 +1,110 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.IO;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Framework.Console;
-using OpenSim.Region.Environment;
-using OpenSim.Region.Environment.Scenes;
-
-namespace OpenSim.Tools.Export
-{
-    public class OpenSimExport
-    {
-        public IniConfigSource config;
-        public StorageManager sman;
-
-        public OpenSimExport(IniConfigSource config)
-        {
-            this.config = config;
-            IConfig startup = config.Configs["Startup"];
-            // AddinManager.Initialize(".");
-            // AddinManager.Registry.Update(null);
-
-            // TODO: this really sucks, but given the way we do
-            // logging in OpenSim, we need to establish a log up front
-
-            MainLog.Instance = CreateLog();
-
-            sman = new StorageManager(
-                startup.GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll"),
-                startup.GetString("storage_connection_string", "")
-                );
-        }
-
-        public static void Main(string[] args)
-        {
-            OpenSimExport export = new OpenSimExport(InitConfig(args));
-            RegionInfo reg = new RegionInfo("Sara Jane", "Regions/1000-1000.xml",false);
-
-            Console.WriteLine("This application does nothing useful yet: " + reg.RegionID);
-            foreach (SceneObjectGroup group in export.sman.DataStore.LoadObjects(reg.RegionID))
-            {
-                Console.WriteLine("{0} -> {1}", reg.RegionID, group.UUID);
-            }
-        }
-
-        protected LogBase CreateLog()
-        {
-            if (!Directory.Exists(Util.logDir()))
-            {
-                Directory.CreateDirectory(Util.logDir());
-            }
-
-            return new LogBase((Path.Combine(Util.logDir(), "export.log")), "Export", null, true);
-        }
-
-
-        private static IniConfigSource InitConfig(string[] args)
-        {
-            Console.WriteLine("Good");
-            ArgvConfigSource configSource = new ArgvConfigSource(args);
-            configSource.AddSwitch("Startup", "inifile");
-
-            IConfig startupConfig = configSource.Configs["Startup"];
-            string iniFilePath = startupConfig.GetString("inifile", "OpenSim.ini");
-            Console.WriteLine(iniFilePath);
-            IniConfigSource config = new IniConfigSource();
-            //check for .INI file (either default or name passed in command line)
-            if (! File.Exists(iniFilePath))
-            {
-                iniFilePath = Path.Combine(Util.configDir(), iniFilePath);
-            }
-
-            if (File.Exists(iniFilePath))
-            {
-                config.Merge(new IniConfigSource(iniFilePath));
-                config.Merge(configSource);
-            }
-            else
-            {
-                // no default config files, so set default values, and save it
-                Console.WriteLine("We didn't find a config!");
-                config.Merge(OpenSimMain.DefaultConfig());
-                config.Merge(configSource);
-            }
-
-            return config;
-        }
-    }
-}
\ No newline at end of file
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+using System;
+using System.IO;
+using Nini.Config;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+using OpenSim.Region.Environment;
+using OpenSim.Region.Environment.Scenes;
+
+namespace OpenSim.Tools.Export
+{
+    public class OpenSimExport
+    {
+        public IniConfigSource config;
+        public StorageManager sman;
+
+        public OpenSimExport(IniConfigSource config)
+        {
+            this.config = config;
+            IConfig startup = config.Configs["Startup"];
+            // AddinManager.Initialize(".");
+            // AddinManager.Registry.Update(null);
+
+            MainConsole.Instance = CreateConsole();
+
+            sman = new StorageManager(
+                startup.GetString("storage_plugin", "OpenSim.DataStore.NullStorage.dll"),
+                startup.GetString("storage_connection_string", String.Empty),
+                false
+                );
+        }
+
+        public static void Main(string[] args)
+        {
+            log4net.Config.XmlConfigurator.Configure();
+
+            OpenSimExport export = new OpenSimExport(InitConfig(args));
+            RegionInfo reg = new RegionInfo("Sara Jane", "Regions/1000-1000.xml",false);
+
+            Console.WriteLine("This application does nothing useful yet: " + reg.RegionID);
+            foreach (SceneObjectGroup group in export.sman.DataStore.LoadObjects(reg.RegionID))
+            {
+                Console.WriteLine("{0} -> {1}", reg.RegionID, group.UUID);
+            }
+        }
+
+        protected ConsoleBase CreateConsole()
+        {
+            return new ConsoleBase("Export", null);
+        }
+
+        private static IniConfigSource InitConfig(string[] args)
+        {
+            Console.WriteLine("Good");
+            ArgvConfigSource configSource = new ArgvConfigSource(args);
+            configSource.AddSwitch("Startup", "inifile");
+
+            IConfig startupConfig = configSource.Configs["Startup"];
+            string iniFilePath = startupConfig.GetString("inifile", "OpenSim.ini");
+            Console.WriteLine(iniFilePath);
+            IniConfigSource config = new IniConfigSource();
+            //check for .INI file (either default or name passed in command line)
+            if (! File.Exists(iniFilePath))
+            {
+                iniFilePath = Path.Combine(Util.configDir(), iniFilePath);
+            }
+
+            if (File.Exists(iniFilePath))
+            {
+                config.Merge(new IniConfigSource(iniFilePath));
+                config.Merge(configSource);
+            }
+            else
+            {
+                // no default config files, so set default values, and save it
+                Console.WriteLine("We didn't find a config!");
+                config.Merge(OpenSimMain.DefaultConfig());
+                config.Merge(configSource);
+            }
+
+            return config;
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.Designer.cs b/OpenSim/Tools/LaunchSLClient/Form1.Designer.cs
similarity index 96%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.Designer.cs
rename to OpenSim/Tools/LaunchSLClient/Form1.Designer.cs
index b04536cf4e..b841f0b03e 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.Designer.cs
+++ b/OpenSim/Tools/LaunchSLClient/Form1.Designer.cs
@@ -1,112 +1,108 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-namespace LaunchSLClient
-{
-    partial class Form1
-    {
-        /// 
-        /// Required designer variable.
-        /// 
-        private System.ComponentModel.IContainer components = null;
-
-        /// 
-        /// Clean up any resources being used.
-        /// 
-        /// true if managed resources should be disposed; otherwise, false.
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// 
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// 
-        private void InitializeComponent()
-        {
-            this.comboBox1 = new System.Windows.Forms.ComboBox();
-            this.textBox1 = new System.Windows.Forms.TextBox();
-            this.SuspendLayout();
-            // 
-            // comboBox1
-            // 
-            this.comboBox1.FormattingEnabled = true;
-            this.comboBox1.Items.AddRange(new object[] {
-            "Local Sandbox",
-            "Local Grid Server",
-            "DeepGrid - www.deepgrid.com",
-            "OSGrid - www.osgrid.org",
-            "Linden Labs - www.secondlife.com"});
-            this.comboBox1.Location = new System.Drawing.Point(37, 83);
-            this.comboBox1.Name = "comboBox1";
-            this.comboBox1.Size = new System.Drawing.Size(348, 21);
-            this.comboBox1.TabIndex = 0;
-            this.comboBox1.Text = "Choose from list";
-            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
-            // 
-            // textBox1
-            // 
-            this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
-            this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.textBox1.Location = new System.Drawing.Point(37, 32);
-            this.textBox1.Name = "textBox1";
-            this.textBox1.ReadOnly = true;
-            this.textBox1.Size = new System.Drawing.Size(292, 19);
-            this.textBox1.TabIndex = 1;
-            this.textBox1.Text = "Choose from one of the following:";
-            // 
-            // Form1
-            // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(501, 339);
-            this.Controls.Add(this.textBox1);
-            this.Controls.Add(this.comboBox1);
-            this.Name = "Form1";
-            this.Text = "OpenSim Client Launcher";
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.ComboBox comboBox1;
-        private System.Windows.Forms.TextBox textBox1;
-
-    }
-}
-
-
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+namespace LaunchSLClient
+{
+    partial class Form1
+    {
+        /// 
+        /// Required designer variable.
+        /// 
+        private System.ComponentModel.IContainer components = null;
+
+        /// 
+        /// Clean up any resources being used.
+        /// 
+        /// true if managed resources should be disposed; otherwise, false.
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// 
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// 
+        private void InitializeComponent()
+        {
+            this.comboBox1 = new System.Windows.Forms.ComboBox();
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.SuspendLayout();
+            // 
+            // comboBox1
+            // 
+            this.comboBox1.FormattingEnabled = true;
+            this.comboBox1.Items.AddRange(new object[] {
+            "Local Sandbox",
+            "Local Grid Server",
+            "DeepGrid - www.deepgrid.com",
+            "OSGrid - www.osgrid.org",
+            "Linden Labs - www.secondlife.com"});
+            this.comboBox1.Location = new System.Drawing.Point(37, 83);
+            this.comboBox1.Name = "comboBox1";
+            this.comboBox1.Size = new System.Drawing.Size(348, 21);
+            this.comboBox1.TabIndex = 0;
+            this.comboBox1.Text = "Choose from list";
+            this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged);
+            // 
+            // textBox1
+            // 
+            this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+            this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.textBox1.Location = new System.Drawing.Point(37, 32);
+            this.textBox1.Name = "textBox1";
+            this.textBox1.ReadOnly = true;
+            this.textBox1.Size = new System.Drawing.Size(292, 19);
+            this.textBox1.TabIndex = 1;
+            this.textBox1.Text = "Choose from one of the following:";
+            // 
+            // Form1
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(501, 339);
+            this.Controls.Add(this.textBox1);
+            this.Controls.Add(this.comboBox1);
+            this.Name = "Form1";
+            this.Text = "OpenSim Client Launcher";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+        }
+
+        #endregion
+
+        private System.Windows.Forms.ComboBox comboBox1;
+        private System.Windows.Forms.TextBox textBox1;
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.cs b/OpenSim/Tools/LaunchSLClient/Form1.cs
similarity index 55%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.cs
rename to OpenSim/Tools/LaunchSLClient/Form1.cs
index 6842768394..183a104b23 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.cs
+++ b/OpenSim/Tools/LaunchSLClient/Form1.cs
@@ -1,204 +1,211 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.IO;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Diagnostics;
-using System.Drawing;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Windows.Forms;
-using Microsoft.Win32;
-
-namespace LaunchSLClient
-{
-    public partial class Form1 : Form
-    {
-        string gridUrl = "";
-        string sandboxUrl = "";
-        string deepGridUrl = "http://user.deepgrid.com:8002/";
-        string osGridUrl = "http://www.osgrid.org:8002/";
-        string runUrl = "";
-        string runLine = "";
-        Object exeFlags;
-        Object exePath;
-
-
-        public Form1()
-        {
-            InitializeComponent();
-            ArrayList menuItems=new ArrayList();
-            menuItems.Add("Please select one:");
-            string sandboxHostName = "";
-            string sandboxPort = "";
-            Object simPath = null;
-            FileInfo defaultFile;
-            StreamReader stream;
-
-
-            // get executable path from registry
-            //
-            RegistryKey regKey;
-            RegistryKey exeKey;
-            regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Linden Research, Inc.\SecondLife");
-            if (regKey == null)
-            {
-                regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Linden Research, Inc.\SecondLife");
-                if (regKey == null)
-                {
-                    throw new LauncherException("Can't find Second Life. Are you sure it is installed?", "LauncherException.Form1");
-                }
-            }
-            Object exe = regKey.GetValue("Exe");
-            exeFlags = regKey.GetValue("Flags");
-            exePath = regKey.GetValue("");
-            runLine = exePath.ToString() + "\\" + exe.ToString();
-            Registry.LocalMachine.Flush();
-            Registry.LocalMachine.Close();
-
-            // find opensim directory
-            //
-            exeKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\OpenSim\OpenSim");
-            if (exeKey != null)
-            {
-
-                simPath = exeKey.GetValue("Path");
-
-                // build sandbox URL from Regions\default.xml
-                // this is highly dependant on a standard default.xml
-                //
-                Directory.SetCurrentDirectory(simPath.ToString());  //this should be set to wherever we decide to put the binaries
-                string text;
-                Regex myRegex = new Regex(".*internal_ip_port=\\\"(?.*?)\\\".*external_host_name=\\\"(?.*?)\\\".*");
-                if (File.Exists(@"Regions\default.xml"))
-                {
-                    defaultFile = new FileInfo(@"Regions\default.xml");
-                    stream = defaultFile.OpenText();
-                    do
-                    {
-                        text = stream.ReadLine();
-                        if (text == null)
-                        {
-                            break;
-                        }
-                        MatchCollection theMatches = myRegex.Matches(text);
-                        foreach (Match theMatch in theMatches)
-                        {
-                            if (theMatch.Length != 0)
-                            {
-                                sandboxHostName = theMatch.Groups["name"].ToString();
-                                sandboxPort = theMatch.Groups["port"].ToString();
-                            }
-                        }
-                    } while (text != null);
-                    stream.Close();
-                    sandboxUrl = "http:\\" + sandboxHostName + ":" + sandboxPort;
-                    menuItems.Add("Local Sandbox");
-                }
-                else
-                {
-                    MessageBox.Show("No OpenSim config files found. Please run OpenSim and finish configuration to run a local sim. Showing public grids only", "No OpenSim");
-                }
-
-
-                //build local grid URL from network_servers_information.xml
-                // this is highly dependant on a standard default.xml
-                //
-                myRegex = new Regex(".*UserServerURL=\\\"(?.*?)\\\".*");
-                if (File.Exists(@"network_servers_information.xml"))
-                {
-                    defaultFile = new FileInfo(@"network_servers_information.xml");
-
-
-                    stream = defaultFile.OpenText();
-                    do
-                    {
-                        text = stream.ReadLine();
-                        if (text == null)
-                        {
-                            break;
-                        }
-                        MatchCollection theMatches = myRegex.Matches(text);
-                        foreach (Match theMatch in theMatches)
-                        {
-                            if (theMatch.Length != 0)
-                            {
-                                gridUrl = theMatch.Groups["url"].ToString();
-                            }
-                        }
-                    } while (text != null);
-                    stream.Close();
-                    if (gridUrl != null)
-                    {
-                        menuItems.Add("Local Grid Server");
-                    }
-                }
-            }
-            else
-            {
-                MessageBox.Show("No OpenSim installed. Showing public grids only", "No OpenSim");
-            }
-
-            menuItems.Add("OSGrid - www.osgrid.org");
-            menuItems.Add("DeepGrid - www.deepgrid.com");
-            menuItems.Add("OpenlifeGrid - www.openlifegrid.com");
-            
-            // We don't have a proper login uri for SL grid
-          //  menuItems.Add("Linden Labs - www.secondlife.com");
-            comboBox1.DataSource=menuItems;
-        }
-
-        private void radioButton1_CheckedChanged(object sender, EventArgs e)
-        {
-
-        }
-
-        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
-        {
-            if (comboBox1.Text == "Please select one:") { return; }
-            if (comboBox1.Text == "Local Sandbox") { runUrl=" -loginuri " + sandboxUrl;}
-            if (comboBox1.Text == "Local Grid Server") { runUrl = " -loginuri " + gridUrl; }
-            if (comboBox1.Text == "DeepGrid - www.deepgrid.com") { runUrl = " -loginuri " + deepGridUrl; }
-            if (comboBox1.Text == "OSGrid - www.osgrid.org") { runUrl = " -loginuri " + osGridUrl; }
-            if (comboBox1.Text == "Linden Labs - www.secondlife.com") { runUrl = ""; }
-            if (comboBox1.Text == "OpenlifeGrid - www.openlifegrid.com") { runUrl = " -loginuri http://logingrid.net:8002"; }
-
-            System.Diagnostics.Process proc = new System.Diagnostics.Process();
-            proc.StartInfo.FileName = runLine;
-            proc.StartInfo.Arguments = exeFlags.ToString() + " " + runUrl;
-            proc.StartInfo.UseShellExecute = false;
-            proc.StartInfo.RedirectStandardOutput = false;
-            proc.StartInfo.WorkingDirectory = exePath.ToString();
-            proc.Start();
-            proc.WaitForExit();
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.IO;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Diagnostics;
+using System.Drawing;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Windows.Forms;
+using Microsoft.Win32;
+
+namespace LaunchSLClient
+{
+    public partial class Form1 : Form
+    {
+        const string deepGridUrl = "http://user.deepgrid.com:8002/";
+        const string osGridUrl = "http://www.osgrid.org:8002/";
+        const string openLifeGridUrl = "http://logingrid.net:8002";
+
+        string gridUrl = "";
+        string sandboxUrl = "";
+        string runUrl = "";
+        string runLine = "";
+        string exeFlags = "";
+        string exePath = "";
+
+        private void addLocalSandbox(ref ArrayList menuItems)
+        {
+            // build sandbox URL from Regions\default.xml
+            // this is highly dependant on a standard default.xml
+            if (File.Exists(@"Regions\default.xml"))
+            {
+                string sandboxHostName = "";
+                string sandboxPort = "";
+                string text;
+                
+                Regex myRegex = new Regex(".*internal_ip_port=\\\"(?.*?)\\\".*external_host_name=\\\"(?.*?)\\\".*");
+
+                FileInfo defaultFile = new FileInfo(@"Regions\default.xml");
+                StreamReader stream = defaultFile.OpenText();
+                do
+                {
+                    text = stream.ReadLine();
+                    if (text == null)
+                    {
+                        break;
+                    }
+                    MatchCollection theMatches = myRegex.Matches(text);
+                    foreach (Match theMatch in theMatches)
+                    {
+                        if (theMatch.Length != 0)
+                        {
+                            sandboxHostName = theMatch.Groups["name"].ToString();
+                            sandboxPort = theMatch.Groups["port"].ToString();
+                        }
+                    }
+                } while (text != null);
+
+                stream.Close();
+                sandboxUrl = "http:\\" + sandboxHostName + ":" + sandboxPort;
+                menuItems.Add("Local Sandbox");
+            }
+        }
+
+        private void addLocalGrid(ref ArrayList menuItems)
+        {
+            //build local grid URL from network_servers_information.xml
+            // this is highly dependant on a standard default.xml
+            if (File.Exists(@"network_servers_information.xml"))
+            {
+                string text;
+                FileInfo defaultFile = new FileInfo(@"network_servers_information.xml");
+                Regex myRegex = new Regex(".*UserServerURL=\\\"(?.*?)\\\".*");
+                StreamReader stream = defaultFile.OpenText();
+
+                do
+                {
+                    text = stream.ReadLine();
+                    if (text == null)
+                    {
+                        break;
+                    }
+                    foreach (Match theMatch in myRegex.Matches(text))
+                    {
+                        if (theMatch.Length != 0)
+                        {
+                            gridUrl = theMatch.Groups["url"].ToString();
+                        }
+                    }
+                } while (text != null);
+                stream.Close();
+                if (gridUrl != null)
+                {
+                    menuItems.Add("Local Grid Server");
+                }
+            }
+        }
+
+        private void addLocalSims(ref ArrayList menuItems)
+        {
+            // find opensim directory
+            RegistryKey exeKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\OpenSim\OpenSim");
+            if (exeKey != null)
+            {
+                Object simPath = exeKey.GetValue("Path");
+
+                Directory.SetCurrentDirectory(simPath.ToString());  //this should be set to wherever we decide to put the binaries
+
+                addLocalSandbox(ref menuItems);
+                addLocalGrid(ref menuItems);
+            }
+            else
+            {
+                MessageBox.Show("No OpenSim installed. Showing public grids only", "No OpenSim");
+            }
+        }
+
+        private void getClient(ref string exePath, ref string runLine, ref string exeFlags)
+        {
+            // get executable path from registry
+            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Linden Research, Inc.\SecondLife");
+            if (regKey == null)
+            {
+                regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Linden Research, Inc.\SecondLife");
+                if (regKey == null)
+                {
+                    throw new LauncherException("Can't find Second Life. Are you sure it is installed?", "LauncherException.Form1");
+                }
+            }
+            string exe = regKey.GetValue("Exe").ToString();
+            exeFlags = regKey.GetValue("Flags").ToString();
+            exePath = regKey.GetValue("").ToString();
+            runLine = exePath + "\\" + exe;
+            Registry.LocalMachine.Flush();
+            Registry.LocalMachine.Close();
+        }
+
+        public Form1()
+        {
+            InitializeComponent();
+            ArrayList menuItems = new ArrayList();
+
+            getClient(ref exePath, ref runLine, ref exeFlags);
+
+            menuItems.Add("Please select one:");
+
+            addLocalSims(ref menuItems);
+
+            menuItems.Add("OSGrid - www.osgrid.org");
+            menuItems.Add("DeepGrid - www.deepgrid.com");
+            menuItems.Add("OpenlifeGrid - www.openlifegrid.com");
+            menuItems.Add("Linden Labs - www.secondlife.com");
+
+            comboBox1.DataSource = menuItems;
+        }
+
+        private void radioButton1_CheckedChanged(object sender, EventArgs e)
+        {
+        }
+
+        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
+        {
+            if (comboBox1.Text == "Please select one:") { return; }
+            if (comboBox1.Text == "Local Sandbox") { runUrl=" -loginuri " + sandboxUrl;}
+            if (comboBox1.Text == "Local Grid Server") { runUrl = " -loginuri " + gridUrl; }
+            if (comboBox1.Text == "DeepGrid - www.deepgrid.com") { runUrl = " -loginuri " + deepGridUrl; }
+            if (comboBox1.Text == "OSGrid - www.osgrid.org") { runUrl = " -loginuri " + osGridUrl; }
+            if (comboBox1.Text == "OpenlifeGrid - www.openlifegrid.com") { runUrl = " -loginuri " + openLifeGridUrl; }
+            if (comboBox1.Text == "Linden Labs - www.secondlife.com") { runUrl = ""; }
+
+            System.Diagnostics.Process proc = new System.Diagnostics.Process();
+            proc.StartInfo.FileName = runLine;
+            proc.StartInfo.Arguments = exeFlags.ToString() + " " + runUrl;
+            proc.StartInfo.UseShellExecute = false;
+            proc.StartInfo.RedirectStandardOutput = false;
+            proc.StartInfo.WorkingDirectory = exePath.ToString();
+            proc.Start();
+            proc.WaitForExit();
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.resx b/OpenSim/Tools/LaunchSLClient/Form1.resx
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.resx
rename to OpenSim/Tools/LaunchSLClient/Form1.resx
index ff31a6db56..19dc0dd8b3 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Form1.resx
+++ b/OpenSim/Tools/LaunchSLClient/Form1.resx
@@ -1,120 +1,120 @@
-
-
-  
-  
-    
-    
-      
-        
-          
-            
-              
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-              
-            
-          
-          
-            
-              
-                
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-                
-              
-              
-            
-          
-        
-      
-    
-  
-  
-    text/microsoft-resx
-  
-  
-    2.0
-  
-  
-    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
+
+
+  
+  
+    
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
 
\ No newline at end of file
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj b/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj
new file mode 100644
index 0000000000..b6b072bfe9
--- /dev/null
+++ b/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj
@@ -0,0 +1,152 @@
+
+  
+    Local
+    9.0.21022
+    2.0
+    {FFC2EE60-0000-0000-0000-000000000000}
+    Debug
+    AnyCPU
+    
+    
+    
+    
+    LaunchSLClient
+    JScript
+    Grid
+    IE50
+    false
+    Exe
+    
+    
+    LaunchSLClient
+    
+    
+    
+    
+  
+  
+    False
+    285212672
+    False
+    
+    
+    TRACE;DEBUG
+    
+    
+    True
+    4096
+    False
+    ..\..\..\bin\
+    False
+    False
+    False
+    4
+    
+    
+  
+  
+    False
+    285212672
+    False
+    
+    
+    TRACE
+    
+    
+    False
+    4096
+    True
+    ..\..\..\bin\
+    False
+    False
+    False
+    4
+    
+    
+  
+  
+    
+      Microsoft.Win32.dll
+      False
+    
+    
+      System.dll
+      False
+    
+    
+      System.Collections.dll
+      False
+    
+    
+      System.Collections.Generic.dll
+      False
+    
+    
+      System.ComponentModel.dll
+      False
+    
+    
+      System.Data.dll
+      False
+    
+    
+      System.Diagnostics.dll
+      False
+    
+    
+      System.Drawing.dll
+      False
+    
+    
+      System.IO.dll
+      False
+    
+    
+      System.Text.dll
+      False
+    
+    
+      System.Text.RegularExpressions.dll
+      False
+    
+    
+      System.Windows.Forms.dll
+      False
+    
+  
+  
+  
+  
+    
+      Form
+    
+    
+      Form1.cs
+      Code
+    
+    
+      Code
+    
+    
+      Code
+    
+    
+      Code
+    
+    
+      Properties\Resources.cs
+      Code
+    
+    
+      Properties\Settings.cs
+      Code
+    
+  
+  
+  
+    
+    
+    
+    
+  
+
\ No newline at end of file
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj.user b/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj.user
new file mode 100644
index 0000000000..fa7bb7e0a1
--- /dev/null
+++ b/OpenSim/Tools/LaunchSLClient/LaunchSLClient.csproj.user
@@ -0,0 +1,12 @@
+
+  
+    Debug
+    AnyCPU
+    C:\OpenSim\trunk3\bin\
+    9.0.21022
+    ProjectFiles
+    0
+  
+  
+  
+
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/LaunchSLClient.csproj b/OpenSim/Tools/LaunchSLClient/LaunchSLClient/LaunchSLClient.csproj
deleted file mode 100644
index bc70f11c55..0000000000
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/LaunchSLClient.csproj
+++ /dev/null
@@ -1,79 +0,0 @@
-
-  
-    Debug
-    AnyCPU
-    8.0.50727
-    2.0
-    {50FD2DCD-2E2D-413C-8260-D9CD22405895}
-    WinExe
-    Properties
-    LaunchSLClient
-    LaunchSLClient
-  
-  
-    true
-    full
-    false
-    bin\Debug\
-    DEBUG;TRACE
-    prompt
-    4
-  
-  
-    pdbonly
-    true
-    bin\Release\
-    TRACE
-    prompt
-    4
-  
-  
-    
-    
-    
-    
-    
-    
-  
-  
-    
-      Form
-    
-    
-      Form1.cs
-    
-    
-    
-    
-    
-      Designer
-      Form1.cs
-    
-    
-      ResXFileCodeGenerator
-      Resources.Designer.cs
-      Designer
-    
-    
-      True
-      Resources.resx
-    
-    
-      SettingsSingleFileGenerator
-      Settings.Designer.cs
-    
-    
-      True
-      Settings.settings
-      True
-    
-  
-  
-  
-
\ No newline at end of file
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/AssemblyInfo.cs b/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/AssemblyInfo.cs
deleted file mode 100644
index 4bd2cea179..0000000000
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("LaunchSLClient")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("Home")]
-[assembly: AssemblyProduct("LaunchSLClient")]
-[assembly: AssemblyCopyright("Copyright © Home 2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("b08c6904-e6cc-4d9c-8d24-feb0464b1648")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/LauncherException.cs b/OpenSim/Tools/LaunchSLClient/LauncherException.cs
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/LauncherException.cs
rename to OpenSim/Tools/LaunchSLClient/LauncherException.cs
index ae5eb235c5..e31bd1de87 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/LauncherException.cs
+++ b/OpenSim/Tools/LaunchSLClient/LauncherException.cs
@@ -1,53 +1,53 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace LaunchSLClient
-{
-    class LauncherException : ApplicationException
-    {
-
-        private const string CUSTOMMESSAGE = "The SL Client Launcher has failed with the following error: ";
-
-        private LauncherException() { }
-
-        public LauncherException(string errorMesssage, string source)
-            : base (CUSTOMMESSAGE + errorMesssage)
-        {
-            base.Source = source;
-        }
-
-        public LauncherException(string errorMessage, string source, Exception innerException)
-            : base(CUSTOMMESSAGE + errorMessage, innerException)
-        {
-            base.Source = source;
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace LaunchSLClient
+{
+    class LauncherException : ApplicationException
+    {
+        private const string CUSTOMMESSAGE = "The SL Client Launcher has failed with the following error: ";
+
+        private LauncherException() { }
+
+        public LauncherException(string errorMesssage, string source)
+            : base (CUSTOMMESSAGE + errorMesssage)
+        {
+            base.Source = source;
+        }
+
+        public LauncherException(string errorMessage, string source, Exception innerException)
+            : base(CUSTOMMESSAGE + errorMessage, innerException)
+        {
+            base.Source = source;
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Program.cs b/OpenSim/Tools/LaunchSLClient/Program.cs
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Program.cs
rename to OpenSim/Tools/LaunchSLClient/Program.cs
index c05ed3ea3b..778d5c0606 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Program.cs
+++ b/OpenSim/Tools/LaunchSLClient/Program.cs
@@ -1,57 +1,56 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-
-
-namespace LaunchSLClient
-{
-    static class Program
-    {
-        /// 
-        /// The main entry point for the application.
-        /// 
-        [STAThread]
-        static void Main()
-        {
-
-            try
-            {
-                Application.EnableVisualStyles();
-                Application.SetCompatibleTextRenderingDefault(false);
-                Application.Run(new Form1());
-            }
-            catch (Exception ex)
-            {
-                // Handles all unhandled errors
-                MessageBox.Show(ex.Message,"Unhandled Error");
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace LaunchSLClient
+{
+    static class Program
+    {
+        /// 
+        /// The main entry point for the application.
+        /// 
+        [STAThread]
+        static void Main()
+        {
+            try
+            {
+                Application.EnableVisualStyles();
+                Application.SetCompatibleTextRenderingDefault(false);
+                Application.Run(new Form1());
+            }
+            catch (Exception ex)
+            {
+                // Handles all unhandled errors
+                MessageBox.Show(ex.Message,"Unhandled Error");
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/Properties/AssemblyInfo.cs b/OpenSim/Tools/LaunchSLClient/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..87a4ac4883
--- /dev/null
+++ b/OpenSim/Tools/LaunchSLClient/Properties/AssemblyInfo.cs
@@ -0,0 +1,61 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("LaunchSLClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Home")]
+[assembly: AssemblyProduct("LaunchSLClient")]
+[assembly: AssemblyCopyright("Copyright © Home 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("b08c6904-e6cc-4d9c-8d24-feb0464b1648")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.Designer.cs b/OpenSim/Tools/LaunchSLClient/Properties/Resources.Designer.cs
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.Designer.cs
rename to OpenSim/Tools/LaunchSLClient/Properties/Resources.Designer.cs
index f9dfcc0f98..4e9188d308 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.Designer.cs
+++ b/OpenSim/Tools/LaunchSLClient/Properties/Resources.Designer.cs
@@ -1,71 +1,71 @@
-//------------------------------------------------------------------------------
-// 
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.832
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// 
-//------------------------------------------------------------------------------
-
-namespace LaunchSLClient.Properties
-{
-
-
-    /// 
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// 
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class Resources
-    {
-
-        private static global::System.Resources.ResourceManager resourceMan;
-
-        private static global::System.Globalization.CultureInfo resourceCulture;
-
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal Resources()
-        {
-        }
-
-        /// 
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// 
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager
-        {
-            get
-            {
-                if ((resourceMan == null))
-                {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LaunchSLClient.Properties.Resources", typeof(Resources).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-
-        /// 
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// 
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture
-        {
-            get
-            {
-                return resourceCulture;
-            }
-            set
-            {
-                resourceCulture = value;
-            }
-        }
-    }
-}
+//------------------------------------------------------------------------------
+// 
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.832
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// 
+//------------------------------------------------------------------------------
+
+namespace LaunchSLClient.Properties
+{
+
+
+    /// 
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// 
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources()
+        {
+        }
+
+        /// 
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// 
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if ((resourceMan == null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LaunchSLClient.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// 
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// 
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.resx b/OpenSim/Tools/LaunchSLClient/Properties/Resources.resx
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.resx
rename to OpenSim/Tools/LaunchSLClient/Properties/Resources.resx
index ffecec851a..af7dbebbac 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Resources.resx
+++ b/OpenSim/Tools/LaunchSLClient/Properties/Resources.resx
@@ -1,117 +1,117 @@
-
-
-  
-  
-    
-      
-        
-          
-            
-              
-                
-              
-              
-              
-              
-            
-          
-          
-            
-              
-              
-            
-          
-          
-            
-              
-                
-                
-              
-              
-              
-              
-            
-          
-          
-            
-              
-                
-              
-              
-            
-          
-        
-      
-    
-  
-  
-    text/microsoft-resx
-  
-  
-    2.0
-  
-  
-    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
+
+
+  
+  
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
 
\ No newline at end of file
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.Designer.cs b/OpenSim/Tools/LaunchSLClient/Properties/Settings.Designer.cs
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.Designer.cs
rename to OpenSim/Tools/LaunchSLClient/Properties/Settings.Designer.cs
index 72c3ced2e9..3dcc200625 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.Designer.cs
+++ b/OpenSim/Tools/LaunchSLClient/Properties/Settings.Designer.cs
@@ -1,30 +1,30 @@
-//------------------------------------------------------------------------------
-// 
-//     This code was generated by a tool.
-//     Runtime Version:2.0.50727.832
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// 
-//------------------------------------------------------------------------------
-
-namespace LaunchSLClient.Properties
-{
-
-
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
-    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
-    {
-
-        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
-
-        public static Settings Default
-        {
-            get
-            {
-                return defaultInstance;
-            }
-        }
-    }
-}
+//------------------------------------------------------------------------------
+// 
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.832
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// 
+//------------------------------------------------------------------------------
+
+namespace LaunchSLClient.Properties
+{
+
+
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+    {
+
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+        public static Settings Default
+        {
+            get
+            {
+                return defaultInstance;
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.settings b/OpenSim/Tools/LaunchSLClient/Properties/Settings.settings
similarity index 97%
rename from OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.settings
rename to OpenSim/Tools/LaunchSLClient/Properties/Settings.settings
index abf36c5d3d..39645652af 100644
--- a/OpenSim/Tools/LaunchSLClient/LaunchSLClient/Properties/Settings.settings
+++ b/OpenSim/Tools/LaunchSLClient/Properties/Settings.settings
@@ -1,7 +1,7 @@
-
-
-  
-    
-  
-  
-
+
+
+  
+    
+  
+  
+
diff --git a/OpenSim/Tools/OpenSim.32BitLaunch/OpenSim.32BitLaunch.csproj b/OpenSim/Tools/OpenSim.32BitLaunch/OpenSim.32BitLaunch.csproj
new file mode 100644
index 0000000000..bfca5e4d77
--- /dev/null
+++ b/OpenSim/Tools/OpenSim.32BitLaunch/OpenSim.32BitLaunch.csproj
@@ -0,0 +1,63 @@
+
+
+  
+    Debug
+    AnyCPU
+    9.0.21022
+    2.0
+    {595D67F3-B413-4A43-8568-5B5930E3B31D}
+    Exe
+    Properties
+    OpenSim._32BitLaunch
+    OpenSim.32BitLaunch
+    v2.0
+    512
+  
+  
+    true
+    full
+    false
+    ..\..\..\bin\
+    DEBUG;TRACE
+    prompt
+    4
+    x86
+  
+  
+    pdbonly
+    true
+    bin\Release\
+    TRACE
+    prompt
+    4
+  
+  
+    
+    
+      3.5
+    
+    
+      3.5
+    
+    
+    
+  
+  
+    
+    
+  
+  
+    
+      {AC9EB8AB-0000-0000-0000-000000000000}
+      OpenSim
+    
+  
+  
+  
+
\ No newline at end of file
diff --git a/OpenSim/Tools/OpenSim.32BitLaunch/Program.cs b/OpenSim/Tools/OpenSim.32BitLaunch/Program.cs
new file mode 100644
index 0000000000..78ba598636
--- /dev/null
+++ b/OpenSim/Tools/OpenSim.32BitLaunch/Program.cs
@@ -0,0 +1,60 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+
+namespace OpenSim._32BitLaunch
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            log4net.Config.XmlConfigurator.Configure();
+
+            System.Console.WriteLine("32-bit OpenSim executor");
+            System.Console.WriteLine("-----------------------");
+            System.Console.WriteLine("");
+            System.Console.WriteLine("This application is compiled for 32-bit CPU and will run under WOW32 or similar.");
+            System.Console.WriteLine("All 64-bit incompatibilities should be gone.");
+            System.Console.WriteLine("");
+            System.Threading.Thread.Sleep(300);
+            try
+            {
+                OpenSim.Application.Main(args);
+            }
+            catch (Exception ex)
+            {
+                System.Console.WriteLine("OpenSim threw an exception:");
+                System.Console.WriteLine(ex.ToString());
+                System.Console.WriteLine("");
+                System.Console.WriteLine("Application will now terminate!");
+                System.Console.WriteLine("");
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs b/OpenSim/Tools/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..31543f8f74
--- /dev/null
+++ b/OpenSim/Tools/OpenSim.32BitLaunch/Properties/AssemblyInfo.cs
@@ -0,0 +1,64 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.32BitLaunch")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.32BitLaunch")]
+[assembly: AssemblyCopyright("Copyright © 2008")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("5072e919-46ab-47e6-8a63-08108324ccdf")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Tools/OpenSim.GUI/InputTextBoxControl.cs b/OpenSim/Tools/OpenSim.GUI/InputTextBoxControl.cs
index 2fd8f44ecd..6f8d3329c0 100644
--- a/OpenSim/Tools/OpenSim.GUI/InputTextBoxControl.cs
+++ b/OpenSim/Tools/OpenSim.GUI/InputTextBoxControl.cs
@@ -1,116 +1,116 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Windows.Forms;
-
-namespace OpenSim.GUI
-{
-    class InputTextBoxControl:System.Windows.Forms.TextBox
-    {
-        public InputTextBoxControl()
-        {
-            this.KeyDown += new System.Windows.Forms.KeyEventHandler(TextInputControl_KeyDown);
-        }
-
-  
-        private List CommandHistory = new List();
-        private bool InHistory = false;
-        private int HistoryPosition = -1;
-
-        void TextInputControl_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
-        {
-
-            
-            if (e.KeyCode == Keys.Enter && InHistory == false)
-            {
-                CommandHistory.Add(this.Text);
-            }
-
-
-            if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
-            {
-                // if not inside buffer, enter
-                // InBuffer = true
-                //Console.WriteLine("History: Check");
-                if (InHistory == false)
-                {
-                    if (this.Text != "")
-                    {
-                        //Console.WriteLine("History: Add");
-                        CommandHistory.Add(this.Text);
-                        HistoryPosition = CommandHistory.Count;
-                    }
-                    else
-                    {
-                        //HistoryPosition = CommandHistory.Count + 1;
-                    }
-                    //Console.WriteLine("History: InHistory");
-                    InHistory = true;
-                }
-
-                if (e.KeyCode == Keys.Up)
-                    HistoryPosition -= 1;
-                if (e.KeyCode == Keys.Down)
-                    HistoryPosition += 1;
-
-                if (HistoryPosition > CommandHistory.Count - 1)
-                    HistoryPosition = -1;
-                if (HistoryPosition < -1)
-                    HistoryPosition = CommandHistory.Count - 1;
-
-                //Console.WriteLine("History: Pos: " + HistoryPosition);
-                //Console.WriteLine("History: HaveInHistCount: " + CommandHistory.Count);
-                if (CommandHistory.Count != 0)
-                {
-                    if (HistoryPosition != -1)
-                    {
-                        //Console.WriteLine("History: Getting");
-                        //this.Text = CommandHistory.Item(HistoryPosition);
-                        this.Text = CommandHistory[HistoryPosition];
-                        this.SelectionStart = this.Text.Length;
-                        this.SelectionLength = 0;
-                    }
-                    else
-                    {
-                        //Console.WriteLine("History: Nothing");
-                        this.Text = "";
-                    }
-                }
-                e.Handled = true;
-            } else {
-                InHistory = false;
-                HistoryPosition = -1;
-            }
-        }
-
-
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OpenSim.GUI
+{
+    class InputTextBoxControl:System.Windows.Forms.TextBox
+    {
+        public InputTextBoxControl()
+        {
+            this.KeyDown += new System.Windows.Forms.KeyEventHandler(TextInputControl_KeyDown);
+        }
+
+  
+        private List CommandHistory = new List();
+        private bool InHistory = false;
+        private int HistoryPosition = -1;
+
+        void TextInputControl_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
+        {
+
+            
+            if (e.KeyCode == Keys.Enter && InHistory == false)
+            {
+                CommandHistory.Add(this.Text);
+            }
+
+
+            if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
+            {
+                // if not inside buffer, enter
+                // InBuffer = true
+                //Console.WriteLine("History: Check");
+                if (InHistory == false)
+                {
+                    if (this.Text != "")
+                    {
+                        //Console.WriteLine("History: Add");
+                        CommandHistory.Add(this.Text);
+                        HistoryPosition = CommandHistory.Count;
+                    }
+                    else
+                    {
+                        //HistoryPosition = CommandHistory.Count + 1;
+                    }
+                    //Console.WriteLine("History: InHistory");
+                    InHistory = true;
+                }
+
+                if (e.KeyCode == Keys.Up)
+                    HistoryPosition -= 1;
+                if (e.KeyCode == Keys.Down)
+                    HistoryPosition += 1;
+
+                if (HistoryPosition > CommandHistory.Count - 1)
+                    HistoryPosition = -1;
+                if (HistoryPosition < -1)
+                    HistoryPosition = CommandHistory.Count - 1;
+
+                //Console.WriteLine("History: Pos: " + HistoryPosition);
+                //Console.WriteLine("History: HaveInHistCount: " + CommandHistory.Count);
+                if (CommandHistory.Count != 0)
+                {
+                    if (HistoryPosition != -1)
+                    {
+                        //Console.WriteLine("History: Getting");
+                        //this.Text = CommandHistory.Item(HistoryPosition);
+                        this.Text = CommandHistory[HistoryPosition];
+                        this.SelectionStart = this.Text.Length;
+                        this.SelectionLength = 0;
+                    }
+                    else
+                    {
+                        //Console.WriteLine("History: Nothing");
+                        this.Text = "";
+                    }
+                }
+                e.Handled = true;
+            } else {
+                InHistory = false;
+                HistoryPosition = -1;
+            }
+        }
+
+
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/Main.Designer.cs b/OpenSim/Tools/OpenSim.GUI/Main.Designer.cs
index 59e0f91684..ec3970e3ce 100644
--- a/OpenSim/Tools/OpenSim.GUI/Main.Designer.cs
+++ b/OpenSim/Tools/OpenSim.GUI/Main.Designer.cs
@@ -1,1436 +1,1436 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-namespace OpenSim.GUI
-{
-    partial class Main
-    {
-        /// 
-        /// Required designer variable.
-        /// 
-        private System.ComponentModel.IContainer components = null;
-
-        /// 
-        /// Clean up any resources being used.
-        /// 
-        /// true if managed resources should be disposed; otherwise, false.
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// 
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// 
-        private void InitializeComponent()
-        {
-            this.components = new System.ComponentModel.Container();
-            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
-            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-            this.timer1 = new System.Windows.Forms.Timer(this.components);
-            this.clientBox1 = new System.Windows.Forms.TextBox();
-            this.btnStart = new System.Windows.Forms.Button();
-            this.btnStop = new System.Windows.Forms.Button();
-            this.rbGridRegionMode = new System.Windows.Forms.RadioButton();
-            this.rbStandAloneMode = new System.Windows.Forms.RadioButton();
-            this.rbGridServer = new System.Windows.Forms.RadioButton();
-            this.Launch1 = new System.Windows.Forms.Button();
-            this.gbLog = new System.Windows.Forms.GroupBox();
-            this.tabLogs = new System.Windows.Forms.TabControl();
-            this.tabMainLog = new System.Windows.Forms.TabPage();
-            this.txtMainLog = new System.Windows.Forms.TextBox();
-            this.tabRegionServer = new System.Windows.Forms.TabPage();
-            this.txtInputRegionServer = new OpenSim.GUI.InputTextBoxControl();
-            this.label1 = new System.Windows.Forms.Label();
-            this.txtOpenSim = new System.Windows.Forms.TextBox();
-            this.tabUserServer = new System.Windows.Forms.TabPage();
-            this.txtInputUserServer = new OpenSim.GUI.InputTextBoxControl();
-            this.label2 = new System.Windows.Forms.Label();
-            this.txtUserServer = new System.Windows.Forms.TextBox();
-            this.tabAssetServer = new System.Windows.Forms.TabPage();
-            this.txtInputAssetServer = new OpenSim.GUI.InputTextBoxControl();
-            this.label3 = new System.Windows.Forms.Label();
-            this.txtAssetServer = new System.Windows.Forms.TextBox();
-            this.tabGridServer = new System.Windows.Forms.TabPage();
-            this.txtInputGridServer = new OpenSim.GUI.InputTextBoxControl();
-            this.label4 = new System.Windows.Forms.Label();
-            this.txtGridServer = new System.Windows.Forms.TextBox();
-            this.label5 = new System.Windows.Forms.Label();
-            this.noProbe1 = new System.Windows.Forms.CheckBox();
-            this.label6 = new System.Windows.Forms.Label();
-            this.multiple1 = new System.Windows.Forms.CheckBox();
-            this.label7 = new System.Windows.Forms.Label();
-            this.noMultiple1 = new System.Windows.Forms.CheckBox();
-            this.ignorepixeldepth1 = new System.Windows.Forms.CheckBox();
-            this.nothread1 = new System.Windows.Forms.CheckBox();
-            this.safe1 = new System.Windows.Forms.CheckBox();
-            this.noconsole1 = new System.Windows.Forms.CheckBox();
-            this.log1 = new System.Windows.Forms.CheckBox();
-            this.helperuri1 = new System.Windows.Forms.CheckBox();
-            this.autologin1 = new System.Windows.Forms.CheckBox();
-            this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
-            this.dialog1 = new System.Windows.Forms.CheckBox();
-            this.previous1 = new System.Windows.Forms.CheckBox();
-            this.simple1 = new System.Windows.Forms.CheckBox();
-            this.noinvlib1 = new System.Windows.Forms.CheckBox();
-            this.debugst1 = new System.Windows.Forms.CheckBox();
-            this.spanish1 = new System.Windows.Forms.CheckBox();
-            this.korean1 = new System.Windows.Forms.CheckBox();
-            this.local1 = new System.Windows.Forms.CheckBox();
-            this.purge1 = new System.Windows.Forms.CheckBox();
-            this.nofmod1 = new System.Windows.Forms.CheckBox();
-            this.noaudio1 = new System.Windows.Forms.CheckBox();
-            this.nosound1 = new System.Windows.Forms.CheckBox();
-            this.url1 = new System.Windows.Forms.CheckBox();
-            this.port1 = new System.Windows.Forms.CheckBox();
-            this.simBox1 = new System.Windows.Forms.TextBox();
-            this.portBox1 = new System.Windows.Forms.TextBox();
-            this.user1 = new System.Windows.Forms.CheckBox();
-            this.quitAfter1 = new System.Windows.Forms.CheckBox();
-            this.techTag1 = new System.Windows.Forms.CheckBox();
-            this.yield1 = new System.Windows.Forms.CheckBox();
-            this.logfile1 = new System.Windows.Forms.CheckBox();
-            this.settings1 = new System.Windows.Forms.CheckBox();
-            this.outbw1 = new System.Windows.Forms.CheckBox();
-            this.inbw1 = new System.Windows.Forms.CheckBox();
-            this.drop1 = new System.Windows.Forms.CheckBox();
-            this.dropBox1 = new System.Windows.Forms.TextBox();
-            this.inbwBox1 = new System.Windows.Forms.TextBox();
-            this.outbwBox1 = new System.Windows.Forms.TextBox();
-            this.settingsBox1 = new System.Windows.Forms.TextBox();
-            this.logfileBox1 = new System.Windows.Forms.TextBox();
-            this.yieldBox1 = new System.Windows.Forms.TextBox();
-            this.techtagBox1 = new System.Windows.Forms.TextBox();
-            this.quitafterBox1 = new System.Windows.Forms.TextBox();
-            this.comboBox1 = new System.Windows.Forms.ComboBox();
-            this.loginuri1 = new System.Windows.Forms.CheckBox();
-            this.loginuriBox1 = new System.Windows.Forms.TextBox();
-            this.set1 = new System.Windows.Forms.CheckBox();
-            this.setBox1 = new System.Windows.Forms.TextBox();
-            this.errmask1 = new System.Windows.Forms.CheckBox();
-            this.skin1 = new System.Windows.Forms.CheckBox();
-            this.login1 = new System.Windows.Forms.CheckBox();
-            this.errmaskBox1 = new System.Windows.Forms.TextBox();
-            this.skinBox1 = new System.Windows.Forms.TextBox();
-            this.firstBox1 = new System.Windows.Forms.TextBox();
-            this.lastBox1 = new System.Windows.Forms.TextBox();
-            this.noutc1 = new System.Windows.Forms.CheckBox();
-            this.passBox1 = new System.Windows.Forms.TextBox();
-            this.raw1 = new System.Windows.Forms.CheckBox();
-            this.rawBox1 = new System.Windows.Forms.TextBox();
-            this.clear1 = new System.Windows.Forms.Button();
-            this.nataddress1 = new System.Windows.Forms.TextBox();
-            this.label8 = new System.Windows.Forms.Label();
-            this.label9 = new System.Windows.Forms.Label();
-            this.exeBox1 = new System.Windows.Forms.TextBox();
-            this.label10 = new System.Windows.Forms.Label();
-            this.label11 = new System.Windows.Forms.Label();
-            this.label12 = new System.Windows.Forms.Label();
-            this.label13 = new System.Windows.Forms.Label();
-            this.menuStrip1.SuspendLayout();
-            this.gbLog.SuspendLayout();
-            this.tabLogs.SuspendLayout();
-            this.tabMainLog.SuspendLayout();
-            this.tabRegionServer.SuspendLayout();
-            this.tabUserServer.SuspendLayout();
-            this.tabAssetServer.SuspendLayout();
-            this.tabGridServer.SuspendLayout();
-            this.SuspendLayout();
-            // 
-            // menuStrip1
-            // 
-            this.menuStrip1.AutoSize = false;
-            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.fileToolStripMenuItem});
-            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
-            this.menuStrip1.Name = "menuStrip1";
-            this.menuStrip1.Size = new System.Drawing.Size(900, 20);
-            this.menuStrip1.TabIndex = 7;
-            this.menuStrip1.Text = "menuStrip1";
-            // 
-            // fileToolStripMenuItem
-            // 
-            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.exitToolStripMenuItem});
-            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
-            this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 16);
-            this.fileToolStripMenuItem.Text = "File";
-            // 
-            // exitToolStripMenuItem
-            // 
-            this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
-            this.exitToolStripMenuItem.Size = new System.Drawing.Size(130, 22);
-            this.exitToolStripMenuItem.Text = "Exit Cleanly";
-            this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
-            // 
-            // timer1
-            // 
-            this.timer1.Enabled = true;
-            // 
-            // clientBox1
-            // 
-            this.clientBox1.Location = new System.Drawing.Point(680, 27);
-            this.clientBox1.Name = "clientBox1";
-            this.clientBox1.Size = new System.Drawing.Size(213, 20);
-            this.clientBox1.TabIndex = 8;
-            this.clientBox1.Text = "C://Secondlife//";
-            // 
-            // btnStart
-            // 
-            this.btnStart.Location = new System.Drawing.Point(7, 366);
-            this.btnStart.Name = "btnStart";
-            this.btnStart.Size = new System.Drawing.Size(80, 23);
-            this.btnStart.TabIndex = 2;
-            this.btnStart.Text = "Start";
-            this.btnStart.UseVisualStyleBackColor = true;
-            this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
-            // 
-            // btnStop
-            // 
-            this.btnStop.Location = new System.Drawing.Point(92, 366);
-            this.btnStop.Name = "btnStop";
-            this.btnStop.Size = new System.Drawing.Size(80, 23);
-            this.btnStop.TabIndex = 3;
-            this.btnStop.Text = "Stop";
-            this.btnStop.UseVisualStyleBackColor = true;
-            this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
-            // 
-            // rbGridRegionMode
-            // 
-            this.rbGridRegionMode.AutoSize = true;
-            this.rbGridRegionMode.Location = new System.Drawing.Point(96, 27);
-            this.rbGridRegionMode.Name = "rbGridRegionMode";
-            this.rbGridRegionMode.Size = new System.Drawing.Size(76, 17);
-            this.rbGridRegionMode.TabIndex = 4;
-            this.rbGridRegionMode.Text = "Grid region";
-            this.rbGridRegionMode.UseVisualStyleBackColor = true;
-            this.rbGridRegionMode.CheckedChanged += new System.EventHandler(this.rbGridRegionMode_CheckedChanged);
-            // 
-            // rbStandAloneMode
-            // 
-            this.rbStandAloneMode.AutoSize = true;
-            this.rbStandAloneMode.Checked = true;
-            this.rbStandAloneMode.Location = new System.Drawing.Point(8, 27);
-            this.rbStandAloneMode.Name = "rbStandAloneMode";
-            this.rbStandAloneMode.Size = new System.Drawing.Size(82, 17);
-            this.rbStandAloneMode.TabIndex = 5;
-            this.rbStandAloneMode.TabStop = true;
-            this.rbStandAloneMode.Text = "Stand alone";
-            this.rbStandAloneMode.UseVisualStyleBackColor = true;
-            this.rbStandAloneMode.CheckedChanged += new System.EventHandler(this.rbStandAloneMode_CheckedChanged);
-            // 
-            // rbGridServer
-            // 
-            this.rbGridServer.AutoSize = true;
-            this.rbGridServer.Location = new System.Drawing.Point(178, 27);
-            this.rbGridServer.Name = "rbGridServer";
-            this.rbGridServer.Size = new System.Drawing.Size(76, 17);
-            this.rbGridServer.TabIndex = 6;
-            this.rbGridServer.Text = "Grid server";
-            this.rbGridServer.UseVisualStyleBackColor = true;
-            this.rbGridServer.CheckedChanged += new System.EventHandler(this.rbGridServer_CheckedChanged);
-            // 
-            // Launch1
-            // 
-            this.Launch1.Location = new System.Drawing.Point(264, 366);
-            this.Launch1.Name = "Launch1";
-            this.Launch1.Size = new System.Drawing.Size(80, 23);
-            this.Launch1.TabIndex = 9;
-            this.Launch1.Text = "Client Launch";
-            this.Launch1.UseVisualStyleBackColor = true;
-            this.Launch1.Click += new System.EventHandler(this.Launch1_Click);
-            // 
-            // gbLog
-            // 
-            this.gbLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.gbLog.Controls.Add(this.tabLogs);
-            this.gbLog.Location = new System.Drawing.Point(8, 50);
-            this.gbLog.Name = "gbLog";
-            this.gbLog.Size = new System.Drawing.Size(345, 310);
-            this.gbLog.TabIndex = 1;
-            this.gbLog.TabStop = false;
-            this.gbLog.Text = "Logs";
-            // 
-            // tabLogs
-            // 
-            this.tabLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.tabLogs.Controls.Add(this.tabMainLog);
-            this.tabLogs.Controls.Add(this.tabRegionServer);
-            this.tabLogs.Controls.Add(this.tabUserServer);
-            this.tabLogs.Controls.Add(this.tabAssetServer);
-            this.tabLogs.Controls.Add(this.tabGridServer);
-            this.tabLogs.Location = new System.Drawing.Point(6, 19);
-            this.tabLogs.Name = "tabLogs";
-            this.tabLogs.SelectedIndex = 0;
-            this.tabLogs.Size = new System.Drawing.Size(333, 285);
-            this.tabLogs.TabIndex = 0;
-            // 
-            // tabMainLog
-            // 
-            this.tabMainLog.Controls.Add(this.txtMainLog);
-            this.tabMainLog.Location = new System.Drawing.Point(4, 22);
-            this.tabMainLog.Name = "tabMainLog";
-            this.tabMainLog.Size = new System.Drawing.Size(325, 259);
-            this.tabMainLog.TabIndex = 4;
-            this.tabMainLog.Text = "Main log";
-            this.tabMainLog.UseVisualStyleBackColor = true;
-            // 
-            // txtMainLog
-            // 
-            this.txtMainLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtMainLog.Location = new System.Drawing.Point(0, 0);
-            this.txtMainLog.Multiline = true;
-            this.txtMainLog.Name = "txtMainLog";
-            this.txtMainLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-            this.txtMainLog.Size = new System.Drawing.Size(325, 259);
-            this.txtMainLog.TabIndex = 1;
-            // 
-            // tabRegionServer
-            // 
-            this.tabRegionServer.Controls.Add(this.txtInputRegionServer);
-            this.tabRegionServer.Controls.Add(this.label1);
-            this.tabRegionServer.Controls.Add(this.txtOpenSim);
-            this.tabRegionServer.Location = new System.Drawing.Point(4, 22);
-            this.tabRegionServer.Name = "tabRegionServer";
-            this.tabRegionServer.Padding = new System.Windows.Forms.Padding(3);
-            this.tabRegionServer.Size = new System.Drawing.Size(325, 259);
-            this.tabRegionServer.TabIndex = 0;
-            this.tabRegionServer.Text = "Region server";
-            this.tabRegionServer.UseVisualStyleBackColor = true;
-            // 
-            // txtInputRegionServer
-            // 
-            this.txtInputRegionServer.Location = new System.Drawing.Point(53, 239);
-            this.txtInputRegionServer.Name = "txtInputRegionServer";
-            this.txtInputRegionServer.Size = new System.Drawing.Size(272, 20);
-            this.txtInputRegionServer.TabIndex = 5;
-            // 
-            // label1
-            // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(0, 242);
-            this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(57, 13);
-            this.label1.TabIndex = 4;
-            this.label1.Text = "Command:";
-            // 
-            // txtOpenSim
-            // 
-            this.txtOpenSim.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtOpenSim.Location = new System.Drawing.Point(0, 0);
-            this.txtOpenSim.Multiline = true;
-            this.txtOpenSim.Name = "txtOpenSim";
-            this.txtOpenSim.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-            this.txtOpenSim.Size = new System.Drawing.Size(325, 236);
-            this.txtOpenSim.TabIndex = 0;
-            // 
-            // tabUserServer
-            // 
-            this.tabUserServer.Controls.Add(this.txtInputUserServer);
-            this.tabUserServer.Controls.Add(this.label2);
-            this.tabUserServer.Controls.Add(this.txtUserServer);
-            this.tabUserServer.Location = new System.Drawing.Point(4, 22);
-            this.tabUserServer.Name = "tabUserServer";
-            this.tabUserServer.Padding = new System.Windows.Forms.Padding(3);
-            this.tabUserServer.Size = new System.Drawing.Size(325, 259);
-            this.tabUserServer.TabIndex = 1;
-            this.tabUserServer.Text = "User server";
-            this.tabUserServer.UseVisualStyleBackColor = true;
-            // 
-            // txtInputUserServer
-            // 
-            this.txtInputUserServer.Location = new System.Drawing.Point(53, 239);
-            this.txtInputUserServer.Name = "txtInputUserServer";
-            this.txtInputUserServer.Size = new System.Drawing.Size(272, 20);
-            this.txtInputUserServer.TabIndex = 7;
-            // 
-            // label2
-            // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(0, 242);
-            this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(57, 13);
-            this.label2.TabIndex = 6;
-            this.label2.Text = "Command:";
-            // 
-            // txtUserServer
-            // 
-            this.txtUserServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtUserServer.Location = new System.Drawing.Point(0, 0);
-            this.txtUserServer.Multiline = true;
-            this.txtUserServer.Name = "txtUserServer";
-            this.txtUserServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-            this.txtUserServer.Size = new System.Drawing.Size(325, 236);
-            this.txtUserServer.TabIndex = 1;
-            // 
-            // tabAssetServer
-            // 
-            this.tabAssetServer.Controls.Add(this.txtInputAssetServer);
-            this.tabAssetServer.Controls.Add(this.label3);
-            this.tabAssetServer.Controls.Add(this.txtAssetServer);
-            this.tabAssetServer.Location = new System.Drawing.Point(4, 22);
-            this.tabAssetServer.Name = "tabAssetServer";
-            this.tabAssetServer.Size = new System.Drawing.Size(325, 259);
-            this.tabAssetServer.TabIndex = 2;
-            this.tabAssetServer.Text = "Asset server";
-            this.tabAssetServer.UseVisualStyleBackColor = true;
-            // 
-            // txtInputAssetServer
-            // 
-            this.txtInputAssetServer.Location = new System.Drawing.Point(53, 239);
-            this.txtInputAssetServer.Name = "txtInputAssetServer";
-            this.txtInputAssetServer.Size = new System.Drawing.Size(272, 20);
-            this.txtInputAssetServer.TabIndex = 7;
-            // 
-            // label3
-            // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(0, 242);
-            this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(57, 13);
-            this.label3.TabIndex = 6;
-            this.label3.Text = "Command:";
-            // 
-            // txtAssetServer
-            // 
-            this.txtAssetServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtAssetServer.Location = new System.Drawing.Point(0, 0);
-            this.txtAssetServer.Multiline = true;
-            this.txtAssetServer.Name = "txtAssetServer";
-            this.txtAssetServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-            this.txtAssetServer.Size = new System.Drawing.Size(325, 236);
-            this.txtAssetServer.TabIndex = 1;
-            // 
-            // tabGridServer
-            // 
-            this.tabGridServer.Controls.Add(this.txtInputGridServer);
-            this.tabGridServer.Controls.Add(this.label4);
-            this.tabGridServer.Controls.Add(this.txtGridServer);
-            this.tabGridServer.Location = new System.Drawing.Point(4, 22);
-            this.tabGridServer.Name = "tabGridServer";
-            this.tabGridServer.Size = new System.Drawing.Size(325, 259);
-            this.tabGridServer.TabIndex = 3;
-            this.tabGridServer.Text = "Grid server";
-            this.tabGridServer.UseVisualStyleBackColor = true;
-            // 
-            // txtInputGridServer
-            // 
-            this.txtInputGridServer.Location = new System.Drawing.Point(53, 239);
-            this.txtInputGridServer.Name = "txtInputGridServer";
-            this.txtInputGridServer.Size = new System.Drawing.Size(272, 20);
-            this.txtInputGridServer.TabIndex = 7;
-            // 
-            // label4
-            // 
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(0, 242);
-            this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(57, 13);
-            this.label4.TabIndex = 6;
-            this.label4.Text = "Command:";
-            // 
-            // txtGridServer
-            // 
-            this.txtGridServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtGridServer.Location = new System.Drawing.Point(0, 0);
-            this.txtGridServer.Multiline = true;
-            this.txtGridServer.Name = "txtGridServer";
-            this.txtGridServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
-            this.txtGridServer.Size = new System.Drawing.Size(325, 236);
-            this.txtGridServer.TabIndex = 1;
-            // 
-            // label5
-            // 
-            this.label5.AutoSize = true;
-            this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label5.Location = new System.Drawing.Point(460, 55);
-            this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(205, 20);
-            this.label5.TabIndex = 11;
-            this.label5.Text = "Command Line Switches";
-            // 
-            // noProbe1
-            // 
-            this.noProbe1.AutoSize = true;
-            this.noProbe1.Location = new System.Drawing.Point(359, 275);
-            this.noProbe1.Name = "noProbe1";
-            this.noProbe1.Size = new System.Drawing.Size(68, 17);
-            this.noProbe1.TabIndex = 12;
-            this.noProbe1.Text = "-noprobe";
-            this.toolTip1.SetToolTip(this.noProbe1, "disable hardware probe");
-            this.noProbe1.UseVisualStyleBackColor = true;
-            // 
-            // label6
-            // 
-            this.label6.AutoSize = true;
-            this.label6.Location = new System.Drawing.Point(8, 415);
-            this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(0, 13);
-            this.label6.TabIndex = 14;
-            this.label6.Click += new System.EventHandler(this.label6_Click);
-            // 
-            // multiple1
-            // 
-            this.multiple1.AutoSize = true;
-            this.multiple1.Location = new System.Drawing.Point(359, 185);
-            this.multiple1.Name = "multiple1";
-            this.multiple1.Size = new System.Drawing.Size(64, 17);
-            this.multiple1.TabIndex = 15;
-            this.multiple1.Text = "-multiple";
-            this.toolTip1.SetToolTip(this.multiple1, "allow multiple viewers");
-            this.multiple1.UseVisualStyleBackColor = true;
-            // 
-            // label7
-            // 
-            this.label7.AutoSize = true;
-            this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label7.Location = new System.Drawing.Point(8, 396);
-            this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(338, 13);
-            this.label7.TabIndex = 16;
-            this.label7.Text = "Client Command Line String Used and Program Messages :";
-            // 
-            // noMultiple1
-            // 
-            this.noMultiple1.AutoSize = true;
-            this.noMultiple1.Location = new System.Drawing.Point(359, 260);
-            this.noMultiple1.Name = "noMultiple1";
-            this.noMultiple1.Size = new System.Drawing.Size(76, 17);
-            this.noMultiple1.TabIndex = 17;
-            this.noMultiple1.Text = "-nomultiple";
-            this.toolTip1.SetToolTip(this.noMultiple1, "block multiple viewers (secondlife.exe instances)");
-            this.noMultiple1.UseVisualStyleBackColor = true;
-            // 
-            // ignorepixeldepth1
-            // 
-            this.ignorepixeldepth1.AutoSize = true;
-            this.ignorepixeldepth1.Location = new System.Drawing.Point(359, 125);
-            this.ignorepixeldepth1.Name = "ignorepixeldepth1";
-            this.ignorepixeldepth1.Size = new System.Drawing.Size(106, 17);
-            this.ignorepixeldepth1.TabIndex = 18;
-            this.ignorepixeldepth1.Text = "-ignorepixeldepth";
-            this.toolTip1.SetToolTip(this.ignorepixeldepth1, "ignore pixel depth settings");
-            this.ignorepixeldepth1.UseVisualStyleBackColor = true;
-            // 
-            // nothread1
-            // 
-            this.nothread1.AutoSize = true;
-            this.nothread1.Location = new System.Drawing.Point(359, 305);
-            this.nothread1.Name = "nothread1";
-            this.nothread1.Size = new System.Drawing.Size(71, 17);
-            this.nothread1.TabIndex = 19;
-            this.nothread1.Text = "-nothread";
-            this.toolTip1.SetToolTip(this.nothread1, "run VFS (Virtual File System) in single thread");
-            this.nothread1.UseVisualStyleBackColor = true;
-            // 
-            // safe1
-            // 
-            this.safe1.AutoSize = true;
-            this.safe1.Location = new System.Drawing.Point(359, 365);
-            this.safe1.Name = "safe1";
-            this.safe1.Size = new System.Drawing.Size(49, 17);
-            this.safe1.TabIndex = 20;
-            this.safe1.Text = "-safe";
-            this.toolTip1.SetToolTip(this.safe1, "reset preferences, run in safe mode");
-            this.safe1.UseVisualStyleBackColor = true;
-            // 
-            // noconsole1
-            // 
-            this.noconsole1.AutoSize = true;
-            this.noconsole1.Location = new System.Drawing.Point(359, 215);
-            this.noconsole1.Name = "noconsole1";
-            this.noconsole1.Size = new System.Drawing.Size(78, 17);
-            this.noconsole1.TabIndex = 21;
-            this.noconsole1.Text = "-noconsole";
-            this.toolTip1.SetToolTip(this.noconsole1, "hide the console if not already hidden");
-            this.noconsole1.UseVisualStyleBackColor = true;
-            // 
-            // log1
-            // 
-            this.log1.AutoSize = true;
-            this.log1.Location = new System.Drawing.Point(359, 170);
-            this.log1.Name = "log1";
-            this.log1.Size = new System.Drawing.Size(43, 17);
-            this.log1.TabIndex = 22;
-            this.log1.Text = "-log";
-            this.toolTip1.SetToolTip(this.log1, "--no info avail--");
-            this.log1.UseVisualStyleBackColor = true;
-            // 
-            // helperuri1
-            // 
-            this.helperuri1.AutoSize = true;
-            this.helperuri1.Location = new System.Drawing.Point(359, 110);
-            this.helperuri1.Name = "helperuri1";
-            this.helperuri1.Size = new System.Drawing.Size(69, 17);
-            this.helperuri1.TabIndex = 23;
-            this.helperuri1.Text = "-helperuri";
-            this.toolTip1.SetToolTip(this.helperuri1, "--no info avail--");
-            this.helperuri1.UseVisualStyleBackColor = true;
-            // 
-            // autologin1
-            // 
-            this.autologin1.AutoSize = true;
-            this.autologin1.Location = new System.Drawing.Point(359, 65);
-            this.autologin1.Name = "autologin1";
-            this.autologin1.Size = new System.Drawing.Size(75, 17);
-            this.autologin1.TabIndex = 24;
-            this.autologin1.Text = "--autologin";
-            this.toolTip1.SetToolTip(this.autologin1, "--no info avail--");
-            this.autologin1.UseVisualStyleBackColor = true;
-            // 
-            // dialog1
-            // 
-            this.dialog1.AutoSize = true;
-            this.dialog1.Location = new System.Drawing.Point(359, 95);
-            this.dialog1.Name = "dialog1";
-            this.dialog1.Size = new System.Drawing.Size(57, 17);
-            this.dialog1.TabIndex = 25;
-            this.dialog1.Text = "-dialog";
-            this.toolTip1.SetToolTip(this.dialog1, "some arcane dialog box that is impossible to raise");
-            this.dialog1.UseVisualStyleBackColor = true;
-            // 
-            // previous1
-            // 
-            this.previous1.AutoSize = true;
-            this.previous1.Location = new System.Drawing.Point(359, 335);
-            this.previous1.Name = "previous1";
-            this.previous1.Size = new System.Drawing.Size(69, 17);
-            this.previous1.TabIndex = 26;
-            this.previous1.Text = "-previous";
-            this.toolTip1.SetToolTip(this.previous1, "--no info avail--");
-            this.previous1.UseVisualStyleBackColor = true;
-            // 
-            // simple1
-            // 
-            this.simple1.AutoSize = true;
-            this.simple1.Location = new System.Drawing.Point(359, 380);
-            this.simple1.Name = "simple1";
-            this.simple1.Size = new System.Drawing.Size(58, 17);
-            this.simple1.TabIndex = 27;
-            this.simple1.Text = "-simple";
-            this.toolTip1.SetToolTip(this.simple1, "--no info avail--");
-            this.simple1.UseVisualStyleBackColor = true;
-            // 
-            // noinvlib1
-            // 
-            this.noinvlib1.AutoSize = true;
-            this.noinvlib1.Location = new System.Drawing.Point(359, 245);
-            this.noinvlib1.Name = "noinvlib1";
-            this.noinvlib1.Size = new System.Drawing.Size(65, 17);
-            this.noinvlib1.TabIndex = 28;
-            this.noinvlib1.Text = "-noinvlib";
-            this.toolTip1.SetToolTip(this.noinvlib1, "do not request inventory library");
-            this.noinvlib1.UseVisualStyleBackColor = true;
-            // 
-            // debugst1
-            // 
-            this.debugst1.AutoSize = true;
-            this.debugst1.Location = new System.Drawing.Point(359, 80);
-            this.debugst1.Name = "debugst1";
-            this.debugst1.Size = new System.Drawing.Size(67, 17);
-            this.debugst1.TabIndex = 30;
-            this.debugst1.Text = "-debugst";
-            this.toolTip1.SetToolTip(this.debugst1, "debug mask");
-            this.debugst1.UseVisualStyleBackColor = true;
-            // 
-            // spanish1
-            // 
-            this.spanish1.AutoSize = true;
-            this.spanish1.Location = new System.Drawing.Point(359, 395);
-            this.spanish1.Name = "spanish1";
-            this.spanish1.Size = new System.Drawing.Size(65, 17);
-            this.spanish1.TabIndex = 31;
-            this.spanish1.Text = "-spanish";
-            this.toolTip1.SetToolTip(this.spanish1, "activate (incomplete) Spanish UI translation");
-            this.spanish1.UseVisualStyleBackColor = true;
-            // 
-            // korean1
-            // 
-            this.korean1.AutoSize = true;
-            this.korean1.Location = new System.Drawing.Point(359, 140);
-            this.korean1.Name = "korean1";
-            this.korean1.Size = new System.Drawing.Size(62, 17);
-            this.korean1.TabIndex = 32;
-            this.korean1.Text = "-korean";
-            this.toolTip1.SetToolTip(this.korean1, "activate (incomplete) Korean UI translation");
-            this.korean1.UseVisualStyleBackColor = true;
-            // 
-            // local1
-            // 
-            this.local1.AutoSize = true;
-            this.local1.Location = new System.Drawing.Point(359, 155);
-            this.local1.Name = "local1";
-            this.local1.Size = new System.Drawing.Size(51, 17);
-            this.local1.TabIndex = 46;
-            this.local1.Text = "-local";
-            this.toolTip1.SetToolTip(this.local1, "run without simulator");
-            this.local1.UseVisualStyleBackColor = true;
-            // 
-            // purge1
-            // 
-            this.purge1.AutoSize = true;
-            this.purge1.Location = new System.Drawing.Point(359, 350);
-            this.purge1.Name = "purge1";
-            this.purge1.Size = new System.Drawing.Size(56, 17);
-            this.purge1.TabIndex = 56;
-            this.purge1.Text = "-purge";
-            this.toolTip1.SetToolTip(this.purge1, "delete files in cache");
-            this.purge1.UseVisualStyleBackColor = true;
-            // 
-            // nofmod1
-            // 
-            this.nofmod1.AutoSize = true;
-            this.nofmod1.Location = new System.Drawing.Point(359, 230);
-            this.nofmod1.Name = "nofmod1";
-            this.nofmod1.Size = new System.Drawing.Size(64, 17);
-            this.nofmod1.TabIndex = 45;
-            this.nofmod1.Text = "-nofmod";
-            this.toolTip1.SetToolTip(this.nofmod1, "FMOD is the API used to distort sound while moving");
-            this.nofmod1.UseVisualStyleBackColor = true;
-            // 
-            // noaudio1
-            // 
-            this.noaudio1.AutoSize = true;
-            this.noaudio1.Location = new System.Drawing.Point(359, 200);
-            this.noaudio1.Name = "noaudio1";
-            this.noaudio1.Size = new System.Drawing.Size(67, 17);
-            this.noaudio1.TabIndex = 44;
-            this.noaudio1.Text = "-noaudio";
-            this.toolTip1.SetToolTip(this.noaudio1, "no audio, different from -nosound?");
-            this.noaudio1.UseVisualStyleBackColor = true;
-            // 
-            // nosound1
-            // 
-            this.nosound1.AutoSize = true;
-            this.nosound1.Location = new System.Drawing.Point(359, 290);
-            this.nosound1.Name = "nosound1";
-            this.nosound1.Size = new System.Drawing.Size(70, 17);
-            this.nosound1.TabIndex = 55;
-            this.nosound1.Text = "-nosound";
-            this.toolTip1.SetToolTip(this.nosound1, "no sound, different from -noaudio?");
-            this.nosound1.UseVisualStyleBackColor = true;
-            // 
-            // url1
-            // 
-            this.url1.AutoSize = true;
-            this.url1.Location = new System.Drawing.Point(488, 245);
-            this.url1.Name = "url1";
-            this.url1.Size = new System.Drawing.Size(40, 17);
-            this.url1.TabIndex = 43;
-            this.url1.Text = "-url";
-            this.toolTip1.SetToolTip(this.url1, "handles secondlife://sim/x/y/z URLs");
-            this.url1.UseVisualStyleBackColor = true;
-            // 
-            // port1
-            // 
-            this.port1.AutoSize = true;
-            this.port1.Location = new System.Drawing.Point(488, 171);
-            this.port1.Name = "port1";
-            this.port1.Size = new System.Drawing.Size(47, 17);
-            this.port1.TabIndex = 49;
-            this.port1.Text = "-port";
-            this.toolTip1.SetToolTip(this.port1, "Set the TCP port for the client; useful to run multiple instances of SL on the sa" +
-                    "me local home network. Values that may work: 13000 and 13001 (Valid numbers are " +
-                    "13000 to 13050)");
-            this.port1.UseVisualStyleBackColor = true;
-            // 
-            // simBox1
-            // 
-            this.simBox1.Location = new System.Drawing.Point(549, 243);
-            this.simBox1.Name = "simBox1";
-            this.simBox1.Size = new System.Drawing.Size(344, 20);
-            this.simBox1.TabIndex = 66;
-            this.simBox1.Text = "secondlife://lutra/127/128/60";
-            this.toolTip1.SetToolTip(this.simBox1, "type URL here");
-            // 
-            // portBox1
-            // 
-            this.portBox1.Location = new System.Drawing.Point(549, 169);
-            this.portBox1.Name = "portBox1";
-            this.portBox1.Size = new System.Drawing.Size(58, 20);
-            this.portBox1.TabIndex = 67;
-            this.portBox1.Text = "13000";
-            this.toolTip1.SetToolTip(this.portBox1, "enter port number here");
-            // 
-            // user1
-            // 
-            this.user1.AutoSize = true;
-            this.user1.Location = new System.Drawing.Point(488, 191);
-            this.user1.Name = "user1";
-            this.user1.Size = new System.Drawing.Size(49, 17);
-            this.user1.TabIndex = 42;
-            this.user1.Text = "-user";
-            this.user1.ThreeState = true;
-            this.toolTip1.SetToolTip(this.user1, "specify user server in dotted quad");
-            this.user1.UseVisualStyleBackColor = true;
-            // 
-            // quitAfter1
-            // 
-            this.quitAfter1.AutoSize = true;
-            this.quitAfter1.Location = new System.Drawing.Point(680, 65);
-            this.quitAfter1.Name = "quitAfter1";
-            this.quitAfter1.Size = new System.Drawing.Size(67, 17);
-            this.quitAfter1.TabIndex = 41;
-            this.quitAfter1.Text = "-quitafter";
-            this.toolTip1.SetToolTip(this.quitAfter1, "SL quits after elapsed time in seconds");
-            this.quitAfter1.UseVisualStyleBackColor = true;
-            // 
-            // techTag1
-            // 
-            this.techTag1.AutoSize = true;
-            this.techTag1.Location = new System.Drawing.Point(488, 211);
-            this.techTag1.Name = "techTag1";
-            this.techTag1.Size = new System.Drawing.Size(65, 17);
-            this.techTag1.TabIndex = 47;
-            this.techTag1.Text = "-techtag";
-            this.toolTip1.SetToolTip(this.techTag1, "unknown (but requires a parameter)");
-            this.techTag1.UseVisualStyleBackColor = true;
-            // 
-            // yield1
-            // 
-            this.yield1.AutoSize = true;
-            this.yield1.Location = new System.Drawing.Point(488, 91);
-            this.yield1.Name = "yield1";
-            this.yield1.Size = new System.Drawing.Size(50, 17);
-            this.yield1.TabIndex = 48;
-            this.yield1.Text = "-yield";
-            this.toolTip1.SetToolTip(this.yield1, "yield some idle time to local host (changed from - cooperative)");
-            this.yield1.UseVisualStyleBackColor = true;
-            // 
-            // logfile1
-            // 
-            this.logfile1.AutoSize = true;
-            this.logfile1.Location = new System.Drawing.Point(680, 125);
-            this.logfile1.Name = "logfile1";
-            this.logfile1.Size = new System.Drawing.Size(56, 17);
-            this.logfile1.TabIndex = 54;
-            this.logfile1.Text = "-logfile";
-            this.toolTip1.SetToolTip(this.logfile1, "change the log filename");
-            this.logfile1.UseVisualStyleBackColor = true;
-            // 
-            // settings1
-            // 
-            this.settings1.AutoSize = true;
-            this.settings1.Location = new System.Drawing.Point(680, 95);
-            this.settings1.Name = "settings1";
-            this.settings1.Size = new System.Drawing.Size(65, 17);
-            this.settings1.TabIndex = 53;
-            this.settings1.Text = "-settings";
-            this.toolTip1.SetToolTip(this.settings1, "specify configuration filename; default is \"settings.ini\"");
-            this.settings1.UseVisualStyleBackColor = true;
-            // 
-            // outbw1
-            // 
-            this.outbw1.AutoSize = true;
-            this.outbw1.Location = new System.Drawing.Point(488, 111);
-            this.outbw1.Name = "outbw1";
-            this.outbw1.Size = new System.Drawing.Size(58, 17);
-            this.outbw1.TabIndex = 52;
-            this.outbw1.Text = "-outbw";
-            this.toolTip1.SetToolTip(this.outbw1, "set outgoing bandwidth");
-            this.outbw1.UseVisualStyleBackColor = true;
-            // 
-            // inbw1
-            // 
-            this.inbw1.AutoSize = true;
-            this.inbw1.Location = new System.Drawing.Point(488, 131);
-            this.inbw1.Name = "inbw1";
-            this.inbw1.Size = new System.Drawing.Size(51, 17);
-            this.inbw1.TabIndex = 51;
-            this.inbw1.Text = "-inbw";
-            this.toolTip1.SetToolTip(this.inbw1, "set incoming bandwidth");
-            this.inbw1.UseVisualStyleBackColor = true;
-            // 
-            // drop1
-            // 
-            this.drop1.AutoSize = true;
-            this.drop1.Location = new System.Drawing.Point(488, 151);
-            this.drop1.Name = "drop1";
-            this.drop1.Size = new System.Drawing.Size(50, 17);
-            this.drop1.TabIndex = 50;
-            this.drop1.Text = "-drop";
-            this.toolTip1.SetToolTip(this.drop1, "drop number% of incoming network packets");
-            this.drop1.UseVisualStyleBackColor = true;
-            // 
-            // dropBox1
-            // 
-            this.dropBox1.Location = new System.Drawing.Point(549, 149);
-            this.dropBox1.Name = "dropBox1";
-            this.dropBox1.Size = new System.Drawing.Size(58, 20);
-            this.dropBox1.TabIndex = 68;
-            this.dropBox1.Text = "0";
-            this.toolTip1.SetToolTip(this.dropBox1, "enter percent of packets to drop");
-            // 
-            // inbwBox1
-            // 
-            this.inbwBox1.Location = new System.Drawing.Point(549, 129);
-            this.inbwBox1.Name = "inbwBox1";
-            this.inbwBox1.Size = new System.Drawing.Size(57, 20);
-            this.inbwBox1.TabIndex = 69;
-            this.toolTip1.SetToolTip(this.inbwBox1, "enter incoming cap");
-            // 
-            // outbwBox1
-            // 
-            this.outbwBox1.Location = new System.Drawing.Point(549, 109);
-            this.outbwBox1.Name = "outbwBox1";
-            this.outbwBox1.Size = new System.Drawing.Size(58, 20);
-            this.outbwBox1.TabIndex = 70;
-            this.toolTip1.SetToolTip(this.outbwBox1, "enter outgoing cap");
-            // 
-            // settingsBox1
-            // 
-            this.settingsBox1.Location = new System.Drawing.Point(741, 93);
-            this.settingsBox1.Name = "settingsBox1";
-            this.settingsBox1.Size = new System.Drawing.Size(152, 20);
-            this.settingsBox1.TabIndex = 71;
-            this.settingsBox1.Text = "settings.ini";
-            this.toolTip1.SetToolTip(this.settingsBox1, "enter settings file name");
-            // 
-            // logfileBox1
-            // 
-            this.logfileBox1.Location = new System.Drawing.Point(733, 123);
-            this.logfileBox1.Name = "logfileBox1";
-            this.logfileBox1.Size = new System.Drawing.Size(160, 20);
-            this.logfileBox1.TabIndex = 72;
-            this.logfileBox1.Text = "mylogfile.txt";
-            this.toolTip1.SetToolTip(this.logfileBox1, "enter log file name here");
-            // 
-            // yieldBox1
-            // 
-            this.yieldBox1.Location = new System.Drawing.Point(549, 89);
-            this.yieldBox1.Name = "yieldBox1";
-            this.yieldBox1.Size = new System.Drawing.Size(58, 20);
-            this.yieldBox1.TabIndex = 73;
-            this.toolTip1.SetToolTip(this.yieldBox1, "enter time to yield in ");
-            // 
-            // techtagBox1
-            // 
-            this.techtagBox1.Location = new System.Drawing.Point(549, 209);
-            this.techtagBox1.Name = "techtagBox1";
-            this.techtagBox1.Size = new System.Drawing.Size(58, 20);
-            this.techtagBox1.TabIndex = 74;
-            this.toolTip1.SetToolTip(this.techtagBox1, "enter unknown param here");
-            // 
-            // quitafterBox1
-            // 
-            this.quitafterBox1.Location = new System.Drawing.Point(745, 63);
-            this.quitafterBox1.Name = "quitafterBox1";
-            this.quitafterBox1.Size = new System.Drawing.Size(148, 20);
-            this.quitafterBox1.TabIndex = 75;
-            this.toolTip1.SetToolTip(this.quitafterBox1, "enter time in seconds");
-            // 
-            // comboBox1
-            // 
-            this.comboBox1.FormattingEnabled = true;
-            this.comboBox1.Items.AddRange(new object[] {
-            "agni",
-            "colo",
-            "dmz",
-            "durga",
-            "siva"});
-            this.comboBox1.Location = new System.Drawing.Point(549, 189);
-            this.comboBox1.Name = "comboBox1";
-            this.comboBox1.Size = new System.Drawing.Size(58, 21);
-            this.comboBox1.TabIndex = 76;
-            this.comboBox1.Text = "agni";
-            this.toolTip1.SetToolTip(this.comboBox1, "select LL user server");
-            // 
-            // loginuri1
-            // 
-            this.loginuri1.AutoSize = true;
-            this.loginuri1.Location = new System.Drawing.Point(488, 275);
-            this.loginuri1.Name = "loginuri1";
-            this.loginuri1.Size = new System.Drawing.Size(62, 17);
-            this.loginuri1.TabIndex = 77;
-            this.loginuri1.Text = "-loginuri";
-            this.toolTip1.SetToolTip(this.loginuri1, "login server and CGI script to use");
-            this.loginuri1.UseVisualStyleBackColor = true;
-            // 
-            // loginuriBox1
-            // 
-            this.loginuriBox1.Location = new System.Drawing.Point(549, 273);
-            this.loginuriBox1.Name = "loginuriBox1";
-            this.loginuriBox1.Size = new System.Drawing.Size(344, 20);
-            this.loginuriBox1.TabIndex = 78;
-            this.loginuriBox1.Text = "localhost:9000";
-            this.toolTip1.SetToolTip(this.loginuriBox1, "enter login url here");
-            // 
-            // set1
-            // 
-            this.set1.AutoSize = true;
-            this.set1.Location = new System.Drawing.Point(636, 185);
-            this.set1.Name = "set1";
-            this.set1.Size = new System.Drawing.Size(43, 17);
-            this.set1.TabIndex = 79;
-            this.set1.Text = "-set";
-            this.toolTip1.SetToolTip(this.set1, "specify value of a particular configuration variable; can be used multiple times " +
-                    "in a single command-line");
-            this.set1.UseVisualStyleBackColor = true;
-            // 
-            // setBox1
-            // 
-            this.setBox1.Location = new System.Drawing.Point(680, 183);
-            this.setBox1.Name = "setBox1";
-            this.setBox1.Size = new System.Drawing.Size(213, 20);
-            this.setBox1.TabIndex = 80;
-            this.setBox1.Text = "SystemLanguage en-us";
-            this.toolTip1.SetToolTip(this.setBox1, "enter params");
-            // 
-            // errmask1
-            // 
-            this.errmask1.AutoSize = true;
-            this.errmask1.Location = new System.Drawing.Point(636, 154);
-            this.errmask1.Name = "errmask1";
-            this.errmask1.Size = new System.Drawing.Size(66, 17);
-            this.errmask1.TabIndex = 81;
-            this.errmask1.Text = "-errmask";
-            this.toolTip1.SetToolTip(this.errmask1, "32-bit bitmask for error type mask");
-            this.errmask1.UseVisualStyleBackColor = true;
-            // 
-            // skin1
-            // 
-            this.skin1.AutoSize = true;
-            this.skin1.Location = new System.Drawing.Point(635, 215);
-            this.skin1.Name = "skin1";
-            this.skin1.Size = new System.Drawing.Size(48, 17);
-            this.skin1.TabIndex = 82;
-            this.skin1.Text = "-skin";
-            this.toolTip1.SetToolTip(this.skin1, "load skins//skin.xml as the default UI appearance (incomplete)");
-            this.skin1.UseVisualStyleBackColor = true;
-            // 
-            // login1
-            // 
-            this.login1.AutoSize = true;
-            this.login1.Location = new System.Drawing.Point(457, 304);
-            this.login1.Name = "login1";
-            this.login1.Size = new System.Drawing.Size(51, 17);
-            this.login1.TabIndex = 83;
-            this.login1.Text = "-login";
-            this.toolTip1.SetToolTip(this.login1, "log in as a user");
-            this.login1.UseVisualStyleBackColor = true;
-            // 
-            // errmaskBox1
-            // 
-            this.errmaskBox1.Location = new System.Drawing.Point(704, 153);
-            this.errmaskBox1.Name = "errmaskBox1";
-            this.errmaskBox1.Size = new System.Drawing.Size(189, 20);
-            this.errmaskBox1.TabIndex = 84;
-            this.toolTip1.SetToolTip(this.errmaskBox1, "32-bit bitmask for error type mask");
-            // 
-            // skinBox1
-            // 
-            this.skinBox1.Location = new System.Drawing.Point(679, 213);
-            this.skinBox1.Name = "skinBox1";
-            this.skinBox1.Size = new System.Drawing.Size(214, 20);
-            this.skinBox1.TabIndex = 85;
-            this.skinBox1.Text = "C://Secondlife//";
-            this.toolTip1.SetToolTip(this.skinBox1, "enter directory where skin.xml is");
-            // 
-            // firstBox1
-            // 
-            this.firstBox1.Location = new System.Drawing.Point(549, 303);
-            this.firstBox1.Name = "firstBox1";
-            this.firstBox1.Size = new System.Drawing.Size(80, 20);
-            this.firstBox1.TabIndex = 86;
-            this.firstBox1.Text = "Test";
-            this.toolTip1.SetToolTip(this.firstBox1, "firstname");
-            // 
-            // lastBox1
-            // 
-            this.lastBox1.Location = new System.Drawing.Point(668, 303);
-            this.lastBox1.Name = "lastBox1";
-            this.lastBox1.Size = new System.Drawing.Size(80, 20);
-            this.lastBox1.TabIndex = 92;
-            this.lastBox1.Text = "User";
-            this.toolTip1.SetToolTip(this.lastBox1, "lastname");
-            // 
-            // noutc1
-            // 
-            this.noutc1.AutoSize = true;
-            this.noutc1.Location = new System.Drawing.Point(359, 320);
-            this.noutc1.Name = "noutc1";
-            this.noutc1.Size = new System.Drawing.Size(56, 17);
-            this.noutc1.TabIndex = 29;
-            this.noutc1.Text = "-noutc";
-            this.toolTip1.SetToolTip(this.noutc1, "logs in local time, not UTC");
-            this.noutc1.UseVisualStyleBackColor = true;
-            // 
-            // passBox1
-            // 
-            this.passBox1.Location = new System.Drawing.Point(790, 303);
-            this.passBox1.Name = "passBox1";
-            this.passBox1.Size = new System.Drawing.Size(103, 20);
-            this.passBox1.TabIndex = 93;
-            this.passBox1.Text = "test";
-            this.toolTip1.SetToolTip(this.passBox1, "password");
-            // 
-            // raw1
-            // 
-            this.raw1.AutoSize = true;
-            this.raw1.Location = new System.Drawing.Point(457, 336);
-            this.raw1.Name = "raw1";
-            this.raw1.Size = new System.Drawing.Size(81, 17);
-            this.raw1.TabIndex = 94;
-            this.raw1.Text = "Raw CMD :";
-            this.toolTip1.SetToolTip(this.raw1, "Raw CMD options, may crash everything");
-            this.raw1.UseVisualStyleBackColor = true;
-            // 
-            // rawBox1
-            // 
-            this.rawBox1.Location = new System.Drawing.Point(549, 333);
-            this.rawBox1.Name = "rawBox1";
-            this.rawBox1.Size = new System.Drawing.Size(344, 20);
-            this.rawBox1.TabIndex = 95;
-            this.toolTip1.SetToolTip(this.rawBox1, "Raw CMD options, may crash everything");
-            // 
-            // clear1
-            // 
-            this.clear1.Location = new System.Drawing.Point(178, 366);
-            this.clear1.Name = "clear1";
-            this.clear1.Size = new System.Drawing.Size(80, 23);
-            this.clear1.TabIndex = 96;
-            this.clear1.Text = "Clear";
-            this.toolTip1.SetToolTip(this.clear1, "clear all switch boxes");
-            this.clear1.UseVisualStyleBackColor = true;
-            this.clear1.Click += new System.EventHandler(this.clear1_Click);
-            // 
-            // nataddress1
-            // 
-            this.nataddress1.Location = new System.Drawing.Point(457, 389);
-            this.nataddress1.Name = "nataddress1";
-            this.nataddress1.Size = new System.Drawing.Size(436, 20);
-            this.nataddress1.TabIndex = 58;
-            this.nataddress1.Text = "UNUSED ATM";
-            this.nataddress1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
-            // 
-            // label8
-            // 
-            this.label8.AutoSize = true;
-            this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label8.Location = new System.Drawing.Point(588, 360);
-            this.label8.Name = "label8";
-            this.label8.Size = new System.Drawing.Size(175, 20);
-            this.label8.TabIndex = 59;
-            this.label8.Text = "World/NAT Address :";
-            // 
-            // label9
-            // 
-            this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label9.Location = new System.Drawing.Point(633, 27);
-            this.label9.Name = "label9";
-            this.label9.Size = new System.Drawing.Size(47, 20);
-            this.label9.TabIndex = 60;
-            this.label9.Text = "Path :";
-            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // exeBox1
-            // 
-            this.exeBox1.Location = new System.Drawing.Point(530, 27);
-            this.exeBox1.Name = "exeBox1";
-            this.exeBox1.Size = new System.Drawing.Size(100, 20);
-            this.exeBox1.TabIndex = 61;
-            this.exeBox1.Text = "Secondlife.exe";
-            // 
-            // label10
-            // 
-            this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
-            this.label10.Location = new System.Drawing.Point(392, 27);
-            this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(138, 20);
-            this.label10.TabIndex = 62;
-            this.label10.Text = "Executable Name :";
-            this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
-            // 
-            // label11
-            // 
-            this.label11.AutoSize = true;
-            this.label11.Location = new System.Drawing.Point(514, 306);
-            this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(32, 13);
-            this.label11.TabIndex = 89;
-            this.label11.Text = "First :";
-            // 
-            // label12
-            // 
-            this.label12.AutoSize = true;
-            this.label12.Location = new System.Drawing.Point(632, 306);
-            this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(33, 13);
-            this.label12.TabIndex = 90;
-            this.label12.Text = "Last :";
-            // 
-            // label13
-            // 
-            this.label13.AutoSize = true;
-            this.label13.Location = new System.Drawing.Point(751, 306);
-            this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(36, 13);
-            this.label13.TabIndex = 91;
-            this.label13.Text = "Pass :";
-            // 
-            // Main
-            // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(900, 431);
-            this.Controls.Add(this.clear1);
-            this.Controls.Add(this.rawBox1);
-            this.Controls.Add(this.raw1);
-            this.Controls.Add(this.passBox1);
-            this.Controls.Add(this.lastBox1);
-            this.Controls.Add(this.label13);
-            this.Controls.Add(this.label12);
-            this.Controls.Add(this.label11);
-            this.Controls.Add(this.firstBox1);
-            this.Controls.Add(this.skinBox1);
-            this.Controls.Add(this.errmaskBox1);
-            this.Controls.Add(this.login1);
-            this.Controls.Add(this.skin1);
-            this.Controls.Add(this.errmask1);
-            this.Controls.Add(this.setBox1);
-            this.Controls.Add(this.set1);
-            this.Controls.Add(this.loginuriBox1);
-            this.Controls.Add(this.loginuri1);
-            this.Controls.Add(this.comboBox1);
-            this.Controls.Add(this.quitafterBox1);
-            this.Controls.Add(this.techtagBox1);
-            this.Controls.Add(this.yieldBox1);
-            this.Controls.Add(this.logfileBox1);
-            this.Controls.Add(this.settingsBox1);
-            this.Controls.Add(this.outbwBox1);
-            this.Controls.Add(this.inbwBox1);
-            this.Controls.Add(this.dropBox1);
-            this.Controls.Add(this.portBox1);
-            this.Controls.Add(this.simBox1);
-            this.Controls.Add(this.label10);
-            this.Controls.Add(this.exeBox1);
-            this.Controls.Add(this.label9);
-            this.Controls.Add(this.label8);
-            this.Controls.Add(this.nataddress1);
-            this.Controls.Add(this.purge1);
-            this.Controls.Add(this.nosound1);
-            this.Controls.Add(this.logfile1);
-            this.Controls.Add(this.settings1);
-            this.Controls.Add(this.outbw1);
-            this.Controls.Add(this.inbw1);
-            this.Controls.Add(this.drop1);
-            this.Controls.Add(this.port1);
-            this.Controls.Add(this.yield1);
-            this.Controls.Add(this.techTag1);
-            this.Controls.Add(this.local1);
-            this.Controls.Add(this.nofmod1);
-            this.Controls.Add(this.noaudio1);
-            this.Controls.Add(this.url1);
-            this.Controls.Add(this.user1);
-            this.Controls.Add(this.quitAfter1);
-            this.Controls.Add(this.korean1);
-            this.Controls.Add(this.spanish1);
-            this.Controls.Add(this.debugst1);
-            this.Controls.Add(this.noutc1);
-            this.Controls.Add(this.noinvlib1);
-            this.Controls.Add(this.simple1);
-            this.Controls.Add(this.previous1);
-            this.Controls.Add(this.dialog1);
-            this.Controls.Add(this.autologin1);
-            this.Controls.Add(this.helperuri1);
-            this.Controls.Add(this.log1);
-            this.Controls.Add(this.noconsole1);
-            this.Controls.Add(this.safe1);
-            this.Controls.Add(this.nothread1);
-            this.Controls.Add(this.ignorepixeldepth1);
-            this.Controls.Add(this.noMultiple1);
-            this.Controls.Add(this.label7);
-            this.Controls.Add(this.multiple1);
-            this.Controls.Add(this.label6);
-            this.Controls.Add(this.noProbe1);
-            this.Controls.Add(this.label5);
-            this.Controls.Add(this.Launch1);
-            this.Controls.Add(this.clientBox1);
-            this.Controls.Add(this.rbGridServer);
-            this.Controls.Add(this.rbStandAloneMode);
-            this.Controls.Add(this.rbGridRegionMode);
-            this.Controls.Add(this.btnStop);
-            this.Controls.Add(this.btnStart);
-            this.Controls.Add(this.gbLog);
-            this.Controls.Add(this.menuStrip1);
-            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
-            this.MainMenuStrip = this.menuStrip1;
-            this.MaximizeBox = false;
-            this.Name = "Main";
-            this.Text = "OpenSim";
-            this.toolTip1.SetToolTip(this, "logs in local time, not UTC");
-            this.Load += new System.EventHandler(this.Main_Load);
-            this.menuStrip1.ResumeLayout(false);
-            this.menuStrip1.PerformLayout();
-            this.gbLog.ResumeLayout(false);
-            this.tabLogs.ResumeLayout(false);
-            this.tabMainLog.ResumeLayout(false);
-            this.tabMainLog.PerformLayout();
-            this.tabRegionServer.ResumeLayout(false);
-            this.tabRegionServer.PerformLayout();
-            this.tabUserServer.ResumeLayout(false);
-            this.tabUserServer.PerformLayout();
-            this.tabAssetServer.ResumeLayout(false);
-            this.tabAssetServer.PerformLayout();
-            this.tabGridServer.ResumeLayout(false);
-            this.tabGridServer.PerformLayout();
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.MenuStrip menuStrip1;
-        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
-        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
-        private System.Windows.Forms.Timer timer1;
-        private System.Windows.Forms.TextBox clientBox1;
-        private System.Windows.Forms.Button btnStart;
-        private System.Windows.Forms.Button btnStop;
-        private System.Windows.Forms.RadioButton rbGridRegionMode;
-        private System.Windows.Forms.RadioButton rbStandAloneMode;
-        private System.Windows.Forms.RadioButton rbGridServer;
-        private System.Windows.Forms.Button Launch1;
-        private System.Windows.Forms.GroupBox gbLog;
-        private System.Windows.Forms.TabControl tabLogs;
-        private System.Windows.Forms.TabPage tabMainLog;
-        private System.Windows.Forms.TabPage tabRegionServer;
-        private System.Windows.Forms.Label label1;
-        private System.Windows.Forms.TextBox txtOpenSim;
-        private System.Windows.Forms.TabPage tabUserServer;
-        private System.Windows.Forms.Label label2;
-        private System.Windows.Forms.TextBox txtUserServer;
-        private System.Windows.Forms.TabPage tabAssetServer;
-        private System.Windows.Forms.Label label3;
-        private System.Windows.Forms.TextBox txtAssetServer;
-        private System.Windows.Forms.TabPage tabGridServer;
-        private System.Windows.Forms.Label label4;
-        private System.Windows.Forms.TextBox txtGridServer;
-        private System.Windows.Forms.TextBox txtMainLog;
-        private System.Windows.Forms.Label label5;
-        private System.Windows.Forms.CheckBox noProbe1;
-        private System.Windows.Forms.Label label6;
-        private System.Windows.Forms.CheckBox multiple1;
-        private System.Windows.Forms.Label label7;
-        private System.Windows.Forms.CheckBox noMultiple1;
-        private System.Windows.Forms.CheckBox ignorepixeldepth1;
-        private System.Windows.Forms.CheckBox nothread1;
-        private System.Windows.Forms.CheckBox safe1;
-        private System.Windows.Forms.CheckBox noconsole1;
-        private System.Windows.Forms.CheckBox log1;
-        private System.Windows.Forms.CheckBox helperuri1;
-        private System.Windows.Forms.CheckBox autologin1;
-        private System.Windows.Forms.ToolTip toolTip1;
-        private System.Windows.Forms.CheckBox dialog1;
-        private System.Windows.Forms.CheckBox previous1;
-        private System.Windows.Forms.CheckBox simple1;
-        private System.Windows.Forms.CheckBox noinvlib1;
-        private System.Windows.Forms.CheckBox noutc1;
-        private System.Windows.Forms.CheckBox debugst1;
-        private System.Windows.Forms.CheckBox spanish1;
-        private System.Windows.Forms.CheckBox korean1;
-        private System.Windows.Forms.CheckBox local1;
-        private System.Windows.Forms.CheckBox nofmod1;
-        private System.Windows.Forms.CheckBox noaudio1;
-        private System.Windows.Forms.CheckBox url1;
-        private System.Windows.Forms.CheckBox user1;
-        private System.Windows.Forms.CheckBox quitAfter1;
-        private System.Windows.Forms.CheckBox techTag1;
-        private System.Windows.Forms.CheckBox yield1;
-        private System.Windows.Forms.CheckBox purge1;
-        private System.Windows.Forms.CheckBox nosound1;
-        private System.Windows.Forms.CheckBox logfile1;
-        private System.Windows.Forms.CheckBox settings1;
-        private System.Windows.Forms.CheckBox outbw1;
-        private System.Windows.Forms.CheckBox inbw1;
-        private System.Windows.Forms.CheckBox drop1;
-        private System.Windows.Forms.CheckBox port1;
-        private System.Windows.Forms.TextBox nataddress1;
-        private System.Windows.Forms.Label label8;
-        private System.Windows.Forms.Label label9;
-        private System.Windows.Forms.TextBox exeBox1;
-        private System.Windows.Forms.Label label10;
-        private System.Windows.Forms.TextBox simBox1;
-        private System.Windows.Forms.TextBox portBox1;
-        private System.Windows.Forms.TextBox dropBox1;
-        private System.Windows.Forms.TextBox inbwBox1;
-        private System.Windows.Forms.TextBox outbwBox1;
-        private System.Windows.Forms.TextBox settingsBox1;
-        private System.Windows.Forms.TextBox logfileBox1;
-        private System.Windows.Forms.TextBox yieldBox1;
-        private System.Windows.Forms.TextBox techtagBox1;
-        private System.Windows.Forms.TextBox quitafterBox1;
-        private System.Windows.Forms.ComboBox comboBox1;
-        private System.Windows.Forms.CheckBox loginuri1;
-        private System.Windows.Forms.TextBox loginuriBox1;
-        private System.Windows.Forms.CheckBox set1;
-        private System.Windows.Forms.TextBox setBox1;
-        private System.Windows.Forms.CheckBox errmask1;
-        private System.Windows.Forms.CheckBox skin1;
-        private System.Windows.Forms.CheckBox login1;
-        private System.Windows.Forms.TextBox errmaskBox1;
-        private System.Windows.Forms.TextBox skinBox1;
-        private System.Windows.Forms.TextBox firstBox1;
-        private System.Windows.Forms.Label label11;
-        private System.Windows.Forms.Label label12;
-        private System.Windows.Forms.Label label13;
-        private System.Windows.Forms.TextBox lastBox1;
-        private System.Windows.Forms.TextBox passBox1;
-        private InputTextBoxControl txtInputUserServer;
-        private InputTextBoxControl txtInputAssetServer;
-        private InputTextBoxControl txtInputRegionServer;
-        private InputTextBoxControl txtInputGridServer;
-        private System.Windows.Forms.CheckBox raw1;
-        private System.Windows.Forms.TextBox rawBox1;
-        private System.Windows.Forms.Button clear1;
-    }
-}
-
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+namespace OpenSim.GUI
+{
+    partial class Main
+    {
+        /// 
+        /// Required designer variable.
+        /// 
+        private System.ComponentModel.IContainer components = null;
+
+        /// 
+        /// Clean up any resources being used.
+        /// 
+        /// true if managed resources should be disposed; otherwise, false.
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// 
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// 
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+            this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+            this.timer1 = new System.Windows.Forms.Timer(this.components);
+            this.clientBox1 = new System.Windows.Forms.TextBox();
+            this.btnStart = new System.Windows.Forms.Button();
+            this.btnStop = new System.Windows.Forms.Button();
+            this.rbGridRegionMode = new System.Windows.Forms.RadioButton();
+            this.rbStandAloneMode = new System.Windows.Forms.RadioButton();
+            this.rbGridServer = new System.Windows.Forms.RadioButton();
+            this.Launch1 = new System.Windows.Forms.Button();
+            this.gbLog = new System.Windows.Forms.GroupBox();
+            this.tabLogs = new System.Windows.Forms.TabControl();
+            this.tabMainLog = new System.Windows.Forms.TabPage();
+            this.txtMainLog = new System.Windows.Forms.TextBox();
+            this.tabRegionServer = new System.Windows.Forms.TabPage();
+            this.txtInputRegionServer = new OpenSim.GUI.InputTextBoxControl();
+            this.label1 = new System.Windows.Forms.Label();
+            this.txtOpenSim = new System.Windows.Forms.TextBox();
+            this.tabUserServer = new System.Windows.Forms.TabPage();
+            this.txtInputUserServer = new OpenSim.GUI.InputTextBoxControl();
+            this.label2 = new System.Windows.Forms.Label();
+            this.txtUserServer = new System.Windows.Forms.TextBox();
+            this.tabAssetServer = new System.Windows.Forms.TabPage();
+            this.txtInputAssetServer = new OpenSim.GUI.InputTextBoxControl();
+            this.label3 = new System.Windows.Forms.Label();
+            this.txtAssetServer = new System.Windows.Forms.TextBox();
+            this.tabGridServer = new System.Windows.Forms.TabPage();
+            this.txtInputGridServer = new OpenSim.GUI.InputTextBoxControl();
+            this.label4 = new System.Windows.Forms.Label();
+            this.txtGridServer = new System.Windows.Forms.TextBox();
+            this.label5 = new System.Windows.Forms.Label();
+            this.noProbe1 = new System.Windows.Forms.CheckBox();
+            this.label6 = new System.Windows.Forms.Label();
+            this.multiple1 = new System.Windows.Forms.CheckBox();
+            this.label7 = new System.Windows.Forms.Label();
+            this.noMultiple1 = new System.Windows.Forms.CheckBox();
+            this.ignorepixeldepth1 = new System.Windows.Forms.CheckBox();
+            this.nothread1 = new System.Windows.Forms.CheckBox();
+            this.safe1 = new System.Windows.Forms.CheckBox();
+            this.noconsole1 = new System.Windows.Forms.CheckBox();
+            this.log1 = new System.Windows.Forms.CheckBox();
+            this.helperuri1 = new System.Windows.Forms.CheckBox();
+            this.autologin1 = new System.Windows.Forms.CheckBox();
+            this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
+            this.dialog1 = new System.Windows.Forms.CheckBox();
+            this.previous1 = new System.Windows.Forms.CheckBox();
+            this.simple1 = new System.Windows.Forms.CheckBox();
+            this.noinvlib1 = new System.Windows.Forms.CheckBox();
+            this.debugst1 = new System.Windows.Forms.CheckBox();
+            this.spanish1 = new System.Windows.Forms.CheckBox();
+            this.korean1 = new System.Windows.Forms.CheckBox();
+            this.local1 = new System.Windows.Forms.CheckBox();
+            this.purge1 = new System.Windows.Forms.CheckBox();
+            this.nofmod1 = new System.Windows.Forms.CheckBox();
+            this.noaudio1 = new System.Windows.Forms.CheckBox();
+            this.nosound1 = new System.Windows.Forms.CheckBox();
+            this.url1 = new System.Windows.Forms.CheckBox();
+            this.port1 = new System.Windows.Forms.CheckBox();
+            this.simBox1 = new System.Windows.Forms.TextBox();
+            this.portBox1 = new System.Windows.Forms.TextBox();
+            this.user1 = new System.Windows.Forms.CheckBox();
+            this.quitAfter1 = new System.Windows.Forms.CheckBox();
+            this.techTag1 = new System.Windows.Forms.CheckBox();
+            this.yield1 = new System.Windows.Forms.CheckBox();
+            this.logfile1 = new System.Windows.Forms.CheckBox();
+            this.settings1 = new System.Windows.Forms.CheckBox();
+            this.outbw1 = new System.Windows.Forms.CheckBox();
+            this.inbw1 = new System.Windows.Forms.CheckBox();
+            this.drop1 = new System.Windows.Forms.CheckBox();
+            this.dropBox1 = new System.Windows.Forms.TextBox();
+            this.inbwBox1 = new System.Windows.Forms.TextBox();
+            this.outbwBox1 = new System.Windows.Forms.TextBox();
+            this.settingsBox1 = new System.Windows.Forms.TextBox();
+            this.logfileBox1 = new System.Windows.Forms.TextBox();
+            this.yieldBox1 = new System.Windows.Forms.TextBox();
+            this.techtagBox1 = new System.Windows.Forms.TextBox();
+            this.quitafterBox1 = new System.Windows.Forms.TextBox();
+            this.comboBox1 = new System.Windows.Forms.ComboBox();
+            this.loginuri1 = new System.Windows.Forms.CheckBox();
+            this.loginuriBox1 = new System.Windows.Forms.TextBox();
+            this.set1 = new System.Windows.Forms.CheckBox();
+            this.setBox1 = new System.Windows.Forms.TextBox();
+            this.errmask1 = new System.Windows.Forms.CheckBox();
+            this.skin1 = new System.Windows.Forms.CheckBox();
+            this.login1 = new System.Windows.Forms.CheckBox();
+            this.errmaskBox1 = new System.Windows.Forms.TextBox();
+            this.skinBox1 = new System.Windows.Forms.TextBox();
+            this.firstBox1 = new System.Windows.Forms.TextBox();
+            this.lastBox1 = new System.Windows.Forms.TextBox();
+            this.noutc1 = new System.Windows.Forms.CheckBox();
+            this.passBox1 = new System.Windows.Forms.TextBox();
+            this.raw1 = new System.Windows.Forms.CheckBox();
+            this.rawBox1 = new System.Windows.Forms.TextBox();
+            this.clear1 = new System.Windows.Forms.Button();
+            this.nataddress1 = new System.Windows.Forms.TextBox();
+            this.label8 = new System.Windows.Forms.Label();
+            this.label9 = new System.Windows.Forms.Label();
+            this.exeBox1 = new System.Windows.Forms.TextBox();
+            this.label10 = new System.Windows.Forms.Label();
+            this.label11 = new System.Windows.Forms.Label();
+            this.label12 = new System.Windows.Forms.Label();
+            this.label13 = new System.Windows.Forms.Label();
+            this.menuStrip1.SuspendLayout();
+            this.gbLog.SuspendLayout();
+            this.tabLogs.SuspendLayout();
+            this.tabMainLog.SuspendLayout();
+            this.tabRegionServer.SuspendLayout();
+            this.tabUserServer.SuspendLayout();
+            this.tabAssetServer.SuspendLayout();
+            this.tabGridServer.SuspendLayout();
+            this.SuspendLayout();
+            // 
+            // menuStrip1
+            // 
+            this.menuStrip1.AutoSize = false;
+            this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.fileToolStripMenuItem});
+            this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+            this.menuStrip1.Name = "menuStrip1";
+            this.menuStrip1.Size = new System.Drawing.Size(900, 20);
+            this.menuStrip1.TabIndex = 7;
+            this.menuStrip1.Text = "menuStrip1";
+            // 
+            // fileToolStripMenuItem
+            // 
+            this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.exitToolStripMenuItem});
+            this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
+            this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 16);
+            this.fileToolStripMenuItem.Text = "File";
+            // 
+            // exitToolStripMenuItem
+            // 
+            this.exitToolStripMenuItem.Name = "exitToolStripMenuItem";
+            this.exitToolStripMenuItem.Size = new System.Drawing.Size(130, 22);
+            this.exitToolStripMenuItem.Text = "Exit Cleanly";
+            this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click);
+            // 
+            // timer1
+            // 
+            this.timer1.Enabled = true;
+            // 
+            // clientBox1
+            // 
+            this.clientBox1.Location = new System.Drawing.Point(680, 27);
+            this.clientBox1.Name = "clientBox1";
+            this.clientBox1.Size = new System.Drawing.Size(213, 20);
+            this.clientBox1.TabIndex = 8;
+            this.clientBox1.Text = "C://Secondlife//";
+            // 
+            // btnStart
+            // 
+            this.btnStart.Location = new System.Drawing.Point(7, 366);
+            this.btnStart.Name = "btnStart";
+            this.btnStart.Size = new System.Drawing.Size(80, 23);
+            this.btnStart.TabIndex = 2;
+            this.btnStart.Text = "Start";
+            this.btnStart.UseVisualStyleBackColor = true;
+            this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
+            // 
+            // btnStop
+            // 
+            this.btnStop.Location = new System.Drawing.Point(92, 366);
+            this.btnStop.Name = "btnStop";
+            this.btnStop.Size = new System.Drawing.Size(80, 23);
+            this.btnStop.TabIndex = 3;
+            this.btnStop.Text = "Stop";
+            this.btnStop.UseVisualStyleBackColor = true;
+            this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
+            // 
+            // rbGridRegionMode
+            // 
+            this.rbGridRegionMode.AutoSize = true;
+            this.rbGridRegionMode.Location = new System.Drawing.Point(96, 27);
+            this.rbGridRegionMode.Name = "rbGridRegionMode";
+            this.rbGridRegionMode.Size = new System.Drawing.Size(76, 17);
+            this.rbGridRegionMode.TabIndex = 4;
+            this.rbGridRegionMode.Text = "Grid region";
+            this.rbGridRegionMode.UseVisualStyleBackColor = true;
+            this.rbGridRegionMode.CheckedChanged += new System.EventHandler(this.rbGridRegionMode_CheckedChanged);
+            // 
+            // rbStandAloneMode
+            // 
+            this.rbStandAloneMode.AutoSize = true;
+            this.rbStandAloneMode.Checked = true;
+            this.rbStandAloneMode.Location = new System.Drawing.Point(8, 27);
+            this.rbStandAloneMode.Name = "rbStandAloneMode";
+            this.rbStandAloneMode.Size = new System.Drawing.Size(82, 17);
+            this.rbStandAloneMode.TabIndex = 5;
+            this.rbStandAloneMode.TabStop = true;
+            this.rbStandAloneMode.Text = "Stand alone";
+            this.rbStandAloneMode.UseVisualStyleBackColor = true;
+            this.rbStandAloneMode.CheckedChanged += new System.EventHandler(this.rbStandAloneMode_CheckedChanged);
+            // 
+            // rbGridServer
+            // 
+            this.rbGridServer.AutoSize = true;
+            this.rbGridServer.Location = new System.Drawing.Point(178, 27);
+            this.rbGridServer.Name = "rbGridServer";
+            this.rbGridServer.Size = new System.Drawing.Size(76, 17);
+            this.rbGridServer.TabIndex = 6;
+            this.rbGridServer.Text = "Grid server";
+            this.rbGridServer.UseVisualStyleBackColor = true;
+            this.rbGridServer.CheckedChanged += new System.EventHandler(this.rbGridServer_CheckedChanged);
+            // 
+            // Launch1
+            // 
+            this.Launch1.Location = new System.Drawing.Point(264, 366);
+            this.Launch1.Name = "Launch1";
+            this.Launch1.Size = new System.Drawing.Size(80, 23);
+            this.Launch1.TabIndex = 9;
+            this.Launch1.Text = "Client Launch";
+            this.Launch1.UseVisualStyleBackColor = true;
+            this.Launch1.Click += new System.EventHandler(this.Launch1_Click);
+            // 
+            // gbLog
+            // 
+            this.gbLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.gbLog.Controls.Add(this.tabLogs);
+            this.gbLog.Location = new System.Drawing.Point(8, 50);
+            this.gbLog.Name = "gbLog";
+            this.gbLog.Size = new System.Drawing.Size(345, 310);
+            this.gbLog.TabIndex = 1;
+            this.gbLog.TabStop = false;
+            this.gbLog.Text = "Logs";
+            // 
+            // tabLogs
+            // 
+            this.tabLogs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.tabLogs.Controls.Add(this.tabMainLog);
+            this.tabLogs.Controls.Add(this.tabRegionServer);
+            this.tabLogs.Controls.Add(this.tabUserServer);
+            this.tabLogs.Controls.Add(this.tabAssetServer);
+            this.tabLogs.Controls.Add(this.tabGridServer);
+            this.tabLogs.Location = new System.Drawing.Point(6, 19);
+            this.tabLogs.Name = "tabLogs";
+            this.tabLogs.SelectedIndex = 0;
+            this.tabLogs.Size = new System.Drawing.Size(333, 285);
+            this.tabLogs.TabIndex = 0;
+            // 
+            // tabMainLog
+            // 
+            this.tabMainLog.Controls.Add(this.txtMainLog);
+            this.tabMainLog.Location = new System.Drawing.Point(4, 22);
+            this.tabMainLog.Name = "tabMainLog";
+            this.tabMainLog.Size = new System.Drawing.Size(325, 259);
+            this.tabMainLog.TabIndex = 4;
+            this.tabMainLog.Text = "Main log";
+            this.tabMainLog.UseVisualStyleBackColor = true;
+            // 
+            // txtMainLog
+            // 
+            this.txtMainLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtMainLog.Location = new System.Drawing.Point(0, 0);
+            this.txtMainLog.Multiline = true;
+            this.txtMainLog.Name = "txtMainLog";
+            this.txtMainLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtMainLog.Size = new System.Drawing.Size(325, 259);
+            this.txtMainLog.TabIndex = 1;
+            // 
+            // tabRegionServer
+            // 
+            this.tabRegionServer.Controls.Add(this.txtInputRegionServer);
+            this.tabRegionServer.Controls.Add(this.label1);
+            this.tabRegionServer.Controls.Add(this.txtOpenSim);
+            this.tabRegionServer.Location = new System.Drawing.Point(4, 22);
+            this.tabRegionServer.Name = "tabRegionServer";
+            this.tabRegionServer.Padding = new System.Windows.Forms.Padding(3);
+            this.tabRegionServer.Size = new System.Drawing.Size(325, 259);
+            this.tabRegionServer.TabIndex = 0;
+            this.tabRegionServer.Text = "Region server";
+            this.tabRegionServer.UseVisualStyleBackColor = true;
+            // 
+            // txtInputRegionServer
+            // 
+            this.txtInputRegionServer.Location = new System.Drawing.Point(53, 239);
+            this.txtInputRegionServer.Name = "txtInputRegionServer";
+            this.txtInputRegionServer.Size = new System.Drawing.Size(272, 20);
+            this.txtInputRegionServer.TabIndex = 5;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(0, 242);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(57, 13);
+            this.label1.TabIndex = 4;
+            this.label1.Text = "Command:";
+            // 
+            // txtOpenSim
+            // 
+            this.txtOpenSim.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtOpenSim.Location = new System.Drawing.Point(0, 0);
+            this.txtOpenSim.Multiline = true;
+            this.txtOpenSim.Name = "txtOpenSim";
+            this.txtOpenSim.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtOpenSim.Size = new System.Drawing.Size(325, 236);
+            this.txtOpenSim.TabIndex = 0;
+            // 
+            // tabUserServer
+            // 
+            this.tabUserServer.Controls.Add(this.txtInputUserServer);
+            this.tabUserServer.Controls.Add(this.label2);
+            this.tabUserServer.Controls.Add(this.txtUserServer);
+            this.tabUserServer.Location = new System.Drawing.Point(4, 22);
+            this.tabUserServer.Name = "tabUserServer";
+            this.tabUserServer.Padding = new System.Windows.Forms.Padding(3);
+            this.tabUserServer.Size = new System.Drawing.Size(325, 259);
+            this.tabUserServer.TabIndex = 1;
+            this.tabUserServer.Text = "User server";
+            this.tabUserServer.UseVisualStyleBackColor = true;
+            // 
+            // txtInputUserServer
+            // 
+            this.txtInputUserServer.Location = new System.Drawing.Point(53, 239);
+            this.txtInputUserServer.Name = "txtInputUserServer";
+            this.txtInputUserServer.Size = new System.Drawing.Size(272, 20);
+            this.txtInputUserServer.TabIndex = 7;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(0, 242);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(57, 13);
+            this.label2.TabIndex = 6;
+            this.label2.Text = "Command:";
+            // 
+            // txtUserServer
+            // 
+            this.txtUserServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtUserServer.Location = new System.Drawing.Point(0, 0);
+            this.txtUserServer.Multiline = true;
+            this.txtUserServer.Name = "txtUserServer";
+            this.txtUserServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtUserServer.Size = new System.Drawing.Size(325, 236);
+            this.txtUserServer.TabIndex = 1;
+            // 
+            // tabAssetServer
+            // 
+            this.tabAssetServer.Controls.Add(this.txtInputAssetServer);
+            this.tabAssetServer.Controls.Add(this.label3);
+            this.tabAssetServer.Controls.Add(this.txtAssetServer);
+            this.tabAssetServer.Location = new System.Drawing.Point(4, 22);
+            this.tabAssetServer.Name = "tabAssetServer";
+            this.tabAssetServer.Size = new System.Drawing.Size(325, 259);
+            this.tabAssetServer.TabIndex = 2;
+            this.tabAssetServer.Text = "Asset server";
+            this.tabAssetServer.UseVisualStyleBackColor = true;
+            // 
+            // txtInputAssetServer
+            // 
+            this.txtInputAssetServer.Location = new System.Drawing.Point(53, 239);
+            this.txtInputAssetServer.Name = "txtInputAssetServer";
+            this.txtInputAssetServer.Size = new System.Drawing.Size(272, 20);
+            this.txtInputAssetServer.TabIndex = 7;
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(0, 242);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(57, 13);
+            this.label3.TabIndex = 6;
+            this.label3.Text = "Command:";
+            // 
+            // txtAssetServer
+            // 
+            this.txtAssetServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtAssetServer.Location = new System.Drawing.Point(0, 0);
+            this.txtAssetServer.Multiline = true;
+            this.txtAssetServer.Name = "txtAssetServer";
+            this.txtAssetServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtAssetServer.Size = new System.Drawing.Size(325, 236);
+            this.txtAssetServer.TabIndex = 1;
+            // 
+            // tabGridServer
+            // 
+            this.tabGridServer.Controls.Add(this.txtInputGridServer);
+            this.tabGridServer.Controls.Add(this.label4);
+            this.tabGridServer.Controls.Add(this.txtGridServer);
+            this.tabGridServer.Location = new System.Drawing.Point(4, 22);
+            this.tabGridServer.Name = "tabGridServer";
+            this.tabGridServer.Size = new System.Drawing.Size(325, 259);
+            this.tabGridServer.TabIndex = 3;
+            this.tabGridServer.Text = "Grid server";
+            this.tabGridServer.UseVisualStyleBackColor = true;
+            // 
+            // txtInputGridServer
+            // 
+            this.txtInputGridServer.Location = new System.Drawing.Point(53, 239);
+            this.txtInputGridServer.Name = "txtInputGridServer";
+            this.txtInputGridServer.Size = new System.Drawing.Size(272, 20);
+            this.txtInputGridServer.TabIndex = 7;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(0, 242);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(57, 13);
+            this.label4.TabIndex = 6;
+            this.label4.Text = "Command:";
+            // 
+            // txtGridServer
+            // 
+            this.txtGridServer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                        | System.Windows.Forms.AnchorStyles.Left)
+                        | System.Windows.Forms.AnchorStyles.Right)));
+            this.txtGridServer.Location = new System.Drawing.Point(0, 0);
+            this.txtGridServer.Multiline = true;
+            this.txtGridServer.Name = "txtGridServer";
+            this.txtGridServer.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+            this.txtGridServer.Size = new System.Drawing.Size(325, 236);
+            this.txtGridServer.TabIndex = 1;
+            // 
+            // label5
+            // 
+            this.label5.AutoSize = true;
+            this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label5.Location = new System.Drawing.Point(460, 55);
+            this.label5.Name = "label5";
+            this.label5.Size = new System.Drawing.Size(205, 20);
+            this.label5.TabIndex = 11;
+            this.label5.Text = "Command Line Switches";
+            // 
+            // noProbe1
+            // 
+            this.noProbe1.AutoSize = true;
+            this.noProbe1.Location = new System.Drawing.Point(359, 275);
+            this.noProbe1.Name = "noProbe1";
+            this.noProbe1.Size = new System.Drawing.Size(68, 17);
+            this.noProbe1.TabIndex = 12;
+            this.noProbe1.Text = "-noprobe";
+            this.toolTip1.SetToolTip(this.noProbe1, "disable hardware probe");
+            this.noProbe1.UseVisualStyleBackColor = true;
+            // 
+            // label6
+            // 
+            this.label6.AutoSize = true;
+            this.label6.Location = new System.Drawing.Point(8, 415);
+            this.label6.Name = "label6";
+            this.label6.Size = new System.Drawing.Size(0, 13);
+            this.label6.TabIndex = 14;
+            this.label6.Click += new System.EventHandler(this.label6_Click);
+            // 
+            // multiple1
+            // 
+            this.multiple1.AutoSize = true;
+            this.multiple1.Location = new System.Drawing.Point(359, 185);
+            this.multiple1.Name = "multiple1";
+            this.multiple1.Size = new System.Drawing.Size(64, 17);
+            this.multiple1.TabIndex = 15;
+            this.multiple1.Text = "-multiple";
+            this.toolTip1.SetToolTip(this.multiple1, "allow multiple viewers");
+            this.multiple1.UseVisualStyleBackColor = true;
+            // 
+            // label7
+            // 
+            this.label7.AutoSize = true;
+            this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label7.Location = new System.Drawing.Point(8, 396);
+            this.label7.Name = "label7";
+            this.label7.Size = new System.Drawing.Size(338, 13);
+            this.label7.TabIndex = 16;
+            this.label7.Text = "Client Command Line String Used and Program Messages :";
+            // 
+            // noMultiple1
+            // 
+            this.noMultiple1.AutoSize = true;
+            this.noMultiple1.Location = new System.Drawing.Point(359, 260);
+            this.noMultiple1.Name = "noMultiple1";
+            this.noMultiple1.Size = new System.Drawing.Size(76, 17);
+            this.noMultiple1.TabIndex = 17;
+            this.noMultiple1.Text = "-nomultiple";
+            this.toolTip1.SetToolTip(this.noMultiple1, "block multiple viewers (secondlife.exe instances)");
+            this.noMultiple1.UseVisualStyleBackColor = true;
+            // 
+            // ignorepixeldepth1
+            // 
+            this.ignorepixeldepth1.AutoSize = true;
+            this.ignorepixeldepth1.Location = new System.Drawing.Point(359, 125);
+            this.ignorepixeldepth1.Name = "ignorepixeldepth1";
+            this.ignorepixeldepth1.Size = new System.Drawing.Size(106, 17);
+            this.ignorepixeldepth1.TabIndex = 18;
+            this.ignorepixeldepth1.Text = "-ignorepixeldepth";
+            this.toolTip1.SetToolTip(this.ignorepixeldepth1, "ignore pixel depth settings");
+            this.ignorepixeldepth1.UseVisualStyleBackColor = true;
+            // 
+            // nothread1
+            // 
+            this.nothread1.AutoSize = true;
+            this.nothread1.Location = new System.Drawing.Point(359, 305);
+            this.nothread1.Name = "nothread1";
+            this.nothread1.Size = new System.Drawing.Size(71, 17);
+            this.nothread1.TabIndex = 19;
+            this.nothread1.Text = "-nothread";
+            this.toolTip1.SetToolTip(this.nothread1, "run VFS (Virtual File System) in single thread");
+            this.nothread1.UseVisualStyleBackColor = true;
+            // 
+            // safe1
+            // 
+            this.safe1.AutoSize = true;
+            this.safe1.Location = new System.Drawing.Point(359, 365);
+            this.safe1.Name = "safe1";
+            this.safe1.Size = new System.Drawing.Size(49, 17);
+            this.safe1.TabIndex = 20;
+            this.safe1.Text = "-safe";
+            this.toolTip1.SetToolTip(this.safe1, "reset preferences, run in safe mode");
+            this.safe1.UseVisualStyleBackColor = true;
+            // 
+            // noconsole1
+            // 
+            this.noconsole1.AutoSize = true;
+            this.noconsole1.Location = new System.Drawing.Point(359, 215);
+            this.noconsole1.Name = "noconsole1";
+            this.noconsole1.Size = new System.Drawing.Size(78, 17);
+            this.noconsole1.TabIndex = 21;
+            this.noconsole1.Text = "-noconsole";
+            this.toolTip1.SetToolTip(this.noconsole1, "hide the console if not already hidden");
+            this.noconsole1.UseVisualStyleBackColor = true;
+            // 
+            // log1
+            // 
+            this.log1.AutoSize = true;
+            this.log1.Location = new System.Drawing.Point(359, 170);
+            this.log1.Name = "log1";
+            this.log1.Size = new System.Drawing.Size(43, 17);
+            this.log1.TabIndex = 22;
+            this.log1.Text = "-log";
+            this.toolTip1.SetToolTip(this.log1, "--no info avail--");
+            this.log1.UseVisualStyleBackColor = true;
+            // 
+            // helperuri1
+            // 
+            this.helperuri1.AutoSize = true;
+            this.helperuri1.Location = new System.Drawing.Point(359, 110);
+            this.helperuri1.Name = "helperuri1";
+            this.helperuri1.Size = new System.Drawing.Size(69, 17);
+            this.helperuri1.TabIndex = 23;
+            this.helperuri1.Text = "-helperuri";
+            this.toolTip1.SetToolTip(this.helperuri1, "--no info avail--");
+            this.helperuri1.UseVisualStyleBackColor = true;
+            // 
+            // autologin1
+            // 
+            this.autologin1.AutoSize = true;
+            this.autologin1.Location = new System.Drawing.Point(359, 65);
+            this.autologin1.Name = "autologin1";
+            this.autologin1.Size = new System.Drawing.Size(75, 17);
+            this.autologin1.TabIndex = 24;
+            this.autologin1.Text = "--autologin";
+            this.toolTip1.SetToolTip(this.autologin1, "--no info avail--");
+            this.autologin1.UseVisualStyleBackColor = true;
+            // 
+            // dialog1
+            // 
+            this.dialog1.AutoSize = true;
+            this.dialog1.Location = new System.Drawing.Point(359, 95);
+            this.dialog1.Name = "dialog1";
+            this.dialog1.Size = new System.Drawing.Size(57, 17);
+            this.dialog1.TabIndex = 25;
+            this.dialog1.Text = "-dialog";
+            this.toolTip1.SetToolTip(this.dialog1, "some arcane dialog box that is impossible to raise");
+            this.dialog1.UseVisualStyleBackColor = true;
+            // 
+            // previous1
+            // 
+            this.previous1.AutoSize = true;
+            this.previous1.Location = new System.Drawing.Point(359, 335);
+            this.previous1.Name = "previous1";
+            this.previous1.Size = new System.Drawing.Size(69, 17);
+            this.previous1.TabIndex = 26;
+            this.previous1.Text = "-previous";
+            this.toolTip1.SetToolTip(this.previous1, "--no info avail--");
+            this.previous1.UseVisualStyleBackColor = true;
+            // 
+            // simple1
+            // 
+            this.simple1.AutoSize = true;
+            this.simple1.Location = new System.Drawing.Point(359, 380);
+            this.simple1.Name = "simple1";
+            this.simple1.Size = new System.Drawing.Size(58, 17);
+            this.simple1.TabIndex = 27;
+            this.simple1.Text = "-simple";
+            this.toolTip1.SetToolTip(this.simple1, "--no info avail--");
+            this.simple1.UseVisualStyleBackColor = true;
+            // 
+            // noinvlib1
+            // 
+            this.noinvlib1.AutoSize = true;
+            this.noinvlib1.Location = new System.Drawing.Point(359, 245);
+            this.noinvlib1.Name = "noinvlib1";
+            this.noinvlib1.Size = new System.Drawing.Size(65, 17);
+            this.noinvlib1.TabIndex = 28;
+            this.noinvlib1.Text = "-noinvlib";
+            this.toolTip1.SetToolTip(this.noinvlib1, "do not request inventory library");
+            this.noinvlib1.UseVisualStyleBackColor = true;
+            // 
+            // debugst1
+            // 
+            this.debugst1.AutoSize = true;
+            this.debugst1.Location = new System.Drawing.Point(359, 80);
+            this.debugst1.Name = "debugst1";
+            this.debugst1.Size = new System.Drawing.Size(67, 17);
+            this.debugst1.TabIndex = 30;
+            this.debugst1.Text = "-debugst";
+            this.toolTip1.SetToolTip(this.debugst1, "debug mask");
+            this.debugst1.UseVisualStyleBackColor = true;
+            // 
+            // spanish1
+            // 
+            this.spanish1.AutoSize = true;
+            this.spanish1.Location = new System.Drawing.Point(359, 395);
+            this.spanish1.Name = "spanish1";
+            this.spanish1.Size = new System.Drawing.Size(65, 17);
+            this.spanish1.TabIndex = 31;
+            this.spanish1.Text = "-spanish";
+            this.toolTip1.SetToolTip(this.spanish1, "activate (incomplete) Spanish UI translation");
+            this.spanish1.UseVisualStyleBackColor = true;
+            // 
+            // korean1
+            // 
+            this.korean1.AutoSize = true;
+            this.korean1.Location = new System.Drawing.Point(359, 140);
+            this.korean1.Name = "korean1";
+            this.korean1.Size = new System.Drawing.Size(62, 17);
+            this.korean1.TabIndex = 32;
+            this.korean1.Text = "-korean";
+            this.toolTip1.SetToolTip(this.korean1, "activate (incomplete) Korean UI translation");
+            this.korean1.UseVisualStyleBackColor = true;
+            // 
+            // local1
+            // 
+            this.local1.AutoSize = true;
+            this.local1.Location = new System.Drawing.Point(359, 155);
+            this.local1.Name = "local1";
+            this.local1.Size = new System.Drawing.Size(51, 17);
+            this.local1.TabIndex = 46;
+            this.local1.Text = "-local";
+            this.toolTip1.SetToolTip(this.local1, "run without simulator");
+            this.local1.UseVisualStyleBackColor = true;
+            // 
+            // purge1
+            // 
+            this.purge1.AutoSize = true;
+            this.purge1.Location = new System.Drawing.Point(359, 350);
+            this.purge1.Name = "purge1";
+            this.purge1.Size = new System.Drawing.Size(56, 17);
+            this.purge1.TabIndex = 56;
+            this.purge1.Text = "-purge";
+            this.toolTip1.SetToolTip(this.purge1, "delete files in cache");
+            this.purge1.UseVisualStyleBackColor = true;
+            // 
+            // nofmod1
+            // 
+            this.nofmod1.AutoSize = true;
+            this.nofmod1.Location = new System.Drawing.Point(359, 230);
+            this.nofmod1.Name = "nofmod1";
+            this.nofmod1.Size = new System.Drawing.Size(64, 17);
+            this.nofmod1.TabIndex = 45;
+            this.nofmod1.Text = "-nofmod";
+            this.toolTip1.SetToolTip(this.nofmod1, "FMOD is the API used to distort sound while moving");
+            this.nofmod1.UseVisualStyleBackColor = true;
+            // 
+            // noaudio1
+            // 
+            this.noaudio1.AutoSize = true;
+            this.noaudio1.Location = new System.Drawing.Point(359, 200);
+            this.noaudio1.Name = "noaudio1";
+            this.noaudio1.Size = new System.Drawing.Size(67, 17);
+            this.noaudio1.TabIndex = 44;
+            this.noaudio1.Text = "-noaudio";
+            this.toolTip1.SetToolTip(this.noaudio1, "no audio, different from -nosound?");
+            this.noaudio1.UseVisualStyleBackColor = true;
+            // 
+            // nosound1
+            // 
+            this.nosound1.AutoSize = true;
+            this.nosound1.Location = new System.Drawing.Point(359, 290);
+            this.nosound1.Name = "nosound1";
+            this.nosound1.Size = new System.Drawing.Size(70, 17);
+            this.nosound1.TabIndex = 55;
+            this.nosound1.Text = "-nosound";
+            this.toolTip1.SetToolTip(this.nosound1, "no sound, different from -noaudio?");
+            this.nosound1.UseVisualStyleBackColor = true;
+            // 
+            // url1
+            // 
+            this.url1.AutoSize = true;
+            this.url1.Location = new System.Drawing.Point(488, 245);
+            this.url1.Name = "url1";
+            this.url1.Size = new System.Drawing.Size(40, 17);
+            this.url1.TabIndex = 43;
+            this.url1.Text = "-url";
+            this.toolTip1.SetToolTip(this.url1, "handles secondlife://sim/x/y/z URLs");
+            this.url1.UseVisualStyleBackColor = true;
+            // 
+            // port1
+            // 
+            this.port1.AutoSize = true;
+            this.port1.Location = new System.Drawing.Point(488, 171);
+            this.port1.Name = "port1";
+            this.port1.Size = new System.Drawing.Size(47, 17);
+            this.port1.TabIndex = 49;
+            this.port1.Text = "-port";
+            this.toolTip1.SetToolTip(this.port1, "Set the TCP port for the client; useful to run multiple instances of SL on the sa" +
+                    "me local home network. Values that may work: 13000 and 13001 (Valid numbers are " +
+                    "13000 to 13050)");
+            this.port1.UseVisualStyleBackColor = true;
+            // 
+            // simBox1
+            // 
+            this.simBox1.Location = new System.Drawing.Point(549, 243);
+            this.simBox1.Name = "simBox1";
+            this.simBox1.Size = new System.Drawing.Size(344, 20);
+            this.simBox1.TabIndex = 66;
+            this.simBox1.Text = "secondlife://lutra/127/128/60";
+            this.toolTip1.SetToolTip(this.simBox1, "type URL here");
+            // 
+            // portBox1
+            // 
+            this.portBox1.Location = new System.Drawing.Point(549, 169);
+            this.portBox1.Name = "portBox1";
+            this.portBox1.Size = new System.Drawing.Size(58, 20);
+            this.portBox1.TabIndex = 67;
+            this.portBox1.Text = "13000";
+            this.toolTip1.SetToolTip(this.portBox1, "enter port number here");
+            // 
+            // user1
+            // 
+            this.user1.AutoSize = true;
+            this.user1.Location = new System.Drawing.Point(488, 191);
+            this.user1.Name = "user1";
+            this.user1.Size = new System.Drawing.Size(49, 17);
+            this.user1.TabIndex = 42;
+            this.user1.Text = "-user";
+            this.user1.ThreeState = true;
+            this.toolTip1.SetToolTip(this.user1, "specify user server in dotted quad");
+            this.user1.UseVisualStyleBackColor = true;
+            // 
+            // quitAfter1
+            // 
+            this.quitAfter1.AutoSize = true;
+            this.quitAfter1.Location = new System.Drawing.Point(680, 65);
+            this.quitAfter1.Name = "quitAfter1";
+            this.quitAfter1.Size = new System.Drawing.Size(67, 17);
+            this.quitAfter1.TabIndex = 41;
+            this.quitAfter1.Text = "-quitafter";
+            this.toolTip1.SetToolTip(this.quitAfter1, "SL quits after elapsed time in seconds");
+            this.quitAfter1.UseVisualStyleBackColor = true;
+            // 
+            // techTag1
+            // 
+            this.techTag1.AutoSize = true;
+            this.techTag1.Location = new System.Drawing.Point(488, 211);
+            this.techTag1.Name = "techTag1";
+            this.techTag1.Size = new System.Drawing.Size(65, 17);
+            this.techTag1.TabIndex = 47;
+            this.techTag1.Text = "-techtag";
+            this.toolTip1.SetToolTip(this.techTag1, "unknown (but requires a parameter)");
+            this.techTag1.UseVisualStyleBackColor = true;
+            // 
+            // yield1
+            // 
+            this.yield1.AutoSize = true;
+            this.yield1.Location = new System.Drawing.Point(488, 91);
+            this.yield1.Name = "yield1";
+            this.yield1.Size = new System.Drawing.Size(50, 17);
+            this.yield1.TabIndex = 48;
+            this.yield1.Text = "-yield";
+            this.toolTip1.SetToolTip(this.yield1, "yield some idle time to local host (changed from - cooperative)");
+            this.yield1.UseVisualStyleBackColor = true;
+            // 
+            // logfile1
+            // 
+            this.logfile1.AutoSize = true;
+            this.logfile1.Location = new System.Drawing.Point(680, 125);
+            this.logfile1.Name = "logfile1";
+            this.logfile1.Size = new System.Drawing.Size(56, 17);
+            this.logfile1.TabIndex = 54;
+            this.logfile1.Text = "-logfile";
+            this.toolTip1.SetToolTip(this.logfile1, "change the log filename");
+            this.logfile1.UseVisualStyleBackColor = true;
+            // 
+            // settings1
+            // 
+            this.settings1.AutoSize = true;
+            this.settings1.Location = new System.Drawing.Point(680, 95);
+            this.settings1.Name = "settings1";
+            this.settings1.Size = new System.Drawing.Size(65, 17);
+            this.settings1.TabIndex = 53;
+            this.settings1.Text = "-settings";
+            this.toolTip1.SetToolTip(this.settings1, "specify configuration filename; default is \"settings.ini\"");
+            this.settings1.UseVisualStyleBackColor = true;
+            // 
+            // outbw1
+            // 
+            this.outbw1.AutoSize = true;
+            this.outbw1.Location = new System.Drawing.Point(488, 111);
+            this.outbw1.Name = "outbw1";
+            this.outbw1.Size = new System.Drawing.Size(58, 17);
+            this.outbw1.TabIndex = 52;
+            this.outbw1.Text = "-outbw";
+            this.toolTip1.SetToolTip(this.outbw1, "set outgoing bandwidth");
+            this.outbw1.UseVisualStyleBackColor = true;
+            // 
+            // inbw1
+            // 
+            this.inbw1.AutoSize = true;
+            this.inbw1.Location = new System.Drawing.Point(488, 131);
+            this.inbw1.Name = "inbw1";
+            this.inbw1.Size = new System.Drawing.Size(51, 17);
+            this.inbw1.TabIndex = 51;
+            this.inbw1.Text = "-inbw";
+            this.toolTip1.SetToolTip(this.inbw1, "set incoming bandwidth");
+            this.inbw1.UseVisualStyleBackColor = true;
+            // 
+            // drop1
+            // 
+            this.drop1.AutoSize = true;
+            this.drop1.Location = new System.Drawing.Point(488, 151);
+            this.drop1.Name = "drop1";
+            this.drop1.Size = new System.Drawing.Size(50, 17);
+            this.drop1.TabIndex = 50;
+            this.drop1.Text = "-drop";
+            this.toolTip1.SetToolTip(this.drop1, "drop number% of incoming network packets");
+            this.drop1.UseVisualStyleBackColor = true;
+            // 
+            // dropBox1
+            // 
+            this.dropBox1.Location = new System.Drawing.Point(549, 149);
+            this.dropBox1.Name = "dropBox1";
+            this.dropBox1.Size = new System.Drawing.Size(58, 20);
+            this.dropBox1.TabIndex = 68;
+            this.dropBox1.Text = "0";
+            this.toolTip1.SetToolTip(this.dropBox1, "enter percent of packets to drop");
+            // 
+            // inbwBox1
+            // 
+            this.inbwBox1.Location = new System.Drawing.Point(549, 129);
+            this.inbwBox1.Name = "inbwBox1";
+            this.inbwBox1.Size = new System.Drawing.Size(57, 20);
+            this.inbwBox1.TabIndex = 69;
+            this.toolTip1.SetToolTip(this.inbwBox1, "enter incoming cap");
+            // 
+            // outbwBox1
+            // 
+            this.outbwBox1.Location = new System.Drawing.Point(549, 109);
+            this.outbwBox1.Name = "outbwBox1";
+            this.outbwBox1.Size = new System.Drawing.Size(58, 20);
+            this.outbwBox1.TabIndex = 70;
+            this.toolTip1.SetToolTip(this.outbwBox1, "enter outgoing cap");
+            // 
+            // settingsBox1
+            // 
+            this.settingsBox1.Location = new System.Drawing.Point(741, 93);
+            this.settingsBox1.Name = "settingsBox1";
+            this.settingsBox1.Size = new System.Drawing.Size(152, 20);
+            this.settingsBox1.TabIndex = 71;
+            this.settingsBox1.Text = "settings.ini";
+            this.toolTip1.SetToolTip(this.settingsBox1, "enter settings file name");
+            // 
+            // logfileBox1
+            // 
+            this.logfileBox1.Location = new System.Drawing.Point(733, 123);
+            this.logfileBox1.Name = "logfileBox1";
+            this.logfileBox1.Size = new System.Drawing.Size(160, 20);
+            this.logfileBox1.TabIndex = 72;
+            this.logfileBox1.Text = "mylogfile.txt";
+            this.toolTip1.SetToolTip(this.logfileBox1, "enter log file name here");
+            // 
+            // yieldBox1
+            // 
+            this.yieldBox1.Location = new System.Drawing.Point(549, 89);
+            this.yieldBox1.Name = "yieldBox1";
+            this.yieldBox1.Size = new System.Drawing.Size(58, 20);
+            this.yieldBox1.TabIndex = 73;
+            this.toolTip1.SetToolTip(this.yieldBox1, "enter time to yield in ");
+            // 
+            // techtagBox1
+            // 
+            this.techtagBox1.Location = new System.Drawing.Point(549, 209);
+            this.techtagBox1.Name = "techtagBox1";
+            this.techtagBox1.Size = new System.Drawing.Size(58, 20);
+            this.techtagBox1.TabIndex = 74;
+            this.toolTip1.SetToolTip(this.techtagBox1, "enter unknown param here");
+            // 
+            // quitafterBox1
+            // 
+            this.quitafterBox1.Location = new System.Drawing.Point(745, 63);
+            this.quitafterBox1.Name = "quitafterBox1";
+            this.quitafterBox1.Size = new System.Drawing.Size(148, 20);
+            this.quitafterBox1.TabIndex = 75;
+            this.toolTip1.SetToolTip(this.quitafterBox1, "enter time in seconds");
+            // 
+            // comboBox1
+            // 
+            this.comboBox1.FormattingEnabled = true;
+            this.comboBox1.Items.AddRange(new object[] {
+            "agni",
+            "colo",
+            "dmz",
+            "durga",
+            "siva"});
+            this.comboBox1.Location = new System.Drawing.Point(549, 189);
+            this.comboBox1.Name = "comboBox1";
+            this.comboBox1.Size = new System.Drawing.Size(58, 21);
+            this.comboBox1.TabIndex = 76;
+            this.comboBox1.Text = "agni";
+            this.toolTip1.SetToolTip(this.comboBox1, "select LL user server");
+            // 
+            // loginuri1
+            // 
+            this.loginuri1.AutoSize = true;
+            this.loginuri1.Location = new System.Drawing.Point(488, 275);
+            this.loginuri1.Name = "loginuri1";
+            this.loginuri1.Size = new System.Drawing.Size(62, 17);
+            this.loginuri1.TabIndex = 77;
+            this.loginuri1.Text = "-loginuri";
+            this.toolTip1.SetToolTip(this.loginuri1, "login server and CGI script to use");
+            this.loginuri1.UseVisualStyleBackColor = true;
+            // 
+            // loginuriBox1
+            // 
+            this.loginuriBox1.Location = new System.Drawing.Point(549, 273);
+            this.loginuriBox1.Name = "loginuriBox1";
+            this.loginuriBox1.Size = new System.Drawing.Size(344, 20);
+            this.loginuriBox1.TabIndex = 78;
+            this.loginuriBox1.Text = "localhost:9000";
+            this.toolTip1.SetToolTip(this.loginuriBox1, "enter login url here");
+            // 
+            // set1
+            // 
+            this.set1.AutoSize = true;
+            this.set1.Location = new System.Drawing.Point(636, 185);
+            this.set1.Name = "set1";
+            this.set1.Size = new System.Drawing.Size(43, 17);
+            this.set1.TabIndex = 79;
+            this.set1.Text = "-set";
+            this.toolTip1.SetToolTip(this.set1, "specify value of a particular configuration variable; can be used multiple times " +
+                    "in a single command-line");
+            this.set1.UseVisualStyleBackColor = true;
+            // 
+            // setBox1
+            // 
+            this.setBox1.Location = new System.Drawing.Point(680, 183);
+            this.setBox1.Name = "setBox1";
+            this.setBox1.Size = new System.Drawing.Size(213, 20);
+            this.setBox1.TabIndex = 80;
+            this.setBox1.Text = "SystemLanguage en-us";
+            this.toolTip1.SetToolTip(this.setBox1, "enter params");
+            // 
+            // errmask1
+            // 
+            this.errmask1.AutoSize = true;
+            this.errmask1.Location = new System.Drawing.Point(636, 154);
+            this.errmask1.Name = "errmask1";
+            this.errmask1.Size = new System.Drawing.Size(66, 17);
+            this.errmask1.TabIndex = 81;
+            this.errmask1.Text = "-errmask";
+            this.toolTip1.SetToolTip(this.errmask1, "32-bit bitmask for error type mask");
+            this.errmask1.UseVisualStyleBackColor = true;
+            // 
+            // skin1
+            // 
+            this.skin1.AutoSize = true;
+            this.skin1.Location = new System.Drawing.Point(635, 215);
+            this.skin1.Name = "skin1";
+            this.skin1.Size = new System.Drawing.Size(48, 17);
+            this.skin1.TabIndex = 82;
+            this.skin1.Text = "-skin";
+            this.toolTip1.SetToolTip(this.skin1, "load skins//skin.xml as the default UI appearance (incomplete)");
+            this.skin1.UseVisualStyleBackColor = true;
+            // 
+            // login1
+            // 
+            this.login1.AutoSize = true;
+            this.login1.Location = new System.Drawing.Point(457, 304);
+            this.login1.Name = "login1";
+            this.login1.Size = new System.Drawing.Size(51, 17);
+            this.login1.TabIndex = 83;
+            this.login1.Text = "-login";
+            this.toolTip1.SetToolTip(this.login1, "log in as a user");
+            this.login1.UseVisualStyleBackColor = true;
+            // 
+            // errmaskBox1
+            // 
+            this.errmaskBox1.Location = new System.Drawing.Point(704, 153);
+            this.errmaskBox1.Name = "errmaskBox1";
+            this.errmaskBox1.Size = new System.Drawing.Size(189, 20);
+            this.errmaskBox1.TabIndex = 84;
+            this.toolTip1.SetToolTip(this.errmaskBox1, "32-bit bitmask for error type mask");
+            // 
+            // skinBox1
+            // 
+            this.skinBox1.Location = new System.Drawing.Point(679, 213);
+            this.skinBox1.Name = "skinBox1";
+            this.skinBox1.Size = new System.Drawing.Size(214, 20);
+            this.skinBox1.TabIndex = 85;
+            this.skinBox1.Text = "C://Secondlife//";
+            this.toolTip1.SetToolTip(this.skinBox1, "enter directory where skin.xml is");
+            // 
+            // firstBox1
+            // 
+            this.firstBox1.Location = new System.Drawing.Point(549, 303);
+            this.firstBox1.Name = "firstBox1";
+            this.firstBox1.Size = new System.Drawing.Size(80, 20);
+            this.firstBox1.TabIndex = 86;
+            this.firstBox1.Text = "Test";
+            this.toolTip1.SetToolTip(this.firstBox1, "firstname");
+            // 
+            // lastBox1
+            // 
+            this.lastBox1.Location = new System.Drawing.Point(668, 303);
+            this.lastBox1.Name = "lastBox1";
+            this.lastBox1.Size = new System.Drawing.Size(80, 20);
+            this.lastBox1.TabIndex = 92;
+            this.lastBox1.Text = "User";
+            this.toolTip1.SetToolTip(this.lastBox1, "lastname");
+            // 
+            // noutc1
+            // 
+            this.noutc1.AutoSize = true;
+            this.noutc1.Location = new System.Drawing.Point(359, 320);
+            this.noutc1.Name = "noutc1";
+            this.noutc1.Size = new System.Drawing.Size(56, 17);
+            this.noutc1.TabIndex = 29;
+            this.noutc1.Text = "-noutc";
+            this.toolTip1.SetToolTip(this.noutc1, "logs in local time, not UTC");
+            this.noutc1.UseVisualStyleBackColor = true;
+            // 
+            // passBox1
+            // 
+            this.passBox1.Location = new System.Drawing.Point(790, 303);
+            this.passBox1.Name = "passBox1";
+            this.passBox1.Size = new System.Drawing.Size(103, 20);
+            this.passBox1.TabIndex = 93;
+            this.passBox1.Text = "test";
+            this.toolTip1.SetToolTip(this.passBox1, "password");
+            // 
+            // raw1
+            // 
+            this.raw1.AutoSize = true;
+            this.raw1.Location = new System.Drawing.Point(457, 336);
+            this.raw1.Name = "raw1";
+            this.raw1.Size = new System.Drawing.Size(81, 17);
+            this.raw1.TabIndex = 94;
+            this.raw1.Text = "Raw CMD :";
+            this.toolTip1.SetToolTip(this.raw1, "Raw CMD options, may crash everything");
+            this.raw1.UseVisualStyleBackColor = true;
+            // 
+            // rawBox1
+            // 
+            this.rawBox1.Location = new System.Drawing.Point(549, 333);
+            this.rawBox1.Name = "rawBox1";
+            this.rawBox1.Size = new System.Drawing.Size(344, 20);
+            this.rawBox1.TabIndex = 95;
+            this.toolTip1.SetToolTip(this.rawBox1, "Raw CMD options, may crash everything");
+            // 
+            // clear1
+            // 
+            this.clear1.Location = new System.Drawing.Point(178, 366);
+            this.clear1.Name = "clear1";
+            this.clear1.Size = new System.Drawing.Size(80, 23);
+            this.clear1.TabIndex = 96;
+            this.clear1.Text = "Clear";
+            this.toolTip1.SetToolTip(this.clear1, "clear all switch boxes");
+            this.clear1.UseVisualStyleBackColor = true;
+            this.clear1.Click += new System.EventHandler(this.clear1_Click);
+            // 
+            // nataddress1
+            // 
+            this.nataddress1.Location = new System.Drawing.Point(457, 389);
+            this.nataddress1.Name = "nataddress1";
+            this.nataddress1.Size = new System.Drawing.Size(436, 20);
+            this.nataddress1.TabIndex = 58;
+            this.nataddress1.Text = "UNUSED ATM";
+            this.nataddress1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+            // 
+            // label8
+            // 
+            this.label8.AutoSize = true;
+            this.label8.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label8.Location = new System.Drawing.Point(588, 360);
+            this.label8.Name = "label8";
+            this.label8.Size = new System.Drawing.Size(175, 20);
+            this.label8.TabIndex = 59;
+            this.label8.Text = "World/NAT Address :";
+            // 
+            // label9
+            // 
+            this.label9.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label9.Location = new System.Drawing.Point(633, 27);
+            this.label9.Name = "label9";
+            this.label9.Size = new System.Drawing.Size(47, 20);
+            this.label9.TabIndex = 60;
+            this.label9.Text = "Path :";
+            this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // exeBox1
+            // 
+            this.exeBox1.Location = new System.Drawing.Point(530, 27);
+            this.exeBox1.Name = "exeBox1";
+            this.exeBox1.Size = new System.Drawing.Size(100, 20);
+            this.exeBox1.TabIndex = 61;
+            this.exeBox1.Text = "Secondlife.exe";
+            // 
+            // label10
+            // 
+            this.label10.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.label10.Location = new System.Drawing.Point(392, 27);
+            this.label10.Name = "label10";
+            this.label10.Size = new System.Drawing.Size(138, 20);
+            this.label10.TabIndex = 62;
+            this.label10.Text = "Executable Name :";
+            this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+            // 
+            // label11
+            // 
+            this.label11.AutoSize = true;
+            this.label11.Location = new System.Drawing.Point(514, 306);
+            this.label11.Name = "label11";
+            this.label11.Size = new System.Drawing.Size(32, 13);
+            this.label11.TabIndex = 89;
+            this.label11.Text = "First :";
+            // 
+            // label12
+            // 
+            this.label12.AutoSize = true;
+            this.label12.Location = new System.Drawing.Point(632, 306);
+            this.label12.Name = "label12";
+            this.label12.Size = new System.Drawing.Size(33, 13);
+            this.label12.TabIndex = 90;
+            this.label12.Text = "Last :";
+            // 
+            // label13
+            // 
+            this.label13.AutoSize = true;
+            this.label13.Location = new System.Drawing.Point(751, 306);
+            this.label13.Name = "label13";
+            this.label13.Size = new System.Drawing.Size(36, 13);
+            this.label13.TabIndex = 91;
+            this.label13.Text = "Pass :";
+            // 
+            // Main
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(900, 431);
+            this.Controls.Add(this.clear1);
+            this.Controls.Add(this.rawBox1);
+            this.Controls.Add(this.raw1);
+            this.Controls.Add(this.passBox1);
+            this.Controls.Add(this.lastBox1);
+            this.Controls.Add(this.label13);
+            this.Controls.Add(this.label12);
+            this.Controls.Add(this.label11);
+            this.Controls.Add(this.firstBox1);
+            this.Controls.Add(this.skinBox1);
+            this.Controls.Add(this.errmaskBox1);
+            this.Controls.Add(this.login1);
+            this.Controls.Add(this.skin1);
+            this.Controls.Add(this.errmask1);
+            this.Controls.Add(this.setBox1);
+            this.Controls.Add(this.set1);
+            this.Controls.Add(this.loginuriBox1);
+            this.Controls.Add(this.loginuri1);
+            this.Controls.Add(this.comboBox1);
+            this.Controls.Add(this.quitafterBox1);
+            this.Controls.Add(this.techtagBox1);
+            this.Controls.Add(this.yieldBox1);
+            this.Controls.Add(this.logfileBox1);
+            this.Controls.Add(this.settingsBox1);
+            this.Controls.Add(this.outbwBox1);
+            this.Controls.Add(this.inbwBox1);
+            this.Controls.Add(this.dropBox1);
+            this.Controls.Add(this.portBox1);
+            this.Controls.Add(this.simBox1);
+            this.Controls.Add(this.label10);
+            this.Controls.Add(this.exeBox1);
+            this.Controls.Add(this.label9);
+            this.Controls.Add(this.label8);
+            this.Controls.Add(this.nataddress1);
+            this.Controls.Add(this.purge1);
+            this.Controls.Add(this.nosound1);
+            this.Controls.Add(this.logfile1);
+            this.Controls.Add(this.settings1);
+            this.Controls.Add(this.outbw1);
+            this.Controls.Add(this.inbw1);
+            this.Controls.Add(this.drop1);
+            this.Controls.Add(this.port1);
+            this.Controls.Add(this.yield1);
+            this.Controls.Add(this.techTag1);
+            this.Controls.Add(this.local1);
+            this.Controls.Add(this.nofmod1);
+            this.Controls.Add(this.noaudio1);
+            this.Controls.Add(this.url1);
+            this.Controls.Add(this.user1);
+            this.Controls.Add(this.quitAfter1);
+            this.Controls.Add(this.korean1);
+            this.Controls.Add(this.spanish1);
+            this.Controls.Add(this.debugst1);
+            this.Controls.Add(this.noutc1);
+            this.Controls.Add(this.noinvlib1);
+            this.Controls.Add(this.simple1);
+            this.Controls.Add(this.previous1);
+            this.Controls.Add(this.dialog1);
+            this.Controls.Add(this.autologin1);
+            this.Controls.Add(this.helperuri1);
+            this.Controls.Add(this.log1);
+            this.Controls.Add(this.noconsole1);
+            this.Controls.Add(this.safe1);
+            this.Controls.Add(this.nothread1);
+            this.Controls.Add(this.ignorepixeldepth1);
+            this.Controls.Add(this.noMultiple1);
+            this.Controls.Add(this.label7);
+            this.Controls.Add(this.multiple1);
+            this.Controls.Add(this.label6);
+            this.Controls.Add(this.noProbe1);
+            this.Controls.Add(this.label5);
+            this.Controls.Add(this.Launch1);
+            this.Controls.Add(this.clientBox1);
+            this.Controls.Add(this.rbGridServer);
+            this.Controls.Add(this.rbStandAloneMode);
+            this.Controls.Add(this.rbGridRegionMode);
+            this.Controls.Add(this.btnStop);
+            this.Controls.Add(this.btnStart);
+            this.Controls.Add(this.gbLog);
+            this.Controls.Add(this.menuStrip1);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+            this.MainMenuStrip = this.menuStrip1;
+            this.MaximizeBox = false;
+            this.Name = "Main";
+            this.Text = "OpenSim";
+            this.toolTip1.SetToolTip(this, "logs in local time, not UTC");
+            this.Load += new System.EventHandler(this.Main_Load);
+            this.menuStrip1.ResumeLayout(false);
+            this.menuStrip1.PerformLayout();
+            this.gbLog.ResumeLayout(false);
+            this.tabLogs.ResumeLayout(false);
+            this.tabMainLog.ResumeLayout(false);
+            this.tabMainLog.PerformLayout();
+            this.tabRegionServer.ResumeLayout(false);
+            this.tabRegionServer.PerformLayout();
+            this.tabUserServer.ResumeLayout(false);
+            this.tabUserServer.PerformLayout();
+            this.tabAssetServer.ResumeLayout(false);
+            this.tabAssetServer.PerformLayout();
+            this.tabGridServer.ResumeLayout(false);
+            this.tabGridServer.PerformLayout();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.MenuStrip menuStrip1;
+        private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
+        private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem;
+        private System.Windows.Forms.Timer timer1;
+        private System.Windows.Forms.TextBox clientBox1;
+        private System.Windows.Forms.Button btnStart;
+        private System.Windows.Forms.Button btnStop;
+        private System.Windows.Forms.RadioButton rbGridRegionMode;
+        private System.Windows.Forms.RadioButton rbStandAloneMode;
+        private System.Windows.Forms.RadioButton rbGridServer;
+        private System.Windows.Forms.Button Launch1;
+        private System.Windows.Forms.GroupBox gbLog;
+        private System.Windows.Forms.TabControl tabLogs;
+        private System.Windows.Forms.TabPage tabMainLog;
+        private System.Windows.Forms.TabPage tabRegionServer;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.TextBox txtOpenSim;
+        private System.Windows.Forms.TabPage tabUserServer;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.TextBox txtUserServer;
+        private System.Windows.Forms.TabPage tabAssetServer;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.TextBox txtAssetServer;
+        private System.Windows.Forms.TabPage tabGridServer;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.TextBox txtGridServer;
+        private System.Windows.Forms.TextBox txtMainLog;
+        private System.Windows.Forms.Label label5;
+        private System.Windows.Forms.CheckBox noProbe1;
+        private System.Windows.Forms.Label label6;
+        private System.Windows.Forms.CheckBox multiple1;
+        private System.Windows.Forms.Label label7;
+        private System.Windows.Forms.CheckBox noMultiple1;
+        private System.Windows.Forms.CheckBox ignorepixeldepth1;
+        private System.Windows.Forms.CheckBox nothread1;
+        private System.Windows.Forms.CheckBox safe1;
+        private System.Windows.Forms.CheckBox noconsole1;
+        private System.Windows.Forms.CheckBox log1;
+        private System.Windows.Forms.CheckBox helperuri1;
+        private System.Windows.Forms.CheckBox autologin1;
+        private System.Windows.Forms.ToolTip toolTip1;
+        private System.Windows.Forms.CheckBox dialog1;
+        private System.Windows.Forms.CheckBox previous1;
+        private System.Windows.Forms.CheckBox simple1;
+        private System.Windows.Forms.CheckBox noinvlib1;
+        private System.Windows.Forms.CheckBox noutc1;
+        private System.Windows.Forms.CheckBox debugst1;
+        private System.Windows.Forms.CheckBox spanish1;
+        private System.Windows.Forms.CheckBox korean1;
+        private System.Windows.Forms.CheckBox local1;
+        private System.Windows.Forms.CheckBox nofmod1;
+        private System.Windows.Forms.CheckBox noaudio1;
+        private System.Windows.Forms.CheckBox url1;
+        private System.Windows.Forms.CheckBox user1;
+        private System.Windows.Forms.CheckBox quitAfter1;
+        private System.Windows.Forms.CheckBox techTag1;
+        private System.Windows.Forms.CheckBox yield1;
+        private System.Windows.Forms.CheckBox purge1;
+        private System.Windows.Forms.CheckBox nosound1;
+        private System.Windows.Forms.CheckBox logfile1;
+        private System.Windows.Forms.CheckBox settings1;
+        private System.Windows.Forms.CheckBox outbw1;
+        private System.Windows.Forms.CheckBox inbw1;
+        private System.Windows.Forms.CheckBox drop1;
+        private System.Windows.Forms.CheckBox port1;
+        private System.Windows.Forms.TextBox nataddress1;
+        private System.Windows.Forms.Label label8;
+        private System.Windows.Forms.Label label9;
+        private System.Windows.Forms.TextBox exeBox1;
+        private System.Windows.Forms.Label label10;
+        private System.Windows.Forms.TextBox simBox1;
+        private System.Windows.Forms.TextBox portBox1;
+        private System.Windows.Forms.TextBox dropBox1;
+        private System.Windows.Forms.TextBox inbwBox1;
+        private System.Windows.Forms.TextBox outbwBox1;
+        private System.Windows.Forms.TextBox settingsBox1;
+        private System.Windows.Forms.TextBox logfileBox1;
+        private System.Windows.Forms.TextBox yieldBox1;
+        private System.Windows.Forms.TextBox techtagBox1;
+        private System.Windows.Forms.TextBox quitafterBox1;
+        private System.Windows.Forms.ComboBox comboBox1;
+        private System.Windows.Forms.CheckBox loginuri1;
+        private System.Windows.Forms.TextBox loginuriBox1;
+        private System.Windows.Forms.CheckBox set1;
+        private System.Windows.Forms.TextBox setBox1;
+        private System.Windows.Forms.CheckBox errmask1;
+        private System.Windows.Forms.CheckBox skin1;
+        private System.Windows.Forms.CheckBox login1;
+        private System.Windows.Forms.TextBox errmaskBox1;
+        private System.Windows.Forms.TextBox skinBox1;
+        private System.Windows.Forms.TextBox firstBox1;
+        private System.Windows.Forms.Label label11;
+        private System.Windows.Forms.Label label12;
+        private System.Windows.Forms.Label label13;
+        private System.Windows.Forms.TextBox lastBox1;
+        private System.Windows.Forms.TextBox passBox1;
+        private InputTextBoxControl txtInputUserServer;
+        private InputTextBoxControl txtInputAssetServer;
+        private InputTextBoxControl txtInputRegionServer;
+        private InputTextBoxControl txtInputGridServer;
+        private System.Windows.Forms.CheckBox raw1;
+        private System.Windows.Forms.TextBox rawBox1;
+        private System.Windows.Forms.Button clear1;
+    }
+}
+
diff --git a/OpenSim/Tools/OpenSim.GUI/Main.cs b/OpenSim/Tools/OpenSim.GUI/Main.cs
index 3e6826a4b3..d5b5616bae 100644
--- a/OpenSim/Tools/OpenSim.GUI/Main.cs
+++ b/OpenSim/Tools/OpenSim.GUI/Main.cs
@@ -1,537 +1,537 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-namespace OpenSim.GUI
-{
-    public partial class Main : Form
-    {
-
-        public ProcessManager proc_OpenSim;
-        public ProcessManager proc_UserServer;
-        public ProcessManager proc_GridServer;
-        public ProcessManager proc_AssetServer;
-
-        public Main()
-        {
-            InitializeComponent();
-        }
-
-        private void Main_Load(object sender, EventArgs e)
-        {
-            txtInputUserServer.KeyPress += new KeyPressEventHandler(txtInputUserServer_KeyPress);
-            txtInputGridServer.KeyPress += new KeyPressEventHandler(txtInputGridServer_KeyPress);
-            txtInputAssetServer.KeyPress += new KeyPressEventHandler(txtInputAssetServer_KeyPress);
-            txtInputRegionServer.KeyPress += new KeyPressEventHandler(txtInputRegionServer_KeyPress);
-
-            tabLogs.Selected += new TabControlEventHandler(tabLogs_Selected);
-
-            UpdateTabVisibility();
-        }
-
-        void tabLogs_Selected(object sender, TabControlEventArgs e)
-        {
-            if (e.TabPage == tabUserServer)
-                txtInputUserServer.Focus();
-            if (e.TabPage == tabGridServer)
-                txtInputGridServer.Focus();
-            if (e.TabPage == tabAssetServer)
-                txtInputAssetServer.Focus();
-            if (e.TabPage == tabRegionServer)
-                txtInputRegionServer.Focus();
-        }
-
-        void txtInputUserServer_KeyPress(object sender, KeyPressEventArgs e)
-        {
-
-            if (e.KeyChar == 13)
-            {
-                // We got a command
-                e.Handled = true;
-                proc_UserServer.StandardInput.WriteLine(txtInputUserServer.Text + "\r\n");
-                txtInputUserServer.Text = "";
-            }
-        }
-
-        void txtInputGridServer_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            if (e.KeyChar == 13)
-            {
-                // We got a command
-                e.Handled = true;
-                proc_GridServer.StandardInput.WriteLine(txtInputGridServer.Text + "\r\n");
-                txtInputGridServer.Text = "";
-            }
-        }
-
-        void txtInputAssetServer_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            if (e.KeyChar == 13)
-            {
-                // We got a command
-                e.Handled = true;
-                proc_AssetServer.StandardInput.WriteLine(txtInputAssetServer.Text + "\r\n");
-                txtInputAssetServer.Text = "";
-            }
-        }
-
-        void txtInputRegionServer_KeyPress(object sender, KeyPressEventArgs e)
-        {
-            if (e.KeyChar == 13)
-            {
-                // We got a command
-                e.Handled = true;
-                proc_OpenSim.StandardInput.WriteLine(txtInputRegionServer.Text + "\r\n");
-                txtInputRegionServer.Text = "";
-            }
-        }
-
-        private void btnStart_Click(object sender, EventArgs e)
-        {
-            noProbe1.Checked = true;
-            multiple1.Checked = true;
-            loginuri1.Checked = true;
-            login1.Checked = true;
-            //
-            // THIS PART NEEDS TO BE MOVED TO A SEPARATE THREAD OR A TIMER OF SOME SORT
-            // should not block on wait
-            // ALSO - IF SOME SERVICES ARE NOT CONFIGURED, POP UP CONFIGURATION BOX FOR THAT SERVICE!
-            //
-
-            btnStart.Enabled = false;
-            btnStop.Enabled = false;
-
-
-
-            if (rbGridServer.Checked)
-            {
-                // Start UserServer
-                proc_UserServer = new ProcessManager("OpenSim.Grid.UserServer.exe", "");
-                txtMainLog.AppendText("Starting: User server" + "\r\n");
-                proc_UserServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_UserServer_DataReceived);
-                proc_UserServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_UserServer_DataReceived);
-                proc_UserServer.StartProcess();
-                System.Threading.Thread.Sleep(3000);
-
-                // Start GridServer
-                proc_GridServer = new ProcessManager("OpenSim.Grid.GridServer.exe", "");
-                txtMainLog.AppendText("Starting: Grid server" + "\r\n");
-                proc_GridServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_GridServer_DataReceived);
-                proc_GridServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_GridServer_DataReceived);
-                proc_GridServer.StartProcess();
-                System.Threading.Thread.Sleep(3000);
-
-                // Start AssetServer
-                proc_AssetServer = new ProcessManager("OpenSim.Grid.AssetServer.exe", "");
-                txtMainLog.AppendText("Starting: Asset server" + "\r\n");
-                proc_AssetServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_AssetServer_DataReceived);
-                proc_AssetServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_AssetServer_DataReceived);
-                proc_AssetServer.StartProcess();
-                System.Threading.Thread.Sleep(3000);
-            }
-
-            // Start OpenSim
-            string p = "";
-            if (rbGridServer.Checked)
-                p = "-gridmode=true";
-
-            proc_OpenSim = new ProcessManager("OpenSim.EXE", p);
-            txtMainLog.AppendText("Starting: OpenSim (Region server)" + "\r\n");
-            proc_OpenSim.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OpenSim_DataReceived);
-            proc_OpenSim.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OpenSim_DataReceived);
-            proc_OpenSim.StartProcess();
-
-            btnStart.Enabled = false;
-            btnStop.Enabled = true;
-
-        }
-        public delegate void AppendText(string Text);
-        void proc_UserServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
-        {
-            this.Invoke(new AppendText(txtUserServer.AppendText), new object[] { e.Data + "\r\n" });
-            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "UserServer: " + e.Data + "\r\n" });
-        }
-        void proc_GridServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
-        {
-            this.Invoke(new AppendText(txtGridServer.AppendText), new object[] { e.Data + "\r\n" });
-            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "GridServer: " + e.Data + "\r\n" });
-        }
-        void proc_AssetServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
-        {
-            this.Invoke(new AppendText(txtAssetServer.AppendText), new object[] { e.Data + "\r\n" });
-            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "AssetServer: " + e.Data + "\r\n" });
-        }
-        void proc_OpenSim_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
-        {
-            this.Invoke(new AppendText(txtOpenSim.AppendText), new object[] { e.Data + "\r\n" });
-            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "OpenSim: " + e.Data + "\r\n" });
-        }
-
-        private void btnStop_Click(object sender, EventArgs e)
-        {
-            btnStart.Enabled = false;
-            btnStop.Enabled = false;
-            Stop();
-            btnStart.Enabled = true;
-            btnStop.Enabled = false;
-        }
-
-        private void clear1_Click(object sender, EventArgs e)
-        {
-            noProbe1.Checked = false; multiple1.Checked = false; loginuri1.Checked = false;
-            noMultiple1.Checked = false; korean1.Checked = false; spanish1.Checked = false;
-            ignorepixeldepth1.Checked = false; nothread1.Checked = false; safe1.Checked = false;
-            noconsole1.Checked = false; log1.Checked = false; helperuri1.Checked = false;
-            autologin1.Checked = false; dialog1.Checked = false; previous1.Checked = false;
-            simple1.Checked = false; noinvlib1.Checked = false; noutc1.Checked = false;
-            debugst1.Checked = false; local1.Checked = false; purge1.Checked = false;
-            nofmod1.Checked = false; nosound1.Checked = false; noaudio1.Checked = false;
-            url1.Checked = false; port1.Checked = false; drop1.Checked = false;
-            inbw1.Checked = false; outbw1.Checked = false; settings1.Checked = false;
-            logfile1.Checked = false; yield1.Checked = false; techTag1.Checked = false;
-            quitAfter1.Checked = false; loginuri1.Checked = false; set1.Checked = false;
-            errmask1.Checked = false; raw1.Checked = false; skin1.Checked = false;
-            user1.Checked = false; login1.Checked = false;
-        }
-
-        private void Stop()
-        {
-            if (proc_UserServer != null)
-            {
-                txtMainLog.AppendText("Shutting down UserServer. CPU time used: " + proc_UserServer.TotalProcessorTime.ToString() + "\r\n");
-                proc_UserServer.StopProcess();
-                proc_UserServer = null;
-            }
-            if (proc_GridServer != null)
-            {
-                txtMainLog.AppendText("Shutting down GridServer. CPU time used: " + proc_GridServer.TotalProcessorTime.ToString() + "\r\n");
-                proc_GridServer.StopProcess();
-                proc_GridServer = null;
-            }
-            if (proc_AssetServer != null)
-            {
-                txtMainLog.AppendText("Shutting down AssetServer. CPU time used: " + proc_AssetServer.TotalProcessorTime.ToString() + "\r\n");
-                proc_AssetServer.StopProcess();
-                proc_AssetServer = null;
-            }
-            if (proc_OpenSim != null)
-            {
-                txtMainLog.AppendText("Shutting down OpenSim. CPU time used: " + proc_OpenSim.TotalProcessorTime.ToString() + "\r\n");
-                proc_OpenSim.StopProcess();
-                proc_OpenSim = null;
-            }
-        }
-        private void UpdateTabVisibility()
-        {
-            if (rbStandAloneMode.Checked)
-            {
-                if (tabLogs.TabPages.Contains(tabUserServer))
-                    tabLogs.TabPages.Remove(tabUserServer);
-                if (tabLogs.TabPages.Contains(tabGridServer))
-                    tabLogs.TabPages.Remove(tabGridServer);
-                if (tabLogs.TabPages.Contains(tabAssetServer))
-                    tabLogs.TabPages.Remove(tabAssetServer);
-            }
-            else
-            {
-                if (!tabLogs.TabPages.Contains(tabUserServer))
-                    tabLogs.TabPages.Add(tabUserServer);
-                if (!tabLogs.TabPages.Contains(tabGridServer))
-                    tabLogs.TabPages.Add(tabGridServer);
-                if (!tabLogs.TabPages.Contains(tabAssetServer))
-                    tabLogs.TabPages.Add(tabAssetServer);
-            }
-        }
-
-        private void rbStandAloneMode_CheckedChanged(object sender, EventArgs e)
-        {
-            UpdateTabVisibility();
-        }
-
-        private void rbGridRegionMode_CheckedChanged(object sender, EventArgs e)
-        {
-            UpdateTabVisibility();
-        }
-
-        private void rbGridServer_CheckedChanged(object sender, EventArgs e)
-        {
-            UpdateTabVisibility();
-        }
-
-        private int counter;
-
-        private void Exit()
-        {
-            counter = 0;
-            timer1.Interval = 600;
-            timer1.Enabled = true;
-            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
-        }
-
-        private void timer1_Tick(object sender, System.EventArgs e)
-        {
-            if (counter >= 10)
-            {
-                timer1.Enabled = false;
-                counter = 0;
-                Application.Exit();
-            }
-            else
-            {
-                counter = counter + 1;
-            }
-        }
-
-        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
-        {
-            if (proc_UserServer != null || proc_GridServer != null || proc_AssetServer != null || proc_OpenSim != null)
-            {
-                label6.Text = "Stopping server(s) and waiting to safely close..............";
-                Stop();
-                Exit();
-            }
-            else
-            {
-                Application.Exit();
-            }
-        }
-        /// 
-        /// CLIENT SECTION
-        /// 
-        string exeString;
-        string exeArgs;
-        string usrsvr;
-        string error = "Reconsider your commandline choices, you have opposing values selected!";
-
-        private void label6_Click(object sender, EventArgs e)
-        {
-            label6.Text = clientBox1.Text;
-        }
-        private void errorSwitches()
-        {
-            MessageBox.Show(error);
-            label6.Text = error;
-        }
-        bool exists;
-        private void Launch1_Click(object sender, EventArgs e)
-        {
-            if (exists = System.IO.File.Exists(clientBox1.Text + exeBox1.Text))
-            {
-                executeClient();
-            }
-            else
-            {
-                MessageBox.Show("FILE DOES NOT EXIST!!!");
-                label6.Text = "FILE DOES NOT EXIST!!!";
-            }
-        }
-        private void NATfix()
-        {
-        }
-        private void executeClient()
-        {
-            label6.Text = "";
-            exeArgs = "";
-            exeString = clientBox1.Text;
-            exeString = exeString += exeBox1.Text;
-
-            if (multiple1.Checked == true && noMultiple1.Checked == true) errorSwitches();
-            else if (korean1.Checked == true && spanish1.Checked == true) errorSwitches();
-            else
-            {
-                if (noProbe1.Checked == true) exeArgs = exeArgs += " -noprobe";
-                if (multiple1.Checked == true) exeArgs = exeArgs += " -multiple";
-                if (noMultiple1.Checked == true) exeArgs = exeArgs += " -nomultiple";
-                if (korean1.Checked == true) exeArgs = exeArgs += " -korean";
-                if (spanish1.Checked == true) exeArgs = exeArgs += " -spanish";
-                if (ignorepixeldepth1.Checked == true) exeArgs = exeArgs += " -ignorepixeldepth";
-                if (nothread1.Checked == true) exeArgs = exeArgs += " -nothread";
-                if (safe1.Checked == true) exeArgs = exeArgs += " -safe";
-                if (noconsole1.Checked == true) exeArgs = exeArgs += " -noconsole";
-                if (log1.Checked == true) exeArgs = exeArgs += " -log";
-                if (helperuri1.Checked == true) exeArgs = exeArgs += " -helperuri";
-                if (autologin1.Checked == true) exeArgs = exeArgs += " --autologin";
-                if (dialog1.Checked == true) exeArgs = exeArgs += " -dialog";
-                if (previous1.Checked == true) exeArgs = exeArgs += " -previous";
-                if (simple1.Checked == true) exeArgs = exeArgs += " -simple";
-                if (noinvlib1.Checked == true) exeArgs = exeArgs += " -noinvlib";
-                if (noutc1.Checked == true) exeArgs = exeArgs += " -noutc";
-                if (debugst1.Checked == true) exeArgs = exeArgs += " -debugst";
-                if (local1.Checked == true) exeArgs = exeArgs += " -local";
-                if (purge1.Checked == true) exeArgs = exeArgs += " -purge";
-                if (nofmod1.Checked == true) exeArgs = exeArgs += " -nofmod";
-                if (nosound1.Checked == true) exeArgs = exeArgs += " -nosound";
-                if (noaudio1.Checked == true) exeArgs = exeArgs += " -noaudio";
-                if (url1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -url ";
-                    exeArgs = exeArgs += simBox1.Text;
-                }
-                if (port1.Checked == true)
-                {
-                    int aPort;
-                    aPort = Convert.ToInt32(portBox1.Text);
-                    if (aPort > 13050)
-                    {
-                        portBox1.Text = "13050";
-                        MessageBox.Show("Enter Usable port number, defaulting to 13050.");
-                    }
-                    if(aPort < 13000)
-                    {
-                        portBox1.Text = "13000";
-                        MessageBox.Show("Enter Usable port number, defaulting to 13000.");
-                    }
-                    else
-                    {
-                    }
-                    exeArgs = exeArgs += " -port ";
-                    exeArgs = exeArgs += portBox1.Text;
-                }
-                if (drop1.Checked == true)
-                {
-                    int aPct;
-                    aPct = Convert.ToInt32(dropBox1.Text);
-                    if (aPct > 100)
-                    {
-                        dropBox1.Text = "100";
-                        MessageBox.Show("Enter Usable port number, defaulting to 100.");
-                    }
-                    if (aPct < 0)
-                    {
-                        dropBox1.Text = "0";
-                        MessageBox.Show("Enter Usable port number, defaulting to 0.");
-                    }
-                    else
-                    {
-                    }
-                    exeArgs = exeArgs += " -drop ";
-                    exeArgs = exeArgs += dropBox1.Text;
-                }
-                if (inbw1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -inbw ";
-                    exeArgs = exeArgs += inbwBox1.Text;
-                }
-                if (outbw1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -outbw ";
-                    exeArgs = exeArgs += outbwBox1.Text;
-                }
-                if (settings1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -settings ";
-                    exeArgs = exeArgs += settingsBox1.Text;
-                }
-                if (logfile1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -logfile ";
-                    exeArgs = exeArgs += logfileBox1.Text;
-                }
-                if (yield1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -yield ";
-                    exeArgs = exeArgs += yieldBox1.Text;
-                }
-                if (techTag1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -techtag ";
-                    exeArgs = exeArgs += techtagBox1.Text;
-                }
-                if (quitAfter1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -quitafter ";
-                    exeArgs = exeArgs += quitafterBox1.Text;
-                }
-                if (loginuri1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -loginuri ";
-                    exeArgs = exeArgs += loginuriBox1.Text;
-                }
-                if (set1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -set ";
-                    exeArgs = exeArgs += setBox1.Text;
-                }
-                if (errmask1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -errmask ";
-                    exeArgs = exeArgs += errmaskBox1.Text;
-                }
-                if (raw1.Checked == true)
-                {
-                    exeArgs = exeArgs += " " + rawBox1.Text;
-                }
-                if (skin1.Checked == true)
-                {
-                    bool exists;
-                    if (exists = System.IO.File.Exists(skinBox1.Text + "skin.xml"))
-                    {
-                        exeArgs = exeArgs += " -skin ";
-                        exeArgs = exeArgs += skinBox1.Text + "skin.xml";
-                    }
-                    else
-                    {
-                        MessageBox.Show("SKIN FILE DOES NOT EXIST AT SPECIFIED LOCATION!!!");
-                        skin1.Checked = false;
-                        executeClient();
-                    }
-                }
-                if (user1.Checked == true)
-                {
-                    //find actual login urls
-                    if (comboBox1.Text == "agni") { usrsvr = " -user " + "--agni"; }
-                    if (comboBox1.Text == "colo") { usrsvr = " -user " + "--colo"; }
-                    if (comboBox1.Text == "dmz") { usrsvr = " -user " + "--dmz"; }
-                    if (comboBox1.Text == "durga") { usrsvr = " -user " + "--Durga"; }
-                    if (comboBox1.Text == "siva") { usrsvr = " -user " + "--siva"; }
-                    exeArgs = exeArgs += usrsvr;
-                }
-                if (login1.Checked == true)
-                {
-                    exeArgs = exeArgs += " -login ";
-                    exeArgs = exeArgs += firstBox1.Text + " " + lastBox1.Text + " " + passBox1.Text;
-                }
-                label6.Text = exeString + exeArgs;
-                System.Diagnostics.Process proc = new System.Diagnostics.Process();
-                proc.StartInfo.FileName = exeString;
-                proc.StartInfo.Arguments = exeArgs;
-                proc.StartInfo.UseShellExecute = false;
-                proc.StartInfo.RedirectStandardOutput = false;
-                proc.StartInfo.WorkingDirectory = clientBox1.Text;
-                proc.Start();
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OpenSim.GUI
+{
+    public partial class Main : Form
+    {
+
+        public ProcessManager proc_OpenSim;
+        public ProcessManager proc_UserServer;
+        public ProcessManager proc_GridServer;
+        public ProcessManager proc_AssetServer;
+
+        public Main()
+        {
+            InitializeComponent();
+        }
+
+        private void Main_Load(object sender, EventArgs e)
+        {
+            txtInputUserServer.KeyPress += new KeyPressEventHandler(txtInputUserServer_KeyPress);
+            txtInputGridServer.KeyPress += new KeyPressEventHandler(txtInputGridServer_KeyPress);
+            txtInputAssetServer.KeyPress += new KeyPressEventHandler(txtInputAssetServer_KeyPress);
+            txtInputRegionServer.KeyPress += new KeyPressEventHandler(txtInputRegionServer_KeyPress);
+
+            tabLogs.Selected += new TabControlEventHandler(tabLogs_Selected);
+
+            UpdateTabVisibility();
+        }
+
+        void tabLogs_Selected(object sender, TabControlEventArgs e)
+        {
+            if (e.TabPage == tabUserServer)
+                txtInputUserServer.Focus();
+            if (e.TabPage == tabGridServer)
+                txtInputGridServer.Focus();
+            if (e.TabPage == tabAssetServer)
+                txtInputAssetServer.Focus();
+            if (e.TabPage == tabRegionServer)
+                txtInputRegionServer.Focus();
+        }
+
+        void txtInputUserServer_KeyPress(object sender, KeyPressEventArgs e)
+        {
+
+            if (e.KeyChar == 13)
+            {
+                // We got a command
+                e.Handled = true;
+                proc_UserServer.StandardInput.WriteLine(txtInputUserServer.Text + "\r\n");
+                txtInputUserServer.Text = "";
+            }
+        }
+
+        void txtInputGridServer_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == 13)
+            {
+                // We got a command
+                e.Handled = true;
+                proc_GridServer.StandardInput.WriteLine(txtInputGridServer.Text + "\r\n");
+                txtInputGridServer.Text = "";
+            }
+        }
+
+        void txtInputAssetServer_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == 13)
+            {
+                // We got a command
+                e.Handled = true;
+                proc_AssetServer.StandardInput.WriteLine(txtInputAssetServer.Text + "\r\n");
+                txtInputAssetServer.Text = "";
+            }
+        }
+
+        void txtInputRegionServer_KeyPress(object sender, KeyPressEventArgs e)
+        {
+            if (e.KeyChar == 13)
+            {
+                // We got a command
+                e.Handled = true;
+                proc_OpenSim.StandardInput.WriteLine(txtInputRegionServer.Text + "\r\n");
+                txtInputRegionServer.Text = "";
+            }
+        }
+
+        private void btnStart_Click(object sender, EventArgs e)
+        {
+            noProbe1.Checked = true;
+            multiple1.Checked = true;
+            loginuri1.Checked = true;
+            login1.Checked = true;
+            //
+            // THIS PART NEEDS TO BE MOVED TO A SEPARATE THREAD OR A TIMER OF SOME SORT
+            // should not block on wait
+            // ALSO - IF SOME SERVICES ARE NOT CONFIGURED, POP UP CONFIGURATION BOX FOR THAT SERVICE!
+            //
+
+            btnStart.Enabled = false;
+            btnStop.Enabled = false;
+
+
+
+            if (rbGridServer.Checked)
+            {
+                // Start UserServer
+                proc_UserServer = new ProcessManager("OpenSim.Grid.UserServer.exe", "");
+                txtMainLog.AppendText("Starting: User server" + "\r\n");
+                proc_UserServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_UserServer_DataReceived);
+                proc_UserServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_UserServer_DataReceived);
+                proc_UserServer.StartProcess();
+                System.Threading.Thread.Sleep(3000);
+
+                // Start GridServer
+                proc_GridServer = new ProcessManager("OpenSim.Grid.GridServer.exe", "");
+                txtMainLog.AppendText("Starting: Grid server" + "\r\n");
+                proc_GridServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_GridServer_DataReceived);
+                proc_GridServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_GridServer_DataReceived);
+                proc_GridServer.StartProcess();
+                System.Threading.Thread.Sleep(3000);
+
+                // Start AssetServer
+                proc_AssetServer = new ProcessManager("OpenSim.Grid.AssetServer.exe", "");
+                txtMainLog.AppendText("Starting: Asset server" + "\r\n");
+                proc_AssetServer.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_AssetServer_DataReceived);
+                proc_AssetServer.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_AssetServer_DataReceived);
+                proc_AssetServer.StartProcess();
+                System.Threading.Thread.Sleep(3000);
+            }
+
+            // Start OpenSim
+            string p = "";
+            if (rbGridServer.Checked)
+                p = "-gridmode=true";
+
+            proc_OpenSim = new ProcessManager("OpenSim.EXE", p);
+            txtMainLog.AppendText("Starting: OpenSim (Region server)" + "\r\n");
+            proc_OpenSim.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OpenSim_DataReceived);
+            proc_OpenSim.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(proc_OpenSim_DataReceived);
+            proc_OpenSim.StartProcess();
+
+            btnStart.Enabled = false;
+            btnStop.Enabled = true;
+
+        }
+        public delegate void AppendText(string Text);
+        void proc_UserServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
+        {
+            this.Invoke(new AppendText(txtUserServer.AppendText), new object[] { e.Data + "\r\n" });
+            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "UserServer: " + e.Data + "\r\n" });
+        }
+        void proc_GridServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
+        {
+            this.Invoke(new AppendText(txtGridServer.AppendText), new object[] { e.Data + "\r\n" });
+            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "GridServer: " + e.Data + "\r\n" });
+        }
+        void proc_AssetServer_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
+        {
+            this.Invoke(new AppendText(txtAssetServer.AppendText), new object[] { e.Data + "\r\n" });
+            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "AssetServer: " + e.Data + "\r\n" });
+        }
+        void proc_OpenSim_DataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)
+        {
+            this.Invoke(new AppendText(txtOpenSim.AppendText), new object[] { e.Data + "\r\n" });
+            this.Invoke(new AppendText(txtMainLog.AppendText), new object[] { "OpenSim: " + e.Data + "\r\n" });
+        }
+
+        private void btnStop_Click(object sender, EventArgs e)
+        {
+            btnStart.Enabled = false;
+            btnStop.Enabled = false;
+            Stop();
+            btnStart.Enabled = true;
+            btnStop.Enabled = false;
+        }
+
+        private void clear1_Click(object sender, EventArgs e)
+        {
+            noProbe1.Checked = false; multiple1.Checked = false; loginuri1.Checked = false;
+            noMultiple1.Checked = false; korean1.Checked = false; spanish1.Checked = false;
+            ignorepixeldepth1.Checked = false; nothread1.Checked = false; safe1.Checked = false;
+            noconsole1.Checked = false; log1.Checked = false; helperuri1.Checked = false;
+            autologin1.Checked = false; dialog1.Checked = false; previous1.Checked = false;
+            simple1.Checked = false; noinvlib1.Checked = false; noutc1.Checked = false;
+            debugst1.Checked = false; local1.Checked = false; purge1.Checked = false;
+            nofmod1.Checked = false; nosound1.Checked = false; noaudio1.Checked = false;
+            url1.Checked = false; port1.Checked = false; drop1.Checked = false;
+            inbw1.Checked = false; outbw1.Checked = false; settings1.Checked = false;
+            logfile1.Checked = false; yield1.Checked = false; techTag1.Checked = false;
+            quitAfter1.Checked = false; loginuri1.Checked = false; set1.Checked = false;
+            errmask1.Checked = false; raw1.Checked = false; skin1.Checked = false;
+            user1.Checked = false; login1.Checked = false;
+        }
+
+        private void Stop()
+        {
+            if (proc_UserServer != null)
+            {
+                txtMainLog.AppendText("Shutting down UserServer. CPU time used: " + proc_UserServer.TotalProcessorTime.ToString() + "\r\n");
+                proc_UserServer.StopProcess();
+                proc_UserServer = null;
+            }
+            if (proc_GridServer != null)
+            {
+                txtMainLog.AppendText("Shutting down GridServer. CPU time used: " + proc_GridServer.TotalProcessorTime.ToString() + "\r\n");
+                proc_GridServer.StopProcess();
+                proc_GridServer = null;
+            }
+            if (proc_AssetServer != null)
+            {
+                txtMainLog.AppendText("Shutting down AssetServer. CPU time used: " + proc_AssetServer.TotalProcessorTime.ToString() + "\r\n");
+                proc_AssetServer.StopProcess();
+                proc_AssetServer = null;
+            }
+            if (proc_OpenSim != null)
+            {
+                txtMainLog.AppendText("Shutting down OpenSim. CPU time used: " + proc_OpenSim.TotalProcessorTime.ToString() + "\r\n");
+                proc_OpenSim.StopProcess();
+                proc_OpenSim = null;
+            }
+        }
+        private void UpdateTabVisibility()
+        {
+            if (rbStandAloneMode.Checked)
+            {
+                if (tabLogs.TabPages.Contains(tabUserServer))
+                    tabLogs.TabPages.Remove(tabUserServer);
+                if (tabLogs.TabPages.Contains(tabGridServer))
+                    tabLogs.TabPages.Remove(tabGridServer);
+                if (tabLogs.TabPages.Contains(tabAssetServer))
+                    tabLogs.TabPages.Remove(tabAssetServer);
+            }
+            else
+            {
+                if (!tabLogs.TabPages.Contains(tabUserServer))
+                    tabLogs.TabPages.Add(tabUserServer);
+                if (!tabLogs.TabPages.Contains(tabGridServer))
+                    tabLogs.TabPages.Add(tabGridServer);
+                if (!tabLogs.TabPages.Contains(tabAssetServer))
+                    tabLogs.TabPages.Add(tabAssetServer);
+            }
+        }
+
+        private void rbStandAloneMode_CheckedChanged(object sender, EventArgs e)
+        {
+            UpdateTabVisibility();
+        }
+
+        private void rbGridRegionMode_CheckedChanged(object sender, EventArgs e)
+        {
+            UpdateTabVisibility();
+        }
+
+        private void rbGridServer_CheckedChanged(object sender, EventArgs e)
+        {
+            UpdateTabVisibility();
+        }
+
+        private int counter;
+
+        private void Exit()
+        {
+            counter = 0;
+            timer1.Interval = 600;
+            timer1.Enabled = true;
+            this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
+        }
+
+        private void timer1_Tick(object sender, System.EventArgs e)
+        {
+            if (counter >= 10)
+            {
+                timer1.Enabled = false;
+                counter = 0;
+                Application.Exit();
+            }
+            else
+            {
+                counter = counter + 1;
+            }
+        }
+
+        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
+        {
+            if (proc_UserServer != null || proc_GridServer != null || proc_AssetServer != null || proc_OpenSim != null)
+            {
+                label6.Text = "Stopping server(s) and waiting to safely close..............";
+                Stop();
+                Exit();
+            }
+            else
+            {
+                Application.Exit();
+            }
+        }
+        /// 
+        /// CLIENT SECTION
+        /// 
+        string exeString;
+        string exeArgs;
+        string usrsvr;
+        string error = "Reconsider your commandline choices, you have opposing values selected!";
+
+        private void label6_Click(object sender, EventArgs e)
+        {
+            label6.Text = clientBox1.Text;
+        }
+        private void errorSwitches()
+        {
+            MessageBox.Show(error);
+            label6.Text = error;
+        }
+        bool exists;
+        private void Launch1_Click(object sender, EventArgs e)
+        {
+            if (exists = System.IO.File.Exists(clientBox1.Text + exeBox1.Text))
+            {
+                executeClient();
+            }
+            else
+            {
+                MessageBox.Show("FILE DOES NOT EXIST!!!");
+                label6.Text = "FILE DOES NOT EXIST!!!";
+            }
+        }
+        private void NATfix()
+        {
+        }
+        private void executeClient()
+        {
+            label6.Text = "";
+            exeArgs = "";
+            exeString = clientBox1.Text;
+            exeString = exeString += exeBox1.Text;
+
+            if (multiple1.Checked == true && noMultiple1.Checked == true) errorSwitches();
+            else if (korean1.Checked == true && spanish1.Checked == true) errorSwitches();
+            else
+            {
+                if (noProbe1.Checked == true) exeArgs = exeArgs += " -noprobe";
+                if (multiple1.Checked == true) exeArgs = exeArgs += " -multiple";
+                if (noMultiple1.Checked == true) exeArgs = exeArgs += " -nomultiple";
+                if (korean1.Checked == true) exeArgs = exeArgs += " -korean";
+                if (spanish1.Checked == true) exeArgs = exeArgs += " -spanish";
+                if (ignorepixeldepth1.Checked == true) exeArgs = exeArgs += " -ignorepixeldepth";
+                if (nothread1.Checked == true) exeArgs = exeArgs += " -nothread";
+                if (safe1.Checked == true) exeArgs = exeArgs += " -safe";
+                if (noconsole1.Checked == true) exeArgs = exeArgs += " -noconsole";
+                if (log1.Checked == true) exeArgs = exeArgs += " -log";
+                if (helperuri1.Checked == true) exeArgs = exeArgs += " -helperuri";
+                if (autologin1.Checked == true) exeArgs = exeArgs += " --autologin";
+                if (dialog1.Checked == true) exeArgs = exeArgs += " -dialog";
+                if (previous1.Checked == true) exeArgs = exeArgs += " -previous";
+                if (simple1.Checked == true) exeArgs = exeArgs += " -simple";
+                if (noinvlib1.Checked == true) exeArgs = exeArgs += " -noinvlib";
+                if (noutc1.Checked == true) exeArgs = exeArgs += " -noutc";
+                if (debugst1.Checked == true) exeArgs = exeArgs += " -debugst";
+                if (local1.Checked == true) exeArgs = exeArgs += " -local";
+                if (purge1.Checked == true) exeArgs = exeArgs += " -purge";
+                if (nofmod1.Checked == true) exeArgs = exeArgs += " -nofmod";
+                if (nosound1.Checked == true) exeArgs = exeArgs += " -nosound";
+                if (noaudio1.Checked == true) exeArgs = exeArgs += " -noaudio";
+                if (url1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -url ";
+                    exeArgs = exeArgs += simBox1.Text;
+                }
+                if (port1.Checked == true)
+                {
+                    int aPort;
+                    aPort = Convert.ToInt32(portBox1.Text);
+                    if (aPort > 13050)
+                    {
+                        portBox1.Text = "13050";
+                        MessageBox.Show("Enter Usable port number, defaulting to 13050.");
+                    }
+                    if(aPort < 13000)
+                    {
+                        portBox1.Text = "13000";
+                        MessageBox.Show("Enter Usable port number, defaulting to 13000.");
+                    }
+                    else
+                    {
+                    }
+                    exeArgs = exeArgs += " -port ";
+                    exeArgs = exeArgs += portBox1.Text;
+                }
+                if (drop1.Checked == true)
+                {
+                    int aPct;
+                    aPct = Convert.ToInt32(dropBox1.Text);
+                    if (aPct > 100)
+                    {
+                        dropBox1.Text = "100";
+                        MessageBox.Show("Enter Usable port number, defaulting to 100.");
+                    }
+                    if (aPct < 0)
+                    {
+                        dropBox1.Text = "0";
+                        MessageBox.Show("Enter Usable port number, defaulting to 0.");
+                    }
+                    else
+                    {
+                    }
+                    exeArgs = exeArgs += " -drop ";
+                    exeArgs = exeArgs += dropBox1.Text;
+                }
+                if (inbw1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -inbw ";
+                    exeArgs = exeArgs += inbwBox1.Text;
+                }
+                if (outbw1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -outbw ";
+                    exeArgs = exeArgs += outbwBox1.Text;
+                }
+                if (settings1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -settings ";
+                    exeArgs = exeArgs += settingsBox1.Text;
+                }
+                if (logfile1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -logfile ";
+                    exeArgs = exeArgs += logfileBox1.Text;
+                }
+                if (yield1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -yield ";
+                    exeArgs = exeArgs += yieldBox1.Text;
+                }
+                if (techTag1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -techtag ";
+                    exeArgs = exeArgs += techtagBox1.Text;
+                }
+                if (quitAfter1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -quitafter ";
+                    exeArgs = exeArgs += quitafterBox1.Text;
+                }
+                if (loginuri1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -loginuri ";
+                    exeArgs = exeArgs += loginuriBox1.Text;
+                }
+                if (set1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -set ";
+                    exeArgs = exeArgs += setBox1.Text;
+                }
+                if (errmask1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -errmask ";
+                    exeArgs = exeArgs += errmaskBox1.Text;
+                }
+                if (raw1.Checked == true)
+                {
+                    exeArgs = exeArgs += " " + rawBox1.Text;
+                }
+                if (skin1.Checked == true)
+                {
+                    bool exists;
+                    if (exists = System.IO.File.Exists(skinBox1.Text + "skin.xml"))
+                    {
+                        exeArgs = exeArgs += " -skin ";
+                        exeArgs = exeArgs += skinBox1.Text + "skin.xml";
+                    }
+                    else
+                    {
+                        MessageBox.Show("SKIN FILE DOES NOT EXIST AT SPECIFIED LOCATION!!!");
+                        skin1.Checked = false;
+                        executeClient();
+                    }
+                }
+                if (user1.Checked == true)
+                {
+                    //find actual login urls
+                    if (comboBox1.Text == "agni") { usrsvr = " -user " + "--agni"; }
+                    if (comboBox1.Text == "colo") { usrsvr = " -user " + "--colo"; }
+                    if (comboBox1.Text == "dmz") { usrsvr = " -user " + "--dmz"; }
+                    if (comboBox1.Text == "durga") { usrsvr = " -user " + "--Durga"; }
+                    if (comboBox1.Text == "siva") { usrsvr = " -user " + "--siva"; }
+                    exeArgs = exeArgs += usrsvr;
+                }
+                if (login1.Checked == true)
+                {
+                    exeArgs = exeArgs += " -login ";
+                    exeArgs = exeArgs += firstBox1.Text + " " + lastBox1.Text + " " + passBox1.Text;
+                }
+                label6.Text = exeString + exeArgs;
+                System.Diagnostics.Process proc = new System.Diagnostics.Process();
+                proc.StartInfo.FileName = exeString;
+                proc.StartInfo.Arguments = exeArgs;
+                proc.StartInfo.UseShellExecute = false;
+                proc.StartInfo.RedirectStandardOutput = false;
+                proc.StartInfo.WorkingDirectory = clientBox1.Text;
+                proc.Start();
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/Main.resx b/OpenSim/Tools/OpenSim.GUI/Main.resx
index db8eb0aaa5..517179d1e1 100644
--- a/OpenSim/Tools/OpenSim.GUI/Main.resx
+++ b/OpenSim/Tools/OpenSim.GUI/Main.resx
@@ -1,135 +1,135 @@
-
-
-  
-  
-    
-    
-      
-        
-          
-            
-              
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-              
-            
-          
-          
-            
-              
-                
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-                
-              
-              
-            
-          
-        
-      
-    
-  
-  
-    text/microsoft-resx
-  
-  
-    2.0
-  
-  
-    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    17, 17
-  
-  
-    126, 17
-  
-  
-    209, 17
-  
-  
-    209, 17
-  
-  
-    39
-  
-
+
+
+  
+  
+    
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    17, 17
+  
+  
+    126, 17
+  
+  
+    209, 17
+  
+  
+    209, 17
+  
+  
+    39
+  
+
diff --git a/OpenSim/Tools/OpenSim.GUI/OpenSim.GUI.csproj b/OpenSim/Tools/OpenSim.GUI/OpenSim.GUI.csproj
index 7ac4290dd3..e722fec47e 100644
--- a/OpenSim/Tools/OpenSim.GUI/OpenSim.GUI.csproj
+++ b/OpenSim/Tools/OpenSim.GUI/OpenSim.GUI.csproj
@@ -1,94 +1,94 @@
-
-  
-    Debug
-    AnyCPU
-    8.0.50727
-    2.0
-    {78AEEDD5-4DA8-4E05-8D53-F3C5476A0B97}
-    WinExe
-    Properties
-    OpenSim.GUI
-    OpenSim.GUI
-  
-  
-    true
-    full
-    false
-    ..\..\..\bin\
-    DEBUG;TRACE
-    prompt
-    4
-  
-  
-    pdbonly
-    true
-    bin\Release\
-    TRACE
-    prompt
-    4
-  
-  
-    
-    
-    
-    
-    
-    
-  
-  
-    
-      Form
-    
-    
-      frmConfiguration.cs
-    
-    
-      Component
-    
-    
-      Form
-    
-    
-      Main.cs
-    
-    
-      Component
-    
-    
-    
-    
-      Designer
-      frmConfiguration.cs
-    
-    
-      Designer
-      Main.cs
-    
-    
-      ResXFileCodeGenerator
-      Resources.Designer.cs
-      Designer
-    
-    
-      True
-      Resources.resx
-    
-    
-      SettingsSingleFileGenerator
-      Settings.Designer.cs
-    
-    
-      True
-      Settings.settings
-      True
-    
-  
-  
-  
+
+  
+    Debug
+    AnyCPU
+    8.0.50727
+    2.0
+    {78AEEDD5-4DA8-4E05-8D53-F3C5476A0B97}
+    WinExe
+    Properties
+    OpenSim.GUI
+    OpenSim.GUI
+  
+  
+    true
+    full
+    false
+    ..\..\..\bin\
+    DEBUG;TRACE
+    prompt
+    4
+  
+  
+    pdbonly
+    true
+    bin\Release\
+    TRACE
+    prompt
+    4
+  
+  
+    
+    
+    
+    
+    
+    
+  
+  
+    
+      Form
+    
+    
+      frmConfiguration.cs
+    
+    
+      Component
+    
+    
+      Form
+    
+    
+      Main.cs
+    
+    
+      Component
+    
+    
+    
+    
+      Designer
+      frmConfiguration.cs
+    
+    
+      Designer
+      Main.cs
+    
+    
+      ResXFileCodeGenerator
+      Resources.Designer.cs
+      Designer
+    
+    
+      True
+      Resources.resx
+    
+    
+      SettingsSingleFileGenerator
+      Settings.Designer.cs
+    
+    
+      True
+      Settings.settings
+      True
+    
+  
+  
+  
 
\ No newline at end of file
diff --git a/OpenSim/Tools/OpenSim.GUI/ProcessManager.cs b/OpenSim/Tools/OpenSim.GUI/ProcessManager.cs
index 40cc1781e1..0fb3ea4cb8 100644
--- a/OpenSim/Tools/OpenSim.GUI/ProcessManager.cs
+++ b/OpenSim/Tools/OpenSim.GUI/ProcessManager.cs
@@ -1,99 +1,99 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Diagnostics;
-
-namespace OpenSim.GUI
-{
-    public class ProcessManager : Process
-    {
-        private string m_FileName;
-        private string m_Arguments;
-        public ProcessManager(string FileName,string Arguments)
-        {
-            m_FileName = FileName;
-            m_Arguments = Arguments;
-
-//                            MyProc = new Process();
-                StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
-                Console.WriteLine("WorkingDirectory: " + StartInfo.WorkingDirectory);
-                StartInfo.FileName = m_FileName;
-
-                //p.StartInfo.Arguments = "";
-                StartInfo.UseShellExecute = false;
-                StartInfo.RedirectStandardError = true;
-                StartInfo.RedirectStandardInput = true;
-                StartInfo.RedirectStandardOutput = true;
-                StartInfo.CreateNoWindow = true;
-
-
-
-        }
-
-        public void StartProcess()
-        {
-            try
-            {
-                Start();
-                BeginOutputReadLine();
-                BeginErrorReadLine();
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("Exception Occurred :{0},{1}",
-                          ex.Message, ex.StackTrace.ToString());
-            }
-        }
-        public void StopProcess()
-        {
-            try
-            {
-                CancelErrorRead();
-                CancelErrorRead();
-                if (!HasExited)
-                {
-                    StandardInput.WriteLine("quit");
-                    StandardInput.WriteLine("shutdown");
-                    System.Threading.Thread.Sleep(500);
-                    if (!HasExited)
-                    {
-                        Kill();
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-                Console.WriteLine("Exception Occurred :{0},{1}",
-                          ex.Message, ex.StackTrace.ToString());
-            }
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Diagnostics;
+
+namespace OpenSim.GUI
+{
+    public class ProcessManager : Process
+    {
+        private string m_FileName;
+        private string m_Arguments;
+        public ProcessManager(string FileName,string Arguments)
+        {
+            m_FileName = FileName;
+            m_Arguments = Arguments;
+
+//                            MyProc = new Process();
+                StartInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory;
+                Console.WriteLine("WorkingDirectory: " + StartInfo.WorkingDirectory);
+                StartInfo.FileName = m_FileName;
+
+                //p.StartInfo.Arguments = "";
+                StartInfo.UseShellExecute = false;
+                StartInfo.RedirectStandardError = true;
+                StartInfo.RedirectStandardInput = true;
+                StartInfo.RedirectStandardOutput = true;
+                StartInfo.CreateNoWindow = true;
+
+
+
+        }
+
+        public void StartProcess()
+        {
+            try
+            {
+                Start();
+                BeginOutputReadLine();
+                BeginErrorReadLine();
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("Exception Occurred :{0},{1}",
+                          ex.Message, ex.StackTrace.ToString());
+            }
+        }
+        public void StopProcess()
+        {
+            try
+            {
+                CancelErrorRead();
+                CancelErrorRead();
+                if (!HasExited)
+                {
+                    StandardInput.WriteLine("quit");
+                    StandardInput.WriteLine("shutdown");
+                    System.Threading.Thread.Sleep(500);
+                    if (!HasExited)
+                    {
+                        Kill();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                Console.WriteLine("Exception Occurred :{0},{1}",
+                          ex.Message, ex.StackTrace.ToString());
+            }
+        }
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/Program.cs b/OpenSim/Tools/OpenSim.GUI/Program.cs
index c554875bed..231a001797 100644
--- a/OpenSim/Tools/OpenSim.GUI/Program.cs
+++ b/OpenSim/Tools/OpenSim.GUI/Program.cs
@@ -1,48 +1,48 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.Windows.Forms;
-
-namespace OpenSim.GUI
-{
-    static class Program
-    {
-        /// 
-        /// The main entry point for the application.
-        /// 
-        [STAThread]
-        static void Main()
-        {
-            Application.EnableVisualStyles();
-            Application.SetCompatibleTextRenderingDefault(false);
-            Application.Run(new Main());
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace OpenSim.GUI
+{
+    static class Program
+    {
+        /// 
+        /// The main entry point for the application.
+        /// 
+        [STAThread]
+        static void Main()
+        {
+            Application.EnableVisualStyles();
+            Application.SetCompatibleTextRenderingDefault(false);
+            Application.Run(new Main());
+        }
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/Properties/AssemblyInfo.cs b/OpenSim/Tools/OpenSim.GUI/Properties/AssemblyInfo.cs
index 3e86b1ced0..f579a3f49e 100644
--- a/OpenSim/Tools/OpenSim.GUI/Properties/AssemblyInfo.cs
+++ b/OpenSim/Tools/OpenSim.GUI/Properties/AssemblyInfo.cs
@@ -1,33 +1,61 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following 
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("OpenSim.GUI")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("OpenSim.GUI")]
-[assembly: AssemblyCopyright("Copyright ©  2007")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible 
-// to COM components.  If you need to access a type in this assembly from 
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("c8dbda49-66bd-476b-93b3-71774870b73e")]
-
-// Version information for an assembly consists of the following four values:
-//
-//      Major Version
-//      Minor Version 
-//      Build Number
-//      Revision
-//
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("OpenSim.GUI")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("OpenSim.GUI")]
+[assembly: AssemblyCopyright("Copyright © 2007")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("c8dbda49-66bd-476b-93b3-71774870b73e")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/OpenSim/Tools/OpenSim.GUI/Properties/Resources.resx b/OpenSim/Tools/OpenSim.GUI/Properties/Resources.resx
index ffecec851a..af7dbebbac 100644
--- a/OpenSim/Tools/OpenSim.GUI/Properties/Resources.resx
+++ b/OpenSim/Tools/OpenSim.GUI/Properties/Resources.resx
@@ -1,117 +1,117 @@
-
-
-  
-  
-    
-      
-        
-          
-            
-              
-                
-              
-              
-              
-              
-            
-          
-          
-            
-              
-              
-            
-          
-          
-            
-              
-                
-                
-              
-              
-              
-              
-            
-          
-          
-            
-              
-                
-              
-              
-            
-          
-        
-      
-    
-  
-  
-    text/microsoft-resx
-  
-  
-    2.0
-  
-  
-    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
+
+
+  
+  
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
 
\ No newline at end of file
diff --git a/OpenSim/Tools/OpenSim.GUI/Properties/Settings.settings b/OpenSim/Tools/OpenSim.GUI/Properties/Settings.settings
index abf36c5d3d..39645652af 100644
--- a/OpenSim/Tools/OpenSim.GUI/Properties/Settings.settings
+++ b/OpenSim/Tools/OpenSim.GUI/Properties/Settings.settings
@@ -1,7 +1,7 @@
-
-
-  
-    
-  
-  
-
+
+
+  
+    
+  
+  
+
diff --git a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.Designer.cs b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.Designer.cs
index 556349bda3..92d1aa466f 100644
--- a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.Designer.cs
+++ b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.Designer.cs
@@ -1,89 +1,89 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-namespace OpenSim.GUI
-{
-    partial class frmConfiguration
-    {
-        /// 
-        /// Required designer variable.
-        /// 
-        private System.ComponentModel.IContainer components = null;
-
-        /// 
-        /// Clean up any resources being used.
-        /// 
-        /// true if managed resources should be disposed; otherwise, false.
-        protected override void Dispose(bool disposing)
-        {
-            if (disposing && (components != null))
-            {
-                components.Dispose();
-            }
-            base.Dispose(disposing);
-        }
-
-        #region Windows Form Designer generated code
-
-        /// 
-        /// Required method for Designer support - do not modify
-        /// the contents of this method with the code editor.
-        /// 
-        private void InitializeComponent()
-        {
-            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmConfiguration));
-            this.textBox1 = new System.Windows.Forms.TextBox();
-            this.SuspendLayout();
-            // 
-            // textBox1
-            // 
-            this.textBox1.Location = new System.Drawing.Point(12, 12);
-            this.textBox1.Multiline = true;
-            this.textBox1.Name = "textBox1";
-            this.textBox1.Size = new System.Drawing.Size(570, 190);
-            this.textBox1.TabIndex = 0;
-            this.textBox1.Text = resources.GetString("textBox1.Text");
-            // 
-            // frmConfiguration
-            // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(664, 413);
-            this.Controls.Add(this.textBox1);
-            this.Name = "frmConfiguration";
-            this.Text = "Configuration";
-            this.ResumeLayout(false);
-            this.PerformLayout();
-
-        }
-
-        #endregion
-
-        private System.Windows.Forms.TextBox textBox1;
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+namespace OpenSim.GUI
+{
+    partial class frmConfiguration
+    {
+        /// 
+        /// Required designer variable.
+        /// 
+        private System.ComponentModel.IContainer components = null;
+
+        /// 
+        /// Clean up any resources being used.
+        /// 
+        /// true if managed resources should be disposed; otherwise, false.
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// 
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// 
+        private void InitializeComponent()
+        {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmConfiguration));
+            this.textBox1 = new System.Windows.Forms.TextBox();
+            this.SuspendLayout();
+            // 
+            // textBox1
+            // 
+            this.textBox1.Location = new System.Drawing.Point(12, 12);
+            this.textBox1.Multiline = true;
+            this.textBox1.Name = "textBox1";
+            this.textBox1.Size = new System.Drawing.Size(570, 190);
+            this.textBox1.TabIndex = 0;
+            this.textBox1.Text = resources.GetString("textBox1.Text");
+            // 
+            // frmConfiguration
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.ClientSize = new System.Drawing.Size(664, 413);
+            this.Controls.Add(this.textBox1);
+            this.Name = "frmConfiguration";
+            this.Text = "Configuration";
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TextBox textBox1;
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.cs b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.cs
index ba64cbc301..91ad65677e 100644
--- a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.cs
+++ b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.cs
@@ -1,46 +1,46 @@
-/*
-* Copyright (c) Contributors, http://opensimulator.org/
-* See CONTRIBUTORS.TXT for a full list of copyright holders.
-*
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions are met:
-*     * Redistributions of source code must retain the above copyright
-*       notice, this list of conditions and the following disclaimer.
-*     * Redistributions in binary form must reproduce the above copyright
-*       notice, this list of conditions and the following disclaimer in the
-*       documentation and/or other materials provided with the distribution.
-*     * Neither the name of the OpenSim Project nor the
-*       names of its contributors may be used to endorse or promote products
-*       derived from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS AS IS AND ANY
-* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* 
-*/
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
-using System.Windows.Forms;
-
-namespace OpenSim.GUI
-{
-    public partial class frmConfiguration : Form
-    {
-        public frmConfiguration()
-        {
-            InitializeComponent();
-        }
-    }
-}
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace OpenSim.GUI
+{
+    public partial class frmConfiguration : Form
+    {
+        public frmConfiguration()
+        {
+            InitializeComponent();
+        }
+    }
+}
diff --git a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.resx b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.resx
index 2002e68f0d..084547c86f 100644
--- a/OpenSim/Tools/OpenSim.GUI/frmConfiguration.resx
+++ b/OpenSim/Tools/OpenSim.GUI/frmConfiguration.resx
@@ -1,129 +1,129 @@
-
-
-  
-  
-    
-    
-      
-        
-          
-            
-              
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-              
-            
-          
-          
-            
-              
-                
-                
-              
-              
-              
-              
-              
-            
-          
-          
-            
-              
-                
-              
-              
-            
-          
-        
-      
-    
-  
-  
-    text/microsoft-resx
-  
-  
-    2.0
-  
-  
-    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-  
-  
-    What I want here:
-* Region configuration add/disable/modify)
-* OpenSim config: what physics/sql/scriptengine modules
-* Configuration for each of the servers
-* An option of what parts the server will run: "Stand Alone, Grid region, Grid Server, Custom"
-Custom = you can enable/disable one or more services, for example if you only run AssetServer on this machine.
-* User manager (add/remove/lockout/modify) -- maybe a separate form for this?
-  
+
+
+  
+  
+    
+    
+      
+        
+          
+            
+              
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+              
+            
+          
+          
+            
+              
+                
+                
+              
+              
+              
+              
+              
+            
+          
+          
+            
+              
+                
+              
+              
+            
+          
+        
+      
+    
+  
+  
+    text/microsoft-resx
+  
+  
+    2.0
+  
+  
+    System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+  
+  
+    What I want here:
+* Region configuration add/disable/modify)
+* OpenSim config: what physics/sql/scriptengine modules
+* Configuration for each of the servers
+* An option of what parts the server will run: "Stand Alone, Grid region, Grid Server, Custom"
+Custom = you can enable/disable one or more services, for example if you only run AssetServer on this machine.
+* User manager (add/remove/lockout/modify) -- maybe a separate form for this?
+  
 
\ No newline at end of file
diff --git a/OpenSim/Tools/Windows/Installer/LICENSE.txt b/OpenSim/Tools/Windows/Installer/LICENSE.txt
deleted file mode 100644
index d38b6700b3..0000000000
--- a/OpenSim/Tools/Windows/Installer/LICENSE.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) Contributors, http://opensimulator.org/
-See CONTRIBUTORS.TXT for a full list of copyright holders.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-     * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of the OpenSim Project nor the
-      names of its contributors may be used to endorse or promote products
-      derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/OpenSim/Tools/Windows/Installer/OpenSim.nsi b/OpenSim/Tools/Windows/Installer/OpenSim.nsi
index d1df7ba678..3c3fe812b9 100644
--- a/OpenSim/Tools/Windows/Installer/OpenSim.nsi
+++ b/OpenSim/Tools/Windows/Installer/OpenSim.nsi
@@ -1,151 +1,151 @@
-!include "MUI.nsh"
-
-Name "OpenSim"
-OutFile "OpenSim Setup 0.4.exe"
-
-CRCCheck On
-
-InstallDir "$PROGRAMFILES\OpenSim"
-InstallDirRegKey HKCU "Software\OpenSim" ""
-
-;Vista redirects $SMPROGRAMS to all users without this
-RequestExecutionLevel admin
-
-Var MUI_TEMP
-Var STARTMENU_FOLDER
-
-!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
-!define MUI_LANGDLL_REGISTRY_KEY "Software\OpenSim" 
-!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
-
-!define MUI_ABORTWARNING
-
-!insertmacro MUI_PAGE_WELCOME
-!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
-!insertmacro MUI_PAGE_DIRECTORY
-
-!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" 
-!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenSim" 
-!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
-  
-!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
-
-!insertmacro MUI_PAGE_INSTFILES
-!insertmacro MUI_PAGE_FINISH
-
-!insertmacro MUI_UNPAGE_WELCOME
-!insertmacro MUI_UNPAGE_CONFIRM
-!insertmacro MUI_UNPAGE_INSTFILES
-!insertmacro MUI_UNPAGE_FINISH
-
-!insertmacro MUI_LANGUAGE "English"
-!insertmacro MUI_LANGUAGE "French"
-!insertmacro MUI_LANGUAGE "German"
-!insertmacro MUI_LANGUAGE "Spanish"
-!insertmacro MUI_LANGUAGE "SpanishInternational"
-!insertmacro MUI_LANGUAGE "SimpChinese"
-!insertmacro MUI_LANGUAGE "TradChinese"
-!insertmacro MUI_LANGUAGE "Japanese"
-!insertmacro MUI_LANGUAGE "Korean"
-!insertmacro MUI_LANGUAGE "Italian"
-!insertmacro MUI_LANGUAGE "Dutch"
-!insertmacro MUI_LANGUAGE "Danish"
-!insertmacro MUI_LANGUAGE "Swedish"
-!insertmacro MUI_LANGUAGE "Norwegian"
-!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
-!insertmacro MUI_LANGUAGE "Finnish"
-!insertmacro MUI_LANGUAGE "Greek"
-!insertmacro MUI_LANGUAGE "Russian"
-!insertmacro MUI_LANGUAGE "Portuguese"
-!insertmacro MUI_LANGUAGE "PortugueseBR"
-!insertmacro MUI_LANGUAGE "Polish"
-!insertmacro MUI_LANGUAGE "Ukrainian"
-!insertmacro MUI_LANGUAGE "Czech"
-!insertmacro MUI_LANGUAGE "Slovak"
-!insertmacro MUI_LANGUAGE "Croatian"
-!insertmacro MUI_LANGUAGE "Bulgarian"
-!insertmacro MUI_LANGUAGE "Hungarian"
-!insertmacro MUI_LANGUAGE "Thai"
-!insertmacro MUI_LANGUAGE "Romanian"
-!insertmacro MUI_LANGUAGE "Latvian"
-!insertmacro MUI_LANGUAGE "Macedonian"
-!insertmacro MUI_LANGUAGE "Estonian"
-!insertmacro MUI_LANGUAGE "Turkish"
-!insertmacro MUI_LANGUAGE "Lithuanian"
-!insertmacro MUI_LANGUAGE "Slovenian"
-!insertmacro MUI_LANGUAGE "Serbian"
-!insertmacro MUI_LANGUAGE "SerbianLatin"
-!insertmacro MUI_LANGUAGE "Arabic"
-!insertmacro MUI_LANGUAGE "Farsi"
-!insertmacro MUI_LANGUAGE "Hebrew"
-!insertmacro MUI_LANGUAGE "Indonesian"
-!insertmacro MUI_LANGUAGE "Mongolian"
-!insertmacro MUI_LANGUAGE "Luxembourgish"
-!insertmacro MUI_LANGUAGE "Albanian"
-!insertmacro MUI_LANGUAGE "Breton"
-!insertmacro MUI_LANGUAGE "Belarusian"
-!insertmacro MUI_LANGUAGE "Icelandic"
-!insertmacro MUI_LANGUAGE "Malay"
-!insertmacro MUI_LANGUAGE "Bosnian"
-!insertmacro MUI_LANGUAGE "Kurdish"
-!insertmacro MUI_LANGUAGE "Irish"
-!insertmacro MUI_LANGUAGE "Uzbek"
-!insertmacro MUI_LANGUAGE "Galician"
-!insertmacro MUI_LANGUAGE "Afrikaans"
-!insertmacro MUI_LANGUAGE "Catalan"
-
-!insertmacro MUI_RESERVEFILE_LANGDLL
-
-Section "Install"
-  SetOutPath "$INSTDIR"
-
-  SetCompress Auto
-  SetOverwrite IfNewer
-  File /r "bin\*.*"
-
-  WriteRegStr HKCU "Software\OpenSim" "" $INSTDIR
-  WriteUninstaller "$INSTDIR\Uninstall.exe"
-
-  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
-    CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
-    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenSim.lnk" "$INSTDIR\OpenSim.exe"
-    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
-  !insertmacro MUI_STARTMENU_WRITE_END
-
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim" "DisplayName" "OpenSim (remove only)"
-  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim" "UninstallString" "$INSTDIR\Uninstall.exe"
-SectionEnd
-
-Function .onInit
-  !insertmacro MUI_LANGDLL_DISPLAY
-FunctionEnd
-
-Section "Uninstall"
-  Delete "$INSTDIR\*.*"
-  RMDir /r "$INSTDIR"
-
-!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
-    
-  Delete "$SMPROGRAMS\$MUI_TEMP\OpenSim.lnk"
-  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
-  
-  ;Delete empty start menu parent diretories
-  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
- 
-  startMenuDeleteLoop:
-    ClearErrors
-    RMDir $MUI_TEMP
-    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
-    
-    IfErrors startMenuDeleteLoopDone
-  
-    StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
-  startMenuDeleteLoopDone:
-
-  DeleteRegKey /ifempty HKCU "Software\OpenSim"
-  DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim"
-SectionEnd
-
-Function un.onInit
-  !insertmacro MUI_UNGETLANGUAGE
-FunctionEnd
+!include "MUI.nsh"
+
+Name "OpenSim"
+OutFile "OpenSim Setup 0.5.exe"
+
+CRCCheck On
+
+InstallDir "$PROGRAMFILES\OpenSim"
+InstallDirRegKey HKCU "Software\OpenSim" ""
+
+;Vista redirects $SMPROGRAMS to all users without this
+RequestExecutionLevel admin
+
+Var MUI_TEMP
+Var STARTMENU_FOLDER
+
+!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" 
+!define MUI_LANGDLL_REGISTRY_KEY "Software\OpenSim" 
+!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
+
+!define MUI_ABORTWARNING
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "LICENSE.txt"
+!insertmacro MUI_PAGE_DIRECTORY
+
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" 
+!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\OpenSim" 
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+  
+!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
+
+!insertmacro MUI_PAGE_INSTFILES
+!insertmacro MUI_PAGE_FINISH
+
+!insertmacro MUI_UNPAGE_WELCOME
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+!insertmacro MUI_LANGUAGE "English"
+!insertmacro MUI_LANGUAGE "French"
+!insertmacro MUI_LANGUAGE "German"
+!insertmacro MUI_LANGUAGE "Spanish"
+!insertmacro MUI_LANGUAGE "SpanishInternational"
+!insertmacro MUI_LANGUAGE "SimpChinese"
+!insertmacro MUI_LANGUAGE "TradChinese"
+!insertmacro MUI_LANGUAGE "Japanese"
+!insertmacro MUI_LANGUAGE "Korean"
+!insertmacro MUI_LANGUAGE "Italian"
+!insertmacro MUI_LANGUAGE "Dutch"
+!insertmacro MUI_LANGUAGE "Danish"
+!insertmacro MUI_LANGUAGE "Swedish"
+!insertmacro MUI_LANGUAGE "Norwegian"
+!insertmacro MUI_LANGUAGE "NorwegianNynorsk"
+!insertmacro MUI_LANGUAGE "Finnish"
+!insertmacro MUI_LANGUAGE "Greek"
+!insertmacro MUI_LANGUAGE "Russian"
+!insertmacro MUI_LANGUAGE "Portuguese"
+!insertmacro MUI_LANGUAGE "PortugueseBR"
+!insertmacro MUI_LANGUAGE "Polish"
+!insertmacro MUI_LANGUAGE "Ukrainian"
+!insertmacro MUI_LANGUAGE "Czech"
+!insertmacro MUI_LANGUAGE "Slovak"
+!insertmacro MUI_LANGUAGE "Croatian"
+!insertmacro MUI_LANGUAGE "Bulgarian"
+!insertmacro MUI_LANGUAGE "Hungarian"
+!insertmacro MUI_LANGUAGE "Thai"
+!insertmacro MUI_LANGUAGE "Romanian"
+!insertmacro MUI_LANGUAGE "Latvian"
+!insertmacro MUI_LANGUAGE "Macedonian"
+!insertmacro MUI_LANGUAGE "Estonian"
+!insertmacro MUI_LANGUAGE "Turkish"
+!insertmacro MUI_LANGUAGE "Lithuanian"
+!insertmacro MUI_LANGUAGE "Slovenian"
+!insertmacro MUI_LANGUAGE "Serbian"
+!insertmacro MUI_LANGUAGE "SerbianLatin"
+!insertmacro MUI_LANGUAGE "Arabic"
+!insertmacro MUI_LANGUAGE "Farsi"
+!insertmacro MUI_LANGUAGE "Hebrew"
+!insertmacro MUI_LANGUAGE "Indonesian"
+!insertmacro MUI_LANGUAGE "Mongolian"
+!insertmacro MUI_LANGUAGE "Luxembourgish"
+!insertmacro MUI_LANGUAGE "Albanian"
+!insertmacro MUI_LANGUAGE "Breton"
+!insertmacro MUI_LANGUAGE "Belarusian"
+!insertmacro MUI_LANGUAGE "Icelandic"
+!insertmacro MUI_LANGUAGE "Malay"
+!insertmacro MUI_LANGUAGE "Bosnian"
+!insertmacro MUI_LANGUAGE "Kurdish"
+!insertmacro MUI_LANGUAGE "Irish"
+!insertmacro MUI_LANGUAGE "Uzbek"
+!insertmacro MUI_LANGUAGE "Galician"
+!insertmacro MUI_LANGUAGE "Afrikaans"
+!insertmacro MUI_LANGUAGE "Catalan"
+
+!insertmacro MUI_RESERVEFILE_LANGDLL
+
+Section "Install"
+  SetOutPath "$INSTDIR"
+
+  SetCompress Auto
+  SetOverwrite IfNewer
+  File /r "bin\*.*"
+
+  WriteRegStr HKCU "Software\OpenSim" "" $INSTDIR
+  WriteUninstaller "$INSTDIR\Uninstall.exe"
+
+  !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+    CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
+    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\OpenSim.lnk" "$INSTDIR\OpenSim.exe"
+    CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
+  !insertmacro MUI_STARTMENU_WRITE_END
+
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim" "DisplayName" "OpenSim (remove only)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim" "UninstallString" "$INSTDIR\Uninstall.exe"
+SectionEnd
+
+Function .onInit
+  !insertmacro MUI_LANGDLL_DISPLAY
+FunctionEnd
+
+Section "Uninstall"
+  Delete "$INSTDIR\*.*"
+  RMDir /r "$INSTDIR"
+
+!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
+    
+  Delete "$SMPROGRAMS\$MUI_TEMP\OpenSim.lnk"
+  Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
+  
+  ;Delete empty start menu parent diretories
+  StrCpy $MUI_TEMP "$SMPROGRAMS\$MUI_TEMP"
+ 
+  startMenuDeleteLoop:
+    ClearErrors
+    RMDir $MUI_TEMP
+    GetFullPathName $MUI_TEMP "$MUI_TEMP\.."
+    
+    IfErrors startMenuDeleteLoopDone
+  
+    StrCmp $MUI_TEMP $SMPROGRAMS startMenuDeleteLoopDone startMenuDeleteLoop
+  startMenuDeleteLoopDone:
+
+  DeleteRegKey /ifempty HKCU "Software\OpenSim"
+  DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenSim"
+SectionEnd
+
+Function un.onInit
+  !insertmacro MUI_UNGETLANGUAGE
+FunctionEnd
diff --git a/OpenSim/Tools/pCampBot/BotManager.cs b/OpenSim/Tools/pCampBot/BotManager.cs
new file mode 100644
index 0000000000..36f3d7f4c5
--- /dev/null
+++ b/OpenSim/Tools/pCampBot/BotManager.cs
@@ -0,0 +1,238 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using libsecondlife;
+using libsecondlife.Packets;
+using Nini.Config;
+using System.Threading;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+
+namespace pCampBot
+{
+    /// 
+    /// Thread/Bot manager for the application
+    /// 
+    public class BotManager : conscmd_callback
+    {
+        private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
+
+        protected ConsoleBase m_console;
+        protected List m_lBot;
+        protected Thread[] m_td;
+        protected bool m_verbose = true;
+        protected Random somthing = new Random(System.Environment.TickCount);
+        protected int numbots = 0;
+        protected IConfig Previous_config;
+        
+        /// 
+        /// Constructor Creates MainConsole.Instance to take commands and provide the place to write data
+        /// 
+        public BotManager()
+        {
+            m_console = CreateConsole();
+            MainConsole.Instance = m_console;
+            m_lBot = new List();
+        }
+
+        /// 
+        /// Startup number of bots specified in the starting arguments
+        /// 
+        /// How many bots to start up
+        /// The configuration for the bots to use
+        public void dobotStartup(int botcount, IConfig cs)
+        {
+            Previous_config = cs;
+            m_td = new Thread[botcount];
+            for (int i = 0; i < botcount; i++)
+            {
+                startupBot(i, cs);
+            }
+        }
+
+        /// 
+        /// Add additional bots (and threads) to our bot pool
+        /// 
+        /// How Many of them to add
+        public void addbots(int botcount)
+        {
+            int len = m_td.Length;
+            Thread[] m_td2 = new Thread[len + botcount];
+            for (int i = 0; i < len; i++)
+            {
+                m_td2[i] = m_td[i];
+            }
+            m_td = m_td2;
+            int newlen = len + botcount;
+            for (int i = len; i < newlen; i++)
+            {
+                startupBot(i, Previous_config);
+            }
+        }
+       
+        /// 
+        /// This starts up the bot and stores the thread for the bot in the thread array
+        /// 
+        /// The position in the thread array to stick the bot's thread
+        /// Configuration of the bot
+        public void startupBot(int pos, IConfig cs)
+        {
+            PhysicsBot pb = new PhysicsBot(cs);
+
+            pb.OnConnected += handlebotEvent;
+            pb.OnDisconnected += handlebotEvent;
+            if (cs.GetString("firstname", "random") == "random") pb.firstname = CreateRandomName();
+            if (cs.GetString("lastname", "random") == "random") pb.lastname = CreateRandomName();
+
+            m_td[pos] = new Thread(pb.startup);
+            m_td[pos].Name = "CampBot_" + pos;
+            m_td[pos].IsBackground = true;
+            m_td[pos].Start();
+            m_lBot.Add(pb);
+            OpenSim.Framework.ThreadTracker.Add(m_td[pos]);
+        }
+
+        /// 
+        /// Creates a random name for the bot
+        /// 
+        /// 
+        private string CreateRandomName()
+        {
+            string returnstring = "";
+            string chars = "abcdefghijklmnopqrstuvwxyz0123456789";
+            
+            for (int i = 0; i < 7; i++)
+            {
+                returnstring += chars.Substring(somthing.Next(chars.Length),1);
+            }
+            return returnstring;
+        }
+
+        /// 
+        /// High level connnected/disconnected events so we can keep track of our threads by proxy
+        /// 
+        /// 
+        /// 
+        public void handlebotEvent(PhysicsBot callbot, EventType eventt)
+        {
+            switch (eventt)
+            {
+                case EventType.CONNECTED:
+                    m_log.Info("[ " + callbot.firstname + " " + callbot.lastname + "]: Connected");
+                    numbots++;
+                    break;
+                case EventType.DISCONNECTED:
+                    m_log.Info("[ " + callbot.firstname + " " + callbot.lastname + "]: Disconnected");
+                    m_td[m_lBot.IndexOf(callbot)].Abort();
+                    numbots--;
+                    if (numbots >1)
+                        Environment.Exit(0);
+                    break;
+            }
+        }
+
+        /// 
+        /// Shutting down all bots
+        /// 
+        public void doBotShutdown()
+        {
+            foreach (PhysicsBot pb in m_lBot)
+            {
+                pb.shutdown();
+            }
+        }
+
+        /// 
+        /// Standard CreateConsole routine
+        /// 
+        /// 
+        protected ConsoleBase CreateConsole()
+        {
+            return new ConsoleBase("Region", this);
+        }
+
+        /// 
+        /// I don't think the bots use this..     
+        /// 
+        /// 
+        /// 
+        /// 
+        private string CombineParams(string[] commandParams, int pos)
+        {
+            string result = String.Empty;
+            for (int i = pos; i < commandParams.Length; i++)
+            {
+                result += commandParams[i] + " ";
+            }
+            result = result.TrimEnd(' ');
+            return result;
+        }
+        
+        /// 
+        /// Command runnint tool..  Currently use it to add bots, shutdown and (dangerous)Forcequit
+        /// 
+        /// 
+        /// 
+        public void RunCmd(string command, string[] cmdparams)
+        {
+            switch (command)
+            {
+                case "shutdown":
+                    m_console.Warn("BOTMANAGER", "Shutting down bots");
+                    doBotShutdown();
+                    break;
+                case "quit":
+                    m_console.Warn("DANGER", "This should only be used to quit the program if you've already used the shutdown command and the program hasn't quit");
+                    Environment.Exit(0);
+                    break;
+                case "addbots":
+                    int newbots = 0;
+                    Helpers.TryParse(cmdparams[0], out newbots);
+                    
+                    if (newbots > 0)
+                        addbots(newbots);
+                    break;
+                case "help":
+                    m_console.Notice("HELP", "\nshutdown - graceful shutdown\naddbots  - adds n bots to the test\nquit - forcequits, dangerous if you have not already run shutdown");
+                    break;
+            }
+        }
+
+        /// 
+        /// Required method to implement the conscmd_callback interface
+        /// 
+        /// 
+        public void Show(string ShowWhat)
+        {
+        }
+    }
+}
diff --git a/OpenSim/Tools/pCampBot/PhysicsBot.cs b/OpenSim/Tools/pCampBot/PhysicsBot.cs
new file mode 100644
index 0000000000..48ce062692
--- /dev/null
+++ b/OpenSim/Tools/pCampBot/PhysicsBot.cs
@@ -0,0 +1,201 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using libsecondlife;
+using libsecondlife.Packets;
+using Nini.Config;
+using System.Threading;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+using Timer = System.Timers.Timer;
+
+namespace pCampBot
+{
+    public class PhysicsBot
+    {
+        public delegate void AnEvent(PhysicsBot callbot, EventType someevent); // event delegate for bot events
+        public IConfig startupConfig; // bot config, passed from BotManager
+
+        public string firstname;
+        public string lastname;
+        public string password;
+        public string loginURI;
+
+        public event AnEvent OnConnected;
+        public event AnEvent OnDisconnected;
+
+        protected Timer m_action; // Action Timer
+
+        protected Random somthing = new Random(System.Environment.TickCount);// We do stuff randomly here
+
+        //New instance of a SecondLife client
+        public SecondLife client = new SecondLife();
+
+        protected string[] talkarray;
+        /// 
+        /// 
+        /// 
+        /// nini config for the bot
+        public PhysicsBot(IConfig bsconfig)
+        {
+            startupConfig = bsconfig;
+            readconfig();
+            talkarray = readexcuses();
+        }
+
+        //We do our actions here.  This is where one would 
+        //add additional steps and/or things the bot should do
+
+        void m_action_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
+        {
+            //client.Throttle.Task = 500000f;
+            //client.Throttle.Set();
+            int walkorrun = somthing.Next(4); // Randomize between walking and running. The greater this number,
+                                              // the greater the bot's chances to walk instead of run.
+            if (walkorrun == 0)
+            {
+                client.Self.Movement.AlwaysRun = true;
+            }
+            else
+            {
+                client.Self.Movement.AlwaysRun = false;
+            }
+
+            LLVector3 pos = client.Self.SimPosition;
+            LLVector3 newpos = new LLVector3(somthing.Next(255), somthing.Next(255), somthing.Next(255));
+            client.Self.Movement.TurnToward(newpos);
+
+            for (int i = 0; i < 2000; i++)
+            {
+                client.Self.Movement.AtPos = true;
+                Thread.Sleep(somthing.Next(25, 75)); // Makes sure the bots keep walking for this time.
+            }
+            client.Self.Jump();
+
+            string randomf = talkarray[somthing.Next(talkarray.Length)];
+            if (talkarray.Length > 1 && randomf.Length > 1)
+                client.Self.Chat(randomf, 0, ChatType.Normal);
+
+            //Thread.Sleep(somthing.Next(1, 10)); // Apparently its better without it right now.
+
+        }
+
+        /// 
+        /// Read the Nini config and initialize
+        /// 
+        public void readconfig()
+        {
+            firstname = startupConfig.GetString("firstname", "random");
+            lastname = startupConfig.GetString("lastname", "random");
+            password = startupConfig.GetString("password", "12345");
+            loginURI = startupConfig.GetString("loginuri", "http://10.1.1.5:9000");
+
+
+
+        }
+
+        /// 
+        /// Tells LibSecondLife to logout and disconnect.  Raises the disconnect events once it finishes.
+        /// 
+        public void shutdown()
+        {
+            client.Network.Logout();
+        }
+
+        /// 
+        /// This is the bot startup loop.
+        /// 
+        public void startup()
+        {
+            client.Settings.LOGIN_SERVER = loginURI;
+            client.Network.OnConnected += new NetworkManager.ConnectedCallback(this.Network_OnConnected);
+            client.Network.OnSimConnected += new NetworkManager.SimConnectedCallback(this.Network_OnConnected);
+            client.Network.OnDisconnected += new NetworkManager.DisconnectedCallback(this.Network_OnDisconnected);
+            if (client.Network.Login(firstname, lastname, password, "pCampBot", "Your name"))
+            {
+
+                if (OnConnected != null)
+                {
+                    m_action = new Timer(somthing.Next(1000, 10000));
+                    m_action.Elapsed += new System.Timers.ElapsedEventHandler(m_action_Elapsed);
+                    m_action.Start();
+                    OnConnected(this, EventType.CONNECTED);
+                    client.Self.Jump();
+
+                }
+            }
+            else
+            {
+                MainConsole.Instance.Error(firstname + " " + lastname, "Can't login: " + client.Network.LoginMessage);
+                if (OnDisconnected != null)
+                {
+                    OnDisconnected(this, EventType.DISCONNECTED);
+                }
+            }
+        }
+
+        public void Network_OnConnected(object sender)
+        {
+            if (OnConnected != null)
+            {
+                OnConnected(this, EventType.CONNECTED);
+            }
+        }
+
+        public void Simulator_Connected(object sender)
+        {
+        }
+
+        public void Network_OnDisconnected(NetworkManager.DisconnectType reason, string message)
+        {
+            if (OnDisconnected != null)
+            {
+                OnDisconnected(this, EventType.DISCONNECTED);
+            }
+        }
+
+        public string[] readexcuses()
+        {
+            string allexcuses = "";
+
+            string file = Path.Combine(Util.configDir(), "pCampBotSentences.txt");
+            if (File.Exists(file))
+            {
+                StreamReader csr = File.OpenText(file);
+                allexcuses = csr.ReadToEnd();
+                csr.Close();
+            }
+
+            return allexcuses.Split(Environment.NewLine.ToCharArray());
+        }
+    }
+}
diff --git a/OpenSim/Tools/pCampBot/README.txt b/OpenSim/Tools/pCampBot/README.txt
new file mode 100644
index 0000000000..7ecbde1ba9
--- /dev/null
+++ b/OpenSim/Tools/pCampBot/README.txt
@@ -0,0 +1,44 @@
+This is the PhysicsCamperbot libslBot tester.
+
+This is designed to be run in standalone mode with authorize accounts
+turned off as a way to stress test the simulator.  It creates 
+clients that log in, randomly jump/walk around, and say excuses from
+the BOFH.
+
+*** WARNING ***
+Using this bot on a public grid could get you banned permanently, so
+just say No! to griefing!
+
+----- Setup -----
+Linux: To build, in the main opensim directory, run:
+  ./runprebuild.sh
+  nant
+
+Windows: Run the prebuild.bat in the main opensim directory and then
+open the created solution and compile it.
+
+pCampBot.exe will end up in the regular opensim/bin folder
+
+----- Running the bot -----
+
+windows: pCampBot.exe -botcount  -loginuri 
+*nix: mono pCampBot.exe -botcount  -loginuri 
+
+The names it produces are random by default, however, you can specify
+either a firstname or a lastname in the command line also.
+
+ex: pCampBot.exe -botcount  -loginuri  -lastname 
+
+If you specify both a firstname *and* a lastname, you'll likely run
+into trouble unless you're only running a single bot.  In that case,
+there's also a password option.
+
+pCampBot.exe -botcount 1 -loginuri http://somegrid.com:8002 -firstname SomeDude -lastname SomeDude -password GobbleDeGook
+
+----- Commands -----
+
+The bot has console commands:
+  help       - lists the console commands and what they do
+  shutdown   - gracefully shuts down the bots
+  quit       - forcefully shuts things down leaving stuff unclean
+  addbots N  - adds N number of random bots. (replace 'N' with a number)
diff --git a/OpenSim/Tools/pCampBot/pCampBot.cs b/OpenSim/Tools/pCampBot/pCampBot.cs
new file mode 100644
index 0000000000..704a3f5c9d
--- /dev/null
+++ b/OpenSim/Tools/pCampBot/pCampBot.cs
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) Contributors, http://opensimulator.org/
+* See CONTRIBUTORS.TXT for a full list of copyright holders.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+*     * Redistributions of source code must retain the above copyright
+*       notice, this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright
+*       notice, this list of conditions and the following disclaimer in the
+*       documentation and/or other materials provided with the distribution.
+*     * Neither the name of the OpenSim Project nor the
+*       names of its contributors may be used to endorse or promote products
+*       derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+* 
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using libsecondlife;
+using libsecondlife.Packets;
+using Nini.Config;
+using System.Threading;
+using OpenSim.Framework.Console;
+
+namespace pCampBot
+{
+    /// 
+    /// Event Types from the BOT.  Add new events here
+    /// 
+    public enum EventType:int
+    {
+        NONE = 0,
+        CONNECTED = 1,
+        DISCONNECTED = 2
+    }
+
+    public class pCampBot
+    {
+        [STAThread]
+        public static void Main(string[] args)
+        {
+            //Set up our nifty config..  thanks to nini
+            ArgvConfigSource cs = new ArgvConfigSource(args);
+
+            cs.AddSwitch("Startup", "botcount");
+            cs.AddSwitch("Startup", "loginuri");
+            cs.AddSwitch("Startup", "firstname");
+            cs.AddSwitch("Startup", "lastname");
+            cs.AddSwitch("Startup", "password");
+
+            IConfig ol = cs.Configs["Startup"];
+            int botcount = ol.GetInt("botcount", 1);
+            BotManager bm = new BotManager();
+
+            //startup specified number of bots.  1 is the default
+            bm.dobotStartup(botcount, ol);
+            while (true)
+            {
+                MainConsole.Instance.Prompt();
+            }
+        }
+    }
+}