← Back to team overview

txaws-dev team mailing list archive

[Merge] lp:~fwierzbicki/txaws/update-for-new-wsdl into lp:txaws

 

Frank Wierzbicki has proposed merging lp:~fwierzbicki/txaws/update-for-new-wsdl into lp:txaws.

Requested reviews:
  txAWS Developers (txaws-dev)

For more details, see:
https://code.launchpad.net/~fwierzbicki/txaws/update-for-new-wsdl/+merge/89186

This branch updates the ec2 client and parser to the ec2 wsdl from 2009-11-30. This branch only changes the methods that have been deleted or have had parameters deleted or changes methods and attributes that have had name changes in the wsdl. Additional attributes and methods are not taken care of in this branch. New attributes are noted in the respective methods with TODO so that they can be added in a later branch.
-- 
https://code.launchpad.net/~fwierzbicki/txaws/update-for-new-wsdl/+merge/89186
Your team txAWS Developers is requested to review the proposed merge of lp:~fwierzbicki/txaws/update-for-new-wsdl into lp:txaws.
=== modified file 'txaws/client/discover/tests/test_command.py'
--- txaws/client/discover/tests/test_command.py	2011-08-01 15:42:00 +0000
+++ txaws/client/discover/tests/test_command.py	2012-01-19 04:28:24 +0000
@@ -74,9 +74,9 @@
             url = (
                 "http://endpoint?AWSAccessKeyId=key&";
                 "Action=DescribeRegions&"
-                "Signature=uAlV2ALkp7qTxZrTNNuJhHl0i9xiTK5faZOhJTgGS1E%3D&"
+                "Signature=3%2BHSkQQosF1Sr9AL3kdY31tEfTWQ2whjJOUSc3kvc2c%3D&"
                 "SignatureMethod=HmacSHA256&SignatureVersion=2&"
-                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2008-12-01")
+                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2009-11-30")
             self.assertEqual("GET", self.method)
             self.assertEqual(url, self.url)
             self.assertEqual("URL: %s\n"
@@ -99,9 +99,9 @@
             url = (
                 "http://endpoint?AWSAccessKeyId=key&";
                 "Action=DescribeRegions&RegionName.0=us-west-1&"
-                "Signature=P6C7cQJ7j93uIJyv2dTbpQG3EI7ArGBJT%2FzVH%2BDFhyY%3D&"
+                "Signature=6D8aCgSPQOYixowRHy26aRFzK2Vwgixl9uwegYX9nLA%3D&"
                 "SignatureMethod=HmacSHA256&SignatureVersion=2&"
-                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2008-12-01")
+                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2009-11-30")
             self.assertEqual("GET", self.method)
             self.assertEqual(url, self.url)
             self.assertEqual("URL: %s\n"
@@ -128,9 +128,9 @@
             url = (
                 "http://endpoint?AWSAccessKeyId=key&";
                 "Action=DescribeRegions&RegionName.0=us-west-1&"
-                "Signature=P6C7cQJ7j93uIJyv2dTbpQG3EI7ArGBJT%2FzVH%2BDFhyY%3D&"
+                "Signature=6D8aCgSPQOYixowRHy26aRFzK2Vwgixl9uwegYX9nLA%3D&"
                 "SignatureMethod=HmacSHA256&SignatureVersion=2&"
-                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2008-12-01")
+                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2009-11-30")
             self.assertEqual("GET", self.method)
             self.assertEqual(url, self.url)
             self.assertEqual("URL: %s\n"
@@ -159,7 +159,7 @@
                 "Action=DescribeRegions&RegionName.0=us-west-1&"
                 "Signature=P6C7cQJ7j93uIJyv2dTbpQG3EI7ArGBJT%2FzVH%2BDFhyY%3D&"
                 "SignatureMethod=HmacSHA256&SignatureVersion=2&"
-                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2008-12-01")
+                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2009-11-30")
             self.assertEqual("GET", self.method)
             self.assertEqual(url, self.url)
             self.assertEqual("URL: %s\n"
@@ -185,9 +185,9 @@
             url = (
                 "http://endpoint?AWSAccessKeyId=key&";
                 "Action=DescribeRegions&RegionName.0=us-west-1&"
-                "Signature=P6C7cQJ7j93uIJyv2dTbpQG3EI7ArGBJT%2FzVH%2BDFhyY%3D&"
+                "Signature=6D8aCgSPQOYixowRHy26aRFzK2Vwgixl9uwegYX9nLA%3D&"
                 "SignatureMethod=HmacSHA256&SignatureVersion=2&"
-                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2008-12-01")
+                "Timestamp=2010-06-04T23%3A40%3A00Z&Version=2009-11-30")
             self.assertEqual("GET", self.method)
             self.assertEqual(url, self.url)
             self.assertEqual("URL: %s\n"

=== modified file 'txaws/ec2/client.py'
--- txaws/ec2/client.py	2011-08-19 16:09:39 +0000
+++ txaws/ec2/client.py	2012-01-19 04:28:24 +0000
@@ -49,14 +49,17 @@
         security_groups=None, key_name=None, instance_type=None,
         user_data=None, availability_zone=None, kernel_id=None,
         ramdisk_id=None):
-        """Run new instances."""
+        """Run new instances.
+
+        TODO: blockDeviceMapping, monitoring, subnetId
+        """
         params = {"ImageId": image_id, "MinCount": str(min_count),
                   "MaxCount": str(max_count)}
+        if key_name is not None:
+            params["KeyName"] = key_name
         if security_groups is not None:
             for i, name in enumerate(security_groups):
                 params["SecurityGroup.%d" % (i + 1)] = name
-        if key_name is not None:
-            params["KeyName"] = key_name
         if user_data is not None:
             params["UserData"] = b64encode(user_data)
         if instance_type is not None:
@@ -135,26 +138,15 @@
         d = query.submit()
         return d.addCallback(self.parser.truth_return)
 
-    def authorize_security_group(
-        self, group_name, source_group_name="", source_group_owner_id="",
-        ip_protocol="", from_port="", to_port="", cidr_ip=""):
+    def authorize_security_group(self, group_name, ip_protocol="",
+                                 from_port="", to_port="", cidr_ip=""):
         """
-        There are two ways to use C{authorize_security_group}:
-            1) associate an existing group (source group) with the one that you
-            are targeting (group_name) with an authorization update; or
-            2) associate a set of IP permissions with the group you are
-            targeting with an authorization update.
+        Use C{authorize_security_group} by associating a set of IP permissions
+        with the group you are targeting with an authorization update.
 
         @param group_name: The group you will be modifying with a new
             authorization.
 
-        Optionally, the following parameters:
-        @param source_group_name: Name of security group to authorize access to
-            when operating on a user/group pair.
-        @param source_group_owner_id: Owner of security group to authorize
-            access to when operating on a user/group pair.
-
-        If those parameters are not specified, then the following must be:
         @param ip_protocol: IP protocol to authorize access to when operating
             on a CIDR IP.
         @param from_port: Bottom of port range to authorize access to when
@@ -168,13 +160,9 @@
 
         @return: A C{Deferred} that will fire with a truth value for the
             success of the operation.
+
         """
-        if source_group_name and source_group_owner_id:
-            parameters = {
-                "SourceSecurityGroupName": source_group_name,
-                "SourceSecurityGroupOwnerId": source_group_owner_id,
-                }
-        elif ip_protocol and from_port and to_port and cidr_ip:
+        if ip_protocol and from_port and to_port and cidr_ip:
             parameters = {
                 "IpProtocol": ip_protocol,
                 "FromPort": from_port,
@@ -220,26 +208,15 @@
             cidr_ip=cidr_ip)
         return d
 
-    def revoke_security_group(
-        self, group_name, source_group_name="", source_group_owner_id="",
-        ip_protocol="", from_port="", to_port="", cidr_ip=""):
+    def revoke_security_group(self, group_name, ip_protocol="", from_port="",
+                              to_port="", cidr_ip=""):
         """
-        There are two ways to use C{revoke_security_group}:
-            1) associate an existing group (source group) with the one that you
-            are targeting (group_name) with the revoke update; or
-            2) associate a set of IP permissions with the group you are
-            targeting with a revoke update.
+        Use C{revoke_security_group} by associating a set of IP permissions
+        with the group you are targeting with a revoke update.
 
         @param group_name: The group you will be modifying with an
             authorization removal.
 
-        Optionally, the following parameters:
-        @param source_group_name: Name of security group to revoke access from
-            when operating on a user/group pair.
-        @param source_group_owner_id: Owner of security group to revoke
-            access from when operating on a user/group pair.
-
-        If those parameters are not specified, then the following must be:
         @param ip_protocol: IP protocol to revoke access from when operating
             on a CIDR IP.
         @param from_port: Bottom of port range to revoke access from when
@@ -253,13 +230,9 @@
 
         @return: A C{Deferred} that will fire with a truth value for the
             success of the operation.
+
         """
-        if source_group_name and source_group_owner_id:
-            parameters = {
-                "SourceSecurityGroupName": source_group_name,
-                "SourceSecurityGroupOwnerId": source_group_owner_id,
-                }
-        elif ip_protocol and from_port and to_port and cidr_ip:
+        if ip_protocol and from_port and to_port and cidr_ip:
             parameters = {
                 "IpProtocol": ip_protocol,
                 "FromPort": from_port,
@@ -277,22 +250,8 @@
         d = query.submit()
         return d.addCallback(self.parser.truth_return)
 
-    def revoke_group_permission(
-        self, group_name, source_group_name, source_group_owner_id):
-        """
-        This is a convenience function that wraps the "authorize group"
-        functionality of the C{authorize_security_group} method.
-
-        For an explanation of the parameters, see C{revoke_security_group}.
-        """
-        d = self.revoke_security_group(
-            group_name,
-            source_group_name=source_group_name,
-            source_group_owner_id=source_group_owner_id)
-        return d
-
-    def revoke_ip_permission(
-        self, group_name, ip_protocol, from_port, to_port, cidr_ip):
+    def revoke_ip_permission( self, group_name, ip_protocol, from_port,
+            to_port, cidr_ip):
         """
         This is a convenience function that wraps the "authorize ip
         permission" functionality of the C{authorize_security_group} method.
@@ -340,7 +299,10 @@
         return d.addCallback(self.parser.truth_return)
 
     def describe_snapshots(self, *snapshot_ids):
-        """Describe available snapshots."""
+        """Describe available snapshots.
+        
+        TODO: ownerSet, restorableBySet
+        """
         snapshot_set = {}
         for pos, snapshot_id in enumerate(snapshot_ids):
             snapshot_set["SnapshotId.%d" % (pos + 1)] = snapshot_id
@@ -351,7 +313,10 @@
         return d.addCallback(self.parser.snapshots)
 
     def create_snapshot(self, volume_id):
-        """Create a new snapshot of an existing volume."""
+        """Create a new snapshot of an existing volume.
+
+        TODO: description
+        """
         query = self.query_factory(
             action="CreateSnapshot", creds=self.creds, endpoint=self.endpoint,
             other_params={"VolumeId": volume_id})
@@ -379,7 +344,7 @@
         """Returns information about key pairs available."""
         keypairs = {}
         for index, keypair_name in enumerate(keypair_names):
-            keypairs["KeyPair.%d" % (index + 1)] = keypair_name
+            keypairs["KeyName.%d" % (index + 1)] = keypair_name
         query = self.query_factory(
             action="DescribeKeyPairs", creds=self.creds,
             endpoint=self.endpoint, other_params=keypairs)
@@ -418,6 +383,9 @@
 
         @return: A L{Deferred} firing with a L{model.Keypair} instance if
             successful.
+
+        TODO: there is no corresponding method in the 2009-11-30 version
+             of the ec2 wsdl. Delete this?
         """
         query = self.query_factory(
             action="ImportKeyPair", creds=self.creds, endpoint=self.endpoint,
@@ -530,26 +498,30 @@
         @param instance_data: An XML node containing instance data.
         @param reservation: The L{Reservation} associated with the instance.
         @return: An L{Instance}.
+
+        TODO: reason, platform, monitoring, subnetId, vpcId, privateIpAddress,
+              ipAddress, stateReason, architecture, rootDeviceName,
+              blockDeviceMapping, instanceLifecycle, spotInstanceRequestId.
         """
         instance_id = instance_data.findtext("instanceId")
         instance_state = instance_data.find(
             "instanceState").findtext("name")
-        instance_type = instance_data.findtext("instanceType")
-        image_id = instance_data.findtext("imageId")
         private_dns_name = instance_data.findtext("privateDnsName")
         dns_name = instance_data.findtext("dnsName")
         key_name = instance_data.findtext("keyName")
         ami_launch_index = instance_data.findtext("amiLaunchIndex")
-        launch_time = instance_data.findtext("launchTime")
-        placement = instance_data.find("placement").findtext(
-            "availabilityZone")
         products = []
         product_codes = instance_data.find("productCodes")
         if product_codes is not None:
             for product_data in instance_data.find("productCodes"):
                 products.append(product_data.text)
+        instance_type = instance_data.findtext("instanceType")
+        launch_time = instance_data.findtext("launchTime")
+        placement = instance_data.find("placement").findtext(
+            "availabilityZone")
         kernel_id = instance_data.findtext("kernelId")
         ramdisk_id = instance_data.findtext("ramdiskId")
+        image_id = instance_data.findtext("imageId")
         instance = model.Instance(
             instance_id, instance_state, instance_type, image_id,
             private_dns_name, dns_name, key_name, ami_launch_index,
@@ -602,7 +574,8 @@
         Parse the reservations XML payload that is returned from an AWS
         RunInstances API call.
 
-        @param xml_bytes: raw XML payload from AWS.
+        @param xml_bytes: raw XML bytes with a C{RunInstancesResponse} root
+            element.
         """
         root = XML(xml_bytes)
         # Get the security group information.
@@ -625,7 +598,7 @@
         @param xml_bytes: XML bytes with a C{TerminateInstancesResponse} root
             element.
         @return: An iterable of C{tuple} of (instanceId, previousState,
-            shutdownState) for the ec2 instances that where terminated.
+            currentState) for the ec2 instances that where terminated.
         """
         root = XML(xml_bytes)
         result = []
@@ -634,9 +607,9 @@
             instanceId = instance.findtext("instanceId")
             previousState = instance.find("previousState").findtext(
                 "name")
-            shutdownState = instance.find("shutdownState").findtext(
+            currentState = instance.find("currentState").findtext(
                 "name")
-            result.append((instanceId, previousState, shutdownState))
+            result.append((instanceId, previousState, currentState))
         return result
 
     def describe_security_groups(self, xml_bytes):
@@ -708,15 +681,17 @@
         @param xml_bytes: XML bytes with a C{DescribeVolumesResponse} root
             element.
         @return: A list of L{Volume} instances.
+
+        TODO: attachementSetItemResponseType#deleteOnTermination
         """
         root = XML(xml_bytes)
         result = []
         for volume_data in root.find("volumeSet"):
             volume_id = volume_data.findtext("volumeId")
             size = int(volume_data.findtext("size"))
+            snapshot_id = volume_data.findtext("snapshotId")
+            availability_zone = volume_data.findtext("availabilityZone")
             status = volume_data.findtext("status")
-            availability_zone = volume_data.findtext("availabilityZone")
-            snapshot_id = volume_data.findtext("snapshotId")
             create_time = volume_data.findtext("createTime")
             create_time = datetime.strptime(
                 create_time[:19], "%Y-%m-%dT%H:%M:%S")
@@ -726,8 +701,8 @@
             result.append(volume)
             for attachment_data in volume_data.find("attachmentSet"):
                 instance_id = attachment_data.findtext("instanceId")
+                device = attachment_data.findtext("device")
                 status = attachment_data.findtext("status")
-                device = attachment_data.findtext("device")
                 attach_time = attachment_data.findtext("attachTime")
                 attach_time = datetime.strptime(
                     attach_time[:19], "%Y-%m-%dT%H:%M:%S")
@@ -746,10 +721,10 @@
         root = XML(xml_bytes)
         volume_id = root.findtext("volumeId")
         size = int(root.findtext("size"))
+        snapshot_id = root.findtext("snapshotId")
+        availability_zone = root.findtext("availabilityZone")
         status = root.findtext("status")
         create_time = root.findtext("createTime")
-        availability_zone = root.findtext("availabilityZone")
-        snapshot_id = root.findtext("snapshotId")
         create_time = datetime.strptime(
             create_time[:19], "%Y-%m-%dT%H:%M:%S")
         volume = model.Volume(
@@ -763,6 +738,9 @@
         @param xml_bytes: XML bytes with a C{DescribeSnapshotsResponse} root
             element.
         @return: A list of L{Snapshot} instances.
+
+        TODO: ownersSet, restorableBySet, ownerId, volumeSize, description,
+              ownerAlias.
         """
         root = XML(xml_bytes)
         result = []
@@ -786,6 +764,8 @@
         @param xml_bytes: XML bytes with a C{CreateSnapshotResponse} root
             element.
         @return: The L{Snapshot} instance created.
+
+        TODO: ownerId, volumeSize, description.
         """
         root = XML(xml_bytes)
         snapshot_id = root.findtext("snapshotId")
@@ -805,6 +785,8 @@
         @param xml_bytes: XML bytes with a C{AttachVolumeResponse} root
             element.
         @return: a C{dict} with status and attach_time keys.
+
+        TODO: volumeId, instanceId, device
         """
         root = XML(xml_bytes)
         status = root.findtext("status")
@@ -845,7 +827,11 @@
         return model.Keypair(key_name, key_fingerprint, key_material)
 
     def import_keypair(self, xml_bytes, key_material):
-        """Extract the key name and the fingerprint from the result."""
+        """Extract the key name and the fingerprint from the result.
+        
+        TODO: there is no corresponding method in the 2009-11-30 version
+             of the ec2 wsdl. Delete this?
+        """
         keypair_data = XML(xml_bytes)
         key_name = keypair_data.findtext("keyName")
         key_fingerprint = keypair_data.findtext("keyFingerprint")
@@ -881,6 +867,8 @@
         @param xml_bytes: XML bytes with a C{DescribeAvailibilityZonesResponse}
             root element.
         @return: a C{list} of L{AvailabilityZone}.
+
+        TODO: regionName, messageSet
         """
         results = []
         root = XML(xml_bytes)
@@ -900,7 +888,7 @@
                  *args, **kwargs):
         """Create a Query to submit to EC2."""
         super(Query, self).__init__(*args, **kwargs)
-        # Currently, txAWS only supports version 2008-12-01
+        # Currently, txAWS only supports version 2009-11-30
         if api_version is None:
             api_version = version.ec2_api
         self.params = {
@@ -1013,7 +1001,7 @@
     def encode(self, string):
         """Encode a_string as per the canonicalisation encoding rules.
 
-        See the AWS dev reference page 90 (2008-12-01 version).
+        See the AWS dev reference page 186 (2009-11-30 version).
         @return: a_string encoded.
         """
         return quote(string, safe="~")

=== modified file 'txaws/ec2/tests/test_client.py'
--- txaws/ec2/tests/test_client.py	2011-08-29 19:51:50 +0000
+++ txaws/ec2/tests/test_client.py	2012-01-19 04:28:24 +0000
@@ -641,37 +641,6 @@
         d = self.assertFailure(failure, EC2Error)
         return d.addCallback(check_error)
 
-    def test_authorize_security_group_with_user_group_pair(self):
-        """
-        L{EC2Client.authorize_security_group} returns a C{Deferred} that
-        eventually fires with a true value, indicating the success of the
-        operation. There are two ways to use the method: set another group's
-        IP permissions or set new IP permissions; this test checks the first
-        way.
-        """
-        class StubQuery(object):
-
-            def __init__(stub, action="", creds=None, endpoint=None,
-                         other_params={}):
-                self.assertEqual(action, "AuthorizeSecurityGroupIngress")
-                self.assertEqual(creds.access_key, "foo")
-                self.assertEqual(creds.secret_key, "bar")
-                self.assertEqual(other_params, {
-                    "GroupName": "WebServers",
-                    "SourceSecurityGroupName": "AppServers",
-                    "SourceSecurityGroupOwnerId": "123456789123",
-                    })
-
-            def submit(self):
-                return succeed(payload.sample_authorize_security_group)
-
-        creds = AWSCredentials("foo", "bar")
-        ec2 = client.EC2Client(creds, query_factory=StubQuery)
-        d = ec2.authorize_security_group(
-            "WebServers", source_group_name="AppServers",
-            source_group_owner_id="123456789123")
-        return self.assertTrue(d)
-
     def test_authorize_security_group_with_ip_permissions(self):
         """
         L{EC2Client.authorize_security_group} returns a C{Deferred} that
@@ -725,35 +694,6 @@
                 ("You must specify either both group parameters or all the "
                  "ip parameters."))
 
-    def test_authorize_group_permission(self):
-        """
-        L{EC2Client.authorize_group_permission} returns a C{Deferred}
-        that eventually fires with a true value, indicating the success of the
-        operation.
-        """
-        class StubQuery(object):
-
-            def __init__(stub, action="", creds=None, endpoint=None,
-                         other_params={}):
-                self.assertEqual(action, "AuthorizeSecurityGroupIngress")
-                self.assertEqual(creds.access_key, "foo")
-                self.assertEqual(creds.secret_key, "bar")
-                self.assertEqual(other_params, {
-                    "GroupName": "WebServers",
-                    "SourceSecurityGroupName": "AppServers",
-                    "SourceSecurityGroupOwnerId": "123456789123",
-                    })
-
-            def submit(self):
-                return succeed(payload.sample_authorize_security_group)
-
-        creds = AWSCredentials("foo", "bar")
-        ec2 = client.EC2Client(creds, query_factory=StubQuery)
-        d = ec2.authorize_group_permission(
-            "WebServers", source_group_name="AppServers",
-            source_group_owner_id="123456789123")
-        return self.assertTrue(d)
-
     def test_authorize_ip_permission(self):
         """
         L{EC2Client.authorize_ip_permission} returns a C{Deferred} that
@@ -783,37 +723,6 @@
             cidr_ip="0.0.0.0/0")
         return self.assertTrue(d)
 
-    def test_revoke_security_group_with_user_group_pair(self):
-        """
-        L{EC2Client.revoke_security_group} returns a C{Deferred} that
-        eventually fires with a true value, indicating the success of the
-        operation. There are two ways to use the method: set another group's
-        IP permissions or set new IP permissions; this test checks the first
-        way.
-        """
-        class StubQuery(object):
-
-            def __init__(stub, action="", creds=None, endpoint=None,
-                         other_params={}):
-                self.assertEqual(action, "RevokeSecurityGroupIngress")
-                self.assertEqual(creds.access_key, "foo")
-                self.assertEqual(creds.secret_key, "bar")
-                self.assertEqual(other_params, {
-                    "GroupName": "WebServers",
-                    "SourceSecurityGroupName": "AppServers",
-                    "SourceSecurityGroupOwnerId": "123456789123",
-                    })
-
-            def submit(self):
-                return succeed(payload.sample_revoke_security_group)
-
-        creds = AWSCredentials("foo", "bar")
-        ec2 = client.EC2Client(creds, query_factory=StubQuery)
-        d = ec2.revoke_security_group(
-            "WebServers", source_group_name="AppServers",
-            source_group_owner_id="123456789123")
-        return self.assertTrue(d)
-
     def test_revoke_security_group_with_ip_permissions(self):
         """
         L{EC2Client.revoke_security_group} returns a C{Deferred} that
@@ -867,35 +776,6 @@
                 ("You must specify either both group parameters or all the "
                  "ip parameters."))
 
-    def test_revoke_group_permission(self):
-        """
-        L{EC2Client.revoke_group_permission} returns a C{Deferred} that
-        eventually fires with a true value, indicating the success of the
-        operation.
-        """
-        class StubQuery(object):
-
-            def __init__(stub, action="", creds=None, endpoint=None,
-                         other_params={}):
-                self.assertEqual(action, "RevokeSecurityGroupIngress")
-                self.assertEqual(creds.access_key, "foo")
-                self.assertEqual(creds.secret_key, "bar")
-                self.assertEqual(other_params, {
-                    "GroupName": "WebServers",
-                    "SourceSecurityGroupName": "AppServers",
-                    "SourceSecurityGroupOwnerId": "123456789123",
-                    })
-
-            def submit(self):
-                return succeed(payload.sample_revoke_security_group)
-
-        creds = AWSCredentials("foo", "bar")
-        ec2 = client.EC2Client(creds, query_factory=StubQuery)
-        d = ec2.revoke_group_permission(
-            "WebServers", source_group_name="AppServers",
-            source_group_owner_id="123456789123")
-        return self.assertTrue(d)
-
     def test_revoke_ip_permission(self):
         """
         L{EC2Client.revoke_ip_permission} returns a C{Deferred} that
@@ -1288,7 +1168,7 @@
                 self.assertEqual("foo", creds)
                 self.assertEquals(
                     other_params,
-                    {"KeyPair.1": "gsg-keypair"})
+                    {"KeyName.1": "gsg-keypair"})
 
             def submit(self):
                 return succeed(payload.sample_single_describe_keypairs_result)
@@ -1553,7 +1433,7 @@
             {"AWSAccessKeyId": "foo",
              "Action": "DescribeInstances",
              "SignatureVersion": "2",
-             "Version": "2008-12-01"})
+             "Version": "2009-11-30"})
 
     def test_init_other_args_are_params(self):
         query = client.Query(
@@ -1567,7 +1447,7 @@
              "InstanceId.0": "12345",
              "SignatureVersion": "2",
              "Timestamp": "2007-11-12T13:14:15Z",
-             "Version": "2008-12-01"})
+             "Version": "2009-11-30"})
 
     def test_no_timestamp_if_expires_in_other_params(self):
         """
@@ -1585,7 +1465,7 @@
              "Action": "DescribeInstances",
              "SignatureVersion": "2",
              "Expires": "2007-11-12T13:14:15Z",
-             "Version": "2008-12-01"})
+             "Version": "2009-11-30"})
 
     def test_sign(self):
         query = client.Query(
@@ -1593,7 +1473,7 @@
             endpoint=self.endpoint,
             time_tuple=(2007, 11, 12, 13, 14, 15, 0, 0, 0))
         query.sign()
-        self.assertEqual("aDmLr0Ktjsmt17UJD/EZf6DrfKWT1JW0fq2FDUCOPic=",
+        self.assertEqual("G4c2NtQaFNhWWT8EWPVIIOpHVr0mGUYwJVYss9krsMU=",
             query.params["Signature"])
 
     def test_old_sign(self):
@@ -1604,7 +1484,7 @@
             other_params={"SignatureVersion": "1"})
         query.sign()
         self.assertEqual(
-            "MBKyHoxqCd/lBQLVkCZYpwAtNJg=", query.params["Signature"])
+            "9xP+PIs/3QXW+4mWX6WGR4nGqfE=", query.params["Signature"])
 
     def test_unsupported_sign(self):
         query = client.Query(
@@ -1743,13 +1623,13 @@
                             "argwithnovalue": "",
                             "SignatureVersion": "2",
                             "Timestamp": iso8601time(time_tuple),
-                            "Version": "2008-12-01",
+                            "Version": "2009-11-30",
                             "Action": "DescribeInstances",
                             "InstanceId.1": "i-1234"})
         expected_params = ("AWSAccessKeyId=foo&Action=DescribeInstances"
             "&InstanceId.1=i-1234"
             "&SignatureVersion=2&"
-            "Timestamp=2007-11-12T13%3A14%3A15Z&Version=2008-12-01&"
+            "Timestamp=2007-11-12T13%3A14%3A15Z&Version=2009-11-30&"
             "argwithnovalue=&fu%20n=g%2Fames")
         self.assertEqual(expected_params, signature.get_canonical_query_params())
 
@@ -1795,14 +1675,14 @@
         self.params.update({"AWSAccessKeyId": "foo",
                             "fun": "games",
                             "SignatureVersion": "2",
-                            "Version": "2008-12-01",
+                            "Version": "2009-11-30",
                             "Action": "DescribeInstances"})
 
         self.assertEqual([
             ("AWSAccessKeyId", "foo"),
             ("Action", "DescribeInstances"),
             ("SignatureVersion", "2"),
-            ("Version", "2008-12-01"),
+            ("Version", "2009-11-30"),
             ("fun", "games"),
             ], signature.sorted_params())
 

=== modified file 'txaws/server/call.py'
--- txaws/server/call.py	2011-05-17 07:42:21 +0000
+++ txaws/server/call.py	2012-01-19 04:28:24 +0000
@@ -20,7 +20,7 @@
        calling the C{parse} method.
     @ivar rest: Extra parameters not included in the given arguments schema,
        it will be available after calling the L{parse} method.
-    @ivar version: The version of the API call. Defaults to 2008-12-01.
+    @ivar version: The version of the API call. Defaults to 2009-11-30.
     """
 
     def __init__(self, raw_params=None, principal=None, action=None,

=== modified file 'txaws/server/tests/test_call.py'
--- txaws/server/tests/test_call.py	2011-05-14 05:22:41 +0000
+++ txaws/server/tests/test_call.py	2012-01-19 04:28:24 +0000
@@ -8,7 +8,7 @@
     def test_default_version(self):
         """
         If no version is explicitly requested, C{version} is set to
-        2008-12-01, which is the earliest version we support.
+        2009-11-30, which is the earliest version we support.
         """
         call = Call()
-        self.assertEqual(call.version, "2008-12-01")
+        self.assertEqual(call.version, "2009-11-30")

=== modified file 'txaws/testing/payload.py'
--- txaws/testing/payload.py	2011-08-29 19:51:50 +0000
+++ txaws/testing/payload.py	2012-01-19 04:28:24 +0000
@@ -153,10 +153,10 @@
   <instancesSet>
     <item>
       <instanceId>i-1234</instanceId>
-      <shutdownState>
+      <currentState>
         <code>32</code>
         <name>shutting-down</name>
-      </shutdownState>
+      </currentState>
       <previousState>
         <code>16</code>
         <name>running</name>
@@ -164,10 +164,10 @@
     </item>
     <item>
       <instanceId>i-5678</instanceId>
-      <shutdownState>
+      <currentState>
         <code>32</code>
         <name>shutting-down</name>
-      </shutdownState>
+      </currentState>
       <previousState>
         <code>32</code>
         <name>shutting-down</name>

=== modified file 'txaws/version.py'
--- txaws/version.py	2011-11-29 08:17:54 +0000
+++ txaws/version.py	2012-01-19 04:28:24 +0000
@@ -1,3 +1,3 @@
 txaws = "0.2.2"
-ec2_api = "2008-12-01"
+ec2_api = "2009-11-30"
 s3_api = "2006-03-01"

=== added directory 'wsdl'
=== added file 'wsdl/2009-11-30.ec2.wsdl'
--- wsdl/2009-11-30.ec2.wsdl	1970-01-01 00:00:00 +0000
+++ wsdl/2009-11-30.ec2.wsdl	2012-01-19 04:28:24 +0000
@@ -0,0 +1,4668 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
+  xmlns:xs="http://www.w3.org/2001/XMLSchema"; xmlns:tns="http://ec2.amazonaws.com/doc/2009-11-30/";
+  targetNamespace="http://ec2.amazonaws.com/doc/2009-11-30/";>
+
+  <types>
+		<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
+		           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+		           xmlns:tns="http://ec2.amazonaws.com/doc/2009-11-30/";
+		           targetNamespace="http://ec2.amazonaws.com/doc/2009-11-30/";    
+		           elementFormDefault="qualified">
+		  
+		  <xs:annotation>
+		    <xs:documentation xml:lang="en">
+		      
+		    </xs:documentation>
+		  </xs:annotation>
+		  
+		  <!-- CreateImage -->
+		
+		  <xs:element name='CreateImage' type='tns:CreateImageType' />
+		  
+		  <xs:complexType name='CreateImageType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+			  <xs:element name='name' type='xs:string' />
+		      <xs:element name='description' type='xs:string' minOccurs='0' />
+		      <xs:element name='noReboot' type='xs:boolean' minOccurs='0' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:element name='CreateImageResponse' type='tns:CreateImageResponseType' />
+		
+		  <xs:complexType name='CreateImageResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='imageId' type='xs:string' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  
+		  <!-- RegisterImage -->
+		  
+		  <xs:complexType name='ProductCodeType'>
+		    <xs:sequence>
+		      <xs:element name='productCode' type='xs:string' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='ProductCodeSetType'>
+		    <xs:sequence>
+		      <xs:element name='item' type='tns:ProductCodeType' minOccurs='0' maxOccurs='unbounded' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		    
+		  <xs:element name='RegisterImage' type='tns:RegisterImageType' />
+		  <xs:element name='RegisterImageResponse' type='tns:RegisterImageResponseType' />
+		  <xs:complexType name='RegisterImageType'>
+		    <xs:sequence>
+		      <xs:element name='imageLocation' type='xs:string' minOccurs='0' />
+			  <xs:element name='name' type='xs:string' />
+		      <xs:element name='description' type='xs:string' minOccurs='0' />
+		      <xs:element name='architecture' type='xs:string' minOccurs='0' />
+		      <xs:element name='kernelId' type='xs:string' minOccurs='0' />
+		      <xs:element name='ramdiskId' type='xs:string' minOccurs='0' />
+		      <xs:element name='rootDeviceName' type='xs:string' minOccurs='0' />
+		      <xs:element name='blockDeviceMapping' type='tns:BlockDeviceMappingType' minOccurs='0' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='RegisterImageResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='imageId' type='xs:string' />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeregisterImage request definitions -->
+		
+		  <xs:element name="DeregisterImage" type="tns:DeregisterImageType"/>
+		
+		  <xs:complexType name="DeregisterImageType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeregisterImage response definitions -->
+		
+		  <xs:element name="DeregisterImageResponse" type="tns:DeregisterImageResponseType"/>
+		
+		  <xs:complexType name="DeregisterImageResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateKeyPair request definitions -->
+		  
+		  <xs:element name="CreateKeyPair" type="tns:CreateKeyPairType"/>
+		
+		  <xs:complexType name="CreateKeyPairType">
+		    <xs:sequence>
+		      <xs:element name="keyName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateKeyPair response definitions -->
+		
+		  <xs:element name="CreateKeyPairResponse" type="tns:CreateKeyPairResponseType"/>
+		  
+		  <xs:complexType name="CreateKeyPairResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="keyName" type="xs:string"/>
+		      <xs:element name="keyFingerprint" type="xs:string"/>
+		      <xs:element name="keyMaterial" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteKeyPair request definitions -->
+		  
+		  <xs:element name="DeleteKeyPair" type="tns:DeleteKeyPairType" />
+		
+		  <xs:complexType name="DeleteKeyPairType">
+		    <xs:sequence>
+		      <xs:element name="keyName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteKeyPair response definitions -->
+		
+		  <xs:element name="DeleteKeyPairResponse" type="tns:DeleteKeyPairResponseType"/>
+		  
+		  <xs:complexType name="DeleteKeyPairResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeKeyPairs Request definitions -->
+		
+		  <xs:element name="DescribeKeyPairs" type="tns:DescribeKeyPairsType"/>
+		
+		  <xs:complexType name="DescribeKeyPairsType">
+		    <xs:sequence>
+		      <xs:element name="keySet" type="tns:DescribeKeyPairsInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeKeyPairsInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeKeyPairsItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeKeyPairsItemType">
+		    <xs:sequence>
+		      <xs:element name="keyName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeKeyPairs Response definitions -->
+		
+		  <xs:element name="DescribeKeyPairsResponse" type="tns:DescribeKeyPairsResponseType"/>
+		  
+		  <xs:complexType name="DescribeKeyPairsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="keySet" type="tns:DescribeKeyPairsResponseInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeKeyPairsResponseInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeKeyPairsResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeKeyPairsResponseItemType">
+		    <xs:sequence>
+		      <xs:element name="keyName" type="xs:string" />
+		      <xs:element name="keyFingerprint" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- RunInstances request definitions -->
+		
+		  <xs:element name="RunInstances" type="tns:RunInstancesType"/>
+		
+		  <xs:complexType name="RunInstancesType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		      <xs:element name="minCount" type="xs:int"/>
+		      <xs:element name="maxCount" type="xs:int"/>
+		      <xs:element name="keyName" type="xs:string" minOccurs="0" />
+		      <xs:element name="groupSet" type="tns:GroupSetType"/>
+		      <xs:element name="additionalInfo" type="xs:string" minOccurs="0"/>
+		      <xs:element name="userData" type="tns:UserDataType" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="addressingType" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="placement" type="tns:PlacementRequestType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="kernelId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="ramdiskId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="blockDeviceMapping" type="tns:BlockDeviceMappingType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="monitoring" type="tns:MonitoringInstanceType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="subnetId" type="xs:string" minOccurs="0" maxOccurs="1" />
+			  <xs:element name="disableApiTermination" type="xs:boolean" minOccurs="0" maxOccurs="1" />
+			  <xs:element name="instanceInitiatedShutdownBehavior" type="xs:string" minOccurs="0" maxOccurs="1" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="GroupSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:GroupItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="GroupItemType">
+		    <xs:sequence>
+		      <xs:element name="groupId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="UserDataType" mixed="true">
+		    <xs:sequence>
+		      <xs:element name="data" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		    <xs:attribute name="version" type="xs:string" use="required" fixed="1.0"/>
+		    <xs:attribute name="encoding" type="xs:string" use="required" fixed="base64"/>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="BlockDeviceMappingType"> 
+		    <xs:sequence> 
+		      <xs:element name="item" type="tns:BlockDeviceMappingItemType" minOccurs="0" maxOccurs="unbounded" /> 
+		    </xs:sequence> 
+		  </xs:complexType> 
+		
+		  <xs:complexType name="BlockDeviceMappingItemType"> 
+		    <xs:sequence> 
+		      <xs:element name="deviceName" type="xs:string"/> 
+			  <xs:choice>
+			    <xs:element name="virtualName" type="xs:string"/> 
+			    <xs:element name="ebs" type="tns:EbsBlockDeviceType"/>
+			    <xs:element name="noDevice" type="tns:EmptyElementType"/>
+			  </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType> 
+		  
+		  <xs:complexType name="EbsBlockDeviceType">
+		    <xs:sequence>
+			  <xs:element name="snapshotId" type="xs:string" minOccurs="0"/>
+			  <xs:element name="volumeSize" type="xs:int" minOccurs="0"/>
+			  <xs:element name="deleteOnTermination" type="xs:boolean" minOccurs="0"/>
+			</xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="PlacementRequestType"> 
+		    <xs:sequence> 
+		      <xs:element name="availabilityZone" type="xs:string" minOccurs="0" maxOccurs="1" /> 
+		    </xs:sequence> 
+		  </xs:complexType> 
+		
+		  <xs:complexType name="MonitoringInstanceType"> 
+		    <xs:sequence> 
+		      <xs:element name="enabled" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
+		    </xs:sequence> 
+		  </xs:complexType>
+		  
+		  <!-- RunInstances response definitions -->
+		
+		  <xs:element name="RunInstancesResponse" type="tns:RunInstancesResponseType"/>
+		  
+		  <xs:complexType name="RunInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="reservationId" type="xs:string"/>
+		      <xs:element name="ownerId" type="xs:string"/>
+		      <xs:element name="groupSet" type="tns:GroupSetType"/>
+		      <xs:element name="instancesSet" type="tns:RunningInstancesSetType"/>
+		      <xs:element name="requesterId" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ReservationInfoType">
+		    <xs:sequence>
+		      <xs:element name="reservationId" type="xs:string"/>
+		      <xs:element name="ownerId" type="xs:string"/>
+		      <xs:element name="groupSet" type="tns:GroupSetType"/>
+		      <xs:element name="instancesSet" type="tns:RunningInstancesSetType"/>
+		      <xs:element name="requesterId" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RunningInstancesSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:RunningInstancesItemType" minOccurs="1" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RunningInstancesItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="imageId" type="xs:string" minOccurs="0" />
+		      <xs:element name="instanceState" type="tns:InstanceStateType"/>
+		      <xs:element name="privateDnsName" type="xs:string"/>
+		      <xs:element name="dnsName" type="xs:string" minOccurs="0" />
+		      <xs:element name="reason" type="xs:string" minOccurs="0"/>
+		      <xs:element name="keyName" type="xs:string" minOccurs="0"/>
+		      <xs:element name="amiLaunchIndex" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="productCodes" type="tns:ProductCodesSetType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="instanceType" type="xs:string"/>
+		      <xs:element name="launchTime" type="xs:dateTime" />
+		      <xs:element name="placement" type="tns:PlacementResponseType" minOccurs="0"/>
+		      <xs:element name="kernelId" type="xs:string" minOccurs="0"/>
+		      <xs:element name="ramdiskId" type="xs:string" minOccurs="0"/>
+		      <xs:element name="platform" type="xs:string" minOccurs="0"/>
+		      <xs:element name="monitoring" type="tns:InstanceMonitoringStateType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="subnetId" type="xs:string" minOccurs="0" />
+		      <xs:element name="vpcId" type="xs:string" minOccurs="0" />
+		      <xs:element name="privateIpAddress" type="xs:string" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="ipAddress" type="xs:string" minOccurs="0" maxOccurs="1" />
+		      <xs:element name='stateReason' type='tns:StateReasonType' minOccurs="0" />
+		      <xs:element name='architecture' type='xs:string' minOccurs='0' />
+			  <xs:element name='rootDeviceType' type='xs:string' minOccurs='0' />
+		      <xs:element name='rootDeviceName' type='xs:string' minOccurs='0' />
+			  <xs:element name='blockDeviceMapping' type='tns:InstanceBlockDeviceMappingResponseType' minOccurs='0' />
+		      <xs:element name="instanceLifecycle" type="xs:string" minOccurs="0" />
+		      <xs:element name="spotInstanceRequestId" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="PlacementResponseType">
+		    <xs:sequence> 
+		      <xs:element name="availabilityZone" type="xs:string" /> 
+		    </xs:sequence> 
+		  </xs:complexType> 
+		
+		  <xs:complexType name="StateReasonType">
+		    <xs:sequence>
+		      <xs:element name="code" type="xs:string"/>
+		      <xs:element name="message" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name='InstanceBlockDeviceMappingResponseType'>
+		    <xs:sequence>
+		      <xs:element name='item' type='tns:InstanceBlockDeviceMappingResponseItemType' minOccurs='0' maxOccurs='unbounded' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name='InstanceBlockDeviceMappingResponseItemType'>
+		    <xs:sequence>
+		      <xs:element name='deviceName' type='xs:string' />
+			  <xs:choice>
+			    <xs:element name='ebs' type='tns:EbsInstanceBlockDeviceMappingResponseType' />
+			  </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name='EbsInstanceBlockDeviceMappingResponseType'>
+		    <xs:sequence>
+			  <xs:element name='volumeId' type='xs:string' />
+			  <xs:element name='status' type='xs:string' />
+			  <xs:element name='attachTime' type='xs:dateTime' />
+			  <xs:element name='deleteOnTermination' type='xs:boolean' minOccurs='0' />
+			</xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- GetConsoleOutput request definitions -->
+		
+		  <xs:element name="GetConsoleOutput" type="tns:GetConsoleOutputType"/>
+		
+		  <xs:complexType name="GetConsoleOutputType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- GetConsoleOutput response definitions -->
+		
+		  <xs:element name="GetConsoleOutputResponse" type="tns:GetConsoleOutputResponseType"/>
+		
+		  <xs:complexType name="GetConsoleOutputResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string" />
+		      <xs:element name="timestamp" type="xs:dateTime" />
+		      <xs:element name="output" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- GetPasswordData request definitions -->
+		
+		  <xs:element name="GetPasswordData" type="tns:GetPasswordDataType"/>
+		
+		  <xs:complexType name="GetPasswordDataType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- GetPasswordData response definitions -->
+		
+		  <xs:element name="GetPasswordDataResponse" type="tns:GetPasswordDataResponseType"/>
+		
+		  <xs:complexType name="GetPasswordDataResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string" />
+		      <xs:element name="timestamp" type="xs:dateTime" />
+		      <xs:element name="passwordData" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- TerminateInstances -->
+		
+		  <xs:complexType name='InstanceIdType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='InstanceIdSetType'>
+		    <xs:sequence>
+		      <xs:element name='item' type='tns:InstanceIdType' minOccurs='0' maxOccurs='unbounded' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='InstanceStateChangeType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+		      <xs:element name='currentState' type='tns:InstanceStateType' />
+		      <xs:element name='previousState' type='tns:InstanceStateType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='InstanceStateChangeSetType'>
+		    <xs:sequence>
+		      <xs:element name='item' type='tns:InstanceStateChangeType' minOccurs='0' maxOccurs='unbounded' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:element name='TerminateInstances' type='tns:TerminateInstancesType' />
+		  <xs:element name='TerminateInstancesResponse' type='tns:TerminateInstancesResponseType' />
+		  <xs:complexType name='TerminateInstancesType'>
+		    <xs:sequence>
+		      <xs:element name='instancesSet' type='tns:InstanceIdSetType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='TerminateInstancesResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='instancesSet' type='tns:InstanceStateChangeSetType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  
+		  <xs:complexType name='InstanceBlockDeviceMappingType'>
+		    <xs:sequence>
+		      <xs:element name='item' type='tns:InstanceBlockDeviceMappingItemType' minOccurs='0' maxOccurs='unbounded' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name='InstanceBlockDeviceMappingItemType'>
+		    <xs:sequence>
+		      <xs:element name='deviceName' type='xs:string' />
+			  <xs:choice>
+			    <xs:element name='virtualName' type='xs:string' />
+			    <xs:element name='ebs' type='tns:InstanceEbsBlockDeviceType' />
+			    <xs:element name='noDevice' type='tns:EmptyElementType' />
+			  </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name='InstanceEbsBlockDeviceType'>
+		    <xs:sequence>
+			  <xs:element name='volumeId' type='xs:string' />
+			  <xs:element name='deleteOnTermination' type='xs:boolean' minOccurs='0' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- Stop instances -->
+		
+		  <xs:element name='StopInstances' type='tns:StopInstancesType' />
+		  <xs:element name='StopInstancesResponse' type='tns:StopInstancesResponseType' />
+		  <xs:complexType name='StopInstancesType'>
+		    <xs:sequence>
+		      <xs:element name='instancesSet' type='tns:InstanceIdSetType' />
+		      <xs:element name='force' type='xs:boolean' minOccurs='0' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='StopInstancesResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='instancesSet' type='tns:InstanceStateChangeSetType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!--  Start instances -->
+		  <xs:element name='StartInstances' type='tns:StartInstancesType' />
+		  <xs:element name='StartInstancesResponse' type='tns:StartInstancesResponseType' />
+		   <xs:complexType name='StartInstancesType'>
+		    <xs:sequence>
+		      <xs:element name='instancesSet' type='tns:InstanceIdSetType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name='StartInstancesResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='instancesSet' type='tns:InstanceStateChangeSetType' />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- RebootInstances request definitions -->
+		  <xs:element name="RebootInstances" type="tns:RebootInstancesType"/>
+		
+		  <xs:complexType name="RebootInstancesType">
+		    <xs:sequence>
+		      <xs:element name="instancesSet" type="tns:RebootInstancesInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="RebootInstancesInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:RebootInstancesItemType" minOccurs="1" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RebootInstancesItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- RebootInstances response definitions -->
+		
+		  <xs:element name="RebootInstancesResponse" type="tns:RebootInstancesResponseType"/>
+		
+		  <xs:complexType name="RebootInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeInstances Request definitions -->
+		
+		  <xs:element name="DescribeInstances" type="tns:DescribeInstancesType"/>
+		
+		  <xs:complexType name="DescribeInstancesType">
+		    <xs:sequence>
+		      <xs:element name="instancesSet" type="tns:DescribeInstancesInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeInstancesInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeInstancesItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeInstancesItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeInstances Response definitions -->
+		
+		  <xs:element name="DescribeInstancesResponse" type="tns:DescribeInstancesResponseType"/>
+		  
+		  <xs:complexType name="DescribeInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="reservationSet" type="tns:ReservationSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ReservationSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:ReservationInfoType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeImages Request definitions -->
+		
+		  <xs:element name="DescribeImages" type="tns:DescribeImagesType"/>
+		
+		  <xs:complexType name="DescribeImagesType">
+		    <xs:sequence>
+		      <xs:element name="executableBySet" type="tns:DescribeImagesExecutableBySetType" minOccurs="0"/>
+		      <xs:element name="imagesSet" type="tns:DescribeImagesInfoType"/>
+		      <xs:element name="ownersSet" type="tns:DescribeImagesOwnersType" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeImagesInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeImagesItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeImagesItemType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="DescribeImagesOwnersType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeImagesOwnerType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeImagesOwnerType">
+		    <xs:sequence>
+		      <xs:element name="owner" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="DescribeImagesExecutableBySetType" >
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeImagesExecutableByType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="DescribeImagesExecutableByType" >
+		    <xs:sequence>
+		      <xs:element name="user" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeImages Response definitions -->
+		
+		  <xs:element name="DescribeImagesResponse" type="tns:DescribeImagesResponseType"/>
+		  
+		  <xs:complexType name="DescribeImagesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="imagesSet" type="tns:DescribeImagesResponseInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeImagesResponseInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeImagesResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeImagesResponseItemType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string" />
+		      <xs:element name="imageLocation" type="xs:string" minOccurs="0" />
+		      <xs:element name="imageState" type="xs:string" />
+		      <xs:element name="imageOwnerId" type="xs:string" />
+		      <xs:element name="isPublic" type="xs:boolean" />
+		      <xs:element name="productCodes" type="tns:ProductCodesSetType" minOccurs="0" />
+		      <xs:element name="architecture" type="xs:string"  minOccurs="0"/>
+		      <xs:element name="imageType" type="xs:string"  minOccurs="0"/>
+		      <xs:element name="kernelId" type="xs:string"  minOccurs="0"/>
+		      <xs:element name="ramdiskId" type="xs:string"  minOccurs="0"/>
+		      <xs:element name="platform" type="xs:string"  minOccurs="0"/>
+			  <xs:element name="stateReason" type="tns:StateReasonType" minOccurs="0"/>
+		      <xs:element name="imageOwnerAlias" type="xs:string" minOccurs="0"/>
+			  <xs:element name="name" type="xs:string" minOccurs="0" />
+		      <xs:element name="description" type="xs:string"  minOccurs="0"/>
+			  <xs:element name='rootDeviceType' type='xs:string' minOccurs='0' />
+		      <xs:element name="rootDeviceName" type="xs:string" minOccurs="0" />
+		      <xs:element name="blockDeviceMapping" type="tns:BlockDeviceMappingType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateSecurityGroup Request definitions -->
+		
+		  <xs:element name="CreateSecurityGroup" 
+		              type="tns:CreateSecurityGroupType"/>
+		
+		  <xs:complexType name="CreateSecurityGroupType">
+		    <xs:sequence>
+		      <xs:element name="groupName" type="xs:string"/>
+		      <xs:element name="groupDescription" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateSecurityGroup Response definitions -->
+		
+		  <xs:element name="CreateSecurityGroupResponse" 
+		              type="tns:CreateSecurityGroupResponseType"/>
+		
+		  <xs:complexType name="CreateSecurityGroupResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteSecurityGroup Request definitions -->
+		
+		  <xs:element name="DeleteSecurityGroup" 
+		              type="tns:DeleteSecurityGroupType"/>
+		
+		  <xs:complexType name="DeleteSecurityGroupType">
+		    <xs:sequence>
+		      <xs:element name="groupName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteSecurityGroup Response definitions -->
+		
+		  <xs:element name="DeleteSecurityGroupResponse" 
+		              type="tns:DeleteSecurityGroupResponseType"/>
+		
+		  <xs:complexType name="DeleteSecurityGroupResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeSecurityGroups Request definitions -->
+		
+		  <xs:element name="DescribeSecurityGroups" 
+		              type="tns:DescribeSecurityGroupsType"/>
+		
+		  <xs:complexType name="DescribeSecurityGroupsType">
+		    <xs:sequence>
+		      <xs:element name="securityGroupSet" type="tns:DescribeSecurityGroupsSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSecurityGroupsSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeSecurityGroupsSetItemType"
+		                  minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSecurityGroupsSetItemType">
+		    <xs:sequence>
+		      <xs:element name="groupName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeSecurityGroups Response definitions -->
+		
+		  <xs:element name="DescribeSecurityGroupsResponse" 
+		              type="tns:DescribeSecurityGroupsResponseType"/>
+		
+		  <xs:complexType name="DescribeSecurityGroupsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="securityGroupInfo" type="tns:SecurityGroupSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="IpPermissionSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:IpPermissionType"
+		                  minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="IpPermissionType">
+		    <xs:sequence>
+		      <xs:element name="ipProtocol" type="xs:string"/>
+		      <xs:element name="fromPort" type="xs:int"/>
+		      <xs:element name="toPort" type="xs:int"/>
+		      <xs:element name="groups" type="tns:UserIdGroupPairSetType"/>
+		      <xs:element name="ipRanges" type="tns:IpRangeSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="IpRangeSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:IpRangeItemType"
+		                  minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="IpRangeItemType">
+		    <xs:sequence>
+		      <xs:element name="cidrIp" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="UserIdGroupPairSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:UserIdGroupPairType" 
+		                  minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="UserIdGroupPairType">
+		    <xs:sequence>
+		      <xs:element name="userId" type="xs:string"/>
+		      <xs:element name="groupName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SecurityGroupSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SecurityGroupItemType" 
+		                  minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SecurityGroupItemType">
+		    <xs:sequence>
+		      <xs:element name="ownerId" type="xs:string"/>
+		      <xs:element name="groupName" type="xs:string"/>
+		      <xs:element name="groupDescription" type="xs:string"/>      
+		      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AuthorizeSecurityGroupIngress Request definitions -->
+		
+		
+		  <xs:element name="AuthorizeSecurityGroupIngress" 
+		              type="tns:AuthorizeSecurityGroupIngressType"/>
+		
+		  <xs:complexType name="AuthorizeSecurityGroupIngressType">
+		    <xs:sequence>
+		      <xs:element name="userId" type="xs:string"/>
+		      <xs:element name="groupName" type="xs:string"/>
+		      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AuthorizeSecurityGroupIngress Response definitions -->
+		
+		  <xs:element name="AuthorizeSecurityGroupIngressResponse" 
+		              type="tns:AuthorizeSecurityGroupIngressResponseType"/>
+		
+		  <xs:complexType name="AuthorizeSecurityGroupIngressResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- RevokeSecurityGroupIngress Request definitions -->
+		
+		
+		  <xs:element name="RevokeSecurityGroupIngress" 
+		              type="tns:RevokeSecurityGroupIngressType"/>
+		
+		  <xs:complexType name="RevokeSecurityGroupIngressType">
+		    <xs:sequence>
+		      <xs:element name="userId" type="xs:string"/>
+		      <xs:element name="groupName" type="xs:string"/>
+		      <xs:element name="ipPermissions" type="tns:IpPermissionSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- RevokeSecurityGroupIngress Response definitions -->
+		
+		  <xs:element name="RevokeSecurityGroupIngressResponse" 
+		              type="tns:RevokeSecurityGroupIngressResponseType"/>
+		
+		  <xs:complexType name="RevokeSecurityGroupIngressResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- Instance state type definition -->
+		
+		  <xs:complexType name="InstanceStateType">
+		    <xs:sequence>
+		      <xs:element name="code" type="xs:int"/>
+		      <xs:element name="name" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- ModifyInstanceAttribute Definitions -->
+		  
+		  <xs:element name='ModifyInstanceAttribute' type='tns:ModifyInstanceAttributeType' />
+		 
+		  <xs:complexType name='ModifyInstanceAttributeType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+			  <xs:choice>
+		        <xs:element name='instanceType' type='tns:AttributeValueType' />
+		        <xs:element name='kernel' type='tns:AttributeValueType' />
+		        <xs:element name='ramdisk' type='tns:AttributeValueType' />
+				<xs:element name="userData" type="tns:AttributeValueType"/>
+				<xs:element name='disableApiTermination' type='tns:AttributeBooleanValueType' />
+				<xs:element name='instanceInitiatedShutdownBehavior' type='tns:AttributeValueType' />
+				<xs:element name="blockDeviceMapping" type="tns:InstanceBlockDeviceMappingType"/>
+			  </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		
+		  <!-- ModifyInstanceAttributeResponse Definitions -->  
+		  
+		  <xs:element name='ModifyInstanceAttributeResponse' type='tns:ModifyInstanceAttributeResponseType' />
+		 
+		  <xs:complexType name='ModifyInstanceAttributeResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='return' type='xs:boolean' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- ResetImageAttribute Definitions -->
+				  
+		  <xs:element name='ResetInstanceAttribute' type='tns:ResetInstanceAttributeType' />
+		
+		  <xs:complexType name='ResetInstanceAttributeType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+		      <xs:group ref='tns:ResetInstanceAttributesGroup'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:group name='ResetInstanceAttributesGroup' >
+		    <xs:choice>
+		      <xs:element name='kernel' type='tns:EmptyElementType' />
+		      <xs:element name='ramdisk' type='tns:EmptyElementType' />
+		    </xs:choice>
+		  </xs:group>
+		  
+		  <!-- ResetInstanceAttributeResponse Definitions -->
+		  
+		  <xs:element name='ResetInstanceAttributeResponse' type='tns:ResetInstanceAttributeResponseType' />
+		  
+		  <xs:complexType name='ResetInstanceAttributeResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='return' type='xs:boolean' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- DescribeInstanceAttribute Definitions -->
+		  
+		  <xs:element name='DescribeInstanceAttribute' type='tns:DescribeInstanceAttributeType' />
+		  
+		  <xs:complexType name='DescribeInstanceAttributeType'>
+		    <xs:sequence>
+		      <xs:element name='instanceId' type='xs:string' />
+		      <xs:group ref='tns:DescribeInstanceAttributesGroup' />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:group name='DescribeInstanceAttributesGroup' >
+		    <xs:choice>
+		      <xs:element name='instanceType' type='tns:EmptyElementType' />
+		      <xs:element name='kernel' type='tns:EmptyElementType' />
+		      <xs:element name='ramdisk' type='tns:EmptyElementType' />
+			  <xs:element name='userData' type='tns:EmptyElementType' />
+			  <xs:element name='disableApiTermination' type='tns:EmptyElementType' />
+			  <xs:element name='instanceInitiatedShutdownBehavior' type='tns:EmptyElementType' />
+			  <xs:element name='rootDeviceName' type='tns:EmptyElementType' />
+			  <xs:element name="blockDeviceMapping" type="tns:EmptyElementType"/>
+		    </xs:choice>
+		  </xs:group>
+		  
+		  <!-- DescribeImageAttributeResponse Definitions -->
+		  
+		  <xs:element name='DescribeInstanceAttributeResponse' type='tns:DescribeInstanceAttributeResponseType' />  
+		  
+		  <xs:complexType name='DescribeInstanceAttributeResponseType'>
+		    <xs:sequence>
+		      <xs:element name='requestId' type='xs:string' />
+		      <xs:element name='instanceId' type='xs:string' />
+		      <xs:choice>
+		        <xs:element name='instanceType' type='tns:NullableAttributeValueType' />
+		        <xs:element name='kernel' type='tns:NullableAttributeValueType' />
+		        <xs:element name='ramdisk' type='tns:NullableAttributeValueType' />
+		        <xs:element name="userData" type="tns:NullableAttributeValueType"/>
+			    <xs:element name='disableApiTermination' type='tns:NullableAttributeBooleanValueType' />
+			    <xs:element name='instanceInitiatedShutdownBehavior' type='tns:NullableAttributeValueType' />
+				<xs:element name='rootDeviceName' type='tns:NullableAttributeValueType' />
+			    <xs:element name="blockDeviceMapping" type="tns:InstanceBlockDeviceMappingResponseType"/>
+		      </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- ModifyImageAttribute Definitions -->
+		  
+		  <xs:element name="ModifyImageAttribute"
+		              type="tns:ModifyImageAttributeType"/>
+		  
+		  <xs:complexType name="ModifyImageAttributeType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		      <xs:choice>
+		        <xs:element name="launchPermission" type="tns:LaunchPermissionOperationType"/>
+		        <xs:element name="productCodes" type="tns:ProductCodeListType" />
+				<xs:element name="description" type="tns:AttributeValueType" />
+		      </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="LaunchPermissionOperationType">
+		    <xs:choice>
+		      <xs:element name="add" type="tns:LaunchPermissionListType"/>
+		      <xs:element name="remove" type="tns:LaunchPermissionListType"/>
+		    </xs:choice>
+		  </xs:complexType>
+		
+		  <xs:complexType name="LaunchPermissionListType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:LaunchPermissionItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="LaunchPermissionItemType">
+		    <xs:choice>
+		      <xs:element name="userId" type="xs:string"/>
+		      <xs:element name="group" type="xs:string" />
+		    </xs:choice>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ProductCodeListType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:ProductCodeItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ProductCodeItemType">
+		    <xs:choice>
+		      <xs:element name="productCode" type="xs:string"/>
+		    </xs:choice>
+		  </xs:complexType>
+		
+		  <!-- ModifyImageAttributeResponse Definitions -->
+		
+		  <xs:element name="ModifyImageAttributeResponse"
+		              type="tns:ModifyImageAttributeResponseType" />
+		              
+		  <xs:complexType name="ModifyImageAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- ResetImageAttribute Definitions -->
+		  
+		  <xs:element name="ResetImageAttribute"
+		              type="tns:ResetImageAttributeType" />
+		             
+		  <xs:complexType name="ResetImageAttributeType" >
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		      <xs:group ref="tns:ResetImageAttributesGroup"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:group name="ResetImageAttributesGroup" >
+		    <xs:choice>
+		      <xs:element name="launchPermission" type="tns:EmptyElementType"/>
+		    </xs:choice>
+		  </xs:group>
+		  
+		  <xs:complexType name="EmptyElementType">
+		  </xs:complexType>
+		
+		  <!-- ResetImageAttributeResponse Definitions -->
+		
+		  <xs:element name="ResetImageAttributeResponse"
+		              type="tns:ResetImageAttributeResponseType" />
+		
+		  <xs:complexType name="ResetImageAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- DescribeImageAttribute Definitions -->
+		  
+		  <xs:element name="DescribeImageAttribute"
+		              type="tns:DescribeImageAttributeType" />
+		
+		  <xs:complexType name="DescribeImageAttributeType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string" />
+		      <xs:group ref="tns:DescribeImageAttributesGroup" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:group name="DescribeImageAttributesGroup" >
+		    <xs:choice>
+		      <xs:element name="launchPermission" type="tns:EmptyElementType"/>
+		      <xs:element name="productCodes" type="tns:EmptyElementType" />
+		      <xs:element name="kernel" type="tns:EmptyElementType" />
+		      <xs:element name="ramdisk" type="tns:EmptyElementType" />
+		      <xs:element name="blockDeviceMapping" type="tns:EmptyElementType" />
+			  <xs:element name="description" type="tns:EmptyElementType" />
+		    </xs:choice>
+		  </xs:group>
+		
+		  <!-- DescribeImageAttributeResponse Definitions -->
+		  
+		  <xs:element name="DescribeImageAttributeResponse"
+		              type="tns:DescribeImageAttributeResponseType" />
+		              
+		  <xs:complexType name="DescribeImageAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="imageId" type="xs:string" />
+		      <xs:choice>
+		        <xs:element name="launchPermission" type="tns:LaunchPermissionListType"/>
+		        <xs:element name="productCodes" type="tns:ProductCodeListType" />
+		        <xs:element name="kernel" type="tns:NullableAttributeValueType" />
+		        <xs:element name="ramdisk" type="tns:NullableAttributeValueType" />
+				<xs:element name="description" type="tns:NullableAttributeValueType" />
+		        <xs:element name="blockDeviceMapping" type="tns:BlockDeviceMappingType"/>
+		      </xs:choice>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="NullableAttributeValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="NullableAttributeBooleanValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:boolean" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AttributeValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="AttributeBooleanValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- ConfirmProductInstance Definitions -->
+		  
+		  <xs:element name="ConfirmProductInstance" 
+		              type="tns:ConfirmProductInstanceType" />
+		
+		  <xs:complexType name="ConfirmProductInstanceType" >
+		    <xs:sequence>
+		      <xs:element name="productCode" type="xs:string" />
+		      <xs:element name="instanceId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="ProductCodesSetType" >
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:ProductCodesSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="ProductCodesSetItemType" >
+		    <xs:sequence>
+		      <xs:element name="productCode" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- ConfirmProductInstanceResponse Definitions -->
+		  
+		  <xs:element name="ConfirmProductInstanceResponse" 
+		              type="tns:ConfirmProductInstanceResponseType" />
+		  
+		  <xs:complexType name="ConfirmProductInstanceResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean" />
+		      <xs:element name="ownerId" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeAvailabilityZones Definitions -->
+		
+		  <xs:element name="DescribeAvailabilityZones" 
+		              type="tns:DescribeAvailabilityZonesType" />
+		
+		  <xs:complexType name="DescribeAvailabilityZonesType">
+		    <xs:sequence>
+		      <xs:element name="availabilityZoneSet" type="tns:DescribeAvailabilityZonesSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeAvailabilityZonesSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeAvailabilityZonesSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeAvailabilityZonesSetItemType">
+		    <xs:sequence>
+		      <xs:element name="zoneName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeAvailabilityZones Response definitions -->
+		
+		  <xs:element name="DescribeAvailabilityZonesResponse" 
+		              type="tns:DescribeAvailabilityZonesResponseType"/>
+		
+		  <xs:complexType name="DescribeAvailabilityZonesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="availabilityZoneInfo" type="tns:AvailabilityZoneSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AvailabilityZoneSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:AvailabilityZoneItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AvailabilityZoneMessageType">
+		    <xs:sequence>
+		      <xs:element name="message" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="AvailabilityZoneMessageSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:AvailabilityZoneMessageType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AvailabilityZoneItemType">
+		    <xs:sequence>
+		      <xs:element name="zoneName" type="xs:string"/>
+		      <xs:element name="zoneState" type="xs:string"/>
+		      <xs:element name="regionName" type="xs:string"/>
+		      <xs:element name="messageSet" type="tns:AvailabilityZoneMessageSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AllocateAddress definitions -->
+		  
+		  <xs:element name='AllocateAddress' type='tns:AllocateAddressType'/>
+		  <xs:complexType name='AllocateAddressType'/>
+		
+		  <!-- AllocateAddressResponse definitions -->
+		  
+		  <xs:element name='AllocateAddressResponse' type='tns:AllocateAddressResponseType'/>
+		  <xs:complexType name='AllocateAddressResponseType'>
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name='publicIp' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- ReleaseAddress definitions -->
+		  
+		  <xs:element name='ReleaseAddress' type='tns:ReleaseAddressType'/>
+		  <xs:complexType name='ReleaseAddressType'>
+		    <xs:sequence>
+		      <xs:element name='publicIp' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- ReleaseAddressResponse definitions -->
+		  
+		  <xs:element name='ReleaseAddressResponse' type='tns:ReleaseAddressResponseType'/>
+		  <xs:complexType name='ReleaseAddressResponseType'>
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name='return' type='xs:boolean'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeAddresses definitions -->
+		  
+		  <xs:element name='DescribeAddresses' type='tns:DescribeAddressesType'/>
+		  <xs:complexType name='DescribeAddressesType'>
+		    <xs:sequence>
+		      <xs:element name='publicIpsSet' type='tns:DescribeAddressesInfoType'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name='DescribeAddressesInfoType'>
+		    <xs:sequence>
+		      <xs:element name='item' maxOccurs='unbounded' minOccurs='0' type='tns:DescribeAddressesItemType'/>
+		    </xs:sequence>
+		
+		  </xs:complexType>
+		
+		  <xs:complexType name='DescribeAddressesItemType'>
+		    <xs:sequence>
+		      <xs:element name='publicIp' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeAddressesResponse definitions -->
+		
+		  <xs:element name='DescribeAddressesResponse' type='tns:DescribeAddressesResponseType'/>
+		  <xs:complexType name='DescribeAddressesResponseType'>
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name='addressesSet' type='tns:DescribeAddressesResponseInfoType'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name='DescribeAddressesResponseInfoType'>
+		    <xs:sequence>
+		      <xs:element name='item' maxOccurs='unbounded' minOccurs='0' type='tns:DescribeAddressesResponseItemType'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name='DescribeAddressesResponseItemType'>
+		    <xs:sequence>
+		      <xs:element name='publicIp' type='xs:string'/>
+		      <xs:element name='instanceId' minOccurs='0' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AssociateAddress definitions -->
+		  
+		  <xs:element name='AssociateAddress' type='tns:AssociateAddressType'/>
+		  <xs:complexType name='AssociateAddressType'>
+		    <xs:sequence>
+		      <xs:element name='publicIp' type='xs:string'/>
+		      <xs:element name='instanceId' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AssociateAddressResponse definitions -->
+		  
+		  <xs:element name='AssociateAddressResponse' type='tns:AssociateAddressResponseType'/>
+		  <xs:complexType name='AssociateAddressResponseType'>
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name='return' type='xs:boolean'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DisassociateAddress definitions -->
+		  
+		  <xs:element name='DisassociateAddress' type='tns:DisassociateAddressType'/>
+		  <xs:complexType name='DisassociateAddressType'>
+		    <xs:sequence>
+		      <xs:element name='publicIp' type='xs:string'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DisassociateAddressResponse definitions -->
+		  
+		  <xs:element name='DisassociateAddressResponse' type='tns:DisassociateAddressResponseType'/>
+		  <xs:complexType name='DisassociateAddressResponseType'>
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name='return' type='xs:boolean'/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateVolume request definitions -->
+		  
+		  <xs:element name="CreateVolume" type="tns:CreateVolumeType"/>
+		
+		  <xs:complexType name="CreateVolumeType">
+		    <xs:sequence>
+		      <xs:element name="size" type="xs:string" minOccurs="0"/>
+		      <xs:element name="snapshotId" type="xs:string" minOccurs="0"/>
+		      <xs:element name="availabilityZone" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateVolume response definitions -->
+		
+		  <xs:element name="CreateVolumeResponse" type="tns:CreateVolumeResponseType"/>
+		  
+		  <xs:complexType name="CreateVolumeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="size" type="xs:string"/>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:element name="availabilityZone" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="createTime" type="xs:dateTime"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteVolume request definitions -->
+		  
+		  <xs:element name="DeleteVolume" type="tns:DeleteVolumeType"/>
+		
+		  <xs:complexType name="DeleteVolumeType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteVolume response definitions -->
+		
+		  <xs:element name="DeleteVolumeResponse" type="tns:DeleteVolumeResponseType"/>
+		  
+		  <xs:complexType name="DeleteVolumeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeVolumes request definitions -->
+		  
+		  <xs:element name="DescribeVolumes" 
+		              type="tns:DescribeVolumesType" />
+		
+		  <xs:complexType name="DescribeVolumesType">
+		    <xs:sequence>
+		      <xs:element name="volumeSet" type="tns:DescribeVolumesSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeVolumesSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeVolumesSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeVolumesSetItemType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeVolumes response definitions -->
+		
+		  <xs:element name="DescribeVolumesResponse"
+		              type="tns:DescribeVolumesResponseType"/>
+		  
+		  <xs:complexType name="DescribeVolumesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="volumeSet" type="tns:DescribeVolumesSetResponseType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeVolumesSetResponseType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeVolumesSetItemResponseType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeVolumesSetItemResponseType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="size" type="xs:string"/>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:element name="availabilityZone" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="createTime" type="xs:dateTime"/>
+		      <xs:element name="attachmentSet" type="tns:AttachmentSetResponseType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AttachmentSetResponseType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:AttachmentSetItemResponseType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="AttachmentSetItemResponseType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="device" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="attachTime" type="xs:dateTime"/>
+			  <xs:element name="deleteOnTermination" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AttachVolume request definitions -->
+		  
+		  <xs:element name="AttachVolume" type="tns:AttachVolumeType"/>
+		
+		  <xs:complexType name="AttachVolumeType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="device" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- AttachVolume response definitions -->
+		
+		  <xs:element name="AttachVolumeResponse" type="tns:AttachVolumeResponseType"/>
+		  
+		  <xs:complexType name="AttachVolumeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="device" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="attachTime" type="xs:dateTime"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DetachVolume request definitions -->
+		  
+		  <xs:element name="DetachVolume" type="tns:DetachVolumeType"/>
+		
+		  <xs:complexType name="DetachVolumeType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="device" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="force" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DetachVolume response definitions -->
+		
+		  <xs:element name="DetachVolumeResponse" type="tns:DetachVolumeResponseType"/>
+		  
+		  <xs:complexType name="DetachVolumeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="device" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="attachTime" type="xs:dateTime"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateSnapshot request definitions -->
+		  
+		  <xs:element name="CreateSnapshot" type="tns:CreateSnapshotType"/>
+		
+		  <xs:complexType name="CreateSnapshotType">
+		    <xs:sequence>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="description" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CreateSnapshot response definitions -->
+		
+		  <xs:element name="CreateSnapshotResponse" type="tns:CreateSnapshotResponseType"/>
+		  
+		  <xs:complexType name="CreateSnapshotResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="startTime" type="xs:dateTime"/>
+		      <xs:element name="progress" type="xs:string"/>
+		      <xs:element name="ownerId" type="xs:string"/>
+		      <xs:element name="volumeSize" type="xs:string"/>
+		      <xs:element name="description" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteSnapshot request definitions -->
+		  
+		  <xs:element name="DeleteSnapshot" type="tns:DeleteSnapshotType"/>
+		
+		  <xs:complexType name="DeleteSnapshotType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DeleteSnapshot response definitions -->
+		
+		  <xs:element name="DeleteSnapshotResponse" type="tns:DeleteSnapshotResponseType"/>
+		  
+		  <xs:complexType name="DeleteSnapshotResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeSnapshots request definitions -->
+		  
+		  <xs:element name="DescribeSnapshots" 
+		              type="tns:DescribeSnapshotsType" />
+		
+		  <xs:complexType name="DescribeSnapshotsType">
+		    <xs:sequence>
+		      <xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetType"/>
+		      <xs:element name="ownersSet" type="tns:DescribeSnapshotsOwnersType" minOccurs="0"/>
+		      <xs:element name="restorableBySet" type="tns:DescribeSnapshotsRestorableBySetType" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeSnapshotsSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsSetItemType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsOwnersType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeSnapshotsOwnerType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsOwnerType">
+		    <xs:sequence>
+		      <xs:element name="owner" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsRestorableBySetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeSnapshotsRestorableByType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsRestorableByType">
+		    <xs:sequence>
+		      <xs:element name="user" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeSnapshots response definitions -->
+		
+		  <xs:element name="DescribeSnapshotsResponse"
+		              type="tns:DescribeSnapshotsResponseType"/>
+		  
+		  <xs:complexType name="DescribeSnapshotsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="snapshotSet" type="tns:DescribeSnapshotsSetResponseType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsSetResponseType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeSnapshotsSetItemResponseType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSnapshotsSetItemResponseType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:element name="volumeId" type="xs:string"/>
+		      <xs:element name="status" type="xs:string"/>
+		      <xs:element name="startTime" type="xs:dateTime"/>
+		      <xs:element name="progress" type="xs:string"/>
+		      <xs:element name="ownerId" type="xs:string"/>
+		      <xs:element name="volumeSize" type="xs:string"/>
+		      <xs:element name="description" type="xs:string" minOccurs="0"/>
+		      <xs:element name="ownerAlias" type="xs:string" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- ModifySnapshotAttribute Definitions -->
+		  
+		  <xs:element name="ModifySnapshotAttribute"
+		              type="tns:ModifySnapshotAttributeType"/>
+		  
+		  <xs:complexType name="ModifySnapshotAttributeType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:element name="createVolumePermission" type="tns:CreateVolumePermissionOperationType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="CreateVolumePermissionOperationType">
+		    <xs:choice>
+		      <xs:element name="add" type="tns:CreateVolumePermissionListType"/>
+		      <xs:element name="remove" type="tns:CreateVolumePermissionListType"/>
+		    </xs:choice>
+		  </xs:complexType>
+		
+		  <xs:complexType name="CreateVolumePermissionListType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:CreateVolumePermissionItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="CreateVolumePermissionItemType">
+		    <xs:choice>
+		      <xs:element name="userId" type="xs:string"/>
+		      <xs:element name="group" type="xs:string" />
+		    </xs:choice>
+		  </xs:complexType>
+		
+		  <!-- ModifySnapshotAttributeResponse Definitions -->
+		
+		  <xs:element name="ModifySnapshotAttributeResponse"
+		              type="tns:ModifySnapshotAttributeResponseType" />
+		              
+		  <xs:complexType name="ModifySnapshotAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- ResetSnapshotAttribute Definitions -->
+		  
+		  <xs:element name="ResetSnapshotAttribute"
+		              type="tns:ResetSnapshotAttributeType"/>
+		  
+		  <xs:complexType name="ResetSnapshotAttributeType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string"/>
+		      <xs:group ref="tns:ResetSnapshotAttributesGroup" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:group name="ResetSnapshotAttributesGroup" >
+		    <xs:choice>
+		      <xs:element name="createVolumePermission" type="tns:EmptyElementType"/>
+		    </xs:choice>
+		  </xs:group>
+		
+		  <!-- ResetSnapshotAttributeResponse Definitions -->
+		
+		  <xs:element name="ResetSnapshotAttributeResponse"
+		              type="tns:ResetSnapshotAttributeResponseType" />
+		              
+		  <xs:complexType name="ResetSnapshotAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="return" type="xs:boolean"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <!-- DescribeSnapshotAttribute Definitions -->
+		  
+		  <xs:element name="DescribeSnapshotAttribute"
+		              type="tns:DescribeSnapshotAttributeType" />
+		
+		  <xs:complexType name="DescribeSnapshotAttributeType">
+		    <xs:sequence>
+		      <xs:element name="snapshotId" type="xs:string" />
+		      <xs:group ref="tns:DescribeSnapshotAttributesGroup" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:group name="DescribeSnapshotAttributesGroup" >
+		    <xs:choice>
+		      <xs:element name="createVolumePermission" type="tns:EmptyElementType"/>
+		    </xs:choice>
+		  </xs:group>
+		
+		  <!-- DescribeSnapshotAttributeResponse Definitions -->
+		  
+		  <xs:element name="DescribeSnapshotAttributeResponse"
+		              type="tns:DescribeSnapshotAttributeResponseType" />
+		              
+		  <xs:complexType name="DescribeSnapshotAttributeResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="snapshotId" type="xs:string" />
+		      <xs:element name="createVolumePermission" type="tns:CreateVolumePermissionListType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- BundleInstance request definitions -->
+		  
+		  <xs:element name="BundleInstance" type="tns:BundleInstanceType"/>
+		
+		  <xs:complexType name="BundleInstanceType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="storage" type="tns:BundleInstanceTaskStorageType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="BundleInstanceTaskStorageType">
+		    <xs:sequence>
+		      <xs:element name="S3" type="tns:BundleInstanceS3StorageType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="BundleInstanceS3StorageType">
+		    <xs:sequence>
+		      <xs:element name="bucket" type="xs:string"/>
+		      <xs:element name="prefix" type="xs:string"/>
+		      <xs:element name="awsAccessKeyId" type="xs:string" minOccurs="0" />
+		      <xs:element name="uploadPolicy" type="xs:string" minOccurs="0" />
+		      <xs:element name="uploadPolicySignature" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- BundleInstance response definitions -->
+		
+		  <xs:element name="BundleInstanceResponse" type="tns:BundleInstanceResponseType"/>
+		  
+		  <xs:complexType name="BundleInstanceResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="bundleInstanceTask" type="tns:BundleInstanceTaskType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="BundleInstanceTaskType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string"/>
+		      <xs:element name="bundleId" type="xs:string"/>
+		      <xs:element name="state" type="xs:string"/>
+		      <xs:element name="startTime" type="xs:dateTime"/>
+		      <xs:element name="updateTime" type="xs:dateTime"/>
+		      <xs:element name="storage" type="tns:BundleInstanceTaskStorageType"/>
+		      <xs:element name="progress" type="xs:string" minOccurs="0"/>
+		      <xs:element name="error" type="tns:BundleInstanceTaskErrorType" minOccurs="0"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="BundleInstanceTaskErrorType">
+		    <xs:sequence>
+		      <xs:element name="code" type="xs:string"/>
+		      <xs:element name="message" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeBundleTasks request definitions -->
+		
+		  <xs:element name="DescribeBundleTasks" type="tns:DescribeBundleTasksType"/>
+		
+		  <xs:complexType name="DescribeBundleTasksType">
+		    <xs:sequence>
+		      <xs:element name="bundlesSet" type="tns:DescribeBundleTasksInfoType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeBundleTasksInfoType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeBundleTasksItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeBundleTasksItemType">
+		    <xs:sequence>
+		      <xs:element name="bundleId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeBundleTasks response definitions -->
+		
+		  <xs:element name="DescribeBundleTasksResponse" type="tns:DescribeBundleTasksResponseType"/>
+		  
+		  <xs:complexType name="DescribeBundleTasksResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="bundleInstanceTasksSet" type="tns:BundleInstanceTasksSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="BundleInstanceTasksSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:BundleInstanceTaskType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CancelBundleTask request definitions -->
+		  
+		  <xs:element name="CancelBundleTask" type="tns:CancelBundleTaskType"/>
+		
+		  <xs:complexType name="CancelBundleTaskType">
+		    <xs:sequence>
+		      <xs:element name="bundleId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- CancelBundleTask response definitions -->
+		
+		  <xs:element name="CancelBundleTaskResponse" type="tns:CancelBundleTaskResponseType"/>
+		  
+		  <xs:complexType name="CancelBundleTaskResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="bundleInstanceTask" type="tns:BundleInstanceTaskType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeRegions Definitions -->
+		
+		  <xs:element name="DescribeRegions" 
+		              type="tns:DescribeRegionsType" />
+		
+		  <xs:complexType name="DescribeRegionsType">
+		    <xs:sequence>
+		      <xs:element name="regionSet" type="tns:DescribeRegionsSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeRegionsSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeRegionsSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeRegionsSetItemType">
+		    <xs:sequence>
+		      <xs:element name="regionName" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeRegions Response definitions -->
+		
+		  <xs:element name="DescribeRegionsResponse" 
+		              type="tns:DescribeRegionsResponseType"/>
+		
+		  <xs:complexType name="DescribeRegionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>
+		      <xs:element name="regionInfo" type="tns:RegionSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RegionSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:RegionItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RegionItemType">
+		    <xs:sequence>
+		      <xs:element name="regionName" type="xs:string"/>
+		      <xs:element name="regionEndpoint" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeReservedInstancesOfferings definitions -->
+		  
+		  <xs:element name="DescribeReservedInstancesOfferings" 
+		              type="tns:DescribeReservedInstancesOfferingsType"/>
+		              
+		  <xs:complexType name="DescribeReservedInstancesOfferingsType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesOfferingsSet" type="tns:DescribeReservedInstancesOfferingsSetType" minOccurs="0"/>
+		      <xs:element name="instanceType" type="xs:string" minOccurs="0" />
+		      <xs:element name="availabilityZone" type="xs:string"  minOccurs="0" />
+		      <xs:element name="productDescription" type="xs:string"  minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		                
+		  <xs:complexType name="DescribeReservedInstancesOfferingsSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeReservedInstancesOfferingsSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesOfferingsSetItemType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesOfferingId" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeReservedInstancesOfferingsResponse definitions -->
+		
+		  <xs:element name="DescribeReservedInstancesOfferingsResponse" 
+		              type="tns:DescribeReservedInstancesOfferingsResponseType"/>
+		
+		  <xs:complexType name="DescribeReservedInstancesOfferingsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>    
+		      <xs:element name="reservedInstancesOfferingsSet" type="tns:DescribeReservedInstancesOfferingsResponseSetType"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="DescribeReservedInstancesOfferingsResponseSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeReservedInstancesOfferingsResponseSetItemType" minOccurs="0" maxOccurs="unbounded"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesOfferingsResponseSetItemType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesOfferingId" type="xs:string" />
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="availabilityZone" type="xs:string" />
+		      <xs:element name="duration" type="xs:long" />
+		      <xs:element name="fixedPrice" type="xs:double" />
+		      <xs:element name="usagePrice" type="xs:double" />
+		      <xs:element name="productDescription" type="xs:string" />  
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- PurchaseReservedInstancesOffering definitions -->
+		  <xs:element name="PurchaseReservedInstancesOffering" 
+		              type="tns:PurchaseReservedInstancesOfferingType"/>
+		
+		  <xs:complexType name="PurchaseReservedInstancesOfferingType">
+		  	<xs:sequence>
+		      <xs:element name="reservedInstancesOfferingId" type="xs:string" />
+		      <xs:element name="instanceCount" type="xs:int" />      
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- PurchaseReservedInstancesOfferingResponse definitions -->
+		  <xs:element name="PurchaseReservedInstancesOfferingResponse" 
+		              type="tns:PurchaseReservedInstancesOfferingResponseType"/>
+		
+		  <xs:complexType name="PurchaseReservedInstancesOfferingResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>    
+		      <xs:element name="reservedInstancesId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeReservedInstances definitions -->
+		  <xs:element name="DescribeReservedInstances" 
+		              type="tns:DescribeReservedInstancesType"/>
+		
+		  <xs:complexType name="DescribeReservedInstancesType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesSet" type="tns:DescribeReservedInstancesSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeReservedInstancesSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesSetItemType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- DescribeReservedInstancesResponse definitions -->
+		  <xs:element name="DescribeReservedInstancesResponse" 
+		              type="tns:DescribeReservedInstancesResponseType"/>
+		
+		  <xs:complexType name="DescribeReservedInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>    
+		      <xs:element name="reservedInstancesSet" type="tns:DescribeReservedInstancesResponseSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesResponseSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DescribeReservedInstancesResponseSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeReservedInstancesResponseSetItemType">
+		    <xs:sequence>
+		      <xs:element name="reservedInstancesId" type="xs:string" />
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="availabilityZone" type="xs:string" />
+		      <xs:element name="start" type="xs:dateTime" />
+		      <xs:element name="duration" type="xs:long" />
+		      <xs:element name="fixedPrice" type="xs:double" />
+		      <xs:element name="usagePrice" type="xs:double" />
+		      <xs:element name="instanceCount" type="xs:integer" />
+		      <xs:element name="productDescription" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		
+		  <!-- MonitorInstances / UnmonitorInstances definitions -->
+		  
+		  <xs:element name="MonitorInstances" 
+		              type="tns:MonitorInstancesType" />
+		  
+		  <xs:element name="UnmonitorInstances" 
+		              type="tns:MonitorInstancesType" />
+		              
+		  <xs:complexType name="MonitorInstancesType">
+		    <xs:sequence>
+		      <xs:element name="instancesSet" type="tns:MonitorInstancesSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="MonitorInstancesSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:MonitorInstancesSetItemType" minOccurs="1" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="MonitorInstancesSetItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  
+		  <!-- MonitorInstancesResponse definitions -->
+		  
+		  <xs:element name="MonitorInstancesResponse" 
+		              type="tns:MonitorInstancesResponseType"/>
+		
+		  <xs:element name="UnmonitorInstancesResponse" 
+		              type="tns:MonitorInstancesResponseType"/>
+		              
+		  <xs:complexType name="MonitorInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string"/>    
+		      <xs:element name="instancesSet" type="tns:MonitorInstancesResponseSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="MonitorInstancesResponseSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:MonitorInstancesResponseSetItemType" minOccurs="1" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="MonitorInstancesResponseSetItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceId" type="xs:string" />
+		      <xs:element name="monitoring" type="tns:InstanceMonitoringStateType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="InstanceMonitoringStateType">
+		    <xs:sequence>
+		      <xs:element name="state" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- VPC definitions -->
+		  
+		  <xs:complexType name="AttachmentType">
+		    <xs:sequence>
+		      <xs:element name="vpcId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="AttachmentSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:AttachmentType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnGatewayType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="availabilityZone" type="xs:string" />
+		      <xs:element name="attachments" type="tns:AttachmentSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CustomerGatewayType">
+		    <xs:sequence>
+		      <xs:element name="customerGatewayId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="ipAddress" type="xs:string" />
+		      <xs:element name="bgpAsn" type="xs:int" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnConnectionType">
+		    <xs:sequence>
+		      <xs:element name="vpnConnectionId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		      <xs:element name="customerGatewayConfiguration" type="xs:string" minOccurs="0" />
+		      <xs:element name="type" type="xs:string" minOccurs="0" />
+		      <xs:element name="customerGatewayId" type="xs:string" />
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpcType">
+		    <xs:sequence>
+		      <xs:element name="vpcId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" minOccurs="0" />
+		      <xs:element name="cidrBlock" type="xs:string" minOccurs="0" />
+		      <xs:element name="dhcpOptionsId" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="SubnetType">
+		    <xs:sequence>
+		      <xs:element name="subnetId" type="xs:string" />
+		      <xs:element name="state" type="xs:string" minOccurs="0" />
+		      <xs:element name="vpcId" type="xs:string" minOccurs="0" />
+		      <xs:element name="cidrBlock" type="xs:string" minOccurs="0" />
+		      <xs:element name="availableIpAddressCount" type="xs:int" minOccurs="0" />
+		      <xs:element name="availabilityZone" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CustomerGatewaySetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:CustomerGatewayType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnGatewaySetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpnGatewayType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnConnectionSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpnConnectionType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpcSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpcType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="SubnetSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SubnetType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CustomerGatewayIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="customerGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CustomerGatewayIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:CustomerGatewayIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnGatewayIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnGatewayIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpnGatewayIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnConnectionIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="vpnConnectionId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpnConnectionIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpnConnectionIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpcIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="vpcId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="VpcIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:VpcIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="SubnetIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="subnetId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="SubnetIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SubnetIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpOptionsIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="dhcpOptionsId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpOptionsIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DhcpOptionsIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpConfigurationItemSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DhcpConfigurationItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpOptionsSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DhcpOptionsType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpConfigurationItemType">
+		    <xs:sequence>
+		      <xs:element name="key" type="xs:string" />
+		      <xs:element name="valueSet" type="tns:DhcpValueSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpOptionsType">
+		    <xs:sequence>
+		      <xs:element name="dhcpOptionsId" type="xs:string" />
+		      <xs:element name="dhcpConfigurationSet" type="tns:DhcpConfigurationItemSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DhcpValueSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:DhcpValueType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="FilterType">
+		    <xs:sequence>
+		      <xs:element name="name" type="xs:string" />
+		      <xs:element name="valueSet" type="tns:ValueSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="FilterSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:FilterType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="ValueType">
+		    <xs:sequence>
+		      <xs:element name="value" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="ValueSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:ValueType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:element name="CreateCustomerGateway" type="tns:CreateCustomerGatewayType" />
+		  <xs:element name="CreateCustomerGatewayResponse" type="tns:CreateCustomerGatewayResponseType" />
+		  <xs:element name="DeleteCustomerGateway" type="tns:DeleteCustomerGatewayType" />
+		  <xs:element name="DeleteCustomerGatewayResponse" type="tns:DeleteCustomerGatewayResponseType" />
+		  <xs:element name="DescribeCustomerGateways" type="tns:DescribeCustomerGatewaysType" />
+		  <xs:element name="DescribeCustomerGatewaysResponse" type="tns:DescribeCustomerGatewaysResponseType" />
+		  <xs:element name="CreateVpnGateway" type="tns:CreateVpnGatewayType" />
+		  <xs:element name="CreateVpnGatewayResponse" type="tns:CreateVpnGatewayResponseType" />
+		  <xs:element name="DeleteVpnGateway" type="tns:DeleteVpnGatewayType" />
+		  <xs:element name="DeleteVpnGatewayResponse" type="tns:DeleteVpnGatewayResponseType" />
+		  <xs:element name="DescribeVpnGateways" type="tns:DescribeVpnGatewaysType" />
+		  <xs:element name="DescribeVpnGatewaysResponse" type="tns:DescribeVpnGatewaysResponseType" />
+		  <xs:element name="CreateVpnConnection" type="tns:CreateVpnConnectionType" />
+		  <xs:element name="CreateVpnConnectionResponse" type="tns:CreateVpnConnectionResponseType" />
+		  <xs:element name="DeleteVpnConnection" type="tns:DeleteVpnConnectionType" />
+		  <xs:element name="DeleteVpnConnectionResponse" type="tns:DeleteVpnConnectionResponseType" />
+		  <xs:element name="DescribeVpnConnections" type="tns:DescribeVpnConnectionsType" />
+		  <xs:element name="DescribeVpnConnectionsResponse" type="tns:DescribeVpnConnectionsResponseType" />
+		  <xs:element name="AttachVpnGateway" type="tns:AttachVpnGatewayType" />
+		  <xs:element name="AttachVpnGatewayResponse" type="tns:AttachVpnGatewayResponseType" />
+		  <xs:element name="DetachVpnGateway" type="tns:DetachVpnGatewayType" />
+		  <xs:element name="DetachVpnGatewayResponse" type="tns:DetachVpnGatewayResponseType" />
+		  <xs:element name="CreateVpc" type="tns:CreateVpcType" />
+		  <xs:element name="CreateVpcResponse" type="tns:CreateVpcResponseType" />
+		  <xs:element name="DescribeVpcs" type="tns:DescribeVpcsType" />
+		  <xs:element name="DescribeVpcsResponse" type="tns:DescribeVpcsResponseType" />
+		  <xs:element name="DeleteVpc" type="tns:DeleteVpcType" />
+		  <xs:element name="DeleteVpcResponse" type="tns:DeleteVpcResponseType" />
+		  <xs:element name="CreateSubnet" type="tns:CreateSubnetType" />
+		  <xs:element name="CreateSubnetResponse" type="tns:CreateSubnetResponseType" />
+		  <xs:element name="DescribeSubnets" type="tns:DescribeSubnetsType" />
+		  <xs:element name="DescribeSubnetsResponse" type="tns:DescribeSubnetsResponseType" />
+		  <xs:element name="DeleteSubnet" type="tns:DeleteSubnetType" />
+		  <xs:element name="DeleteSubnetResponse" type="tns:DeleteSubnetResponseType" />
+		  <xs:element name="DeleteDhcpOptions" type="tns:DeleteDhcpOptionsType" />
+		  <xs:element name="DeleteDhcpOptionsResponse" type="tns:DeleteDhcpOptionsResponseType" />
+		  <xs:element name="DescribeDhcpOptions" type="tns:DescribeDhcpOptionsType" />
+		  <xs:element name="DescribeDhcpOptionsResponse" type="tns:DescribeDhcpOptionsResponseType" />
+		  <xs:element name="CreateDhcpOptions" type="tns:CreateDhcpOptionsType" />
+		  <xs:element name="CreateDhcpOptionsResponse" type="tns:CreateDhcpOptionsResponseType" />
+		  <xs:element name="AssociateDhcpOptions" type="tns:AssociateDhcpOptionsType" />
+		  <xs:element name="AssociateDhcpOptionsResponse" type="tns:AssociateDhcpOptionsResponseType" />
+		  <xs:complexType name="CreateCustomerGatewayType">
+		    <xs:sequence>
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="ipAddress" type="xs:string" />
+		      <xs:element name="bgpAsn" type="xs:int" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateCustomerGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="customerGateway" type="tns:CustomerGatewayType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteCustomerGatewayType">
+		    <xs:sequence>
+		      <xs:element name="customerGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteCustomerGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeCustomerGatewaysType">
+		    <xs:sequence>
+		      <xs:element name="customerGatewaySet" type="tns:CustomerGatewayIdSetType" minOccurs="0" />
+		      <xs:element name="filterSet" type="tns:FilterSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeCustomerGatewaysResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="customerGatewaySet" type="tns:CustomerGatewaySetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpnGatewayType">
+		    <xs:sequence>
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="availabilityZone" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpnGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpnGateway" type="tns:VpnGatewayType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpnGatewayType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpnGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpnGatewaysType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewaySet" type="tns:VpnGatewayIdSetType" minOccurs="0" />
+		      <xs:element name="filterSet" type="tns:FilterSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpnGatewaysResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpnGatewaySet" type="tns:VpnGatewaySetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpnConnectionType">
+		    <xs:sequence>
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="customerGatewayId" type="xs:string" />
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpnConnectionResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpnConnection" type="tns:VpnConnectionType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpnConnectionType">
+		    <xs:sequence>
+		      <xs:element name="vpnConnectionId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpnConnectionResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpnConnectionsType">
+		    <xs:sequence>
+		      <xs:element name="vpnConnectionSet" type="tns:VpnConnectionIdSetType" minOccurs="0" />
+		      <xs:element name="filterSet" type="tns:FilterSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpnConnectionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpnConnectionSet" type="tns:VpnConnectionSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="AttachVpnGatewayType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		      <xs:element name="vpcId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="AttachVpnGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="attachment" type="tns:AttachmentType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DetachVpnGatewayType">
+		    <xs:sequence>
+		      <xs:element name="vpnGatewayId" type="xs:string" />
+		      <xs:element name="vpcId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DetachVpnGatewayResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpcType">
+		    <xs:sequence>
+		      <xs:element name="cidrBlock" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateVpcResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpc" type="tns:VpcType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpcsType">
+		    <xs:sequence>
+		      <xs:element name="vpcSet" type="tns:VpcIdSetType" minOccurs="0" />
+		      <xs:element name="filterSet" type="tns:FilterSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeVpcsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="vpcSet" type="tns:VpcSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpcType">
+		    <xs:sequence>
+		      <xs:element name="vpcId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteVpcResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateSubnetType">
+		    <xs:sequence>
+		      <xs:element name="vpcId" type="xs:string" />
+		      <xs:element name="cidrBlock" type="xs:string" />
+		      <xs:element name="availabilityZone" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateSubnetResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="subnet" type="tns:SubnetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeSubnetsType">
+		    <xs:sequence>
+		      <xs:element name="subnetSet" type="tns:SubnetIdSetType" minOccurs="0" />
+		      <xs:element name="filterSet" type="tns:FilterSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeSubnetsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="subnetSet" type="tns:SubnetSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteSubnetType">
+		    <xs:sequence>
+		      <xs:element name="subnetId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteSubnetResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteDhcpOptionsType">
+		    <xs:sequence>
+		      <xs:element name="dhcpOptionsId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DeleteDhcpOptionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeDhcpOptionsType">
+		    <xs:sequence>
+		      <xs:element name="dhcpOptionsSet" type="tns:DhcpOptionsIdSetType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="DescribeDhcpOptionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="dhcpOptionsSet" type="tns:DhcpOptionsSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateDhcpOptionsType">
+		    <xs:sequence>
+		      <xs:element name="dhcpConfigurationSet" type="tns:DhcpConfigurationItemSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="CreateDhcpOptionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="dhcpOptions" type="tns:DhcpOptionsType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="AssociateDhcpOptionsType">
+		    <xs:sequence>
+		      <xs:element name="dhcpOptionsId" type="xs:string" />
+		      <xs:element name="vpcId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  <xs:complexType name="AssociateDhcpOptionsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <!-- SpotInstances methods -->
+		
+		  <xs:element name="RequestSpotInstances" type="tns:RequestSpotInstancesType" />
+		  <xs:element name="RequestSpotInstancesResponse" type="tns:RequestSpotInstancesResponseType" />
+		  <xs:element name="DescribeSpotInstanceRequests" type="tns:DescribeSpotInstanceRequestsType" />	
+		  <xs:element name="DescribeSpotInstanceRequestsResponse" type="tns:DescribeSpotInstanceRequestsResponseType" />
+		  <xs:element name="CancelSpotInstanceRequests" type="tns:CancelSpotInstanceRequestsType" />
+		  <xs:element name="CancelSpotInstanceRequestsResponse" type="tns:CancelSpotInstanceRequestsResponseType" />
+		  <xs:element name="DescribeSpotPriceHistory" type="tns:DescribeSpotPriceHistoryType" />
+		  <xs:element name="DescribeSpotPriceHistoryResponse" type="tns:DescribeSpotPriceHistoryResponseType" />
+		
+		  <xs:element name="CreateSpotDatafeedSubscription" type="tns:CreateSpotDatafeedSubscriptionType" />
+		  <xs:element name="CreateSpotDatafeedSubscriptionResponse" type="tns:CreateSpotDatafeedSubscriptionResponseType" />
+		  <xs:element name="DescribeSpotDatafeedSubscription" type="tns:DescribeSpotDatafeedSubscriptionType" />
+		  <xs:element name="DescribeSpotDatafeedSubscriptionResponse" type="tns:DescribeSpotDatafeedSubscriptionResponseType" />
+		  <xs:element name="DeleteSpotDatafeedSubscription" type="tns:DeleteSpotDatafeedSubscriptionType" />
+		  <xs:element name="DeleteSpotDatafeedSubscriptionResponse" type="tns:DeleteSpotDatafeedSubscriptionResponseType" />
+		  
+		  <xs:complexType name="RequestSpotInstancesType">
+		    <xs:sequence>
+		      <xs:element name="spotPrice" type="xs:string" />
+		      <xs:element name="instanceCount" type="xs:integer" minOccurs="0" />
+		      <xs:element name="type" type="xs:string" minOccurs="0" />
+		      <xs:element name="validFrom" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="validUntil" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="launchGroup" type="xs:string" minOccurs="0" />
+		      <xs:element name="availabilityZoneGroup" type="xs:string" minOccurs="0" />
+		      <xs:element name="launchSpecification" type="tns:LaunchSpecificationRequestType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="LaunchSpecificationRequestType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		      <xs:element name="keyName" type="xs:string" minOccurs="0" />
+		      <xs:element name="groupSet" type="tns:GroupSetType"/>
+		      <xs:element name="userData" type="tns:UserDataType" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="addressingType" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="placement" type="tns:PlacementRequestType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="kernelId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="ramdiskId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="blockDeviceMapping" type="tns:BlockDeviceMappingType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="monitoring" type="tns:MonitoringInstanceType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="subnetId" type="xs:string" minOccurs="0" maxOccurs="1" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="LaunchSpecificationResponseType">
+		    <xs:sequence>
+		      <xs:element name="imageId" type="xs:string"/>
+		      <xs:element name="keyName" type="xs:string" minOccurs="0" />
+		      <xs:element name="groupSet" type="tns:GroupSetType"/>
+		      <xs:element name="addressingType" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="placement" type="tns:PlacementRequestType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="kernelId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="ramdiskId" type="xs:string" minOccurs="0" maxOccurs="1"/>
+		      <xs:element name="blockDeviceMapping" type="tns:BlockDeviceMappingType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="monitoring" type="tns:MonitoringInstanceType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="subnetId" type="xs:string" minOccurs="0" maxOccurs="1" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotInstanceRequestSetItemType">
+		    <xs:sequence>
+		      <xs:element name="spotInstanceRequestId" type="xs:string" />
+		      <xs:element name="spotPrice" type="xs:string" />
+		      <xs:element name="type" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		      <xs:element name="fault" type="tns:SpotInstanceStateFaultType" minOccurs="0" />
+		      <xs:element name="validFrom" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="validUntil" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="launchGroup" type="xs:string" minOccurs="0" />
+		      <xs:element name="availabilityZoneGroup" type="xs:string" minOccurs="0" />
+		      <xs:element name="launchSpecification" type="tns:LaunchSpecificationResponseType" minOccurs="0" />
+		      <xs:element name="instanceId" type="xs:string" minOccurs="0" />
+		      <xs:element name="createTime" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="productDescription" type="xs:string" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotInstanceStateFaultType">
+		    <xs:sequence>
+		      <xs:element name="code" type="xs:string"/>
+		      <xs:element name="message" type="xs:string"/>
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotInstanceRequestSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SpotInstanceRequestSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="RequestSpotInstancesResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotInstanceRequestSet" type="tns:SpotInstanceRequestSetType" minOccurs="1" maxOccurs="1" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSpotInstanceRequestsType">
+		    <xs:sequence>
+		      <xs:element name="spotInstanceRequestIdSet" type="tns:SpotInstanceRequestIdSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotInstanceRequestIdSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SpotInstanceRequestIdSetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+					
+		  <xs:complexType name="SpotInstanceRequestIdSetItemType">
+		    <xs:sequence>
+		      <xs:element name="spotInstanceRequestId" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSpotInstanceRequestsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotInstanceRequestSet" type="tns:SpotInstanceRequestSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="CancelSpotInstanceRequestsType">
+		    <xs:sequence>
+		      <xs:element name="spotInstanceRequestIdSet" type="tns:SpotInstanceRequestIdSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="CancelSpotInstanceRequestsResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotInstanceRequestSet" type="tns:CancelSpotInstanceRequestsResponseSetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="CancelSpotInstanceRequestsResponseSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:CancelSpotInstanceRequestsResponseSetItemType" minOccurs="1" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="CancelSpotInstanceRequestsResponseSetItemType">
+			  <xs:sequence>
+			    <xs:element name="spotInstanceRequestId" type="xs:string" />
+			    <xs:element name="state" type="xs:string" />
+			  </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSpotPriceHistoryType">
+		    <xs:sequence>
+		      <xs:element name="startTime" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="endTime" type="xs:dateTime" minOccurs="0" />
+		      <xs:element name="instanceTypeSet" type="tns:InstanceTypeSetType" minOccurs="0" maxOccurs="1" />
+		      <xs:element name="productDescriptionSet" type="tns:ProductDescriptionSetType" minOccurs="0" maxOccurs="1" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="InstanceTypeSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:InstanceTypeSetItemType" minOccurs="1" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="InstanceTypeSetItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceType" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ProductDescriptionSetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:ProductDescriptionSetItemType" minOccurs="1" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="ProductDescriptionSetItemType">
+		    <xs:sequence>
+		      <xs:element name="productDescription" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSpotPriceHistoryResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotPriceHistorySet" type="tns:SpotPriceHistorySetType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotPriceHistorySetType">
+		    <xs:sequence>
+		      <xs:element name="item" type="tns:SpotPriceHistorySetItemType" minOccurs="0" maxOccurs="unbounded" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="SpotPriceHistorySetItemType">
+		    <xs:sequence>
+		      <xs:element name="instanceType" type="xs:string" />
+		      <xs:element name="productDescription" type="xs:string" />
+		      <xs:element name="spotPrice" type="xs:string" />
+		      <xs:element name="timestamp" type="xs:dateTime" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="SpotDatafeedSubscriptionType">
+		    <xs:sequence>
+		      <xs:element name="ownerId" type="xs:string" />
+		      <xs:element name="bucket" type="xs:string" />
+		      <xs:element name="prefix" type="xs:string" />
+		      <xs:element name="state" type="xs:string" />
+		      <xs:element name="fault" type="tns:SpotInstanceStateFaultType" minOccurs="0" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="CreateSpotDatafeedSubscriptionType">
+		    <xs:sequence>
+		      <xs:element name="bucket" type="xs:string" />
+		      <xs:element name="prefix" type="xs:string" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="CreateSpotDatafeedSubscriptionResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotDatafeedSubscription" type="tns:SpotDatafeedSubscriptionType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		
+		  <xs:complexType name="DescribeSpotDatafeedSubscriptionType" />
+		
+		  <xs:complexType name="DescribeSpotDatafeedSubscriptionResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="spotDatafeedSubscription" type="tns:SpotDatafeedSubscriptionType" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		  <xs:complexType name="DeleteSpotDatafeedSubscriptionType" />
+		  
+		  <xs:complexType name="DeleteSpotDatafeedSubscriptionResponseType">
+		    <xs:sequence>
+		      <xs:element name="requestId" type="xs:string" />
+		      <xs:element name="return" type="xs:boolean" />
+		    </xs:sequence>
+		  </xs:complexType>
+		  
+		</xs:schema>
+  </types>
+
+  <!-- message definitions -->
+
+  <message name="CreateImageRequestMsg">
+    <part name="CreateImageRequestMsgReq" element="tns:CreateImage" />
+  </message>
+
+  <message name="CreateImageResponseMsg">
+    <part name="CreateImageResponseMsgResp" element="tns:CreateImageResponse" />
+  </message>
+  
+  <message name="RegisterImageRequestMsg">
+    <part name="RegisterImageRequestMsgReq" element="tns:RegisterImage" />
+  </message>
+
+  <message name="RegisterImageResponseMsg">
+    <part name="RegisterImageResponseMsgResp" element="tns:RegisterImageResponse" />
+  </message>
+
+  <message name="DeregisterImageRequestMsg">
+    <part name="DeregisterImageRequestMsgReq" element="tns:DeregisterImage" />
+  </message>
+
+  <message name="DeregisterImageResponseMsg">
+    <part name="DeregisterImageResponseMsgResp" element="tns:DeregisterImageResponse" />
+  </message>
+
+  <message name="RunInstancesRequestMsg">
+    <part name="RunInstancesRequestMsgReq" element="tns:RunInstances" />
+  </message>
+
+  <message name="RunInstancesResponseMsg">
+    <part name="RunInstancesResponseMsgResp" element="tns:RunInstancesResponse" />
+  </message>
+
+  <message name="CreateKeyPairRequestMsg">
+    <part name="CreateKeyPairRequestMsgReq" element="tns:CreateKeyPair" />
+  </message>
+
+  <message name="CreateKeyPairResponseMsg">
+    <part name="CreateKeyPairResponseMsgResp" element="tns:CreateKeyPairResponse" />
+  </message>
+
+  <message name="DescribeKeyPairsRequestMsg">
+    <part name="DescribeKeyPairsRequestMsgReq" element="tns:DescribeKeyPairs" />
+  </message>
+
+  <message name="DescribeKeyPairsResponseMsg">
+    <part name="DescribeKeyPairsResponseMsgResp" element="tns:DescribeKeyPairsResponse" />
+  </message>
+
+  <message name="DeleteKeyPairRequestMsg">
+    <part name="DeleteKeyPairRequestMsgReq" element="tns:DeleteKeyPair" />
+  </message>
+
+  <message name="DeleteKeyPairResponseMsg">
+    <part name="DeleteKeyPairResponseMsgResp" element="tns:DeleteKeyPairResponse" />
+  </message>
+
+  <message name="GetConsoleOutputRequestMsg">
+    <part name="GetConsoleOutputRequestMsgReq" element="tns:GetConsoleOutput" />
+  </message>
+  
+  <message name="GetConsoleOutputResponseMsg">
+    <part name="GetConsoleOutputResponseMsgResp" element="tns:GetConsoleOutputResponse" />
+  </message>
+
+  <message name="GetPasswordDataRequestMsg">
+    <part name="GetPasswordDataRequestMsgReq" element="tns:GetPasswordData" />
+  </message>
+  
+  <message name="GetPasswordDataResponseMsg">
+    <part name="GetPasswordDataResponseMsgResp" element="tns:GetPasswordDataResponse" />
+  </message>
+
+  <message name="TerminateInstancesRequestMsg">
+    <part name="TerminateInstancesRequestMsgReq" element="tns:TerminateInstances" />
+  </message>
+  
+  <message name="TerminateInstancesResponseMsg">
+    <part name="TerminateInstancesResponseMsgResp" element="tns:TerminateInstancesResponse" />
+  </message>
+
+  
+  <message name="StopInstancesRequestMsg">
+    <part name="StopInstancesRequestMsgReq" element="tns:StopInstances" />
+  </message>
+  
+  <message name="StopInstancesResponseMsg">
+    <part name="StopInstancesResponseMsgResp" element="tns:StopInstancesResponse" />
+  </message>
+
+  <message name="StartInstancesRequestMsg">
+    <part name="StartInstancesRequestMsgReq" element="tns:StartInstances" />
+  </message>
+  
+  <message name="StartInstancesResponseMsg">
+    <part name="StartInstancesResponseMsgResp" element="tns:StartInstancesResponse" />
+  </message>
+
+  <message name="RebootInstancesRequestMsg">
+    <part name="RebootInstancesRequestMsgReq" element="tns:RebootInstances" />
+  </message>
+
+  <message name="RebootInstancesResponseMsg">
+    <part name="RebootInstancesRequestMsgResp" element="tns:RebootInstancesResponse" />
+  </message>
+
+  <message name="DescribeInstancesRequestMsg">
+    <part name="DescribeInstancesRequestMsgReq" element="tns:DescribeInstances" />
+  </message>
+
+  <message name="DescribeInstancesResponseMsg">
+    <part name="DescribeInstancesRequestMsgResp" element="tns:DescribeInstancesResponse" />
+  </message>
+
+  <message name="DescribeImagesRequestMsg">
+    <part name="DescribeImagesRequestMsgReq" element="tns:DescribeImages" />
+  </message>
+
+  <message name="DescribeImagesResponseMsg">
+    <part name="DescribeImagesRequestMsgResp" element="tns:DescribeImagesResponse" />
+  </message>
+
+  <message name="CreateSecurityGroupRequestMsg">
+    <part name="CreateSecurityGroupRequestMsgReq" element="tns:CreateSecurityGroup" />
+  </message>
+
+  <message name="CreateSecurityGroupResponseMsg">
+    <part name="CreateSecurityGroupRequestMsgResp" element="tns:CreateSecurityGroupResponse" />
+  </message>
+
+  <message name="DeleteSecurityGroupRequestMsg">
+    <part name="DeleteSecurityGroupRequestMsgReq" element="tns:DeleteSecurityGroup" />
+  </message>
+
+  <message name="DeleteSecurityGroupResponseMsg">
+    <part name="DeleteSecurityGroupRequestMsgResp" element="tns:DeleteSecurityGroupResponse" />
+  </message>
+
+  <message name="DescribeSecurityGroupsRequestMsg">
+    <part name="DescribeSecurityGroupsRequestMsgReq" element="tns:DescribeSecurityGroups" />
+  </message>
+
+  <message name="DescribeSecurityGroupsResponseMsg">
+    <part name="DescribeSecurityGroupsRequestMsgResp" element="tns:DescribeSecurityGroupsResponse" />
+  </message>
+
+  <message name="AuthorizeSecurityGroupIngressRequestMsg">
+    <part name="AuthorizeSecurityGroupIngressRequestMsgReq" element="tns:AuthorizeSecurityGroupIngress" />
+  </message>
+
+  <message name="AuthorizeSecurityGroupIngressResponseMsg">
+    <part name="AuthorizeSecurityGroupIngressRequestMsgResp" element="tns:AuthorizeSecurityGroupIngressResponse" />
+  </message>
+
+  <message name="RevokeSecurityGroupIngressRequestMsg">
+    <part name="RevokeSecurityGroupIngressRequestMsgReq" element="tns:RevokeSecurityGroupIngress" />
+  </message>
+
+  <message name="RevokeSecurityGroupIngressResponseMsg">
+    <part name="RevokeSecurityGroupIngressRequestMsgResp" element="tns:RevokeSecurityGroupIngressResponse" />
+  </message>
+
+ <message name="ModifyInstanceAttributeRequestMsg">
+    <part name="ModifyInstanceAttributeRequestMsgReq" element="tns:ModifyInstanceAttribute" />
+  </message>
+  
+  <message name="ModifyInstanceAttributeResponseMsg">
+    <part name="ModifyInstanceAttributeRequestMsgResp" element="tns:ModifyInstanceAttributeResponse" />
+  </message>
+  
+  <message name="ResetInstanceAttributeRequestMsg">
+    <part name="ResetInstanceAttributeRequestMsgReq" element="tns:ResetInstanceAttribute" />
+  </message>
+  
+  <message name="ResetInstanceAttributeResponseMsg">
+    <part name="ResetInstanceAttributeRequestMsgResp" element="tns:ResetInstanceAttributeResponse" />
+  </message>
+  
+  <message name="DescribeInstanceAttributeRequestMsg">
+    <part name="DescribeInstanceAttributeRequestMsgReq" element="tns:DescribeInstanceAttribute" />
+  </message>
+  
+  <message name="DescribeInstanceAttributeResponseMsg">
+    <part name="DescribeInstanceAttributeRequestMsgResp" element="tns:DescribeInstanceAttributeResponse"/>
+  </message>
+
+  <message name="ModifyImageAttributeRequestMsg">
+    <part name="ModifyImageAttributeRequestMsgReq" element="tns:ModifyImageAttribute" />
+  </message>
+  
+  <message name="ModifyImageAttributeResponseMsg">
+    <part name="ModifyImageAttributeRequestMsgResp" element="tns:ModifyImageAttributeResponse" />
+  </message>
+  
+  <message name="ResetImageAttributeRequestMsg">
+    <part name="ResetImageAttributeRequestMsgReq" element="tns:ResetImageAttribute" />
+  </message>
+  
+  <message name="ResetImageAttributeResponseMsg">
+    <part name="ResetImageAttributeRequestMsgResp" element="tns:ResetImageAttributeResponse" />
+  </message>
+  
+  <message name="DescribeImageAttributeRequestMsg">
+    <part name="DescribeImageAttributeRequestMsgReq" element="tns:DescribeImageAttribute" />
+  </message>
+  
+  <message name="DescribeImageAttributeResponseMsg">
+    <part name="DescribeImageAttributeRequestMsgResp" element="tns:DescribeImageAttributeResponse"/>
+  </message>
+
+  <message name="ConfirmProductInstanceRequestMsg">
+    <part name="ConfirmProductInstanceRequestMsgReq" element="tns:ConfirmProductInstance"/>
+  </message>
+
+  <message name="ConfirmProductInstanceResponseMsg">
+    <part name="ConfirmProductInstanceRequestMsgResp" element="tns:ConfirmProductInstanceResponse"/>
+  </message>
+
+  <message name="DescribeAvailabilityZonesRequestMsg">
+    <part name="DescribeAvailabilityZonesRequestMsgReq" element="tns:DescribeAvailabilityZones"/>
+  </message>
+
+  <message name="DescribeAvailabilityZonesResponseMsg">
+    <part name="DescribeAvailabilityZonesRequestMsgResp" element="tns:DescribeAvailabilityZonesResponse"/>
+  </message>
+
+  <message name="DescribeRegionsRequestMsg">
+    <part name="DescribeRegionsRequestMsgReq" element="tns:DescribeRegions"/>
+  </message>
+
+  <message name="DescribeRegionsResponseMsg">
+    <part name="DescribeRegionsRequestMsgResp" element="tns:DescribeRegionsResponse"/>
+  </message>
+
+  <message name='AllocateAddressRequestMsg'>
+    <part name='AllocateAddressRequestMsgReq' element='tns:AllocateAddress'/>
+  </message>
+  
+  <message name='AllocateAddressResponseMsg'>
+    <part name='AllocateAddressResponseMsgResp' element='tns:AllocateAddressResponse'/>
+  </message>
+
+  <message name='ReleaseAddressRequestMsg'>
+    <part name='ReleaseAddressRequestMsgReq' element='tns:ReleaseAddress'/>
+  </message>
+
+  <message name='ReleaseAddressResponseMsg'>
+    <part name='ReleaseAddressResponseMsgResp' element='tns:ReleaseAddressResponse'/>
+  </message>
+
+  <message name='DescribeAddressesRequestMsg'>
+    <part name='DescribeAddressesRequestMsgReq' element='tns:DescribeAddresses'/>
+  </message>
+
+  <message name='DescribeAddressesResponseMsg'>
+    <part name='DescribeAddressesResponseMsgResp' element='tns:DescribeAddressesResponse'/>
+  </message>
+
+  <message name='AssociateAddressRequestMsg'>
+    <part name='AssociateAddressRequestMsgReq' element='tns:AssociateAddress'/>
+  </message>
+
+  <message name='AssociateAddressResponseMsg'>
+    <part name='AssociateAddressResponseMsgResp' element='tns:AssociateAddressResponse'/>
+  </message>
+
+  <message name='DisassociateAddressRequestMsg'>
+    <part name='DisassociateAddressRequestMsgReq' element='tns:DisassociateAddress'/>
+  </message>
+
+  <message name='DisassociateAddressResponseMsg'>
+    <part name='DisassociateAddressResponseMsgResp' element='tns:DisassociateAddressResponse'/>
+  </message>
+
+  <message name="CreateVolumeRequestMsg">
+    <part name="CreateVolumeRequestMsgReq" element="tns:CreateVolume"/>
+  </message>
+
+  <message name="CreateVolumeResponseMsg">
+    <part name="CreateVolumeRequestMsgResp" element="tns:CreateVolumeResponse"/>
+  </message>
+
+  <message name="DeleteVolumeRequestMsg">
+    <part name="DeleteVolumeRequestMsgReq" element="tns:DeleteVolume"/>
+  </message>
+
+  <message name="DeleteVolumeResponseMsg">
+    <part name="DeleteVolumeRequestMsgResp" element="tns:DeleteVolumeResponse"/>
+  </message>
+
+  <message name="DescribeVolumesRequestMsg">
+    <part name="DescribeVolumesRequestMsgReq" element="tns:DescribeVolumes"/>
+  </message>
+
+  <message name="DescribeVolumesResponseMsg">
+    <part name="DescribeVolumesRequestMsgResp" element="tns:DescribeVolumesResponse"/>
+  </message>
+
+  <message name="AttachVolumeRequestMsg">
+    <part name="AttachVolumeRequestMsgReq" element="tns:AttachVolume"/>
+  </message>
+
+  <message name="AttachVolumeResponseMsg">
+    <part name="AttachVolumeResponseMsgResp" element="tns:AttachVolumeResponse"/>
+  </message>
+
+  <message name="DetachVolumeRequestMsg">
+    <part name="DetachVolumeRequestMsgReq" element="tns:DetachVolume"/>
+  </message>
+
+  <message name="DetachVolumeResponseMsg">
+    <part name="DetachVolumeResponseMsgResp" element="tns:DetachVolumeResponse"/>
+  </message>
+
+  <message name="CreateSnapshotRequestMsg">
+    <part name="CreateSnapshotRequestMsgReq" element="tns:CreateSnapshot"/>
+  </message>
+
+  <message name="CreateSnapshotResponseMsg">
+    <part name="CreateSnapshotRequestMsgResp" element="tns:CreateSnapshotResponse"/>
+  </message>
+
+  <message name="DeleteSnapshotRequestMsg">
+    <part name="DeleteSnapshotRequestMsgReq" element="tns:DeleteSnapshot"/>
+  </message>
+
+  <message name="DeleteSnapshotResponseMsg">
+    <part name="DeleteSnapshotRequestMsgResp" element="tns:DeleteSnapshotResponse"/>
+  </message>
+
+  <message name="DescribeSnapshotsRequestMsg">
+    <part name="DescribeSnapshotsRequestMsgReq" element="tns:DescribeSnapshots"/>
+  </message>
+
+  <message name="DescribeSnapshotsResponseMsg">
+    <part name="DescribeSnapshotsRequestMsgResp" element="tns:DescribeSnapshotsResponse"/>
+  </message>
+
+  <message name="ModifySnapshotAttributeRequestMsg">
+    <part name="ModifySnapshotAttributeRequestMsgReq" element="tns:ModifySnapshotAttribute"/>
+  </message>
+
+  <message name="ModifySnapshotAttributeResponseMsg">
+    <part name="ModifySnapshotAttributeResponseMsgResp" element="tns:ModifySnapshotAttributeResponse"/>
+  </message>
+
+  <message name="ResetSnapshotAttributeRequestMsg">
+    <part name="ResetSnapshotAttributeRequestMsgReq" element="tns:ResetSnapshotAttribute"/>
+  </message>
+
+  <message name="ResetSnapshotAttributeResponseMsg">
+    <part name="ResetSnapshotAttributeResponseMsgResp" element="tns:ResetSnapshotAttributeResponse"/>
+  </message>
+
+  <message name="DescribeSnapshotAttributeRequestMsg">
+    <part name="DescribeSnapshotAttributeRequestMsgReq" element="tns:DescribeSnapshotAttribute"/>
+  </message>
+
+  <message name="DescribeSnapshotAttributeResponseMsg">
+    <part name="DescribeSnapshotAttributeResponseMsgResp" element="tns:DescribeSnapshotAttributeResponse"/>
+  </message>
+
+  <message name="BundleInstanceRequestMsg">
+    <part name="BundleInstanceRequestMsgReq" element="tns:BundleInstance" />
+  </message>
+
+  <message name="BundleInstanceResponseMsg">
+    <part name="BundleInstanceResponseMsgResp" element="tns:BundleInstanceResponse" />
+  </message>
+
+  <message name="DescribeBundleTasksRequestMsg">
+    <part name="DescribeBundleTasksRequestMsgReq" element="tns:DescribeBundleTasks" />
+  </message>
+
+  <message name="DescribeBundleTasksResponseMsg">
+    <part name="DescribeBundleTasksResponseMsgResp" element="tns:DescribeBundleTasksResponse" />
+  </message>
+
+  <message name="CancelBundleTaskRequestMsg">
+    <part name="CancelBundleTaskRequestMsgReq" element="tns:CancelBundleTask" />
+  </message>
+
+  <message name="CancelBundleTaskResponseMsg">
+    <part name="CancelBundleTaskResponseMsgResp" element="tns:CancelBundleTaskResponse" />
+  </message>
+
+  <message name="DescribeReservedInstancesOfferingsRequestMsg">
+    <part name="DescribeReservedInstancesOfferingsRequestMsgReq" element="tns:DescribeReservedInstancesOfferings" />
+  </message>
+
+  <message name="DescribeReservedInstancesOfferingsResponseMsg">
+    <part name="DescribeReservedInstancesOfferingsResponseMsgResp" element="tns:DescribeReservedInstancesOfferingsResponse" />
+  </message>
+
+  <message name="PurchaseReservedInstancesOfferingRequestMsg">
+    <part name="PurchaseReservedInstancesOfferingRequestMsgReq" element="tns:PurchaseReservedInstancesOffering" />
+  </message>
+
+  <message name="PurchaseReservedInstancesOfferingResponseMsg">
+    <part name="PurchaseReservedInstancesOfferingResponseMsgResp" element="tns:PurchaseReservedInstancesOfferingResponse" />
+  </message>
+
+  <message name="DescribeReservedInstancesRequestMsg">
+    <part name="DescribeReservedInstancesRequestMsgReq" element="tns:DescribeReservedInstances" />
+  </message>
+
+  <message name="DescribeReservedInstancesResponseMsg">
+    <part name="DescribeReservedInstancesResponseMsgResp" element="tns:DescribeReservedInstancesResponse" />
+  </message>
+
+  <message name="MonitorInstancesRequestMsg">
+    <part name="MonitorInstancesRequestMsgReq" element="tns:MonitorInstances" />
+  </message>
+  
+  <message name="MonitorInstancesResponseMsg">
+    <part name="MonitorInstancesResponseMsgResp" element="tns:MonitorInstancesResponse" />
+  </message>
+  
+  <message name="UnmonitorInstancesRequestMsg">
+    <part name="UnmonitorInstancesRequestMsgReq" element="tns:UnmonitorInstances" />
+  </message>
+  
+  <message name="UnmonitorInstancesResponseMsg">
+    <part name="UnmonitorInstancesResponseMsgResp" element="tns:UnmonitorInstancesResponse" />
+  </message>
+
+  <message name="CreateCustomerGatewayRequestMsg">
+    <part name="CreateCustomerGatewayRequestMsgReq" element="tns:CreateCustomerGateway" />
+  </message>
+  
+  <message name="CreateCustomerGatewayResponseMsg">
+    <part name="CreateCustomerGatewayResponseMsgResp" element="tns:CreateCustomerGatewayResponse" />
+  </message>
+  
+  <message name="DeleteCustomerGatewayRequestMsg">
+    <part name="DeleteCustomerGatewayRequestMsgReq" element="tns:DeleteCustomerGateway" />
+  </message>
+  
+  <message name="DeleteCustomerGatewayResponseMsg">
+    <part name="DeleteCustomerGatewayResponseMsgResp" element="tns:DeleteCustomerGatewayResponse" />
+  </message>
+  
+  <message name="DescribeCustomerGatewaysRequestMsg">
+    <part name="DescribeCustomerGatewaysRequestMsgReq" element="tns:DescribeCustomerGateways" />
+  </message>
+  
+  <message name="DescribeCustomerGatewaysResponseMsg">
+    <part name="DescribeCustomerGatewaysResponseMsgResp" element="tns:DescribeCustomerGatewaysResponse" />
+  </message>
+  
+  <message name="CreateVpnGatewayRequestMsg">
+    <part name="CreateVpnGatewayRequestMsgReq" element="tns:CreateVpnGateway" />
+  </message>
+  
+  <message name="CreateVpnGatewayResponseMsg">
+    <part name="CreateVpnGatewayResponseMsgResp" element="tns:CreateVpnGatewayResponse" />
+  </message>
+  
+  <message name="DeleteVpnGatewayRequestMsg">
+    <part name="DeleteVpnGatewayRequestMsgReq" element="tns:DeleteVpnGateway" />
+  </message>
+  
+  <message name="DeleteVpnGatewayResponseMsg">
+    <part name="DeleteVpnGatewayResponseMsgResp" element="tns:DeleteVpnGatewayResponse" />
+  </message>
+  
+  <message name="DescribeVpnGatewaysRequestMsg">
+    <part name="DescribeVpnGatewaysRequestMsgReq" element="tns:DescribeVpnGateways" />
+  </message>
+  
+  <message name="DescribeVpnGatewaysResponseMsg">
+    <part name="DescribeVpnGatewaysResponseMsgResp" element="tns:DescribeVpnGatewaysResponse" />
+  </message>
+  
+  <message name="CreateVpnConnectionRequestMsg">
+    <part name="CreateVpnConnectionRequestMsgReq" element="tns:CreateVpnConnection" />
+  </message>
+  
+  <message name="CreateVpnConnectionResponseMsg">
+    <part name="CreateVpnConnectionResponseMsgResp" element="tns:CreateVpnConnectionResponse" />
+  </message>
+  
+  <message name="DeleteVpnConnectionRequestMsg">
+    <part name="DeleteVpnConnectionRequestMsgReq" element="tns:DeleteVpnConnection" />
+  </message>
+  
+  <message name="DeleteVpnConnectionResponseMsg">
+    <part name="DeleteVpnConnectionResponseMsgResp" element="tns:DeleteVpnConnectionResponse" />
+  </message>
+  
+  <message name="DescribeVpnConnectionsRequestMsg">
+    <part name="DescribeVpnConnectionsRequestMsgReq" element="tns:DescribeVpnConnections" />
+  </message>
+  
+  <message name="DescribeVpnConnectionsResponseMsg">
+    <part name="DescribeVpnConnectionsResponseMsgResp" element="tns:DescribeVpnConnectionsResponse" />
+  </message>
+  
+  <message name="AttachVpnGatewayRequestMsg">
+    <part name="AttachVpnGatewayRequestMsgReq" element="tns:AttachVpnGateway" />
+  </message>
+  
+  <message name="AttachVpnGatewayResponseMsg">
+    <part name="AttachVpnGatewayResponseMsgResp" element="tns:AttachVpnGatewayResponse" />
+  </message>
+  
+  <message name="DetachVpnGatewayRequestMsg">
+    <part name="DetachVpnGatewayRequestMsgReq" element="tns:DetachVpnGateway" />
+  </message>
+  
+  <message name="DetachVpnGatewayResponseMsg">
+    <part name="DetachVpnGatewayResponseMsgResp" element="tns:DetachVpnGatewayResponse" />
+  </message>
+  
+  <message name="CreateVpcRequestMsg">
+    <part name="CreateVpcRequestMsgReq" element="tns:CreateVpc" />
+  </message>
+  
+  <message name="CreateVpcResponseMsg">
+    <part name="CreateVpcResponseMsgResp" element="tns:CreateVpcResponse" />
+  </message>
+  
+  <message name="DeleteVpcRequestMsg">
+    <part name="DeleteVpcRequestMsgReq" element="tns:DeleteVpc" />
+  </message>
+  
+  <message name="DeleteVpcResponseMsg">
+    <part name="DeleteVpcResponseMsgResp" element="tns:DeleteVpcResponse" />
+  </message>
+  
+  <message name="DescribeVpcsRequestMsg">
+    <part name="DescribeVpcsRequestMsgReq" element="tns:DescribeVpcs" />
+  </message>
+  
+  <message name="DescribeVpcsResponseMsg">
+    <part name="DescribeVpcsResponseMsgResp" element="tns:DescribeVpcsResponse" />
+  </message>
+  
+  <message name="CreateSubnetRequestMsg">
+    <part name="CreateSubnetRequestMsgReq" element="tns:CreateSubnet" />
+  </message>
+  
+  <message name="CreateSubnetResponseMsg">
+    <part name="CreateSubnetResponseMsgResp" element="tns:CreateSubnetResponse" />
+  </message>
+  
+  <message name="DeleteSubnetRequestMsg">
+    <part name="DeleteSubnetRequestMsgReq" element="tns:DeleteSubnet" />
+  </message>
+  
+  <message name="DeleteSubnetResponseMsg">
+    <part name="DeleteSubnetResponseMsgResp" element="tns:DeleteSubnetResponse" />
+  </message>
+  
+  <message name="DescribeSubnetsRequestMsg">
+    <part name="DescribeSubnetsRequestMsgReq" element="tns:DescribeSubnets" />
+  </message>
+  
+  <message name="DescribeSubnetsResponseMsg">
+    <part name="DescribeSubnetsResponseMsgResp" element="tns:DescribeSubnetsResponse" />
+  </message>
+  
+  <message name="CreateDhcpOptionsRequestMsg">
+    <part name="CreateDhcpOptionsRequestMsgReq" element="tns:CreateDhcpOptions" />
+  </message>
+  
+  <message name="CreateDhcpOptionsResponseMsg">
+    <part name="CreateDhcpOptionsResponseMsgResp" element="tns:CreateDhcpOptionsResponse" />
+  </message>
+  
+  <message name="DescribeDhcpOptionsRequestMsg">
+    <part name="DescribeDhcpOptionsRequestMsgReq" element="tns:DescribeDhcpOptions" />
+  </message>
+  
+  <message name="DescribeDhcpOptionsResponseMsg">
+    <part name="DescribeDhcpOptionsResponseMsgResp" element="tns:DescribeDhcpOptionsResponse" />
+  </message>
+  
+  <message name="DeleteDhcpOptionsRequestMsg">
+    <part name="DeleteDhcpOptionsRequestMsgReq" element="tns:DeleteDhcpOptions" />
+  </message>
+  
+  <message name="DeleteDhcpOptionsResponseMsg">
+    <part name="DeleteDhcpOptionsResponseMsgResp" element="tns:DeleteDhcpOptionsResponse" />
+  </message>
+  
+  <message name="AssociateDhcpOptionsRequestMsg">
+    <part name="AssociateDhcpOptionsRequestMsgReq" element="tns:AssociateDhcpOptions" />
+  </message>
+  
+  <message name="AssociateDhcpOptionsResponseMsg">
+    <part name="AssociateDhcpOptionsResponseMsgResp" element="tns:AssociateDhcpOptionsResponse" />
+  </message>
+
+  <message name="RequestSpotInstancesRequestMsg">
+    <part name="RequestSpotInstancesRequestMsgReq" element="tns:RequestSpotInstances" />
+  </message>
+
+  <message name="RequestSpotInstancesResponseMsg">
+    <part name="RequestSpotInstancesResponseMsgResp" element="tns:RequestSpotInstancesResponse" />
+  </message>
+
+  <message name="DescribeSpotInstanceRequestsRequestMsg">
+    <part name="DescribeSpotInstanceRequestsRequestMsgReq" element="tns:DescribeSpotInstanceRequests" />
+  </message>
+
+  <message name="DescribeSpotInstanceRequestsResponseMsg">
+    <part name="DescribeSpotInstanceRequestsResponseMsgResp" element="tns:DescribeSpotInstanceRequestsResponse" />
+  </message>
+
+  <message name="CancelSpotInstanceRequestsRequestMsg">
+    <part name="CancelSpotInstanceRequestsRequestMsgReq" element="tns:CancelSpotInstanceRequests" />
+  </message>
+
+  <message name="CancelSpotInstanceRequestsResponseMsg">
+    <part name="CancelSpotInstanceRequestsResponseMsgResp" element="tns:CancelSpotInstanceRequestsResponse" />
+  </message>
+
+  <message name="DescribeSpotPriceHistoryRequestMsg">
+    <part name="DescribeSpotPriceHistoryRequestMsgReq" element="tns:DescribeSpotPriceHistory" />
+  </message>
+
+  <message name="DescribeSpotPriceHistoryResponseMsg">
+    <part name="DescribeSpotPriceHistoryResponseMsgResp" element="tns:DescribeSpotPriceHistoryResponse" />
+  </message>
+
+  <message name="CreateSpotDatafeedSubscriptionRequestMsg">
+    <part name="CreateSpotDatafeedSubscriptionRequestMsgReq" element="tns:CreateSpotDatafeedSubscription" />
+  </message>
+
+  <message name="CreateSpotDatafeedSubscriptionResponseMsg">
+    <part name="CreateSpotDatafeedSubscriptionResponseMsgResp" element="tns:CreateSpotDatafeedSubscriptionResponse" />
+  </message>
+
+  <message name="DescribeSpotDatafeedSubscriptionRequestMsg">
+    <part name="DescribeSpotDatafeedSubscriptionRequestMsgReq" element="tns:DescribeSpotDatafeedSubscription" />
+  </message>
+
+  <message name="DescribeSpotDatafeedSubscriptionResponseMsg">
+    <part name="DescribeSpotDatafeedSubscriptionResponseMsgResp" element="tns:DescribeSpotDatafeedSubscriptionResponse" />
+  </message>
+
+  <message name="DeleteSpotDatafeedSubscriptionRequestMsg">
+    <part name="DeleteSpotDatafeedSubscriptionRequestMsgReq" element="tns:DeleteSpotDatafeedSubscription" />
+  </message>
+
+  <message name="DeleteSpotDatafeedSubscriptionResponseMsg">
+    <part name="DeleteSpotDatafeedSubscriptionResponseMsgResp" element="tns:DeleteSpotDatafeedSubscriptionResponse" />
+  </message>
+  
+  <portType name="AmazonEC2PortType">
+    <operation name="CreateImage">
+      <input message="tns:CreateImageRequestMsg" />
+      <output message="tns:CreateImageResponseMsg" />
+    </operation>
+    <operation name="RegisterImage">
+      <input message="tns:RegisterImageRequestMsg" />
+      <output message="tns:RegisterImageResponseMsg" />
+    </operation>
+    <operation name="DeregisterImage">
+      <input message="tns:DeregisterImageRequestMsg" />
+      <output message="tns:DeregisterImageResponseMsg" />
+    </operation>
+    <operation name="RunInstances">
+      <input message="tns:RunInstancesRequestMsg" />
+      <output message="tns:RunInstancesResponseMsg" />
+    </operation>
+    <operation name="CreateKeyPair">
+      <input message="tns:CreateKeyPairRequestMsg" />
+      <output message="tns:CreateKeyPairResponseMsg" />
+    </operation>
+    <operation name="DescribeKeyPairs">
+      <input message="tns:DescribeKeyPairsRequestMsg" />
+      <output message="tns:DescribeKeyPairsResponseMsg" />
+    </operation>
+    <operation name="DeleteKeyPair">
+      <input message="tns:DeleteKeyPairRequestMsg" />
+      <output message="tns:DeleteKeyPairResponseMsg" />
+    </operation>
+    <operation name="GetConsoleOutput">
+      <input message="tns:GetConsoleOutputRequestMsg" />
+      <output message="tns:GetConsoleOutputResponseMsg" />
+    </operation>
+    <operation name="GetPasswordData">
+      <input message="tns:GetPasswordDataRequestMsg" />
+      <output message="tns:GetPasswordDataResponseMsg" />
+    </operation>
+    <operation name="TerminateInstances">
+      <input message="tns:TerminateInstancesRequestMsg" />
+      <output message="tns:TerminateInstancesResponseMsg" />
+    </operation>
+    <operation name="StopInstances">
+      <input message="tns:StopInstancesRequestMsg" />
+      <output message="tns:StopInstancesResponseMsg" />
+    </operation>
+    <operation name="StartInstances">
+      <input message="tns:StartInstancesRequestMsg" />
+      <output message="tns:StartInstancesResponseMsg" />
+    </operation>
+    <operation name="RebootInstances">
+      <input message="tns:RebootInstancesRequestMsg" />
+      <output message="tns:RebootInstancesResponseMsg" />
+    </operation>
+    <operation name="DescribeInstances">
+      <input message="tns:DescribeInstancesRequestMsg" />
+      <output message="tns:DescribeInstancesResponseMsg" />
+    </operation>
+    <operation name="DescribeImages">
+      <input message="tns:DescribeImagesRequestMsg" />
+      <output message="tns:DescribeImagesResponseMsg" />
+    </operation>
+    <operation name="CreateSecurityGroup">
+      <input message="tns:CreateSecurityGroupRequestMsg" />
+      <output message="tns:CreateSecurityGroupResponseMsg" />
+    </operation>
+    <operation name="DeleteSecurityGroup">
+      <input message="tns:DeleteSecurityGroupRequestMsg" />
+      <output message="tns:DeleteSecurityGroupResponseMsg" />
+    </operation>
+    <operation name="DescribeSecurityGroups">
+      <input message="tns:DescribeSecurityGroupsRequestMsg" />
+      <output message="tns:DescribeSecurityGroupsResponseMsg" />
+    </operation>
+    <operation name="AuthorizeSecurityGroupIngress">
+      <input message="tns:AuthorizeSecurityGroupIngressRequestMsg" />
+      <output message="tns:AuthorizeSecurityGroupIngressResponseMsg" />
+    </operation>
+    <operation name="RevokeSecurityGroupIngress">
+      <input message="tns:RevokeSecurityGroupIngressRequestMsg" />
+      <output message="tns:RevokeSecurityGroupIngressResponseMsg" />
+    </operation>
+	<operation name="ModifyInstanceAttribute">
+      <input message="tns:ModifyInstanceAttributeRequestMsg"/>
+      <output message="tns:ModifyInstanceAttributeResponseMsg"/>
+    </operation>
+    <operation name="ResetInstanceAttribute">
+      <input message="tns:ResetInstanceAttributeRequestMsg"/>
+      <output message="tns:ResetInstanceAttributeResponseMsg"/>
+    </operation>
+    <operation name="DescribeInstanceAttribute">
+      <input message="tns:DescribeInstanceAttributeRequestMsg"/>
+      <output message="tns:DescribeInstanceAttributeResponseMsg"/>
+    </operation>
+    <operation name="ModifyImageAttribute">
+      <input message="tns:ModifyImageAttributeRequestMsg"/>
+      <output message="tns:ModifyImageAttributeResponseMsg"/>
+    </operation>
+    <operation name="ResetImageAttribute">
+      <input message="tns:ResetImageAttributeRequestMsg"/>
+      <output message="tns:ResetImageAttributeResponseMsg"/>
+    </operation>
+    <operation name="DescribeImageAttribute">
+      <input message="tns:DescribeImageAttributeRequestMsg"/>
+      <output message="tns:DescribeImageAttributeResponseMsg"/>
+    </operation>
+    <operation name="ConfirmProductInstance">
+      <input message="tns:ConfirmProductInstanceRequestMsg"/>
+      <output message="tns:ConfirmProductInstanceResponseMsg"/>
+    </operation>
+    <operation name="DescribeAvailabilityZones">
+      <input message="tns:DescribeAvailabilityZonesRequestMsg"/>
+      <output message="tns:DescribeAvailabilityZonesResponseMsg"/>
+    </operation>
+    <operation name='AllocateAddress'>
+      <input message='tns:AllocateAddressRequestMsg'/>
+      <output message='tns:AllocateAddressResponseMsg'/>
+    </operation>
+    <operation name='ReleaseAddress'>
+      <input message='tns:ReleaseAddressRequestMsg'/>
+      <output message='tns:ReleaseAddressResponseMsg'/>
+    </operation>
+    <operation name='DescribeAddresses'>
+      <input message='tns:DescribeAddressesRequestMsg'/>
+      <output message='tns:DescribeAddressesResponseMsg'/>
+    </operation>
+    <operation name='AssociateAddress'>
+      <input message='tns:AssociateAddressRequestMsg'/>
+      <output message='tns:AssociateAddressResponseMsg'/>
+    </operation>
+    <operation name='DisassociateAddress'>
+      <input message='tns:DisassociateAddressRequestMsg'/>
+      <output message='tns:DisassociateAddressResponseMsg'/>
+    </operation>
+    <operation name="CreateVolume">
+      <input message="tns:CreateVolumeRequestMsg"/>
+      <output message="tns:CreateVolumeResponseMsg"/>
+    </operation>
+    <operation name="DeleteVolume">
+      <input message="tns:DeleteVolumeRequestMsg"/>
+      <output message="tns:DeleteVolumeResponseMsg"/>
+    </operation>
+    <operation name="DescribeVolumes">
+      <input message="tns:DescribeVolumesRequestMsg"/>
+      <output message="tns:DescribeVolumesResponseMsg"/>
+    </operation>
+    <operation name="AttachVolume">
+      <input message="tns:AttachVolumeRequestMsg"/>
+      <output message="tns:AttachVolumeResponseMsg"/>
+    </operation>
+    <operation name="DetachVolume">
+      <input message="tns:DetachVolumeRequestMsg"/>
+      <output message="tns:DetachVolumeResponseMsg"/>
+    </operation>
+    <operation name="CreateSnapshot">
+      <input message="tns:CreateSnapshotRequestMsg"/>
+      <output message="tns:CreateSnapshotResponseMsg"/>
+    </operation>
+    <operation name="DeleteSnapshot">
+      <input message="tns:DeleteSnapshotRequestMsg"/>
+      <output message="tns:DeleteSnapshotResponseMsg"/>
+    </operation>
+    <operation name="DescribeSnapshots">
+      <input message="tns:DescribeSnapshotsRequestMsg"/>
+      <output message="tns:DescribeSnapshotsResponseMsg"/>
+    </operation>
+    <operation name="ModifySnapshotAttribute">
+      <input message="tns:ModifySnapshotAttributeRequestMsg"/>
+      <output message="tns:ModifySnapshotAttributeResponseMsg"/>
+    </operation>
+    <operation name="ResetSnapshotAttribute">
+      <input message="tns:ResetSnapshotAttributeRequestMsg"/>
+      <output message="tns:ResetSnapshotAttributeResponseMsg"/>
+    </operation>
+    <operation name="DescribeSnapshotAttribute">
+      <input message="tns:DescribeSnapshotAttributeRequestMsg"/>
+      <output message="tns:DescribeSnapshotAttributeResponseMsg"/>
+    </operation>
+    <operation name="BundleInstance">
+      <input message="tns:BundleInstanceRequestMsg" />
+      <output message="tns:BundleInstanceResponseMsg" />
+    </operation>
+    <operation name="DescribeBundleTasks">
+      <input message="tns:DescribeBundleTasksRequestMsg" />
+      <output message="tns:DescribeBundleTasksResponseMsg" />
+    </operation>
+    <operation name="CancelBundleTask">
+      <input message="tns:CancelBundleTaskRequestMsg" />
+      <output message="tns:CancelBundleTaskResponseMsg" />
+    </operation>
+    <operation name="DescribeRegions">
+      <input message="tns:DescribeRegionsRequestMsg"/>
+      <output message="tns:DescribeRegionsResponseMsg"/>
+    </operation>
+    <operation name="DescribeReservedInstancesOfferings">
+      <input message="tns:DescribeReservedInstancesOfferingsRequestMsg"/>
+      <output message="tns:DescribeReservedInstancesOfferingsResponseMsg"/>
+    </operation>
+    <operation name="PurchaseReservedInstancesOffering">
+      <input message="tns:PurchaseReservedInstancesOfferingRequestMsg"/>
+      <output message="tns:PurchaseReservedInstancesOfferingResponseMsg"/>
+    </operation>
+    <operation name="DescribeReservedInstances">
+      <input message="tns:DescribeReservedInstancesRequestMsg"/>
+      <output message="tns:DescribeReservedInstancesResponseMsg"/>
+    </operation>    
+    <operation name="MonitorInstances">
+      <input message="tns:MonitorInstancesRequestMsg"/>
+      <output message="tns:MonitorInstancesResponseMsg"/>
+    </operation>    
+    <operation name="UnmonitorInstances">
+      <input message="tns:UnmonitorInstancesRequestMsg"/>
+      <output message="tns:UnmonitorInstancesResponseMsg"/>
+    </operation>
+    <operation name="CreateCustomerGateway">
+      <input message="tns:CreateCustomerGatewayRequestMsg"/>
+      <output message="tns:CreateCustomerGatewayResponseMsg"/>
+    </operation>
+    <operation name="DeleteCustomerGateway">
+      <input message="tns:DeleteCustomerGatewayRequestMsg"/>
+      <output message="tns:DeleteCustomerGatewayResponseMsg"/>
+    </operation>
+    <operation name="DescribeCustomerGateways">
+      <input message="tns:DescribeCustomerGatewaysRequestMsg"/>
+      <output message="tns:DescribeCustomerGatewaysResponseMsg"/>
+    </operation>
+    <operation name="CreateVpnGateway">
+      <input message="tns:CreateVpnGatewayRequestMsg"/>
+      <output message="tns:CreateVpnGatewayResponseMsg"/>
+    </operation>
+    <operation name="DeleteVpnGateway">
+      <input message="tns:DeleteVpnGatewayRequestMsg"/>
+      <output message="tns:DeleteVpnGatewayResponseMsg"/>
+    </operation>
+    <operation name="DescribeVpnGateways">
+      <input message="tns:DescribeVpnGatewaysRequestMsg"/>
+      <output message="tns:DescribeVpnGatewaysResponseMsg"/>
+    </operation>
+    <operation name="CreateVpnConnection">
+      <input message="tns:CreateVpnConnectionRequestMsg"/>
+      <output message="tns:CreateVpnConnectionResponseMsg"/>
+    </operation>
+    <operation name="DeleteVpnConnection">
+      <input message="tns:DeleteVpnConnectionRequestMsg"/>
+      <output message="tns:DeleteVpnConnectionResponseMsg"/>
+    </operation>
+    <operation name="DescribeVpnConnections">
+      <input message="tns:DescribeVpnConnectionsRequestMsg"/>
+      <output message="tns:DescribeVpnConnectionsResponseMsg"/>
+    </operation>
+    <operation name="AttachVpnGateway">
+      <input message="tns:AttachVpnGatewayRequestMsg"/>
+      <output message="tns:AttachVpnGatewayResponseMsg"/>
+    </operation>
+    <operation name="DetachVpnGateway">
+      <input message="tns:DetachVpnGatewayRequestMsg"/>
+      <output message="tns:DetachVpnGatewayResponseMsg"/>
+    </operation>
+    <operation name="CreateVpc">
+      <input message="tns:CreateVpcRequestMsg"/>
+      <output message="tns:CreateVpcResponseMsg"/>
+    </operation>
+    <operation name="DeleteVpc">
+      <input message="tns:DeleteVpcRequestMsg"/>
+      <output message="tns:DeleteVpcResponseMsg"/>
+    </operation>
+    <operation name="DescribeVpcs">
+      <input message="tns:DescribeVpcsRequestMsg"/>
+      <output message="tns:DescribeVpcsResponseMsg"/>
+    </operation>
+    <operation name="CreateSubnet">
+      <input message="tns:CreateSubnetRequestMsg"/>
+      <output message="tns:CreateSubnetResponseMsg"/>
+    </operation>
+    <operation name="DeleteSubnet">
+      <input message="tns:DeleteSubnetRequestMsg"/>
+      <output message="tns:DeleteSubnetResponseMsg"/>
+    </operation>
+    <operation name="DescribeSubnets">
+      <input message="tns:DescribeSubnetsRequestMsg"/>
+      <output message="tns:DescribeSubnetsResponseMsg"/>
+    </operation>
+    <operation name="CreateDhcpOptions">
+      <input message="tns:CreateDhcpOptionsRequestMsg"/>
+      <output message="tns:CreateDhcpOptionsResponseMsg"/>
+    </operation>
+    <operation name="DescribeDhcpOptions">
+      <input message="tns:DescribeDhcpOptionsRequestMsg"/>
+      <output message="tns:DescribeDhcpOptionsResponseMsg"/>
+    </operation>
+    <operation name="DeleteDhcpOptions">
+      <input message="tns:DeleteDhcpOptionsRequestMsg"/>
+      <output message="tns:DeleteDhcpOptionsResponseMsg"/>
+    </operation>
+    <operation name="AssociateDhcpOptions">
+      <input message="tns:AssociateDhcpOptionsRequestMsg"/>
+      <output message="tns:AssociateDhcpOptionsResponseMsg"/>
+    </operation>
+    <operation name="RequestSpotInstances">
+      <input message="tns:RequestSpotInstancesRequestMsg" />
+      <output message="tns:RequestSpotInstancesResponseMsg" />
+    </operation>
+    <operation name="DescribeSpotInstanceRequests">
+      <input message="tns:DescribeSpotInstanceRequestsRequestMsg" />
+      <output message="tns:DescribeSpotInstanceRequestsResponseMsg" />
+    </operation>
+    <operation name="CancelSpotInstanceRequests">
+      <input message="tns:CancelSpotInstanceRequestsRequestMsg" />
+      <output message="tns:CancelSpotInstanceRequestsResponseMsg" />
+    </operation>
+    <operation name="DescribeSpotPriceHistory">
+      <input message="tns:DescribeSpotPriceHistoryRequestMsg" />
+      <output message="tns:DescribeSpotPriceHistoryResponseMsg" />
+    </operation>
+    <operation name="CreateSpotDatafeedSubscription">
+      <input message="tns:CreateSpotDatafeedSubscriptionRequestMsg" />
+      <output message="tns:CreateSpotDatafeedSubscriptionResponseMsg" />
+    </operation>
+    <operation name="DescribeSpotDatafeedSubscription">
+      <input message="tns:DescribeSpotDatafeedSubscriptionRequestMsg" />
+      <output message="tns:DescribeSpotDatafeedSubscriptionResponseMsg" />
+    </operation>
+    <operation name="DeleteSpotDatafeedSubscription">
+      <input message="tns:DeleteSpotDatafeedSubscriptionRequestMsg" />
+      <output message="tns:DeleteSpotDatafeedSubscriptionResponseMsg" />
+    </operation>
+    
+  </portType>
+
+  <binding name="AmazonEC2Binding" type="tns:AmazonEC2PortType">
+    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"; />
+
+    <operation name="CreateImage">
+      <soap:operation soapAction="CreateImage" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="RegisterImage">
+      <soap:operation soapAction="RegisterImage" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DeregisterImage">
+      <soap:operation soapAction="DeregisterImage" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="CreateKeyPair">
+      <soap:operation soapAction="CreateKeyPair" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeKeyPairs">
+      <soap:operation soapAction="DescribeKeyPairs" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DeleteKeyPair">
+      <soap:operation soapAction="DeleteKeyPair" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="RunInstances">
+      <soap:operation soapAction="RunInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="GetConsoleOutput">
+      <soap:operation soapAction="GetConsoleOutput" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="GetPasswordData">
+      <soap:operation soapAction="GetPasswordData" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="TerminateInstances">
+      <soap:operation soapAction="TerminateInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+
+    <operation name="StopInstances">
+      <soap:operation soapAction="StopInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="StartInstances">
+      <soap:operation soapAction="StartInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="RebootInstances">
+      <soap:operation soapAction="RebootInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeInstances">
+      <soap:operation soapAction="DescribeInstances" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeImages">
+      <soap:operation soapAction="DescribeImages" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="CreateSecurityGroup">
+      <soap:operation soapAction="CreateSecurityGroup" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DeleteSecurityGroup">
+      <soap:operation soapAction="DeleteSecurityGroup" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeSecurityGroups">
+      <soap:operation soapAction="DescribeSecurityGroups" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="AuthorizeSecurityGroupIngress">
+      <soap:operation soapAction="AuthorizeSecurityGroupIngress" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="RevokeSecurityGroupIngress">
+      <soap:operation soapAction="RevokeSecurityGroupIngress" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+	<operation name="ModifyInstanceAttribute">
+      <soap:operation soapAction="ModifyInstanceAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="ResetInstanceAttribute">
+      <soap:operation soapAction="ResetInstanceAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DescribeInstanceAttribute">
+      <soap:operation soapAction="DescribeInstanceAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+	
+    <operation name="ModifyImageAttribute">
+      <soap:operation soapAction="ModifyImageAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="ResetImageAttribute">
+      <soap:operation soapAction="ResetImageAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DescribeImageAttribute">
+      <soap:operation soapAction="DescribeImageAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="ConfirmProductInstance">
+      <soap:operation soapAction="ConfirmProductInstance" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeAvailabilityZones">
+      <soap:operation soapAction="DescribeAvailabilityZones" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name='AllocateAddress'>
+      <soap:operation soapAction='AllocateAddress'/>
+      <input>
+        <soap:body use='literal'/>
+      </input>
+      <output>
+        <soap:body use='literal'/>
+      </output>
+    </operation>
+
+    <operation name='ReleaseAddress'>
+      <soap:operation soapAction='ReleaseAddress'/>
+      <input>
+        <soap:body use='literal'/>
+      </input>
+      <output>
+        <soap:body use='literal'/>
+      </output>
+    </operation>
+
+    <operation name='DescribeAddresses'>
+      <soap:operation soapAction='DescribeAddresses'/>
+      <input>
+        <soap:body use='literal'/>
+      </input>
+      <output>
+        <soap:body use='literal'/>
+      </output>
+    </operation>
+
+    <operation name='AssociateAddress'>
+      <soap:operation soapAction='AssociateAddress'/>
+      <input>
+        <soap:body use='literal'/>
+      </input>
+      <output>
+        <soap:body use='literal'/>
+      </output>
+    </operation>
+
+    <operation name='DisassociateAddress'>
+      <soap:operation soapAction='DisassociateAddress'/>
+      <input>
+        <soap:body use='literal'/>
+      </input>
+      <output>
+        <soap:body use='literal'/>
+      </output>
+    </operation>
+
+    <operation name="CreateVolume">
+      <soap:operation soapAction="CreateVolume" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DeleteVolume">
+      <soap:operation soapAction="DeleteVolume" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DescribeVolumes">
+      <soap:operation soapAction="DescribeVolumes" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="AttachVolume">
+      <soap:operation soapAction="AttachVolume" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DetachVolume">
+      <soap:operation soapAction="DetachVolume" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="CreateSnapshot">
+      <soap:operation soapAction="CreateSnapshot" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DeleteSnapshot">
+      <soap:operation soapAction="DeleteSnapshot" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="DescribeSnapshots">
+      <soap:operation soapAction="DescribeSnapshots" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="ModifySnapshotAttribute">
+      <soap:operation soapAction="ModifySnapshotAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="ResetSnapshotAttribute">
+      <soap:operation soapAction="ResetSnapshotAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeSnapshotAttribute">
+      <soap:operation soapAction="DescribeSnapshotAttribute" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="BundleInstance">
+      <soap:operation soapAction="BundleInstance" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeBundleTasks">
+      <soap:operation soapAction="DescribeBundleTasks" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="CancelBundleTask">
+      <soap:operation soapAction="CancelBundleTask" />
+      <input>
+        <soap:body use="literal" />
+      </input>
+      <output>
+        <soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeRegions">
+      <soap:operation soapAction="DescribeRegions" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeReservedInstancesOfferings">
+      <soap:operation soapAction="DescribeReservedInstancesOfferings" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="PurchaseReservedInstancesOffering">
+      <soap:operation soapAction="PurchaseReservedInstancesOffering" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeReservedInstances">
+      <soap:operation soapAction="DescribeReservedInstances" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+    
+    <operation name="MonitorInstances">
+      <soap:operation soapAction="MonitorInstances" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="UnmonitorInstances">
+      <soap:operation soapAction="UnmonitorInstances" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateCustomerGateway">
+      <soap:operation soapAction="CreateCustomerGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteCustomerGateway">
+      <soap:operation soapAction="DeleteCustomerGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeCustomerGateways">
+      <soap:operation soapAction="DescribeCustomerGateways" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateVpnGateway">
+      <soap:operation soapAction="CreateVpnGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteVpnGateway">
+      <soap:operation soapAction="DeleteVpnGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeVpnGateways">
+      <soap:operation soapAction="DescribeVpnGateways" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateVpnConnection">
+      <soap:operation soapAction="CreateVpnConnection" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteVpnConnection">
+      <soap:operation soapAction="DeleteVpnConnection" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeVpnConnections">
+      <soap:operation soapAction="DescribeVpnConnections" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="AttachVpnGateway">
+      <soap:operation soapAction="AttachVpnGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DetachVpnGateway">
+      <soap:operation soapAction="DetachVpnGateway" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateVpc">
+      <soap:operation soapAction="CreateVpc" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteVpc">
+      <soap:operation soapAction="DeleteVpc" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeVpcs">
+      <soap:operation soapAction="DescribeVpcs" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateSubnet">
+      <soap:operation soapAction="CreateSubnet" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteSubnet">
+      <soap:operation soapAction="DeleteSubnet" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeSubnets">
+      <soap:operation soapAction="DescribeSubnets" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="CreateDhcpOptions">
+      <soap:operation soapAction="CreateDhcpOptions" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DescribeDhcpOptions">
+      <soap:operation soapAction="DescribeDhcpOptions" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="DeleteDhcpOptions">
+      <soap:operation soapAction="DeleteDhcpOptions" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="AssociateDhcpOptions">
+      <soap:operation soapAction="AssociateDhcpOptions" />
+      <input>
+        <soap:body use="literal"/>
+      </input>
+      <output>
+        <soap:body use="literal"/>
+      </output>
+    </operation>
+
+    <operation name="RequestSpotInstances">
+      <soap:operation soapAction="RequestSpotInstances" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+    </operation>
+
+    <operation name="DescribeSpotInstanceRequests">
+      <soap:operation soapAction="DescribeSpotInstanceRequests" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+    </operation>
+
+   <operation name="CancelSpotInstanceRequests">
+      <soap:operation soapAction="CancelSpotInstanceRequests" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+   </operation>
+
+   <operation name="DescribeSpotPriceHistory">
+      <soap:operation soapAction="DescribeSpotPriceHistory" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+   </operation>
+    
+   <operation name="CreateSpotDatafeedSubscription">
+      <soap:operation soapAction="CreateSpotDatafeedSubscription" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+   </operation>
+
+   <operation name="DescribeSpotDatafeedSubscription">
+      <soap:operation soapAction="DescribeSpotDatafeedSubscription" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+   </operation>
+
+   <operation name="DeleteSpotDatafeedSubscription">
+      <soap:operation soapAction="DeleteSpotDatafeedSubscription" />
+      <input>
+	<soap:body use="literal" />
+      </input>
+      <output>
+	<soap:body use="literal" />
+      </output>
+   </operation>
+
+  </binding>
+
+  <service name="AmazonEC2">
+    <port name="AmazonEC2Port" binding="tns:AmazonEC2Binding">
+      <soap:address location="https://ec2.amazonaws.com/"; />
+    </port>
+  </service>
+
+</definitions>
\ No newline at end of file