<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vast="http://www.iab.com/VAST" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.iab.com/VAST" version="4.2.0">
    <!-- =================== Begin root VAST document structure ============= -->
    <xs:element name="VAST" >
        <xs:annotation>
            <xs:documentation>IAB VAST (Video Ad Serving Template), Version 4.2</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:choice>
                <xs:element name="Ad" minOccurs="0" maxOccurs="unbounded" >
                    <xs:annotation>
                        <xs:documentation>Top-level element, wraps each ad in the response or ad unit in an ad pod. This MUST be present unless an Error element is present.</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:choice minOccurs="1" maxOccurs="1">
                            <xs:element name="InLine" minOccurs="0" maxOccurs="1" type="vast:Inline_type">
                                <xs:annotation>
                                    <xs:documentation>Second-level element surrounding complete ad data for a single ad</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                            <xs:element name="Wrapper" minOccurs="0" maxOccurs="1" type="vast:Wrapper_type">
                                <xs:annotation>
                                    <xs:documentation>Second-level element surrounding wrapper ad pointing to Secondary ad server.</xs:documentation>
                                </xs:annotation>
                            </xs:element>
                        </xs:choice>
                        <xs:attribute name="id" type="xs:string" use="optional" />
                        <xs:attribute name="sequence" type="xs:integer" use="optional">
                            <xs:annotation>
                                <xs:documentation>Identifies the sequence of multiple Ads that are part of an Ad Pod.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute name="conditionalAd" type="xs:boolean" use="optional">
                            <xs:annotation>
                                <xs:documentation>[@Deprecated in VAST 4.1 with apiFramework] A Boolean value that identifies a conditional ad.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute name="adType" use="optional">
                            <xs:annotation>
                                <xs:documentation>An optional string that identifies the type of ad. This allows VAST to support audio ad scenarios. The default value is video.</xs:documentation>
                            </xs:annotation>
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="video" />
                                    <xs:enumeration value="audio" />
                                    <xs:enumeration value="hybrid" />
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Error" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI" >
                    <xs:annotation>
                        <xs:documentation>Used when there is no ad response. When the ad server does not or cannot return an Ad. If included the video player must send a request to the URI provided (Sec 3.2.1).</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:choice>
            <xs:attribute name="version" type="xs:string" use="required">
                <xs:annotation>
                    <xs:documentation>Current version is 4.1</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <!-- =================== End root VAST document structure ============= -->
    <!-- =================  VAST internal type definitions ==================== -->
    <xs:complexType name="IconClickTracking_type">
        <xs:annotation>
            <xs:documentation>URLs to ping when icon action occurs.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:anyURI">
                <xs:attribute name="id" type="xs:string" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="TrackingEvents_Verification_type" >
        <xs:sequence>
            <xs:element name="Tracking" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Each &lt;Tracking&gt; element is used to define a single event to be tracked by the verification vendor. Multiple tracking elements may be used to define multiple events to be tracked, but may also be used to track events of the same type for multiple parties.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="event" type="xs:string" use="required">
                                <xs:annotation>
                                    <xs:documentation>A string that defines the event being tracked. One event type is currently supported: verificationNotExecuted: the player did not or was not able to execute the provided verification code</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="TrackingEvents_type" >
        <xs:sequence>
            <xs:element name="Tracking" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>The name of the event to track for the element. The creativeView should always be requested when present.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="event" use="required">
                                <xs:annotation>
                                    <xs:documentation>The name of the event to track. For nonlinear ads these events should be recorded on the video within the ad.</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="mute" />
                                        <xs:enumeration value="unmute" />
                                        <xs:enumeration value="pause" />
                                        <xs:enumeration value="resume" />
                                        <xs:enumeration value="rewind" />
                                        <xs:enumeration value="skip" />
                                        <xs:enumeration value="playerExpand" />
                                        <xs:enumeration value="playerCollapse" />
                                        <xs:enumeration value="loaded" />
                                        <xs:enumeration value="start" />
                                        <xs:enumeration value="firstQuartile" />
                                        <xs:enumeration value="midpoint" />
                                        <xs:enumeration value="thirdQuartile" />
                                        <xs:enumeration value="complete" />
                                        <xs:enumeration value="progress" />
                                        <xs:enumeration value="closeLinear" />
                                        <xs:enumeration value="creativeView" />
                                        <xs:enumeration value="acceptInvitation" />
                                        <xs:enumeration value="adExpand" />
                                        <xs:enumeration value="adCollapse" />
                                        <xs:enumeration value="minimize" />
                                        <xs:enumeration value="close" />
                                        <xs:enumeration value="overlayViewDuration" />
                                        <xs:enumeration value="otherAdInteraction" />
                                        <xs:enumeration value="interactiveStart" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="offset" use="optional">
                                <xs:annotation>
                                    <xs:documentation>The time during the video at which this url should be pinged. Must be present for progress event.</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value="(\d{2}:[0-5]\d:[0-5]\d(\.\d\d\d)?|1?\d?\d(\.?\d)*%)" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="VideoClicks_type" >
        <xs:sequence>
            <xs:element name="ClickTracking" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>URL to request for tracking purposes when user clicks on the video.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="id" type="xs:string" use="optional" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="ClickThrough" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>URL to open as destination page when user clicks on the video. This can occur zero to many times. The XSD syntax can't represent that.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="id" type="xs:string" use="optional" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="CustomClick" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>URLs to request on custom events such as hotspotted video.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="id" type="xs:string" use="optional" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Impression_type" >
        <xs:simpleContent>
            <xs:extension base="xs:anyURI">
                <xs:attribute name="id" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Ad server ID for the impression</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="CreativeResource_type">
        <xs:annotation>
            <xs:documentation>A base creative resource type (sec 3.13) for non-video creative content. This specifies static, IFrame, or HTML content, or a combination thereof</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="HTMLResource" minOccurs="0" maxOccurs="unbounded" type="vast:HTMLResource_type">
                <xs:annotation>
                    <xs:documentation>HTML to display the companion element. This can occur zero to many times, but order should not be important.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="IFrameResource" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>URI source for an IFrame to display the companion element. This can occur zero to many times, but order should not be important.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="StaticResource" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>URI to a static file, such as an image. This can occur zero to many times, but order should not be important.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="creativeType" type="xs:string" use="required">
                                <xs:annotation>
                                    <xs:documentation>MIME type of static resource</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Icon_type">
        <xs:complexContent>
            <xs:extension base="vast:CreativeResource_type">
                <xs:sequence>
                    <xs:element name="IconClicks" minOccurs="0" maxOccurs="1">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="IconClickFallbackImages" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="IconClickFallbackImage" minOccurs="1" maxOccurs="unbounded">
                                                <xs:annotation>
                                                    <xs:documentation>Element used to display information when an icon click occurs.</xs:documentation>
                                                </xs:annotation>
                                                <xs:complexType>
                                                    <xs:sequence>
                                                        <xs:element name="AltText" minOccurs="0" maxOccurs="1" type="xs:string" >
                                                        </xs:element>
                                                        <xs:element name="StaticResource" minOccurs="0" maxOccurs="1" type="xs:anyURI">
                                                            <xs:annotation>
                                                                <xs:documentation>URI to a static file, such as an image.</xs:documentation>
                                                            </xs:annotation>
                                                        </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="height" type="xs:integer" use="optional">
                                                        <xs:annotation>
                                                            <xs:documentation>Pixel height of the image asset</xs:documentation>
                                                        </xs:annotation>
                                                    </xs:attribute>
                                                    <xs:attribute name="width" type="xs:integer" use="optional">
                                                        <xs:annotation>
                                                            <xs:documentation>Pixel width of the image asset</xs:documentation>
                                                        </xs:annotation>
                                                    </xs:attribute>
                                                </xs:complexType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="IconClickThrough" minOccurs="0" maxOccurs="1" type="xs:anyURI">
                                    <xs:annotation>
                                        <xs:documentation>URL to open as destination page when user clicks on the icon.</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                                <xs:element name="IconClickTracking" minOccurs="0" maxOccurs="unbounded" type="vast:IconClickTracking_type">
                                    <xs:annotation>
                                        <xs:documentation>URLs to ping when user clicks on the the icon.</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="IconViewTracking" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                        <xs:annotation>
                            <xs:documentation>A URI for the tracking resource file to be called when the icon creative is displayed.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="program" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>Program represented in the Icon.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="width" type="xs:integer">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of icon.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="height" type="xs:integer">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of icon.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="xPosition">
                    <xs:annotation>
                        <xs:documentation>The x-cooridinate of the top, left corner of the icon asset relative to the ad display area</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="([0-9]*|left|right)" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="yPosition">
                    <xs:annotation>
                        <xs:documentation>The y-cooridinate of the top left corner of the icon asset relative to the ad display area.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:pattern value="([0-9]*|top|bottom)" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="duration" type="xs:time">
                    <xs:annotation>
                        <xs:documentation>The duration for which the player must display the icon. Expressed in standard time format hh:mm:ss.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="offset" type="xs:time">
                    <xs:annotation>
                        <xs:documentation>Start time at which the player should display the icon. Expressed in standard time format hh:mm:ss.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="apiFramework" type="xs:string">
                    <xs:annotation>
                        <xs:documentation>The apiFramework defines the method to use for communication with the icon element</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="pxratio" type="xs:decimal">
                    <xs:annotation>
                        <xs:documentation>The pixel ratio for which the icon creative is intended. The pixel ratio is the ratio of physical pixels on the device to the device-independent pixels. An ad intended for display on a device with a pixel ratio that is twice that of a standard 1:1 pixel ratio would use the value "2" Default value is "1"</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="CreativeExtensions_type">
        <xs:sequence>
            <xs:element name="CreativeExtension" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                    <xs:documentation>Any valid XML may be included in the Extensions node. This can occur zero to many times.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="skip" />
                    </xs:sequence>
                    <xs:attribute name="type" type="xs:string" use="optional">
                        <xs:annotation>
                            <xs:documentation>The MIME type of any code that might be included in the extension.</xs:documentation>
                        </xs:annotation>
                    </xs:attribute>
                    <xs:anyAttribute namespace="##any" processContents="skip" />
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="AdParameters_type">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="xmlEncoded" type="xs:boolean" use="optional">
                    <xs:annotation>
                        <xs:documentation>Specifies whether the parameters are XML-encoded</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="HTMLResource_type">
        <xs:annotation>
            <xs:documentation>The URI to a static creative file to be used for the ad component identified in the parent element, which is either: &lt;NonLinear&gt;, &lt;Companion&gt;, or &lt;Icon&gt;.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="xs:string" />
        </xs:simpleContent>
    </xs:complexType>
    <!-- ============= Linear, NonLinear, Companion - Child content classes for Inline and Wrapper========= -->
    <xs:complexType name="Linear_Base_type">
        <xs:annotation>
            <xs:documentation>Video formatted ad that plays linearly</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Icons" minOccurs="0" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Icon" minOccurs="1" maxOccurs="unbounded" type="vast:Icon_type">
                            <xs:annotation>
                                <xs:documentation>Any number of icons representing advertising industry initiatives.</xs:documentation>
                            </xs:annotation>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="TrackingEvents" minOccurs="0" maxOccurs="1" type="vast:TrackingEvents_type" />
        </xs:sequence>
        <xs:attribute name="skipoffset" use="optional">
            <xs:annotation>
                <xs:documentation>The time at which the ad becomes skippable, if absent, the ad is not skippable.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="(\d{2}:[0-5]\d:[0-5]\d(\.\d\d\d)?|1?\d?\d(\.?\d)*%)" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="Linear_Wrapper_type">
        <xs:annotation>
            <xs:documentation>Video formatted ad that plays linearly</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="vast:Linear_Base_type">
                <xs:sequence>
                    <xs:element name="VideoClicks" minOccurs="0" maxOccurs="1" type="vast:VideoClicks_type" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="Linear_Inline_type">
        <xs:annotation>
            <xs:documentation>Video formatted ad that plays linearly</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="vast:Linear_Base_type">
                <xs:sequence>
                    <xs:element name="AdParameters" minOccurs="0" maxOccurs="1" type="vast:AdParameters_type">
                        <xs:annotation>
                            <xs:documentation>[Note: SIMID is set to replace VPAID] [Note: VPAID has been deprecated in VAST 4.1 ] Data to be passed into the video ad. Used to pass VAST info to VPAID object. When a VAST response is used to serve a VPAID ad unit, the &lt;AdParameters&gt; element is currently the only way to pass information from the VAST response into the VPAID object; no other mechanism is provided.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Duration" minOccurs="1" maxOccurs="1" type="xs:time">
                        <xs:annotation>
                            <xs:documentation>Duration in standard time format, hh:mm:ss</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="MediaFiles" minOccurs="1" maxOccurs="1">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="ClosedCaptionFiles" minOccurs="0" maxOccurs="1">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="ClosedCaptionFile" minOccurs="0" maxOccurs="unbounded">
                                                <xs:annotation>
                                                    <xs:documentation>A CDATA-wrapped URI to a file providing Closed Caption info for the media file.</xs:documentation>
                                                </xs:annotation>
                                                <xs:complexType>
                                                    <xs:simpleContent>
                                                        <xs:extension base="xs:anyURI">
                                                            <xs:attribute name="type" type="xs:string" use="optional">
                                                                <xs:annotation>
                                                                    <xs:documentation>Identifies the MIME type of the file provided.</xs:documentation>
                                                                </xs:annotation>
                                                            </xs:attribute>
                                                            <xs:attribute name="language" type="xs:string" use="optional">
                                                                <xs:annotation>
                                                                    <xs:documentation>Language of the Closed Caption File using ISO 631-1 codes. An optional locale suffix can also be provided.</xs:documentation>
                                                                </xs:annotation>
                                                            </xs:attribute>
                                                        </xs:extension>
                                                    </xs:simpleContent>
                                                </xs:complexType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="MediaFile" minOccurs="1" maxOccurs="unbounded">
                                    <xs:annotation>
                                        <xs:documentation>URI location of linear file. Content must be wrapped in CDATA tag.</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:anyURI">
                                                <xs:attribute name="id" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Optional identifier</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="delivery" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Either "progressive" for progressive download protocols (such as HTTP) or "streaming" for streaming protocols.</xs:documentation>
                                                    </xs:annotation>
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:token">
                                                            <xs:enumeration value="streaming" />
                                                            <xs:enumeration value="progressive" />
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="type" type="xs:string" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>MIME type. Popular MIME types include, but are not limited to "video/x-ms-wmv" for Windows Media, and "video/x-flv" for Flash Video. Image ads or interactive ads can be included in the MediaFiles section with appropriate Mime types. Flash support was deprecated in January 2017 and is now being removed.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="width" type="xs:integer" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Pixel dimensions of video, or 0 for audio ads</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="height" type="xs:integer" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Pixel dimensions of video, or 0 for audio ads</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="codec" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>The codec used to produce the media file as specified in RFC 4281.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="bitrate" type="xs:integer" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Bitrate of encoded video in Kbps. If bitrate is supplied, minBitrate and maxBitrate should not be supplied.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="minBitrate" type="xs:integer" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Minimum bitrate of an adaptive stream in Kbps. If minBitrate is supplied, maxBitrate must be supplied and bitrate should not be supplied.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="maxBitrate" type="xs:integer" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Maximum bitrate of an adaptive stream in Kbps. If maxBitrate is supplied, minBitrate must be supplied and bitrate should not be supplied.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="scalable" type="xs:boolean" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Whether it is acceptable to scale the image.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="maintainAspectRatio" type="xs:boolean" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Whether the ad must have its aspect ratio maintained when scales</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="fileSize" type="xs:integer" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Optional field that helps eliminate the need to calculate the size based on bitrate and duration. Units - Bytes</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="mediaType" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Type of media file (2D / 3D / 360 / etc). Default value = 2D</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="apiFramework" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>[@Deprecated in 4.1 in preparation for VPAID being phased out]. identifies the API needed to execute an interactive media file, but current support is for backward compatibility. Please use the &lt;InteractiveCreativeFile&gt; element to include files that require an API for execution.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="Mezzanine" minOccurs="0" maxOccurs="unbounded">
                                    <xs:annotation>
                                        <xs:documentation>URI location to raw, high-quality media file for high-resolution environments or to transcode video or audio files at quality levels specific to the needs of certain environments. Content must be wrapped in CDATA tag.</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:anyURI">
                                                <xs:attribute name="id" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Optional identifier</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="delivery" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Either "progressive" for progressive download protocols (such as HTTP) or "streaming" for streaming protocols.</xs:documentation>
                                                    </xs:annotation>
                                                    <xs:simpleType>
                                                        <xs:restriction base="xs:token">
                                                            <xs:enumeration value="streaming" />
                                                            <xs:enumeration value="progressive" />
                                                        </xs:restriction>
                                                    </xs:simpleType>
                                                </xs:attribute>
                                                <xs:attribute name="type" type="xs:string" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>MIME type. Popular MIME types include, but are not limited to "video/x-ms-wmv" for Windows Media, and "video/x-flv" for Flash Video. Image ads or interactive ads can be included in the MediaFiles section with appropriate Mime types. Flash support was deprecated in January 2017 and is now being removed.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="width" type="xs:integer" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Pixel dimensions of video, or 0 for audio ads</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="height" type="xs:integer" use="required">
                                                    <xs:annotation>
                                                        <xs:documentation>Pixel dimensions of video, or 0 for audio ads</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="codec" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>The codec used to produce the media file as specified in RFC 4281.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="fileSize" type="xs:integer" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Optional field that helps eliminate the need to calculate the size based on bitrate and duration. Units - Bytes</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="mediaType" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Type of media file (2D / 3D / 360 / etc). Default value = 2D</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="InteractiveCreativeFile" minOccurs="0" maxOccurs="unbounded">
                                    <xs:annotation>
                                        <xs:documentation>For any media file that uses APIs for advanced creative functionality, the InteractivityCreativeFile element is used to identify the file and framework needed to execute advanced functions for the ad.</xs:documentation>
                                    </xs:annotation>
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:anyURI">
                                                <xs:attribute name="type" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Identifies the MIME type of the file provided.</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="apiFramework" type="xs:string" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>identifies the API needed to execute the Creative file if applicable</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                                <xs:attribute name="variableDuration" type="xs:boolean" use="optional">
                                                    <xs:annotation>
                                                        <xs:documentation>Useful for interactive use cases. Identifies whether the ad always drops when the duration is reached, or if it can potentially extend the duration by pausing the underlying video or delaying the adStopped call after adVideoComplete.  If it set to true the extension of the duration should be user-initiated (typically by engaging with an interactive element to view additional content).</xs:documentation>
                                                    </xs:annotation>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="VideoClicks" minOccurs="0" maxOccurs="1" type="vast:VideoClicks_type" />
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="NonLinearAd_Base_type">
        <xs:annotation>
            <xs:documentation>An ad that is overlain on top of video content during playback</xs:documentation>
        </xs:annotation>
        <xs:all>
            <xs:element name="NonLinearClickTracking" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>URLs to ping when user clicks on the the non-linear ad unit. This can occur zero to many times (unbounded). The XSD syntax can't represent that.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="id" type="xs:string" use="optional">
                                <xs:annotation>
                                    <xs:documentation>Identifier provided to ad server for click reports</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:all>
    </xs:complexType>
    <xs:complexType name="NonLinearAd_Inline_type">
        <xs:annotation>
            <xs:documentation>An ad that is overlain on top of video content during playback</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="vast:CreativeResource_type">
                <xs:sequence>
                    <xs:element name="AdParameters" minOccurs="0" maxOccurs="1" type="vast:AdParameters_type">
                        <xs:annotation>
                            <xs:documentation>Custom content used to pass information to ad unit</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="NonLinearClickThrough" minOccurs="0" maxOccurs="1" type="xs:anyURI">
                        <xs:annotation>
                            <xs:documentation>URI to advertiser page opened on viewer clicks through.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="NonLinearClickTracking" minOccurs="0" maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>URLs to ping when user clicks on the the non-linear ad unit.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:anyURI">
                                    <xs:attribute name="id" type="xs:string" use="optional">
                                        <xs:annotation>
                                            <xs:documentation>Identifier provided to ad server for click reports</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="id" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Optional identifier</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="width" type="xs:integer" use="required">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of companion</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="height" type="xs:integer" use="required">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of companion</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="expandedWidth" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of expanding nonlinear ad when in expanded state</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="expandedHeight" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of expanding nonlinear ad when in expanded state</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="scalable" type="xs:boolean" use="optional">
                    <xs:annotation>
                        <xs:documentation>Whether it is acceptable to scale the image.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="maintainAspectRatio" type="xs:boolean" use="optional">
                    <xs:annotation>
                        <xs:documentation>Whether the ad must have its aspect ratio maintained when scales</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="minSuggestedDuration" type="xs:time" use="optional">
                    <xs:annotation>
                        <xs:documentation>Suggested duration to display non-linear ad, typically for animation to complete. Expressed in standard time format hh:mm:ss</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="apiFramework" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The apiFramework defines the method to use for communication with the nonlinear element</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="CompanionAd_type">
        <xs:complexContent>
            <xs:extension base="vast:CreativeResource_type">
                <xs:sequence>
                    <xs:element name="AdParameters" minOccurs="0" maxOccurs="1" type="vast:AdParameters_type">
                        <xs:annotation>
                            <xs:documentation>Data to be passed into the companion ads. The apiFramework defines the method to use for communication.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AltText" minOccurs="0" maxOccurs="1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Alt text to be displayed when companion is rendered in HTML environment.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CompanionClickThrough" minOccurs="0" maxOccurs="1" type="xs:anyURI">
                        <xs:annotation>
                            <xs:documentation>URL to open as destination page when user clicks on the the companion banner ad.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="CompanionClickTracking" minOccurs="0" maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>A URI to a tracking resource file used to track a companion clickthrough.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:anyURI">
                                    <xs:attribute name="id" type="xs:string" use="required">
                                        <xs:annotation>
                                            <xs:documentation>An id provided by the ad server to track the click in reports.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="CreativeExtensions" minOccurs="0" maxOccurs="1" type="vast:CreativeExtensions_type" />
                    <xs:element name="TrackingEvents" minOccurs="0" maxOccurs="1" type="vast:TrackingEvents_type">
                        <xs:annotation>
                            <xs:documentation>The creativeView should always be requested when present. For Companions creativeView is the only supported event.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="id" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Optional identifier</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="width" type="xs:integer" use="required">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of companion slot</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="height" type="xs:integer" use="required">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of companion slot</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="assetWidth" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of the companion asset</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="assetHeight" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of the companion asset</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="expandedWidth" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of expanding companion ad when in expanded state</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="expandedHeight" type="xs:integer" use="optional">
                    <xs:annotation>
                        <xs:documentation>Pixel dimensions of expanding companion ad when in expanded state</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="apiFramework" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>The apiFramework defines the method to use for communication with the companion</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="adSlotId" type="xs:string" use="optional">
                    <xs:annotation>
                        <xs:documentation>Used to match companion creative to publisher placement areas on the page.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="pxratio" type="xs:decimal">
                    <xs:annotation>
                        <xs:documentation>The pixel ratio for which the icon creative is intended. The pixel ratio is the ratio of physical pixels on the device to the device-independent pixels. An ad intended for display on a device with a pixel ratio that is twice that of a standard 1:1 pixel ratio would use the value "2" Default value is "1"</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="renderingMode" use="optional">
                    <xs:annotation>
                        <xs:documentation>Used to indicate when and where to use this companion ad. If this field is empty or not given, default will be used.</xs:documentation>
                    </xs:annotation>
                    <xs:simpleType>
                        <xs:restriction base="xs:token">
                            <xs:enumeration value="default" />
                            <xs:enumeration value="end-card" />
                            <xs:enumeration value="concurrent" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="CompanionAds_Collection_type">
        <xs:sequence>
            <xs:element name="Companion" minOccurs="0" maxOccurs="unbounded" type="vast:CompanionAd_type">
                <xs:annotation>
                    <xs:documentation>General subclass type for Companion Ad elements. This can occur zero to many times.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="required" use="optional">
            <xs:annotation>
                <xs:documentation>How the player should treat a companion ad when multiple are supplied</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="all" />
                    <xs:enumeration value="any" />
                    <xs:enumeration value="none" />
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <!-- ============= Creative Element for under a Wrapper or Inline Element ========= -->
    <xs:complexType name="Creative_Base_type">
        <xs:attribute name="sequence" type="xs:integer" use="optional">
            <xs:annotation>
                <xs:documentation>The preferred order in which multiple Creatives should be displayed</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="apiFramework" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>Identifies an API needed to execute the creative</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="id" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>A string used to identify the ad server that provides the creative.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="adId" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>To be deprecated in future version of VAST. Ad-ID for the creative (formerly ISCI)</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="Creative_Wrapper_type">
        <xs:complexContent>
            <xs:extension base="vast:Creative_Base_type">
                <xs:sequence>
                    <xs:element name="CompanionAds" minOccurs="0" maxOccurs="1" type="vast:CompanionAds_Collection_type" />
                    <xs:element name="Linear" minOccurs="0" maxOccurs="1" type="vast:Linear_Wrapper_type" />
                    <xs:element name="NonLinearAds" minOccurs="0" maxOccurs="1">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="TrackingEvents" minOccurs="0" maxOccurs="1" type="vast:TrackingEvents_type" />
                                <xs:element name="NonLinear" minOccurs="0" maxOccurs="unbounded" type="vast:NonLinearAd_Base_type">
                                    <xs:annotation>
                                        <xs:documentation>Any number of companions in any desired pixel dimensions.</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="Creative_Inline_type">
        <xs:complexContent>
            <xs:extension base="vast:Creative_Base_type">
                <xs:sequence>
                    <xs:element name="CompanionAds" minOccurs="0" maxOccurs="1" type="vast:CompanionAds_Collection_type" />
                    <xs:element name="CreativeExtensions" minOccurs="0" maxOccurs="1" type="vast:CreativeExtensions_type" />
                    <xs:element name="Linear" minOccurs="0" maxOccurs="1" type="vast:Linear_Inline_type" />
                    <xs:element name="NonLinearAds" minOccurs="0" maxOccurs="1">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="TrackingEvents" minOccurs="0" maxOccurs="1" type="vast:TrackingEvents_type" />
                                <xs:element name="NonLinear" minOccurs="0" maxOccurs="unbounded" type="vast:NonLinearAd_Inline_type">
                                    <xs:annotation>
                                        <xs:documentation>Any number of companions in any desired pixel dimensions.</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="UniversalAdId" minOccurs="1" maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>The UniversalAdId is used to provide a unique creative identifier for the purposes of tracking ad creative. This is used for AD-ID(r) for ads served in the United States. Default value is &quot;unknown&quot;</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="idRegistry" type="xs:string" use="required" />
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <!-- ============ Base Definition of Shared Inline or Wrapper ad structure ============ -->
    <xs:complexType name="AdDefinitionBase_type">
        <xs:annotation>
            <xs:documentation>Base type structure used by Inline or Wrapper ad content element types</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="AdSystem" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>Indicates source ad server</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:string">
                            <xs:attribute name="version" type="xs:string" use="optional">
                                <xs:annotation>
                                    <xs:documentation>Internal version used by ad system</xs:documentation>
                                </xs:annotation>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="Error" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>URL to request if ad does not play due to error</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Extensions" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>XML node for custom extensions, as defined by the ad server. When used, a custom element should be nested under &lt;Extensions&gt; to help separa
                        te custom XML elements from VAST elements.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Extension" minOccurs="0" maxOccurs="unbounded">
                            <xs:annotation>
                                <xs:documentation>One instance of &lt;Extension&gt; should be used for each custom extension. The type attribute identifies the MIME type of any code provided in the extension.</xs:documentation>
                            </xs:annotation>
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" />
                                </xs:sequence>
                                <xs:attribute name="type" type="xs:string" use="optional">
                                    <xs:annotation>
                                        <xs:documentation>The MIME type of any code that might be included in the extension.</xs:documentation>
                                    </xs:annotation>
                                </xs:attribute>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="Impression" minOccurs="1" maxOccurs="unbounded" type="vast:Impression_type">
                <xs:annotation>
                    <xs:documentation>A URI that directs the media player to a tracking resource file that the media player must
                        use to notify the ad server when the impression occurs. If there is no reason to include
                        an Impression element, the placeholder &quot;about:blank&quot; should be used instead of a
                        tracking URL</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Pricing" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>The price of the ad that can be used in real time bidding systems.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:decimal">
                            <xs:attribute name="model" use="required">
                                <xs:annotation>
                                    <xs:documentation>The pricing model used.</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="CPC" />
                                        <xs:enumeration value="CPM" />
                                        <xs:enumeration value="CPE" />
                                        <xs:enumeration value="CPV" />
                                        <xs:enumeration value="cpc" />
                                        <xs:enumeration value="cpm" />
                                        <xs:enumeration value="cpe" />
                                        <xs:enumeration value="cpv" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="currency" use="required">
                                <xs:annotation>
                                    <xs:documentation>Three letter ISO-4217 currency symbol that identifies the currency of the value provied. Ex: USD, GBP, etc.</xs:documentation>
                                </xs:annotation>
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value="[a-zA-Z]{3}" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="ViewableImpression" minOccurs="0" maxOccurs="1" type="vast:ViewableImpression_type" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ViewableImpression_type" >
        <xs:annotation>
            <xs:documentation>The ViewableImpression element allows for tracking URIs to report viewability</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Viewable" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>A URI that directs the video player to a tracking resource file that the video player should request at the time that criteria is met for a viewable impression. This can occur zero to many times.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="NotViewable" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>A URI that directs the video player to a tracking resource file that the video player should request if the ad is executed but never meets criteria for a viewable impression.</xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="ViewUndetermined" minOccurs="0" maxOccurs="unbounded" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>A URI that directs the video player to a tracking resource file that the video player should request if the player cannot determine whether criteria is met for a viewable impression. This can occur zero to many times.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>An ad server id for the impression. Impression resources of the same id should be requested at the same time or as close in time as possible to help prevent discrepancies.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <!-- ============ Verification type used under Inline elements =============== -->
    <xs:complexType name="Verification_type">
        <xs:annotation>
            <xs:documentation>Verification elements are nested under AdVerifications. The Verification element is used to contain the executable and bootstrapping required to run the measurement code for a single verification vendor. Multiple Verification elements may be used in cases where more than one verification vendor needs to collect data or when different API frameworks are used. At lease one JavaScriptResource or ExecutableResource should be provided. At most one of these resources should selected for execution, as best matches the technology available in the current environment. If the player is willing and able to run one of these resources, it should execute them BEFORE creative playback begins. Otherwise, if no resource can be executed, any appropriate tracking events listed under the &lt;Verification&gt; element must be fired.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="ExecutableResource" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="apiFramework" type="xs:string" use="optional" />
                            <xs:attribute name="type" type="xs:string" use="optional" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="JavaScriptResource" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:anyURI">
                            <xs:attribute name="apiFramework" type="xs:string" use="optional" />
                            <xs:attribute name="browserOptional" type="xs:boolean" use="optional" />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="TrackingEvents" minOccurs="0" maxOccurs="1" type="vast:TrackingEvents_Verification_type" />
            <xs:element name="VerificationParameters" minOccurs="0" maxOccurs="1" type="xs:string">
                <xs:annotation>
                    <xs:documentation>CDATA-wrapped metadata string for the verification executable.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="vendor" type="xs:string" use="optional">
            <xs:annotation>
                <xs:documentation>An identifier for the verification vendor. The recommended format is [domain]-[useCase], to avoid name collisions. For example, "company.com-omid".</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <!-- ========== Definition of the AdVerifications element type ========== -->
    <xs:complexType name="AdVerifications_type" >
        <xs:annotation>
            <xs:documentation>The AdVerification element is used to initiate a controlled container where code can be executed for collecting data to verify ad playback details.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Verification" minOccurs="0" maxOccurs="unbounded" type="vast:Verification_type" />
        </xs:sequence>
    </xs:complexType>
    <!-- ========== Definition of the Wrapper element type ========== -->
    <xs:complexType name="Wrapper_type">
        <xs:complexContent>
            <xs:extension base="vast:AdDefinitionBase_type">
                <xs:sequence>
                    <xs:element name="AdVerifications" minOccurs="0" maxOccurs="1" type="vast:AdVerifications_type" />
                    <xs:element name="BlockedAdCategories" minOccurs="0" maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>A string that provides a category code or label that identifies the ad content.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="authority" type="xs:anyURI">
                                        <xs:annotation>
                                            <xs:documentation>A URL for the organizational authority that produced the list being used to identify ad content. Optional unless the publisher requires ad categories. The authority attribute is required if categories are provided.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Creatives" minOccurs="0" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>A container for one or more Creative elements used to provide creative files for ad.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Creative" minOccurs="1" maxOccurs="unbounded" type="vast:Creative_Wrapper_type" />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="VASTAdTagURI" minOccurs="1" maxOccurs="1" type="xs:anyURI">
                        <xs:annotation>
                            <xs:documentation>A URI to another VAST response that may be another VAST Wrapper or a VAST InLine ad.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                </xs:sequence>
                <xs:attribute name="followAdditionalWrappers" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>a Boolean value that identifies whether subsequent wrappers after a requested VAST response is allowed.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="allowMultipleAds" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>a Boolean value that identifies whether multiple ads are allowed in the requested VAST response.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
                <xs:attribute name="fallbackOnNoAd" type="xs:boolean">
                    <xs:annotation>
                        <xs:documentation>a Boolean value that provides instruction for using an available Ad when the requested VAST response returns no ads.</xs:documentation>
                    </xs:annotation>
                </xs:attribute>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <!-- ========== Definition of the Inline element type ========== -->
    <xs:complexType name="Inline_type">
        <xs:complexContent>
            <xs:extension base="vast:AdDefinitionBase_type">
                <xs:sequence>
                    <xs:element name="AdServingId" minOccurs="1" maxOccurs="1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Any ad server that returns a VAST containing an &lt;InLine&gt; ad must generate a pseudo-unique identifier that is appropriate for all involved parties to track the lifecycle of that ad. This should be inserted into the &lt;AdServingId&gt; element, and also be included on all outgoing tracking pixels. The value should be different for each Inline in a VAST. Usage of a GUID is recommended.</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AdTitle" minOccurs="1" maxOccurs="1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Common name of ad</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="AdVerifications" minOccurs="0" maxOccurs="1" type="vast:AdVerifications_type" />
                    <xs:element name="Advertiser" minOccurs="0" maxOccurs="1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Name of advertiser as defined by the ad serving party</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Category" minOccurs="0" maxOccurs="unbounded">
                        <xs:annotation>
                            <xs:documentation>A string that provides a category code or label that identifies the ad content.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:string">
                                    <xs:attribute name="authority" type="xs:anyURI" use="required">
                                        <xs:annotation>
                                            <xs:documentation>A URI for the organizational authority that produced the list being used to identify ad content.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Creatives" minOccurs="1" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>A container for one or more Creative elements used to provide creative files for ad.</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="Creative" minOccurs="1" maxOccurs="unbounded" type="vast:Creative_Inline_type" />
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="Description" minOccurs="0" maxOccurs="1" type="xs:string">
                        <xs:annotation>
                            <xs:documentation>Longer description of ad</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Expires" minOccurs="0" maxOccurs="1" type="xs:integer">
                        <xs:annotation>
                            <xs:documentation>An integer value that defines the expiry period (in seconds).</xs:documentation>
                        </xs:annotation>
                    </xs:element>
                    <xs:element name="Survey" minOccurs="0" maxOccurs="1">
                        <xs:annotation>
                            <xs:documentation>URL of request to survey vendor</xs:documentation>
                        </xs:annotation>
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:anyURI">
                                    <xs:attribute name="type" type="xs:string" use="optional">
                                        <xs:annotation>
                                            <xs:documentation>MIME type of the resource being served</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>
