[mapguide-commits] r7846 - in trunk/Tools/Maestro: Generated Maestro MaestroAPITests OSGeo.MapGuide.MaestroAPI OSGeo.MapGuide.MaestroAPI/Commands OSGeo.MapGuide.MaestroAPI/ObjectModels OSGeo.MapGuide.MaestroAPI/Schemas OSGeo.MapGuide.MaestroAPI.Http OSGeo.MapGuide.MaestroAPI.Http/Commands Thirdparty/Xsd2Code Thirdparty/Xsd2Code/Xsd2Code.Addin Thirdparty/Xsd2Code/Xsd2Code.Console Thirdparty/Xsd2Code/Xsd2Code.CustomTool Thirdparty/Xsd2Code/Xsd2Code.Library Thirdparty/Xsd2Code/Xsd2Code.Setup Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/bin Thirdparty/Xsd2Code/Xsd2Code.TestUnit

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Sep 6 08:23:24 PDT 2013


Author: jng
Date: 2013-09-06 08:23:24 -0700 (Fri, 06 Sep 2013)
New Revision: 7846

Added:
   trunk/Tools/Maestro/Generated/RuntimeMap-2.6.0.designer.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpCreateRuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpDescribeRuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CreateRuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/DescribeRuntimeMap.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapImpl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapInterfaces.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas/RuntimeMap-2.6.0.xsd
Modified:
   trunk/Tools/Maestro/Maestro/Maestro.csproj
   trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
   trunk/Tools/Maestro/MaestroAPITests/TestControl.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpCapabilities.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CommandType.cs
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
   trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin/Xsd2Code.Addin.csproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Console/Xsd2Code.csproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool/Xsd2Code.CustomTool.csproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Library/Xsd2Code.Library.csproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup/Xsd2Code.Setup.vdproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/Xsd2Code.SetupLibrary.csproj
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/bin/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit/
   trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit/Xsd2Code.TestUnit.csproj
Log:
This submission includes the following changes:
 - Fix our thirdparty copy of xsd2code. It wasn't actually building.
 - #2357: Add MaestroAPI support for the new CREATERUNTIMEMAP and DESCRIBERUNTMEMAP operations in the mapagent.
   - Add new xml serialization classes for RuntimeMap-2.6.0.xsd, using our thirdparty copy of xsd2code
   - Add new CommandType enums for CreateRuntimeMap and DescribeRuntimeMap
   - Implement support for the new operations in the HTTP connection provider
   - Add new unit tests to exercise these two operations. They are ignored if testing against a version of MapGuide older than 2.6.

Added: trunk/Tools/Maestro/Generated/RuntimeMap-2.6.0.designer.cs
===================================================================
--- trunk/Tools/Maestro/Generated/RuntimeMap-2.6.0.designer.cs	                        (rev 0)
+++ trunk/Tools/Maestro/Generated/RuntimeMap-2.6.0.designer.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,3143 @@
+// ------------------------------------------------------------------------------
+//  <auto-generated>
+//    Generated by Xsd2Code. Version 3.3.0.2211
+//    <NameSpace>OSGeo.MapGuide.ObjectModels.RuntimeMap</NameSpace><Collection>BindingList</Collection><codeType>CSharp</codeType><EnableDataBinding>True</EnableDataBinding><EnableLasyLoading>False</EnableLasyLoading><HidePrivateFieldInIDE>True</HidePrivateFieldInIDE><EnableSummaryComment>True</EnableSummaryComment><IncludeSerializeMethod>True</IncludeSerializeMethod><UseBaseClass>False</UseBaseClass><GenerateCloneMethod>True</GenerateCloneMethod><GenerateDataContracts>False</GenerateDataContracts><CodeBaseTag>Net20</CodeBaseTag><SerializeMethodName>Serialize</SerializeMethodName><DeserializeMethodName>Deserialize</DeserializeMethodName><SaveToFileMethodName>SaveToFile</SaveToFileMethodName><LoadFromFileMethodName>LoadFromFile</LoadFromFileMethodName><GenerateXMLAttributes>True</GenerateXMLAttributes><AutomaticProperties>False</AutomaticProperties><DisableDebug>False</DisableDebug><CustomUsings></CustomUsings><ExcludeIncludedTypes>False</ExcludeIncludedTypes><EnableInitializ
 eFields>False</EnableInitializeFields>
