<?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/2007-01-19/"
	targetNamespace="http://ec2.amazonaws.com/doc/2007-01-19/">

	<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/2007-01-19/"
			   targetNamespace="http://ec2.amazonaws.com/doc/2007-01-19/"    
			   elementFormDefault="qualified">
		  
		  <xs:annotation>
		    <xs:documentation xml:lang="en">
		      
		    </xs:documentation>
		  </xs:annotation>
		  
		  <!-- RegisterImage request definitions -->
		  
		  <xs:element name="RegisterImage" type="tns:RegisterImageType"/>
		
		  <xs:complexType name="RegisterImageType">
		    <xs:sequence>
		      <xs:element name="imageLocation" type="xs:string"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <!-- RegisterImage response definitions -->
		
		  <xs:element name="RegisterImageResponse" type="tns:RegisterImageResponseType"/>
		  <xs:complexType name="RegisterImageResponseType">
		    <xs:sequence>
		      <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="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="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="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="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="instancesSet" type="tns:RunInstancesInfoType"/>
		      <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:sequence>
		  </xs:complexType>
		  
		  <xs:complexType name="RunInstancesInfoType">
		    <xs:sequence>
		      <xs:element name="item" type="tns:RunInstanceItemType" minOccurs="1" maxOccurs="unbounded"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <xs:complexType name="RunInstanceItemType">
		    <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: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"/>
		    </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>
		
		  <!-- RunInstances response definitions -->
		
		  <xs:element name="RunInstancesResponse" type="tns:ReservationInfoType"/>
		
		  <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: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"/>
		      <xs:element name="instanceState" type="tns:InstanceStateType"/>
		      <xs:element name="privateDnsName" type="xs:string"/>
		      <xs:element name="dnsName" type="xs:string"/>
		      <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: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="instanceId" type="xs:string" />
		  	  <xs:element name="timestamp" type="xs:dateTime" />
		  	  <xs:element name="output" type="xs:string" />
		  	</xs:sequence>
		  </xs:complexType>
		
		  <!-- TerminateInstances request definitions -->
		
		  <xs:element name="TerminateInstances" type="tns:TerminateInstancesType"/>
		
		  <xs:complexType name="TerminateInstancesType">
		    <xs:sequence>
		      <xs:element name="instancesSet" type="tns:TerminateInstancesInfoType"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <xs:complexType name="TerminateInstancesInfoType">
		    <xs:sequence>
		      <xs:element name="item" type="tns:TerminateInstancesItemType" minOccurs="1" maxOccurs="unbounded"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <xs:complexType name="TerminateInstancesItemType">
		    <xs:sequence>
		      <xs:element name="instanceId" type="xs:string"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <!-- TerminateInstances response definitions -->
		
		  <xs:element name="TerminateInstancesResponse" type="tns:TerminateInstancesResponseType"/>
		
		  <xs:complexType name="TerminateInstancesResponseType">
		    <xs:sequence>
		      <xs:element name="instancesSet" type="tns:TerminateInstancesResponseInfoType"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <xs:complexType name="TerminateInstancesResponseInfoType">
		    <xs:sequence>
		      <xs:element name="item" type="tns:TerminateInstancesResponseItemType" minOccurs="0" maxOccurs="unbounded"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <xs:complexType name="TerminateInstancesResponseItemType">
		    <xs:sequence>
		      <xs:element name="instanceId" type="xs:string" />
		      <xs:element name="shutdownState" type="tns:InstanceStateType" />
		      <xs:element name="previousState" type="tns:InstanceStateType" />
		    </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="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="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="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" />
		      <xs:element name="imageState" type="xs:string" />
		      <xs:element name="imageOwnerId" type="xs:string" />
		      <xs:element name="isPublic" type="xs:boolean" />
		    </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="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="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="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:annotation>
		  	<xs:documentation xml:lang="en">
		  		This API call should be treated as under development. The current API specification supports a richer
		  		set of semantics than we intend to retain in future releases, and the details for this call are still under
		  		review. Semantically, clients can depend on fine grained CIDR based access control (as currently exposed) but
		  		for group based access control clients should only depend on the ability to control access for an entire
		  		(user,group) tuple. Fine grained group based access control at the protocol and port or icmp code:type level
		  		are not guaranteed to be supported in future releases of this API.
		  	</xs:documentation>
		  </xs:annotation>
			  
		  <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="return" type="xs:boolean"/>
		    </xs:sequence>
		  </xs:complexType>
		
		  <!-- RevokeSecurityGroupIngress Request definitions -->
		
		  <xs:annotation>
		  	<xs:documentation xml:lang="en">
		  		This API call should be treated as under development. The current API specification supports a richer
		  		set of semantics than we intend to retain in future releases, and the details for this call are still under
		  		review. Semantically, clients can depend on fine grained CIDR based access control (as currently exposed) but
		  		for group based access control clients should only depend on the ability to control access for an entire
		  		(user,group) tuple. Fine grained group based access control at the protocol and port or icmp code:type level
		  		are not guaranteed to be supported in future releases of this API.
		  	</xs:documentation>
		  </xs:annotation>
		
		  <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="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>
		  
		  <!-- 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: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>
		
		  <!-- ModifyImageAttributeResponse Definitions -->
		
		  <xs:element name="ModifyImageAttributeResponse"
		              type="tns:ModifyImageAttributeResponseType" />
		              
		  <xs:complexType name="ModifyImageAttributeResponseType">
		    <xs:sequence>
		      <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:ImageAttributesGroup"/>
		    </xs:sequence>
		  </xs:complexType>
		  
		  <xs:group name="ImageAttributesGroup" >
		    <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="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:ImageAttributesGroup" />
		    </xs:sequence>
		  </xs:complexType>
		
		  <!-- DescribeImageAttributeResponse Definitions -->
		  
		  <xs:element name="DescribeImageAttributeResponse"
		              type="tns:DescribeImageAttributeResponseType" />
		              
		  <xs:complexType name="DescribeImageAttributeResponseType">
		    <xs:sequence>
		      <xs:element name="imageId" type="xs:string" />
		      <xs:choice>
		        <xs:element name="launchPermission" type="tns:LaunchPermissionListType"/>
		      </xs:choice>
		    </xs:sequence>
		  </xs:complexType>
		
		</xs:schema>
	</types>

	<!-- message definitions -->

	<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="TerminateInstancesRequestMsg">
		<part name="TerminateInstancesRequestMsgReq" element="tns:TerminateInstances" />
	</message>
	
	<message name="TerminateInstancesResponseMsg">
		<part name="TerminateInstancesResponseMsgResp" element="tns:TerminateInstancesResponse" />
	</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="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>

	<portType name="AmazonEC2PortType">
		<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="TerminateInstances">
			<input message="tns:TerminateInstancesRequestMsg" />
			<output message="tns:TerminateInstancesResponseMsg" />
		</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="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>
	</portType>

	<binding name="AmazonEC2Binding" type="tns:AmazonEC2PortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />

		<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="TerminateInstances">
			<soap:operation soapAction="TerminateInstances" />
			<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="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>
		
	</binding>

	<service name="AmazonEC2">
		<port name="AmazonEC2Port" binding="tns:AmazonEC2Binding">
			<soap:address location="https://ec2.amazonaws.com/" />
		</port>
	</service>

</definitions>
