aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMW2007-05-15 17:51:13 +0000
committerMW2007-05-15 17:51:13 +0000
commit384293ac5676cf7ba1fbf77c182a117bd61822be (patch)
tree122b1ecab835ba2dca6383e5b33375be233821ba
parentAdded SimClientPacketHandlers.cs (moved the SimClient Packet handlers into it) (diff)
downloadopensim-SC-384293ac5676cf7ba1fbf77c182a117bd61822be.zip
opensim-SC-384293ac5676cf7ba1fbf77c182a117bd61822be.tar.gz
opensim-SC-384293ac5676cf7ba1fbf77c182a117bd61822be.tar.bz2
opensim-SC-384293ac5676cf7ba1fbf77c182a117bd61822be.tar.xz
Worked on Asset server, asset downloads (from server to sim) now work.
Asset uploads (from sim to server) may or may not work, needs more testing, if they don't work then it should be just a encoding problem and not hard to fix.
-rw-r--r--OpenGridServices.AssetServer/AssetHttpServer.cs92
-rw-r--r--OpenGridServices.AssetServer/Main.cs323
-rw-r--r--OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj3
-rw-r--r--OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build1
-rw-r--r--OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs9
-rw-r--r--OpenSim.RegionServer/Assets/AssetCache.cs2
-rw-r--r--OpenSim.RegionServer/OpenSimMain.cs4
-rw-r--r--OpenSim.RegionServer/RegionInfo.cs13
-rw-r--r--OpenSim.Servers/BaseHttpServer.cs167
-rw-r--r--OpenSim.sln322
-rw-r--r--ServiceManager/ServiceManager.csproj33
11 files changed, 585 insertions, 384 deletions
diff --git a/OpenGridServices.AssetServer/AssetHttpServer.cs b/OpenGridServices.AssetServer/AssetHttpServer.cs
new file mode 100644
index 0000000..8439e92
--- /dev/null
+++ b/OpenGridServices.AssetServer/AssetHttpServer.cs
@@ -0,0 +1,92 @@
1using System;
2using System.Collections.Generic;
3using System.Net;
4using System.Text;
5using System.Text.RegularExpressions;
6using System.Threading;
7//using OpenSim.CAPS;
8using Nwc.XmlRpc;
9using System.Collections;
10using OpenSim.Framework.Console;
11using OpenSim.Servers;
12
13namespace OpenGridServices.AssetServer
14{
15 public class AssetHttpServer :BaseHttpServer
16 {
17 public AssetHttpServer(int port)
18 : base(port)
19 {
20 }
21
22 public override void HandleRequest(Object stateinfo)
23 {
24 try
25 {
26 HttpListenerContext context = (HttpListenerContext)stateinfo;
27
28 HttpListenerRequest request = context.Request;
29 HttpListenerResponse response = context.Response;
30
31 response.KeepAlive = false;
32 response.SendChunked = false;
33
34 System.IO.Stream body = request.InputStream;
35 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
36 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
37
38 string requestBody = reader.ReadToEnd();
39 body.Close();
40 reader.Close();
41
42 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
43 //Console.WriteLine(requestBody);
44
45 string responseString = "";
46 switch (request.ContentType)
47 {
48 case "text/xml":
49 // must be XML-RPC, so pass to the XML-RPC parser
50
51 responseString = ParseXMLRPC(requestBody);
52 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
53
54 response.AddHeader("Content-type", "text/xml");
55 break;
56
57 case "application/xml":
58 // probably LLSD we hope, otherwise it should be ignored by the parser
59 responseString = ParseLLSDXML(requestBody);
60 response.AddHeader("Content-type", "application/xml");
61 break;
62
63 case "application/x-www-form-urlencoded":
64 // a form data POST so send to the REST parser
65 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
66 response.AddHeader("Content-type", "text/plain");
67 break;
68
69 case null:
70 // must be REST or invalid crap, so pass to the REST parser
71 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
72 response.AddHeader("Content-type", "text/plain");
73 break;
74
75 }
76
77 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
78 byte[] buffer = Windows1252Encoding.GetBytes(responseString);
79 System.IO.Stream output = response.OutputStream;
80 response.SendChunked = false;
81 response.ContentLength64 = buffer.Length;
82 output.Write(buffer, 0, buffer.Length);
83 output.Close();
84 }
85 catch (Exception e)
86 {
87 Console.WriteLine(e.ToString());
88 }
89 }
90
91 }
92}
diff --git a/OpenGridServices.AssetServer/Main.cs b/OpenGridServices.AssetServer/Main.cs
index c2607c1..ef9cc67 100644
--- a/OpenGridServices.AssetServer/Main.cs
+++ b/OpenGridServices.AssetServer/Main.cs
@@ -40,6 +40,7 @@ using OpenSim.Framework.Sims;
40using OpenSim.Framework.Console; 40using OpenSim.Framework.Console;
41using OpenSim.Framework.Types; 41using OpenSim.Framework.Types;
42using OpenSim.Framework.Interfaces; 42using OpenSim.Framework.Interfaces;
43using OpenSim.Framework.Utilities;
43using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!! 44using OpenSim.GridInterfaces.Local; // REFACTORING IS NEEDED!!!!!!!!!!!
44using OpenSim.Servers; 45using OpenSim.Servers;
45using Db4objects.Db4o; 46using Db4objects.Db4o;
@@ -52,7 +53,7 @@ namespace OpenGridServices.AssetServer
52 public class OpenAsset_Main : BaseServer, conscmd_callback 53 public class OpenAsset_Main : BaseServer, conscmd_callback
53 { 54 {
54 private IObjectContainer db; 55 private IObjectContainer db;
55 56
56 public static OpenAsset_Main assetserver; 57 public static OpenAsset_Main assetserver;
57 58
58 private ConsoleBase m_console; 59 private ConsoleBase m_console;
@@ -70,7 +71,7 @@ namespace OpenGridServices.AssetServer
70 71
71 private void Work() 72 private void Work()
72 { 73 {
73 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"\nEnter help for a list of commands\n"); 74 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "\nEnter help for a list of commands\n");
74 75
75 while (true) 76 while (true)
76 { 77 {
@@ -86,161 +87,191 @@ namespace OpenGridServices.AssetServer
86 87
87 public void Startup() 88 public void Startup()
88 { 89 {
89 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Setting up asset DB"); 90 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Setting up asset DB");
90 setupDB(); 91 setupDB();
91
92 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:Startup() - Starting HTTP process");
93 BaseHttpServer httpServer = new BaseHttpServer(8003);
94 92
93 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:Startup() - Starting HTTP process");
94 AssetHttpServer httpServer = new AssetHttpServer(8003);
95 95
96 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
97 96
97 httpServer.AddRestHandler("GET", "/assets/", this.assetGetMethod);
98 httpServer.AddRestHandler("POST", "/assets/", this.assetPostMethod);
98 99
99 httpServer.Start(); 100 httpServer.Start();
100 101
101 } 102 }
102 103
103 public string assetGetMethod(string request, string path, string param) { 104 public string assetPostMethod(string requestBody, string path, string param)
104 byte[] assetdata=getAssetData(new LLUUID(param),false); 105 {
105 if(assetdata!=null) { 106 AssetBase asset = new AssetBase();
106 return System.Text.Encoding.ASCII.GetString(assetdata); 107 asset.Name = "";
107 } else { 108 asset.FullID = new LLUUID(param);
108 return ""; 109 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
109 } 110 byte[] buffer = Windows1252Encoding.GetBytes(requestBody);
111 asset.Data = buffer;
112 AssetStorage store = new AssetStorage();
113 store.Data = asset.Data;
114 store.Name = asset.Name;
115 store.UUID = asset.FullID;
116 db.Set(store);
117 db.Commit();
118 return "";
119 }
110 120
111 } 121 public string assetGetMethod(string request, string path, string param)
122 {
123 Console.WriteLine("got a request " +param);
124 byte[] assetdata = getAssetData(new LLUUID(param), false);
125 if (assetdata != null)
126 {
127 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
128 string ret = Windows1252Encoding.GetString(assetdata);
129 //string ret = System.Text.Encoding.Unicode.GetString(assetdata);
112 130
113 public byte[] getAssetData(LLUUID assetID, bool isTexture) { 131 return ret;
114 byte[] idata = null; 132
115 bool found = false; 133 }
116 AssetStorage foundAsset = null; 134 else
135 {
136 return "";
137 }
117 138
118 IObjectSet result = db.Get(new AssetStorage(assetID)); 139 }
119 if (result.Count > 0)
120 {
121 foundAsset = (AssetStorage)result.Next();
122 found = true;
123 }
124 140
125 if (found) 141 public byte[] getAssetData(LLUUID assetID, bool isTexture)
126 { 142 {
127 return foundAsset.Data; 143 byte[] idata = null;
128 } 144 bool found = false;
129 else 145 AssetStorage foundAsset = null;
130 { 146
131 return null; 147 IObjectSet result = db.Get(new AssetStorage(assetID));
132 } 148 if (result.Count > 0)
133 } 149 {
134 150 foundAsset = (AssetStorage)result.Next();
135 public void setupDB() { 151 found = true;
136 bool yapfile=System.IO.File.Exists("assets.yap"); 152 }
137 try 153
138 { 154 if (found)
139 db = Db4oFactory.OpenFile("assets.yap"); 155 {
140 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Main.cs:setupDB() - creation"); 156 return foundAsset.Data;
141 } 157 }
142 catch (Exception e) 158 else
143 { 159 {
144 db.Close(); 160 return null;
145 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,"Main.cs:setupDB() - Exception occured"); 161 }
146 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM,e.ToString()); 162 }
147 } 163
148 if (!yapfile) 164 public void setupDB()
149 { 165 {
150 this.LoadDB(); 166 bool yapfile = System.IO.File.Exists("assets.yap");
151 } 167 try
152 } 168 {
153 169 db = Db4oFactory.OpenFile("assets.yap");
154 public void LoadDB() { 170 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "Main.cs:setupDB() - creation");
155 try 171 }
156 { 172 catch (Exception e)
157 173 {
158 Console.WriteLine("setting up Asset database"); 174 db.Close();
159 175 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, "Main.cs:setupDB() - Exception occured");
160 AssetBase Image = new AssetBase(); 176 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.MEDIUM, e.ToString());
161 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001"); 177 }
162 Image.Name = "Bricks"; 178 if (!yapfile)
163 this.LoadAsset(Image, true, "bricks.jp2"); 179 {
164 AssetStorage store = new AssetStorage(); 180 this.LoadDB();
165 store.Data = Image.Data; 181 }
166 store.Name = Image.Name; 182 }
167 store.UUID = Image.FullID; 183
168 db.Set(store); 184 public void LoadDB()
169 db.Commit(); 185 {
170 186 try
171 Image = new AssetBase(); 187 {
172 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002"); 188
173 Image.Name = "Plywood"; 189 Console.WriteLine("setting up Asset database");
174 this.LoadAsset(Image, true, "plywood.jp2"); 190
175 store = new AssetStorage(); 191 AssetBase Image = new AssetBase();
176 store.Data = Image.Data; 192 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000001");
177 store.Name = Image.Name; 193 Image.Name = "Bricks";
178 store.UUID = Image.FullID; 194 this.LoadAsset(Image, true, "bricks.jp2");
179 db.Set(store); 195 AssetStorage store = new AssetStorage();
180 db.Commit(); 196 store.Data = Image.Data;
181 197 store.Name = Image.Name;
182 Image = new AssetBase(); 198 store.UUID = Image.FullID;
183 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003"); 199 db.Set(store);
184 Image.Name = "Rocks"; 200 db.Commit();
185 this.LoadAsset(Image, true, "rocks.jp2"); 201
186 store = new AssetStorage(); 202 Image = new AssetBase();
187 store.Data = Image.Data; 203 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000002");
188 store.Name = Image.Name; 204 Image.Name = "Plywood";
189 store.UUID = Image.FullID; 205 this.LoadAsset(Image, true, "plywood.jp2");
190 db.Set(store); 206 store = new AssetStorage();
191 db.Commit(); 207 store.Data = Image.Data;
192 208 store.Name = Image.Name;
193 Image = new AssetBase(); 209 store.UUID = Image.FullID;
194 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004"); 210 db.Set(store);
195 Image.Name = "Granite"; 211 db.Commit();
196 this.LoadAsset(Image, true, "granite.jp2"); 212
197 store = new AssetStorage(); 213 Image = new AssetBase();
198 store.Data = Image.Data; 214 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000003");
199 store.Name = Image.Name; 215 Image.Name = "Rocks";
200 store.UUID = Image.FullID; 216 this.LoadAsset(Image, true, "rocks.jp2");
201 db.Set(store); 217 store = new AssetStorage();
202 db.Commit(); 218 store.Data = Image.Data;
203 219 store.Name = Image.Name;
204 Image = new AssetBase(); 220 store.UUID = Image.FullID;
205 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005"); 221 db.Set(store);
206 Image.Name = "Hardwood"; 222 db.Commit();
207 this.LoadAsset(Image, true, "hardwood.jp2"); 223
208 store = new AssetStorage(); 224 Image = new AssetBase();
209 store.Data = Image.Data; 225 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000004");
210 store.Name = Image.Name; 226 Image.Name = "Granite";
211 store.UUID = Image.FullID; 227 this.LoadAsset(Image, true, "granite.jp2");
212 db.Set(store); 228 store = new AssetStorage();
213 db.Commit(); 229 store.Data = Image.Data;
214 230 store.Name = Image.Name;
215 Image = new AssetBase(); 231 store.UUID = Image.FullID;
216 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005"); 232 db.Set(store);
217 Image.Name = "Prim Base Texture"; 233 db.Commit();
218 this.LoadAsset(Image, true, "plywood.jp2"); 234
219 store = new AssetStorage(); 235 Image = new AssetBase();
220 store.Data = Image.Data; 236 Image.FullID = new LLUUID("00000000-0000-0000-9999-000000000005");
221 store.Name = Image.Name; 237 Image.Name = "Hardwood";
222 store.UUID = Image.FullID; 238 this.LoadAsset(Image, true, "hardwood.jp2");
223 db.Set(store); 239 store = new AssetStorage();
224 db.Commit(); 240 store.Data = Image.Data;
225 241 store.Name = Image.Name;
226 Image = new AssetBase(); 242 store.UUID = Image.FullID;
227 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73"); 243 db.Set(store);
228 Image.Name = "Shape"; 244 db.Commit();
229 this.LoadAsset(Image, false, "base_shape.dat"); 245
230 store = new AssetStorage(); 246 Image = new AssetBase();
231 store.Data = Image.Data; 247 Image.FullID = new LLUUID("00000000-0000-0000-5005-000000000005");
232 store.Name = Image.Name; 248 Image.Name = "Prim Base Texture";
233 store.UUID = Image.FullID; 249 this.LoadAsset(Image, true, "plywood.jp2");
234 db.Set(store); 250 store = new AssetStorage();
235 db.Commit(); 251 store.Data = Image.Data;
236 } 252 store.Name = Image.Name;
237 catch (Exception e) 253 store.UUID = Image.FullID;
238 { 254 db.Set(store);
239 Console.WriteLine(e.Message); 255 db.Commit();
240 } 256
241 } 257 Image = new AssetBase();
242 258 Image.FullID = new LLUUID("66c41e39-38f9-f75a-024e-585989bfab73");
243 private void LoadAsset(AssetBase info, bool image, string filename) 259 Image.Name = "Shape";
260 this.LoadAsset(Image, false, "base_shape.dat");
261 store = new AssetStorage();
262 store.Data = Image.Data;
263 store.Name = Image.Name;
264 store.UUID = Image.FullID;
265 db.Set(store);
266 db.Commit();
267 }
268 catch (Exception e)
269 {
270 Console.WriteLine(e.Message);
271 }
272 }
273
274 private void LoadAsset(AssetBase info, bool image, string filename)
244 { 275 {
245 276
246 277
@@ -291,7 +322,7 @@ namespace OpenGridServices.AssetServer
291 switch (cmd) 322 switch (cmd)
292 { 323 {
293 case "help": 324 case "help":
294 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH,"shutdown - shutdown this asset server (USE CAUTION!)"); 325 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.HIGH, "shutdown - shutdown this asset server (USE CAUTION!)");
295 break; 326 break;
296 327
297 case "shutdown": 328 case "shutdown":
diff --git a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
index 0392d9f..d01a52e 100644
--- a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
+++ b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.csproj
@@ -112,6 +112,9 @@
112 </ProjectReference> 112 </ProjectReference>
113 </ItemGroup> 113 </ItemGroup>
114 <ItemGroup> 114 <ItemGroup>
115 <Compile Include="AssetHttpServer.cs">
116 <SubType>Code</SubType>
117 </Compile>
115 <Compile Include="Main.cs"> 118 <Compile Include="Main.cs">
116 <SubType>Code</SubType> 119 <SubType>Code</SubType>
117 </Compile> 120 </Compile>
diff --git a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
index a2b1e37..cd76f22 100644
--- a/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
+++ b/OpenGridServices.AssetServer/OpenGridServices.AssetServer.exe.build
@@ -11,6 +11,7 @@
11 <resources prefix="OpenGridServices.AssetServer" dynamicprefix="true" > 11 <resources prefix="OpenGridServices.AssetServer" dynamicprefix="true" >
12 </resources> 12 </resources>
13 <sources failonempty="true"> 13 <sources failonempty="true">
14 <include name="AssetHttpServer.cs" />
14 <include name="Main.cs" /> 15 <include name="Main.cs" />
15 <include name="Properties/AssemblyInfo.cs" /> 16 <include name="Properties/AssemblyInfo.cs" />
16 </sources> 17 </sources>
diff --git a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
index d79073a..7432dee 100644
--- a/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
+++ b/OpenSim.GridInterfaces/Remote/RemoteAssetServer.cs
@@ -49,6 +49,11 @@ namespace OpenSim.GridInterfaces.Remote
49 49
50 public void UploadNewAsset(AssetBase asset) 50 public void UploadNewAsset(AssetBase asset)
51 { 51 {
52 Encoding Windows1252Encoding = Encoding.GetEncoding(1252);
53 string ret = Windows1252Encoding.GetString(asset.Data);
54 byte[] buffer = Windows1252Encoding.GetBytes(ret);
55 WebClient client = new WebClient();
56 client.UploadData(this.AssetServerUrl + "assets/" + asset.FullID, buffer);
52 57
53 } 58 }
54 59
@@ -66,14 +71,14 @@ namespace OpenSim.GridInterfaces.Remote
66 // 404... THE MAGIC FILE NOT FOUND ERROR, very useful for telling you things such as a file (or asset ;) ) not being found!!!!!!!!!!! it's 2:22AM 71 // 404... THE MAGIC FILE NOT FOUND ERROR, very useful for telling you things such as a file (or asset ;) ) not being found!!!!!!!!!!! it's 2:22AM
67 ARequest req = this._assetRequests.Dequeue(); 72 ARequest req = this._assetRequests.Dequeue();
68 LLUUID assetID = req.AssetID; 73 LLUUID assetID = req.AssetID;
69 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW," RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "assets/" + assetID); 74 // OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW," RemoteAssetServer- Got a AssetServer request, processing it - " + this.AssetServerUrl + "assets/" + assetID);
70 WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "assets/" + assetID); 75 WebRequest AssetLoad = WebRequest.Create(this.AssetServerUrl + "assets/" + assetID);
71 WebResponse AssetResponse = AssetLoad.GetResponse(); 76 WebResponse AssetResponse = AssetLoad.GetResponse();
72 byte[] idata = new byte[(int)AssetResponse.ContentLength]; 77 byte[] idata = new byte[(int)AssetResponse.ContentLength];
73 BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream()); 78 BinaryReader br = new BinaryReader(AssetResponse.GetResponseStream());
74 idata = br.ReadBytes((int)AssetResponse.ContentLength); 79 idata = br.ReadBytes((int)AssetResponse.ContentLength);
75 br.Close(); 80 br.Close();
76 81
77 AssetBase asset = new AssetBase(); 82 AssetBase asset = new AssetBase();
78 asset.FullID = assetID; 83 asset.FullID = assetID;
79 asset.Data = idata; 84 asset.Data = idata;
diff --git a/OpenSim.RegionServer/Assets/AssetCache.cs b/OpenSim.RegionServer/Assets/AssetCache.cs
index e217d78..e8bf292 100644
--- a/OpenSim.RegionServer/Assets/AssetCache.cs
+++ b/OpenSim.RegionServer/Assets/AssetCache.cs
@@ -96,7 +96,7 @@ namespace OpenSim.Assets
96 { 96 {
97 //hack: so we can give each user a set of textures 97 //hack: so we can give each user a set of textures
98 textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001"); 98 textureList[0] = new LLUUID("00000000-0000-0000-9999-000000000001");
99 textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002"); 99 textureList[1] = new LLUUID("00000000-0000-0000-9999-000000000002");
100 textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003"); 100 textureList[2] = new LLUUID("00000000-0000-0000-9999-000000000003");
101 textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004"); 101 textureList[3] = new LLUUID("00000000-0000-0000-9999-000000000004");
102 textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005"); 102 textureList[4] = new LLUUID("00000000-0000-0000-9999-000000000005");
diff --git a/OpenSim.RegionServer/OpenSimMain.cs b/OpenSim.RegionServer/OpenSimMain.cs
index fa13064..fc604b7 100644
--- a/OpenSim.RegionServer/OpenSimMain.cs
+++ b/OpenSim.RegionServer/OpenSimMain.cs
@@ -130,7 +130,7 @@ namespace OpenSim
130 GridServers = new Grid(); 130 GridServers = new Grid();
131 if (m_sandbox) 131 if (m_sandbox)
132 { 132 {
133 GridServers.AssetDll = "OpenSim.GridInterfaces.Local.dll"; 133 GridServers.AssetDll = "OpenSim.GridInterfaces.Local.dll";
134 GridServers.GridDll = "OpenSim.GridInterfaces.Local.dll"; 134 GridServers.GridDll = "OpenSim.GridInterfaces.Local.dll";
135 135
136 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Starting in Sandbox mode"); 136 m_console.WriteLine(OpenSim.Framework.Console.LogPriority.LOW,"Starting in Sandbox mode");
@@ -177,7 +177,7 @@ namespace OpenSim
177 177
178 178
179 //should be passing a IGenericConfig object to these so they can read the config data they want from it 179 //should be passing a IGenericConfig object to these so they can read the config data they want from it
180 GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey); 180 GridServers.AssetServer.SetServerInfo(regionData.AssetURL, regionData.AssetSendKey);
181 IGridServer gridServer = GridServers.GridServer; 181 IGridServer gridServer = GridServers.GridServer;
182 gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey); 182 gridServer.SetServerInfo(regionData.GridURL, regionData.GridSendKey, regionData.GridRecvKey);
183 183
diff --git a/OpenSim.RegionServer/RegionInfo.cs b/OpenSim.RegionServer/RegionInfo.cs
index edab1e5..2707257 100644
--- a/OpenSim.RegionServer/RegionInfo.cs
+++ b/OpenSim.RegionServer/RegionInfo.cs
@@ -25,7 +25,7 @@ namespace OpenSim
25 25
26 //following should be removed and the GenericConfig object passed around, 26 //following should be removed and the GenericConfig object passed around,
27 //so each class (AssetServer, GridServer etc) can access what config data they want 27 //so each class (AssetServer, GridServer etc) can access what config data they want
28 public string AssetURL = ""; 28 public string AssetURL = "http://127.0.0.1:8003/";
29 public string AssetSendKey = ""; 29 public string AssetSendKey = "";
30 30
31 public string GridURL = ""; 31 public string GridURL = "";
@@ -230,6 +230,17 @@ namespace OpenSim
230 this.GridRecvKey = attri; 230 this.GridRecvKey = attri;
231 } 231 }
232 232
233 attri = "";
234 attri = configData.GetAttribute("AssetServerURL");
235 if (attri == "")
236 {
237 this.AssetURL = OpenSim.Framework.Console.MainConsole.Instance.CmdPrompt("Asset server URL", "http://127.0.0.1:8003/");
238 configData.SetAttribute("AssetServerURL", this.GridURL);
239 }
240 else
241 {
242 this.AssetURL = attri;
243 }
233 244
234 } 245 }
235 this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256)); 246 this.RegionHandle = Util.UIntsToLong((RegionLocX * 256), (RegionLocY * 256));
diff --git a/OpenSim.Servers/BaseHttpServer.cs b/OpenSim.Servers/BaseHttpServer.cs
index a14e5c3..38f4370 100644
--- a/OpenSim.Servers/BaseHttpServer.cs
+++ b/OpenSim.Servers/BaseHttpServer.cs
@@ -26,14 +26,14 @@ namespace OpenSim.Servers
26 { 26 {
27 get { return m_restMethod; } 27 get { return m_restMethod; }
28 } 28 }
29 29
30 public RestMethodEntry( string path, RestMethod restMethod ) 30 public RestMethodEntry(string path, RestMethod restMethod)
31 { 31 {
32 m_path = path; 32 m_path = path;
33 m_restMethod = restMethod; 33 m_restMethod = restMethod;
34 } 34 }
35 } 35 }
36 36
37 protected Thread m_workerThread; 37 protected Thread m_workerThread;
38 protected HttpListener m_httpListener; 38 protected HttpListener m_httpListener;
39 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>(); 39 protected Dictionary<string, RestMethodEntry> m_restHandlers = new Dictionary<string, RestMethodEntry>();
@@ -48,10 +48,10 @@ namespace OpenSim.Servers
48 public bool AddRestHandler(string method, string path, RestMethod handler) 48 public bool AddRestHandler(string method, string path, RestMethod handler)
49 { 49 {
50 string methodKey = String.Format("{0}: {1}", method, path); 50 string methodKey = String.Format("{0}: {1}", method, path);
51 51
52 if (!this.m_restHandlers.ContainsKey(methodKey)) 52 if (!this.m_restHandlers.ContainsKey(methodKey))
53 { 53 {
54 this.m_restHandlers.Add(methodKey, new RestMethodEntry( path, handler )); 54 this.m_restHandlers.Add(methodKey, new RestMethodEntry(path, handler));
55 return true; 55 return true;
56 } 56 }
57 57
@@ -74,9 +74,9 @@ namespace OpenSim.Servers
74 protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request) 74 protected virtual string ProcessXMLRPCMethod(string methodName, XmlRpcRequest request)
75 { 75 {
76 XmlRpcResponse response; 76 XmlRpcResponse response;
77 77
78 XmlRpcMethod method; 78 XmlRpcMethod method;
79 if( this.m_rpcHandlers.TryGetValue( methodName, out method ) ) 79 if (this.m_rpcHandlers.TryGetValue(methodName, out method))
80 { 80 {
81 response = method(request); 81 response = method(request);
82 } 82 }
@@ -96,15 +96,15 @@ namespace OpenSim.Servers
96 protected virtual string ParseREST(string request, string path, string method) 96 protected virtual string ParseREST(string request, string path, string method)
97 { 97 {
98 string response; 98 string response;
99 99
100 string requestKey = String.Format("{0}: {1}", method, path); 100 string requestKey = String.Format("{0}: {1}", method, path);
101 101
102 string bestMatch = String.Empty; 102 string bestMatch = String.Empty;
103 foreach( string currentKey in m_restHandlers.Keys ) 103 foreach (string currentKey in m_restHandlers.Keys)
104 { 104 {
105 if( requestKey.StartsWith( currentKey )) 105 if (requestKey.StartsWith(currentKey))
106 { 106 {
107 if(currentKey.Length > bestMatch.Length ) 107 if (currentKey.Length > bestMatch.Length)
108 { 108 {
109 bestMatch = currentKey; 109 bestMatch = currentKey;
110 } 110 }
@@ -116,9 +116,9 @@ namespace OpenSim.Servers
116 { 116 {
117 RestMethod restMethod = restMethodEntry.RestMethod; 117 RestMethod restMethod = restMethodEntry.RestMethod;
118 118
119 string param = path.Substring( restMethodEntry.Path.Length ); 119 string param = path.Substring(restMethodEntry.Path.Length);
120 response = restMethod(request, path, param); 120 response = restMethod(request, path, param);
121 121
122 } 122 }
123 else 123 else
124 { 124 {
@@ -144,7 +144,7 @@ namespace OpenSim.Servers
144 144
145 string methodName = request.MethodName; 145 string methodName = request.MethodName;
146 146
147 responseString = ProcessXMLRPCMethod(methodName, request ); 147 responseString = ProcessXMLRPCMethod(methodName, request);
148 } 148 }
149 catch (Exception e) 149 catch (Exception e)
150 { 150 {
@@ -155,83 +155,86 @@ namespace OpenSim.Servers
155 155
156 public virtual void HandleRequest(Object stateinfo) 156 public virtual void HandleRequest(Object stateinfo)
157 { 157 {
158 try { 158 try
159 HttpListenerContext context = (HttpListenerContext)stateinfo; 159 {
160 160 HttpListenerContext context = (HttpListenerContext)stateinfo;
161 HttpListenerRequest request = context.Request; 161
162 HttpListenerResponse response = context.Response; 162 HttpListenerRequest request = context.Request;
163 163 HttpListenerResponse response = context.Response;
164 response.KeepAlive = false; 164
165 response.SendChunked = false; 165 response.KeepAlive = false;
166 166 response.SendChunked = false;
167 System.IO.Stream body = request.InputStream; 167
168 System.Text.Encoding encoding = System.Text.Encoding.UTF8; 168 System.IO.Stream body = request.InputStream;
169 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding); 169 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
170 170 System.IO.StreamReader reader = new System.IO.StreamReader(body, encoding);
171 string requestBody = reader.ReadToEnd(); 171
172 body.Close(); 172 string requestBody = reader.ReadToEnd();
173 reader.Close(); 173 body.Close();
174 174 reader.Close();
175 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType); 175
176 //Console.WriteLine(requestBody); 176 //Console.WriteLine(request.HttpMethod + " " + request.RawUrl + " Http/" + request.ProtocolVersion.ToString() + " content type: " + request.ContentType);
177 177 //Console.WriteLine(requestBody);
178 string responseString = ""; 178
179 switch (request.ContentType) 179 string responseString = "";
180 { 180 switch (request.ContentType)
181 case "text/xml": 181 {
182 // must be XML-RPC, so pass to the XML-RPC parser 182 case "text/xml":
183 183 // must be XML-RPC, so pass to the XML-RPC parser
184 responseString = ParseXMLRPC(requestBody); 184
185 responseString = Regex.Replace(responseString, "utf-16", "utf-8"); 185 responseString = ParseXMLRPC(requestBody);
186 186 responseString = Regex.Replace(responseString, "utf-16", "utf-8");
187 response.AddHeader("Content-type", "text/xml"); 187
188 break; 188 response.AddHeader("Content-type", "text/xml");
189 189 break;
190 case "application/xml": 190
191 // probably LLSD we hope, otherwise it should be ignored by the parser 191 case "application/xml":
192 responseString = ParseLLSDXML(requestBody); 192 // probably LLSD we hope, otherwise it should be ignored by the parser
193 response.AddHeader("Content-type", "application/xml"); 193 responseString = ParseLLSDXML(requestBody);
194 break; 194 response.AddHeader("Content-type", "application/xml");
195 195 break;
196 case "application/x-www-form-urlencoded": 196
197 // a form data POST so send to the REST parser 197 case "application/x-www-form-urlencoded":
198 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); 198 // a form data POST so send to the REST parser
199 response.AddHeader("Content-type", "text/html"); 199 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
200 break; 200 response.AddHeader("Content-type", "text/html");
201 201 break;
202 case null: 202
203 // must be REST or invalid crap, so pass to the REST parser 203 case null:
204 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod); 204 // must be REST or invalid crap, so pass to the REST parser
205 response.AddHeader("Content-type", "text/html"); 205 responseString = ParseREST(requestBody, request.RawUrl, request.HttpMethod);
206 break; 206 response.AddHeader("Content-type", "text/html");
207 207 break;
208 } 208
209 209 }
210 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); 210
211 System.IO.Stream output = response.OutputStream; 211 byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
212 response.SendChunked = false; 212 System.IO.Stream output = response.OutputStream;
213 response.ContentLength64 = buffer.Length; 213 response.SendChunked = false;
214 output.Write(buffer, 0, buffer.Length); 214 response.ContentLength64 = buffer.Length;
215 output.Close(); 215 output.Write(buffer, 0, buffer.Length);
216 } catch (Exception e) { 216 output.Close();
217 Console.WriteLine(e.ToString()); 217 }
218 } 218 catch (Exception e)
219 {
220 Console.WriteLine(e.ToString());
221 }
219 } 222 }
220 223
221 public void Start() 224 public void Start()
222 { 225 {
223 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"BaseHttpServer.cs: Starting up HTTP Server"); 226 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: Starting up HTTP Server");
224 227
225 m_workerThread = new Thread(new ThreadStart(StartHTTP)); 228 m_workerThread = new Thread(new ThreadStart(StartHTTP));
226 m_workerThread.IsBackground = true; 229 m_workerThread.IsBackground = true;
227 m_workerThread.Start(); 230 m_workerThread.Start();
228 } 231 }
229 232
230 private void StartHTTP() 233 private void StartHTTP()
231 { 234 {
232 try 235 try
233 { 236 {
234 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW,"BaseHttpServer.cs: StartHTTP() - Spawned main thread OK"); 237 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.LOW, "BaseHttpServer.cs: StartHTTP() - Spawned main thread OK");
235 m_httpListener = new HttpListener(); 238 m_httpListener = new HttpListener();
236 239
237 m_httpListener.Prefixes.Add("http://+:" + m_port + "/"); 240 m_httpListener.Prefixes.Add("http://+:" + m_port + "/");
@@ -246,7 +249,7 @@ namespace OpenSim.Servers
246 } 249 }
247 catch (Exception e) 250 catch (Exception e)
248 { 251 {
249 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.MEDIUM,e.Message); 252 OpenSim.Framework.Console.MainConsole.Instance.WriteLine(LogPriority.MEDIUM, e.Message);
250 } 253 }
251 } 254 }
252 } 255 }
diff --git a/OpenSim.sln b/OpenSim.sln
index db4f96d..3c914ea 100644
--- a/OpenSim.sln
+++ b/OpenSim.sln
@@ -1,5 +1,5 @@
1Microsoft Visual Studio Solution File, Format Version 9.00 1Microsoft Visual Studio Solution File, Format Version 9.00
2# Visual C# Express 2005 2# Visual Studio 2005
3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}" 3Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Terrain.BasicTerrain", "OpenSim.Terrain.BasicTerrain\OpenSim.Terrain.BasicTerrain.csproj", "{2270B8FE-0000-0000-0000-000000000000}"
4EndProject 4EndProject
5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageBerkeleyDB", "OpenSim.Storage\LocalStorageBerkeleyDB\OpenSim.Storage.LocalStorageBerkeleyDB.csproj", "{EE9E5D96-0000-0000-0000-000000000000}" 5Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSim.Storage.LocalStorageBerkeleyDB", "OpenSim.Storage\LocalStorageBerkeleyDB\OpenSim.Storage.LocalStorageBerkeleyDB.csproj", "{EE9E5D96-0000-0000-0000-000000000000}"
@@ -61,133 +61,195 @@ EndProject
61Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}" 61Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLRPC", "XmlRpcCS\XMLRPC.csproj", "{8E81D43C-0000-0000-0000-000000000000}"
62EndProject 62EndProject
63Global 63Global
64 GlobalSection(SolutionConfigurationPlatforms) = preSolution 64 GlobalSection(SolutionConfigurationPlatforms) = preSolution
65 Debug|Any CPU = Debug|Any CPU 65 Debug|Any CPU = Debug|Any CPU
66 Release|Any CPU = Release|Any CPU 66 Release|Any CPU = Release|Any CPU
67 EndGlobalSection 67 EndGlobalSection
68 GlobalSection(ProjectConfigurationPlatforms) = postSolution 68 GlobalSection(ProjectDependencies) = postSolution
69 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 69 ({EE9E5D96-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000})
70 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 70 ({EE9E5D96-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000})
71 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 71 ({63A05FE9-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
72 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 72 ({438A9556-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
73 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 73 ({438A9556-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
74 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 74 ({438A9556-0000-0000-0000-000000000000}).7 = ({8BE16150-0000-0000-0000-000000000000})
75 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 75 ({438A9556-0000-0000-0000-000000000000}).8 = ({8BB20F0A-0000-0000-0000-000000000000})
76 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 76 ({438A9556-0000-0000-0000-000000000000}).9 = ({632E1BFD-0000-0000-0000-000000000000})
77 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 77 ({632E1BFD-0000-0000-0000-000000000000}).5 = ({2270B8FE-0000-0000-0000-000000000000})
78 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 78 ({632E1BFD-0000-0000-0000-000000000000}).6 = ({8ACA2445-0000-0000-0000-000000000000})
79 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 79 ({632E1BFD-0000-0000-0000-000000000000}).7 = ({A7CD0630-0000-0000-0000-000000000000})
80 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 80 ({632E1BFD-0000-0000-0000-000000000000}).8 = ({E88EF749-0000-0000-0000-000000000000})
81 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 81 ({632E1BFD-0000-0000-0000-000000000000}).9 = ({8BE16150-0000-0000-0000-000000000000})
82 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 82 ({632E1BFD-0000-0000-0000-000000000000}).10 = ({8BB20F0A-0000-0000-0000-000000000000})
83 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 83 ({632E1BFD-0000-0000-0000-000000000000}).11 = ({8E81D43C-0000-0000-0000-000000000000})
84 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 84 ({8ACA2445-0000-0000-0000-000000000000}).4 = ({8E81D43C-0000-0000-0000-000000000000})
85 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 85 ({8BE16150-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
86 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 86 ({8BE16150-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
87 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 87 ({97A82740-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
88 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 88 ({0F3C3AC1-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
89 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 89 ({E88EF749-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
90 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 90 ({66591469-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
91 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 91 ({66591469-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
92 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 92 ({66591469-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000})
93 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 93 ({66591469-0000-0000-0000-000000000000}).8 = ({8E81D43C-0000-0000-0000-000000000000})
94 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 94 ({4F874463-0000-0000-0000-000000000000}).2 = ({8BE16150-0000-0000-0000-000000000000})
95 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 95 ({8BB20F0A-0000-0000-0000-000000000000}).2 = ({8ACA2445-0000-0000-0000-000000000000})
96 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 96 ({8BB20F0A-0000-0000-0000-000000000000}).3 = ({A7CD0630-0000-0000-0000-000000000000})
97 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 97 ({8BB20F0A-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
98 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 98 ({B0027747-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
99 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 99 ({B0027747-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
100 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 100 ({988F0AC4-0000-0000-0000-000000000000}).3 = ({8BE16150-0000-0000-0000-000000000000})
101 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 101 ({0A563AC1-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
102 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 102 ({7924FD35-0000-0000-0000-000000000000}).1 = ({8ACA2445-0000-0000-0000-000000000000})
103 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 103 ({7924FD35-0000-0000-0000-000000000000}).2 = ({8BB20F0A-0000-0000-0000-000000000000})
104 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 104 ({7924FD35-0000-0000-0000-000000000000}).3 = ({8E81D43C-0000-0000-0000-000000000000})
105 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 105 ({B55C0B5D-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
106 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 106 ({B55C0B5D-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
107 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 107 ({B55C0B5D-0000-0000-0000-000000000000}).5 = ({8E81D43C-0000-0000-0000-000000000000})
108 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 108 ({21BFC8E2-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
109 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 109 ({21BFC8E2-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
110 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 110 ({21BFC8E2-0000-0000-0000-000000000000}).5 = ({8BB20F0A-0000-0000-0000-000000000000})
111 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 111 ({21BFC8E2-0000-0000-0000-000000000000}).6 = ({62CDF671-0000-0000-0000-000000000000})
112 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 112 ({21BFC8E2-0000-0000-0000-000000000000}).7 = ({7924FD35-0000-0000-0000-000000000000})
113 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 113 ({21BFC8E2-0000-0000-0000-000000000000}).10 = ({8E81D43C-0000-0000-0000-000000000000})
114 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 114 ({E1B79ECF-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
115 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 115 ({E1B79ECF-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
116 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 116 ({6B20B603-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
117 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 117 ({6B20B603-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
118 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 118 ({39BD9497-0000-0000-0000-000000000000}).3 = ({62CDF671-0000-0000-0000-000000000000})
119 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 119 ({7E494328-0000-0000-0000-000000000000}).5 = ({8ACA2445-0000-0000-0000-000000000000})
120 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 120 ({7E494328-0000-0000-0000-000000000000}).6 = ({A7CD0630-0000-0000-0000-000000000000})
121 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 121 ({1E3F341A-0000-0000-0000-000000000000}).4 = ({62CDF671-0000-0000-0000-000000000000})
122 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 122 ({546099CD-0000-0000-0000-000000000000}).4 = ({8ACA2445-0000-0000-0000-000000000000})
123 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 123 ({546099CD-0000-0000-0000-000000000000}).5 = ({A7CD0630-0000-0000-0000-000000000000})
124 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 124 ({0021261B-0000-0000-0000-000000000000}).3 = ({8ACA2445-0000-0000-0000-000000000000})
125 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 125 ({0021261B-0000-0000-0000-000000000000}).4 = ({A7CD0630-0000-0000-0000-000000000000})
126 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 126 ({0021261B-0000-0000-0000-000000000000}).5 = ({546099CD-0000-0000-0000-000000000000})
127 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 127 ({0021261B-0000-0000-0000-000000000000}).6 = ({8BB20F0A-0000-0000-0000-000000000000})
128 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 128 ({0021261B-0000-0000-0000-000000000000}).9 = ({8E81D43C-0000-0000-0000-000000000000})
129 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 129 EndGlobalSection
130 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 130 GlobalSection(ProjectConfigurationPlatforms) = postSolution
131 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 131 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
132 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 132 {2270B8FE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
133 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 133 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
134 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 134 {2270B8FE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
135 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 135 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
136 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 136 {EE9E5D96-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
137 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 137 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
138 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 138 {EE9E5D96-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
139 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 139 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
140 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 140 {63A05FE9-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
141 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 141 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
142 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 142 {63A05FE9-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
143 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 143 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
144 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 144 {A7CD0630-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
145 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 145 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
146 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 146 {A7CD0630-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
147 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 147 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
148 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 148 {438A9556-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
149 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 149 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
150 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 150 {438A9556-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
151 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 151 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
152 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 152 {632E1BFD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
153 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 153 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
154 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 154 {632E1BFD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
155 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 155 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
156 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 156 {8ACA2445-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
157 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 157 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
158 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 158 {8ACA2445-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
159 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 159 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
160 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 160 {8BE16150-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
161 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 161 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
162 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 162 {8BE16150-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
163 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 163 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
164 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 164 {97A82740-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
165 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 165 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
166 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 166 {97A82740-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
167 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 167 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
168 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 168 {0F3C3AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
169 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 169 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
170 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 170 {0F3C3AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
171 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 171 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
172 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 172 {E88EF749-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
173 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 173 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
174 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 174 {E88EF749-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
175 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 175 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
176 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 176 {66591469-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
177 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 177 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
178 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 178 {66591469-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
179 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 179 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
180 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 180 {4F874463-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
181 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 181 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
182 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 182 {4F874463-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
183 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 183 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
184 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 184 {8BB20F0A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
185 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 185 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
186 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU 186 {8BB20F0A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
187 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU 187 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
188 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU 188 {B0027747-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
189 EndGlobalSection 189 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
190 GlobalSection(SolutionProperties) = preSolution 190 {B0027747-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
191 HideSolutionNode = FALSE 191 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
192 EndGlobalSection 192 {988F0AC4-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
193 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
194 {988F0AC4-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
195 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
196 {0A563AC1-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
197 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
198 {0A563AC1-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
199 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
200 {7924FD35-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
201 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
202 {7924FD35-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
203 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
204 {B55C0B5D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
205 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
206 {B55C0B5D-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
207 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
208 {21BFC8E2-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
209 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
210 {21BFC8E2-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
211 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
212 {62CDF671-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
213 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
214 {62CDF671-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
215 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
216 {E1B79ECF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
217 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
218 {E1B79ECF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
219 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
220 {6B20B603-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
221 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
222 {6B20B603-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
223 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
224 {39BD9497-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
225 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
226 {39BD9497-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
227 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
228 {7E494328-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
229 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
230 {7E494328-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
231 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
232 {E141F4EE-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
233 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
234 {E141F4EE-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
235 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
236 {1E3F341A-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
237 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
238 {1E3F341A-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
239 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
240 {546099CD-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
241 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
242 {546099CD-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
243 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
244 {0021261B-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
245 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
246 {0021261B-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
247 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
248 {8E81D43C-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU
249 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU
250 {8E81D43C-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU
251 EndGlobalSection
252 GlobalSection(SolutionProperties) = preSolution
253 HideSolutionNode = FALSE
254 EndGlobalSection
193EndGlobal 255EndGlobal
diff --git a/ServiceManager/ServiceManager.csproj b/ServiceManager/ServiceManager.csproj
index ac118c3..f703ef1 100644
--- a/ServiceManager/ServiceManager.csproj
+++ b/ServiceManager/ServiceManager.csproj
@@ -1,4 +1,4 @@
1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 1<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2 <PropertyGroup> 2 <PropertyGroup>
3 <ProjectType>Local</ProjectType> 3 <ProjectType>Local</ProjectType>
4 <ProductVersion>8.0.50727</ProductVersion> 4 <ProductVersion>8.0.50727</ProductVersion>
@@ -6,8 +6,7 @@
6 <ProjectGuid>{E141F4EE-0000-0000-0000-000000000000}</ProjectGuid> 6 <ProjectGuid>{E141F4EE-0000-0000-0000-000000000000}</ProjectGuid>
7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 7 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 8 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
9 <ApplicationIcon> 9 <ApplicationIcon></ApplicationIcon>
10 </ApplicationIcon>
11 <AssemblyKeyContainerName> 10 <AssemblyKeyContainerName>
12 </AssemblyKeyContainerName> 11 </AssemblyKeyContainerName>
13 <AssemblyName>ServiceManager</AssemblyName> 12 <AssemblyName>ServiceManager</AssemblyName>
@@ -16,11 +15,9 @@
16 <DefaultTargetSchema>IE50</DefaultTargetSchema> 15 <DefaultTargetSchema>IE50</DefaultTargetSchema>
17 <DelaySign>false</DelaySign> 16 <DelaySign>false</DelaySign>
18 <OutputType>Exe</OutputType> 17 <OutputType>Exe</OutputType>
19 <AppDesignerFolder> 18 <AppDesignerFolder></AppDesignerFolder>
20 </AppDesignerFolder>
21 <RootNamespace>ServiceManager</RootNamespace> 19 <RootNamespace>ServiceManager</RootNamespace>
22 <StartupObject> 20 <StartupObject></StartupObject>
23 </StartupObject>
24 <FileUpgradeFlags> 21 <FileUpgradeFlags>
25 </FileUpgradeFlags> 22 </FileUpgradeFlags>
26 </PropertyGroup> 23 </PropertyGroup>
@@ -31,8 +28,7 @@
31 <ConfigurationOverrideFile> 28 <ConfigurationOverrideFile>
32 </ConfigurationOverrideFile> 29 </ConfigurationOverrideFile>
33 <DefineConstants>TRACE;DEBUG</DefineConstants> 30 <DefineConstants>TRACE;DEBUG</DefineConstants>
34 <DocumentationFile> 31 <DocumentationFile></DocumentationFile>
35 </DocumentationFile>
36 <DebugSymbols>True</DebugSymbols> 32 <DebugSymbols>True</DebugSymbols>
37 <FileAlignment>4096</FileAlignment> 33 <FileAlignment>4096</FileAlignment>
38 <Optimize>False</Optimize> 34 <Optimize>False</Optimize>
@@ -41,8 +37,7 @@
41 <RemoveIntegerChecks>False</RemoveIntegerChecks> 37 <RemoveIntegerChecks>False</RemoveIntegerChecks>
42 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 38 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
43 <WarningLevel>4</WarningLevel> 39 <WarningLevel>4</WarningLevel>
44 <NoWarn> 40 <NoWarn></NoWarn>
45 </NoWarn>
46 </PropertyGroup> 41 </PropertyGroup>
47 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 42 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
48 <AllowUnsafeBlocks>False</AllowUnsafeBlocks> 43 <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
@@ -51,8 +46,7 @@
51 <ConfigurationOverrideFile> 46 <ConfigurationOverrideFile>
52 </ConfigurationOverrideFile> 47 </ConfigurationOverrideFile>
53 <DefineConstants>TRACE</DefineConstants> 48 <DefineConstants>TRACE</DefineConstants>
54 <DocumentationFile> 49 <DocumentationFile></DocumentationFile>
55 </DocumentationFile>
56 <DebugSymbols>False</DebugSymbols> 50 <DebugSymbols>False</DebugSymbols>
57 <FileAlignment>4096</FileAlignment> 51 <FileAlignment>4096</FileAlignment>
58 <Optimize>True</Optimize> 52 <Optimize>True</Optimize>
@@ -61,19 +55,18 @@
61 <RemoveIntegerChecks>False</RemoveIntegerChecks> 55 <RemoveIntegerChecks>False</RemoveIntegerChecks>
62 <TreatWarningsAsErrors>False</TreatWarningsAsErrors> 56 <TreatWarningsAsErrors>False</TreatWarningsAsErrors>
63 <WarningLevel>4</WarningLevel> 57 <WarningLevel>4</WarningLevel>
64 <NoWarn> 58 <NoWarn></NoWarn>
65 </NoWarn>
66 </PropertyGroup> 59 </PropertyGroup>
67 <ItemGroup> 60 <ItemGroup>
68 <Reference Include="System"> 61 <Reference Include="System" >
69 <HintPath>System.dll</HintPath> 62 <HintPath>System.dll</HintPath>
70 <Private>False</Private> 63 <Private>False</Private>
71 </Reference> 64 </Reference>
72 <Reference Include="System.ServiceProcess"> 65 <Reference Include="System.ServiceProcess" >
73 <HintPath>System.ServiceProcess.dll</HintPath> 66 <HintPath>System.ServiceProcess.dll</HintPath>
74 <Private>False</Private> 67 <Private>False</Private>
75 </Reference> 68 </Reference>
76 <Reference Include="System.Xml"> 69 <Reference Include="System.Xml" >
77 <HintPath>System.Xml.dll</HintPath> 70 <HintPath>System.Xml.dll</HintPath>
78 <Private>False</Private> 71 <Private>False</Private>
79 </Reference> 72 </Reference>
@@ -82,7 +75,7 @@
82 </ItemGroup> 75 </ItemGroup>
83 <ItemGroup> 76 <ItemGroup>
84 <Compile Include="ServiceManager.cs"> 77 <Compile Include="ServiceManager.cs">
85 <SubType>Component</SubType> 78 <SubType>Code</SubType>
86 </Compile> 79 </Compile>
87 </ItemGroup> 80 </ItemGroup>
88 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" /> 81 <Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
@@ -92,4 +85,4 @@
92 <PostBuildEvent> 85 <PostBuildEvent>
93 </PostBuildEvent> 86 </PostBuildEvent>
94 </PropertyGroup> 87 </PropertyGroup>
95</Project> \ No newline at end of file 88</Project>