+//  </auto-generated>
+// ------------------------------------------------------------------------------
+namespace OSGeo.MapGuide.ObjectModels.RuntimeMap {
+    using System;
+    using System.Diagnostics;
+    using System.Xml.Serialization;
+    using System.Collections;
+    using System.Xml.Schema;
+    using System.ComponentModel;
+    using System.IO;
+    
+    
+    /// <summary>
+    /// Describes information about a Runtime Map, so that client applications can interact with it
+    /// </summary>
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
+    public partial class RuntimeMap : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string siteVersionField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string nameField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string mapDefinitionField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string backgroundColorField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string displayDpiField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string iconMimeTypeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private CoordinateSystemType coordinateSystemField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private Envelope extentsField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<RuntimeMapGroup> groupField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<RuntimeMapLayer> layerField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<double> finiteDisplayScaleField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        /// <summary>
+        /// The MapGuide Site Version
+        /// </summary>
+        public string SiteVersion {
+            get {
+                return this.siteVersionField;
+            }
+            set {
+                if ((this.siteVersionField != null)) {
+                    if ((siteVersionField.Equals(value) != true)) {
+                        this.siteVersionField = value;
+                        this.OnPropertyChanged("SiteVersion");
+                    }
+                }
+                else {
+                    this.siteVersionField = value;
+                    this.OnPropertyChanged("SiteVersion");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The name of the runtime map. This is the value required for any mapagent operation that require a MAPNAME parameter
+        /// </summary>
+        public string Name {
+            get {
+                return this.nameField;
+            }
+            set {
+                if ((this.nameField != null)) {
+                    if ((nameField.Equals(value) != true)) {
+                        this.nameField = value;
+                        this.OnPropertyChanged("Name");
+                    }
+                }
+                else {
+                    this.nameField = value;
+                    this.OnPropertyChanged("Name");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The resource id of the Map Definition from which this runtime map was created from
+        /// </summary>
+        public string MapDefinition {
+            get {
+                return this.mapDefinitionField;
+            }
+            set {
+                if ((this.mapDefinitionField != null)) {
+                    if ((mapDefinitionField.Equals(value) != true)) {
+                        this.mapDefinitionField = value;
+                        this.OnPropertyChanged("MapDefinition");
+                    }
+                }
+                else {
+                    this.mapDefinitionField = value;
+                    this.OnPropertyChanged("MapDefinition");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The map's background color in ARGB hex string format
+        /// </summary>
+        public string BackgroundColor {
+            get {
+                return this.backgroundColorField;
+            }
+            set {
+                if ((this.backgroundColorField != null)) {
+                    if ((backgroundColorField.Equals(value) != true)) {
+                        this.backgroundColorField = value;
+                        this.OnPropertyChanged("BackgroundColor");
+                    }
+                }
+                else {
+                    this.backgroundColorField = value;
+                    this.OnPropertyChanged("BackgroundColor");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The number of dots per inch of the map display
+        /// </summary>
+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
+        public string DisplayDpi {
+            get {
+                return this.displayDpiField;
+            }
+            set {
+                if ((this.displayDpiField != null)) {
+                    if ((displayDpiField.Equals(value) != true)) {
+                        this.displayDpiField = value;
+                        this.OnPropertyChanged("DisplayDpi");
+                    }
+                }
+                else {
+                    this.displayDpiField = value;
+                    this.OnPropertyChanged("DisplayDpi");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The mime type of all inline icons
+        /// </summary>
+        public string IconMimeType {
+            get {
+                return this.iconMimeTypeField;
+            }
+            set {
+                if ((this.iconMimeTypeField != null)) {
+                    if ((iconMimeTypeField.Equals(value) != true)) {
+                        this.iconMimeTypeField = value;
+                        this.OnPropertyChanged("IconMimeType");
+                    }
+                }
+                else {
+                    this.iconMimeTypeField = value;
+                    this.OnPropertyChanged("IconMimeType");
+                }
+            }
+        }
+        
+        public CoordinateSystemType CoordinateSystem {
+            get {
+                return this.coordinateSystemField;
+            }
+            set {
+                if ((this.coordinateSystemField != null)) {
+                    if ((coordinateSystemField.Equals(value) != true)) {
+                        this.coordinateSystemField = value;
+                        this.OnPropertyChanged("CoordinateSystem");
+                    }
+                }
+                else {
+                    this.coordinateSystemField = value;
+                    this.OnPropertyChanged("CoordinateSystem");
+                }
+            }
+        }
+        
+        public Envelope Extents {
+            get {
+                return this.extentsField;
+            }
+            set {
+                if ((this.extentsField != null)) {
+                    if ((extentsField.Equals(value) != true)) {
+                        this.extentsField = value;
+                        this.OnPropertyChanged("Extents");
+                    }
+                }
+                else {
+                    this.extentsField = value;
+                    this.OnPropertyChanged("Extents");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("Group")]
+        public BindingList<RuntimeMapGroup> Group {
+            get {
+                return this.groupField;
+            }
+            set {
+                if ((this.groupField != null)) {
+                    if ((groupField.Equals(value) != true)) {
+                        this.groupField = value;
+                        this.OnPropertyChanged("Group");
+                    }
+                }
+                else {
+                    this.groupField = value;
+                    this.OnPropertyChanged("Group");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("Layer")]
+        public BindingList<RuntimeMapLayer> Layer {
+            get {
+                return this.layerField;
+            }
+            set {
+                if ((this.layerField != null)) {
+                    if ((layerField.Equals(value) != true)) {
+                        this.layerField = value;
+                        this.OnPropertyChanged("Layer");
+                    }
+                }
+                else {
+                    this.layerField = value;
+                    this.OnPropertyChanged("Layer");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("FiniteDisplayScale")]
+        public BindingList<double> FiniteDisplayScale {
+            get {
+                return this.finiteDisplayScaleField;
+            }
+            set {
+                if ((this.finiteDisplayScaleField != null)) {
+                    if ((finiteDisplayScaleField.Equals(value) != true)) {
+                        this.finiteDisplayScaleField = value;
+                        this.OnPropertyChanged("FiniteDisplayScale");
+                    }
+                }
+                else {
+                    this.finiteDisplayScaleField = value;
+                    this.OnPropertyChanged("FiniteDisplayScale");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(RuntimeMap));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current RuntimeMap object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an RuntimeMap object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output RuntimeMap object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out RuntimeMap obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMap);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out RuntimeMap obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static RuntimeMap Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((RuntimeMap)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current RuntimeMap object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an RuntimeMap object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output RuntimeMap object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out RuntimeMap obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMap);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out RuntimeMap obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static RuntimeMap LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this RuntimeMap object
+        /// </summary>
+        public virtual RuntimeMap Clone() {
+            return ((RuntimeMap)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class CoordinateSystemType : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string wktField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string mentorCodeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string epsgCodeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private double metersPerUnitField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public string Wkt {
+            get {
+                return this.wktField;
+            }
+            set {
+                if ((this.wktField != null)) {
+                    if ((wktField.Equals(value) != true)) {
+                        this.wktField = value;
+                        this.OnPropertyChanged("Wkt");
+                    }
+                }
+                else {
+                    this.wktField = value;
+                    this.OnPropertyChanged("Wkt");
+                }
+            }
+        }
+        
+        public string MentorCode {
+            get {
+                return this.mentorCodeField;
+            }
+            set {
+                if ((this.mentorCodeField != null)) {
+                    if ((mentorCodeField.Equals(value) != true)) {
+                        this.mentorCodeField = value;
+                        this.OnPropertyChanged("MentorCode");
+                    }
+                }
+                else {
+                    this.mentorCodeField = value;
+                    this.OnPropertyChanged("MentorCode");
+                }
+            }
+        }
+        
+        public string EpsgCode {
+            get {
+                return this.epsgCodeField;
+            }
+            set {
+                if ((this.epsgCodeField != null)) {
+                    if ((epsgCodeField.Equals(value) != true)) {
+                        this.epsgCodeField = value;
+                        this.OnPropertyChanged("EpsgCode");
+                    }
+                }
+                else {
+                    this.epsgCodeField = value;
+                    this.OnPropertyChanged("EpsgCode");
+                }
+            }
+        }
+        
+        public double MetersPerUnit {
+            get {
+                return this.metersPerUnitField;
+            }
+            set {
+                if ((metersPerUnitField.Equals(value) != true)) {
+                    this.metersPerUnitField = value;
+                    this.OnPropertyChanged("MetersPerUnit");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(CoordinateSystemType));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current CoordinateSystemType object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an CoordinateSystemType object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output CoordinateSystemType object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out CoordinateSystemType obj, out System.Exception exception) {
+            exception = null;
+            obj = default(CoordinateSystemType);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out CoordinateSystemType obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static CoordinateSystemType Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((CoordinateSystemType)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current CoordinateSystemType object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an CoordinateSystemType object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output CoordinateSystemType object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out CoordinateSystemType obj, out System.Exception exception) {
+            exception = null;
+            obj = default(CoordinateSystemType);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out CoordinateSystemType obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static CoordinateSystemType LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this CoordinateSystemType object
+        /// </summary>
+        public virtual CoordinateSystemType Clone() {
+            return ((CoordinateSystemType)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class RuleInfo : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string legendLabelField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string filterField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string iconField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public string LegendLabel {
+            get {
+                return this.legendLabelField;
+            }
+            set {
+                if ((this.legendLabelField != null)) {
+                    if ((legendLabelField.Equals(value) != true)) {
+                        this.legendLabelField = value;
+                        this.OnPropertyChanged("LegendLabel");
+                    }
+                }
+                else {
+                    this.legendLabelField = value;
+                    this.OnPropertyChanged("LegendLabel");
+                }
+            }
+        }
+        
+        public string Filter {
+            get {
+                return this.filterField;
+            }
+            set {
+                if ((this.filterField != null)) {
+                    if ((filterField.Equals(value) != true)) {
+                        this.filterField = value;
+                        this.OnPropertyChanged("Filter");
+                    }
+                }
+                else {
+                    this.filterField = value;
+                    this.OnPropertyChanged("Filter");
+                }
+            }
+        }
+        
+        public string Icon {
+            get {
+                return this.iconField;
+            }
+            set {
+                if ((this.iconField != null)) {
+                    if ((iconField.Equals(value) != true)) {
+                        this.iconField = value;
+                        this.OnPropertyChanged("Icon");
+                    }
+                }
+                else {
+                    this.iconField = value;
+                    this.OnPropertyChanged("Icon");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(RuleInfo));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current RuleInfo object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an RuleInfo object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output RuleInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out RuleInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuleInfo);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out RuleInfo obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static RuleInfo Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((RuleInfo)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current RuleInfo object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an RuleInfo object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output RuleInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out RuleInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuleInfo);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out RuleInfo obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static RuleInfo LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this RuleInfo object
+        /// </summary>
+        public virtual RuleInfo Clone() {
+            return ((RuleInfo)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class FeatureStyleInfo : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string typeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<RuleInfo> ruleField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
+        public string Type {
+            get {
+                return this.typeField;
+            }
+            set {
+                if ((this.typeField != null)) {
+                    if ((typeField.Equals(value) != true)) {
+                        this.typeField = value;
+                        this.OnPropertyChanged("Type");
+                    }
+                }
+                else {
+                    this.typeField = value;
+                    this.OnPropertyChanged("Type");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("Rule")]
+        public BindingList<RuleInfo> Rule {
+            get {
+                return this.ruleField;
+            }
+            set {
+                if ((this.ruleField != null)) {
+                    if ((ruleField.Equals(value) != true)) {
+                        this.ruleField = value;
+                        this.OnPropertyChanged("Rule");
+                    }
+                }
+                else {
+                    this.ruleField = value;
+                    this.OnPropertyChanged("Rule");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(FeatureStyleInfo));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current FeatureStyleInfo object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an FeatureStyleInfo object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output FeatureStyleInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out FeatureStyleInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(FeatureStyleInfo);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out FeatureStyleInfo obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static FeatureStyleInfo Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((FeatureStyleInfo)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current FeatureStyleInfo object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an FeatureStyleInfo object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output FeatureStyleInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out FeatureStyleInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(FeatureStyleInfo);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out FeatureStyleInfo obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static FeatureStyleInfo LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this FeatureStyleInfo object
+        /// </summary>
+        public virtual FeatureStyleInfo Clone() {
+            return ((FeatureStyleInfo)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class ScaleRangeInfo : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private double minScaleField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private double maxScaleField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<FeatureStyleInfo> featureStyleField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public double MinScale {
+            get {
+                return this.minScaleField;
+            }
+            set {
+                if ((minScaleField.Equals(value) != true)) {
+                    this.minScaleField = value;
+                    this.OnPropertyChanged("MinScale");
+                }
+            }
+        }
+        
+        public double MaxScale {
+            get {
+                return this.maxScaleField;
+            }
+            set {
+                if ((maxScaleField.Equals(value) != true)) {
+                    this.maxScaleField = value;
+                    this.OnPropertyChanged("MaxScale");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("FeatureStyle")]
+        public BindingList<FeatureStyleInfo> FeatureStyle {
+            get {
+                return this.featureStyleField;
+            }
+            set {
+                if ((this.featureStyleField != null)) {
+                    if ((featureStyleField.Equals(value) != true)) {
+                        this.featureStyleField = value;
+                        this.OnPropertyChanged("FeatureStyle");
+                    }
+                }
+                else {
+                    this.featureStyleField = value;
+                    this.OnPropertyChanged("FeatureStyle");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(ScaleRangeInfo));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current ScaleRangeInfo object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an ScaleRangeInfo object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output ScaleRangeInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out ScaleRangeInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(ScaleRangeInfo);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out ScaleRangeInfo obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static ScaleRangeInfo Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((ScaleRangeInfo)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current ScaleRangeInfo object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an ScaleRangeInfo object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output ScaleRangeInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out ScaleRangeInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(ScaleRangeInfo);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out ScaleRangeInfo obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static ScaleRangeInfo LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this ScaleRangeInfo object
+        /// </summary>
+        public virtual ScaleRangeInfo Clone() {
+            return ((ScaleRangeInfo)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class FeatureSourceInfo : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string resourceIdField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string classNameField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string geometryField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public string ResourceId {
+            get {
+                return this.resourceIdField;
+            }
+            set {
+                if ((this.resourceIdField != null)) {
+                    if ((resourceIdField.Equals(value) != true)) {
+                        this.resourceIdField = value;
+                        this.OnPropertyChanged("ResourceId");
+                    }
+                }
+                else {
+                    this.resourceIdField = value;
+                    this.OnPropertyChanged("ResourceId");
+                }
+            }
+        }
+        
+        public string ClassName {
+            get {
+                return this.classNameField;
+            }
+            set {
+                if ((this.classNameField != null)) {
+                    if ((classNameField.Equals(value) != true)) {
+                        this.classNameField = value;
+                        this.OnPropertyChanged("ClassName");
+                    }
+                }
+                else {
+                    this.classNameField = value;
+                    this.OnPropertyChanged("ClassName");
+                }
+            }
+        }
+        
+        public string Geometry {
+            get {
+                return this.geometryField;
+            }
+            set {
+                if ((this.geometryField != null)) {
+                    if ((geometryField.Equals(value) != true)) {
+                        this.geometryField = value;
+                        this.OnPropertyChanged("Geometry");
+                    }
+                }
+                else {
+                    this.geometryField = value;
+                    this.OnPropertyChanged("Geometry");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(FeatureSourceInfo));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current FeatureSourceInfo object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an FeatureSourceInfo object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output FeatureSourceInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out FeatureSourceInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(FeatureSourceInfo);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out FeatureSourceInfo obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static FeatureSourceInfo Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((FeatureSourceInfo)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current FeatureSourceInfo object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an FeatureSourceInfo object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output FeatureSourceInfo object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out FeatureSourceInfo obj, out System.Exception exception) {
+            exception = null;
+            obj = default(FeatureSourceInfo);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out FeatureSourceInfo obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static FeatureSourceInfo LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this FeatureSourceInfo object
+        /// </summary>
+        public virtual FeatureSourceInfo Clone() {
+            return ((FeatureSourceInfo)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class RuntimeMapLayer : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string nameField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string typeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string legendLabelField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string objectIdField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string parentIdField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool displayInLegendField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool expandInLegendField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool visibleField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool actuallyVisibleField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string layerDefinitionField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private FeatureSourceInfo featureSourceField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private BindingList<ScaleRangeInfo> scaleRangeField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        /// <summary>
+        /// The name of the layer
+        /// </summary>
+        public string Name {
+            get {
+                return this.nameField;
+            }
+            set {
+                if ((this.nameField != null)) {
+                    if ((nameField.Equals(value) != true)) {
+                        this.nameField = value;
+                        this.OnPropertyChanged("Name");
+                    }
+                }
+                else {
+                    this.nameField = value;
+                    this.OnPropertyChanged("Name");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The type of this layer. Can be tiled or dynamic. Uses the value of MgLayerType
+        /// </summary>
+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
+        public string Type {
+            get {
+                return this.typeField;
+            }
+            set {
+                if ((this.typeField != null)) {
+                    if ((typeField.Equals(value) != true)) {
+                        this.typeField = value;
+                        this.OnPropertyChanged("Type");
+                    }
+                }
+                else {
+                    this.typeField = value;
+                    this.OnPropertyChanged("Type");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The layer's legend label
+        /// </summary>
+        public string LegendLabel {
+            get {
+                return this.legendLabelField;
+            }
+            set {
+                if ((this.legendLabelField != null)) {
+                    if ((legendLabelField.Equals(value) != true)) {
+                        this.legendLabelField = value;
+                        this.OnPropertyChanged("LegendLabel");
+                    }
+                }
+                else {
+                    this.legendLabelField = value;
+                    this.OnPropertyChanged("LegendLabel");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The layer's unique id. Use this value for turning on/off this layer in a GETDYNAMICMAPOVERLAYIMAGE request
+        /// </summary>
+        public string ObjectId {
+            get {
+                return this.objectIdField;
+            }
+            set {
+                if ((this.objectIdField != null)) {
+                    if ((objectIdField.Equals(value) != true)) {
+                        this.objectIdField = value;
+                        this.OnPropertyChanged("ObjectId");
+                    }
+                }
+                else {
+                    this.objectIdField = value;
+                    this.OnPropertyChanged("ObjectId");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The layer's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy
+        /// </summary>
+        public string ParentId {
+            get {
+                return this.parentIdField;
+            }
+            set {
+                if ((this.parentIdField != null)) {
+                    if ((parentIdField.Equals(value) != true)) {
+                        this.parentIdField = value;
+                        this.OnPropertyChanged("ParentId");
+                    }
+                }
+                else {
+                    this.parentIdField = value;
+                    this.OnPropertyChanged("ParentId");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this layer should be displayed in the legend
+        /// </summary>
+        public bool DisplayInLegend {
+            get {
+                return this.displayInLegendField;
+            }
+            set {
+                if ((displayInLegendField.Equals(value) != true)) {
+                    this.displayInLegendField = value;
+                    this.OnPropertyChanged("DisplayInLegend");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this layer should be initially expanded (if layer is themed) in the legend
+        /// </summary>
+        public bool ExpandInLegend {
+            get {
+                return this.expandInLegendField;
+            }
+            set {
+                if ((expandInLegendField.Equals(value) != true)) {
+                    this.expandInLegendField = value;
+                    this.OnPropertyChanged("ExpandInLegend");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this layer is potentially visible. Note that this may be true even though the layer is not visible. This will occur if the visible flag of one of the groups this layer is organized within is not visible or when the current viewScale property of the map is outside the scale ranges defined for this layer.
+        /// </summary>
+        public bool Visible {
+            get {
+                return this.visibleField;
+            }
+            set {
+                if ((visibleField.Equals(value) != true)) {
+                    this.visibleField = value;
+                    this.OnPropertyChanged("Visible");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates the actual visibility of the layer. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.
+        /// </summary>
+        public bool ActuallyVisible {
+            get {
+                return this.actuallyVisibleField;
+            }
+            set {
+                if ((actuallyVisibleField.Equals(value) != true)) {
+                    this.actuallyVisibleField = value;
+                    this.OnPropertyChanged("ActuallyVisible");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The Layer Definition from which this runtime layer was created from
+        /// </summary>
+        public string LayerDefinition {
+            get {
+                return this.layerDefinitionField;
+            }
+            set {
+                if ((this.layerDefinitionField != null)) {
+                    if ((layerDefinitionField.Equals(value) != true)) {
+                        this.layerDefinitionField = value;
+                        this.OnPropertyChanged("LayerDefinition");
+                    }
+                }
+                else {
+                    this.layerDefinitionField = value;
+                    this.OnPropertyChanged("LayerDefinition");
+                }
+            }
+        }
+        
+        public FeatureSourceInfo FeatureSource {
+            get {
+                return this.featureSourceField;
+            }
+            set {
+                if ((this.featureSourceField != null)) {
+                    if ((featureSourceField.Equals(value) != true)) {
+                        this.featureSourceField = value;
+                        this.OnPropertyChanged("FeatureSource");
+                    }
+                }
+                else {
+                    this.featureSourceField = value;
+                    this.OnPropertyChanged("FeatureSource");
+                }
+            }
+        }
+        
+        [System.Xml.Serialization.XmlElementAttribute("ScaleRange")]
+        public BindingList<ScaleRangeInfo> ScaleRange {
+            get {
+                return this.scaleRangeField;
+            }
+            set {
+                if ((this.scaleRangeField != null)) {
+                    if ((scaleRangeField.Equals(value) != true)) {
+                        this.scaleRangeField = value;
+                        this.OnPropertyChanged("ScaleRange");
+                    }
+                }
+                else {
+                    this.scaleRangeField = value;
+                    this.OnPropertyChanged("ScaleRange");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(RuntimeMapLayer));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current RuntimeMapLayer object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an RuntimeMapLayer object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output RuntimeMapLayer object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out RuntimeMapLayer obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMapLayer);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out RuntimeMapLayer obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static RuntimeMapLayer Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((RuntimeMapLayer)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current RuntimeMapLayer object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an RuntimeMapLayer object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output RuntimeMapLayer object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out RuntimeMapLayer obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMapLayer);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out RuntimeMapLayer obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static RuntimeMapLayer LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this RuntimeMapLayer object
+        /// </summary>
+        public virtual RuntimeMapLayer Clone() {
+            return ((RuntimeMapLayer)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class RuntimeMapGroup : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string nameField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string typeField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string legendLabelField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string objectIdField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string parentIdField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool displayInLegendField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool expandInLegendField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool visibleField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private bool actuallyVisibleField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        /// <summary>
+        /// The name of the group
+        /// </summary>
+        public string Name {
+            get {
+                return this.nameField;
+            }
+            set {
+                if ((this.nameField != null)) {
+                    if ((nameField.Equals(value) != true)) {
+                        this.nameField = value;
+                        this.OnPropertyChanged("Name");
+                    }
+                }
+                else {
+                    this.nameField = value;
+                    this.OnPropertyChanged("Name");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The type of this group. Can be tiled or dynamic. Uses the value of MgLayerGroupType
+        /// </summary>
+        [System.Xml.Serialization.XmlElementAttribute(DataType="integer")]
+        public string Type {
+            get {
+                return this.typeField;
+            }
+            set {
+                if ((this.typeField != null)) {
+                    if ((typeField.Equals(value) != true)) {
+                        this.typeField = value;
+                        this.OnPropertyChanged("Type");
+                    }
+                }
+                else {
+                    this.typeField = value;
+                    this.OnPropertyChanged("Type");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The group's legend label
+        /// </summary>
+        public string LegendLabel {
+            get {
+                return this.legendLabelField;
+            }
+            set {
+                if ((this.legendLabelField != null)) {
+                    if ((legendLabelField.Equals(value) != true)) {
+                        this.legendLabelField = value;
+                        this.OnPropertyChanged("LegendLabel");
+                    }
+                }
+                else {
+                    this.legendLabelField = value;
+                    this.OnPropertyChanged("LegendLabel");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The group's unique id. Use this value for turning on/off this group in a GETDYNAMICMAPOVERLAYIMAGE request
+        /// </summary>
+        public string ObjectId {
+            get {
+                return this.objectIdField;
+            }
+            set {
+                if ((this.objectIdField != null)) {
+                    if ((objectIdField.Equals(value) != true)) {
+                        this.objectIdField = value;
+                        this.OnPropertyChanged("ObjectId");
+                    }
+                }
+                else {
+                    this.objectIdField = value;
+                    this.OnPropertyChanged("ObjectId");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// The group's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy
+        /// </summary>
+        public string ParentId {
+            get {
+                return this.parentIdField;
+            }
+            set {
+                if ((this.parentIdField != null)) {
+                    if ((parentIdField.Equals(value) != true)) {
+                        this.parentIdField = value;
+                        this.OnPropertyChanged("ParentId");
+                    }
+                }
+                else {
+                    this.parentIdField = value;
+                    this.OnPropertyChanged("ParentId");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this group should be displayed in the legend
+        /// </summary>
+        public bool DisplayInLegend {
+            get {
+                return this.displayInLegendField;
+            }
+            set {
+                if ((displayInLegendField.Equals(value) != true)) {
+                    this.displayInLegendField = value;
+                    this.OnPropertyChanged("DisplayInLegend");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this group should be initially expanded in the legend
+        /// </summary>
+        public bool ExpandInLegend {
+            get {
+                return this.expandInLegendField;
+            }
+            set {
+                if ((expandInLegendField.Equals(value) != true)) {
+                    this.expandInLegendField = value;
+                    this.OnPropertyChanged("ExpandInLegend");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates whether this group is potentially visible. Note that this may be true even though the group is not visible. This will occur if one of the groups this group is organized within is not visible.
+        /// </summary>
+        public bool Visible {
+            get {
+                return this.visibleField;
+            }
+            set {
+                if ((visibleField.Equals(value) != true)) {
+                    this.visibleField = value;
+                    this.OnPropertyChanged("Visible");
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Indicates the actual visibility of the group. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.
+        /// </summary>
+        public bool ActuallyVisible {
+            get {
+                return this.actuallyVisibleField;
+            }
+            set {
+                if ((actuallyVisibleField.Equals(value) != true)) {
+                    this.actuallyVisibleField = value;
+                    this.OnPropertyChanged("ActuallyVisible");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(RuntimeMapGroup));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current RuntimeMapGroup object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an RuntimeMapGroup object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output RuntimeMapGroup object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out RuntimeMapGroup obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMapGroup);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out RuntimeMapGroup obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static RuntimeMapGroup Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((RuntimeMapGroup)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current RuntimeMapGroup object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an RuntimeMapGroup object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output RuntimeMapGroup object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out RuntimeMapGroup obj, out System.Exception exception) {
+            exception = null;
+            obj = default(RuntimeMapGroup);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out RuntimeMapGroup obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static RuntimeMapGroup LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this RuntimeMapGroup object
+        /// </summary>
+        public virtual RuntimeMapGroup Clone() {
+            return ((RuntimeMapGroup)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=true)]
+    public partial class Envelope : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private EnvelopeLowerLeftCoordinate lowerLeftCoordinateField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private EnvelopeUpperRightCoordinate upperRightCoordinateField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public EnvelopeLowerLeftCoordinate LowerLeftCoordinate {
+            get {
+                return this.lowerLeftCoordinateField;
+            }
+            set {
+                if ((this.lowerLeftCoordinateField != null)) {
+                    if ((lowerLeftCoordinateField.Equals(value) != true)) {
+                        this.lowerLeftCoordinateField = value;
+                        this.OnPropertyChanged("LowerLeftCoordinate");
+                    }
+                }
+                else {
+                    this.lowerLeftCoordinateField = value;
+                    this.OnPropertyChanged("LowerLeftCoordinate");
+                }
+            }
+        }
+        
+        public EnvelopeUpperRightCoordinate UpperRightCoordinate {
+            get {
+                return this.upperRightCoordinateField;
+            }
+            set {
+                if ((this.upperRightCoordinateField != null)) {
+                    if ((upperRightCoordinateField.Equals(value) != true)) {
+                        this.upperRightCoordinateField = value;
+                        this.OnPropertyChanged("UpperRightCoordinate");
+                    }
+                }
+                else {
+                    this.upperRightCoordinateField = value;
+                    this.OnPropertyChanged("UpperRightCoordinate");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(Envelope));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current Envelope object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an Envelope object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output Envelope object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out Envelope obj, out System.Exception exception) {
+            exception = null;
+            obj = default(Envelope);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out Envelope obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static Envelope Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((Envelope)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current Envelope object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an Envelope object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output Envelope object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out Envelope obj, out System.Exception exception) {
+            exception = null;
+            obj = default(Envelope);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out Envelope obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static Envelope LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this Envelope object
+        /// </summary>
+        public virtual Envelope Clone() {
+            return ((Envelope)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+    public partial class EnvelopeLowerLeftCoordinate : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string xField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string yField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public string X {
+            get {
+                return this.xField;
+            }
+            set {
+                if ((this.xField != null)) {
+                    if ((xField.Equals(value) != true)) {
+                        this.xField = value;
+                        this.OnPropertyChanged("X");
+                    }
+                }
+                else {
+                    this.xField = value;
+                    this.OnPropertyChanged("X");
+                }
+            }
+        }
+        
+        public string Y {
+            get {
+                return this.yField;
+            }
+            set {
+                if ((this.yField != null)) {
+                    if ((yField.Equals(value) != true)) {
+                        this.yField = value;
+                        this.OnPropertyChanged("Y");
+                    }
+                }
+                else {
+                    this.yField = value;
+                    this.OnPropertyChanged("Y");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(EnvelopeLowerLeftCoordinate));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current EnvelopeLowerLeftCoordinate object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an EnvelopeLowerLeftCoordinate object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output EnvelopeLowerLeftCoordinate object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out EnvelopeLowerLeftCoordinate obj, out System.Exception exception) {
+            exception = null;
+            obj = default(EnvelopeLowerLeftCoordinate);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out EnvelopeLowerLeftCoordinate obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static EnvelopeLowerLeftCoordinate Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((EnvelopeLowerLeftCoordinate)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current EnvelopeLowerLeftCoordinate object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an EnvelopeLowerLeftCoordinate object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output EnvelopeLowerLeftCoordinate object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out EnvelopeLowerLeftCoordinate obj, out System.Exception exception) {
+            exception = null;
+            obj = default(EnvelopeLowerLeftCoordinate);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out EnvelopeLowerLeftCoordinate obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static EnvelopeLowerLeftCoordinate LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this EnvelopeLowerLeftCoordinate object
+        /// </summary>
+        public virtual EnvelopeLowerLeftCoordinate Clone() {
+            return ((EnvelopeLowerLeftCoordinate)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("Xsd2Code", "3.3.0.2272")]
+    [System.SerializableAttribute()]
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.ComponentModel.DesignerCategoryAttribute("code")]
+    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
+    public partial class EnvelopeUpperRightCoordinate : System.ComponentModel.INotifyPropertyChanged {
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string xField;
+        
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        private string yField;
+        
+        private static System.Xml.Serialization.XmlSerializer serializer;
+        
+        public string X {
+            get {
+                return this.xField;
+            }
+            set {
+                if ((this.xField != null)) {
+                    if ((xField.Equals(value) != true)) {
+                        this.xField = value;
+                        this.OnPropertyChanged("X");
+                    }
+                }
+                else {
+                    this.xField = value;
+                    this.OnPropertyChanged("X");
+                }
+            }
+        }
+        
+        public string Y {
+            get {
+                return this.yField;
+            }
+            set {
+                if ((this.yField != null)) {
+                    if ((yField.Equals(value) != true)) {
+                        this.yField = value;
+                        this.OnPropertyChanged("Y");
+                    }
+                }
+                else {
+                    this.yField = value;
+                    this.OnPropertyChanged("Y");
+                }
+            }
+        }
+        
+        private static System.Xml.Serialization.XmlSerializer Serializer {
+            get {
+                if ((serializer == null)) {
+                    serializer = new System.Xml.Serialization.XmlSerializer(typeof(EnvelopeUpperRightCoordinate));
+                }
+                return serializer;
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        public virtual void OnPropertyChanged(string info) {
+            System.ComponentModel.PropertyChangedEventHandler handler = this.PropertyChanged;
+            if ((handler != null)) {
+                handler(this, new System.ComponentModel.PropertyChangedEventArgs(info));
+            }
+        }
+        
+        #region Serialize/Deserialize
+        /// <summary>
+        /// Serializes current EnvelopeUpperRightCoordinate object into an XML document
+        /// </summary>
+        /// <returns>string XML value</returns>
+        public virtual string Serialize() {
+            System.IO.StreamReader streamReader = null;
+            System.IO.MemoryStream memoryStream = null;
+            try {
+                memoryStream = new System.IO.MemoryStream();
+                Serializer.Serialize(memoryStream, this);
+                memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
+                streamReader = new System.IO.StreamReader(memoryStream);
+                return streamReader.ReadToEnd();
+            }
+            finally {
+                if ((streamReader != null)) {
+                    streamReader.Dispose();
+                }
+                if ((memoryStream != null)) {
+                    memoryStream.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes workflow markup into an EnvelopeUpperRightCoordinate object
+        /// </summary>
+        /// <param name="xml">string workflow markup to deserialize</param>
+        /// <param name="obj">Output EnvelopeUpperRightCoordinate object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool Deserialize(string xml, out EnvelopeUpperRightCoordinate obj, out System.Exception exception) {
+            exception = null;
+            obj = default(EnvelopeUpperRightCoordinate);
+            try {
+                obj = Deserialize(xml);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool Deserialize(string xml, out EnvelopeUpperRightCoordinate obj) {
+            System.Exception exception = null;
+            return Deserialize(xml, out obj, out exception);
+        }
+        
+        public static EnvelopeUpperRightCoordinate Deserialize(string xml) {
+            System.IO.StringReader stringReader = null;
+            try {
+                stringReader = new System.IO.StringReader(xml);
+                return ((EnvelopeUpperRightCoordinate)(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
+            }
+            finally {
+                if ((stringReader != null)) {
+                    stringReader.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Serializes current EnvelopeUpperRightCoordinate object into file
+        /// </summary>
+        /// <param name="fileName">full path of outupt xml file</param>
+        /// <param name="exception">output Exception value if failed</param>
+        /// <returns>true if can serialize and save into file; otherwise, false</returns>
+        public virtual bool SaveToFile(string fileName, out System.Exception exception) {
+            exception = null;
+            try {
+                SaveToFile(fileName);
+                return true;
+            }
+            catch (System.Exception e) {
+                exception = e;
+                return false;
+            }
+        }
+        
+        public virtual void SaveToFile(string fileName) {
+            System.IO.StreamWriter streamWriter = null;
+            try {
+                string xmlString = Serialize();
+                System.IO.FileInfo xmlFile = new System.IO.FileInfo(fileName);
+                streamWriter = xmlFile.CreateText();
+                streamWriter.WriteLine(xmlString);
+                streamWriter.Close();
+            }
+            finally {
+                if ((streamWriter != null)) {
+                    streamWriter.Dispose();
+                }
+            }
+        }
+        
+        /// <summary>
+        /// Deserializes xml markup from file into an EnvelopeUpperRightCoordinate object
+        /// </summary>
+        /// <param name="fileName">string xml file to load and deserialize</param>
+        /// <param name="obj">Output EnvelopeUpperRightCoordinate object</param>
+        /// <param name="exception">output Exception value if deserialize failed</param>
+        /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns>
+        public static bool LoadFromFile(string fileName, out EnvelopeUpperRightCoordinate obj, out System.Exception exception) {
+            exception = null;
+            obj = default(EnvelopeUpperRightCoordinate);
+            try {
+                obj = LoadFromFile(fileName);
+                return true;
+            }
+            catch (System.Exception ex) {
+                exception = ex;
+                return false;
+            }
+        }
+        
+        public static bool LoadFromFile(string fileName, out EnvelopeUpperRightCoordinate obj) {
+            System.Exception exception = null;
+            return LoadFromFile(fileName, out obj, out exception);
+        }
+        
+        public static EnvelopeUpperRightCoordinate LoadFromFile(string fileName) {
+            System.IO.FileStream file = null;
+            System.IO.StreamReader sr = null;
+            try {
+                file = new System.IO.FileStream(fileName, FileMode.Open, FileAccess.Read);
+                sr = new System.IO.StreamReader(file);
+                string xmlString = sr.ReadToEnd();
+                sr.Close();
+                file.Close();
+                return Deserialize(xmlString);
+            }
+            finally {
+                if ((file != null)) {
+                    file.Dispose();
+                }
+                if ((sr != null)) {
+                    sr.Dispose();
+                }
+            }
+        }
+        #endregion
+        
+        #region Clone method
+        /// <summary>
+        /// Create a clone of this EnvelopeUpperRightCoordinate object
+        /// </summary>
+        public virtual EnvelopeUpperRightCoordinate Clone() {
+            return ((EnvelopeUpperRightCoordinate)(this.MemberwiseClone()));
+        }
+        #endregion
+    }
+}

Modified: trunk/Tools/Maestro/Maestro/Maestro.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro/Maestro.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Maestro/Maestro.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -414,7 +414,7 @@
     </Content>
     <Content Include="..\OSGeo.MapGuide.MaestroAPI\ConnectionProviders.xml">
       <Link>ConnectionProviders.xml</Link>
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="changelog.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>

Modified: trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -40,6 +40,8 @@
     using OSGeo.MapGuide.ExtendedObjectModels;
     using OSGeo.MapGuide.ObjectModels.LayerDefinition;
     using OSGeo.MapGuide.ObjectModels.DrawingSource;
+    using OSGeo.MapGuide.MaestroAPI.Commands;
+    using MapModel = OSGeo.MapGuide.ObjectModels.RuntimeMap;
 
     [SetUpFixture]
     public class TestBootstrap
@@ -1280,6 +1282,288 @@
         {
             base.TestMapAddDwfLayer();
         }
+
+        [Test]
+        public void TestCreateRuntimeMapRequest()
+        {
+            if (_conn.SiteVersion < new Version(2, 6))
+            {
+                Assert.Ignore("Skipping test (TestCreateRuntimeMapRequest). MapGuide is older than 2.6");
+                return;
+            }
+
+            int[] cmds = _conn.Capabilities.SupportedCommands;
+            Assert.True(Array.IndexOf(cmds, (int)CommandType.CreateRuntimeMap) >= 0);
+
+            //Barebones
+            ICreateRuntimeMap create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+
+            MapModel.IRuntimeMapInfo rtInfo = create.Execute();
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count == 0);
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+            
+            //Barebones with tiled
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/SheboyganTiled.MapDefinition";
+
+            rtInfo = create.Execute();
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count == 0);
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count > 0);
+            Assert.NotNull(rtInfo.FiniteDisplayScales);
+            Assert.True(rtInfo.FiniteDisplayScales.Length > 0);
+
+            //With Layer/Group structure
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+            create.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups);
+
+            rtInfo = create.Execute();
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.Null(layer.FeatureSource);
+                Assert.True(layer.ScaleRanges.Count > 0);
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+
+            //With Layer/Group structure and inline icons
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+            create.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups | RuntimeMapRequestedFeatures.Icons);
+
+            rtInfo = create.Execute();
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNotNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.Null(layer.FeatureSource);
+                Assert.True(layer.ScaleRanges.Count > 0);
+                foreach (var sr in layer.ScaleRanges)
+                {
+                    Assert.NotNull(sr.FeatureStyle);
+                    Assert.True(sr.FeatureStyle.Count > 0);
+                    foreach (var feat in sr.FeatureStyle)
+                    {
+                        Assert.NotNull(feat.Rules);
+                        Assert.True(feat.Rules.Count > 0);
+
+                        foreach (var rule in feat.Rules)
+                        {
+                            Assert.IsNotNullOrEmpty(rule.IconBase64);
+                        }
+                    }
+                }
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+
+            //Kitchen sink
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+            create.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups | RuntimeMapRequestedFeatures.Icons | RuntimeMapRequestedFeatures.FeatureSourceInformation);
+
+            rtInfo = create.Execute();
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNotNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.NotNull(layer.FeatureSource);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.ClassName);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.Geometry);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.ResourceID);
+                Assert.True(layer.ScaleRanges.Count > 0);
+                foreach (var sr in layer.ScaleRanges)
+                {
+                    Assert.NotNull(sr.FeatureStyle);
+                    Assert.True(sr.FeatureStyle.Count > 0);
+                    foreach (var feat in sr.FeatureStyle)
+                    {
+                        Assert.NotNull(feat.Rules);
+                        Assert.True(feat.Rules.Count > 0);
+
+                        foreach (var rule in feat.Rules)
+                        {
+                            Assert.IsNotNullOrEmpty(rule.IconBase64);
+                        }
+                    }
+                }
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+        }
+
+        [Test]
+        public void TestDescribeRuntimeMapRequest()
+        {
+            if (_conn.SiteVersion < new Version(2, 6))
+            {
+                Assert.Ignore("Skipping test (TestCreateRuntimeMapRequest). MapGuide is older than 2.6");
+                return;
+            }
+
+            int[] cmds = _conn.Capabilities.SupportedCommands;
+            Assert.True(Array.IndexOf(cmds, (int)CommandType.CreateRuntimeMap) >= 0);
+
+            //Barebones
+            ICreateRuntimeMap create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+
+            MapModel.IRuntimeMapInfo map = create.Execute();
+            IDescribeRuntimeMap describe = (IDescribeRuntimeMap)_conn.CreateCommand((int)CommandType.DescribeRuntimeMap);
+            describe.Name = map.Name;
+            MapModel.IRuntimeMapInfo rtInfo = describe.Execute();
+
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count == 0);
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+
+            //Barebones with tiled
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/SheboyganTiled.MapDefinition";
+
+            map = create.Execute();
+            describe = (IDescribeRuntimeMap)_conn.CreateCommand((int)CommandType.DescribeRuntimeMap);
+            describe.Name = map.Name;
+            rtInfo = describe.Execute();
+
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count == 0);
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count > 0);
+            Assert.NotNull(rtInfo.FiniteDisplayScales);
+            Assert.True(rtInfo.FiniteDisplayScales.Length > 0);
+
+            //With Layer/Group structure
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+
+            map = create.Execute();
+            describe = (IDescribeRuntimeMap)_conn.CreateCommand((int)CommandType.DescribeRuntimeMap);
+            describe.Name = map.Name;
+            describe.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups);
+            rtInfo = describe.Execute();
+
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.Null(layer.FeatureSource);
+                Assert.True(layer.ScaleRanges.Count > 0);
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+
+            //With Layer/Group structure and inline icons
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+
+            map = create.Execute();
+            describe = (IDescribeRuntimeMap)_conn.CreateCommand((int)CommandType.DescribeRuntimeMap);
+            describe.Name = map.Name;
+            describe.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups | RuntimeMapRequestedFeatures.Icons);
+            rtInfo = describe.Execute();
+
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNotNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.Null(layer.FeatureSource);
+                Assert.True(layer.ScaleRanges.Count > 0);
+                foreach (var sr in layer.ScaleRanges)
+                {
+                    Assert.NotNull(sr.FeatureStyle);
+                    Assert.True(sr.FeatureStyle.Count > 0);
+                    foreach (var feat in sr.FeatureStyle)
+                    {
+                        Assert.NotNull(feat.Rules);
+                        Assert.True(feat.Rules.Count > 0);
+
+                        foreach (var rule in feat.Rules)
+                        {
+                            Assert.IsNotNullOrEmpty(rule.IconBase64);
+                        }
+                    }
+                }
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+
+            //Kitchen sink
+            create = (ICreateRuntimeMap)_conn.CreateCommand((int)CommandType.CreateRuntimeMap);
+            create.MapDefinition = "Library://UnitTests/Maps/Sheboygan.MapDefinition";
+            
+            map = create.Execute();
+            describe = (IDescribeRuntimeMap)_conn.CreateCommand((int)CommandType.DescribeRuntimeMap);
+            describe.Name = map.Name;
+            describe.RequestedFeatures = (int)(RuntimeMapRequestedFeatures.LayersAndGroups | RuntimeMapRequestedFeatures.Icons | RuntimeMapRequestedFeatures.FeatureSourceInformation);
+            rtInfo = describe.Execute();
+
+            Assert.NotNull(rtInfo.CoordinateSystem);
+            Assert.IsNotNullOrEmpty(rtInfo.IconMimeType);
+            Assert.NotNull(rtInfo.Extents);
+            Assert.NotNull(rtInfo.Layers);
+            Assert.True(rtInfo.Layers.Count > 0);
+            foreach (var layer in rtInfo.Layers)
+            {
+                Assert.NotNull(layer.FeatureSource);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.ClassName);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.Geometry);
+                Assert.IsNotNullOrEmpty(layer.FeatureSource.ResourceID);
+                Assert.True(layer.ScaleRanges.Count > 0);
+                foreach (var sr in layer.ScaleRanges)
+                {
+                    Assert.NotNull(sr.FeatureStyle);
+                    Assert.True(sr.FeatureStyle.Count > 0);
+                    foreach (var feat in sr.FeatureStyle)
+                    {
+                        Assert.NotNull(feat.Rules);
+                        Assert.True(feat.Rules.Count > 0);
+
+                        foreach (var rule in feat.Rules)
+                        {
+                            Assert.IsNotNullOrEmpty(rule.IconBase64);
+                        }
+                    }
+                }
+            }
+            Assert.NotNull(rtInfo.Groups);
+            Assert.True(rtInfo.Groups.Count == 0);
+        }
     }
 
     [TestFixture(Ignore = TestControl.IgnoreLocalNativeRuntimeMapTests)]

Modified: trunk/Tools/Maestro/MaestroAPITests/TestControl.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/TestControl.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/MaestroAPITests/TestControl.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -51,7 +51,7 @@
 
     public class ConnectionUtil
     {
-        public static string Port { get { return ""; } }
+        public static string Port { get { return "8018"; } }
 
         public static IServerConnection CreateTestLocalNativeConnection()
         {

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CommandType.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CommandType.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CommandType.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -55,6 +55,14 @@
         /// <summary>
         /// Retrieves information about cached FDO connections
         /// </summary>
-        GetFdoCacheInfo
+        GetFdoCacheInfo,
+        /// <summary>
+        /// Creates a new Runtime Map and describe its structure
+        /// </summary>
+        CreateRuntimeMap,
+        /// <summary>
+        /// Describes the structure of an existing runtime map
+        /// </summary>
+        DescribeRuntimeMap
     }
 }

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CreateRuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CreateRuntimeMap.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/CreateRuntimeMap.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,103 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.ObjectModels.RuntimeMap;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.MaestroAPI.Commands
+{
+    /// <summary>
+    /// Create a runtime map from the 
+    /// </summary>
+    public interface ICreateRuntimeMap : ICommand
+    {
+        /// <summary>
+        /// The resource id of the Map Definition to create a Runtime Map from
+        /// </summary>
+        string MapDefinition { get; set; }
+
+        /// <summary>
+        /// The name to assign to the created runtime map. If null, then MapGuide will
+        /// auto-generate one based on the Map Definition ID
+        /// </summary>
+        string TargetMapName { get; set; }
+
+        /// <summary>
+        /// A bitmask specifying what pieces of information to include in the CREATERUNTIMEMAP response.
+        /// Use the <see cref="E:OSGeo.MapGuide.MaestroAPI.Commands.RuntimeMapRequest"/> to determine what
+        /// valid values you can use.
+        /// </summary>
+        int RequestedFeatures { get; set; }
+
+        /// <summary>
+        /// The number of icons to render inline (as base64 images) per scale range in each layer of the map
+        /// </summary>
+        int IconsPerScaleRange { get; set; }
+
+        /// <summary>
+        /// The icon image format (default: PNG)
+        /// </summary>
+        string IconFormat { get; set; }
+
+        /// <summary>
+        /// The width of each inline icon that will be rendered (default: 16)
+        /// </summary>
+        int IconWidth { get; set; }
+
+        /// <summary>
+        /// The height of each inline icon that will be rendered (default: 16)
+        /// </summary>
+        int IconHeight { get; set; }
+
+        /// <summary>
+        /// Executes the request and returns the structure of the created runtime map
+        /// </summary>
+        /// <returns>The structure of the runtime map</returns>
+        IRuntimeMapInfo Execute();
+    }
+
+    /// <summary>
+    /// A bitmask that defines what information to include in a CreateRuntimeMap or DescribeRuntimeMap
+    /// response.
+    /// </summary>
+    public enum RuntimeMapRequestedFeatures : int
+    {
+        /// <summary>
+        /// No features
+        /// </summary>
+        None = 0,
+        /// <summary>
+        /// Include layer and group structure
+        /// </summary>
+        LayersAndGroups = 1,
+        /// <summary>
+        /// Include inline icons for each layer. Does nothing if <see cref="E:OSGeo.MapGuide.MaestroAPI.Commands.RuntimeMapRequest.LayersAndGroups"/>
+        /// is not included in the mask
+        /// </summary>
+        Icons = 2,
+        /// <summary>
+        /// Include feature source information for each layer. Does nothing if <see cref="E:OSGeo.MapGuide.MaestroAPI.Commands.RuntimeMapRequest.LayersAndGroups"/>
+        /// is not included in the mask
+        /// </summary>
+        FeatureSourceInformation = 4
+    }
+}

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/DescribeRuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/DescribeRuntimeMap.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Commands/DescribeRuntimeMap.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,69 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.ObjectModels.RuntimeMap;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.MaestroAPI.Commands
+{
+    /// <summary>
+    /// Describes the structure of an existing runtime map
+    /// </summary>
+    public interface IDescribeRuntimeMap : ICommand
+    {
+        /// <summary>
+        /// The name of the runtime map to describe the structure of
+        /// </summary>
+        string Name { get; set; }
+
+        /// <summary>
+        /// A bitmask specifying what pieces of information to include in the CREATERUNTIMEMAP response
+        /// </summary>
+        int RequestedFeatures { get; set; }
+
+        /// <summary>
+        /// The number of icons to render inline (as base64 images) per scale range in each layer of the map
+        /// </summary>
+        int IconsPerScaleRange { get; set; }
+
+        /// <summary>
+        /// The icon image format (default: PNG)
+        /// </summary>
+        string IconFormat { get; set; }
+
+        /// <summary>
+        /// The width of each inline icon that will be rendered (default: 16)
+        /// </summary>
+        int IconWidth { get; set; }
+
+        /// <summary>
+        /// The height of each inline icon that will be rendered (default: 16)
+        /// </summary>
+        int IconHeight { get; set; }
+
+        /// <summary>
+        /// Executes the request and returns the structure of the runtime map
+        /// </summary>
+        /// <returns>The structure of the runtime map</returns>
+        IRuntimeMapInfo Execute();
+    }
+}

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -148,6 +148,9 @@
     <Compile Include="..\Generated\Role-1.0.0.designer.cs">
       <Link>ObjectModels\Role-1.0.0.designer.cs</Link>
     </Compile>
+    <Compile Include="..\Generated\RuntimeMap-2.6.0.cs">
+      <Link>ObjectModels\RuntimeMap-2.6.0.cs</Link>
+    </Compile>
     <Compile Include="..\Generated\SelectAggregate-1.0.0.designer.cs">
       <Link>ObjectModels\SelectAggregate-1.0.0.designer.cs</Link>
     </Compile>
@@ -196,6 +199,8 @@
     <Compile Include="ArgumentParser.cs" />
     <Compile Include="BindingListExtensions.cs" />
     <Compile Include="Capability\NsDoc.cs" />
+    <Compile Include="Commands\CreateRuntimeMap.cs" />
+    <Compile Include="Commands\DescribeRuntimeMap.cs" />
     <Compile Include="Commands\FeatureManipulationCommandImpl.cs" />
     <Compile Include="Commands\FeatureManipulationCommands.cs" />
     <Compile Include="Commands\IGetFdoCacheInfo.cs" />
@@ -253,6 +258,8 @@
     <Compile Include="ObjectModels\IFdoSpatialContext.cs" />
     <Compile Include="ObjectModels\LongTransaction.cs" />
     <Compile Include="ObjectModels\NsDoc.cs" />
+    <Compile Include="ObjectModels\RuntimeMapImpl.cs" />
+    <Compile Include="ObjectModels\RuntimeMapInterfaces.cs" />
     <Compile Include="ObjectModels\SymbolDefFactory.cs" />
     <Compile Include="ObjectModels\WatermarkCollectionUtil.cs" />
     <Compile Include="ObjectModels\WatermarkInterfaces.cs" />
@@ -518,7 +525,7 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="ConnectionProviders.xml">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
     <Content Include="ObjectModels\readme.txt" />
     <None Include="Resources\BaseTemplate.ApplicationDefinition1.xml" />

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapImpl.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapImpl.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,353 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.ObjectModels.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.ObjectModels.RuntimeMap
+{
+    partial class RuntimeMap : IRuntimeMapInfo
+    {
+        string IRuntimeMapInfo.SiteVersion
+        {
+            get { return this.SiteVersion; }
+        }
+
+        string IRuntimeMapInfo.Name
+        {
+            get { return this.Name; }
+        }
+
+        string IRuntimeMapInfo.MapDefinition
+        {
+            get { return this.MapDefinition; }
+        }
+
+        string IRuntimeMapInfo.BackgroundColor
+        {
+            get { return this.BackgroundColor; }
+        }
+
+        int IRuntimeMapInfo.DisplayDpi
+        {
+            get 
+            {
+                int dpi;
+                if (int.TryParse(this.DisplayDpi, out dpi))
+                    return dpi;
+                return 96;
+            }
+        }
+
+        string IRuntimeMapInfo.IconMimeType
+        {
+            get { return this.IconMimeType; }
+        }
+
+        ICoordinateSystemInfo IRuntimeMapInfo.CoordinateSystem
+        {
+            get { return this.CoordinateSystem; }
+        }
+
+        IEnvelope IRuntimeMapInfo.Extents
+        {
+            get 
+            {
+                double minx;
+                double miny;
+                double maxx;
+                double maxy;
+                if (double.TryParse(this.Extents.LowerLeftCoordinate.X, out minx) &&
+                    double.TryParse(this.Extents.LowerLeftCoordinate.Y, out miny) &&
+                    double.TryParse(this.Extents.UpperRightCoordinate.X, out maxx) &&
+                    double.TryParse(this.Extents.UpperRightCoordinate.Y, out maxy))
+                {
+                    return ObjectFactory.CreateEnvelope(minx, miny, maxx, maxy);
+                }
+                return null;
+            }
+        }
+
+        ReadOnlyLayerCollection _roLayers;
+
+        IRuntimeLayerInfoCollection IRuntimeMapInfo.Layers
+        {
+            get
+            {
+                if (this.Layer == null)
+                    return null;
+
+                if (_roLayers == null)
+                    _roLayers = new ReadOnlyLayerCollection(this.Layer);
+
+                return _roLayers;
+            }
+        }
+
+        ReadOnlyGroupCollection _roGroups;
+
+        IRuntimeLayerGroupInfoCollection IRuntimeMapInfo.Groups
+        {
+            get 
+            {
+                if (this.Group == null)
+                    return null;
+
+                if (_roGroups == null)
+                    _roGroups = new ReadOnlyGroupCollection(this.Group);
+
+                return _roGroups;
+            }
+        }
+
+        double[] IRuntimeMapInfo.FiniteDisplayScales
+        {
+            get
+            {
+                return this.FiniteDisplayScale.ToArray();
+            }
+        }
+    }
+
+    //I love C# generics!
+    internal abstract class ReadOnlyCollectionWrapper<TInterface, TImpl> 
+        : IReadOnlyCollection<TInterface>
+        where TImpl : TInterface
+    {
+        private IList<TImpl> _list;
+
+        protected ReadOnlyCollectionWrapper(IList<TImpl> list)
+        {
+            _list = list;
+        }
+
+        public int Count
+        {
+            get { return _list.Count; }
+        }
+
+        public TInterface this[int index]
+        {
+            get { return _list[index]; }
+        }
+
+        class Enumerator : IEnumerator<TInterface>
+        {
+            private IList<TImpl> _innerList;
+            private int _pos;
+
+            public Enumerator(IList<TImpl> list)
+            {
+                _pos = -1;
+                _innerList = list;
+            }
+
+            public TInterface Current
+            {
+                get { return _innerList[_pos]; }
+            }
+
+            public void Dispose()
+            {
+                
+            }
+
+            object System.Collections.IEnumerator.Current
+            {
+                get { return _innerList[_pos]; }
+            }
+
+            public bool MoveNext()
+            {
+                _pos++;
+                return _pos <= _innerList.Count - 1;
+            }
+
+            public void Reset()
+            {
+                _pos = -1;
+            }
+        }
+
+        public IEnumerator<TInterface> GetEnumerator()
+        {
+            return new Enumerator(_list);
+        }
+
+        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
+        {
+            return _list.GetEnumerator();
+        }
+    }
+
+    partial class RuntimeMapLayer : IRuntimeLayerInfo
+    {
+
+        int IRuntimeLayerInfo.LayerType
+        {
+            get { return Convert.ToInt32(this.Type); }
+        }
+
+        IFeatureSourceInfo IRuntimeLayerInfo.FeatureSource
+        {
+            get { return this.FeatureSource; }
+        }
+
+        ScaleRangeCollection _roScales;
+
+        IScaleRangeInfoCollection IRuntimeLayerInfo.ScaleRanges
+        {
+            get
+            {
+                if (this.ScaleRange == null)
+                    return null;
+
+                if (_roScales == null)
+                    _roScales = new ScaleRangeCollection(this.ScaleRange);
+
+                return _roScales;
+            }
+        }
+
+        string IRuntimeMapLegendElement.ObjectID
+        {
+            get { return this.ObjectId; }
+        }
+
+        string IRuntimeMapLegendElement.ParentID
+        {
+            get { return this.ParentId; }
+        }
+    }
+
+    partial class FeatureSourceInfo : IFeatureSourceInfo
+    {
+        string IFeatureSourceInfo.ResourceID
+        {
+            get { return this.ResourceId; }
+        }
+    }
+
+    partial class RuntimeMapGroup : IRuntimeLayerGroupInfo
+    {
+        int IRuntimeLayerGroupInfo.GroupType
+        {
+            get { return Convert.ToInt32(this.Type); }
+        }
+
+        string IRuntimeMapLegendElement.ObjectID
+        {
+            get { return this.ObjectId; }
+        }
+
+        string IRuntimeMapLegendElement.ParentID
+        {
+            get { return this.ParentId; }
+        }
+    }
+
+    internal class ReadOnlyLayerCollection : ReadOnlyCollectionWrapper<IRuntimeLayerInfo, RuntimeMapLayer>,
+                                             IRuntimeLayerInfoCollection
+    {
+        public ReadOnlyLayerCollection(IList<RuntimeMapLayer> list) : base(list) { }
+    }
+
+    internal class ReadOnlyGroupCollection : ReadOnlyCollectionWrapper<IRuntimeLayerGroupInfo, RuntimeMapGroup>,
+                                             IRuntimeLayerGroupInfoCollection
+    {
+        public ReadOnlyGroupCollection(IList<RuntimeMapGroup> list) : base(list) { }
+    }
+
+    internal class ScaleRangeCollection : ReadOnlyCollectionWrapper<IScaleRangeInfo, ScaleRangeInfo>,
+                                          IScaleRangeInfoCollection
+    {
+        public ScaleRangeCollection(IList<ScaleRangeInfo> list) : base(list) { }
+    }
+
+    internal class FeatureStyleCollection : ReadOnlyCollectionWrapper<IFeatureStyleInfo, FeatureStyleInfo>,
+                                            IFeatureStyleInfoCollection
+    {
+        public FeatureStyleCollection(IList<FeatureStyleInfo> list) : base(list) { }
+    }
+
+    internal class RuleInfoCollection : ReadOnlyCollectionWrapper<IRuleInfo, RuleInfo>,
+                                        IRuleInfoCollection
+    {
+        public RuleInfoCollection(IList<RuleInfo> list) : base(list) { }
+    }
+
+    partial class ScaleRangeInfo : IScaleRangeInfo
+    {
+        FeatureStyleCollection _roStyles;
+
+        IFeatureStyleInfoCollection IScaleRangeInfo.FeatureStyle
+        {
+            get 
+            {
+                if (this.FeatureStyle == null)
+                    return null;
+
+                if (_roStyles == null)
+                    _roStyles = new FeatureStyleCollection(this.FeatureStyle);
+
+                return _roStyles;
+            }
+        }
+    }
+
+    partial class FeatureStyleInfo : IFeatureStyleInfo
+    {
+        int IFeatureStyleInfo.Type
+        {
+            get { return Convert.ToInt32(this.Type); }
+        }
+
+        RuleInfoCollection _roRules;
+
+        public IRuleInfoCollection Rules
+        {
+            get 
+            {
+                if (this.Rule == null)
+                    return null;
+
+                if (_roRules == null)
+                    _roRules = new RuleInfoCollection(this.Rule);
+
+                return _roRules;
+            }
+        }
+    }
+
+    partial class RuleInfo : IRuleInfo
+    {
+        string IRuleInfo.IconBase64
+        {
+            get { return this.Icon; }
+        }
+    }
+
+    partial class CoordinateSystemType : ICoordinateSystemInfo
+    {
+
+    }
+}

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapInterfaces.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/RuntimeMapInterfaces.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,233 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.ObjectModels.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.ObjectModels.RuntimeMap
+{
+    /// <summary>
+    /// Describes the structure of a Runtime Map
+    /// </summary>
+    public interface IRuntimeMapInfo
+    {
+        /// <summary>
+        /// Gets the site version of the MapGuide Server
+        /// </summary>
+        string SiteVersion { get; }
+
+        /// <summary>
+        /// Gets the name of the runtime map. This combined with the session ID provides the
+        /// means for any code using the MapGuide API to open an existing MgMap instance
+        /// </summary>
+        string Name { get; }
+
+        /// <summary>
+        /// Gets the Map Definition resource ID used to create this runtime map
+        /// </summary>
+        string MapDefinition { get; }
+
+        /// <summary>
+        /// Gets the background color
+        /// </summary>
+        string BackgroundColor { get; }
+
+        /// <summary>
+        /// Gets the display DPI of the map
+        /// </summary>
+        int DisplayDpi { get; }
+
+        /// <summary>
+        /// Gets the mime type of any inline icons.
+        /// </summary>
+        /// <remarks>
+        /// If the application did not request any icons as part of the CreateRuntimeMap 
+        /// or DescribeRuntimeMap request, this property is null
+        /// </remarks>
+        string IconMimeType { get; }
+
+        /// <summary>
+        /// Gets the coordinate system of this map
+        /// </summary>
+        ICoordinateSystemInfo CoordinateSystem { get; }
+
+        /// <summary>
+        /// Gets the bounding box of this map
+        /// </summary>
+        IEnvelope Extents { get; }
+
+        /// <summary>
+        /// Gets the layers of this map.
+        /// </summary>
+        /// <remarks>
+        /// If the application did not request layer structure as part of the CreateRuntimeMap
+        /// or DescribeRuntimeMap request, this property will be an empty collection
+        /// </remarks>
+        IRuntimeLayerInfoCollection Layers { get; }
+
+        /// <summary>
+        /// Gets the groups of this map.
+        /// </summary>
+        /// <remarks>
+        /// Even if the application did not request layer structure as part of the CreateRuntimeMap
+        /// or DescribeRuntimeMap request, this property will still contain any Base Layer Groups
+        /// if defined in the Map Definition
+        /// </remarks>
+        IRuntimeLayerGroupInfoCollection Groups { get; }
+
+        /// <summary>
+        /// Gets the finite display scales defined for this runtime map
+        /// </summary>
+        double[] FiniteDisplayScales { get; }
+    }
+
+    /// <summary>
+    /// Represents coordinate system information for a Runtime Map
+    /// </summary>
+    public interface ICoordinateSystemInfo
+    {
+        /// <summary>
+        /// Gets the WKT of this coordinate system
+        /// </summary>
+        string Wkt { get; }
+
+        /// <summary>
+        /// Gets the CS-Map coordinate system code of this coordinate system
+        /// </summary>
+        string MentorCode { get; }
+
+        /// <summary>
+        /// Gets the EPSG code of this coordinate system
+        /// </summary>
+        string EpsgCode { get; }
+
+        /// <summary>
+        /// Gets the meters-per-unit value of this runtime map. This value is essential for
+        /// any tile or rendering functionality
+        /// </summary>
+        double MetersPerUnit { get; }
+    }
+
+    public interface IRuntimeMapLegendElement
+    {
+        string Name { get; }
+
+        string LegendLabel { get; }
+
+        string ObjectID { get; }
+
+        string ParentID { get; }
+
+        bool DisplayInLegend { get; }
+
+        bool ExpandInLegend { get; }
+
+        bool Visible { get; }
+
+        bool ActuallyVisible { get; }
+    }
+
+    public interface IRuntimeLayerInfo : IRuntimeMapLegendElement
+    {
+        int LayerType { get; }
+
+        string LayerDefinition { get; }
+
+        IFeatureSourceInfo FeatureSource { get; }
+
+        IScaleRangeInfoCollection ScaleRanges { get; }
+    }
+
+    public interface IFeatureSourceInfo
+    {
+        string ResourceID { get; }
+
+        string ClassName { get; }
+
+        string Geometry { get; }
+    }
+
+    public interface IRuntimeLayerGroupInfo : IRuntimeMapLegendElement
+    {
+        int GroupType { get; }
+    }
+
+    public interface IScaleRangeInfo
+    {
+        double MinScale { get; }
+
+        double MaxScale { get; }
+
+        IFeatureStyleInfoCollection FeatureStyle { get; }
+    }
+
+    public interface IFeatureStyleInfo
+    {
+        int Type { get; }
+
+        IRuleInfoCollection Rules { get; }
+    }
+
+    public interface IRuleInfo
+    {
+        string LegendLabel { get; }
+
+        string Filter { get; }
+
+        string IconBase64 { get; }
+    }
+
+    public interface IReadOnlyCollection<T> : IEnumerable<T>
+    {
+        int Count { get; }
+
+        T this[int index]
+        {
+            get;
+        }
+    }
+
+    public interface IRuntimeLayerInfoCollection : IReadOnlyCollection<IRuntimeLayerInfo>
+    {
+
+    }
+
+    public interface IRuntimeLayerGroupInfoCollection : IReadOnlyCollection<IRuntimeLayerGroupInfo>
+    {
+
+    }
+
+    public interface IScaleRangeInfoCollection : IReadOnlyCollection<IScaleRangeInfo>
+    {
+
+    }
+
+    public interface IFeatureStyleInfoCollection : IReadOnlyCollection<IFeatureStyleInfo>
+    {
+
+    }
+
+    public interface IRuleInfoCollection : IReadOnlyCollection<IRuleInfo>
+    {
+
+    }
+}


Property changes on: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas
___________________________________________________________________
Added: svn:ignore
   + Xsd2Code.vshost.exe
Xsd2Code.vshost.exe.manifest


Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas/RuntimeMap-2.6.0.xsd
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas/RuntimeMap-2.6.0.xsd	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Schemas/RuntimeMap-2.6.0.xsd	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+  <xs:element name="RuntimeMap">
+    <xs:annotation>
+      <xs:documentation>Describes information about a Runtime Map, so that client applications can interact with it</xs:documentation>
+    </xs:annotation>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name="SiteVersion" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The MapGuide Site Version</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="Name" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The name of the runtime map. This is the value required for any mapagent operation that require a MAPNAME parameter</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="MapDefinition" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The resource id of the Map Definition from which this runtime map was created from</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="BackgroundColor" type="xs:string">
+          <xs:annotation>
+            <xs:documentation>The map's background color in ARGB hex string format</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="DisplayDpi" type="xs:integer">
+          <xs:annotation>
+            <xs:documentation>The number of dots per inch of the map display</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="IconMimeType" type="xs:string" minOccurs="0">
+          <xs:annotation>
+            <xs:documentation>The mime type of all inline icons</xs:documentation>
+          </xs:annotation>
+        </xs:element>
+        <xs:element name="CoordinateSystem" type="CoordinateSystemType" />
+        <xs:element name="Extents" type="Envelope" />
+        <xs:element name="Group" type="RuntimeMapGroup" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element name="Layer" type="RuntimeMapLayer" minOccurs="0" maxOccurs="unbounded" />
+        <xs:element name="FiniteDisplayScale" type="xs:double" minOccurs="0" maxOccurs="unbounded" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="CoordinateSystemType">
+    <xs:annotation>
+      <xs:documentation>Describes the coordinate system of the runtime map</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Wkt" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The WKT string of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MentorCode" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The CS-Map code of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="EpsgCode" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The EPSG code of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MetersPerUnit" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The meters-per-unit value of the coordinate system</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuntimeMapGroup">
+    <xs:annotation>
+      <xs:documentation>Describes a group of Runtime Map Layers</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the group</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The type of this group. Can be tiled or dynamic. Uses the value of MgLayerGroupType</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The group's legend label</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ObjectId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The group's unique id. Use this value for turning on/off this group in a GETDYNAMICMAPOVERLAYIMAGE request</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ParentId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The group's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DisplayInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group should be displayed in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ExpandInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group should be initially expanded in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Visible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this group is potentially visible. Note that this may be true even though the group is not visible. This will occur if one of the groups this group is organized within is not visible.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ActuallyVisible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates the actual visibility of the group. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuntimeMapLayer">
+    <xs:annotation>
+      <xs:documentation>Describes a runtime instance of a Layer Definition</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Name" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the layer</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The type of this layer. Can be tiled or dynamic. Uses the value of MgLayerType</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The layer's legend label</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ObjectId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The layer's unique id. Use this value for turning on/off this layer in a GETDYNAMICMAPOVERLAYIMAGE request</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ParentId" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>The layer's parent group id. Use this value for determining parent-child relationships when building a layer/group hierarchy</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="DisplayInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer should be displayed in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ExpandInLegend" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer should be initially expanded (if layer is themed) in the legend</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Visible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates whether this layer is potentially visible. Note that this may be true even though the layer is not visible. This will occur if the visible flag of one of the groups this layer is organized within is not visible or when the current viewScale property of the map is outside the scale ranges defined for this layer.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ActuallyVisible" type="xs:boolean">
+        <xs:annotation>
+          <xs:documentation>Indicates the actual visibility of the layer. The visibility depends on the visible property of the group, and the visible property of each group this group is organized within.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="LayerDefinition" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The Layer Definition from which this runtime layer was created from</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="FeatureSource" type="FeatureSourceInfo" minOccurs="0" />
+      <xs:element name="ScaleRange" type="ScaleRangeInfo" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="FeatureSourceInfo">
+    <xs:annotation>
+      <xs:documentation>Describe the Feature Source information for a runtime layer</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="ResourceId" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The Feature Source resource id</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="ClassName" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The qualified FDO class name</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Geometry" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The name of the default Geometry property</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="ScaleRangeInfo">
+    <xs:annotation>
+      <xs:documentation>Describes a scale range of the runtime layer</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="MinScale" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The minimum scale of this scale range</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="MaxScale" type="xs:double">
+        <xs:annotation>
+          <xs:documentation>The maximum scale of this scale range</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="FeatureStyle" type="FeatureStyleInfo" minOccurs="0" maxOccurs="unbounded">
+        <xs:annotation>
+          <xs:documentation>The feature style for a given geometry type.</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="FeatureStyleInfo">
+    <xs:annotation>
+      <xs:documentation>Defines the style rules for a given geometry type</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="Type" type="xs:integer">
+        <xs:annotation>
+          <xs:documentation>The geometry type that this rule is applicable to (1=point, 2=line, 3=area, 4=composite)</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Rule" type="RuleInfo" minOccurs="0" maxOccurs="unbounded" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="RuleInfo">
+    <xs:annotation>
+      <xs:documentation>Describes a stylization rule in a layer's scale range</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="LegendLabel" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The legend label for this rule</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Filter" type="xs:string">
+        <xs:annotation>
+          <xs:documentation>The FDO filter that features must match in order for them to be stylized using this particular rule</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+      <xs:element name="Icon" type="xs:string" minOccurs="0">
+        <xs:annotation>
+          <xs:documentation>Defines the icon for this rule. The icon's image content is in base64 format</xs:documentation>
+        </xs:annotation>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+  <xs:complexType name="Envelope">
+    <xs:annotation>
+      <xs:documentation>Specifies an envelope (a rectangle) using two corner points.</xs:documentation>
+    </xs:annotation>
+    <xs:sequence>
+      <xs:element name="LowerLeftCoordinate">
+        <xs:annotation>
+          <xs:documentation>Specifies the lower left corner of the envelope.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="X" type="xs:string"/>
+            <xs:element name="Y" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+      <xs:element name="UpperRightCoordinate">
+        <xs:annotation>
+          <xs:documentation>Specifies the upper right corner of the envelope.</xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+          <xs:sequence>
+            <xs:element name="X" type="xs:string"/>
+            <xs:element name="Y" type="xs:string"/>
+          </xs:sequence>
+        </xs:complexType>
+      </xs:element>
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>
\ No newline at end of file

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpCreateRuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpCreateRuntimeMap.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpCreateRuntimeMap.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,103 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.MaestroAPI.Commands;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.MaestroAPI.Http.Commands
+{
+    public class HttpCreateRuntimeMap : ICreateRuntimeMap
+    {
+        private HttpServerConnection _conn;
+
+        internal HttpCreateRuntimeMap(HttpServerConnection conn)
+        {
+            _conn = conn;
+            this.MapDefinition = null;
+            this.TargetMapName = null;
+            this.RequestedFeatures = 0;
+            this.IconWidth = 16;
+            this.IconHeight = 16;
+            this.IconFormat = "PNG"; //NOXLATE
+            this.IconsPerScaleRange = 25;
+        }
+
+        public string MapDefinition
+        {
+            get;
+            set;
+        }
+
+        public string TargetMapName
+        {
+            get;
+            set;
+        }
+
+        public int RequestedFeatures
+        {
+            get;
+            set;
+        }
+
+        public int IconsPerScaleRange
+        {
+            get;
+            set;
+        }
+
+        public string IconFormat
+        {
+            get;
+            set;
+        }
+
+        public int IconWidth
+        {
+            get;
+            set;
+        }
+
+        public int IconHeight
+        {
+            get;
+            set;
+        }
+
+        public IServerConnection Parent
+        {
+            get { return _conn; }
+        }
+
+        public ObjectModels.RuntimeMap.IRuntimeMapInfo Execute()
+        {
+            return _conn.CreateRuntimeMap(
+                this.MapDefinition,
+                this.TargetMapName,
+                this.RequestedFeatures,
+                this.IconsPerScaleRange,
+                this.IconFormat,
+                this.IconWidth,
+                this.IconHeight);
+        }
+    }
+}

Added: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpDescribeRuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpDescribeRuntimeMap.cs	                        (rev 0)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/Commands/HttpDescribeRuntimeMap.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -0,0 +1,95 @@
+#region Disclaimer / License
+// Copyright (C) 2013, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+// 
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+// 
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+// 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+// 
+#endregion
+using OSGeo.MapGuide.MaestroAPI.Commands;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace OSGeo.MapGuide.MaestroAPI.Http.Commands
+{
+    public class HttpDescribeRuntimeMap : IDescribeRuntimeMap
+    {
+        private HttpServerConnection _conn;
+
+        internal HttpDescribeRuntimeMap(HttpServerConnection conn)
+        {
+            _conn = conn;
+            this.Name = null;
+            this.RequestedFeatures = 0;
+            this.IconWidth = 16;
+            this.IconHeight = 16;
+            this.IconFormat = "PNG"; //NOXLATE
+            this.IconsPerScaleRange = 25;
+        }
+
+        public string Name
+        {
+            get;
+            set;
+        }
+
+        public int RequestedFeatures
+        {
+            get;
+            set;
+        }
+
+        public int IconsPerScaleRange
+        {
+            get;
+            set;
+        }
+
+        public string IconFormat
+        {
+            get;
+            set;
+        }
+
+        public int IconWidth
+        {
+            get;
+            set;
+        }
+
+        public int IconHeight
+        {
+            get;
+            set;
+        }
+
+        public IServerConnection Parent
+        {
+            get { return _conn; }
+        }
+
+        public ObjectModels.RuntimeMap.IRuntimeMapInfo Execute()
+        {
+            return _conn.DescribeRuntimeMap(
+                this.Name,
+                this.RequestedFeatures,
+                this.IconsPerScaleRange,
+                this.IconFormat,
+                this.IconWidth,
+                this.IconHeight);
+        }
+    }
+}

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpCapabilities.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpCapabilities.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpCapabilities.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -41,28 +41,32 @@
         {
             get 
             {
+                List<int> cmds = new List<int>();
                 var gconn = _implConn.GeoRestConnection;
                 if (gconn != null && gconn.Configuration.FeatureSources.Count > 0)
                 {
-                    return new int[] 
-                    {
-                        (int)CommandType.GetResourceContents,
-                        (int)CommandType.GetFdoCacheInfo,
+                    cmds.Add((int)CommandType.GetResourceContents);
+                    cmds.Add((int)CommandType.GetFdoCacheInfo);
                         //GeoREST allows us to support these
                         //(int)CommandType.DeleteFeatures,
-                        (int)CommandType.InsertFeature,
+                    cmds.Add((int)CommandType.InsertFeature);
                         //(int)CommandType.UpdateFeatures
-                    };
                 }
                 else
                 {
                     //TODO: Work out what this can/can't do
-                    return new int[] 
+                    cmds.Add((int)CommandType.GetResourceContents);
+                    cmds.Add((int)CommandType.GetFdoCacheInfo);
+
+                    //Create/Describe Runtime Map available with 2.6
+                    if (_implConn.SiteVersion >= new Version(2, 6))
                     {
-                        (int)CommandType.GetResourceContents,
-                        (int)CommandType.GetFdoCacheInfo
-                    };
+                        cmds.Add((int)CommandType.CreateRuntimeMap);
+                        cmds.Add((int)CommandType.DescribeRuntimeMap);
+                    }
                 }
+
+                return cmds.ToArray();
             }
         }
 

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/HttpServerConnection.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -2042,6 +2042,10 @@
                 return new HttpGetResourceContents(this);
             else if (ct == CommandType.GetFdoCacheInfo)
                 return new HttpGetFdoCacheInfo(this);
+            else if (ct == CommandType.CreateRuntimeMap)
+                return new HttpCreateRuntimeMap(this);
+            else if (ct == CommandType.DescribeRuntimeMap)
+                return new HttpDescribeRuntimeMap(this);
             return base.CreateCommand(cmdType);
         }
 
@@ -2055,5 +2059,25 @@
                 return info;
             }
         }
+
+        internal ObjectModels.RuntimeMap.IRuntimeMapInfo DescribeRuntimeMap(string mapName, int requestedFeatures, int iconsPerScaleRange, string iconFormat, int iconWidth, int iconHeight)
+        {
+            var req = m_reqBuilder.DescribeRuntimeMap(mapName, requestedFeatures, iconsPerScaleRange, iconFormat, iconWidth, iconHeight);
+            using (var s = this.OpenRead(req))
+            {
+                var info = this.DeserializeObject<OSGeo.MapGuide.ObjectModels.RuntimeMap.RuntimeMap>(s);
+                return info;
+            }
+        }
+
+        internal ObjectModels.RuntimeMap.IRuntimeMapInfo CreateRuntimeMap(string mapDefinition, string targetMapName, int requestedFeatures, int iconsPerScaleRange, string iconFormat, int iconWidth, int iconHeight)
+        {
+            var req = m_reqBuilder.CreateRuntimeMap(mapDefinition, targetMapName, requestedFeatures, iconsPerScaleRange, iconFormat, iconWidth, iconHeight);
+            using (var s = this.OpenRead(req))
+            {
+                var info = this.DeserializeObject<OSGeo.MapGuide.ObjectModels.RuntimeMap.RuntimeMap>(s);
+                return info;
+            }
+        }
     }
 }

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/OSGeo.MapGuide.MaestroAPI.Http.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -75,6 +75,8 @@
       <Link>SignedAssemblyInfo.cs</Link>
     </Compile>
     <Compile Include="Commands\GeoRestCommands.cs" />
+    <Compile Include="Commands\HttpCreateRuntimeMap.cs" />
+    <Compile Include="Commands\HttpDescribeRuntimeMap.cs" />
     <Compile Include="Commands\HttpGetFdoCacheInfo.cs" />
     <Compile Include="GeoRestConnection.cs" />
     <Compile Include="HttpCapabilities.cs" />

Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Http/RequestBuilder.cs	2013-09-06 15:23:24 UTC (rev 7846)
@@ -1752,5 +1752,38 @@
 
             return m_hosturi + "?" + EncodeParameters(param);
         }
+
+        internal string DescribeRuntimeMap(string mapName, int requestedFeatures, int iconsPerScaleRange, string iconFormat, int iconWidth, int iconHeight)
+        {
+            NameValueCollection param = new NameValueCollection();
+            param.Add("OPERATION", "DESCRIBERUNTIMEMAP");
+            param.Add("VERSION", "2.6.0");
+            param.Add("SESSION", m_sessionID);
+            param.Add("MAPNAME", mapName);
+            param.Add("REQUESTEDFEATURES", requestedFeatures.ToString());
+            param.Add("ICONSPERSCALERANGE", iconsPerScaleRange.ToString());
+            param.Add("ICONFORMAT", iconFormat.ToString());
+            param.Add("ICONWIDTH", iconWidth.ToString());
+            param.Add("ICONHEIGHT", iconHeight.ToString());
+
+            return m_hosturi + "?" + EncodeParameters(param);
+        }
+
+        internal string CreateRuntimeMap(string mapDefinition, string targetMapName, int requestedFeatures, int iconsPerScaleRange, string iconFormat, int iconWidth, int iconHeight)
+        {
+            NameValueCollection param = new NameValueCollection();
+            param.Add("OPERATION", "CREATERUNTIMEMAP");
+            param.Add("VERSION", "2.6.0");
+            param.Add("SESSION", m_sessionID);
+            param.Add("MAPDEFINITION", mapDefinition);
+            param.Add("TARGETMAPNAME", targetMapName);
+            param.Add("REQUESTEDFEATURES", requestedFeatures.ToString());
+            param.Add("ICONSPERSCALERANGE", iconsPerScaleRange.ToString());
+            param.Add("ICONFORMAT", iconFormat.ToString());
+            param.Add("ICONWIDTH", iconWidth.ToString());
+            param.Add("ICONHEIGHT", iconHeight.ToString());
+
+            return m_hosturi + "?" + EncodeParameters(param);
+        }
     }
 }


Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code
___________________________________________________________________
Added: svn:ignore
   + Xsd2Code.suo



Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin
___________________________________________________________________
Added: svn:ignore
   + bin
obj


Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin/Xsd2Code.Addin.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin/Xsd2Code.Addin.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Addin/Xsd2Code.Addin.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -11,10 +11,14 @@
     <NoStandardLibraries>false</NoStandardLibraries>
     <AssemblyName>Xsd2Code.Addin</AssemblyName>
     <RootNamespace>Xsd2Code.Addin</RootNamespace>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Console/Xsd2Code.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Console/Xsd2Code.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Console/Xsd2Code.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -25,10 +25,14 @@
     </FileUpgradeFlags>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
     <OldToolsVersion>2.0</OldToolsVersion>
     <PublishUrl>publish\</PublishUrl>
     <Install>true</Install>
@@ -152,6 +156,12 @@
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Xsd2Code.Library\Xsd2Code.Library.csproj">
+      <Project>{1B59FB12-699C-4927-ACA3-D7F0E0F79100}</Project>
+      <Name>Xsd2Code.Library</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PreBuildEvent>


Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool
___________________________________________________________________
Added: svn:ignore
   + bin
obj


Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool/Xsd2Code.CustomTool.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool/Xsd2Code.CustomTool.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.CustomTool/Xsd2Code.CustomTool.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -12,10 +12,14 @@
     <AssemblyName>Xsd2Code.CustomTool</AssemblyName>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
     <TargetFrameworkSubset>
     </TargetFrameworkSubset>
     <SignAssembly>true</SignAssembly>

Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Library/Xsd2Code.Library.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Library/Xsd2Code.Library.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Library/Xsd2Code.Library.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -25,10 +25,14 @@
     </FileUpgradeFlags>
     <UpgradeBackupLocation>
     </UpgradeBackupLocation>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
     <OldToolsVersion>2.0</OldToolsVersion>
     <SignAssembly>true</SignAssembly>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>


Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup
___________________________________________________________________
Added: svn:ignore
   + Debug
Release


Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup/Xsd2Code.Setup.vdproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup/Xsd2Code.Setup.vdproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.Setup/Xsd2Code.Setup.vdproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -7,10 +7,10 @@
 "LanguageId" = "3:1033"
 "CodePage" = "3:1252"
 "UILanguageId" = "3:1033"
-"SccProjectName" = "8:SAK"
-"SccLocalPath" = "8:SAK"
-"SccAuxPath" = "8:SAK"
-"SccProvider" = "8:SAK"
+"SccProjectName" = "8:"
+"SccLocalPath" = "8:"
+"SccAuxPath" = "8:"
+"SccProvider" = "8:"
     "Hierarchy"
     {
         "Entry"
@@ -51,12 +51,18 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_237AB4F7A0FE364F175B8F9540479067"
-        "OwnerKey" = "8:_9FE8EA0636EB116FD6658FBB09DFE95D"
+        "MsmKey" = "8:_19C14698B352BFFBF91D748CEC0DEA97"
+        "OwnerKey" = "8:_E79428D34B58A2B7744637C662EB602E"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
+        "MsmKey" = "8:_27D10E0457C873431A5401C8AD300A4C"
+        "OwnerKey" = "8:_9B04B0A1BA372F57AC19697A9635EBE0"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_2A29D83B76A4737E5B5A1C69D018BDF4"
         "OwnerKey" = "8:_02BF6658565AB89A9E0E5EDAD398D4D4"
         "MsmSig" = "8:_UNDEFINED"
@@ -117,30 +123,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
-        "OwnerKey" = "8:_2DECD1E3637A43FA94AF210B2D7AA487"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
-        "OwnerKey" = "8:_647C0AD6D184438F9314D2B6DD0FD9C1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
-        "OwnerKey" = "8:_61D0BF83862A4181AEEADA21FB1C17A9"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
-        "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_43143199410A44EBBF1E69F608989EB1"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -153,42 +135,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_D38EA559F6BE4D89980464F2DCA34A8E"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_647C0AD6D184438F9314D2B6DD0FD9C1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_61D0BF83862A4181AEEADA21FB1C17A9"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "OwnerKey" = "8:_2DECD1E3637A43FA94AF210B2D7AA487"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_52BD26E9261145B2BFB7F6F40F1B4180"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -225,12 +171,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_5EAADD34BDADD640ABC70C1A462807F8"
-        "OwnerKey" = "8:_E79428D34B58A2B7744637C662EB602E"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_61D0BF83862A4181AEEADA21FB1C17A9"
         "OwnerKey" = "8:_UNDEFINED"
         "MsmSig" = "8:_UNDEFINED"
@@ -249,8 +189,8 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_795F0A9412FC2A617F571C7AC8649416"
-        "OwnerKey" = "8:_EDA0E61B645870C31CED1FA931E513AA"
+        "MsmKey" = "8:_778D1705C5CF3FED111E9AC640B4D978"
+        "OwnerKey" = "8:_9FE8EA0636EB116FD6658FBB09DFE95D"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
@@ -279,6 +219,12 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_8AC420F1053702C97FCFB9DE5C9CEF38"
+        "OwnerKey" = "8:_D38EA559F6BE4D89980464F2DCA34A8E"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_9882338D52204001EDCD2BAC93035802"
         "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
         "MsmSig" = "8:_UNDEFINED"
@@ -309,6 +255,12 @@
         }
         "Entry"
         {
+        "MsmKey" = "8:_996F3476368266333B6D85510FDA1BD7"
+        "OwnerKey" = "8:_4D5B5B3E873C568A2E6832D15B509483"
+        "MsmSig" = "8:_UNDEFINED"
+        }
+        "Entry"
+        {
         "MsmKey" = "8:_9B04B0A1BA372F57AC19697A9635EBE0"
         "OwnerKey" = "8:_E79428D34B58A2B7744637C662EB602E"
         "MsmSig" = "8:_UNDEFINED"
@@ -381,18 +333,6 @@
         }
         "Entry"
         {
-        "MsmKey" = "8:_E8FE4AE9713C335CF29E5DA97AAFD1AA"
-        "OwnerKey" = "8:_9B04B0A1BA372F57AC19697A9635EBE0"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
-        "MsmKey" = "8:_E926FE2C55A07FE669A8CFB5F9BA7113"
-        "OwnerKey" = "8:_4D5B5B3E873C568A2E6832D15B509483"
-        "MsmSig" = "8:_UNDEFINED"
-        }
-        "Entry"
-        {
         "MsmKey" = "8:_EDA0E61B645870C31CED1FA931E513AA"
         "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
         "MsmSig" = "8:_UNDEFINED"
@@ -550,39 +490,33 @@
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_647C0AD6D184438F9314D2B6DD0FD9C1"
+        "OwnerKey" = "8:_8AC420F1053702C97FCFB9DE5C9CEF38"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_61D0BF83862A4181AEEADA21FB1C17A9"
+        "OwnerKey" = "8:_647C0AD6D184438F9314D2B6DD0FD9C1"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
+        "OwnerKey" = "8:_61D0BF83862A4181AEEADA21FB1C17A9"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_2DECD1E3637A43FA94AF210B2D7AA487"
+        "OwnerKey" = "8:_43143199410A44EBBF1E69F608989EB1"
         "MsmSig" = "8:_UNDEFINED"
         }
         "Entry"
         {
         "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_334AD48D8BA4B19B5C1C937FE136E37C"
+        "OwnerKey" = "8:_2DECD1E3637A43FA94AF210B2D7AA487"
         "MsmSig" = "8:_UNDEFINED"
         }
-        "Entry"
-        {
-        "MsmKey" = "8:_UNDEFINED"
-        "OwnerKey" = "8:_4DC3744B0E677F5E6336527424A1C8B4"
-        "MsmSig" = "8:_UNDEFINED"
-        }
     }
     "Configurations"
     {
@@ -823,10 +757,10 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_237AB4F7A0FE364F175B8F9540479067"
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_19C14698B352BFFBF91D748CEC0DEA97"
             {
-            "SourcePath" = "8:dte90.olb"
-            "TargetName" = "8:dte90.olb"
+            "SourcePath" = "8:dte80.olb"
+            "TargetName" = "8:dte80.olb"
             "Tag" = "8:"
             "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
             "Condition" = "8:"
@@ -843,23 +777,12 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2A29D83B76A4737E5B5A1C69D018BDF4"
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_27D10E0457C873431A5401C8AD300A4C"
             {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:TRUE"
-            "AssemblyAsmDisplayName" = "8:Microsoft.VisualStudio.TextManager.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
-                "ScatterAssemblies"
-                {
-                    "_2A29D83B76A4737E5B5A1C69D018BDF4"
-                    {
-                    "Name" = "8:Microsoft.VisualStudio.TextManager.Interop.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:Microsoft.VisualStudio.TextManager.Interop.dll"
-            "TargetName" = "8:"
+            "SourcePath" = "8:dte80a.olb"
+            "TargetName" = "8:dte80a.olb"
             "Tag" = "8:"
-            "Folder" = "8:_E8C374FC59DF4755876911DCF099C3C1"
+            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -874,20 +797,20 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_306CCA4807A5EF0FE24E4D25F17CEEEE"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_2A29D83B76A4737E5B5A1C69D018BDF4"
             {
             "AssemblyRegister" = "3:1"
             "AssemblyIsInGAC" = "11:TRUE"
-            "AssemblyAsmDisplayName" = "8:Microsoft.VisualStudio.VSHelp, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
+            "AssemblyAsmDisplayName" = "8:Microsoft.VisualStudio.TextManager.Interop, Version=7.1.40304.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 "ScatterAssemblies"
                 {
-                    "_306CCA4807A5EF0FE24E4D25F17CEEEE"
+                    "_2A29D83B76A4737E5B5A1C69D018BDF4"
                     {
-                    "Name" = "8:Microsoft.VisualStudio.VSHelp.dll"
+                    "Name" = "8:Microsoft.VisualStudio.TextManager.Interop.dll"
                     "Attributes" = "3:512"
                     }
                 }
-            "SourcePath" = "8:Microsoft.VisualStudio.VSHelp.dll"
+            "SourcePath" = "8:Microsoft.VisualStudio.TextManager.Interop.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
             "Folder" = "8:_E8C374FC59DF4755876911DCF099C3C1"
@@ -905,23 +828,23 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_334AD48D8BA4B19B5C1C937FE136E37C"
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_306CCA4807A5EF0FE24E4D25F17CEEEE"
             {
             "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:Xsd2Code.Library, Version=3.3.0.20794, Culture=neutral, PublicKeyToken=04032056d5f54f80, processorArchitecture=MSIL"
+            "AssemblyIsInGAC" = "11:TRUE"
+            "AssemblyAsmDisplayName" = "8:Microsoft.VisualStudio.VSHelp, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 "ScatterAssemblies"
                 {
-                    "_334AD48D8BA4B19B5C1C937FE136E37C"
+                    "_306CCA4807A5EF0FE24E4D25F17CEEEE"
                     {
-                    "Name" = "8:Xsd2Code.Library.dll"
+                    "Name" = "8:Microsoft.VisualStudio.VSHelp.dll"
                     "Attributes" = "3:512"
                     }
                 }
-            "SourcePath" = "8:Xsd2Code.Library.dll"
+            "SourcePath" = "8:Microsoft.VisualStudio.VSHelp.dll"
             "TargetName" = "8:"
             "Tag" = "8:"
-            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
+            "Folder" = "8:_E8C374FC59DF4755876911DCF099C3C1"
             "Condition" = "8:"
             "Transitive" = "11:FALSE"
             "Vital" = "11:TRUE"
@@ -932,7 +855,7 @@
             "SharedLegacy" = "11:FALSE"
             "PackageAs" = "3:1"
             "Register" = "3:1"
-            "Exclude" = "11:TRUE"
+            "Exclude" = "11:FALSE"
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
@@ -967,37 +890,6 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_4DC3744B0E677F5E6336527424A1C8B4"
-            {
-            "AssemblyRegister" = "3:1"
-            "AssemblyIsInGAC" = "11:FALSE"
-            "AssemblyAsmDisplayName" = "8:CppCodeProvider, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
-                "ScatterAssemblies"
-                {
-                    "_4DC3744B0E677F5E6336527424A1C8B4"
-                    {
-                    "Name" = "8:CppCodeProvider.dll"
-                    "Attributes" = "3:512"
-                    }
-                }
-            "SourcePath" = "8:CppCodeProvider.dll"
-            "TargetName" = "8:"
-            "Tag" = "8:"
-            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_52BD26E9261145B2BFB7F6F40F1B4180"
             {
             "SourcePath" = "8:..\\Xsd2Code.Console\\Resources\\Readme.xps"
@@ -1080,26 +972,6 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5EAADD34BDADD640ABC70C1A462807F8"
-            {
-            "SourcePath" = "8:dte80.olb"
-            "TargetName" = "8:dte80.olb"
-            "Tag" = "8:"
-            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_64620B4D54084669B540372A4082535D"
             {
             "AssemblyRegister" = "3:1"
@@ -1131,10 +1003,10 @@
             "IsDependency" = "11:FALSE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_795F0A9412FC2A617F571C7AC8649416"
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_778D1705C5CF3FED111E9AC640B4D978"
             {
-            "SourcePath" = "8:ProjectAggregator.dll"
-            "TargetName" = "8:ProjectAggregator.dll"
+            "SourcePath" = "8:dte90.olb"
+            "TargetName" = "8:dte90.olb"
             "Tag" = "8:"
             "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
             "Condition" = "8:"
@@ -1202,6 +1074,37 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
+            "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_8AC420F1053702C97FCFB9DE5C9CEF38"
+            {
+            "AssemblyRegister" = "3:1"
+            "AssemblyIsInGAC" = "11:FALSE"
+            "AssemblyAsmDisplayName" = "8:CppCodeProvider, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
+                "ScatterAssemblies"
+                {
+                    "_8AC420F1053702C97FCFB9DE5C9CEF38"
+                    {
+                    "Name" = "8:CppCodeProvider.dll"
+                    "Attributes" = "3:512"
+                    }
+                }
+            "SourcePath" = "8:CppCodeProvider.dll"
+            "TargetName" = "8:"
+            "Tag" = "8:"
+            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9882338D52204001EDCD2BAC93035802"
             {
             "AssemblyRegister" = "3:1"
@@ -1264,6 +1167,26 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
+            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_996F3476368266333B6D85510FDA1BD7"
+            {
+            "SourcePath" = "8:vsmso.olb"
+            "TargetName" = "8:vsmso.olb"
+            "Tag" = "8:"
+            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
+            "Condition" = "8:"
+            "Transitive" = "11:FALSE"
+            "Vital" = "11:TRUE"
+            "ReadOnly" = "11:FALSE"
+            "Hidden" = "11:FALSE"
+            "System" = "11:FALSE"
+            "Permanent" = "11:FALSE"
+            "SharedLegacy" = "11:FALSE"
+            "PackageAs" = "3:1"
+            "Register" = "3:1"
+            "Exclude" = "11:FALSE"
+            "IsDependency" = "11:TRUE"
+            "IsolateTo" = "8:"
+            }
             "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9B04B0A1BA372F57AC19697A9635EBE0"
             {
             "AssemblyRegister" = "3:1"
@@ -1397,46 +1320,6 @@
             "IsDependency" = "11:TRUE"
             "IsolateTo" = "8:"
             }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E8FE4AE9713C335CF29E5DA97AAFD1AA"
-            {
-            "SourcePath" = "8:dte80a.olb"
-            "TargetName" = "8:dte80a.olb"
-            "Tag" = "8:"
-            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E926FE2C55A07FE669A8CFB5F9BA7113"
-            {
-            "SourcePath" = "8:vsmso.olb"
-            "TargetName" = "8:vsmso.olb"
-            "Tag" = "8:"
-            "Folder" = "8:_006CBF0784B24831A183FEE0E7D94E51"
-            "Condition" = "8:"
-            "Transitive" = "11:FALSE"
-            "Vital" = "11:TRUE"
-            "ReadOnly" = "11:FALSE"
-            "Hidden" = "11:FALSE"
-            "System" = "11:FALSE"
-            "Permanent" = "11:FALSE"
-            "SharedLegacy" = "11:FALSE"
-            "PackageAs" = "3:1"
-            "Register" = "3:1"
-            "Exclude" = "11:FALSE"
-            "IsDependency" = "11:TRUE"
-            "IsolateTo" = "8:"
-            }
             "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_EDA0E61B645870C31CED1FA931E513AA"
             {
             "AssemblyRegister" = "3:1"


Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary
___________________________________________________________________
Added: svn:ignore
   + obj


Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/Xsd2Code.SetupLibrary.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/Xsd2Code.SetupLibrary.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/Xsd2Code.SetupLibrary.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -12,10 +12,14 @@
     <AssemblyName>Xsd2Code.SetupLibrary</AssemblyName>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>


Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.SetupLibrary/bin
___________________________________________________________________
Added: svn:ignore
   + Release



Property changes on: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit
___________________________________________________________________
Added: svn:ignore
   + bin
obj


Modified: trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit/Xsd2Code.TestUnit.csproj
===================================================================
--- trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit/Xsd2Code.TestUnit.csproj	2013-09-06 13:22:15 UTC (rev 7845)
+++ trunk/Tools/Maestro/Thirdparty/Xsd2Code/Xsd2Code.TestUnit/Xsd2Code.TestUnit.csproj	2013-09-06 15:23:24 UTC (rev 7846)
@@ -11,10 +11,14 @@
     <AssemblyName>Xsd2Code.TestUnit</AssemblyName>
     <WarningLevel>4</WarningLevel>
     <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
-    <SccProjectName>SAK</SccProjectName>
-    <SccLocalPath>SAK</SccLocalPath>
-    <SccAuxPath>SAK</SccAuxPath>
-    <SccProvider>SAK</SccProvider>
+    <SccProjectName>
+    </SccProjectName>
+    <SccLocalPath>
+    </SccLocalPath>
+    <SccAuxPath>
+    </SccAuxPath>
+    <SccProvider>
+    </SccProvider>
     <FileUpgradeFlags>
     </FileUpgradeFlags>
     <OldToolsVersion>2.0</OldToolsVersion>



More information about the mapguide-commits mailing list