Convert MSE spec to use ReSpec.
authorAaron Colwell <acolwell@google.com>
Thu, 08 Nov 2012 17:13:35 -0800
changeset 45 3e4d27b3a98f
parent 44 ae41dd28af33
child 46 0c638da9a67a
Convert MSE spec to use ReSpec.
media-source/generate-html-spec.cmd
media-source/generate-html-spec.sh
media-source/main.css
media-source/media-source-respec.html
media-source/media-source.html
media-source/media-source.js
media-source/media-source.xml
media-source/respec-w3c-common.js
media-source/spec-html.xsl
media-source/video-working-draft.css
--- a/media-source/generate-html-spec.cmd	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-
-xsltproc spec-html.xsl media-source.xml > media-source.html
--- a/media-source/generate-html-spec.sh	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-#!/bin/bash
-xsltproc spec-html.xsl media-source.xml > media-source.html
--- a/media-source/main.css	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/* Style for a public "Working Draft" */
-
-/*
-   Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved.
-   The following software licensing rules apply:
-   http://www.w3.org/Consortium/Legal/copyright-software */
-
-/* $Id: base.css,v 1.25 2006/04/18 08:42:53 bbos Exp $ */
-
-body {
-  padding: 2em 1em 2em 70px;
-  margin: 0;
-  font-family: sans-serif;
-  color: black;
-  background: white;
-  background-position: top left;
-  background-attachment: fixed;
-  background-repeat: no-repeat;
-}
-:link { color: #00C; background: transparent }
-:visited { color: #609; background: transparent }
-a:active { color: #C00; background: transparent }
-
-a:link img, a:visited img { border-style: none } /* no border on img links */
-
-a img { color: white; }        /* trick to hide the border in Netscape 4 */
-@media all {                   /* hide the next rule from Netscape 4 */
-  a img { color: inherit; }    /* undo the color change above */
-}
-
-th, td { /* ns 4 */
-  font-family: sans-serif;
-}
-
-h1, h2, h3, h4, h5, h6 { text-align: left }
-/* background should be transparent, but WebTV has a bug */
-h1, h2, h3 { color: #005A9C; background: white }
-h1 { font: 170% sans-serif }
-h2 { font: 140% sans-serif }
-h3 { font: 120% sans-serif }
-h4 { font: bold 100% sans-serif }
-h5 { font: italic 100% sans-serif }
-h6 { font: small-caps 100% sans-serif }
-
-.hide { display: none }
-
-div.head { margin-bottom: 1em }
-div.head h1 { margin-top: 2em; clear: both }
-div.head table { margin-left: 2em; margin-top: 2em }
-
-p.copyright { font-size: small }
-p.copyright small { font-size: small }
-
-@media screen {  /* hide from IE3 */
-a[href]:hover { background: #ffa }
-}
-
-pre { margin-left: 2em }
-/*
-p {
-  margin-top: 0.6em;
-  margin-bottom: 0.6em;
-}
-*/
-dt, dd { margin-top: 0; margin-bottom: 0 } /* opera 3.50 */
-dt { font-weight: bold }
-
-pre, code { font-family: monospace } /* navigator 4 requires this */
-
-ul.toc, ol.toc {
-    list-style: disc;/* Mac NS has problem with 'none' */
-  list-style: none;
-}
-
-@media aural {  
-  h1, h2, h3 { stress: 20; richness: 90 }
-  .hide { speak: none }
-  p.copyright { volume: x-soft; speech-rate: x-fast }
-  dt { pause-before: 20% }
-  pre { speak-punctuation: code } 
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/media-source/media-source-respec.html	Thu Nov 08 17:13:35 2012 -0800
@@ -0,0 +1,1346 @@
+<!DOCTYPE html SYSTEM "about:legacy-compat">
+<html>
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <title>Media Source Extensions</title>
+    <script src="respec-w3c-common.js" class="remove"></script>
+    <script src="media-source.js" class="remove"></script>
+    <script class="remove">
+      var respecConfig = {
+      // specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
+      specStatus:           "ED",
+
+      // the specification's short name, as in http://www.w3.org/TR/short-name/
+      shortName:            "",
+
+      // if there a publicly available Editor's Draft, this is the link
+      edDraftURI:           "http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html",
+
+      // if this is a LCWD, uncomment and set the end of its review period
+      // lcEnd: "2009-08-05",
+
+      // editors, add as many as you like
+      // only "name" is required
+      editors:  [
+      { name: "Aaron Colwell",  url: "",
+      company: "Google Inc.", companyURL: "http://google.com/" },
+      { name: "Adrian Bateman", url: "",
+      company: "Microsoft Corporation", companyURL: "http://microsoft.com/" },
+      { name: "Mark Watson", url: "",
+      company: "Netflix Inc.", companyURL: "http://netflix.com/" },
+      ],
+
+      // name of the WG
+      wg:           "HTML Working Group",
+
+      // URI of the public WG page
+      wgURI:        "http://www.w3.org/html/wg/",
+
+      // name (without the @w3c.org) of the public mailing to which comments are due
+      wgPublicList: "public-html-media",
+
+      // URI of the patent status for this WG, for Rec-track documents
+      // !!!! IMPORTANT !!!!
+      // This is important for Rec-track documents, do not copy a patent URI from a random
+      // document unless you know what you're doing. If in doubt ask your friendly neighbourhood
+      // Team Contact.
+      wgPatentURI:  "",
+
+      noIDLIn: true,
+
+      postProcess: [ mediaSourcePostProcessor ]
+      };
+    </script>
+
+    <style type="text/css">
+      .nonnormative { color: green; margin: 2em 0 2em 0em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
+      .nonnormative h3 { color: inherit; background: inherit; }
+      .nonnormative:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This section is non-normative.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
+
+      .example { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
+      hr + dl.example, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
+      dl.example dt, dl.domintro dt * { color: black; text-decoration: none; }
+      dl.example dd { margin: 0.5em 0 1em 2em; padding: 0; }
+      dl.example dd p { margin: 0.5em 0; }
+
+      .example:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
+
+      .iso-box { font-weight: bold; }
+      .iso-var { font-style: italic; }
+
+      table.old-table { border-collapse: collapse; border-style: hidden hidden none hidden; }
+      table.old-table thead, table tbody { border-bottom: solid; }
+      table.old-table tbody th:first-child { border-left: solid; }
+      table.old-table tbody th { text-align: left; }
+      table.old-table td, table th { border-left: solid; border-right: solid; border-bottom: solid thin; vertical-align: top; padding: 0.2em; }
+
+      dl.switch { padding-left: 2em; }
+      dl.switch > dt { text-indent: -1.5em; }
+      dl.switch > dt:before { content: '\21AA'; padding: 0 0.5em 0 0; display: inline-block; width: 1em; text-align: right; line-height: 0.5em; }
+
+      p + * > li, dd li { margin: 1em 0; }
+
+      @media screen { code :link, code :visited { color: inherit; } }
+    </style>
+  </head>
+  <body>
+    
+    <section id="sotd">
+    </section>
+
+    <section id="abstract">
+      This proposal extends HTMLMediaElement to allow 
+      JavaScript to generate media streams for playback. 
+      Allowing JavaScript to generate streams facilitates a variety of use 
+      cases like adaptive streaming and time shifting live streams.
+    </section>
+
+
+    <section id="introduction">
+      <h2>Introduction</h2>
+      <p>This proposal allows JavaScript to dynamically construct media streams for &lt;audio&gt; and &lt;video&gt;. 
+        It defines objects that allow JavaScript to pass media segments to an <a def-id="videoref" name="htmlmediaelement">HTMLMediaElement</a>.
+        A buffering model is also included to describe how the user agent should act when different media segments are 
+        appended at different times. Byte stream specifications for WebM &amp; ISO Base Media File Format are given to specify the
+        expected format of media segments used with these extensions.</p>
+      <img src="pipeline_model.png">
+
+      <section id="goals">
+        <h3>Goals</h3>
+        <p>This proposal was designed with the following goals in mind:</p>
+        <ul>
+          <li>Allow JavaScript to construct media streams independent of how the media is fetched.</li>
+          <li>Define a splicing and buffering model that facilitates use cases like adaptive streaming, ad-insertion, time-shifting, and video editing.</li>
+          <li>Minimize the need for media parsing in JavaScript.</li>
+          <li>Leverage the browser cache as much as possible.</li>
+          <li>Provide byte stream definitions for WebM &amp; the ISO Base Media File Format.</li>
+          <li>Not require support for any particular media format or codec.</li>
+        </ul>
+      </section>
+
+      <section id="definitions">
+        <h3>Definitions</h3>
+
+        <dl>
+          <dt id="init-segment">Initialization Segment</dt>
+          <dd>
+	    <p>A sequence of bytes that contains all of the initialization information required to decode a sequence of <a def-id="media-segments"></a>. This includes codec initialization data, <a def-id="track-id"></a> mappings for multiplexed segments, and timestamp offsets (e.g. edit lists).</p>
+	    <dl class="example">
+	      <p>Container specific examples of initialization segments:</p>
+	      <dt>ISO Base Media File Format</dt>
+	      <dd>A <span class="iso-box">moov</span> box.</dd>
+	      <dt>WebM</dt>
+	      <dd>The concatenation of the the EBML Header, Segment Header, Info element, and Tracks element.</dd>
+	    </dl>
+          </dd>
+
+          <dt id="media-segment">Media Segment</dt>
+          <dd>
+	    <p>A sequence of bytes that contain packetized &amp; timestamped media data for a portion of the presentation timeline. Media segments are always associated with the most recently appended <a def-id="init-segment"></a>.</p>
+	    <dl class="example">
+	      <p>Container specific examples of media segments:</p>
+	      <dt>ISO Base Media File Format</dt>
+	      <dd>A <span class="iso-box">moof</span> box followed by one or more <span class="iso-box">mdat</span> boxes.</dd>
+	      <dt>WebM</dt>
+	      <dd>A Cluster element</dd>
+	    </dl>
+          </dd>
+          
+          <dt id="source-buffer">Source Buffer</dt>
+          <dd><p>A hypothetical buffer that contains a distinct sequence of <a def-id="init-segments"></a> &amp; <a def-id="media-segments"></a>. When <a def-id="media-segments"></a> are passed to <a def-id="append"></a> they update the state of this buffer. The source buffer only allows a single <a def-id="media-segment"></a> to cover a specific point in the presentation timeline of each track. If a <a def-id="media-segment"></a> gets appended that contains media data overlapping (in presentation time) with media data from an existing segment, then the new media data will override the old media data. Since <a def-id="media-segments"></a> depend on <a def-id="init-segments"></a> the source buffer is also responsible for maintaining these associations. During playback, the media element pulls segment data out of the source buffers, demultiplexes it if necessary, and enqueues it into <a def-id="track-buffers"></a> so it will get decoded and displayed. <a def-id="buffered"></a> describes the time ranges that are covered by <a def-id="media-segments"></a> in the source buffer.</p></dd>
+
+          <dt id="active-source-buffers">Active Source Buffers</dt>
+          <dd><p>The set of <a def-id="source-buffers"></a> that are providing the <a def-id="videoref" name="dom-videotrack-selected">selected video track</a>, the <a def-id="videoref" name="dom-audiotrack-enabled">enabled audio tracks</a>, and the <a def-id="videoref" name="dom-texttrack-showing">"showing"</a> or <a def-id="videoref" name="dom-texttrack-hidden">"hidden"</a> text tracks. This is a subset of all the source buffers associated with a specific <a>MediaSource</a> object. See <a href="#active-source-buffer-changes">Changes to selected/enabled track state</a> for details.</p></dd>
+          
+          <dt id="track-buffer">Track Buffer</dt>
+          <dd><p>A hypothetical buffer that represents initialization and media data for a single <a def-id="audio-track"></a>, <a def-id="video-track"></a>, or <a def-id="text-track"></a> that has been queued for playback. This buffer may not exist in actual implementations, but it is intended to represent media data that will be decoded no matter what <a def-id="media-segments"></a> are appended to update the <a def-id="source-buffer"></a>. This distinction is important when considering appends that happen close to the current playback position. See <a href="#source-buffer-to-track-buffer">Source Buffer to Track Buffer transfer</a> for details.</p></dd>
+
+          <dt id="random-access-point">Random Access Point</dt>
+          <dd><p>A position in a <a def-id="media-segment"></a> where decoding and continuous playback can begin without relying on any previous data in the segment. For video this tends to be the location of I-frames. In the case of audio, most audio frames can be treated as a random access point. Since video tracks tend to have a more sparse distribution of random access points, the location of these points are usually considered the random access points for multiplexed streams.</p></dd>
+
+          <dt id="presentation-start-time">Presentation Start Time</dt>
+          <dd><p>The presentation start time is the earliest time point in the presentation and specifies the <a def-id="videoref" name="initial-playback-position">initial playback position</a> and <a def-id="videoref" name="earliest-possible-position">earliest possible position</a>. All presentations created using this specification have a presentation start time of 0. Appending <a def-id="media-segments"></a> with negative timestamps will cause playback to terminate with a <a def-id="media-err-decode"></a> error unless <a def-id="timestampOffset"></a> is used to make the timestamps greater than or equal to 0.</p></dd>
+
+          <dt id="mediasource-object-url">MediaSource object URL</dt>
+          <dd>
+            <p>A MediaSource object URL is a unique <a def-id="blob-uri"></a> created by <a def-id="createObjectURL"></a>. It is used to attach a <a>MediaSource</a> object to an HTMLMediaElement.</p>
+            <p>These URLs are the same as what the <a def-id="FileAPI"></a> specification calls a <a def-id="blob-uri"></a>, except that anything in the definition of that feature that refers to <a def-id="File"></a> and <a def-id="Blob"></a> objects is hereby extended to also apply to <a>MediaSource</a> objects.</p>
+          </dd>
+
+          <dt id="track-id">Track ID</dt>
+          <dd><p>A Track ID is a byte stream format specific identifier that marks sections of the byte stream as being part of a specific track. The Track ID in a <a def-id="track-description"></a> identifies which sections of a <a def-id="media-segment"></a> belong to that track.</p></dd>
+
+          <dt id="track-description">Track Description</dt>
+          <dd><p>A byte stream format specific structure that provides the <a def-id="track-id"></a>, codec configuration, and other metadata for a single track. Each track description inside a single <a def-id="init-segment"></a> must have a unique <a def-id="track-id"></a>.</p></dd>
+
+          <dt id="coded-frame">Coded Frame</dt>
+          <dd><p>A unit of compressed media data that has a presentation timestamp and  decode timestamp. The presentation timestamp indicates when the frame should be rendered. The decode timestamp indicates when the frame needs to be decoded. If frames can be decoded out of order, then the decode timestamp must be present in the bytestream. If frames cannot be decoded out of order and a decode timestamp is not present in the bytestream, then the decode timestamp is equal to the presentation timestamp.</p></dd>
+
+          <dt id="parent-media-source">Parent Media Source</dt> 
+          <dd>The parent media source of a <a>SourceBuffer</a> object is the <a>MediaSource</a> object that created it.</p>
+        </dl>
+      </section>
+    </section>
+
+
+    <section id="source-buffer-model">
+      <h2>Source Buffer Model</h2>
+      <p>The subsections below outline the buffering model for this proposal. It describes how to add and remove <a def-id="source-buffers"></a> from the presentation and describes the various rules and behaviors associated with appending data to an individual <a def-id="source-buffer"></a>. At the highest level, the web application simply creates <a def-id="source-buffers"></a> and appends a sequence of <a def-id="init-segments"></a> and <a def-id="media-segments"></a> to update the buffer's state. The media element pulls media data out of the <a def-id="source-buffers"></a>, plays it, and fires events just like it would if a normal URL was passed to the <a def-id="media-src"></a> attribute. The web application is expected to monitor media element events to determine when it needs to append more <a def-id="media-segments"></a>.</p>
+
+      <section id="source-buffer-create">
+        <h3>Creating Source Buffers</h3>
+        <p><a>SourceBuffer</a> objects can be created once a <a>MediaSource</a> object enters the <a def-id="open"></a> state. The application calls <a def-id="addSourceBuffer"></a> with a type string that indicates the format of the data it intends to append to the new SourceBuffer. If the user agent supports the format and has sufficient resources, a new <a>SourceBuffer</a> object is created, added to <a def-id="sourceBuffers"></a>, and returned by the method. If the user agent doesn't support the specified format or can't support another <a>SourceBuffer</a> then it will throw an appropriate exception to signal why the request couldn't be satisfied.</p>
+      </section>
+
+      <section id="source-buffer-remove">
+        <h3>Removing Source Buffers</h3>
+        <p>Removing a <a>SourceBuffer</a> with <a def-id="removeSourceBuffer"></a> releases all resources associated with the object. This includes destroying the all the segment data, <a def-id="track-buffers"></a>, and decoders. The media element will also remove the appropriate tracks from <a def-id="audiotracks"></a>, <a def-id="videotracks"></a>,  &amp; <a def-id="texttracks"></a> and fire the necessary <a def-id="videoref" name="handler-tracklist-onchange">change</a> events. Playback may become degraded or stop if the currently selected <a def-id="video-track"></a> or the only enabled <a def-id="audio-tracks"></a> are removed.</p>
+      </section>
+
+      <section id="source-buffer-basic-append">
+        <h3>Basic appending model</h3>
+        <p>Updating the state of a <a def-id="source-buffer"></a> requires appending at least one <a def-id="init-segment"></a> and one or more <a def-id="media-segments"></a> via <a def-id="append"></a>. The following list outlines some of the basic rules for appending segments.
+          <ul>
+	    <li>The first segment appended must be an <a def-id="init-segment"></a>.</li>
+	    <li>All <a def-id="media-segments"></a> are associated with the most recently appended <a def-id="init-segment"></a>.</li>
+	    <li>A whole segment must be appended before another segment can be started unless <a def-id="abort"></a> is called.</li>
+	    <li>Segments can be appended in pieces. (i.e. A 4096 byte segment can be spread across four 1024 byte calls to <a def-id="append"></a>).</li>
+	    <li>If a <a def-id="media-segment"></a> requires different configuration information (e.g. codec parameters, new <a def-id="track-ids"></a>, metadata) from what is in the most recently appended <a def-id="init-segment"></a>, a new <a def-id="init-segment"></a> with the new configuration information must be appended before the <a def-id="media-segment"></a> requiring this information is appended.</li>
+	    <li>A new <a def-id="media-segment"></a> can overlap, in presentation time, a segment that was previously appended. The new segment will override the previous data.</li>
+	    <li>Media segments can be appended in any order.<p class="note">In practice finite buffer space and maintaining uninterrupted playback will bias appending towards time increasing order near the current playback position. Out of order appends facilitate adaptive streaming, ad insertion, and video editing use cases.</p>
+            </li>
+	    <li>The media element may start copying data from a <a def-id="media-segment"></a> to the <a def-id="track-buffers"></a> before the entire segment has been appended. This prevents unnecessary delays for <a def-id="media-segments"></a> that cover a large time range.</li>
+          </ul>
+        </p>
+      </section>
+
+      <section id="source-buffer-init-segment-constraints">
+        <h3>Initialization Segment constraints</h3>
+        <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a def-id="init-segments"></a> that are appended to a specific <a>SourceBuffer</a>:
+          <ul>
+	    <li>The number and type of tracks must be consistent across all <a def-id="init-segments"></a>. <br>For example, if the first <a def-id="init-segment"></a> has 2 audio tracks and 1 video track, then all <a def-id="init-segments"></a> that follow, for this <a>SourceBuffer</a> must describe 2 audio tracks and 1 video track.</li>
+	    <li>
+              <a def-id="track-ids"></a> do not need to be the same across <a def-id="init-segments"></a> only if the segment describes one track of each type.<br> For example, if an <a def-id="init-segment"></a> describes a single audio track and a single video track, the internal <a def-id="track-ids"></a> do not need to be the same.</li>
+	    <li>
+              <a def-id="track-ids"></a> must be the same across <a def-id="init-segments"></a> if multiple tracks for a single type are described. (e.g. 2 audio tracks).</li>
+	    <li>Codecs changes are not allowed. <br> For example, you can't have an <a def-id="init-segment"></a> that specifies a single AAC track and then follows it with one that contains AMR-WB. Support for multiple codecs is handled with multiple <a>SourceBuffer</a> objects.</li>
+	    <li>Video frame size changes are allowed and must be supported seamlessly.<p class="note">This will cause the &lt;video&gt; display region to change size if you don't use CSS or HTML attributes (width/height) to constrain the element size.</p>
+            </li>
+	    <li>Audio channel count changes are allowed, but they may not be seamless and could trigger downmixing.<p class="note">This is a quality of implementation issue because changing the channel count may require reinitializing the audio device, resamplers, and channel mixers which tends to be audible.</p>
+            </li>
+          </ul>
+        </p>
+      </section>
+
+      <section id="source-buffer-media-segment-constraints">
+        <h3>Media Segment constraints</h3>
+        <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a def-id="media-segments"></a> that are appended to a specific <a>SourceBuffer</a>:
+          <ul>
+	    <li>All timestamps must be mapped to the same presentation timeline.</li>
+	    <li>Segments must start with a <a def-id="random-access-point"></a> to facilitate seamless splicing at the segment boundary.</li>
+	    <li>Gaps between <a def-id="media-segments"></a> that are smaller than the audio frame size are allowed and must not cause playback to stall. Such gaps must not be reflected by <a def-id="buffered"></a>.
+	      <p class="note">This is intended to simplify switching between audio streams where the frame boundaries don't always line up across encodings (e.g. Vorbis).</p>
+            </li>
+          </ul>
+        </p>
+      </section>
+
+      <section id="source-buffer-first-init-segment">
+        <h3>Appending the first Initialization Segment</h3>
+        <p>Once a new <a>SourceBuffer</a> has been created, it expects an <a def-id="init-segment"></a> to be appended first. This first segment indicates the number and type of streams contained in the <a def-id="media-segments"></a> that follow. This allows the media element to configure the necessary decoders and output devices. This first segment can also cause a <a def-id="ready-state"></a> transition to <a def-id="have-metadata"></a> if this is the first <a>SourceBuffer</a>, or if it is the first track of a specific type (i.e. first audio, first video track, or first text track). If neither of the conditions hold then the tracks for this new <a>SourceBuffer</a> will just appear as disabled tracks and won't affect the current <a def-id="ready-state"></a> until they are selected. The media element will also add the appropriate tracks to the <a def-id="audiotracks"></a>, <a def-id="videotracks"></a>, &amp; <a def-id="texttracks"></a> collections and fire the necessary <a def-id="videoref" name="handler-tracklist-onchange">change</a> events. The description for <a def-id="append"></a> contains all the details.</p>
+      </section>
+      
+      <section id="source-buffer-media-segment-unbuffered">
+        <h3>Appending a Media Segment to an unbuffered region</h3>
+        <p>If a <a def-id="media-segment"></a> is appended to a time range that is not covered by existing segments in the <a def-id="source-buffer"></a>, then its data is copied directly into the <a def-id="source-buffer"></a>. Addition of this data may trigger <a def-id="ready-state"></a> transitions depending on what other data is buffered and whether the media element has determined if it can start playback. Calls to <a def-id="buffered"></a> will always reflect the current <a def-id="timeranges"></a> buffered in the <a>SourceBuffer</a>.</p>
+      </section>
+
+      <section id="source-buffer-overlapping-segments">
+        <h3>Appending a Media Segment over a buffered region</h3>
+        <p>There are several ways that <a def-id="media-segments"></a> can overlap segments in the <a def-id="source-buffer"></a>. Behavior for the different overlap situations are described below. If more than one overlap applies, then the <a href="#source-buffer-overlap-start">start overlap</a> gets resolved first, followed by any <a href="#source-buffer-overlap-complete">complete overlaps</a>, and finally the <a href="#source-buffer-overlap-end">end overlap</a>. If a segment contains multiple tracks then the overlap is resolved independently for each track.</p>
+
+        <section id="source-buffer-overlap-complete">
+          <h4>Complete Overlap</h4>
+          <img src="complete_overlap.png">
+          <p>The figure above shows how the <a def-id="source-buffer"></a> gets updated when a new <a def-id="media-segment"></a> completely overlaps a segment in the buffer. In this case, the new segment completely replaces the old segment.</p>
+        </section>
+
+        <section id="source-buffer-overlap-start">
+          <h4>Start Overlap</h4>
+          <img src="start_overlap.png">
+          <p>The figure above shows how the <a def-id="source-buffer"></a> gets updated when the beginning of a new <a def-id="media-segment"></a> overlaps a segment in the buffer. In this case the new segment replaces all the old media data in the overlapping region. Since <a def-id="media-segments"></a> are constrained to starting with <a def-id="random-access-points"></a>, this provides a seamless transition between segments.</p>
+          <p>When an audio frame in the <a def-id="source-buffer"></a> overlaps with the start of the new <a def-id="media-segment"></a> special behavior is required. At a minimum implementations must support dropping the old audio frame that overlaps the start of the new segment and insert silence for the small gap that is created. Higher quality implementations may support crossfading or crosslapping between the overlapping audio frames. No matter which strategy is implemented, no gaps are created in the ranges reported by <a def-id="buffered"></a> and playback must never stall at the overlap.</p>
+        </section>
+
+        <section id="source-buffer-overlap-end">
+          <h4>End Overlap</h4>
+          <img src="end_overlap.png">
+          <p>The figure above shows how the <a def-id="source-buffer"></a> gets updated when the end of a new <a def-id="media-segment"></a> overlaps a segment in the buffer. In this case, the media element tries to keep as much of the old segment as possible. The amount saved depends on where the closest <a def-id="random-access-point"></a>, in the old segment, is to the end of the new segment. In the case of audio, if the gap is smaller than the size of an audio frame, then the media element should insert silence for this gap and not reflect it in <a def-id="buffered"></a>.</p>
+          <p>An implementation may keep old segment data before the end of the new segment to avoid creating a gap if it wishes. Doing this though can significantly increase implementation complexity and could cause delays at the splice point. The key property that must be preserved is the entirety of the new segment gets added to the <a def-id="source-buffer"></a> and it is up to the implementation how much of the old segment data is retained. The web application can use <a def-id="buffered"></a> to determine how much of the old segment was preserved.</p>
+        </section>
+
+        <section id="source-buffer-overlap-middle">
+          <h4>Middle Overlap</h4>
+          <img src="middle_overlap.png">
+          <p>The figure above shows how the <a def-id="source-buffer"></a> gets updated when the new <a def-id="media-segment"></a> is in the middle of the old segment. This condition is handled by first resolving the <a href="#source-buffer-overlap-start">start overlap</a> and then resolving the <a href="#source-buffer-overlap-end">end overlap</a>.</p>
+        </section>
+      </section>
+
+      <section id="source-buffer-to-track-buffer">
+        <h3>Source Buffer to Track Buffer transfer</h3>
+        <p>The <a def-id="source-buffer"></a> represents the media that the web application would like the media element to play. The <a def-id="track-buffer"></a> contains the data that will actually get decoded and rendered. In most cases the <a def-id="track-buffer"></a> will simply contain a subset of the <a def-id="source-buffer"></a> near the current playback position. These two buffers start to diverge though when <a def-id="media-segments"></a> that overlap or are very close to the current playback position are appended. Depending on the contents of the new <a def-id="media-segment"></a> it may not be possible to switch to the new data immediately because there isn't a <a def-id="random-access-point"></a> close enough to the current playback position. The quality of the implementation determines how much data is considered "in the <a def-id="track-buffer"></a>". It should transfer data to the <a def-id="track-buffer"></a> as late as possible whilst maintaining seamless playback. Some implementations may be able to instantiate multiple decoders or decode the new data significantly faster than real-time to achieve a seamless splice immediately. Other implementations may delay until the next <a def-id="random-access-point"></a> before switching to the newly appended data. Notice that this difference in behavior is only observable when appending close to the current playback position. The <a def-id="track-buffer"></a> represents a media subsegment, like a group of pictures or something with similar decode dependencies, that the media element commits to playing. This commitment may be influenced by a variety of things like limited decoding resources, hardware decode buffers, a jitter buffer, or the desire to limit implementation complexity.</p>
+        
+        <p>Here is an example to help clarify the role of the <a def-id="track-buffer"></a>. Say the current playback position has a timestamp of 8 and the media element pulled frames with timestamp 9 &amp; 10 into the track buffer. The web application then appends a higher quality <a def-id="media-segment"></a> that starts with a <a def-id="random-access-point"></a> at timestamp 9. The <a def-id="source-buffer"></a> will get updated with the higher quality data, but the media element won't be able to switch to this higher quality data until the next <a def-id="random-access-point"></a> at timestamp 20. This is because a frame for timestamp 9 is already in the track buffer. As you can see the track buffer represents the "point of no return." for decoding. If a seek occurs the media element may choose to use the higher quality data since a seek might imply flushing the <a def-id="track-buffer"></a> and the user expects a break in playback.</p>
+      </section>
+
+
+      <section id="source-buffer-segment-eviction">
+        <h3>Media Segment Eviction</h3>
+        <p>When a new <a def-id="media-segment"></a> is appended, memory constraints may cause previously appended segments to get evicted from the <a def-id="source-buffer"></a>. The eviction algorithm is implementation dependent, but segments that aren't likely to be needed soon are the most likely to get evicted. The <a def-id="buffered"></a> attribute allows the web application to monitor what time ranges are currently buffered in the <a def-id="source-buffer"></a>.</p>
+      </section>
+
+      <section id="source-buffer-timestamp-offsets">
+        <h3>Applying Timestamp Offsets</h3>
+        <p>For some use cases like ad-insertion or seamless playlists, the web application may want to insert a <a def-id="media-segment"></a> in the presentation timeline at a location that is different than what the internal timestamps indicate. This can be accomplished by using the <a def-id="timestampOffset"></a> attribute on the <a>SourceBuffer</a> object. The value of <a def-id="timestampOffset"></a> is added to all timestamps inside a <a def-id="media-segment"></a> before the contents of that segment are added to the <a def-id="source-buffer"></a>. The <a def-id="timestampOffset"></a> applies to an entire media segment. An exception is thrown if the application tries to update the attribute when only part of a media segment has been appended. Both positive or negative offsets can be assigned to <a def-id="timestampOffset"></a>. If an offset causes a <a def-id="media-segment"></a> timestamp to get converted to a time before the <a def-id="presentation-start-time"></a>, playback will terminate with a <a def-id="media-err-decode"></a> error.</p>
+
+        <p>Here is a simple example to clarify how <a def-id="timestampOffset"></a> can be used. Say I have two sounds I want to play in sequence. The first sound is 5 seconds long and the second one is 10 seconds. Both sound files have timestamps that start at 0. First append the <a def-id="init-segment"></a> and all <a def-id="media-segments"></a> for the first sound. Now set <a def-id="timestampOffset"></a> to 5 seconds. Finally append the <a def-id="init-segment"></a> and <a def-id="media-segments"></a> for the second sound. This will result in a 15 second presentation that plays the two sounds in sequence.</p>
+      </section>
+    </section>
+
+    <section id="mediasource">
+      <h2>MediaSource Object</h2>
+      <p>The MediaSource object represents a source of media data for an HTMLMediaElement. It keeps track of the <a def-id="readyState"></a> for this source as well as a list of <a>SourceBuffer</a> objects that can be used to add media data to the presentation. MediaSource objects are created by the web application and then attached to an HTMLMediaElement. The application uses the <a>SourceBuffer</a> objects in <a def-id="sourceBuffers"></a> to add media data to this source. The HTMLMediaElement fetches this media data from the <a>MediaSource</a> object when it is needed during playback.</p>
+
+      <dl title="enum ReadyState" class="idl">
+        <dt><dfn id="dom-closed">closed</dfn></dt>
+        <dd>
+          Indicates the source is not currently attached to a media element.
+        </dd>
+        <dt>open</dt>
+        <dd>
+          The source has been opened by a media element and is ready for data to be appended to the <a>SourceBuffer</a> objects in <a def-id="sourceBuffers"></a>.
+        </dd>
+        <dt>ended</dt>
+        <dd>
+          The source is still attached to a media element, but <a def-id="endOfStream"></a> has been called. Appending data to <a>SourceBuffer</a> objects in this state is not allowed.
+        </dd>
+      </dl>
+
+      <dl title="enum EndOfStreamError" class="idl">
+        <dt>network</dt>
+        <dd>
+          <p>Terminates playback and signals that a network error has occured.</p>
+          <p class="note">If the JavaScript fetching media data encounters a network error it should use this status code to terminate playback.</p>
+        </dd>
+        <dt>decode</dt>
+        <dd>
+          <p>Terminates playback and signals that a decoding error has occured.</p>
+          <p class="note">If the JavaScript code fetching media data has problems parsing the data it should use this status code to terminate playback.</p>
+        </dd>
+      </dl>
+
+      <dl title="[Constructor] interface MediaSource : EventTarget" class='idl'>
+        <dt>readonly attribute SourceBufferList sourceBuffers</dt>
+        <dd>
+          Contains the list of <a>SourceBuffer</a> objects associated with this <a>MediaSource</a>. When <a def-id="readyState"></a> equals <a def-id="closed"></a> this list will be empty. Once <a def-id="readyState"></a> transitions to <a def-id="open"></a> SourceBuffer objects can be added to this list by using <a def-id="addSourceBuffer"></a>.
+        </dd>
+
+        <dt>readonly attribute SourceBufferList activeSourceBuffers</dt>
+        <dd>
+          Contains the subset of <a def-id="sourceBuffers"></a> that represents the <a def-id="active-source-buffers"></a>.
+        </dd>
+
+        <dt>attribute unrestricted double duration</dt>
+        <dd>
+          <p>Allows the web application to set the presentation duration. The duration is initially set to NaN when the <a>MediaSource</a> object is created.</p>
+          <p>On getting, run the following steps:</p>
+          <ol>
+            <li>If the <a def-id="readyState"></a> attribute is <a def-id="closed"></a> then return NaN and abort these steps.</li>
+            <li>Return the current value of the attribute.</li>
+          </ol>
+          <p>On setting, run the following steps:</p>
+          <ol>
+            <li>If the value being set is negative or NaN then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute is not <a def-id="open"></a> then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>Run the <a def-id="duration-change-algorithm"></a> with <var>new duration</var> set to the value being set.
+	      <p class="note"><a def-id="append"></a> and <a def-id="endOfStream"></a> can update the duration under certain circumstances.</p>
+            </li>
+          </ol>
+        </dd>
+
+        <dt>SourceBuffer addSourceBuffer(DOMString type)</dt>
+        <dd>
+          <p>Adds a new <a>SourceBuffer</a> to <a def-id="sourceBuffers"></a>.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">type</var> is null or an empty string then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If <var title="true">type</var> contains a MIME type that is not supported or contains a MIME type that is not supported with the types specified for the other <a>SourceBuffer</a> objects in <a def-id="sourceBuffers"></a>, then throw a <a def-id="not-supported-err"></a> exception and abort these steps.</li>
+            <li>If the user agent can't handle any more SourceBuffer objects then throw a <a def-id="quota-exceeded-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute is not in the <a def-id="open"></a> state then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>Create a new <a>SourceBuffer</a> object and associated resources.</li>
+            <li>Add the new object to <a def-id="sourceBuffers"></a> and <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="addsourcebuffer"></a> at <a def-id="sourceBuffers"></a>.</li>
+            <li>Return the new object.</li>
+          </ol>
+        </dd>
+
+        <dt>void removeSourceBuffer(SourceBuffer sourceBuffer)</dt>
+        <dd>
+          <p>Removes a <a>SourceBuffer</a> from <a def-id="sourceBuffers"></a>.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">sourceBuffer</var> is null then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If <var title="true">sourceBuffer</var> specifies an object that is not in <a def-id="sourceBuffers"></a> then throw a <a def-id="not-found-err"></a> exception and abort these steps.</li>
+            <li>Remove track information from <a def-id="audiotracks"></a>, <a def-id="videotracks"></a>, and <a def-id="texttracks"></a> for all tracks associated with <var title="true">sourceBuffer</var> and <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="videoref" name="handler-tracklist-onchange">change</a> at the modified lists.</li>
+            <li>If <var title="true">sourceBuffer</var> is in <a def-id="activeSourceBuffers"></a>, then remove it from <a def-id="activeSourceBuffers"></a> and <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>.</li>
+            <li>Remove <var title="true">sourceBuffer</var> from <a def-id="sourceBuffers"></a> and <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="sourceBuffers"></a>.</li>
+            <li>Destroy all resources for <var title="true">sourceBuffer</var>.</li>
+          </ol>
+        </dd>
+
+        <dt>readonly attribute ReadyState readyState</dt>
+        <dd>
+          <p>Indicates the current state of the <a>MediaSource</a> object. When the <a>MediaSource</a> is created <a def-id="readyState"></a> must be set to <a def-id="closed"></a>.
+        </dd>
+        <dt>void endOfStream(optional EndOfStreamError error)</dt>
+        <dd>
+          <p>Signals the end of the stream.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If the <a def-id="readyState"></a> attribute is not in the <a def-id="open"></a> state then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>Change the <a def-id="readyState"></a> attribute value to <a def-id="ended"></a>.</li>
+            <li>
+              <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="sourceended"></a> at the <a>MediaSource</a>.</li>
+            <li><dl class="switch">
+                <dt>If <var title="true">error</var> is not set, null, or an empty string</dt>
+                <dd>
+	          <ol>
+	            <li>Run the <a def-id="duration-change-algorithm"></a> with <var>new duration</var> set to the highest end timestamp across all <a>SourceBuffer</a> objects in <a def-id="sourceBuffers"></a>.<br>
+		      <p class="note">This allows the duration to properly reflect the end of the appended media segments. For example, if the duration was explicitly set to 10 seconds and only media segments for 0 to 5 seconds were appended before endOfStream() was called, then the duration will get updated to 5 seconds.</p>
+	            </li>
+	            <li>Notify the media element that it now has all of the media data. Playback should continue until all the media passed in via <a def-id="append"></a> has been played.</li>
+	          </ol>
+	        </dd>
+                <dt>If <var title="true">error</var> is set to <a def-id="network"></a>
+                </dt>
+                <dd>
+	          <dl class="switch">
+	            <dt>If the <a def-id="ready-state"></a> attribute equals <a def-id="have-nothing"></a>
+                    </dt>
+	            <dd>Run the <a def-id="media-data-cannot-be-fetched"></a> steps of the <a def-id="resource-fetch-algorithm"></a>.</dd>
+	            <dt>If the <a def-id="ready-state"></a> attribute is greater than <a def-id="have-nothing"></a>
+                    </dt>
+	            <dd>Run the "<i>If the connection is interrupted after some media data has been received, causing the user agent to give up trying to fetch the resource</i>" steps of the <a def-id="resource-fetch-algorithm"></a>.</dd>
+	          </dl>
+	        </dd>
+                <dt>If <var title="true">error</var> is set to <a def-id="decode"></a>
+                </dt>
+                <dd>
+	          <dl class="switch">
+	            <dt>If the <a def-id="ready-state"></a> attribute equals <a def-id="have-nothing"></a>
+                    </dt>
+	            <dd>Run the "<i>If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all</i>" steps of the <a def-id="resource-fetch-algorithm"></a>.</dd>
+	            <dt>If the <a def-id="ready-state"></a> attribute is greater than <a def-id="have-nothing"></a>
+                    </dt>
+	            <dd>Run the <a def-id="media-data-is-corrupted"></a> steps of the <a def-id="resource-fetch-algorithm"></a>.</dd>
+	          </dl>
+	        </dd>
+                <dt>Otherwise</dt>
+                <dd>Throw an <a def-id="invalid-access-err"></a> exception.</dd>
+              </dl>
+            </li>
+          </ol>
+        </dd>
+      </dl>
+
+      <section id="mediasource-events">
+        <h3>Event Summary</h3>
+        <table class="old-table">
+          <thead>
+            <tr>
+              <th>Event name</th>
+              <th>Interface</th>
+              <th>Dispatched when...</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td><a def-id="eventdfn">sourceopen</a></td>
+              <td><code>Event</code></td>
+              <td>When <a def-id="readyState"></a> transitions from <a def-id="closed"></a> to <a def-id="open"></a> or from <a def-id="ended"></a> to <a def-id="open"></a>.</td>
+            </tr>
+            <tr>
+              <td><a def-id="eventdfn">sourceended</a></td>
+              <td><code>Event</code></td>
+              <td>When <a def-id="readyState"></a> transitions from <a def-id="open"></a> to <a def-id="ended"></a>.</td>
+            </tr>
+            <tr>
+              <td><a def-id="eventdfn">sourceclose</a></td>
+              <td><code>Event</code></td>
+	      <td>When <a def-id="readyState"></a> transitions from <a def-id="open"></a> to <a def-id="closed"></a> or <a def-id="ended"></a> to <a def-id="closed"></a>.</td>
+            </tr>
+          </tbody>
+        </table>
+      </section>
+
+      <section id="mediasource-algorithms">
+        <h3>Algorithms</h3>
+
+        <section id="mediasource-attach">
+          <h4>Attaching to a media element</h4>
+          <p> A <a>MediaSource</a> object can be attached to a media element by assigning a <a def-id="MediaSource-object-URL"></a> to the media element <a def-id="media-src"></a> attribute or the src attribute of a &lt;source&gt; inside a media element. A <a def-id="MediaSource-object-URL"></a> is created by passing a MediaSource object to <a def-id="createObjectURL"></a>.</p>
+          <p>If the <a def-id="resource-fetch-algorithm"></a> absolute URL matches the MediaSource object URL, run the following steps right before the "Perform a potentially
+            CORS-enabled fetch" step in the <a def-id="resource-fetch-algorithm"></a>.</p>
+          <ol>
+            <dl class="switch">
+              <dt>If <a def-id="readyState"></a> is NOT set to <a def-id="closed"></a></dt>
+              <dd>Run the <a def-id="media-data-cannot-be-fetched"></a> steps of the <a def-id="resource-fetch-algorithm"></a>.</dd>
+              <dt>Otherwise</dt>
+              <dd>
+                <ol>
+                  <li>Set the <a def-id="readyState"></a> attribute to <a def-id="open"></a>.</li>
+                  <li>
+                    <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="sourceopen"></a> at the <a>MediaSource</a>.</li>
+                  <li>Allow the <a def-id="resource-fetch-algorithm"></a> to progress based on data passed in via <a def-id="append"></a>.</li>
+                </ol>
+              </dd>
+            </dl>
+          </ol>
+        </section>
+
+        <section id="mediasource-detach">
+          <h4>Detaching from a media element</h4>
+          <p>The following steps are run in any case where the media element is going to transition to <a def-id="videoref" name="dom-media-network_empty">NETWORK_EMPTY</a> and <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="videoref" name="event-mediacontroller-emptied">emptied</a> at the media element. These steps should be run right before the transition.</p>
+          <ol>
+            <li>Set the <a def-id="readyState"></a> attribute to <a def-id="closed"></a>.</li>
+            <li>Set the <a def-id="duration"></a> attribute to NaN.</li>
+            <li>Remove all the <a>SourceBuffer</a> objects from <a def-id="activeSourceBuffers"></a>.</li>
+            <li>
+              <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>.</li>
+            <li>Remove all the <a>SourceBuffer</a> objects from <a def-id="sourceBuffers"></a>.</li>
+            <li>
+              <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="sourceBuffers"></a>.</li>
+            <li>
+              <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="sourceclose"></a> at the <a>MediaSource</a>.</li>
+          </ol>
+        </section>
+
+        <section id="mediasource-seeking">
+          <h4>Seeking</h4>
+          <p>Run the following steps as part of the "<i>Wait until the user agent has established whether or not the media data for the new playback position is available, and, if it is, until it has decoded enough data to play back that position"</i> step of the <a def-id="hme-seek-algorithm"></a>:</p>
+          <ol>
+            <li>The media element looks for <a def-id="media-segments"></a> containing the <var title="true">new playback position</var> in each <a>SourceBuffer</a> object in <a def-id="activeSourceBuffers"></a>.</li>
+            <dl class="switch">
+	      <dt>If one or more of the objects in <a def-id="activeSourceBuffers"></a> is missing <a def-id="media-segments"></a> for the <var title="true">new playback position</var>
+              </dt>
+	      <dd>
+	        <ol>
+	          <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-metadata"></a>.</li>
+	          <li>The media element waits for the necessary <a def-id="media-segments"></a> to be passed to <a def-id="append"></a>. The web application can use <a def-id="buffered"></a> to determine what the media element needs to resume playback.</li>
+	        </ol>
+	      </dd>
+	      <dt>Otherwise</dt>
+	      <dd>Continue</dd>
+            </dl>
+            <li>The media element resets all decoders and initializes each one with data from the appropriate <a def-id="init-segment"></a>.</li>
+            <li>The media element feeds data from the <a def-id="media-segments"></a> into the decoders until the <var title="true">new playback position</var> is reached.</li>
+            <li>Resume the <a def-id="hme-seek-algorithm"></a> at the "<i>Await a stable state</i>" step.</li>
+          </ol>
+        </section>
+
+
+        <section id="buffer-monitoring">
+          <h4>SourceBuffer Monitoring</h4>
+          <p>The following steps are periodically run during playback to make sure that all of the <a>SourceBuffer</a> objects in <a def-id="activeSourceBuffers"></a> have enough data to ensure uninterrupted playback. Appending new segments and changes to <a def-id="activeSourceBuffers"></a> also cause these steps to run because they affect the conditions that trigger state transitions. The web application can monitor changes in <a def-id="ready-state"></a> to drive <a def-id="media-segment"></a> appending.</p>
+          <dl class="switch">
+            <dt>If <a def-id="buffered"></a> for all objects in <a def-id="activeSourceBuffers"></a> do not contain <a def-id="timeranges"></a> for the current playback position:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-metadata"></a>.</li>
+	        <li>If this is the first transition to <a def-id="have-metadata"></a>, then <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="loadedmetadata"></a> at the media element.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <a def-id="buffered"></a> for all objects in <a def-id="activeSourceBuffers"></a> contain <a def-id="timeranges"></a> that include the current playback position and enough data to ensure uninterrupted playback:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-enough-data"></a>.</li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="canplaythrough"></a> at the media element.</li>
+	        <li>Playback may resume at this point if it was previously suspended by a transition to <a def-id="have-current-data"></a>.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <a def-id="buffered"></a> for at least one object in <a def-id="activeSourceBuffers"></a> contains a <a def-id="timerange"></a> that includes the current playback position but not enough data to ensure uninterrupted playback:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-future-data"></a>.</li>
+	        <li>If the previous value of <a def-id="ready-state"></a> was less than <a def-id="have-future-data"></a>, then <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="canplay"></a> at the media element.</li>
+	        <li>Playback may resume at this point if it was previously suspended by a transition to <a def-id="have-current-data"></a>.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <a def-id="buffered"></a> for at least one object in <a def-id="activeSourceBuffers"></a> contains a <a def-id="timerange"></a> that ends at the current playback position and does not have a range covering the time immediately after the current position:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-current-data"></a>.</li>
+	        <li>If this is the first transition to <a def-id="have-current-data"></a>, then <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="loadeddata"></a> at the media element.</li>
+	        <li>Playback is suspended at this point since the media element doesn't have enough data to advance the timeline.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+          </dl>
+        </section>
+
+        <section id="active-source-buffer-changes">
+          <h4>Changes to selected/enabled track state</h4>
+          <p>During playback <a def-id="activeSourceBuffers"></a> needs to be updated if the <a def-id="videoref" name="dom-videotrack-selected">selected video track</a>, the <a def-id="videoref" name="dom-audiotrack-enabled">enabled audio tracks</a>, or a text track <a def-id="videoref" name="dom-texttrack-mode">mode</a> changes. When one or more of these changes occur the following steps need to be followed.</p>
+          <dl class="switch">
+            <dt>If the selected video track changes:</dt>
+            <dd>
+	      <ol>
+	        <li>If the <a>SourceBuffer</a> associated with the previously selected video track is not associated with any other enabled tracks, run the following steps:
+  	          <ol>
+	            <li>Remove the <a>SourceBuffer</a> from <a def-id="activeSourceBuffers"></a>.</li>
+	            <li>
+                      <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                    </li>
+	          </ol>
+	        </li>
+	        <li>If the <a>SourceBuffer</a> associated with the newly selected video track is not already in <a def-id="activeSourceBuffers"></a>, run the following steps:
+	          <ol>
+	            <li>Add the <a>SourceBuffer</a> to <a def-id="activeSourceBuffers"></a>.</li>
+	            <li>
+                      <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="addsourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                    </li>
+	          </ol>
+	        </li>
+	      </ol>
+            </dd>
+            <dt>If an audio track becomes disabled and the <a>SourceBuffer</a> associated with this track is not associated with any other enabled or selected track</dt>
+            <dd>
+	      <ol>
+	        <li>Remove the <a>SourceBuffer</a> associated with the audio track from <a def-id="activeSourceBuffers"></a>
+                </li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If an audio track becomes enabled and the <a>SourceBuffer</a> associated with this track is not already in <a def-id="activeSourceBuffers"></a>
+            </dt>
+            <dd>
+	      <ol>
+	        <li>Add the <a>SourceBuffer</a> associated with the audio track to <a def-id="activeSourceBuffers"></a>
+                </li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="addsourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If a text track <a def-id="videoref" name="dom-texttrack-mode">mode</a> becomes <a def-id="videoref" name="dom-texttrack-disabled">"disabled"</a> and the <a>SourceBuffer</a> associated with this track is not associated with any other enabled or selected track</dt>
+            <dd>
+	      <ol>
+	        <li>Remove the <a>SourceBuffer</a> associated with the text track from <a def-id="activeSourceBuffers"></a>
+                </li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="removesourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If a text track <a def-id="videoref" name="dom-texttrack-mode">mode</a> becomes <a def-id="videoref" name="dom-texttrack-showing">"showing"</a> or <a def-id="videoref" name="dom-texttrack-hidden">"hidden"</a> and the <a>SourceBuffer</a> associated with this track is not already in <a def-id="activeSourceBuffers"></a>
+            </dt>
+            <dd>
+	      <ol>
+	        <li>Add the <a>SourceBuffer</a> associated with the text track to <a def-id="activeSourceBuffers"></a>
+                </li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="addsourcebuffer"></a> at <a def-id="activeSourceBuffers"></a>
+                </li>
+	      </ol>
+            </dd>
+          </dl>
+        </section>
+
+        <section id="duration-change-algorithm">
+          <h4>Duration change</h4>
+          <p>Follow these steps when <a def-id="duration"></a> needs to change to a <var>new duration</var>.</p>
+          <ol>
+            <li>If the current value of <a def-id="duration"></a> is equal to <var>new duration</var>, then abort these steps.</li>
+            <li>Update <a def-id="duration"></a> to <var>new duration</var>.</li>
+            <li>Remove all media data with timestamps that are greater than <var>new duration</var> from all <a>SourceBuffer</a> objects in <a def-id="sourceBuffers"></a>.
+              <p class="note">This preserves audio frames that start before and end after the <a def-id="duration"></a>. The user agent must end playback at <a def-id="duration"></a> even if the audio frame extends beyond this time.</p>
+            </li>
+            <li>Update the <a def-id="hme-duration"></a> to <var>new duration</var> and run the <a def-id="hme-duration-change-algorithm"></a>.</li>
+          </ol>
+        </section>
+      </section>
+    </section>
+
+    <section id="sourcebuffer">
+      <h2>SourceBuffer Object</h2>
+
+      <dl title="interface SourceBuffer : EventTarget" class="idl">
+        <dt>readonly attribute TimeRanges buffered</dt>
+        <dd>
+          <p>Indicates what <a def-id="timeranges"></a> are buffered in the <a>SourceBuffer</a>.</p>
+          <p>When the attribute is read the following steps must occur:</p>
+          <ol>
+            <li>If this object has been removed from the <a def-id="sourceBuffers"></a> attribute of the <a def-id="parent-media-source"></a> then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>Return a new static <a def-id="normalized-timeranges-object"></a> for the <a def-id="media-segments"></a> buffered.</li>
+          </ol>
+        </dd>
+
+        <dt>attribute double timestampOffset</dt>
+        <dd>
+          <p>Controls the offset applied to timestamps inside subsequent <a def-id="media-segments"></a> that are appended to this <a>SourceBuffer</a>. The <a def-id="timestampOffset"></a> is initially set to 0 which indicates that no offset is being applied.</p>
+          <p> On getting, the initial value or the last value that was successfully set is returned.</p>
+          <p>On setting, run following steps:</p>
+          <ol>
+            <li>If this object has been removed from the <a def-id="sourceBuffers"></a> attribute of the <a def-id="parent-media-source"></a>, then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> is not in the <a def-id="open"></a> state, then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>If this object is waiting for the end of a <a def-id="media-segment"></a> to be appended, then throw an <a def-id="invalid-state-err"></a> and abort these steps.</li>
+            <li>Update the attribute to the new value.</li>
+          </ol>
+        </dd>
+
+        <dt>void append(Uint8Array data)</dt>
+        <dd>
+          <p>Appends segment data to the source buffer.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">data</var> is null then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If this object has been removed from the <a def-id="sourceBuffers"></a> attribute of the <a def-id="parent-media-source"></a> then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> is in the <a def-id="closed"></a> state then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>
+              <p>If the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> is in the <a def-id="ended"></a> state then run the following steps:</p>
+              <ol>
+	        <li>Set the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> to <a def-id="open"></a>
+                </li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="sourceopen"></a> at the <a def-id="parent-media-source"></a> .</li>
+              </ol>
+            </li>
+            <li>If <var title="true">data</var>.byteLength is 0, then abort these steps.</li>
+            <li>Add <var title="true">data</var> to the end of the <a def-id="input-buffer"></a>
+            </li>
+            <li>Run the <a def-id="segment-parser-loop"></a>.</li>
+          </ol>
+        </dd>
+
+        <dt>void abort()</dt>
+        <dd>
+          <p>Aborts the current segment and resets the segment parser.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If this object has been removed from the <a def-id="sourceBuffers"></a> attribute of the <a def-id="parent-media-source"></a> then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> is not in the <a def-id="open"></a> state then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>The media element aborts parsing the current segment.</li>
+            <li>If the <a def-id="append-state"></a> equals <a def-id="parsing-media-segment"></a> and the <a def-id="input-buffer"></a> contains some complete <a def-id="coded-frames"></a>, then run the <a def-id="coded-frame-processing-algorithm"></a> as if the media segment only contained these frames.</li>
+            <li>Remove all bytes from the <a def-id="input-buffer"></a>.</li>
+            <li>Set <a def-id="append-state"></a> to <a def-id="waiting-for-segment"></a>.</li>
+          </ol>
+        </dd>
+
+        <dt>void remove(double start, double end)</dt>
+        <dd>
+          <p>Removes media for a specific time range.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">start</var> is negative or greater than <a def-id="duration"></a>, then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If <var title="true">end</var> is less than or equal to <var title="true">start</var>, then throw an <a def-id="invalid-access-err"></a> exception and abort these steps.</li>
+            <li>If this object has been removed from the <a def-id="sourceBuffers"></a> attribute of the <a def-id="parent-media-source"></a> then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>If the <a def-id="readyState"></a> attribute of the <a def-id="parent-media-source"></a> is not in the <a def-id="open"></a> state then throw an <a def-id="invalid-state-err"></a> exception and abort these steps.</li>
+            <li>
+              <p>For each track in this source buffer, run the following steps:</p>
+              <ol>
+	        <li>
+	          <p>Let <var title="true">next random access point timestamp</var> be the timestamp of the next <a def-id="random-access-point"></a>, for this track, that is greater than or equal to <var title="true">end</var>.</p>
+	          <p class="note"><var title="true">next random access point timestamp</var> can be different across tracks because the dependencies between <a def-id="coded-frames"></a> within a track are usually different than the dependencies in another track.</p>
+                </li>
+	        <li>Remove all media data, for this track, that contain starting timestamps greater than or equal to <var title="true">start</var> and less than the <var title="true">next random access point timestamp</var>.</li>
+	      </ol>
+            </li>
+        </ol>
+
+        </dd>
+      </dl>
+
+      <section id="sourcebuffer-algorithms">
+        <h3>Algorithms</h3>
+
+        <section id="sourcebuffer-segment-parser-loop">
+          <h4>Segment Parser Loop</h4>
+          <p>All SourceBuffer objects have an internal <dfn id="sourcebuffer-append-state">append state</dfn> variable that keeps track of the high-level segment parsing state. It is initially set to <a def-id="waiting-for-segment"></a> and can transition to the following states as data is appended.</p>
+          <table class="old-table">
+            <thead>
+	      <tr>
+                <th>Append state name</th>
+                <th>Description</th>
+              </tr>
+            </thead>
+            <tbody>
+              <tr>
+                <td><dfn id="sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</dfn></td>
+                <td>Waiting for the start of an <a def-id="init-segment"></a> or <a def-id="media-segment"></a> to be appended.</td>
+              </tr>
+              <tr>
+                <td><dfn id="sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</dfn></td>
+                <td>Currently parsing an <a def-id="init-segment"></a>.</td>
+              </tr>
+	      <tr>
+	        <td><dfn id="sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</dfn></td>
+                <td>Currently parsing a <a def-id="media-segment"></a>.</td>
+              </tr>
+            </tbody>
+          </table>
+          
+          <p>The <dfn id="sourcebuffer-input-buffer">input buffer</dfn> is a byte buffer that is used to hold unparsed bytes across <a def-id="append"></a> calls. The buffer is empty when the SourceBuffer object is created.</p>
+
+          <p>While the <a def-id="input-buffer"></a> is not empty, run the following steps in a loop:</p>
+          <ol>
+            <li>If the <a def-id="input-buffer"></a> starts with bytes that violate the <a def-id="byte-stream-format-specs"></a>, then call <a def-id="eos-decode"></a>, and abort this algorithm.</li>
+            <li>Remove any bytes that the <a def-id="byte-stream-format-specs"></a> say should be ignored from the start of the <a def-id="input-buffer"></a>.</li>
+            <li>
+	      <p>If the <a def-id="append-state"></a> equals <a def-id="waiting-for-segment"></a>, then run the following steps:</p>
+	      <ol>
+	        <li>If the beginning of the <a def-id="input-buffer"></a> indicates the start of an <a def-id="init-segment"></a>, set the <a def-id="append-state"></a> to <a def-id="parsing-init-segment"></a>.</li>
+	        <li>If the beginning of the <a def-id="input-buffer"></a> indicates the start of an <a def-id="media-segment"></a>, set <a def-id="append-state"></a> to <a def-id="parsing-media-segment"></a>.</li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a def-id="append-state"></a> equals <a def-id="parsing-init-segment"></a>, then run the following steps:</p>
+	      <ol>
+	        <li>If the <a def-id="input-buffer"></a> does not contain a complete <a def-id="init-segment"></a> yet, then exit the loop.</li>
+	        <li>Run the <a def-id="init-segment-received-algorithm"></a>.</li>
+	        <li>Remove the <a def-id="init-segment"></a> bytes from the beginning of the <a def-id="input-buffer"></a>.</li>
+	        <li>Set <a def-id="append-state"></a> to <a def-id="waiting-for-segment"></a>.</li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a def-id="append-state"></a> equals <a def-id="parsing-media-segment"></a>, then run the following steps:</p>
+	      <ol>
+	        <li>
+	          <p>If the <a def-id="input-buffer"></a> does not contain a complete <a def-id="media-segment"></a> header yet, then exit the loop.</p>
+	          <p class="note">Implementations may choose to implement this state as an incremental parser so that it is not necessary to have the entire media segment before running the <a def-id="coded-frame-processing-algorithm"></a>.</p>
+	        </li>
+	        <li>Run the <a def-id="coded-frame-processing-algorithm"></a>.</li>
+	        <li>Remove the <a def-id="media-segment"></a> bytes from the beginning of the <a def-id="input-buffer"></a>.</li>
+	        <li>
+	          <p>Set <a def-id="append-state"></a> to <a def-id="waiting-for-segment"></a>.</p>
+	          <p class="note">Incremental parsers should only do this transition after the entire media segment has been received.</p>
+	        </li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+          </ol>
+        </section>
+
+        <section id="sourcebuffer-init-segment-received">
+          <h4>Initialization Segment Received</h4>
+          <p>The following steps are run when the <a def-id="segment-parser-loop"></a> successfully parses a complete <a def-id="init-segment"></a>:</p>
+          <ol>
+            <li>Update the <a def-id="duration"></a> attribute if it currently equals NaN:</li>
+            <dl class="switch">
+	      <dt>If the initialization segment contains a duration:</dt>
+	      <dd>Run the <a def-id="duration-change-algorithm"></a> with <var>new duration</var> set to the duration in the initialization segment.</dd>
+	      <dt>Otherwise:</dt>
+	      <dd>Run the <a def-id="duration-change-algorithm"></a> with <var>new duration</var> set to positive Infinity.</dd>
+            </dl>
+            <li>Handle state transitions:</li>
+            <dl class="switch">
+	      <dt>If the <a def-id="ready-state"></a> attribute is <a def-id="have-nothing"></a>:</dt>
+	      <dd>
+	        <ol>
+	          <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-metadata"></a>.</li>
+	          <li>
+                    <a def-id="Queue-a-task-to-fire-an-event-named"></a>  <a def-id="loadedmetadata"></a> at the media element.</li>
+	        </ol>
+	      </dd>
+	      <dt>If the <a def-id="ready-state"></a> attribute is greater than <a def-id="have-current-data"></a> and the <a def-id="init-segment"></a> contains the first video or first audio track in the presentation:</dt>
+	      <dd>
+	        Set the <a def-id="ready-state"></a> attribute to <a def-id="have-metadata"></a>.
+	      </dd>
+	      <dt>Otherwise:</dt>
+	      <dd>Continue</dd>
+            </dl>
+            <li>Update <a def-id="audiotracks"></a>
+            </li>
+            <dl class="switch">
+	      <dt>If <a def-id="init-segment"></a> contains the first audio track:</dt>
+	      <dd>
+	        <ol>
+	          <li>Add an <a def-id="audio-track"></a> and mark it as enabled.</li>
+	          <li>Add this <a>SourceBuffer</a> to <a def-id="activeSourceBuffers"></a>.</li>
+	        </ol>
+	      </dd>
+	      <dt>If <a def-id="init-segment"></a> contains audio tracks beyond those already in the presentation:</dt>
+	      <dd>Add a disabled <a def-id="audio-track"></a> for each audio track in the <a def-id="init-segment"></a>.</dd>
+            </dl>
+            <li>Update <a def-id="videotracks"></a>:</li>
+            <dl class="switch">
+	      <dt>If <a def-id="init-segment"></a> contains the first video track:</dt>
+	      <dd>
+	        <ol>
+	          <li>Add a <a def-id="video-track"></a> and mark it as selected.</li>
+	          <li>Add this <a>SourceBuffer</a> to <a def-id="activeSourceBuffers"></a>.</li>
+	        </ol>
+	      </dd>
+	      <dt>If <a def-id="init-segment"></a> contains the video tracks beyond those already in the presentation:</dt>
+	      <dd>Add a disabled <a def-id="video-track"></a> for each video track in the <a def-id="init-segment"></a>.</dd>
+            </dl>
+            <li>Update <a def-id="texttracks"></a>
+            </li>
+            <dl class="switch">
+	      <dd>
+	        <ol>
+	          <li>Add a <a def-id="text-track"></a> for each text track in the <a def-id="init-segment"></a>.</li>
+	          <li>If the text track <a def-id="videoref" name="dom-texttrack-mode">mode</a> is <a def-id="videoref" name="dom-texttrack-showing">"showing"</a> or <a def-id="videoref" name="dom-texttrack-hidden">"hidden"</a> then add this <a>SourceBuffer</a> to <a def-id="activeSourceBuffers"></a>.</li>
+	        </ol>
+	      </dd>
+            </dl>
+          </ol>
+        </section>
+
+        <section id="sourcebuffer-coded-frame-processing">
+          <h4>Coded Frame Processing</h4>
+          <p>When a complete <a def-id="coded-frame"></a> has been parsed by the <a def-id="segment-parser-loop"></a> then the following steps are run:</p>
+          <ol>
+            <li>
+	      <p>For each <a def-id="coded-frame"></a> in the <a def-id="media-segment"></a> run the following steps:</p>
+	      <ol>
+	        <li>Let <var>presentation timestamp</var> be a double precision floating point representation of the coded frame's presentation timestamp.</li>
+	        <li>Let <var>decode timestamp</var> be a double precision floating point representation of the coded frame's decode timestamp.</li>
+	        <li>
+	          <p>If <a def-id="timestampOffset"></a> is not 0, then run the following steps:</p>
+	          <ol>
+	            <li>Add <a def-id="timestampOffset"></a> to the <var>presentation timestamp</var>.</li>
+	            <li>Add <a def-id="timestampOffset"></a> to the <var>decode timestamp</var>.</li>
+	            <li>If the <var>presentation timestamp</var> or <var>decode timestamp</var> is less than the <a def-id="presentation-start-time"></a>, then call <a def-id="eos-decode"></a>, and abort these steps.</li>
+	          </ol>
+	        </li>
+	        <li>Add the <a def-id="coded-frame"></a> with the <var>presentation timestamp</var> and <var title="true">decode timestamp</var>, to the source buffer.</li>
+	      </ol>
+            </li>
+            <li>
+              <p>If the <a def-id="ready-state"></a> attribute is <a def-id="have-metadata"></a> and the new <a def-id="coded-frames"></a> cause all objects in <a def-id="activeSourceBuffers"></a> to have media data for the current playback position, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-current-data"></a>.</li>
+	        <li>If this is the first transition to <a def-id="have-current-data"></a>, then <a def-id="queue-a-task-to-fire-an-event-named"></a> <a def-id="loadeddata"></a> at the media element.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a def-id="ready-state"></a> attribute is <a def-id="have-current-data"></a> and the new <a def-id="coded-frames"></a> cause all objects in <a def-id="activeSourceBuffers"></a> to have media data beyond the current playback position, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-future-data"></a>.</li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="canplay"></a> at the media element.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a def-id="ready-state"></a> attribute is <a def-id="have-future-data"></a> and the new <a def-id="coded-frames"></a> cause all objects in <a def-id="activeSourceBuffers"></a> to have enough data to start playback, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <a def-id="ready-state"></a> attribute to <a def-id="have-enough-data"></a>.</li>
+	        <li>
+                  <a def-id="Queue-a-task-to-fire-an-event-named"></a> <a def-id="canplaythrough"></a> at the media element.</li>
+	      </ol>
+            </li>
+            <li>If the <a def-id="media-segment"></a> contains data beyond the current <a def-id="duration"></a>, then run the <a def-id="duration-change-algorithm"></a> with <var>new duration</var> set to the maximum of the current duration and the highest end timestamp reported by <a def-id="hme-buffered"></a>.</li>
+          </ol>
+        </section>
+      </section>
+    </section>
+
+    <section id="sourcebufferlist">
+      <h2>SourceBufferList Object</h2>
+      <p>SourceBufferList is a simple container object for <a>SourceBuffer</a> objects. It provides read-only array access and fires events when the list is modified.</p>
+
+      <dl title="interface SourceBufferList : EventTarget" class="idl">
+        <dt>readonly attribute unsigned long length</dt>
+        <dd>
+          <p>Indicates the number of <a>SourceBuffer</a> objects in the list.</p>
+        </dd>
+        <dt>getter SourceBuffer (unsigned long index)</dt>
+        <dd>
+          <p>Allows the SourceBuffer objects in the list to be accessed with an array operator (i.e. []).</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var>index</var> is greater than or equal to the <a def-id="length"></a> attribute then return undefined and abort these steps.</li>
+            <li>Return the <var>index</var>'th <a>SourceBuffer</a> object in the list.</li>
+          </ol>
+        </dd>
+      </dl>
+
+      <section id="sourcebufferlist-events">
+        <h3>Event Summary</h3>
+        <table class="old-table">
+          <thead>
+            <tr>
+              <th>Event name</th>
+              <th>Interface</th>
+              <th>Dispatched when...</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td><a def-id="eventdfn">addsourcebuffer</a></td>
+              <td><code>Event</code></td>
+              <td>When a <a>SourceBuffer</a> is added to the list.</td>
+            </tr>
+            <tr>
+              <td><a def-id="eventdfn">removesourcebuffer</a></td>
+              <td><code>Event</code></td>
+              <td>When a <a>SourceBuffer</a> is removed from the list.</td>
+            </tr>
+          </tbody>
+        </table>
+      </section>
+    </section>
+
+    <section id="url">
+      <h2>URL Object</h2>
+      <p></p>
+
+      <dl title="partial interface URL" class="idl">
+        <dt>static DOMString createObjectURL(MediaSource mediaSource)</dt>
+        <dd>
+          <p>Creates URLs for <a>MediaSource</a> objects.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var>mediaSource</var> is NULL the return null.</li>
+            <li>Return a unique <a def-id="MediaSource-object-URL"></a> that can be used to dereference the <var>mediaSource</var> argument, and run the rest of the algorithm asynchronously.</li>
+            <li><a def-id="provide-a-stable-state"></a></li>
+            <li>Revoke the <a def-id="MediaSource-object-URL"></a> by calling <a def-id="file-revokeObjectURL"></a> on it.</li>
+          </ol>
+          <p class="note">This algorithm is intended to mirror the behavior of the <a def-id="FileAPI"></a> <a def-id="file-createObjectURL"></a> method with autoRevoke set to true.</p>
+        </dd>
+      </dl>
+    </section>
+
+    <section id="htmlmediaelement-attributes">
+      <h2>HTMLMediaElement attributes</h2>
+      <p>This section specifies what existing attributes on the <a def-id="videoref" name="htmlmediaelement">HTMLMediaElement</a> should return when a <a>MediaSource</a> is attached to the element.</p>
+
+      <p>The <a def-id="videoref" name="dom-media-seekable">HTMLMediaElement.seekable</a> attribute returns a new static <a def-id="normalized-timeranges-object"></a> created based on the following steps:</p>
+      <dl class="switch">
+        <dt>If <a def-id="duration"></a> equals NaN</dt>
+        <dd>Return an empty <a def-id="timeranges"></a> object.</dd>
+        <dt>If <a def-id="duration"></a> equals positive Infinity</dt>
+        <dd>Return a single range with a start time of 0 and an end time equal to the highest end time reported by the <a def-id="hme-buffered"></a> attribute.</dd>
+        <dt>Otherwise</dt>
+        <dd>Return a single range with a start time of 0 and an end time equal to <a def-id="duration"></a>.</dd>
+      </dl>
+
+      <p id="dom-htmlmediaelement.buffered">The <a def-id="hme-buffered"></a> attribute returns a new static <a def-id="normalized-timeranges-object"></a> created based on the following steps:</p>
+      <ol>
+        <li>Let <var>active ranges</var> be the ranges returned by <a def-id="buffered"></a> for each <a>SourceBuffer</a> object in <a def-id="activeSourceBuffers"></a>.</li>
+        <li>Let <var>intersection range</var> be the intersection of the <var>active ranges</var>.</li>
+        <li>
+          <p>If <a def-id="readyState"></a> is <a def-id="ended"></a>, then run the following steps:</p>
+          <ol>
+	    <li>Let <var>highest end time</var> be the largest end time in the <var>active ranges</var>.</li>
+	    <li>Let <var>highest intersection end time</var> be the highest end time in the <var>intersection range</var>.</li>
+	    <li>If the <var>highest intersection end time</var> is less than the <var>highest end time</var>, then update the <var>intersection range</var> so that the <var>highest intersection end time</var> equals the <var>highest end time</var>.</li>
+	  </ol>
+        </li>
+        <li>Return the <var>intersection range</var>.</li>
+      </ol>
+    </section>
+    
+    <section id="byte-stream-formats">
+      <h2>Byte Stream Formats</h2>
+      <p>The bytes provided through <a def-id="append"></a> for a <a>SourceBuffer</a> form a logical byte stream. The format of this byte stream depends on the media container format in use and is defined in a byte stream format specification. Byte stream format specifications based on WebM and the ISO Base Media File Format are provided below. If these formats are supported then the byte stream formats described below must be supported.</p>
+      <p>This section provides general requirements for all byte stream formats:</p>
+      <ul>
+        <li>A byte stream format specification may define <a def-id="init-segments"></a> and must define <a def-id="media-segments"></a>.</li>
+        <li>It must be possible to identify segment boundaries and segment type (initialization or media) by examining the byte stream alone.</li>
+        <li>The combination of an Initialization Segment and any contiguous sequence of Media Segments associated with it must:
+	  <ol>
+	    <li>Identify the number and type (audio, video, text, etc.) of tracks in the Segments</li>
+	    <li>Identify the decoding capabilities needed to decode each track (i.e. codec and codec parameters)</li>
+	    <li>If a track is encrypted, provide any encryption parameters necessary to decrypt the content (except the encryption key itself)</li>
+	    <li>For each track, provide all information necessary to decode and render the earliest <a def-id="random-access-point"></a> in the sequence of Media Segments and all subsequent samples in the sequence (in presentation time). This includes, in particular,
+	      <ul>
+	        <li>Information that determines the <a def-id="intrinsic-width-and-height"></a> of the video (specifically, this requires either the picture or pixel aspect ratio, together with the encoded resolution).</li>
+	        <li>Information necessary to convert the video decoder output to a format suitable for display</li>
+	      </ul>
+	    </li>
+	    <li>Identify the global presentation timestamp of every sample in the sequence of Media Segments</li>
+	    <p>For example, if I1 is associated with M1, M2, M3 then the above must hold for all the combinations I1+M1, I1+M2, I1+M1+M2, I1+M2+M3, etc.</p>
+	  </ol>
+        </li>
+      </ul>
+      <p>Byte stream specifications must at a minimum define constraints which ensure that the above requirements hold. Additional constraints may be defined, for example to simplify implementation.</p>
+
+      <p>Initialization segments are an optimization. They allow a byte stream format to avoid duplication of information in Media Segments that is the same for many Media Segments. Byte stream format specifications need not specify Initialization Segment formats, however. They may instead require that such information is duplicated in every Media Segment.</p>
+
+      <section id="webm" class="nonnormative">
+        <h3>WebM Byte Streams</h3>
+        <p>This section defines segment formats for implementations that choose to support WebM.</p>
+
+        <section id="webm-init-segments">
+          <h4>Initialization Segments</h4>
+          <p>A WebM <a def-id="init-segment"></a> must contain a subset of the elements at the start of a typical WebM file.</p>
+          <p>The following rules apply to WebM initialization segments:</p>
+          <ol>
+	    <li>The <a def-id="init-segment"></a> must start with an <a def-id="webm-ebml-header"></a> element, followed by a <a def-id="webm-segment"></a> header.</li>
+	    <li>The size value in the <a def-id="webm-segment"></a> header must signal an "unknown size" or contain a value large enough to include the <a def-id="webm-info"></a> and <a def-id="webm-tracks"></a> elements that follow.</li>
+	    <li>A <a def-id="webm-info"></a> element and a <a def-id="webm-tracks"></a> element must appear, in that order, after the <a def-id="webm-segment"></a> header and before any further <a def-id="webm-ebml-header"></a> or <a def-id="webm-cluster"></a> elements.</li>
+	    <li>Any elements other than an <a def-id="webm-ebml-header"></a> or a <a def-id="webm-cluster"></a> that occur before, in between, or after the <a def-id="webm-info"></a> and <a def-id="webm-tracks"></a> elements are ignored.</li>
+          </ol>
+        </section>
+
+        <section id="webm-media-segments">
+          <h4>Media Segments</h4>
+          <p>A WebM <a def-id="media-segment"></a> is a single <a def-id="webm-cluster"></a> element.</p>
+          <p>The following rules apply to WebM media segments:</p>
+          <ol>
+	    <li>The Timecode element in the <a def-id="webm-cluster"></a> contains a presentation timestamp in TimecodeScale units.</li>
+	    <li>The TimecodeScale in the <a def-id="webm-init-segment"></a> most recently appended applies to all timestamps in the <a def-id="webm-cluster"></a>
+            </li>
+	    <li>The Cluster header may contain an "unknown" size value. If it does then the end of the cluster is reached when another <a def-id="webm-cluster"></a> header or an element header that indicates the start of an <a def-id="webm-init-segment"></a> is encountered.</li>
+	    <li>Block &amp; SimpleBlock elements must be in time increasing order consistent with the <a def-id="webm-spec"></a>.</li>
+	    <li>If the most recent <a def-id="webm-init-segment"></a> describes multiple tracks, then blocks from all the tracks must be interleaved in time increasing order. At least one block from all audio and video tracks must be present.</li>
+	    <li>
+              <a def-id="webm-cues"></a> or <a def-id="webm-chapters"></a> elements may follow a <a def-id="webm-cluster"></a> element. These elements must be accepted and ignored by the user agent.</li>
+          </ol>
+        </section>
+
+        <section id="webm-random-access-points">
+          <h4>Random Access Points</h4>
+          <p>A SimpleBlock element with its Keyframe flag set signals the location of a <a def-id="random-access-point"></a> for that track. Media segments containing multiple tracks are only considered a random access point if the first SimpleBlock for each track has its Keyframe flag set. The order of the multiplexed blocks must conform to the <a def-id="webm-muxer-guidelines"></a>.</p>
+        </section>
+      </section>
+      
+      <section id="iso" class="nonnormative">
+        <h3>ISO Base Media File Format Byte Streams</h3>
+        <p>This section defines segment formats for implementations that choose to support the ISO Base Media File Format
+	  <a def-id="iso-14496-12"></a> (ISO BMFF).</p> 
+
+	<section id="iso-init-segments">
+          <h4>Initialization Segments</h4>
+          <p>An ISO BMFF <a def-id="init-segment"></a> must contain a single Movie Header Box (<span class="iso-box">moov</span>). The tracks in the Movie Header Box must not contain any samples (i.e. the <span class="iso-var">entry_count</span> in the <span class="iso-box">stts</span>, <span class="iso-box">stsc</span> and <span class="iso-box">stco</span> boxes must be set to zero). A Movie Extends (<span class="iso-box">mvex</span>) box must be contained in the
+	    Movie Header Box to indicate that Movie Fragments are to be expected.</p>
+          <p>The <a def-id="init-segment"></a> may contain Edit Boxes (<span class="iso-box">edts</span>) which provide a mapping of composition times for each track to the global presentation time.</p>
+	</section>
+        
+	<section id="iso-media-segments">
+          <h4>Media Segments</h4>
+          <p>An ISO BMFF <a def-id="media-segment"></a> must contain a single Movie Fragment Box (<span class="iso-box">moof</span>) followed by one or more Media Data Boxes (<span class="iso-box">mdat</span>).</p>
+          <p>The following rules apply to ISO BMFF media segments:</p>
+          <ol>
+	    <li>The Movie Fragment Box must contain at least one Track Fragment Box (<span class="iso-box">traf</span>).</li>
+	    <li>The Movie Fragment Box must use movie-fragment relative addressing and the flag <span class="iso-var">default-base-is-moof</span> must be set; absolute byte-offsets must not be used.</li>
+	    <li>External data references must not be used.</li>
+	    <li>If the Movie Fragment contains multiple tracks, the duration by which each track extends should be as close to equal as practical.</li>
+	    <li>Each Track Fragment Box must contain a Track Fragment Decode Time Box (<span class="iso-box">tfdt</span>)</li>
+	    <li>The first sample in each Track Fragment Run Box (<span class="iso-box">trun</span>) must indicate that the sample is a <a def-id="random-access-point"></a>.</li>
+	    <li>The Media Data Boxes must contain all the samples referenced by the Track Fragment Run Boxes (<span class="iso-box">trun</span>) of the Movie Fragment Box.</li>
+          </ol>
+	</section>
+
+	<section id="iso-random-access-points">
+          <h4>Random Access Points</h4>
+          <p>A <a def-id="random-access-point"></a> as defined in this specification corresponds to a Stream Access Point of type 1 or 2 as defined in Annex I of <a def-id="iso-14496-12"></a>.</p>
+	</section>
+      </section>
+    </section>
+
+    <section id="examples">
+      <h2>Examples</h2>
+      <p>Example use of the Media Source Extensions</p>
+      <div class="block">
+        <div class="blockContent">
+          <pre class="code">
+&lt;script&gt;
+  function onSourceOpen(videoTag, e) {
+    var mediaSource = e.target;
+    var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
+
+    videoTag.addEventListener('seeking', onSeeking.bind(videoTag, mediaSource));
+    videoTag.addEventListener('progress', onProgress.bind(videoTag, mediaSource));
+
+    var initSegment = GetInitializationSegment();
+
+    if (initSegment == null) {
+      // Error fetching the initialization segment. Signal end of stream with an error.
+      mediaSource.endOfStream("network");
+      return;
+    }
+
+    // Append the initialization segment.
+    sourceBuffer.append(initSegment);
+
+    // Append some initial media data.
+    appendNextMediaSegment(mediaSource);
+  }
+
+  function appendNextMediaSegment(mediaSource) {
+    if (mediaSource.readyState == "ended")
+      return;
+
+    // If we have run out of stream data, then signal end of stream.
+    if (!HaveMoreMediaSegments()) {
+      mediaSource.endOfStream();
+      return;
+    }
+
+    var mediaSegment = GetNextMediaSegment();
+
+    if (!mediaSegment) {
+      // Error fetching the next media segment.
+      mediaSource.endOfStream("network");
+      return;
+    }
+
+    mediaSource.sourceBuffers[0].append(mediaSegment);
+  }
+
+  function onSeeking(mediaSource, e) {
+    var video = e.target;
+
+    // Abort current segment append.
+    mediaSource.sourceBuffers[0].abort();
+
+    // Notify the media segment loading code to start fetching data at the
+    // new playback position.
+    SeekToMediaSegmentAt(video.currentTime);
+
+    // Append media segments from the new playback position.
+    appendNextMediaSegment(mediaSource);
+    appendNextMediaSegment(mediaSource);
+  }
+
+  function onProgress(mediaSource, e) {
+    appendNextMediaSegment(mediaSource);
+  }
+&lt;/script&gt;
+
+&lt;video id="v" autoplay&gt; &lt;/video&gt;
+
+&lt;script&gt;
+  var video = document.getElementById('v');
+  var mediaSource = new MediaSource();
+  mediaSource.addEventListener('sourceopen', onSourceOpen.bind(this, video));
+  video.src = window.URL.createObjectURL(mediaSource);
+&lt;/script&gt;
+          </pre>
+        </div>
+      </div>
+    </section>
+
+    <section id="revision-history">
+      <h2>Revision History</h2>
+      <table class="old-table">
+        <thead>
+          <tr>
+            <th>Version</th>
+            <th>Comment</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+	    <td>09 November 2012</a></td>
+            <td>Converted document to ReSpec.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/rev/e029f71aafca">18 October 2012</a></td>
+            <td>Refactored SourceBuffer.append() &amp; added SourceBuffer.remove().</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/rev/6d127e69c9f8">8 October 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Defined what HTMLMediaElement.seekable and HTMLMediaElement.buffered should return.</li>
+	        <li>Updated seeking algorithm to run inside Step 10 of the HTMLMediaElement seeking algorithm.</li>
+	        <li>Removed transition from "ended" to "open" in the seeking algorithm.</li>
+	        <li>Clarified all the event targets.</li>
+	      </ul>
+	    </td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/7bab66368f2c/media-source/media-source.html">1 October 2012</a></td>
+            <td>Fixed various addsourcebuffer &amp; removesourcebuffer bugs and allow append() in ended state.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/349559debcc3/media-source/media-source.html">13 September 2012</a></td>
+            <td>Updated endOfStream() behavior to change based on the value of HTMLMediaElement.readyState.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ca093bbbbefb/media-source/media-source.html">24 August 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Added early abort on to duration change algorithm.</li>
+	        <li>Added createObjectURL() IDL &amp; algorithm.</li>
+                <li>Added Track ID &amp; Track description definitions.</li>
+                <li>Rewrote start overlap for audio frames text.</li>
+                <li>Removed rendering silence requirement from section 2.5.</li>
+	      </ul>
+	    </td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/340786fcae83/media-source/media-source.html">22 August 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Clarified WebM byte stream requirements.</li>
+	        <li>Clarified SourceBuffer.buffered return value.</li>
+	        <li>Clarified addsourcebuffer &amp; removesourcebuffer event targets.</li>
+	        <li>Clarified when media source attaches to the HTMLMediaElement.</li>
+	        <li>Introduced duration change algorithm and update relevant algorithms to use it.</li>
+	      </ul>
+	    </td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/032f7b8681d1/media-source/media-source.html">17 August 2012</a></td>
+            <td>Minor editorial fixes.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/29687c019735/media-source/media-source.html">09 August 2012</a></td>
+            <td>Change presentation start time to always be 0 instead of using format specific rules about the first media segment appended.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/087ea42f59c8/media-source/media-source.html">30 July 2012</a></td>
+            <td>Added SourceBuffer.timestampOffset and MediaSource.duration.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ab36e8e882c6/media-source/media-source.html">17 July 2012</a></td>
+            <td>Replaced SourceBufferList.remove() with MediaSource.removeSourceBuffer().</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/b499a199e427/media-source/media-source.html">02 July 2012</a></td>
+            <td>Converted to the object-oriented API</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/9bbfe09653e4/media-source/media-source.html">26 June 2012</a></td>
+            <td>Converted to Editor's draft.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/e433598d22a7/media-source/media-source.html">0.5</a></td>
+            <td>Minor updates before proposing to W3C HTML-WG.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.4/draft-spec/mediasource-draft-spec.html">0.4</a></td>
+            <td>Major revision. Adding source IDs, defining buffer model, and clarifying byte stream formats.</td>
+          </tr>
+	  <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.3/draft-spec/mediasource-draft-spec.html">0.3</a></td>
+            <td>Minor text updates.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.2/draft-spec/mediasource-draft-spec.html">0.2</a></td>
+            <td>Updates to reflect initial WebKit implementation.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.1/draft-spec/mediasource-draft-spec.html">0.1</a></td>
+            <td>Initial Proposal</td>
+          </tr>
+        </tbody>
+      </table>
+    </section>
+  </body>
+</html>
--- a/media-source/media-source.html	Wed Oct 31 17:47:58 2012 +0100
+++ b/media-source/media-source.html	Thu Nov 08 17:13:35 2012 -0800
@@ -1,1154 +1,1554 @@
-<!DOCTYPE html SYSTEM "about:legacy-compat">
-<html>
-  <head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<!DOCTYPE html>
+<html lang="en" dir="ltr">
+<head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     <title>Media Source Extensions</title>
-    <link rel="stylesheet" href="video-working-draft.css">
-    <link rel="stylesheet" href="main.css">
-    <link type="text/css" rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/w3c-ed.css">
+    
+    
+    
+
     <style type="text/css">
-          
-          .issue {
-          padding:    1em;
-          margin: 1em 0em 0em;
-          border: 1px solid #f00;
-          background: #fcc;
-          }
-          .issue::before {
-          content:    "Issue";
-          display:    block;
-          width:  150px;
-          margin: -1.5em 0 0.5em 0;
-          font-weight:    bold;
-          border: 1px solid #f00;
-          background: #fff;
-          padding:    3px 1em;
-          }
+      .nonnormative { color: green; margin: 2em 0 2em 0em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
+      .nonnormative h3 { color: inherit; background: inherit; }
+      .nonnormative:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This section is non-normative.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
 
-	  div.nonnormative { color: green; margin: 2em 0 2em 0em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
-	  .nonnormative:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This section is non-normative.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
+      .example { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
+      hr + dl.example, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
+      dl.example dt, dl.domintro dt * { color: black; text-decoration: none; }
+      dl.example dd { margin: 0.5em 0 1em 2em; padding: 0; }
+      dl.example dd p { margin: 0.5em 0; }
 
-	  
-	  .example { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
-	  hr + dl.example, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
-	  dl.example dt, dl.domintro dt * { color: black; text-decoration: none; }
-	  dl.example dd { margin: 0.5em 0 1em 2em; padding: 0; }
-	  dl.example dd p { margin: 0.5em 0; }
+      .example:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
 
-	  .example:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
+      .iso-box { font-weight: bold; }
+      .iso-var { font-style: italic; }
+
+      table.old-table { border-collapse: collapse; border-style: hidden hidden none hidden; }
+      table.old-table thead, table tbody { border-bottom: solid; }
+      table.old-table tbody th:first-child { border-left: solid; }
+      table.old-table tbody th { text-align: left; }
+      table.old-table td, table th { border-left: solid; border-right: solid; border-bottom: solid thin; vertical-align: top; padding: 0.2em; }
+
+      dl.switch { padding-left: 2em; }
+      dl.switch > dt { text-indent: -1.5em; }
+      dl.switch > dt:before { content: '\21AA'; padding: 0 0.5em 0 0; display: inline-block; width: 1em; text-align: right; line-height: 0.5em; }
+
+      p + * > li, dd li { margin: 1em 0; }
+
+      @media screen { code :link, code :visited { color: inherit; } }
     </style>
-  </head>
-  <body>
-    <div class="head">
-      <p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" width="72" height="48"></a></p>
-      <h1>Media Source Extensions</h1>
-      <h2>W3C Editor's Draft 18 October 2012</h2>
-      <dl>
-	<dt>Latest published version:</dt>
-	<dd>Not yet published</dd>
-	<dt>Latest editor's draft:</dt>
-	<dd><a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html</a></dd>
-	<dt>Editors:</dt>
-	<dd>Aaron Colwell, Google, Inc.</dd>
-	<dd>Adrian Bateman, Microsoft Corporation</dd>
-	<dd>Mark Watson, Netflix, Inc.</dd>
-	<dt>Bug/Issue lists:</dt>
-	<dd>
-<a href="http://w3.org/brief/Mjcw">Bugzilla</a>, <a href="http://www.w3.org/html/wg/tracker/products/20">Tracker</a>
-</dd>
-	<dt>Discussion list:</dt>
-	<dd><a href="http://lists.w3.org/Archives/Public/public-html-media/">public-html-media@w3.org</a></dd>
-	<dt>Test Suite:</dt>
-	<dd>None yet</dd>
+  <style>/*****************************************************************
+ * ReSpec 3 CSS
+ * Robin Berjon - http://berjon.com/
+ *****************************************************************/
 
-      </dl>
-    </div>
-    <p class="copyright"><a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#Copyright">Copyright</a> © 2012 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>
+/* --- INLINES --- */
+em.rfc2119 { 
+    text-transform:     lowercase;
+    font-variant:       small-caps;
+    font-style:         normal;
+    color:              #900;
+}
 
-    <h2>Status of this Document</h2>
+h1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,
+h1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {
+    border: none;
+}
+
+dfn {
+    font-weight:    bold;
+}
+
+a.internalDFN {
+    color:  inherit;
+    border-bottom:  1px solid #99c;
+    text-decoration:    none;
+}
+
+a.externalDFN {
+    color:  inherit;
+    border-bottom:  1px dotted #ccc;
+    text-decoration:    none;
+}
+
+a.bibref {
+    text-decoration:    none;
+}
+
+cite .bibref {
+    font-style: normal;
+}
+
+code {
+    color:  #ff4500;
+}
+
+
+/* --- --- */
+ol.algorithm { counter-reset:numsection; list-style-type: none; }
+ol.algorithm li { margin: 0.5em 0; }
+ol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }
+
+/* --- TOC --- */
+.toc a, .tof a {
+    text-decoration:    none;
+}
+
+a .secno, a .figno {
+    color:  #000;
+}
+
+ul.tof, ol.tof {
+    list-style: none outside none;
+}
+
+.caption {
+    margin-top: 0.5em;
+    font-style:   italic;
+}
+
+/* --- TABLE --- */
+table.simple {
+    border-spacing: 0;
+    border-collapse:    collapse;
+    border-bottom:  3px solid #005a9c;
+}
+
+.simple th {
+    background: #005a9c;
+    color:  #fff;
+    padding:    3px 5px;
+    text-align: left;
+}
+
+.simple th[scope="row"] {
+    background: inherit;
+    color:  inherit;
+    border-top: 1px solid #ddd;
+}
+
+.simple td {
+    padding:    3px 10px;
+    border-top: 1px solid #ddd;
+}
+
+.simple tr:nth-child(even) {
+    background: #f0f6ff;
+}
+
+/* --- DL --- */
+.section dd > p:first-child {
+    margin-top: 0;
+}
+
+.section dd > p:last-child {
+    margin-bottom: 0;
+}
+
+.section dd {
+    margin-bottom:  1em;
+}
+
+.section dl.attrs dd, .section dl.eldef dd {
+    margin-bottom:  0;
+}
+</style><style>/* --- ISSUES/NOTES --- */
+div.issue-title, div.note-title {
+    padding-right:  1em;
+    min-width: 7.5em;
+    color: #b9ab2d;
+}
+div.issue-title { color: #e05252; }
+div.note-title { color: #52e052; }
+div.issue-title span, div.note-title span {
+    text-transform: uppercase;
+}
+div.note, div.issue {
+    margin-top: 1em;
+    margin-bottom: 1em;
+}
+.note > p:first-child, .issue > p:first-child { margin-top: 0 }
+.issue, .note {
+    padding: .5em;
+    border-left-width: .5em;
+    border-left-style: solid;
+}
+div.issue, div.note {
+    padding: 0.5em;
+    margin: 1em 0;
+    position: relative;
+    clear: both;
+}
+span.note, span.issue { padding: .1em .5em .15em; }
+
+.issue {
+    border-color: #e05252;
+    background: #fbe9e9;
+}
+.note {
+    border-color: #52e052;
+    background: #e9fbe9;
+}
+
+
+</style><style>/* --- WEB IDL --- */
+pre.idl {
+    border-top: 1px solid #90b8de;
+    border-bottom: 1px solid #90b8de;
+    padding:    1em;
+    line-height:    120%;
+}
+
+pre.idl::before {
+    content:    "WebIDL";
+    display:    block;
+    width:      150px;
+    background: #90b8de;
+    color:  #fff;
+    font-family:    initial;
+    padding:    3px;
+    font-weight:    bold;
+    margin: -1em 0 1em -1em;
+}
+
+.idlType {
+    color:  #ff4500;
+    font-weight:    bold;
+    text-decoration:    none;
+}
+
+/*.idlModule*/
+/*.idlModuleID*/
+/*.idlInterface*/
+.idlInterfaceID, .idlDictionaryID, .idlCallbackID, .idlEnumID {
+    font-weight:    bold;
+    color:  #005a9c;
+}
+
+.idlSuperclass {
+    font-style: italic;
+    color:  #005a9c;
+}
+
+/*.idlAttribute*/
+.idlAttrType, .idlFieldType, .idlMemberType {
+    color:  #005a9c;
+}
+.idlAttrName, .idlFieldName, .idlMemberName {
+    color:  #ff4500;
+}
+.idlAttrName a, .idlFieldName a, .idlMemberName a {
+    color:  #ff4500;
+    border-bottom:  1px dotted #ff4500;
+    text-decoration: none;
+}
+
+/*.idlMethod*/
+.idlMethType, .idlCallbackType {
+    color:  #005a9c;
+}
+.idlMethName {
+    color:  #ff4500;
+}
+.idlMethName a {
+    color:  #ff4500;
+    border-bottom:  1px dotted #ff4500;
+    text-decoration: none;
+}
+
+/*.idlParam*/
+.idlParamType {
+    color:  #005a9c;
+}
+.idlParamName {
+    font-style: italic;
+}
+
+.extAttr {
+    color:  #666;
+}
+
+/*.idlConst*/
+.idlConstType {
+    color:  #005a9c;
+}
+.idlConstName {
+    color:  #ff4500;
+}
+.idlConstName a {
+    color:  #ff4500;
+    border-bottom:  1px dotted #ff4500;
+    text-decoration: none;
+}
+
+/*.idlException*/
+.idlExceptionID {
+    font-weight:    bold;
+    color:  #c00;
+}
+
+.idlTypedefID, .idlTypedefType {
+    color:  #005a9c;
+}
+
+.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {
+    color:  #c00;
+    font-weight:    normal;
+}
+
+.excName a {
+    font-family:    monospace;
+}
+
+.idlRaises a.idlType, .excName a.idlType {
+    border-bottom:  1px dotted #c00;
+}
+
+.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {
+    width:  45px;
+    text-align: center;
+}
+.excGetSetTrue, .prmNullTrue, .prmOptTrue { color:  #0c0; }
+.excGetSetFalse, .prmNullFalse, .prmOptFalse { color:  #c00; }
+
+.idlImplements a {
+    font-weight:    bold;
+}
+
+dl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {
+    margin-left:    2em;
+}
+
+.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {
+    font-weight:    normal;
+}
+
+.attributes dt code, .methods dt code, .constants dt code, .fields dt code, .dictionary-members dt code {
+    font-weight:    bold;
+    color:  #000;
+    font-family:    monospace;
+}
+
+.attributes dt code, .fields dt code, .dictionary-members dt code {
+    background:  #ffffd2;
+}
+
+.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {
+    color:  #005a9c;
+    background:  transparent;
+    font-family:    inherit;
+    font-weight:    normal;
+    font-style: italic;
+}
+
+.methods dt code {
+    background:  #d9e6f8;
+}
+
+.constants dt code {
+    background:  #ddffd2;
+}
+
+.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {
+    margin-bottom:  1em;
+}
+
+table.parameters, table.exceptions {
+    border-spacing: 0;
+    border-collapse:    collapse;
+    margin: 0.5em 0;
+    width:  100%;
+}
+table.parameters { border-bottom:  1px solid #90b8de; }
+table.exceptions { border-bottom:  1px solid #deb890; }
+
+.parameters th, .exceptions th {
+    color:  #fff;
+    padding:    3px 5px;
+    text-align: left;
+    font-family:    initial;
+    font-weight:    normal;
+    text-shadow:    #666 1px 1px 0;
+}
+.parameters th { background: #90b8de; }
+.exceptions th { background: #deb890; }
+
+.parameters td, .exceptions td {
+    padding:    3px 10px;
+    border-top: 1px solid #ddd;
+    vertical-align: top;
+}
+
+.parameters tr:first-child td, .exceptions tr:first-child td {
+    border-top: none;
+}
+
+.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {
+    width:  100px;
+}
+
+.parameters td.prmType {
+    width:  120px;
+}
+
+table.exceptions table {
+    border-spacing: 0;
+    border-collapse:    collapse;
+    width:  100%;
+}
+</style><link rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/W3C-ED"><!--[if lt IE 9]><script src='http://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]--></head>
+  <body><div class="head">
+  <p>
+    
+      <a href="http://www.w3.org/"><img width="72" height="48" src="http://www.w3.org/Icons/w3c_home" alt="W3C"></a>
+    
+  </p>
+  <h1 class="title" id="title">Media Source Extensions</h1>
+  
+  <h2 id="w3c-editor-s-draft-09-november-2012"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft 09 November 2012</h2>
+  <dl>
+    
+      <dt>This version:</dt>
+      <dd><a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html</a></dd>
+      <dt>Latest published version:</dt>
+      <dd><a href="http://www.w3.org/TR//">http://www.w3.org/TR//</a></dd>
+    
+    
+      <dt>Latest editor's draft:</dt>
+      <dd><a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html</a></dd>
+    
+    
+    
+    
       
-    <p><em>
-      This section describes the status of this document at the time of its publication. Other documents may supersede this document.
-      A list of current W3C publications and the latest revision of this technical report can be found in the
-      <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/.
-    </em></p>
+    
+    
+    
+    <dt>Editors:</dt>
+    <dd><span>Aaron Colwell</span>, <a href="http://google.com/">Google Inc.</a></dd>
+<dd><span>Adrian Bateman</span>, <a href="http://microsoft.com/">Microsoft Corporation</a></dd>
+<dd><span>Mark Watson</span>, <a href="http://netflix.com/">Netflix Inc.</a></dd>
 
-    <p>
-      This document was published by the <a href="http://www.w3.org/html/wg/">HTML working group</a> as an Editor's Draft.
-      Please submit comments regarding this document by using the W3C's (<a href="https://www.w3.org/Bugs/Public/enter_bug.cgi?product=HTML%20WG&amp;component=Media%20Source%20Extensions">public bug database</a>) with the product set to <kbd>HTML WG</kbd> and the component set to
-      <kbd>Media Source Extensions</kbd>.
-      If you cannot access the bug database, submit comments to <a href="mailto:public-html-media@w3.org">public-html-media@w3.org</a>
-      (<a href="mailto:public-html-media-request@w3.org?subject=subscribe">subscribe</a>,
-      <a href="http://lists.w3.org/Archives/Public/public-html-media/">archives</a>) and arrangements will be made to transpose the comments to the bug database.
-      All feedback is welcome.
-    </p>
+    
+  </dl>
+  
+  
+  
+  
+    
+      <p class="copyright">
+        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 
+        2012
+        
+        <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> 
+        (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>,
+        <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>,
+        <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
+        <abbr title="World Wide Web Consortium">W3C</abbr> <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
+        <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and
+        <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.
+      </p>
+    
+  
+  <hr>
+</div>
+    
+    
 
-    <p>
-      Publication as a Editor's Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated,
-      replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
-    </p>
-    <p>
-      This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>.
-      W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/40318/status" rel="disclosure">public list of any patent disclosures</a> made in connection with
-      the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which
-      the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
-      information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.
-    </p>     
-
-    <h2>Abstract</h2>
-    <p>
+    <section id="abstract" class="introductory"><h2>Abstract</h2><p>
       This proposal extends HTMLMediaElement to allow 
       JavaScript to generate media streams for playback. 
       Allowing JavaScript to generate streams facilitates a variety of use 
       cases like adaptive streaming and time shifting live streams.
-    </p>
-
-    <h2>Table of Contents</h2>
-
-    <ul id="toc" class="toc">
-      <li><a href="#introduction">1. Introduction</a></li>
-      <li>
-	<ul>
-	  <li><a href="#goals">1.1 Goals</a></li>
-	  <li><a href="#definitions">1.2 Definitions</a></li>
-	</ul>
-      </li>
-      <li><a href="#source-buffer-model">2. Source Buffer Model</a></li>
-      <li>
-	<ul>
-	  <li><a href="#source-buffer-create">2.1. Creating Source Buffers</a></li>
-	  <li><a href="#source-buffer-remove">2.2. Removing Source Buffers</a></li>
-	  <li><a href="#source-buffer-basic-append">2.3. Basic appending model</a></li>
-	  <li><a href="#source-buffer-init-segment-constraints">2.4.  Initialization Segment constraints</a></li>
-	  <li><a href="#source-buffer-media-segment-constraints">2.5. Media Segment constraints</a></li>
-	  <li><a href="#source-buffer-first-init-segment">2.6. Appending the first Initialization Segment</a></li>
-	  <li><a href="#source-buffer-media-segment-unbuffered">2.7. Appending a Media Segment to an unbuffered region</a></li>
-	  <li><a href="#source-buffer-overlapping-segments">2.8. Appending a Media Segment over a buffered region</a></li>
-	  <li><a href="#source-buffer-to-track-buffer">2.9. Source Buffer to Track Buffer transfer</a></li>
-	  <li><a href="#source-buffer-segment-eviction">2.10. Media Segment Eviction</a></li>
-	  <li><a href="#source-buffer-timestamp-offsets">2.11. Applying Timestamp Offsets</a></li>
-	</ul>
-      </li>
-      <li>
-<a href="#mediasource">3. MediaSource Object</a>
-	<ul>
-	  <li><a href="#mediasource-methods">3.1. Methods and Attributes</a></li>
-	  <li><a href="#mediasource-events">3.2. Event Summary</a></li>
-	  <li><a href="#mediasource-algorithms">3.3. Algorithms</a></li>
-	</ul>
-      </li>
-      <li>
-<a href="#sourcebuffer">4. SourceBuffer Object</a>
-        <ul>
-	  <li><a href="#sourcebuffer-methods">4.1. Methods and Attributes</a></li>
-	  <li><a href="#sourcebuffer-algorithms">4.2. Algorithms</a></li>
-	</ul>
-      </li>
-
-      <li>
-<a href="#sourcebufferlist">5. SourceBufferList Object</a>
-	<ul>
-	  <li><a href="#sourcebufferlist-methods">5.1. Methods and Attributes</a></li>
-	  <li><a href="#sourcebufferlist-events">5.2. Event Summary</a></li>
-	</ul>
-      </li>
-      <li>
-<a href="#url">6. URL Object</a>
-	<ul>
-	  <li><a href="#url-methods">6.1. Methods</a></li>
-	</ul>
-      </li>
-      <li><a href="#htmlmediaelement-attributes">7. HTMLMediaElement attributes</a></li>
-      <li><a href="#byte-stream-formats">8. Byte Stream Formats</a></li>
-      <li>
-	<ul>
-	  <li><a href="#webm">8.1 WebM</a></li>
-	  <li><a href="#iso">8.2 ISO Base Media File Format</a></li>
-	</ul>
-      </li>
-      <li><a href="#examples">9. Examples</a></li>
-      <li><a href="#revision-history">10. Revision History</a></li>
-    </ul>
-
-    <h2 id="introduction">1. Introduction</h2>
-    <p>This proposal allows JavaScript to dynamically construct media streams for &lt;audio&gt; and &lt;video&gt;. 
-       It defines objects that allow JavaScript to pass media segments to an <code><a href="http://dev.w3.org/html5/spec/media-elements.html#htmlmediaelement">HTMLMediaElement</a></code>.
-       A buffering model is also included to describe how the user agent should act when different media segments are 
-       appended at different times. Byte stream specifications for WebM &amp; ISO Base Media File Format are given to specify the
-       expected format of media segments used with these extensions.</p>
-    <img src="pipeline_model.png">
-
-    <h3 id="goals">1.1. Goals</h3>
-    <p>This proposal was designed with the following goals in mind:</p>
-    <ul>
-      <li>Allow JavaScript to construct media streams independent of how the media is fetched.</li>
-      <li>Define a splicing and buffering model that facilitates use cases like adaptive streaming, ad-insertion, time-shifting, and video editing.</li>
-      <li>Minimize the need for media parsing in JavaScript.</li>
-      <li>Leverage the browser cache as much as possible.</li>
-      <li>Provide byte stream definitions for WebM &amp; the ISO Base Media File Format.</li>
-      <li>Not require support for any particular media format or codec.</li>
-    </ul>
-
-    <h3 id="definitions">1.2. Definitions</h3>
-
-    <h4 id="init-segment">1.2.1. Initialization Segment</h4>
-    <p>A sequence of bytes that contains all of the initialization information required to decode a sequence of <a href="#media-segment">media segments</a>. This includes codec initialization data, <a href="#track-id">Track ID</a> mappings for multiplexed segments, and timestamp offsets (e.g. edit lists).</p>
-
-    <dl class="example">
-      <p>Container specific examples of initialization segments:</p>
-      <dt>ISO Base Media File Format</dt>
-      <dd>A <strong>moov</strong> box.</dd>
-      <dt>WebM</dt>
-      <dd>The concatenation of the the EBML Header, Segment Header, Info element, and Tracks element.</dd>
-    </dl>
-
-    <h4 id="media-segment">1.2.2. Media Segment</h4>
-    <p>A sequence of bytes that contain packetized &amp; timestamped media data for a portion of the presentation timeline. Media segments are always associated with the most recently appended <a href="#init-segment">initialization segment</a>.</p>
-
-    <dl class="domintro">
-      <p>Container specific examples of media segments:</p>
-      <dt>ISO Base Media File Format</dt>
-      <dd>A <strong>moof</strong> box followed by one or more <strong>mdat</strong> boxes.</dd>
-      <dt>WebM</dt>
-      <dd>A Cluster element</dd>
-    </dl>
-
-    <h4 id="source-buffer">1.2.3. Source Buffer</h4>
-    <p>A hypothetical buffer that contains a distinct sequence of <a href="#init-segment">initialization segments</a> &amp; <a href="#media-segment">media segments</a>. When <a href="#media-segment">media segments</a> are passed to <code><a href="#dom-append">append()</a></code> they update the state of this buffer. The source buffer only allows a single <a href="#media-segment">media segment</a> to cover a specific point in the presentation timeline of each track. If a <a href="#media-segment">media segment</a> gets appended that contains media data overlapping (in presentation time) with media data from an existing segment, then the new media data will override the old media data. Since <a href="#media-segment">media segments</a> depend on <a href="#init-segment">initialization segments</a> the source buffer is also responsible for maintaining these associations. During playback, the media element pulls segment data out of the source buffers, demultiplexes it if necessary, and enqueues it into <a href="#track-buffer">track buffers</a> so it will get decoded and displayed. <code><a href="#dom-buffered">buffered</a></code> describes the time ranges that are covered by <a href="#media-segment">media segments</a> in the source buffer.</p>
-
-    <h4 id="active-source-buffers">1.2.4. Active Source Buffers</h4>
-    <p>The set of <a href="#source-buffer">source buffers</a> that are providing the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-videotrack-selected">selected video track</a></code>, the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-audiotrack-enabled">enabled audio tracks</a></code>, and the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a></code> or <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a></code> text tracks. This is a subset of all the source buffers associated with a specific <code><a href="#dom-mediasource">MediaSource</a></code> object. See <a href="#active-source-buffer-changes">Changes to selected/enabled track state</a> for details.</p>
-
-
-    <h4 id="track-buffer">1.2.5. Track Buffer</h4>
-    <p>A hypothetical buffer that represents initialization and media data for a single <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code>, or <code><a href="http://dev.w3.org/html5/spec/media-elements.html#texttrack">TextTrack</a></code> that has been queued for playback. This buffer may not exist in actual implementations, but it is intended to represent media data that will be decoded no matter what <a href="#media-segment">media segments</a> are appended to update the <a href="#source-buffer">source buffer</a>. This distinction is important when considering appends that happen close to the current playback position. See <a href="#source-buffer-to-track-buffer">Source Buffer to Track Buffer transfer</a> for details.</p>
-
-
-    <h4 id="random-access-point">1.2.6. Random Access Point</h4>
-    <p>A position in a <a href="#media-segment">media segment</a> where decoding and continuous playback can begin without relying on any previous data in the segment. For video this tends to be the location of I-frames. In the case of audio, most audio frames can be treated as a random access point. Since video tracks tend to have a more sparse distribution of random access points, the location of these points are usually considered the random access points for multiplexed streams.</p>
-
-    <h4 id="presentation-start-time">1.2.7. Presentation Start Time</h4>
-    <p>The presentation start time is the earliest time point in the presentation and specifies the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#initial-playback-position">initial playback position</a></code> and <code><a href="http://dev.w3.org/html5/spec/media-elements.html#earliest-possible-position">earliest possible position</a></code>. All presentations created using this specification have a presentation start time of 0. Appending <a href="#media-segment">media segments</a> with negative timestamps will cause playback to terminate with a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-mediaerror-media_err_decode">MediaError.MEDIA_ERR_DECODE</a></code> error unless <code><a href="#dom-timestampoffset">timestampOffset</a></code> is used to make the timestamps greater than or equal to 0.</p>
-
-    <h4 id="mediasource-object-url">1.2.8. MediaSource object URL</h4>
-    <p>A MediaSource object URL is a unique <a href="http://www.w3.org/TR/FileAPI/#url">Blob URI</a> created by <code><a href="#dom-createobjecturl">createObjectURL()</a></code>. It is used to attach a <code><a href="#dom-mediasource">MediaSource</a></code> object to an HTMLMediaElement.</p>
-    <p>These URLs are the same as what the <a href="http://www.w3.org/TR/FileAPI/#">File API</a> specification calls a <a href="http://www.w3.org/TR/FileAPI/#url">Blob URI</a>, except that anything in the definition of that feature that refers to <a href="http://www.w3.org/TR/FileAPI/#dfn-file">File</a> and <a href="http://www.w3.org/TR/FileAPI/#dfn-blob">Blob</a> objects is hereby extended to also apply to <code><a href="#dom-mediasource">MediaSource</a></code> objects.</p>
-
-    <h4 id="track-id">1.2.9. Track ID</h4>
-    <p>A Track ID is a byte stream format specific identifier that marks sections of the byte stream as being part of a specific track. The Track ID in a <a href="#track-id">track description</a> identifies which sections of a <a href="#media-segment">media segment</a> belong to that track.</p>
-    
-   <h4 id="track-description">1.2.10. Track Description</h4>
-   <p>A byte stream format specific structure that provides the <a href="#track-id">Track ID</a>, codec configuration, and other metadata for a single track. Each track description inside a single <a href="#init-segment">initialization segment</a> must have a unique <a href="#track-id">Track ID</a>.</p>
-
-   <h4 id="coded-frame">1.2.11. Coded Frame</h4>
-   <p>A unit of compressed media data that has a presentation timestamp and  decode timestamp. The presentation timestamp indicates when the frame should be rendered. The decode timestamp indicates when the frame needs to be decoded. If frames can be decoded out of order, then the decode timestamp must be present in the bytestream. If frames cannot be decoded out of order and a decode timestamp is not present in the bytestream, then the decode timestamp is equal to the presentation timestamp.</p>
-
-
-    <h2 id="source-buffer-model">2. Source Buffer Model</h2>
-    <p>The subsections below outline the buffering model for this proposal. It describes how to add and remove <a href="#source-buffer">source buffers</a> from the presentation and describes the various rules and behaviors associated with appending data to an individual <a href="#source-buffer">source buffer</a>. At the highest level, the web application simply creates <a href="#source-buffer">source buffers</a> and appends a sequence of <a href="#init-segment">initialization segments</a> and <a href="#media-segment">media segments</a> to update the buffer's state. The media element pulls media data out of the <a href="#source-buffer">source buffers</a>, plays it, and fires events just like it would if a normal URL was passed to the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#attr-media-src">src</a></code> attribute. The web application is expected to monitor media element events to determine when it needs to append more <a href="#media-segment">media segments</a>.</p>
-
-    <h3 id="source-buffer-create">2.1. Creating Source Buffers</h3>
-    <p><code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects can be created once a <code><a href="#dom-mediasource">MediaSource</a></code> object enters the <code><a href="#dom-%22open%22">"open"</a></code> state. The application calls <code><a href="#dom-addsourcebuffer">addSourceBuffer()</a></code> with a type string that indicates the format of the data it intends to append to the new SourceBuffer. If the user agent supports the format and has sufficient resources, a new <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object is created, added to <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>, and returned by the method. If the user agent doesn't support the specified format or can't support another <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> then it will throw an appropriate exception to signal why the request couldn't be satisfied.</p>
-
-    <h3 id="source-buffer-remove">2.2. Removing Source Buffers</h3>
-    <p>Removing a <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> with <code><a href="#dom-removesourcebuffer">removeSourceBuffer()</a></code> releases all resources associated with the object. This includes destroying the all the segment data, <a href="#track-buffer">track buffers</a>, and decoders. The media element will also remove the appropriate tracks from <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>,  &amp; <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> and fire the necessary <code><a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a></code> events. Playback may become degraded or stop if the currently selected <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> or the only enabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTracks</a></code> are removed.</p>
-
-    <h3 id="source-buffer-basic-append">2.3. Basic appending model</h3>
-    <p>Updating the state of a <a href="#source-buffer">source buffer</a> requires appending at least one <a href="#init-segment">initialization segment</a> and one or more <a href="#media-segment">media segments</a> via <code><a href="#dom-append">append()</a></code>. The following list outlines some of the basic rules for appending segments.
-      <ul>
-	<li>The first segment appended must be an <a href="#init-segment">initialization segment</a>.</li>
-	<li>All <a href="#media-segment">media segments</a> are associated with the most recently appended <a href="#init-segment">initialization segment</a>.</li>
-	<li>A whole segment must be appended before another segment can be started unless <code><a href="#dom-abort">abort()</a></code> is called.</li>
-	<li>Segments can be appended in pieces. (i.e. A 4096 byte segment can be spread across four 1024 byte calls to <code><a href="#dom-append">append()</a></code>).</li>
-	<li>If a <a href="#media-segment">media segment</a> requires different configuration information (e.g. codec parameters, new <a href="#track-id">Track IDs</a>, metadata) from what is in the most recently appended <a href="#init-segment">initialization segment</a>, a new <a href="#init-segment">initialization segment</a> with the new configuration information must be appended before the <a href="#media-segment">media segment</a> requiring this information is appended.</li>
-	<li>A new <a href="#media-segment">media segment</a> can overlap, in presentation time, a segment that was previously appended. The new segment will override the previous data.</li>
-	<li>Media segments can be appended in any order.<br>Note: In practice finite buffer space and maintaining uninterrupted playback will bias appending towards time increasing order near the current playback position. Out of order appends facilitate adaptive streaming, ad insertion, and video editing use cases.</li>
-	<li>The media element may start copying data from a <a href="#media-segment">media segment</a> to the <a href="#track-buffer">track buffers</a> before the entire segment has been appended. This prevents unnecessary delays for <a href="#media-segment">media segments</a> that cover a large time range.</li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-init-segment-constraints">2.4. Initialization Segment constraints</h3>
-    <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a href="#init-segment">initialization segments</a> that are appended to a specific <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>:
-      <ul>
-	<li>The number and type of tracks must be consistent across all <a href="#init-segment">initialization segments</a>. <br>For example, if the first <a href="#init-segment">initialization segment</a> has 2 audio tracks and 1 video track, then all <a href="#init-segment">initialization segments</a> that follow, for this <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> must describe 2 audio tracks and 1 video track.</li>
-	<li>
-<a href="#track-id">Track IDs</a> do not need to be the same across <a href="#init-segment">initialization segments</a> only if the segment describes one track of each type.<br> For example, if an <a href="#init-segment">initialization segment</a> describes a single audio track and a single video track, the internal <a href="#track-id">Track IDs</a> do not need to be the same.</li>
-	<li>
-<a href="#track-id">Track IDs</a> must be the same across <a href="#init-segment">initialization segments</a> if multiple tracks for a single type are described. (e.g. 2 audio tracks).</li>
-	<li>Codecs changes are not allowed. <br> For example, you can't have an <a href="#init-segment">initialization segment</a> that specifies a single AAC track and then follows it with one that contains AMR-WB. Support for multiple codecs is handled with multiple <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects.</li>
-	<li>Video frame size changes are allowed and must be supported seamlessly.<br> Note: This will cause the &lt;video&gt; display region to change size if you don't use CSS or HTML attributes (width/height) to constrain the element size.</li>
-	<li>Audio channel count changes are allowed, but they may not be seamless and could trigger downmixing.<br> Note: This is a quality of implementation issue because changing the channel count may require reinitializing the audio device, resamplers, and channel mixers which tends to be audible.</li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-media-segment-constraints">2.5. Media Segment constraints</h3>
-    <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a href="#media-segment">media segments</a> that are appended to a specific <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>:
-      <ul>
-	<li>All timestamps must be mapped to the same presentation timeline.</li>
-	<li>Segments must start with a <a href="#random-access-point">random access point</a> to facilitate seamless splicing at the segment boundary.</li>
-	<li>Gaps between <a href="#media-segment">media segments</a> that are smaller than the audio frame size are allowed and must not cause playback to stall. Such gaps must not be reflected by <code><a href="#dom-buffered">buffered</a></code>.
-	  <p class="note">Note: This is intended to simplify switching between audio streams where the frame boundaries don't always line up across encodings (e.g. Vorbis).</p>
-</li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-first-init-segment">2.6. Appending the first Initialization Segment</h3>
-    <p>Once a new <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> has been created, it expects an <a href="#init-segment">initialization segment</a> to be appended first. This first segment indicates the number and type of streams contained in the <a href="#media-segment">media segments</a> that follow. This allows the media element to configure the necessary decoders and output devices. This first segment can also cause a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code> if this is the first <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>, or if it is the first track of a specific type (i.e. first audio, first video track, or first text track). If neither of the conditions hold then the tracks for this new <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> will just appear as disabled tracks and won't affect the current <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> until they are selected. The media element will also add the appropriate tracks to the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>, &amp; <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> collections and fire the necessary <code><a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a></code> events. The description for <code><a href="#dom-append">append()</a></code> contains all the details.</p>
-    
-    <h3 id="source-buffer-media-segment-unbuffered">2.7. Appending a Media Segment to an unbuffered region</h3>
-    <p>If a <a href="#media-segment">media segment</a> is appended to a time range that is not covered by existing segments in the <a href="#source-buffer">source buffer</a>, then its data is copied directly into the <a href="#source-buffer">source buffer</a>. Addition of this data may trigger <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> transitions depending on what other data is buffered and whether the media element has determined if it can start playback. Calls to <code><a href="#dom-buffered">buffered</a></code> will always reflect the current <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> buffered in the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>.</p>
-
-    <h3 id="source-buffer-overlapping-segments">2.8. Appending a Media Segment over a buffered region</h3>
-    <p>There are several ways that <a href="#media-segment">media segments</a> can overlap segments in the <a href="#source-buffer">source buffer</a>. Behavior for the different overlap situations are described below. If more than one overlap applies, then the <a href="#source-buffer-overlap-start">start overlap</a> gets resolved first, followed by any <a href="#source-buffer-overlap-complete">complete overlaps</a>, and finally the <a href="#source-buffer-overlap-end">end overlap</a>. If a segment contains multiple tracks then the overlap is resolved independently for each track.</p>
-
-    <h4 id="source-buffer-overlap-complete">2.8.1 Complete Overlap</h4>
-    <img src="complete_overlap.png">
-    <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when a new <a href="#media-segment">media segment</a> completely overlaps a segment in the buffer. In this case, the new segment completely replaces the old segment.</p>
-
-    <h4 id="source-buffer-overlap-start">2.8.2 Start Overlap</h4>
-    <img src="start_overlap.png">
-    <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the beginning of a new <a href="#media-segment">media segment</a> overlaps a segment in the buffer. In this case the new segment replaces all the old media data in the overlapping region. Since <a href="#media-segment">media segments</a> are constrained to starting with <a href="#random-access-point">random access points</a>, this provides a seamless transition between segments.</p>
-    <p>When an audio frame in the <a href="#source-buffer">source buffer</a> overlaps with the start of the new <a href="#media-segment">media segment</a> special behavior is required. At a minimum implementations must support dropping the old audio frame that overlaps the start of the new segment and insert silence for the small gap that is created. Higher quality implementations may support crossfading or crosslapping between the overlapping audio frames. No matter which strategy is implemented, no gaps are created in the ranges reported by <code><a href="#dom-buffered">buffered</a></code> and playback must never stall at the overlap.</p>
-
-    <h4 id="source-buffer-overlap-end">2.8.3 End Overlap</h4>
-    <img src="end_overlap.png">
-    <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the end of a new <a href="#media-segment">media segment</a> overlaps a segment in the buffer. In this case, the media element tries to keep as much of the old segment as possible. The amount saved depends on where the closest <a href="#random-access-point">random access point</a>, in the old segment, is to the end of the new segment. In the case of audio, if the gap is smaller than the size of an audio frame, then the media element should insert silence for this gap and not reflect it in <code><a href="#dom-buffered">buffered</a></code>.</p>
-      <p>An implementation may keep old segment data before the end of the new segment to avoid creating a gap if it wishes. Doing this though can significantly increase implementation complexity and could cause delays at the splice point. The key property that must be preserved is the entirety of the new segment gets added to the <a href="#source-buffer">source buffer</a> and it is up to the implementation how much of the old segment data is retained. The web application can use <code><a href="#dom-buffered">buffered</a></code> to determine how much of the old segment was preserved.</p>
-
-    <h4 id="source-buffer-overlap-middle">2.8.4 Middle Overlap</h4>
-    <img src="middle_overlap.png">
-    <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the new <a href="#media-segment">media segment</a> is in the middle of the old segment. This condition is handled by first resolving the <a href="#source-buffer-overlap-start">start overlap</a> and then resolving the <a href="#source-buffer-overlap-end">end overlap</a>.</p>
-
-    <h3 id="source-buffer-to-track-buffer">2.9. Source Buffer to Track Buffer transfer</h3>
-    <p>The <a href="#source-buffer">source buffer</a> represents the media that the web application would like the media element to play. The <a href="#track-buffer">track buffer</a> contains the data that will actually get decoded and rendered. In most cases the <a href="#track-buffer">track buffer</a> will simply contain a subset of the <a href="#source-buffer">source buffer</a> near the current playback position. These two buffers start to diverge though when <a href="#media-segment">media segments</a> that overlap or are very close to the current playback position are appended. Depending on the contents of the new <a href="#media-segment">media segment</a> it may not be possible to switch to the new data immediately because there isn't a <a href="#random-access-point">random access point</a> close enough to the current playback position. The quality of the implementation determines how much data is considered "in the <a href="#track-buffer">track buffer</a>". It should transfer data to the <a href="#track-buffer">track buffer</a> as late as possible whilst maintaining seamless playback. Some implementations may be able to instantiate multiple decoders or decode the new data significantly faster than real-time to achieve a seamless splice immediately. Other implementations may delay until the next <a href="#random-access-point">random access point</a> before switching to the newly appended data. Notice that this difference in behavior is only observable when appending close to the current playback position. The <a href="#track-buffer">track buffer</a> represents a media subsegment, like a group of pictures or something with similar decode dependencies, that the media element commits to playing. This commitment may be influenced by a variety of things like limited decoding resources, hardware decode buffers, a jitter buffer, or the desire to limit implementation complexity.</p>
+    </p></section><section id="sotd" class="introductory"><h2>Status of This Document</h2>
+  
     
-    <p>Here is an example to help clarify the role of the <a href="#track-buffer">track buffer</a>. Say the current playback position has a timestamp of 8 and the media element pulled frames with timestamp 9 &amp; 10 into the track buffer. The web application then appends a higher quality <a href="#media-segment">media segment</a> that starts with a <a href="#random-access-point">random access point</a> at timestamp 9. The <a href="#source-buffer">source buffer</a> will get updated with the higher quality data, but the media element won't be able to switch to this higher quality data until the next <a href="#random-access-point">random access point</a> at timestamp 20. This is because a frame for timestamp 9 is already in the track buffer. As you can see the track buffer represents the "point of no return." for decoding. If a seek occurs the media element may choose to use the higher quality data since a seek might imply flushing the <a href="#track-buffer">track buffer</a> and the user expects a break in playback.</p>
-
-
-    <h3 id="source-buffer-segment-eviction">2.10. Media Segment Eviction</h3>
-    <p>When a new <a href="#media-segment">media segment</a> is appended, memory constraints may cause previously appended segments to get evicted from the <a href="#source-buffer">source buffer</a>. The eviction algorithm is implementation dependent, but segments that aren't likely to be needed soon are the most likely to get evicted. The <code><a href="#dom-buffered">buffered</a></code> attribute allows the web application to monitor what time ranges are currently buffered in the <a href="#source-buffer">source buffer</a>.</p>
-
-    <h3 id="source-buffer-timestamp-offsets">2.11. Applying Timestamp Offsets</h3>
-    <p>For some use cases like ad-insertion or seamless playlists, the web application may want to insert a <a href="#media-segment">media segment</a> in the presentation timeline at a location that is different than what the internal timestamps indicate. This can be accomplished by using the <code><a href="#dom-timestampoffset">timestampOffset</a></code> attribute on the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object. The value of <code><a href="#dom-timestampoffset">timestampOffset</a></code> is added to all timestamps inside a <a href="#media-segment">media segment</a> before the contents of that segment are added to the <a href="#source-buffer">source buffer</a>. The <code><a href="#dom-timestampoffset">timestampOffset</a></code> applies to an entire media segment. An exception is thrown if the application tries to update the attribute when only part of a media segment has been appended. Both positive or negative offsets can be assigned to <code><a href="#dom-timestampoffset">timestampOffset</a></code>. If an offset causes a <a href="#media-segment">media segment</a> timestamp to get converted to a time before the <a href="#presentation-start-time">presentation start time</a>, playback will terminate with a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-mediaerror-media_err_decode">MediaError.MEDIA_ERR_DECODE</a></code> error.</p>
-
-    <p>Here is a simple example to clarify how <code><a href="#dom-timestampoffset">timestampOffset</a></code> can be used. Say I have two sounds I want to play in sequence. The first sound is 5 seconds long and the second one is 10 seconds. Both sound files have timestamps that start at 0. First append the <a href="#init-segment">initialization segment</a> and all <a href="#media-segment">media segments</a> for the first sound. Now set <code><a href="#dom-timestampoffset">timestampOffset</a></code> to 5 seconds. Finally append the <a href="#init-segment">initialization segment</a> and <a href="#media-segment">media segments</a> for the second sound. This will result in a 15 second presentation that plays the two sounds in sequence.</p>
-
-    <h2 id="mediasource">3. MediaSource Object</h2>
-    <p>The MediaSource object represents a source of media data for an HTMLMediaElement. It keeps track of the <code><a href="#dom-readystate">readyState</a></code> for this source as well as a list of <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects that can be used to add media data to the presentation. MediaSource objects are created by the web application and then attached to an HTMLMediaElement. The application uses the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> to add media data to this source. The HTMLMediaElement fetches this media data from the <code><a href="#dom-mediasource">MediaSource</a></code> object when it is needed during playback.</p>
-
-    <pre class="idl">
-[Constructor]
-interface <dfn id="dom-mediasource">MediaSource</dfn> : EventTarget {
-  // All the source buffers created by this object.
-  readonly attribute <a href="#dom-sourcebufferlist">SourceBufferList</a> <a href="#dom-sourcebuffers">sourceBuffers</a>;
-
-  // Subset of sourceBuffers that provide data for the selected/enabled tracks.
-  readonly attribute <a href="#dom-sourcebufferlist">SourceBufferList</a> <a href="#dom-activesourcebuffers">activeSourceBuffers</a>;
-
-  attribute unrestricted double <a href="#dom-duration">duration</a>;
-
-  <a href="#dom-sourcebuffer">SourceBuffer</a> <a href="#dom-addsourcebuffer">addSourceBuffer</a>(DOMString type);
-  void <a href="#dom-removesourcebuffer">removeSourceBuffer</a>(<a href="#dom-sourcebuffer">SourceBuffer</a> sourceBuffer);
-
-  enum State { "closed", "open", "ended" };
-  readonly attribute State <a href="#dom-readystate">readyState</a>;
-
-  enum EndOfStreamError { "network", "decode" };
-  void <a href="#dom-endofstream">endOfStream</a>(optional EndOfStreamError error);
-};
-    </pre>
-    <h3 id="mediasource-methods">3.1. Methods and Attributes</h3>
+      
+        <p>
+          <em>This section describes the status of this document at the time of its publication. Other
+          documents may supersede this document. A list of current <abbr title="World Wide Web Consortium">W3C</abbr> publications and the latest revision
+          of this technical report can be found in the <a href="http://www.w3.org/TR/"><abbr title="World Wide Web Consortium">W3C</abbr> technical reports
+          index</a> at http://www.w3.org/TR/.</em>
+        </p>
+        
     
-    <p>The <dfn id="dom-sourcebuffers"><code>sourceBuffers</code></dfn> attribute contains the list of <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects associated with this <code><a href="#dom-mediasource">MediaSource</a></code>. When <code><a href="#dom-readystate">readyState</a></code> equals <code><a href="#dom-closed">"closed"</a></code> this list will be empty. Once <code><a href="#dom-readystate">readyState</a></code> transitions to <code><a href="#dom-%22open%22">"open"</a></code> SourceBuffer objects can be added to this list by using <code><a href="#dom-addsourcebuffer">addSourceBuffer()</a></code>.</p>
-
-    <p>The <dfn id="dom-activesourcebuffers"><code>activeSourceBuffers</code></dfn> attribute contains the subset of <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> that represents the <a href="#active-source-buffers">active source buffers</a>.</p>
-
-    <p>The <dfn id="dom-duration"><code>duration</code></dfn> attribute allows the web application to set the presentation duration. The duration is initially set to NaN when the <code><a href="#dom-mediasource">MediaSource</a></code> object is created.</p>
-    <p>On getting, run the following steps:</p>
-    <ol>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute is <code><a href="#dom-closed">"closed"</a></code> then return NaN and abort these steps.</li>
-      <li>Return the current value of the attribute.</li>
-    </ol>
-    <p>On setting, run the following steps:</p>
-    <ol>
-      <li>If the value being set is negative or NaN then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute is not <code><a href="#dom-%22open%22">"open"</a></code> then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var title="true">new duration</var> set to the value being set.
-	<p class="note">Note: <code><a href="#dom-append">append()</a></code> and <code><a href="#dom-endofstream">endOfStream()</a></code> can update the duration under certain circumstances.</p>
-      </li>
-    </ol>
-
-    <p>The <dfn id="dom-addsourcebuffer"><code>addSourceBuffer(type)</code></dfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">type</var> is null or an empty string then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-      <li>If <var title="true">type</var> contains a MIME type that is not supported or contains a MIME type that is not supported with the types specified for the other <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>, then throw a <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-not_supported_err">NOT_SUPPORTED_ERR</a></code> exception and abort these steps.</li>
-      <li>If the user agent can't handle any more SourceBuffer objects then throw a <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-quota_exceeded_err">QUOTA_EXCEEDED_ERR</a></code> exception and abort these steps.</li>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute is not in the <code><a href="#dom-%22open%22">"open"</a></code> state then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>Create a new <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object and associated resources.</li>
-      <li>Add the new object to <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.</li>
-      <li>Return the new object.</li>
-    </ol>
-    <p>The <dfn id="dom-removesourcebuffer"><code>removeSourceBuffer(sourceBuffer)</code></dfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">sourceBuffer</var> is null then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-      <li>If <var title="true">sourceBuffer</var> specifies an object that is not in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> then throw a <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-not_found_err">NOT_FOUND_ERR</a></code> exception and abort these steps.</li>
-      <li>Remove track information from <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>, and <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> for all tracks associated with <var title="true">sourceBuffer</var> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a></code> at the modified lists.</li>
-      <li>If <var title="true">sourceBuffer</var> is in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>, then remove it from <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-      <li>Remove <var title="true">sourceBuffer</var> from <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.</li>
-      <li>Destroy all resources for <var title="true">sourceBuffer</var>.</li>
-    </ol>
-
-
-    <p>The <dfn id="dom-readystate"><code>readyState</code></dfn> attribute indicates the current state of the <code><a href="#dom-mediasource">MediaSource</a></code> object. It can have the following values:</p>
-    <dl>
-      <dt><dfn id='dom-"closed"'><code>"closed"</code></dfn></dt>
-      <dd>Indicates the source is not currently attached to a media element.</dd>
-
-      <dt><dfn id='dom-"open"'><code>"open"</code></dfn></dt>
-      <dd>The source has been opened by a media element and is ready for data to be appended to the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.</dd>
-
-      <dt><dfn id='dom-"ended"'><code>"ended"</code></dfn></dt>
-      <dd>The source is still attached to a media element, but <code><a href="#dom-endofstream">endOfStream()</a></code> has been called. Appending data to <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in this state is not allowed.</dd>
-    </dl>
-    <p>When the <code><a href="#dom-mediasource">MediaSource</a></code> is created <code><a href="#dom-readystate">readyState</a></code> must be set to <code><a href="#dom-closed">"closed"</a></code>.
-    </p>
-
-
-    <h5>End of stream error values:</h5>
-    <dl>
-      <dt><dfn id='dom-"network"'><code>"network"</code></dfn></dt>
-      <dd>Terminates playback and signals that a network error has occured.</dd> 
-      <p class="note">Note: If the JavaScript fetching media data encounters a network error it should use this status code to terminate playback.</p>
-
-      <dt><dfn id='dom-"decode"'><code>"decode"</code></dfn></dt>
-      <dd>Terminates playback and signals that a decoding error has occured.</dd>
-      <p class="note">Note: If the JavaScript code fetching media data has problems parsing the data it should use this status code to terminate playback.</p>
-    </dl>
-
-    <p>The <dfn id="dom-endofstream"><code>endOfStream(error)</code></dfn> method must run the following steps:</p>
-    <ol>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute is not in the <code><a href="#dom-%22open%22">"open"</a></code> state then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>Change the <code><a href="#dom-readystate">readyState</a></code> attribute value to <code><a href="#dom-%22ended%22">"ended"</a></code>.</li>
-      <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-sourceended">sourceended</a></code> at the <code><a href="#dom-mediasource">MediaSource</a></code>.</li>
-      <dl class="switch">
-          <dt>If <var title="true">error</var> is not set, null, or an empty string</dt>
-          <dd>
-	    <ol>
-	      <li>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var title="true">new duration</var> set to the highest end timestamp across all <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.<br>
-		<p class="note">Note: This allows the duration to properly reflect the end of the appended media segments. For example, if the duration was explicitly set to 10 seconds and only media segments for 0 to 5 seconds were appended before endOfStream() was called, then the duration will get updated to 5 seconds.</p>
-	      </li>
-	      <li>Notify the media element that it now has all of the media data. Playback should continue until all the media passed in via <code><a href="#dom-append">append()</a></code> has been played.</li>
-	    </ol>
-	  </dd>
-          <dt>If <var title="true">error</var> is set to <code><a href="#dom-%22network%22">"network"</a></code>
-</dt>
-          <dd>
-	    <dl class="switch">
-	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute equals <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
-</dt>
-	      <dd>Run the 
-    "<i>If the media data cannot be fetched at all, due to network errors, causing the user agent to give up trying to fetch the resource</i>"
-   steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
-	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
-</dt>
-	      <dd>Run the "<i>If the connection is interrupted after some media data has been received, causing the user agent to give up trying to fetch the resource</i>" steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
-	    </dl>
-	  </dd>
-          <dt>If <var title="true">error</var> is set to <code><a href="#dom-%22decode%22">"decode"</a></code>
-</dt>
-          <dd>
-	    <dl class="switch">
-	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute equals <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
-</dt>
-	      <dd>Run the "<i>If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all</i>" steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
-	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
-</dt>
-	      <dd>Run the <a href="http://dev.w3.org/html5/spec/media-elements.html#fatal-decode-error">media data is corrupted</a> steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
-	    </dl>
-	  </dd>
-          <dt>Otherwise</dt>
-          <dd>Throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception.</dd>
-        </dl>
-    </ol>
-
-
-    <h3 id="mediasource-events">3.2. Event Summary</h3>
-    <table>
-      <thead>
-        <tr>
-          <th>Event name</th>
-          <th>Interface</th>
-          <th>Dispatched when...</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><dfn id="dom-evt-sourceopen"><code>sourceopen</code></dfn></td>
-          <td><code>Event</code></td>
-          <td>When <code><a href="#dom-readystate">readyState</a></code> transitions from <code><a href="#dom-closed">"closed"</a></code> to <code><a href="#dom-%22open%22">"open"</a></code> or from <code><a href="#dom-%22ended%22">"ended"</a></code> to <code><a href="#dom-%22open%22">"open"</a></code>.</td>
-        </tr>
-        <tr>
-          <td><dfn id="dom-evt-sourceended"><code>sourceended</code></dfn></td>
-          <td><code>Event</code></td>
-          <td>When <code><a href="#dom-readystate">readyState</a></code> transitions from <code><a href="#dom-%22open%22">"open"</a></code> to <code><a href="#dom-%22ended%22">"ended"</a></code>.</td>
-        </tr>
-        <tr>
-          <td><dfn id="dom-evt-sourceclose"><code>sourceclose</code></dfn></td>
-          <td><code>Event</code></td>
-	  <td>When <code><a href="#dom-readystate">readyState</a></code> transitions from <code><a href="#dom-%22open%22">"open"</a></code> to <code><a href="#dom-closed">"closed"</a></code> or <code><a href="#dom-%22ended%22">"ended"</a></code> to <code><a href="#dom-closed">"closed"</a></code>.</td>
-        </tr>
-      </tbody>
-    </table>
-
-    <h3 id="mediasource-algorithms">3.3. Algorithms</h3>
-    <h4 id="mediasource-attach">3.3.1 Attaching to a media element</h4>
-    <p> A <code><a href="#dom-mediasource">MediaSource</a></code> object can be attached to a media element by assigning a <a href="#mediasource-object-url">MediaSource object URL</a> to the media element <code><a href="http://dev.w3.org/html5/spec/media-elements.html#attr-media-src">src</a></code> attribute or the src attribute of a &lt;source&gt; inside a media element. A <a href="#mediasource-object-url">MediaSource object URL</a> is created by passing a MediaSource object to <code><a href="#dom-createobjecturl">createObjectURL()</a></code>.</p>
-    <p>If the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a> absolute URL matches the MediaSource object URL, run the following steps right before the "Perform a potentially
-CORS-enabled fetch" step in the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</p>
-    <ol>
-      <dl class="switch">
-        <dt>If <code><a href="#dom-readystate">readyState</a></code> is NOT set to <code><a href="#dom-closed">"closed"</a></code>
-</dt>
-        <dd>Run the 
-    "<i>If the media data cannot be fetched at all, due to network errors, causing the user agent to give up trying to fetch the resource</i>"
-   steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
-        <dt>Otherwise</dt>
-        <dd>
-          <ol>
-            <li>Set the <code><a href="#dom-readystate">readyState</a></code> attribute to <code><a href="#dom-%22open%22">"open"</a></code>.</li>
-            <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-sourceopen">sourceopen</a></code> at the <code><a href="#dom-mediasource">MediaSource</a></code>.</li>
-            <li>Allow the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a> to progress based on data passed in via <code><a href="#dom-append">append()</a></code>.</li>
-          </ol>
-        </dd>
-      </dl>
-    </ol>
-
-    <h4 id="mediasource-detach">3.3.2 Detaching from a media element</h4>
-    <p>The following steps are run in any case where the media element is going to transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-network_empty">NETWORK_EMPTY</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-mediacontroller-emptied">emptied</a></code> at the media element. These steps should be run right before the transition.</p>
-    <ol>
-      <li>Set the <code><a href="#dom-readystate">readyState</a></code> attribute to <code><a href="#dom-closed">"closed"</a></code>.</li>
-      <li>Set the <code><a href="#dom-duration">duration</a></code> attribute to NaN.</li>
-      <li>Remove all the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects from <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-      <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-      <li>Remove all the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects from <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.</li>
-      <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.</li>
-      <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-sourceclose">sourceclose</a></code> at the <code><a href="#dom-mediasource">MediaSource</a></code>.</li>
-    </ol>
-
-    <h4 id="mediasource-seeking">3.3.3 Seeking</h4>
-    <p>Run the following steps as part of the "<i>Wait until the user agent has established whether or not the media data for the new playback position is available, and, if it is, until it has decoded enough data to play back that position"</i> step of the 
-    media element
-    <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seek">seek algorithm</a>:</p>
-    <ol>
-      <li>The media element looks for <a href="#media-segment">media segments</a> containing the <var title="true">new playback position</var> in each <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-      <dl class="switch">
-	<dt>If one or more of the objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> is missing <a href="#media-segment">media segments</a> for the <var title="true">new playback position</var>
-</dt>
-	<dd>
-	  <ol>
-	    <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
-	    <li>The media element waits for the necessary <a href="#media-segment">media segments</a> to be passed to <code><a href="#dom-append">append()</a></code>. The web application can use <code><a href="#dom-buffered">buffered</a></code> to determine what the media element needs to resume playback.</li>
-	  </ol>
-	</dd>
-	<dt>Otherwise</dt>
-	<dd>Continue</dd>
-      </dl>
-      <li>The media element resets all decoders and initializes each one with data from the appropriate <a href="#init-segment">initialization segment</a>.</li>
-      <li>The media element feeds data from the <a href="#media-segment">media segments</a> into the decoders until the <var title="true">new playback position</var> is reached.</li>
-      <li>Resume the 
-    media element
-    <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seek">seek algorithm</a> at the "<i>Await a stable state</i>" step.</li>
-    </ol>
+        <p>
+          This document was published by the <a href="http://www.w3.org/html/wg/">HTML Working Group</a> as an Editor's Draft.
+          
+          If you wish to make comments regarding this document, please send them to 
+          <a href="mailto:public-html-media@w3.org">public-html-media@w3.org</a> 
+          (<a href="mailto:public-html-media-request@w3.org?subject=subscribe">subscribe</a>,
+          <a href="http://lists.w3.org/Archives/Public/public-html-media/">archives</a>).
+          
+          
+          All feedback is welcome.
+        </p>
+        
+          <p>
+            Publication as an Editor's Draft does not imply endorsement by the <abbr title="World Wide Web Consortium">W3C</abbr> Membership.
+            This is a draft document and may be updated, replaced or obsoleted by other documents at 
+            any time. It is inappropriate to cite this document as other than work in progress.
+          </p>
+        
+        
+        <p>
+          
+            This document was produced by a group operating under the 
+            <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+          
+          
+          
+            
+              <abbr title="World Wide Web Consortium">W3C</abbr> maintains a <a href="" rel="disclosure">public list of any patent disclosures</a> 
+            
+            made in connection with the deliverables of the group; that page also includes instructions for 
+            disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains
+            <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
+            information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
+            6 of the <abbr title="World Wide Web Consortium">W3C</abbr> Patent Policy</a>.
+          
+          
+        </p>
+        
+      
+    
+  
+</section><section id="toc"><h2 class="introductory">Table of Contents</h2><ul class="toc"><li class="tocline"><a href="#introduction" class="tocxref"><span class="secno">1. </span>Introduction</a><ul class="toc"><li class="tocline"><a href="#goals" class="tocxref"><span class="secno">1.1 </span>Goals</a></li><li class="tocline"><a href="#definitions" class="tocxref"><span class="secno">1.2 </span>Definitions</a></li></ul></li><li class="tocline"><a href="#source-buffer-model" class="tocxref"><span class="secno">2. </span>Source Buffer Model</a><ul class="toc"><li class="tocline"><a href="#source-buffer-create" class="tocxref"><span class="secno">2.1 </span>Creating Source Buffers</a></li><li class="tocline"><a href="#source-buffer-remove" class="tocxref"><span class="secno">2.2 </span>Removing Source Buffers</a></li><li class="tocline"><a href="#source-buffer-basic-append" class="tocxref"><span class="secno">2.3 </span>Basic appending model</a></li><li class="tocline"><a href="#source-buffer-init-segment-constraints" class="tocxref"><span class="secno">2.4 </span>Initialization Segment constraints</a></li><li class="tocline"><a href="#source-buffer-media-segment-constraints" class="tocxref"><span class="secno">2.5 </span>Media Segment constraints</a></li><li class="tocline"><a href="#source-buffer-first-init-segment" class="tocxref"><span class="secno">2.6 </span>Appending the first Initialization Segment</a></li><li class="tocline"><a href="#source-buffer-media-segment-unbuffered" class="tocxref"><span class="secno">2.7 </span>Appending a Media Segment to an unbuffered region</a></li><li class="tocline"><a href="#source-buffer-overlapping-segments" class="tocxref"><span class="secno">2.8 </span>Appending a Media Segment over a buffered region</a><ul class="toc"><li class="tocline"><a href="#source-buffer-overlap-complete" class="tocxref"><span class="secno">2.8.1 </span>Complete Overlap</a></li><li class="tocline"><a href="#source-buffer-overlap-start" class="tocxref"><span class="secno">2.8.2 </span>Start Overlap</a></li><li class="tocline"><a href="#source-buffer-overlap-end" class="tocxref"><span class="secno">2.8.3 </span>End Overlap</a></li><li class="tocline"><a href="#source-buffer-overlap-middle" class="tocxref"><span class="secno">2.8.4 </span>Middle Overlap</a></li></ul></li><li class="tocline"><a href="#source-buffer-to-track-buffer" class="tocxref"><span class="secno">2.9 </span>Source Buffer to Track Buffer transfer</a></li><li class="tocline"><a href="#source-buffer-segment-eviction" class="tocxref"><span class="secno">2.10 </span>Media Segment Eviction</a></li><li class="tocline"><a href="#source-buffer-timestamp-offsets" class="tocxref"><span class="secno">2.11 </span>Applying Timestamp Offsets</a></li></ul></li><li class="tocline"><a href="#mediasource" class="tocxref"><span class="secno">3. </span>MediaSource Object</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">3.1 </span>Attributes</a></li><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">3.2 </span>Methods</a></li><li class="tocline"><a href="#mediasource-events" class="tocxref"><span class="secno">3.3 </span>Event Summary</a></li><li class="tocline"><a href="#mediasource-algorithms" class="tocxref"><span class="secno">3.4 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#mediasource-attach" class="tocxref"><span class="secno">3.4.1 </span>Attaching to a media element</a></li><li class="tocline"><a href="#mediasource-detach" class="tocxref"><span class="secno">3.4.2 </span>Detaching from a media element</a></li><li class="tocline"><a href="#mediasource-seeking" class="tocxref"><span class="secno">3.4.3 </span>Seeking</a></li><li class="tocline"><a href="#buffer-monitoring" class="tocxref"><span class="secno">3.4.4 </span>SourceBuffer Monitoring</a></li><li class="tocline"><a href="#active-source-buffer-changes" class="tocxref"><span class="secno">3.4.5 </span>Changes to selected/enabled track state</a></li><li class="tocline"><a href="#duration-change-algorithm" class="tocxref"><span class="secno">3.4.6 </span>Duration change</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebuffer" class="tocxref"><span class="secno">4. </span>SourceBuffer Object</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">4.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">4.2 </span>Methods</a></li><li class="tocline"><a href="#sourcebuffer-algorithms" class="tocxref"><span class="secno">4.3 </span>Algorithms</a><ul class="toc"><li class="tocline"><a href="#sourcebuffer-segment-parser-loop" class="tocxref"><span class="secno">4.3.1 </span>Segment Parser Loop</a></li><li class="tocline"><a href="#sourcebuffer-init-segment-received" class="tocxref"><span class="secno">4.3.2 </span>Initialization Segment Received</a></li><li class="tocline"><a href="#sourcebuffer-coded-frame-processing" class="tocxref"><span class="secno">4.3.3 </span>Coded Frame Processing</a></li></ul></li></ul></li><li class="tocline"><a href="#sourcebufferlist" class="tocxref"><span class="secno">5. </span>SourceBufferList Object</a><ul class="toc"><li class="tocline"><a href="#attributes-2" class="tocxref"><span class="secno">5.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-2" class="tocxref"><span class="secno">5.2 </span>Methods</a></li><li class="tocline"><a href="#sourcebufferlist-events" class="tocxref"><span class="secno">5.3 </span>Event Summary</a></li></ul></li><li class="tocline"><a href="#url" class="tocxref"><span class="secno">6. </span>URL Object</a><ul class="toc"><li class="tocline"><a href="#methods-3" class="tocxref"><span class="secno">6.1 </span>Methods</a></li></ul></li><li class="tocline"><a href="#htmlmediaelement-attributes" class="tocxref"><span class="secno">7. </span>HTMLMediaElement attributes</a></li><li class="tocline"><a href="#byte-stream-formats" class="tocxref"><span class="secno">8. </span>Byte Stream Formats</a><ul class="toc"><li class="tocline"><a href="#webm" class="tocxref"><span class="secno">8.1 </span>WebM Byte Streams</a><ul class="toc"><li class="tocline"><a href="#webm-init-segments" class="tocxref"><span class="secno">8.1.1 </span>Initialization Segments</a></li><li class="tocline"><a href="#webm-media-segments" class="tocxref"><span class="secno">8.1.2 </span>Media Segments</a></li><li class="tocline"><a href="#webm-random-access-points" class="tocxref"><span class="secno">8.1.3 </span>Random Access Points</a></li></ul></li><li class="tocline"><a href="#iso" class="tocxref"><span class="secno">8.2 </span>ISO Base Media File Format Byte Streams</a><ul class="toc"><li class="tocline"><a href="#iso-init-segments" class="tocxref"><span class="secno">8.2.1 </span>Initialization Segments</a></li><li class="tocline"><a href="#iso-media-segments" class="tocxref"><span class="secno">8.2.2 </span>Media Segments</a></li><li class="tocline"><a href="#iso-random-access-points" class="tocxref"><span class="secno">8.2.3 </span>Random Access Points</a></li></ul></li></ul></li><li class="tocline"><a href="#examples" class="tocxref"><span class="secno">9. </span>Examples</a></li><li class="tocline"><a href="#revision-history" class="tocxref"><span class="secno">10. </span>Revision History</a></li></ul></section>
 
 
-    <h4 id="buffer-monitoring">3.3.4 SourceBuffer Monitoring</h4>
-    <p>The following steps are periodically run during playback to make sure that all of the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> have enough data to ensure uninterrupted playback. Appending new segments and changes to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> also cause these steps to run because they affect the conditions that trigger state transitions. The web application can monitor changes in <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> to drive <a href="#media-segment">media segment</a> appending.</p>
-    <dl class="switch">
-      <dt>If <code><a href="#dom-buffered">buffered</a></code> for all objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> do not contain <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> for the current playback position:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
-	  <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code> at the media element.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <code><a href="#dom-buffered">buffered</a></code> for all objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> contain <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> that include the current playback position and enough data to ensure uninterrupted playback:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_enough_data">HAVE_ENOUGH_DATA</a></code>.</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplaythrough">canplaythrough</a></code> at the media element.</li>
-	  <li>Playback may resume at this point if it was previously suspended by a transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <code><a href="#dom-buffered">buffered</a></code> for at least one object in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> contains a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRange</a></code> that includes the current playback position but not enough data to ensure uninterrupted playback:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>.</li>
-	  <li>If the previous value of <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> was less than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplay">canplay</a></code> at the media element.</li>
-	  <li>Playback may resume at this point if it was previously suspended by a transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <code><a href="#dom-buffered">buffered</a></code> for at least one object in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> contains a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRange</a></code> that ends at the current playback position and does not have a range covering the time immediately after the current position:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
-	  <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadeddata">loadeddata</a></code> at the media element.</li>
-	  <li>Playback is suspended at this point since the media element doesn't have enough data to advance the timeline.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-    </dl>
-
-    <h4 id="active-source-buffer-changes">3.3.5 Changes to selected/enabled track state</h4>
-    <p>During playback <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> needs to be updated if the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-videotrack-selected">selected video track</a></code>, the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-audiotrack-enabled">enabled audio tracks</a></code>, or a text track <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a></code> changes. When one or more of these changes occur the following steps need to be followed.</p>
-    <dl class="switch">
-      <dt>If the selected video track changes:</dt>
-      <dd>
-	<ol>
-	  <li>If the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the previously selected video track is not associated with any other enabled tracks, run the following steps:
-  	  <ol>
-	    <li>Remove the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> from <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-	    <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  </ol>
-	  </li>
-	  <li>If the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the newly selected video track is not already in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>, run the following steps:
-	  <ol>
-	    <li>Add the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-	    <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  </ol>
-	  </li>
-	</ol>
-      </dd>
-      <dt>If an audio track becomes disabled and the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with this track is not associated with any other enabled or selected track</dt>
-      <dd>
-	<ol>
-	  <li>Remove the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the audio track from <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	</ol>
-      </dd>
-      <dt>If an audio track becomes enabled and the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with this track is not already in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</dt>
-      <dd>
-	<ol>
-	  <li>Add the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the audio track to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	</ol>
-      </dd>
-      <dt>If a text track <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a></code> becomes <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-disabled">"disabled"</a></code> and the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with this track is not associated with any other enabled or selected track</dt>
-      <dd>
-	<ol>
-	  <li>Remove the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the text track from <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	</ol>
-      </dd>
-      <dt>If a text track <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a></code> becomes <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a></code> or <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a></code> and the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with this track is not already in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</dt>
-      <dd>
-	<ol>
-	  <li>Add the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> associated with the text track to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>
-</li>
-	</ol>
-      </dd>
-    </dl>
-
-    <h4 id="duration-change-algorithm">3.3.6 Duration change</h4>
-    <p>Follow these steps when <code><a href="#dom-duration">duration</a></code> needs to change to a <var title="true">new duration</var>.</p>
-    <ol>
-      <li>If the current value of <code><a href="#dom-duration">duration</a></code> is equal to <var title="true">new duration</var>, then abort these steps.</li>
-      <li>Update <code><a href="#dom-duration">duration</a></code> to <var title="true">new duration</var>.</li>
-      <li>Remove all media data with timestamps that are greater than <var title="true">new duration</var> from all <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in <code><a href="#dom-sourcebuffers">sourceBuffers</a></code>.
-      <p class="note">Note: This preserves audio frames that start before and end after the <code><a href="#dom-duration">duration</a></code>. The user agent must end playback at <code><a href="#dom-duration">duration</a></code> even if the audio frame extends beyond this time.</p>
-      </li>
-      <li>Update the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#media-controller-duration">media controller duration</a></code> to <var title="true">new duration</var> and run the <a href="http://dev.w3.org/html5/spec/media-elements.html#durationChange">HTMLMediaElement duration change algorithm</a>.</li>
-    </ol>
-
-   <h2 id="sourcebuffer">4. SourceBuffer Object</h2>
-   <pre class="idl">
-interface <dfn id="dom-sourcebuffer">SourceBuffer</dfn> : EventTarget {
-  // Returns the time ranges buffered.
-  readonly attribute TimeRanges <a href="#dom-buffered">buffered</a>;
-
-  // Applies an offset to media segment timestamps.
-  attribute double <a href="#dom-timestampoffset">timestampOffset</a>;
-
-  // Append segment data.
-  void <a href="#dom-append">append</a>(Uint8Array data);
-
-  // Abort the current segment append sequence.
-  void <a href="#dom-abort">abort</a>();
-
-  // Remove media for a specific time range.
-  void <a href="#dom-remove">remove</a>(double start, double end);
-};
-   </pre>
-   <h3 id="sourcebuffer-methods">4.1. Methods and Attributes</h3>
-
-   <p>The <dfn id="sourcebuffer-parent-media-source">parent media source</dfn> of a <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object is the <code><a href="#dom-mediasource">MediaSource</a></code> object that created it.</p>
-
-   <p>The <dfn id="dom-buffered"><code>buffered</code></dfn> attribute indicates what <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> are buffered in the <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>. When the attribute is read the following steps must occur:</p>
-   <ol>
-     <li>If this object has been removed from the <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-     <li>Return a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> for the <a href="#media-segment">media segments</a> buffered.</li>
-   </ol>
-
-   <p>The <dfn id="dom-timestampoffset"><code>timestampOffset</code></dfn> attribute controls the offset applied to timestamps inside subsequent <a href="#media-segment">media segments</a> that are appended to this <code><a href="#dom-sourcebuffer">SourceBuffer</a></code>. The <code><a href="#dom-timestampoffset">timestampOffset</a></code> is initially set to 0 which indicates that no offset is being applied. On getting, the initial value or the last value that was successfully set is returned. On setting, run following steps:</p>
-   <ol>
-     <li>If this object has been removed from the <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a>, then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-     <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> is not in the <code><a href="#dom-%22open%22">"open"</a></code> state, then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-     <li>If this object is waiting for the end of a <a href="#media-segment">media segment</a> to be appended, then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> and abort these steps.</li>
-     <li>Update the attribute to the new value.</li>
-   </ol>
-
-   <p>The <dfn id="dom-append"><code>append(data)</code></dfn> method must run the following steps:</p>
-   <ol>
-     <li>If <var title="true">data</var> is null then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-     <li>If this object has been removed from the <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-     <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> is in the <code><a href="#dom-closed">"closed"</a></code> state then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-     <li>
-       <p>If the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> is in the <code><a href="#dom-%22ended%22">"ended"</a></code> state then run the following steps:</p>
-       <ol>
-	 <li>Set the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> to <code><a href="#dom-%22open%22">"open"</a></code>
-</li>
-	 <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="#dom-evt-sourceopen">sourceopen</a></code> at the <a href="#sourcebuffer-parent-media-source">parent media source</a> .</li>
-       </ol>
-     </li>
-     <li>If <var title="true">data</var>.byteLength is 0 abort these steps.</li>
-     <li>Add <var title="true">data</var> to the end of the <a href="#sourcebuffer-input-buffer">input buffer</a>
-</li>
-     <li>Run the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a>.</li>
-   </ol>
-
-    <p>The <dfn id="dom-abort"><code>abort()</code></dfn> method must run the following steps:</p>
-    <ol>
-      <li>If this object has been removed from the <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> is not in the <code><a href="#dom-%22open%22">"open"</a></code> state then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>The media element aborts parsing the current segment.</li>
-      <li>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a> and the <a href="#sourcebuffer-input-buffer">input buffer</a> contains some complete <a href="#coded-frame">coded frames</a>, then run the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a> as if the media segment only contained these frames.</li>
-      <li>Remove all bytes from the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
-      <li>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</li>
-    </ol>
-
-    <p>The <dfn id="dom-remove"><code>remove(start, end)</code></dfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">start</var> is negative or greater than <code><a href="#dom-duration">duration</a></code>, then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-      <li>If <var title="true">end</var> is less than or equal to <var title="true">start</var>, then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
-      <li>If this object has been removed from the <code><a href="#dom-sourcebuffers">sourceBuffers</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>If the <code><a href="#dom-readystate">readyState</a></code> attribute of the <a href="#sourcebuffer-parent-media-source">parent media source</a> is not in the <code><a href="#dom-%22open%22">"open"</a></code> state then throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
-      <li>
-<p>For each track in this source buffer, run the following steps:</p>
-        <ol>
-	  <li>
-	    <p>Let <var title="true">next random access point timestamp</var> be the timestamp of the next <a href="#random-access-point">random access point</a>, for this track, that is greater than or equal to <var title="true">end</var>.</p>
-	    <p class="note">Note: <var title="true">next random access point timestamp</var> can be different across tracks because the dependencies between <a href="#coded-frame">coded frames</a> within a track are usually different than the dependencies in another track.</p>
-</li>
-	  <li>Remove all media data, for this track, that contain starting timestamps greater than or equal to <var title="true">start</var> and less than the <var title="true">next random access point timestamp</var>.</li>
-	</ol>
-      </li>
-      
-    </ol>
-
-    <h3 id="sourcebuffer-algorithms">4.2. Algorithms</h3>
-
-    <h4 id="sourcebuffer-segment-parser-loop">4.2.1 Segment Parser Loop</h4>
-    <p>All SourceBuffer objects have an internal <dfn id="sourcebuffer-append-state">append state</dfn> variable that keeps track of the high-level segment parsing state. It is initially set to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a> and can transition to the following states as data is appended.</p>
-    <table>
-      <thead>
-	<tr>
-          <th>Append state name</th>
-          <th>Description</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><dfn id="sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</dfn></td>
-          <td>Waiting for the start of an <a href="#init-segment">initialization segment</a> or <a href="#media-segment">media segment</a> to be appended.</td>
-        </tr>
-        <tr>
-          <td><dfn id="sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</dfn></td>
-          <td>Currently parsing an <a href="#init-segment">initialization segment</a>.</td>
-        </tr>
-	<tr>
-	  <td><dfn id="sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</dfn></td>
-          <td>Currently parsing a <a href="#media-segment">media segment</a>.</td>
-        </tr>
-      </tbody>
-    </table>
-    
-    <p>The <dfn id="sourcebuffer-input-buffer">input buffer</dfn> is a byte buffer that is used to hold unparsed bytes across <code><a href="#dom-append">append()</a></code> calls. The buffer is empty when the SourceBuffer object is created.</p>
-
-    <p>While the <a href="#sourcebuffer-input-buffer">input buffer</a> is not empty, run the following steps in a loop:</p>
-    <ol>
-      <li>If the <a href="#sourcebuffer-input-buffer">input buffer</a> starts with bytes that violate the <a href="#byte-stream-formats">byte stream format specifications</a>, then call <code><a href="#dom-endofstream">endOfStream("decode")</a></code>, and abort this algorithm.</li>
-      <li>Remove any bytes that the <a href="#byte-stream-formats">byte stream format specifications</a> say should be ignored from the start of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
-      <li>
-	<p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>, then run the following steps:</p>
-	<ol>
-	  <li>If the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a> indicates the start of an <a href="#init-segment">initialization segment</a>, set the <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</a>.</li>
-	  <li>If the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a> indicates the start of an <a href="#media-segment">media segment</a>, set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a>.</li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</a>, then run the following steps:</p>
-	<ol>
-	  <li>If the <a href="#sourcebuffer-input-buffer">input buffer</a> does not contain a complete <a href="#init-segment">initialization segment</a> yet, then exit the loop.</li>
-	  <li>Run the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a>.</li>
-	  <li>Remove the <a href="#init-segment">initialization segment</a> bytes from the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
-	  <li>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a>, then run the following steps:</p>
-	<ol>
-	  <li>
-	    <p>If the <a href="#sourcebuffer-input-buffer">input buffer</a> does not contain a complete <a href="#media-segment">media segment</a> header yet, then exit the loop.</p>
-	    <p class="note">Note: Implementations may choose to implement this state as an incremental parser so that it is not necessary to have the entire media segment before running the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a>.</p>
-	  </li>
-	  <li>Run the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a>.</li>
-	  <li>Remove the <a href="#media-segment">media segment</a> bytes from the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
-	  <li>
-	    <p>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</p>
-	    <p class="note">Note: Incremental parsers should only do this transition after the entire media segment has been received.</p>
-	  </li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-    </ol>
+    <section id="introduction">
+      <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2>
+      <p>This proposal allows JavaScript to dynamically construct media streams for &lt;audio&gt; and &lt;video&gt;. 
+        It defines objects that allow JavaScript to pass media segments to an <a href="http://dev.w3.org/html5/spec/media-elements.html#htmlmediaelement">HTMLMediaElement</a>.
+        A buffering model is also included to describe how the user agent should act when different media segments are 
+        appended at different times. Byte stream specifications for WebM &amp; ISO Base Media File Format are given to specify the
+        expected format of media segments used with these extensions.</p>
+      <img src="pipeline_model.png">
 
-    <h4 id="sourcebuffer-init-segment-received">4.2.2 Initialization Segment Received</h4>
-    <p>The following steps are run when the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a> successfully parses a complete <a href="#init-segment">initialization segment</a>:</p>
-    <ol>
-      <li>Update the <code><a href="#dom-duration">duration</a></code> attribute if it currently equals NaN:</li>
-      <dl class="switch">
-	<dt>If the initialization segment contains a duration:</dt>
-	<dd>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var title="true">new duration</var> set to the duration in the initialization segment.</dd>
-	<dt>Otherwise:</dt>
-	<dd>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var title="true">new duration</var> set to positive Infinity.</dd>
-      </dl>
-      <li>Handle state transitions:</li>
-      <dl class="switch">
-	<dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>:</dt>
-	<dd>
-	  <ol>
-	    <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
-	    <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-    <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code> at the media element.</li>
-	  </ol>
-	</dd>
-	<dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code> and the <a href="#init-segment">initialization segment</a> contains the first video or first audio track in the presentation:</dt>
-	<dd>
-	  Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.
-	</dd>
-	<dt>Otherwise:</dt>
-	<dd>Continue</dd>
-      </dl>
-      <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>
-</li>
-      <dl class="switch">
-	<dt>If <a href="#init-segment">initialization segment</a> contains the first audio track:</dt>
-	<dd>
-	  <ol>
-	    <li>Add an <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code> and mark it as enabled.</li>
-	    <li>Add this <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-	  </ol>
-	</dd>
-	<dt>If <a href="#init-segment">initialization segment</a> contains audio tracks beyond those already in the presentation:</dt>
-	<dd>Add a disabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code> for each audio track in the <a href="#init-segment">initialization segment</a>.</dd>
-      </dl>
-      <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>:</li>
-      <dl class="switch">
-	<dt>If <a href="#init-segment">initialization segment</a> contains the first video track:</dt>
-	<dd>
-	  <ol>
-	    <li>Add a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> and mark it as selected.</li>
-	    <li>Add this <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-	  </ol>
-	</dd>
-	<dt>If <a href="#init-segment">initialization segment</a> contains the video tracks beyond those already in the presentation:</dt>
-	<dd>Add a disabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> for each video track in the <a href="#init-segment">initialization segment</a>.</dd>
-      </dl>
-      <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code>
-</li>
-      <dl class="switch">
-	<dd>
-	  <ol>
-	    <li>Add a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#texttrack">TextTrack</a></code> for each text track in the <a href="#init-segment">initialization segment</a>.</li>
-	    <li>If the text track <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a></code> is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a></code> or <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a></code> then add this <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> to <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-	  </ol>
-	</dd>
-      </dl>
-    </ol>
-
-    <h4 id="sourcebuffer-coded-frame-processing">4.2.3 Coded Frame Processing</h4>
-    <p>When a complete <a href="#coded-frame">coded frame</a> has been parsed by the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a> then the following steps are run:</p>
-    <ol>
-      <li>
-	<p>For each <a href="#coded-frame">coded frame</a> in the <a href="#media-segment">media segment</a> run the following steps:</p>
-	<ol>
-	  <li>Let <var title="true">presentation timestamp</var> be a double precision floating point representation of the coded frame's presentation timestamp.</li>
-	  <li>Let <var title="true">decode timestamp</var> be a double precision floating point representation of the coded frame's decode timestamp.</li>
-	  <li>
-	    <p>If <code><a href="#dom-timestampoffset">timestampOffset</a></code> is not 0, then run the following steps:</p>
-	    <ol>
-	      <li>Add <code><a href="#dom-timestampoffset">timestampOffset</a></code> to the <var title="true">presentation timestamp</var>.</li>
-	      <li>Add <code><a href="#dom-timestampoffset">timestampOffset</a></code> to the <var title="true">decode timestamp</var>.</li>
-	      <li>If the <var title="true">presentation timestamp</var> or <var title="true">decode timestamp</var> is less than the <a href="#presentation-start-time">presentation start time</a>, then call <code><a href="#dom-endofstream">endOfStream("decode")</a></code>, and abort these steps.</li>
-	    </ol>
-	  </li>
-	  <li>Add the <a href="#coded-frame">coded frame</a> with the <var title="true">presentation timestamp</var> and <var title="true">decode timestamp</var>, to the source buffer.</li>
-	</ol>
-      </li>
-      <li>
-<p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> to have media data for the current playback position, then run the following steps:</p>
-	  <ol>
-	    <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
-	    <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadeddata">loadeddata</a></code> at the media element.</li>
-	  </ol>
-      </li>
-      <li>
-	<p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> to have media data beyond the current playback position, then run the following steps:</p>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>.</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplay">canplay</a></code> at the media element.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code> to have enough data to start playback, then run the following steps:</p>
-	<ol>
-	  <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_enough_data">HAVE_ENOUGH_DATA</a></code>.</li>
-	  <li>
-<a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named
-   <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplaythrough">canplaythrough</a></code> at the media element.</li>
-	</ol>
-      </li>
-      <li>If the <a href="#media-segment">media segment</a> contains data beyond the current <code><a href="#dom-duration">duration</a></code>, then run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var title="true">new duration</var> set to the maximum of the current duration and the highest end timestamp reported by <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-buffered">HTMLMediaElement.buffered</a></code>.</li>
-    </ol>
-
-    <h2 id="sourcebufferlist">5. SourceBufferList Object</h2>
-    <p>SourceBufferList is a simple container object for <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects. It provides read-only array access and fires events when the list is modified.</p>
-
-    <pre class="idl">
-interface <dfn id="dom-sourcebufferlist">SourceBufferList</dfn> : EventTarget {
-  readonly attribute unsigned long <a href="#dom-length">length</a>;
-  <a href="#dom-getter">getter</a> <a href="#dom-sourcebuffer">SourceBuffer</a> (unsigned long index);
-};
-    </pre>
-    <h3 id="sourcebufferlist-methods">5.1. Methods and Attributes</h3>
-    <p>The <dfn id="dom-length"><code>length</code></dfn> attribute indicates the number of <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> objects in the list.</p>
-    <p>The <dfn id="dom-getter"><code>getter SourceBuffer (unsigned long <var title="true">index</var>)</code></dfn> method allows the SourceBuffer objects in the list to be accessed with an array operator (i.e. []). This method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">index</var> is greater than or equal to the <code><a href="#dom-length">length</a></code> attribute then return undefined and abort these steps.</li>
-      <li>Return the <var title="true">index</var>'th <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object in the list.</li>
-    </ol>
+      <section id="goals">
+        <h3><span class="secno">1.1 </span>Goals</h3>
+        <p>This proposal was designed with the following goals in mind:</p>
+        <ul>
+          <li>Allow JavaScript to construct media streams independent of how the media is fetched.</li>
+          <li>Define a splicing and buffering model that facilitates use cases like adaptive streaming, ad-insertion, time-shifting, and video editing.</li>
+          <li>Minimize the need for media parsing in JavaScript.</li>
+          <li>Leverage the browser cache as much as possible.</li>
+          <li>Provide byte stream definitions for WebM &amp; the ISO Base Media File Format.</li>
+          <li>Not require support for any particular media format or codec.</li>
+        </ul>
+      </section>
 
-    <h3 id="sourcebufferlist-events">5.2. Event Summary</h3>
-    <table>
-      <thead>
-        <tr>
-          <th>Event name</th>
-          <th>Interface</th>
-          <th>Dispatched when...</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><dfn id="dom-evt-addsourcebuffer"><code>addsourcebuffer</code></dfn></td>
-          <td><code>Event</code></td>
-          <td>When a <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> is added to the list.</td>
-        </tr>
-        <tr>
-          <td><dfn id="dom-evt-removesourcebuffer"><code>removesourcebuffer</code></dfn></td>
-          <td><code>Event</code></td>
-          <td>When a <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> is removed from the list.</td>
-        </tr>
-      </tbody>
-    </table>
-
-    <h2 id="url">6. URL Object</h2>
-    <p></p>
+      <section id="definitions">
+        <h3><span class="secno">1.2 </span>Definitions</h3>
 
-    <pre class="idl">
-partial interface <dfn id="dom-url">URL</dfn> {
-  static DOMString <a href="#dom-createobjecturl">createObjectURL</a>(<a href="#dom-mediasource">MediaSource</a> mediaSource);
-};
-    </pre>
-    <h3 id="url-methods">6.1. Methods</h3>
-    <p>The <dfn id="dom-createobjecturl"><code>createObjectURL(mediaSource)</code></dfn> method must run the following steps.</p>
-    <ol>
-      <li>If <var title="true">mediaSource</var> is NULL the return null.</li>
-      <li>Return a unique <a href="#mediasource-object-url">MediaSource object URL</a> that can be used to dereference the <var title="true">mediaSource</var> argument, and run the rest of the algorithm asynchronously.</li>
-      <li><a href="http://dev.w3.org/html5/spec/webappapis.html#provide-a-stable-state">provide a stable state</a></li>
-      <li>Revoke the <a href="#mediasource-object-url">MediaSource object URL</a> by calling <a href="http://www.w3.org/TR/FileAPI/#dfn-revokeObjectURL">revokeObjectURL()</a> on it.</li>
-    </ol>
-    <p class="note">Note: This algorithm is intended to mirror the behavior of the <a href="http://www.w3.org/TR/FileAPI/#">File API</a> <a href="http://www.w3.org/TR/FileAPI/#dfn-createObjectURL">createObjectURL()</a> method with autoRevoke set to true.</p>
-
-    <h2 id="htmlmediaelement-attributes">7. HTMLMediaElement attributes</h2>
-    <p>This section specifies what existing attributes on the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#htmlmediaelement">HTMLMediaElement</a></code> should return when a <code><a href="#dom-mediasource">MediaSource</a></code> is attached to the element.</p>
+        <dl>
+          <dt id="init-segment">Initialization Segment</dt>
+          <dd>
+	    <p>A sequence of bytes that contains all of the initialization information required to decode a sequence of <a href="#media-segment">media segments</a>. This includes codec initialization data, <a href="#track-id">Track ID</a> mappings for multiplexed segments, and timestamp offsets (e.g. edit lists).</p>
+	    <dl class="example">
+	      <p>Container specific examples of initialization segments:</p>
+	      <dt>ISO Base Media File Format</dt>
+	      <dd>A <span class="iso-box">moov</span> box.</dd>
+	      <dt>WebM</dt>
+	      <dd>The concatenation of the the EBML Header, Segment Header, Info element, and Tracks element.</dd>
+	    </dl>
+          </dd>
 
-    <p>The <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seekable">HTMLMediaElement.seekable</a></code> attribute returns a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> created based on the following steps:</p>
-    <dl class="switch">
-      <dt>If <code><a href="#dom-duration">duration</a></code> equals NaN</dt>
-      <dd>Return an empty <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> object.</dd>
-      <dt>If <code><a href="#dom-duration">duration</a></code> equals positive Infinity</dt>
-      <dd>Return a single range with a start time of 0 and an end time equal to the highest end time reported by the <code><a href="#dom-htmlmediaelement.buffered">HTMLMediaElement.buffered</a></code> attribute.</dd>
-      <dt>Otherwise</dt>
-      <dd>Return a single range with a start time of 0 and an end time equal to <code><a href="#dom-duration">duration</a></code>.</dd>
-    </dl>
+          <dt id="media-segment">Media Segment</dt>
+          <dd>
+	    <p>A sequence of bytes that contain packetized &amp; timestamped media data for a portion of the presentation timeline. Media segments are always associated with the most recently appended <a href="#init-segment">initialization segment</a>.</p>
+	    <dl class="example">
+	      <p>Container specific examples of media segments:</p>
+	      <dt>ISO Base Media File Format</dt>
+	      <dd>A <span class="iso-box">moof</span> box followed by one or more <span class="iso-box">mdat</span> boxes.</dd>
+	      <dt>WebM</dt>
+	      <dd>A Cluster element</dd>
+	    </dl>
+          </dd>
+          
+          <dt id="source-buffer">Source Buffer</dt>
+          <dd><p>A hypothetical buffer that contains a distinct sequence of <a href="#init-segment">initialization segments</a> &amp; <a href="#media-segment">media segments</a>. When <a href="#media-segment">media segments</a> are passed to <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> they update the state of this buffer. The source buffer only allows a single <a href="#media-segment">media segment</a> to cover a specific point in the presentation timeline of each track. If a <a href="#media-segment">media segment</a> gets appended that contains media data overlapping (in presentation time) with media data from an existing segment, then the new media data will override the old media data. Since <a href="#media-segment">media segments</a> depend on <a href="#init-segment">initialization segments</a> the source buffer is also responsible for maintaining these associations. During playback, the media element pulls segment data out of the source buffers, demultiplexes it if necessary, and enqueues it into <a href="#track-buffer">track buffers</a> so it will get decoded and displayed. <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> describes the time ranges that are covered by <a href="#media-segment">media segments</a> in the source buffer.</p></dd>
 
-    <p id="dom-htmlmediaelement.buffered">The <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-buffered">HTMLMediaElement.buffered</a></code> attribute returns a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> created based on the following steps:</p>
-    <ol>
-      <li>Let <var title="true">active ranges</var> be the ranges returned by <code><a href="#dom-buffered">buffered</a></code> for each <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> object in <code><a href="#dom-activesourcebuffers">activeSourceBuffers</a></code>.</li>
-      <li>Let <var title="true">intersection range</var> be the intersection of the <var title="true">active ranges</var>.</li>
-      <li>
-<p>If <code><a href="#dom-readystate">readyState</a></code> is <code><a href="#dom-%22ended%22">"ended"</a></code>, then run the following steps:</p>
-        <ol>
-	  <li>Let <var title="true">highest end time</var> be the largest end time in the <var title="true">active ranges</var>.</li>
-	  <li>Let <var title="true">highest intersection end time</var> be the highest end time in the <var title="true">intersection range</var>.</li>
-	  <li>If the <var title="true">highest intersection end time</var> is less than the <var title="true">highest end time</var>, then update the <var title="true">intersection range</var> so that the <var title="true">highest intersection end time</var> equals the <var title="true">highest end time</var>.</li>
-	</ol>
-      </li>
-      <li>Return the <var title="true">intersection range</var>.</li>
-    </ol>
+          <dt id="active-source-buffers">Active Source Buffers</dt>
+          <dd><p>The set of <a href="#source-buffer">source buffers</a> that are providing the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-videotrack-selected">selected video track</a>, the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-audiotrack-enabled">enabled audio tracks</a>, and the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a> or <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a> text tracks. This is a subset of all the source buffers associated with a specific <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object. See <a href="#active-source-buffer-changes">Changes to selected/enabled track state</a> for details.</p></dd>
+          
+          <dt id="track-buffer">Track Buffer</dt>
+          <dd><p>A hypothetical buffer that represents initialization and media data for a single <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code>, or <code><a href="http://dev.w3.org/html5/spec/media-elements.html#texttrack">TextTrack</a></code> that has been queued for playback. This buffer may not exist in actual implementations, but it is intended to represent media data that will be decoded no matter what <a href="#media-segment">media segments</a> are appended to update the <a href="#source-buffer">source buffer</a>. This distinction is important when considering appends that happen close to the current playback position. See <a href="#source-buffer-to-track-buffer">Source Buffer to Track Buffer transfer</a> for details.</p></dd>
+
+          <dt id="random-access-point">Random Access Point</dt>
+          <dd><p>A position in a <a href="#media-segment">media segment</a> where decoding and continuous playback can begin without relying on any previous data in the segment. For video this tends to be the location of I-frames. In the case of audio, most audio frames can be treated as a random access point. Since video tracks tend to have a more sparse distribution of random access points, the location of these points are usually considered the random access points for multiplexed streams.</p></dd>
+
+          <dt id="presentation-start-time">Presentation Start Time</dt>
+          <dd><p>The presentation start time is the earliest time point in the presentation and specifies the <a href="http://dev.w3.org/html5/spec/media-elements.html#initial-playback-position">initial playback position</a> and <a href="http://dev.w3.org/html5/spec/media-elements.html#earliest-possible-position">earliest possible position</a>. All presentations created using this specification have a presentation start time of 0. Appending <a href="#media-segment">media segments</a> with negative timestamps will cause playback to terminate with a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-mediaerror-media_err_decode">MediaError.MEDIA_ERR_DECODE</a></code> error unless <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> is used to make the timestamps greater than or equal to 0.</p></dd>
+
+          <dt id="mediasource-object-url">MediaSource object URL</dt>
+          <dd>
+            <p>A MediaSource object URL is a unique <a href="http://www.w3.org/TR/FileAPI/#url">Blob URI</a> created by <code><a href="#widl-URL-createObjectURL-DOMString-MediaSource-mediaSource">createObjectURL()</a></code>. It is used to attach a <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object to an HTMLMediaElement.</p>
+            <p>These URLs are the same as what the <a href="http://www.w3.org/TR/FileAPI/#">File API</a> specification calls a <a href="http://www.w3.org/TR/FileAPI/#url">Blob URI</a>, except that anything in the definition of that feature that refers to <a href="http://www.w3.org/TR/FileAPI/#dfn-file">File</a> and <a href="http://www.w3.org/TR/FileAPI/#dfn-blob">Blob</a> objects is hereby extended to also apply to <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> objects.</p>
+          </dd>
+
+          <dt id="track-id">Track ID</dt>
+          <dd><p>A Track ID is a byte stream format specific identifier that marks sections of the byte stream as being part of a specific track. The Track ID in a <a href="#track-description">track description</a> identifies which sections of a <a href="#media-segment">media segment</a> belong to that track.</p></dd>
+
+          <dt id="track-description">Track Description</dt>
+          <dd><p>A byte stream format specific structure that provides the <a href="#track-id">Track ID</a>, codec configuration, and other metadata for a single track. Each track description inside a single <a href="#init-segment">initialization segment</a> must have a unique <a href="#track-id">Track ID</a>.</p></dd>
+
+          <dt id="coded-frame">Coded Frame</dt>
+          <dd><p>A unit of compressed media data that has a presentation timestamp and  decode timestamp. The presentation timestamp indicates when the frame should be rendered. The decode timestamp indicates when the frame needs to be decoded. If frames can be decoded out of order, then the decode timestamp must be present in the bytestream. If frames cannot be decoded out of order and a decode timestamp is not present in the bytestream, then the decode timestamp is equal to the presentation timestamp.</p></dd>
+
+          <dt id="parent-media-source">Parent Media Source</dt> 
+          <dd>The parent media source of a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object is the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object that created it.<p></p>
+        </dd></dl>
+      </section>
+    </section>
+
+
+    <section id="source-buffer-model">
+      <!--OddPage--><h2><span class="secno">2. </span>Source Buffer Model</h2>
+      <p>The subsections below outline the buffering model for this proposal. It describes how to add and remove <a href="#source-buffer">source buffers</a> from the presentation and describes the various rules and behaviors associated with appending data to an individual <a href="#source-buffer">source buffer</a>. At the highest level, the web application simply creates <a href="#source-buffer">source buffers</a> and appends a sequence of <a href="#init-segment">initialization segments</a> and <a href="#media-segment">media segments</a> to update the buffer's state. The media element pulls media data out of the <a href="#source-buffer">source buffers</a>, plays it, and fires events just like it would if a normal URL was passed to the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#attr-media-src">src</a></code> attribute. The web application is expected to monitor media element events to determine when it needs to append more <a href="#media-segment">media segments</a>.</p>
+
+      <section id="source-buffer-create">
+        <h3><span class="secno">2.1 </span>Creating Source Buffers</h3>
+        <p><a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects can be created once a <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object enters the <code><a href="#idl-def-ReadyState">"open"</a></code> state. The application calls <code><a href="#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type">addSourceBuffer()</a></code> with a type string that indicates the format of the data it intends to append to the new SourceBuffer. If the user agent supports the format and has sufficient resources, a new <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object is created, added to <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>, and returned by the method. If the user agent doesn't support the specified format or can't support another <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> then it will throw an appropriate exception to signal why the request couldn't be satisfied.</p>
+      </section>
+
+      <section id="source-buffer-remove">
+        <h3><span class="secno">2.2 </span>Removing Source Buffers</h3>
+        <p>Removing a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> with <code><a href="#widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer">removeSourceBuffer()</a></code> releases all resources associated with the object. This includes destroying the all the segment data, <a href="#track-buffer">track buffers</a>, and decoders. The media element will also remove the appropriate tracks from <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>,  &amp; <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> and fire the necessary <a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a> events. Playback may become degraded or stop if the currently selected <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> or the only enabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTracks</a></code> are removed.</p>
+      </section>
+
+      <section id="source-buffer-basic-append">
+        <h3><span class="secno">2.3 </span>Basic appending model</h3>
+        <p>Updating the state of a <a href="#source-buffer">source buffer</a> requires appending at least one <a href="#init-segment">initialization segment</a> and one or more <a href="#media-segment">media segments</a> via <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code>. The following list outlines some of the basic rules for appending segments.
+          </p><ul>
+	    <li>The first segment appended must be an <a href="#init-segment">initialization segment</a>.</li>
+	    <li>All <a href="#media-segment">media segments</a> are associated with the most recently appended <a href="#init-segment">initialization segment</a>.</li>
+	    <li>A whole segment must be appended before another segment can be started unless <code><a href="#widl-SourceBuffer-abort-void">abort()</a></code> is called.</li>
+	    <li>Segments can be appended in pieces. (i.e. A 4096 byte segment can be spread across four 1024 byte calls to <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code>).</li>
+	    <li>If a <a href="#media-segment">media segment</a> requires different configuration information (e.g. codec parameters, new <a href="#track-id">Track IDs</a>, metadata) from what is in the most recently appended <a href="#init-segment">initialization segment</a>, a new <a href="#init-segment">initialization segment</a> with the new configuration information must be appended before the <a href="#media-segment">media segment</a> requiring this information is appended.</li>
+	    <li>A new <a href="#media-segment">media segment</a> can overlap, in presentation time, a segment that was previously appended. The new segment will override the previous data.</li>
+	    <li>Media segments can be appended in any order.<div class="note"><div class="note-title"><span>Note</span></div><p class="">In practice finite buffer space and maintaining uninterrupted playback will bias appending towards time increasing order near the current playback position. Out of order appends facilitate adaptive streaming, ad insertion, and video editing use cases.</p></div>
+            </li>
+	    <li>The media element may start copying data from a <a href="#media-segment">media segment</a> to the <a href="#track-buffer">track buffers</a> before the entire segment has been appended. This prevents unnecessary delays for <a href="#media-segment">media segments</a> that cover a large time range.</li>
+          </ul>
+        <p></p>
+      </section>
+
+      <section id="source-buffer-init-segment-constraints">
+        <h3><span class="secno">2.4 </span>Initialization Segment constraints</h3>
+        <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a href="#init-segment">initialization segments</a> that are appended to a specific <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>:
+          </p><ul>
+	    <li>The number and type of tracks must be consistent across all <a href="#init-segment">initialization segments</a>. <br>For example, if the first <a href="#init-segment">initialization segment</a> has 2 audio tracks and 1 video track, then all <a href="#init-segment">initialization segments</a> that follow, for this <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> must describe 2 audio tracks and 1 video track.</li>
+	    <li>
+              <a href="#track-id">Track IDs</a> do not need to be the same across <a href="#init-segment">initialization segments</a> only if the segment describes one track of each type.<br> For example, if an <a href="#init-segment">initialization segment</a> describes a single audio track and a single video track, the internal <a href="#track-id">Track IDs</a> do not need to be the same.</li>
+	    <li>
+              <a href="#track-id">Track IDs</a> must be the same across <a href="#init-segment">initialization segments</a> if multiple tracks for a single type are described. (e.g. 2 audio tracks).</li>
+	    <li>Codecs changes are not allowed. <br> For example, you can't have an <a href="#init-segment">initialization segment</a> that specifies a single AAC track and then follows it with one that contains AMR-WB. Support for multiple codecs is handled with multiple <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects.</li>
+	    <li>Video frame size changes are allowed and must be supported seamlessly.<div class="note"><div class="note-title"><span>Note</span></div><p class="">This will cause the &lt;video&gt; display region to change size if you don't use CSS or HTML attributes (width/height) to constrain the element size.</p></div>
+            </li>
+	    <li>Audio channel count changes are allowed, but they may not be seamless and could trigger downmixing.<div class="note"><div class="note-title"><span>Note</span></div><p class="">This is a quality of implementation issue because changing the channel count may require reinitializing the audio device, resamplers, and channel mixers which tends to be audible.</p></div>
+            </li>
+          </ul>
+        <p></p>
+      </section>
+
+      <section id="source-buffer-media-segment-constraints">
+        <h3><span class="secno">2.5 </span>Media Segment constraints</h3>
+        <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <a href="#media-segment">media segments</a> that are appended to a specific <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>:
+          </p><ul>
+	    <li>All timestamps must be mapped to the same presentation timeline.</li>
+	    <li>Segments must start with a <a href="#random-access-point">random access point</a> to facilitate seamless splicing at the segment boundary.</li>
+	    <li>Gaps between <a href="#media-segment">media segments</a> that are smaller than the audio frame size are allowed and must not cause playback to stall. Such gaps must not be reflected by <code><a href="#widl-SourceBuffer-buffered">buffered</a></code>.
+	      <div class="note"><div class="note-title"><span>Note</span></div><p class="">This is intended to simplify switching between audio streams where the frame boundaries don't always line up across encodings (e.g. Vorbis).</p></div>
+            </li>
+          </ul>
+        <p></p>
+      </section>
+
+      <section id="source-buffer-first-init-segment">
+        <h3><span class="secno">2.6 </span>Appending the first Initialization Segment</h3>
+        <p>Once a new <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> has been created, it expects an <a href="#init-segment">initialization segment</a> to be appended first. This first segment indicates the number and type of streams contained in the <a href="#media-segment">media segments</a> that follow. This allows the media element to configure the necessary decoders and output devices. This first segment can also cause a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code> if this is the first <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>, or if it is the first track of a specific type (i.e. first audio, first video track, or first text track). If neither of the conditions hold then the tracks for this new <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> will just appear as disabled tracks and won't affect the current <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> until they are selected. The media element will also add the appropriate tracks to the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>, &amp; <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> collections and fire the necessary <a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a> events. The description for <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> contains all the details.</p>
+      </section>
+      
+      <section id="source-buffer-media-segment-unbuffered">
+        <h3><span class="secno">2.7 </span>Appending a Media Segment to an unbuffered region</h3>
+        <p>If a <a href="#media-segment">media segment</a> is appended to a time range that is not covered by existing segments in the <a href="#source-buffer">source buffer</a>, then its data is copied directly into the <a href="#source-buffer">source buffer</a>. Addition of this data may trigger <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> transitions depending on what other data is buffered and whether the media element has determined if it can start playback. Calls to <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> will always reflect the current <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> buffered in the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>.</p>
+      </section>
+
+      <section id="source-buffer-overlapping-segments">
+        <h3><span class="secno">2.8 </span>Appending a Media Segment over a buffered region</h3>
+        <p>There are several ways that <a href="#media-segment">media segments</a> can overlap segments in the <a href="#source-buffer">source buffer</a>. Behavior for the different overlap situations are described below. If more than one overlap applies, then the <a href="#source-buffer-overlap-start">start overlap</a> gets resolved first, followed by any <a href="#source-buffer-overlap-complete">complete overlaps</a>, and finally the <a href="#source-buffer-overlap-end">end overlap</a>. If a segment contains multiple tracks then the overlap is resolved independently for each track.</p>
+
+        <section id="source-buffer-overlap-complete">
+          <h4><span class="secno">2.8.1 </span>Complete Overlap</h4>
+          <img src="complete_overlap.png">
+          <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when a new <a href="#media-segment">media segment</a> completely overlaps a segment in the buffer. In this case, the new segment completely replaces the old segment.</p>
+        </section>
+
+        <section id="source-buffer-overlap-start">
+          <h4><span class="secno">2.8.2 </span>Start Overlap</h4>
+          <img src="start_overlap.png">
+          <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the beginning of a new <a href="#media-segment">media segment</a> overlaps a segment in the buffer. In this case the new segment replaces all the old media data in the overlapping region. Since <a href="#media-segment">media segments</a> are constrained to starting with <a href="#random-access-point">random access points</a>, this provides a seamless transition between segments.</p>
+          <p>When an audio frame in the <a href="#source-buffer">source buffer</a> overlaps with the start of the new <a href="#media-segment">media segment</a> special behavior is required. At a minimum implementations must support dropping the old audio frame that overlaps the start of the new segment and insert silence for the small gap that is created. Higher quality implementations may support crossfading or crosslapping between the overlapping audio frames. No matter which strategy is implemented, no gaps are created in the ranges reported by <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> and playback must never stall at the overlap.</p>
+        </section>
+
+        <section id="source-buffer-overlap-end">
+          <h4><span class="secno">2.8.3 </span>End Overlap</h4>
+          <img src="end_overlap.png">
+          <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the end of a new <a href="#media-segment">media segment</a> overlaps a segment in the buffer. In this case, the media element tries to keep as much of the old segment as possible. The amount saved depends on where the closest <a href="#random-access-point">random access point</a>, in the old segment, is to the end of the new segment. In the case of audio, if the gap is smaller than the size of an audio frame, then the media element should insert silence for this gap and not reflect it in <code><a href="#widl-SourceBuffer-buffered">buffered</a></code>.</p>
+          <p>An implementation may keep old segment data before the end of the new segment to avoid creating a gap if it wishes. Doing this though can significantly increase implementation complexity and could cause delays at the splice point. The key property that must be preserved is the entirety of the new segment gets added to the <a href="#source-buffer">source buffer</a> and it is up to the implementation how much of the old segment data is retained. The web application can use <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> to determine how much of the old segment was preserved.</p>
+        </section>
+
+        <section id="source-buffer-overlap-middle">
+          <h4><span class="secno">2.8.4 </span>Middle Overlap</h4>
+          <img src="middle_overlap.png">
+          <p>The figure above shows how the <a href="#source-buffer">source buffer</a> gets updated when the new <a href="#media-segment">media segment</a> is in the middle of the old segment. This condition is handled by first resolving the <a href="#source-buffer-overlap-start">start overlap</a> and then resolving the <a href="#source-buffer-overlap-end">end overlap</a>.</p>
+        </section>
+      </section>
+
+      <section id="source-buffer-to-track-buffer">
+        <h3><span class="secno">2.9 </span>Source Buffer to Track Buffer transfer</h3>
+        <p>The <a href="#source-buffer">source buffer</a> represents the media that the web application would like the media element to play. The <a href="#track-buffer">track buffer</a> contains the data that will actually get decoded and rendered. In most cases the <a href="#track-buffer">track buffer</a> will simply contain a subset of the <a href="#source-buffer">source buffer</a> near the current playback position. These two buffers start to diverge though when <a href="#media-segment">media segments</a> that overlap or are very close to the current playback position are appended. Depending on the contents of the new <a href="#media-segment">media segment</a> it may not be possible to switch to the new data immediately because there isn't a <a href="#random-access-point">random access point</a> close enough to the current playback position. The quality of the implementation determines how much data is considered "in the <a href="#track-buffer">track buffer</a>". It should transfer data to the <a href="#track-buffer">track buffer</a> as late as possible whilst maintaining seamless playback. Some implementations may be able to instantiate multiple decoders or decode the new data significantly faster than real-time to achieve a seamless splice immediately. Other implementations may delay until the next <a href="#random-access-point">random access point</a> before switching to the newly appended data. Notice that this difference in behavior is only observable when appending close to the current playback position. The <a href="#track-buffer">track buffer</a> represents a media subsegment, like a group of pictures or something with similar decode dependencies, that the media element commits to playing. This commitment may be influenced by a variety of things like limited decoding resources, hardware decode buffers, a jitter buffer, or the desire to limit implementation complexity.</p>
+        
+        <p>Here is an example to help clarify the role of the <a href="#track-buffer">track buffer</a>. Say the current playback position has a timestamp of 8 and the media element pulled frames with timestamp 9 &amp; 10 into the track buffer. The web application then appends a higher quality <a href="#media-segment">media segment</a> that starts with a <a href="#random-access-point">random access point</a> at timestamp 9. The <a href="#source-buffer">source buffer</a> will get updated with the higher quality data, but the media element won't be able to switch to this higher quality data until the next <a href="#random-access-point">random access point</a> at timestamp 20. This is because a frame for timestamp 9 is already in the track buffer. As you can see the track buffer represents the "point of no return." for decoding. If a seek occurs the media element may choose to use the higher quality data since a seek might imply flushing the <a href="#track-buffer">track buffer</a> and the user expects a break in playback.</p>
+      </section>
+
+
+      <section id="source-buffer-segment-eviction">
+        <h3><span class="secno">2.10 </span>Media Segment Eviction</h3>
+        <p>When a new <a href="#media-segment">media segment</a> is appended, memory constraints may cause previously appended segments to get evicted from the <a href="#source-buffer">source buffer</a>. The eviction algorithm is implementation dependent, but segments that aren't likely to be needed soon are the most likely to get evicted. The <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> attribute allows the web application to monitor what time ranges are currently buffered in the <a href="#source-buffer">source buffer</a>.</p>
+      </section>
+
+      <section id="source-buffer-timestamp-offsets">
+        <h3><span class="secno">2.11 </span>Applying Timestamp Offsets</h3>
+        <p>For some use cases like ad-insertion or seamless playlists, the web application may want to insert a <a href="#media-segment">media segment</a> in the presentation timeline at a location that is different than what the internal timestamps indicate. This can be accomplished by using the <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> attribute on the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object. The value of <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> is added to all timestamps inside a <a href="#media-segment">media segment</a> before the contents of that segment are added to the <a href="#source-buffer">source buffer</a>. The <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> applies to an entire media segment. An exception is thrown if the application tries to update the attribute when only part of a media segment has been appended. Both positive or negative offsets can be assigned to <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code>. If an offset causes a <a href="#media-segment">media segment</a> timestamp to get converted to a time before the <a href="#presentation-start-time">presentation start time</a>, playback will terminate with a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-mediaerror-media_err_decode">MediaError.MEDIA_ERR_DECODE</a></code> error.</p>
+
+        <p>Here is a simple example to clarify how <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> can be used. Say I have two sounds I want to play in sequence. The first sound is 5 seconds long and the second one is 10 seconds. Both sound files have timestamps that start at 0. First append the <a href="#init-segment">initialization segment</a> and all <a href="#media-segment">media segments</a> for the first sound. Now set <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> to 5 seconds. Finally append the <a href="#init-segment">initialization segment</a> and <a href="#media-segment">media segments</a> for the second sound. This will result in a 15 second presentation that plays the two sounds in sequence.</p>
+      </section>
+    </section>
+
+    <section id="mediasource">
+      <!--OddPage--><h2><span class="secno">3. </span>MediaSource Object</h2>
+      <p>The MediaSource object represents a source of media data for an HTMLMediaElement. It keeps track of the <code><a href="#widl-MediaSource-readyState">readyState</a></code> for this source as well as a list of <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects that can be used to add media data to the presentation. MediaSource objects are created by the web application and then attached to an HTMLMediaElement. The application uses the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> to add media data to this source. The HTMLMediaElement fetches this media data from the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object when it is needed during playback.</p>
+
+      <pre class="idl"><span class="idlEnum" id="idl-def-ReadyState">enum <span class="idlEnumID">ReadyState</span> {
+    "<span class="idlEnumItem">closed</span>",
+    "<span class="idlEnumItem">open</span>",
+    "<span class="idlEnumItem">ended</span>"
+};</span></pre><table class="simple"><tr><th colspan="2">Enumeration description</th></tr><tr><td><code>closed</code></td><td>
+          Indicates the source is not currently attached to a media element.
+        </td></tr><tr><td><code>open</code></td><td>
+          The source has been opened by a media element and is ready for data to be appended to the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.
+        </td></tr><tr><td><code>ended</code></td><td>
+          The source is still attached to a media element, but <code><a href="#widl-MediaSource-endOfStream-void-EndOfStreamError-error">endOfStream()</a></code> has been called. Appending data to <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in this state is not allowed.
+        </td></tr></table>
+
+      <pre class="idl"><span class="idlEnum" id="idl-def-EndOfStreamError">enum <span class="idlEnumID">EndOfStreamError</span> {
+    "<span class="idlEnumItem">network</span>",
+    "<span class="idlEnumItem">decode</span>"
+};</span></pre><table class="simple"><tr><th colspan="2">Enumeration description</th></tr><tr><td><code>network</code></td><td>
+          <p>Terminates playback and signals that a network error has occured.</p>
+          <div class="note"><div class="note-title"><span>Note</span></div><p class="">If the JavaScript fetching media data encounters a network error it should use this status code to terminate playback.</p></div>
+        </td></tr><tr><td><code>decode</code></td><td>
+          <p>Terminates playback and signals that a decoding error has occured.</p>
+          <div class="note"><div class="note-title"><span>Note</span></div><p class="">If the JavaScript code fetching media data has problems parsing the data it should use this status code to terminate playback.</p></div>
+        </td></tr></table>
+
+      <pre class="idl"><span class="idlInterface" id="idl-def-MediaSource">[<span class="extAttr">Constructor</span>]
+interface <span class="idlInterfaceID">MediaSource</span> : <span class="idlSuperclass"><a>EventTarget</a></span> {
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a href="#idl-def-SourceBufferList" class="idlType"><code>SourceBufferList</code></a></span>    <span class="idlAttrName"><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></span>;</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a href="#idl-def-SourceBufferList" class="idlType"><code>SourceBufferList</code></a></span>    <span class="idlAttrName"><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></span>;</span>
+<span class="idlAttribute">             attribute <span class="idlAttrType"><a>unrestricted double</a></span> <span class="idlAttrName"><a href="#widl-MediaSource-duration">duration</a></span>;</span>
+<span class="idlMethod">    <span class="idlMethType"><a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a></span> <span class="idlMethName"><a href="#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type">addSourceBuffer</a></span> (<span class="idlParam"><span class="idlParamType"><a>DOMString</a></span> <span class="idlParamName">type</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a>void</a></span>         <span class="idlMethName"><a href="#widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer">removeSourceBuffer</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a></span> <span class="idlParamName">sourceBuffer</span></span>);</span>
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a href="#idl-def-ReadyState" class="idlType"><code>ReadyState</code></a></span>          <span class="idlAttrName"><a href="#widl-MediaSource-readyState">readyState</a></span>;</span>
+<span class="idlMethod">    <span class="idlMethType"><a>void</a></span>         <span class="idlMethName"><a href="#widl-MediaSource-endOfStream-void-EndOfStreamError-error">endOfStream</a></span> (<span class="idlParam">optional <span class="idlParamType"><a href="#idl-def-EndOfStreamError" class="idlType"><code>EndOfStreamError</code></a></span> <span class="idlParamName">error</span></span>);</span>
+};</span></pre><section id="attributes"><h3><span class="secno">3.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-MediaSource-activeSourceBuffers"><code>activeSourceBuffers</code> of type <span class="idlAttrType"><a href="#idl-def-SourceBufferList" class="idlType"><code>SourceBufferList</code></a></span>, readonly</dt><dd>
+          Contains the subset of <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> that represents the <a href="#active-source-buffers">active source buffers</a>.
+        </dd><dt id="widl-MediaSource-duration"><code>duration</code> of type <span class="idlAttrType"><a>unrestricted double</a></span></dt><dd>
+          <p>Allows the web application to set the presentation duration. The duration is initially set to NaN when the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object is created.</p>
+          <p>On getting, run the following steps:</p>
+          <ol>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute is <code><a href="#idl-def-ReadyState">"closed"</a></code> then return NaN and abort these steps.</li>
+            <li>Return the current value of the attribute.</li>
+          </ol>
+          <p>On setting, run the following steps:</p>
+          <ol>
+            <li>If the value being set is negative or NaN then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute is not <code><a href="#idl-def-ReadyState">"open"</a></code> then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var>new duration</var> set to the value being set.
+	      <div class="note"><div class="note-title"><span>Note</span></div><p class=""><code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> and <code><a href="#widl-MediaSource-endOfStream-void-EndOfStreamError-error">endOfStream()</a></code> can update the duration under certain circumstances.</p></div>
+            </li>
+          </ol>
+        </dd><dt id="widl-MediaSource-readyState"><code>readyState</code> of type <span class="idlAttrType"><a href="#idl-def-ReadyState" class="idlType"><code>ReadyState</code></a></span>, readonly</dt><dd>
+          <p>Indicates the current state of the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object. When the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> is created <code><a href="#widl-MediaSource-readyState">readyState</a></code> must be set to <code><a href="#idl-def-ReadyState">"closed"</a></code>.
+        </p></dd><dt id="widl-MediaSource-sourceBuffers"><code>sourceBuffers</code> of type <span class="idlAttrType"><a href="#idl-def-SourceBufferList" class="idlType"><code>SourceBufferList</code></a></span>, readonly</dt><dd>
+          Contains the list of <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects associated with this <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a>. When <code><a href="#widl-MediaSource-readyState">readyState</a></code> equals <code><a href="#idl-def-ReadyState">"closed"</a></code> this list will be empty. Once <code><a href="#widl-MediaSource-readyState">readyState</a></code> transitions to <code><a href="#idl-def-ReadyState">"open"</a></code> SourceBuffer objects can be added to this list by using <code><a href="#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type">addSourceBuffer()</a></code>.
+        </dd></dl></section><section id="methods"><h3><span class="secno">3.2 </span>Methods</h3><dl class="methods"><dt id="widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type"><code>addSourceBuffer</code></dt><dd>
+          <p>Adds a new <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> to <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">type</var> is null or an empty string then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If <var title="true">type</var> contains a MIME type that is not supported or contains a MIME type that is not supported with the types specified for the other <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>, then throw a <code><a href="http://dom.spec.whatwg.org/#dom-domexception-not_supported_err">NOT_SUPPORTED_ERR</a></code> exception and abort these steps.</li>
+            <li>If the user agent can't handle any more SourceBuffer objects then throw a <code><a href="http://dom.spec.whatwg.org/#dom-domexception-quota_exceeded_err">QUOTA_EXCEEDED_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute is not in the <code><a href="#idl-def-ReadyState">"open"</a></code> state then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>Create a new <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object and associated resources.</li>
+            <li>Add the new object to <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</li>
+            <li>Return the new object.</li>
+          </ol>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">type</td><td class="prmType"><code><a>DOMString</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a></code></div></dd><dt id="widl-MediaSource-endOfStream-void-EndOfStreamError-error"><code>endOfStream</code></dt><dd>
+          <p>Signals the end of the stream.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute is not in the <code><a href="#idl-def-ReadyState">"open"</a></code> state then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>Change the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute value to <code><a href="#idl-def-ReadyState">"ended"</a></code>.</li>
+            <li>
+              <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-sourceended">sourceended</a></code> at the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a>.</li>
+            <li><dl class="switch">
+                <dt>If <var title="true">error</var> is not set, null, or an empty string</dt>
+                <dd>
+	          <ol>
+	            <li>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var>new duration</var> set to the highest end timestamp across all <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.<br>
+		      <div class="note"><div class="note-title"><span>Note</span></div><p class="">This allows the duration to properly reflect the end of the appended media segments. For example, if the duration was explicitly set to 10 seconds and only media segments for 0 to 5 seconds were appended before endOfStream() was called, then the duration will get updated to 5 seconds.</p></div>
+	            </li>
+	            <li>Notify the media element that it now has all of the media data. Playback should continue until all the media passed in via <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> has been played.</li>
+	          </ol>
+	        </dd>
+                <dt>If <var title="true">error</var> is set to <code><a href="#idl-def-EndOfStreamError">"network"</a></code>
+                </dt>
+                <dd>
+	          <dl class="switch">
+	            <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute equals <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
+                    </dt>
+	            <dd>Run the  steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
+	            <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
+                    </dt>
+	            <dd>Run the "<i>If the connection is interrupted after some media data has been received, causing the user agent to give up trying to fetch the resource</i>" steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
+	          </dl>
+	        </dd>
+                <dt>If <var title="true">error</var> is set to <code><a href="#idl-def-EndOfStreamError">"decode"</a></code>
+                </dt>
+                <dd>
+	          <dl class="switch">
+	            <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute equals <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
+                    </dt>
+	            <dd>Run the "<i>If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all</i>" steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
+	            <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>
+                    </dt>
+	            <dd>Run the <a href="http://dev.w3.org/html5/spec/media-elements.html#fatal-decode-error">media data is corrupted</a> steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
+	          </dl>
+	        </dd>
+                <dt>Otherwise</dt>
+                <dd>Throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception.</dd>
+              </dl>
+            </li>
+          </ol>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">error</td><td class="prmType"><code><a href="#idl-def-EndOfStreamError" class="idlType"><code>EndOfStreamError</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptTrue">✔</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd><dt id="widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer"><code>removeSourceBuffer</code></dt><dd>
+          <p>Removes a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> from <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">sourceBuffer</var> is null then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If <var title="true">sourceBuffer</var> specifies an object that is not in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> then throw a <code><a href="http://dom.spec.whatwg.org/#dom-domexception-not_found_err">NOT_FOUND_ERR</a></code> exception and abort these steps.</li>
+            <li>Remove track information from <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>, <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>, and <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code> for all tracks associated with <var title="true">sourceBuffer</var> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <a href="http://dev.w3.org/html5/spec/media-elements.html#handler-tracklist-onchange">change</a> at the modified lists.</li>
+            <li>If <var title="true">sourceBuffer</var> is in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>, then remove it from <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+            <li>Remove <var title="true">sourceBuffer</var> from <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</li>
+            <li>Destroy all resources for <var title="true">sourceBuffer</var>.</li>
+          </ol>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">sourceBuffer</td><td class="prmType"><code><a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd></dl></section>
+
+      <section id="mediasource-events">
+        <h3><span class="secno">3.3 </span>Event Summary</h3>
+        <table class="old-table">
+          <thead>
+            <tr>
+              <th>Event name</th>
+              <th>Interface</th>
+              <th>Dispatched when...</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td><dfn id="dom-evt-sourceopen"><code>sourceopen</code></dfn></td>
+              <td><code>Event</code></td>
+              <td>When <code><a href="#widl-MediaSource-readyState">readyState</a></code> transitions from <code><a href="#idl-def-ReadyState">"closed"</a></code> to <code><a href="#idl-def-ReadyState">"open"</a></code> or from <code><a href="#idl-def-ReadyState">"ended"</a></code> to <code><a href="#idl-def-ReadyState">"open"</a></code>.</td>
+            </tr>
+            <tr>
+              <td><dfn id="dom-evt-sourceended"><code>sourceended</code></dfn></td>
+              <td><code>Event</code></td>
+              <td>When <code><a href="#widl-MediaSource-readyState">readyState</a></code> transitions from <code><a href="#idl-def-ReadyState">"open"</a></code> to <code><a href="#idl-def-ReadyState">"ended"</a></code>.</td>
+            </tr>
+            <tr>
+              <td><dfn id="dom-evt-sourceclose"><code>sourceclose</code></dfn></td>
+              <td><code>Event</code></td>
+	      <td>When <code><a href="#widl-MediaSource-readyState">readyState</a></code> transitions from <code><a href="#idl-def-ReadyState">"open"</a></code> to <code><a href="#idl-def-ReadyState">"closed"</a></code> or <code><a href="#idl-def-ReadyState">"ended"</a></code> to <code><a href="#idl-def-ReadyState">"closed"</a></code>.</td>
+            </tr>
+          </tbody>
+        </table>
+      </section>
+
+      <section id="mediasource-algorithms">
+        <h3><span class="secno">3.4 </span>Algorithms</h3>
+
+        <section id="mediasource-attach">
+          <h4><span class="secno">3.4.1 </span>Attaching to a media element</h4>
+          <p> A <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> object can be attached to a media element by assigning a <a href="#mediasource-object-url">MediaSource object URL</a> to the media element <code><a href="http://dev.w3.org/html5/spec/media-elements.html#attr-media-src">src</a></code> attribute or the src attribute of a &lt;source&gt; inside a media element. A <a href="#mediasource-object-url">MediaSource object URL</a> is created by passing a MediaSource object to <code><a href="#widl-URL-createObjectURL-DOMString-MediaSource-mediaSource">createObjectURL()</a></code>.</p>
+          <p>If the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a> absolute URL matches the MediaSource object URL, run the following steps right before the "Perform a potentially
+            CORS-enabled fetch" step in the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</p>
+          <ol>
+            <dl class="switch">
+              <dt>If <code><a href="#widl-MediaSource-readyState">readyState</a></code> is NOT set to <code><a href="#idl-def-ReadyState">"closed"</a></code></dt>
+              <dd>Run the  steps of the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a>.</dd>
+              <dt>Otherwise</dt>
+              <dd>
+                <ol>
+                  <li>Set the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute to <code><a href="#idl-def-ReadyState">"open"</a></code>.</li>
+                  <li>
+                    <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-sourceopen">sourceopen</a></code> at the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a>.</li>
+                  <li>Allow the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-media-load-resource">resource fetch algorithm</a> to progress based on data passed in via <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code>.</li>
+                </ol>
+              </dd>
+            </dl>
+          </ol>
+        </section>
+
+        <section id="mediasource-detach">
+          <h4><span class="secno">3.4.2 </span>Detaching from a media element</h4>
+          <p>The following steps are run in any case where the media element is going to transition to <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-network_empty">NETWORK_EMPTY</a> and <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <a href="http://dev.w3.org/html5/spec/media-elements.html#event-mediacontroller-emptied">emptied</a> at the media element. These steps should be run right before the transition.</p>
+          <ol>
+            <li>Set the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute to <code><a href="#idl-def-ReadyState">"closed"</a></code>.</li>
+            <li>Set the <code><a href="#widl-MediaSource-duration">duration</a></code> attribute to NaN.</li>
+            <li>Remove all the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects from <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+            <li>
+              <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+            <li>Remove all the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects from <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</li>
+            <li>
+              <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.</li>
+            <li>
+              <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-sourceclose">sourceclose</a></code> at the <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a>.</li>
+          </ol>
+        </section>
+
+        <section id="mediasource-seeking">
+          <h4><span class="secno">3.4.3 </span>Seeking</h4>
+          <p>Run the following steps as part of the "<i>Wait until the user agent has established whether or not the media data for the new playback position is available, and, if it is, until it has decoded enough data to play back that position"</i> step of the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seek">seek algorithm</a>:</p>
+          <ol>
+            <li>The media element looks for <a href="#media-segment">media segments</a> containing the <var title="true">new playback position</var> in each <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+            <dl class="switch">
+	      <dt>If one or more of the objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> is missing <a href="#media-segment">media segments</a> for the <var title="true">new playback position</var>
+              </dt>
+	      <dd>
+	        <ol>
+	          <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
+	          <li>The media element waits for the necessary <a href="#media-segment">media segments</a> to be passed to <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code>. The web application can use <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> to determine what the media element needs to resume playback.</li>
+	        </ol>
+	      </dd>
+	      <dt>Otherwise</dt>
+	      <dd>Continue</dd>
+            </dl>
+            <li>The media element resets all decoders and initializes each one with data from the appropriate <a href="#init-segment">initialization segment</a>.</li>
+            <li>The media element feeds data from the <a href="#media-segment">media segments</a> into the decoders until the <var title="true">new playback position</var> is reached.</li>
+            <li>Resume the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seek">seek algorithm</a> at the "<i>Await a stable state</i>" step.</li>
+          </ol>
+        </section>
+
+
+        <section id="buffer-monitoring">
+          <h4><span class="secno">3.4.4 </span>SourceBuffer Monitoring</h4>
+          <p>The following steps are periodically run during playback to make sure that all of the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> have enough data to ensure uninterrupted playback. Appending new segments and changes to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> also cause these steps to run because they affect the conditions that trigger state transitions. The web application can monitor changes in <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> to drive <a href="#media-segment">media segment</a> appending.</p>
+          <dl class="switch">
+            <dt>If <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> for all objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> do not contain <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> for the current playback position:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
+	        <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code> at the media element.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> for all objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> contain <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> that include the current playback position and enough data to ensure uninterrupted playback:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_enough_data">HAVE_ENOUGH_DATA</a></code>.</li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplaythrough">canplaythrough</a></code> at the media element.</li>
+	        <li>Playback may resume at this point if it was previously suspended by a transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> for at least one object in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> contains a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRange</a></code> that includes the current playback position but not enough data to ensure uninterrupted playback:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>.</li>
+	        <li>If the previous value of <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> was less than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplay">canplay</a></code> at the media element.</li>
+	        <li>Playback may resume at this point if it was previously suspended by a transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+            <dt>If <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> for at least one object in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> contains a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRange</a></code> that ends at the current playback position and does not have a range covering the time immediately after the current position:</dt>
+            <dd>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
+	        <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadeddata">loadeddata</a></code> at the media element.</li>
+	        <li>Playback is suspended at this point since the media element doesn't have enough data to advance the timeline.</li>
+	        <li>Abort these steps.</li>
+	      </ol>
+            </dd>
+          </dl>
+        </section>
+
+        <section id="active-source-buffer-changes">
+          <h4><span class="secno">3.4.5 </span>Changes to selected/enabled track state</h4>
+          <p>During playback <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> needs to be updated if the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-videotrack-selected">selected video track</a>, the <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-audiotrack-enabled">enabled audio tracks</a>, or a text track <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a> changes. When one or more of these changes occur the following steps need to be followed.</p>
+          <dl class="switch">
+            <dt>If the selected video track changes:</dt>
+            <dd>
+	      <ol>
+	        <li>If the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the previously selected video track is not associated with any other enabled tracks, run the following steps:
+  	          <ol>
+	            <li>Remove the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> from <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+	            <li>
+                      <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                    </li>
+	          </ol>
+	        </li>
+	        <li>If the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the newly selected video track is not already in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>, run the following steps:
+	          <ol>
+	            <li>Add the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+	            <li>
+                      <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                    </li>
+	          </ol>
+	        </li>
+	      </ol>
+            </dd>
+            <dt>If an audio track becomes disabled and the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with this track is not associated with any other enabled or selected track</dt>
+            <dd>
+	      <ol>
+	        <li>Remove the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the audio track from <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If an audio track becomes enabled and the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with this track is not already in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+            </dt>
+            <dd>
+	      <ol>
+	        <li>Add the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the audio track to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If a text track <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a> becomes <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-disabled">"disabled"</a> and the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with this track is not associated with any other enabled or selected track</dt>
+            <dd>
+	      <ol>
+	        <li>Remove the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the text track from <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-removesourcebuffer">removesourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	      </ol>
+            </dd>
+            <dt>If a text track <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a> becomes <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a> or <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a> and the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with this track is not already in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+            </dt>
+            <dd>
+	      <ol>
+	        <li>Add the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> associated with the text track to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-addsourcebuffer">addsourcebuffer</a></code> at <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>
+                </li>
+	      </ol>
+            </dd>
+          </dl>
+        </section>
+
+        <section id="duration-change-algorithm">
+          <h4><span class="secno">3.4.6 </span>Duration change</h4>
+          <p>Follow these steps when <code><a href="#widl-MediaSource-duration">duration</a></code> needs to change to a <var>new duration</var>.</p>
+          <ol>
+            <li>If the current value of <code><a href="#widl-MediaSource-duration">duration</a></code> is equal to <var>new duration</var>, then abort these steps.</li>
+            <li>Update <code><a href="#widl-MediaSource-duration">duration</a></code> to <var>new duration</var>.</li>
+            <li>Remove all media data with timestamps that are greater than <var>new duration</var> from all <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code>.
+              <div class="note"><div class="note-title"><span>Note</span></div><p class="">This preserves audio frames that start before and end after the <code><a href="#widl-MediaSource-duration">duration</a></code>. The user agent must end playback at <code><a href="#widl-MediaSource-duration">duration</a></code> even if the audio frame extends beyond this time.</p></div>
+            </li>
+            <li>Update the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#media-controller-duration">media controller duration</a></code> to <var>new duration</var> and run the <a href="http://dev.w3.org/html5/spec/media-elements.html#durationChange">HTMLMediaElement duration change algorithm</a>.</li>
+          </ol>
+        </section>
+      </section>
+    </section>
+
+    <section id="sourcebuffer">
+      <!--OddPage--><h2><span class="secno">4. </span>SourceBuffer Object</h2>
+
+      <pre class="idl"><span class="idlInterface" id="idl-def-SourceBuffer">interface <span class="idlInterfaceID">SourceBuffer</span> : <span class="idlSuperclass"><a>EventTarget</a></span> {
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>TimeRanges</a></span> <span class="idlAttrName"><a href="#widl-SourceBuffer-buffered">buffered</a></span>;</span>
+<span class="idlAttribute">             attribute <span class="idlAttrType"><a>double</a></span>     <span class="idlAttrName"><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></span>;</span>
+<span class="idlMethod">    <span class="idlMethType"><a>void</a></span> <span class="idlMethName"><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append</a></span> (<span class="idlParam"><span class="idlParamType"><a>Uint8Array</a></span> <span class="idlParamName">data</span></span>);</span>
+<span class="idlMethod">    <span class="idlMethType"><a>void</a></span> <span class="idlMethName"><a href="#widl-SourceBuffer-abort-void">abort</a></span> ();</span>
+<span class="idlMethod">    <span class="idlMethType"><a>void</a></span> <span class="idlMethName"><a href="#widl-SourceBuffer-remove-void-double-start-double-end">remove</a></span> (<span class="idlParam"><span class="idlParamType"><a>double</a></span> <span class="idlParamName">start</span></span>, <span class="idlParam"><span class="idlParamType"><a>double</a></span> <span class="idlParamName">end</span></span>);</span>
+};</span></pre><section id="attributes-1"><h3><span class="secno">4.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-SourceBuffer-buffered"><code>buffered</code> of type <span class="idlAttrType"><a>TimeRanges</a></span>, readonly</dt><dd>
+          <p>Indicates what <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> are buffered in the <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>.</p>
+          <p>When the attribute is read the following steps must occur:</p>
+          <ol>
+            <li>If this object has been removed from the <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> attribute of the <a href="#parent-media-source">parent media source</a> then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>Return a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> for the <a href="#media-segment">media segments</a> buffered.</li>
+          </ol>
+        </dd><dt id="widl-SourceBuffer-timestampOffset"><code>timestampOffset</code> of type <span class="idlAttrType"><a>double</a></span></dt><dd>
+          <p>Controls the offset applied to timestamps inside subsequent <a href="#media-segment">media segments</a> that are appended to this <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a>. The <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> is initially set to 0 which indicates that no offset is being applied.</p>
+          <p> On getting, the initial value or the last value that was successfully set is returned.</p>
+          <p>On setting, run following steps:</p>
+          <ol>
+            <li>If this object has been removed from the <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> attribute of the <a href="#parent-media-source">parent media source</a>, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> is not in the <code><a href="#idl-def-ReadyState">"open"</a></code> state, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>If this object is waiting for the end of a <a href="#media-segment">media segment</a> to be appended, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> and abort these steps.</li>
+            <li>Update the attribute to the new value.</li>
+          </ol>
+        </dd></dl></section><section id="methods-1"><h3><span class="secno">4.2 </span>Methods</h3><dl class="methods"><dt id="widl-SourceBuffer-abort-void"><code>abort</code></dt><dd>
+          <p>Aborts the current segment and resets the segment parser.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If this object has been removed from the <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> attribute of the <a href="#parent-media-source">parent media source</a> then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> is not in the <code><a href="#idl-def-ReadyState">"open"</a></code> state then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>The media element aborts parsing the current segment.</li>
+            <li>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a> and the <a href="#sourcebuffer-input-buffer">input buffer</a> contains some complete <a href="#coded-frame">coded frames</a>, then run the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a> as if the media segment only contained these frames.</li>
+            <li>Remove all bytes from the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
+            <li>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</li>
+          </ol>
+        <div><em>No parameters.</em></div><div><em>Return type: </em><code><a>void</a></code></div></dd><dt id="widl-SourceBuffer-append-void-Uint8Array-data"><code>append</code></dt><dd>
+          <p>Appends segment data to the source buffer.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">data</var> is null then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If this object has been removed from the <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> attribute of the <a href="#parent-media-source">parent media source</a> then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> is in the <code><a href="#idl-def-ReadyState">"closed"</a></code> state then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>
+              <p>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> is in the <code><a href="#idl-def-ReadyState">"ended"</a></code> state then run the following steps:</p>
+              <ol>
+	        <li>Set the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> to <code><a href="#idl-def-ReadyState">"open"</a></code>
+                </li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-evt-sourceopen">sourceopen</a></code> at the <a href="#parent-media-source">parent media source</a> .</li>
+              </ol>
+            </li>
+            <li>If <var title="true">data</var>.byteLength is 0, then abort these steps.</li>
+            <li>Add <var title="true">data</var> to the end of the <a href="#sourcebuffer-input-buffer">input buffer</a>
+            </li>
+            <li>Run the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a>.</li>
+          </ol>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">data</td><td class="prmType"><code><a>Uint8Array</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd><dt id="widl-SourceBuffer-remove-void-double-start-double-end"><code>remove</code></dt><dd>
+          <p>Removes media for a specific time range.</p>
+
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var title="true">start</var> is negative or greater than <code><a href="#widl-MediaSource-duration">duration</a></code>, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If <var title="true">end</var> is less than or equal to <var title="true">start</var>, then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</li>
+            <li>If this object has been removed from the <code><a href="#widl-MediaSource-sourceBuffers">sourceBuffers</a></code> attribute of the <a href="#parent-media-source">parent media source</a> then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>If the <code><a href="#widl-MediaSource-readyState">readyState</a></code> attribute of the <a href="#parent-media-source">parent media source</a> is not in the <code><a href="#idl-def-ReadyState">"open"</a></code> state then throw an <code><a href="http://dom.spec.whatwg.org/#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code> exception and abort these steps.</li>
+            <li>
+              <p>For each track in this source buffer, run the following steps:</p>
+              <ol>
+	        <li>
+	          <p>Let <var title="true">next random access point timestamp</var> be the timestamp of the next <a href="#random-access-point">random access point</a>, for this track, that is greater than or equal to <var title="true">end</var>.</p>
+	          <div class="note"><div class="note-title"><span>Note</span></div><p class=""><var title="true">next random access point timestamp</var> can be different across tracks because the dependencies between <a href="#coded-frame">coded frames</a> within a track are usually different than the dependencies in another track.</p></div>
+                </li>
+	        <li>Remove all media data, for this track, that contain starting timestamps greater than or equal to <var title="true">start</var> and less than the <var title="true">next random access point timestamp</var>.</li>
+	      </ol>
+            </li>
+        </ol>
+
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">start</td><td class="prmType"><code><a>double</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr><tr><td class="prmName">end</td><td class="prmType"><code><a>double</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>void</a></code></div></dd></dl></section>
+
+      <section id="sourcebuffer-algorithms">
+        <h3><span class="secno">4.3 </span>Algorithms</h3>
+
+        <section id="sourcebuffer-segment-parser-loop">
+          <h4><span class="secno">4.3.1 </span>Segment Parser Loop</h4>
+          <p>All SourceBuffer objects have an internal <dfn id="sourcebuffer-append-state">append state</dfn> variable that keeps track of the high-level segment parsing state. It is initially set to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a> and can transition to the following states as data is appended.</p>
+          <table class="old-table">
+            <thead>
+	      <tr>
+                <th>Append state name</th>
+                <th>Description</th>
+              </tr>
+            </thead>
+            <tbody>
+              <tr>
+                <td><dfn id="sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</dfn></td>
+                <td>Waiting for the start of an <a href="#init-segment">initialization segment</a> or <a href="#media-segment">media segment</a> to be appended.</td>
+              </tr>
+              <tr>
+                <td><dfn id="sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</dfn></td>
+                <td>Currently parsing an <a href="#init-segment">initialization segment</a>.</td>
+              </tr>
+	      <tr>
+	        <td><dfn id="sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</dfn></td>
+                <td>Currently parsing a <a href="#media-segment">media segment</a>.</td>
+              </tr>
+            </tbody>
+          </table>
+          
+          <p>The <dfn id="sourcebuffer-input-buffer">input buffer</dfn> is a byte buffer that is used to hold unparsed bytes across <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> calls. The buffer is empty when the SourceBuffer object is created.</p>
+
+          <p>While the <a href="#sourcebuffer-input-buffer">input buffer</a> is not empty, run the following steps in a loop:</p>
+          <ol>
+            <li>If the <a href="#sourcebuffer-input-buffer">input buffer</a> starts with bytes that violate the <a href="#byte-stream-formats">byte stream format specifications</a>, then call <code><a href="#widl-MediaSource-endOfStream-void-EndOfStreamError-error">endOfStream("decode")</a></code>, and abort this algorithm.</li>
+            <li>Remove any bytes that the <a href="#byte-stream-formats">byte stream format specifications</a> say should be ignored from the start of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
+            <li>
+	      <p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>, then run the following steps:</p>
+	      <ol>
+	        <li>If the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a> indicates the start of an <a href="#init-segment">initialization segment</a>, set the <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</a>.</li>
+	        <li>If the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a> indicates the start of an <a href="#media-segment">media segment</a>, set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a>.</li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</a>, then run the following steps:</p>
+	      <ol>
+	        <li>If the <a href="#sourcebuffer-input-buffer">input buffer</a> does not contain a complete <a href="#init-segment">initialization segment</a> yet, then exit the loop.</li>
+	        <li>Run the <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a>.</li>
+	        <li>Remove the <a href="#init-segment">initialization segment</a> bytes from the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
+	        <li>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <a href="#sourcebuffer-append-state">append state</a> equals <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a>, then run the following steps:</p>
+	      <ol>
+	        <li>
+	          <p>If the <a href="#sourcebuffer-input-buffer">input buffer</a> does not contain a complete <a href="#media-segment">media segment</a> header yet, then exit the loop.</p>
+	          <div class="note"><div class="note-title"><span>Note</span></div><p class="">Implementations may choose to implement this state as an incremental parser so that it is not necessary to have the entire media segment before running the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a>.</p></div>
+	        </li>
+	        <li>Run the <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a>.</li>
+	        <li>Remove the <a href="#media-segment">media segment</a> bytes from the beginning of the <a href="#sourcebuffer-input-buffer">input buffer</a>.</li>
+	        <li>
+	          <p>Set <a href="#sourcebuffer-append-state">append state</a> to <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>.</p>
+	          <div class="note"><div class="note-title"><span>Note</span></div><p class="">Incremental parsers should only do this transition after the entire media segment has been received.</p></div>
+	        </li>
+	        <li>Return  to the top of the loop.</li>
+	      </ol>
+            </li>
+          </ol>
+        </section>
+
+        <section id="sourcebuffer-init-segment-received">
+          <h4><span class="secno">4.3.2 </span>Initialization Segment Received</h4>
+          <p>The following steps are run when the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a> successfully parses a complete <a href="#init-segment">initialization segment</a>:</p>
+          <ol>
+            <li>Update the <code><a href="#widl-MediaSource-duration">duration</a></code> attribute if it currently equals NaN:</li>
+            <dl class="switch">
+	      <dt>If the initialization segment contains a duration:</dt>
+	      <dd>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var>new duration</var> set to the duration in the initialization segment.</dd>
+	      <dt>Otherwise:</dt>
+	      <dd>Run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var>new duration</var> set to positive Infinity.</dd>
+            </dl>
+            <li>Handle state transitions:</li>
+            <dl class="switch">
+	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_nothing">HAVE_NOTHING</a></code>:</dt>
+	      <dd>
+	        <ol>
+	          <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.</li>
+	          <li>
+                    <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named  <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadedmetadata">loadedmetadata</a></code> at the media element.</li>
+	        </ol>
+	      </dd>
+	      <dt>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is greater than <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code> and the <a href="#init-segment">initialization segment</a> contains the first video or first audio track in the presentation:</dt>
+	      <dd>
+	        Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code>.
+	      </dd>
+	      <dt>Otherwise:</dt>
+	      <dd>Continue</dd>
+            </dl>
+            <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-audiotracks">audioTracks</a></code>
+            </li>
+            <dl class="switch">
+	      <dt>If <a href="#init-segment">initialization segment</a> contains the first audio track:</dt>
+	      <dd>
+	        <ol>
+	          <li>Add an <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code> and mark it as enabled.</li>
+	          <li>Add this <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+	        </ol>
+	      </dd>
+	      <dt>If <a href="#init-segment">initialization segment</a> contains audio tracks beyond those already in the presentation:</dt>
+	      <dd>Add a disabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#audiotrack">AudioTrack</a></code> for each audio track in the <a href="#init-segment">initialization segment</a>.</dd>
+            </dl>
+            <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-videotracks">videoTracks</a></code>:</li>
+            <dl class="switch">
+	      <dt>If <a href="#init-segment">initialization segment</a> contains the first video track:</dt>
+	      <dd>
+	        <ol>
+	          <li>Add a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> and mark it as selected.</li>
+	          <li>Add this <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+	        </ol>
+	      </dd>
+	      <dt>If <a href="#init-segment">initialization segment</a> contains the video tracks beyond those already in the presentation:</dt>
+	      <dd>Add a disabled <code><a href="http://dev.w3.org/html5/spec/media-elements.html#videotrack">VideoTrack</a></code> for each video track in the <a href="#init-segment">initialization segment</a>.</dd>
+            </dl>
+            <li>Update <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-texttracks">textTracks</a></code>
+            </li>
+            <dl class="switch">
+	      <dd>
+	        <ol>
+	          <li>Add a <code><a href="http://dev.w3.org/html5/spec/media-elements.html#texttrack">TextTrack</a></code> for each text track in the <a href="#init-segment">initialization segment</a>.</li>
+	          <li>If the text track <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-mode">mode</a> is <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-showing">"showing"</a> or <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-texttrack-hidden">"hidden"</a> then add this <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> to <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+	        </ol>
+	      </dd>
+            </dl>
+          </ol>
+        </section>
+
+        <section id="sourcebuffer-coded-frame-processing">
+          <h4><span class="secno">4.3.3 </span>Coded Frame Processing</h4>
+          <p>When a complete <a href="#coded-frame">coded frame</a> has been parsed by the <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a> then the following steps are run:</p>
+          <ol>
+            <li>
+	      <p>For each <a href="#coded-frame">coded frame</a> in the <a href="#media-segment">media segment</a> run the following steps:</p>
+	      <ol>
+	        <li>Let <var>presentation timestamp</var> be a double precision floating point representation of the coded frame's presentation timestamp.</li>
+	        <li>Let <var>decode timestamp</var> be a double precision floating point representation of the coded frame's decode timestamp.</li>
+	        <li>
+	          <p>If <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> is not 0, then run the following steps:</p>
+	          <ol>
+	            <li>Add <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> to the <var>presentation timestamp</var>.</li>
+	            <li>Add <code><a href="#widl-SourceBuffer-timestampOffset">timestampOffset</a></code> to the <var>decode timestamp</var>.</li>
+	            <li>If the <var>presentation timestamp</var> or <var>decode timestamp</var> is less than the <a href="#presentation-start-time">presentation start time</a>, then call <code><a href="#widl-MediaSource-endOfStream-void-EndOfStreamError-error">endOfStream("decode")</a></code>, and abort these steps.</li>
+	          </ol>
+	        </li>
+	        <li>Add the <a href="#coded-frame">coded frame</a> with the <var>presentation timestamp</var> and <var title="true">decode timestamp</var>, to the source buffer.</li>
+	      </ol>
+            </li>
+            <li>
+              <p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_metadata">HAVE_METADATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> to have media data for the current playback position, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>.</li>
+	        <li>If this is the first transition to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code>, then <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-loadeddata">loadeddata</a></code> at the media element.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_current_data">HAVE_CURRENT_DATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> to have media data beyond the current playback position, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code>.</li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplay">canplay</a></code> at the media element.</li>
+	      </ol>
+            </li>
+            <li>
+	      <p>If the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute is <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_future_data">HAVE_FUTURE_DATA</a></code> and the new <a href="#coded-frame">coded frames</a> cause all objects in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code> to have enough data to start playback, then run the following steps:</p>
+	      <ol>
+	        <li>Set the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-readystate">HTMLMediaElement.readyState</a></code> attribute to <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-have_enough_data">HAVE_ENOUGH_DATA</a></code>.</li>
+	        <li>
+                  <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">Queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="http://dev.w3.org/html5/spec/media-elements.html#event-media-canplaythrough">canplaythrough</a></code> at the media element.</li>
+	      </ol>
+            </li>
+            <li>If the <a href="#media-segment">media segment</a> contains data beyond the current <code><a href="#widl-MediaSource-duration">duration</a></code>, then run the <a href="#duration-change-algorithm">duration change algorithm</a> with <var>new duration</var> set to the maximum of the current duration and the highest end timestamp reported by <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-buffered">HTMLMediaElement.buffered</a></code>.</li>
+          </ol>
+        </section>
+      </section>
+    </section>
+
+    <section id="sourcebufferlist">
+      <!--OddPage--><h2><span class="secno">5. </span>SourceBufferList Object</h2>
+      <p>SourceBufferList is a simple container object for <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects. It provides read-only array access and fires events when the list is modified.</p>
+
+      <pre class="idl"><span class="idlInterface" id="idl-def-SourceBufferList">interface <span class="idlInterfaceID">SourceBufferList</span> : <span class="idlSuperclass"><a>EventTarget</a></span> {
+<span class="idlAttribute">    readonly attribute <span class="idlAttrType"><a>unsigned long</a></span> <span class="idlAttrName"><a href="#widl-SourceBufferList-length">length</a></span>;</span>
+<span class="idlMethod">    <span class="idlMethType"><a>getter</a></span> <span class="idlMethName"><a href="#widl-SourceBufferList-SourceBuffer-getter-unsigned-long-index">SourceBuffer</a></span> (<span class="idlParam"><span class="idlParamType"><a>unsigned long</a></span> <span class="idlParamName">index</span></span>);</span>
+};</span></pre><section id="attributes-2"><h3><span class="secno">5.1 </span>Attributes</h3><dl class="attributes"><dt id="widl-SourceBufferList-length"><code>length</code> of type <span class="idlAttrType"><a>unsigned long</a></span>, readonly</dt><dd>
+          <p>Indicates the number of <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> objects in the list.</p>
+        </dd></dl></section><section id="methods-2"><h3><span class="secno">5.2 </span>Methods</h3><dl class="methods"><dt id="widl-SourceBufferList-SourceBuffer-getter-unsigned-long-index"><code>SourceBuffer</code></dt><dd>
+          <p>Allows the SourceBuffer objects in the list to be accessed with an array operator (i.e. []).</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var>index</var> is greater than or equal to the <code><a href="#widl-SourceBufferList-length">length</a></code> attribute then return undefined and abort these steps.</li>
+            <li>Return the <var>index</var>'th <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object in the list.</li>
+          </ol>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">index</td><td class="prmType"><code><a>unsigned long</a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>getter</a></code></div></dd></dl></section>
+
+      <section id="sourcebufferlist-events">
+        <h3><span class="secno">5.3 </span>Event Summary</h3>
+        <table class="old-table">
+          <thead>
+            <tr>
+              <th>Event name</th>
+              <th>Interface</th>
+              <th>Dispatched when...</th>
+            </tr>
+          </thead>
+          <tbody>
+            <tr>
+              <td><dfn id="dom-evt-addsourcebuffer"><code>addsourcebuffer</code></dfn></td>
+              <td><code>Event</code></td>
+              <td>When a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> is added to the list.</td>
+            </tr>
+            <tr>
+              <td><dfn id="dom-evt-removesourcebuffer"><code>removesourcebuffer</code></dfn></td>
+              <td><code>Event</code></td>
+              <td>When a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> is removed from the list.</td>
+            </tr>
+          </tbody>
+        </table>
+      </section>
+    </section>
+
+    <section id="url">
+      <!--OddPage--><h2><span class="secno">6. </span>URL Object</h2>
+      <p></p>
+
+      <pre class="idl"><span class="idlInterface" id="idl-def-URL">partial interface <span class="idlInterfaceID">URL</span> {
+<span class="idlMethod">    static <span class="idlMethType"><a>DOMString</a></span> <span class="idlMethName"><a href="#widl-URL-createObjectURL-DOMString-MediaSource-mediaSource">createObjectURL</a></span> (<span class="idlParam"><span class="idlParamType"><a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a></span> <span class="idlParamName">mediaSource</span></span>);</span>
+};</span></pre><section id="methods-3"><h3><span class="secno">6.1 </span>Methods</h3><dl class="methods"><dt id="widl-URL-createObjectURL-DOMString-MediaSource-mediaSource"><code>createObjectURL</code>, static</dt><dd>
+          <p>Creates URLs for <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> objects.</p>
+          <p>When this method is invoked, the user agent must run the following steps:</p>
+          <ol>
+            <li>If <var>mediaSource</var> is NULL the return null.</li>
+            <li>Return a unique <a href="#mediasource-object-url">MediaSource object URL</a> that can be used to dereference the <var>mediaSource</var> argument, and run the rest of the algorithm asynchronously.</li>
+            <li><a href="http://dev.w3.org/html5/spec/webappapis.html#provide-a-stable-state">provide a stable state</a></li>
+            <li>Revoke the <a href="#mediasource-object-url">MediaSource object URL</a> by calling <a href="http://www.w3.org/TR/FileAPI/#dfn-revokeObjectURL">revokeObjectURL()</a> on it.</li>
+          </ol>
+          <div class="note"><div class="note-title"><span>Note</span></div><p class="">This algorithm is intended to mirror the behavior of the <a href="http://www.w3.org/TR/FileAPI/#">File API</a> <a href="http://www.w3.org/TR/FileAPI/#dfn-createObjectURL">createObjectURL()</a> method with autoRevoke set to true.</p></div>
+        <table class="parameters"><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">mediaSource</td><td class="prmType"><code><a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a></code></td><td class="prmNullFalse">✘</td><td class="prmOptFalse">✘</td><td class="prmDesc"></td></tr></table><div><em>Return type: </em><code><a>DOMString</a></code></div></dd></dl></section>
+    </section>
+
+    <section id="htmlmediaelement-attributes">
+      <!--OddPage--><h2><span class="secno">7. </span>HTMLMediaElement attributes</h2>
+      <p>This section specifies what existing attributes on the <a href="http://dev.w3.org/html5/spec/media-elements.html#htmlmediaelement">HTMLMediaElement</a> should return when a <a href="#idl-def-MediaSource" class="idlType"><code>MediaSource</code></a> is attached to the element.</p>
+
+      <p>The <a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-seekable">HTMLMediaElement.seekable</a> attribute returns a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> created based on the following steps:</p>
+      <dl class="switch">
+        <dt>If <code><a href="#widl-MediaSource-duration">duration</a></code> equals NaN</dt>
+        <dd>Return an empty <code><a href="http://dev.w3.org/html5/spec/media-elements.html#timeranges">TimeRanges</a></code> object.</dd>
+        <dt>If <code><a href="#widl-MediaSource-duration">duration</a></code> equals positive Infinity</dt>
+        <dd>Return a single range with a start time of 0 and an end time equal to the highest end time reported by the <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-buffered">HTMLMediaElement.buffered</a></code> attribute.</dd>
+        <dt>Otherwise</dt>
+        <dd>Return a single range with a start time of 0 and an end time equal to <code><a href="#widl-MediaSource-duration">duration</a></code>.</dd>
+      </dl>
+
+      <p id="dom-htmlmediaelement.buffered">The <code><a href="http://dev.w3.org/html5/spec/media-elements.html#dom-media-buffered">HTMLMediaElement.buffered</a></code> attribute returns a new static <a href="http://dev.w3.org/html5/spec/media-elements.html#normalized-timeranges-object">normalized TimeRanges object</a> created based on the following steps:</p>
+      <ol>
+        <li>Let <var>active ranges</var> be the ranges returned by <code><a href="#widl-SourceBuffer-buffered">buffered</a></code> for each <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> object in <code><a href="#widl-MediaSource-activeSourceBuffers">activeSourceBuffers</a></code>.</li>
+        <li>Let <var>intersection range</var> be the intersection of the <var>active ranges</var>.</li>
+        <li>
+          <p>If <code><a href="#widl-MediaSource-readyState">readyState</a></code> is <code><a href="#idl-def-ReadyState">"ended"</a></code>, then run the following steps:</p>
+          <ol>
+	    <li>Let <var>highest end time</var> be the largest end time in the <var>active ranges</var>.</li>
+	    <li>Let <var>highest intersection end time</var> be the highest end time in the <var>intersection range</var>.</li>
+	    <li>If the <var>highest intersection end time</var> is less than the <var>highest end time</var>, then update the <var>intersection range</var> so that the <var>highest intersection end time</var> equals the <var>highest end time</var>.</li>
+	  </ol>
+        </li>
+        <li>Return the <var>intersection range</var>.</li>
+      </ol>
+    </section>
     
-    <h2 id="byte-stream-formats">8. Byte Stream Formats</h2>
-    <p>The bytes provided through <code><a href="#dom-append">append()</a></code> for a <code><a href="#dom-sourcebuffer">SourceBuffer</a></code> form a logical byte stream. The format of this byte stream depends on the media container format in use and is defined in a byte stream format specification. Byte stream format specifications based on WebM and the ISO Base Media File Format are provided below. If these formats are supported then the byte stream formats described below must be supported.</p>
-    <p>This section provides general requirements for all byte stream formats:</p>
-    <ul>
-      <li>A byte stream format specification may define <a href="#init-segment">initialization segments</a> and must define <a href="#media-segment">media segments</a>.</li>
-      <li>It must be possible to identify segment boundaries and segment type (initialization or media) by examining the byte stream alone.</li>
-      <li>The combination of an Initialization Segment and any contiguous sequence of Media Segments associated with it must:
-	<ol>
-	  <li>Identify the number and type (audio, video, text, etc.) of tracks in the Segments</li>
-	  <li>Identify the decoding capabilities needed to decode each track (i.e. codec and codec parameters)</li>
-	  <li>If a track is encrypted, provide any encryption parameters necessary to decrypt the content (except the encryption key itself)</li>
-	  <li>For each track, provide all information necessary to decode and render the earliest <a href="#random-access-point">random access point</a> in the sequence of Media Segments and all subsequent samples in the sequence (in presentation time). This includes, in particular,
-	    <ul>
-	      <li>Information that determines the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-video-intrinsic-width">intrinsic width and height</a> of the video (specifically, this requires either the picture or pixel aspect ratio, together with the encoded resolution).</li>
-	      <li>Information necessary to convert the video decoder output to a format suitable for display</li>
-	    </ul>
-	  </li>
-	  <li>Identify the global presentation timestamp of every sample in the sequence of Media Segments</li>
-	  <p>For example, if I1 is associated with M1, M2, M3 then the above must hold for all the combinations I1+M1, I1+M2, I1+M1+M2, I1+M2+M3, etc.</p>
-	</ol>
-      </li>
-    </ul>
-    <p>Byte stream specifications must at a minimum define constraints which ensure that the above requirements hold. Additional constraints may be defined, for example to simplify implementation.</p>
-
-    <p>Initialization segments are an optimization. They allow a byte stream format to avoid duplication of information in Media Segments that is the same for many Media Segments. Byte stream format specifications need not specify Initialization Segment formats, however. They may instead require that such information is duplicated in every Media Segment.</p>
-
-    <h3 id="webm">8.1 WebM Byte Streams</h3>
-    <div class="nonnormative">
-      <p>This section defines segment formats for implementations that choose to support WebM.</p>
-      <h4 id="webm-init-segments">8.1.1. Initialization Segments</h4>
-      <p>A WebM <a href="#init-segment">initialization segment</a> must contain a subset of the elements at the start of a typical WebM file.</p>
-      <p>The following rules apply to WebM initialization segments:</p>
-      <ol>
-	<li>The <a href="#init-segment">initialization segment</a> must start with an <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> element, followed by a <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header.</li>
-	<li>The size value in the <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header must signal an "unknown size" or contain a value large enough to include the <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> and <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> elements that follow.</li>
-	<li>A <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> element and a <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> element must appear, in that order, after the <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header and before any further <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> or <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> elements.</li>
-	<li>Any elements other than an <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> or a <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> that occur before, in between, or after the <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> and <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> elements are ignored.</li>
-      </ol>
+    <section id="byte-stream-formats">
+      <!--OddPage--><h2><span class="secno">8. </span>Byte Stream Formats</h2>
+      <p>The bytes provided through <code><a href="#widl-SourceBuffer-append-void-Uint8Array-data">append()</a></code> for a <a href="#idl-def-SourceBuffer" class="idlType"><code>SourceBuffer</code></a> form a logical byte stream. The format of this byte stream depends on the media container format in use and is defined in a byte stream format specification. Byte stream format specifications based on WebM and the ISO Base Media File Format are provided below. If these formats are supported then the byte stream formats described below must be supported.</p>
+      <p>This section provides general requirements for all byte stream formats:</p>
+      <ul>
+        <li>A byte stream format specification may define <a href="#init-segment">initialization segments</a> and must define <a href="#media-segment">media segments</a>.</li>
+        <li>It must be possible to identify segment boundaries and segment type (initialization or media) by examining the byte stream alone.</li>
+        <li>The combination of an Initialization Segment and any contiguous sequence of Media Segments associated with it must:
+	  <ol>
+	    <li>Identify the number and type (audio, video, text, etc.) of tracks in the Segments</li>
+	    <li>Identify the decoding capabilities needed to decode each track (i.e. codec and codec parameters)</li>
+	    <li>If a track is encrypted, provide any encryption parameters necessary to decrypt the content (except the encryption key itself)</li>
+	    <li>For each track, provide all information necessary to decode and render the earliest <a href="#random-access-point">random access point</a> in the sequence of Media Segments and all subsequent samples in the sequence (in presentation time). This includes, in particular,
+	      <ul>
+	        <li>Information that determines the <a href="http://dev.w3.org/html5/spec/media-elements.html#concept-video-intrinsic-width">intrinsic width and height</a> of the video (specifically, this requires either the picture or pixel aspect ratio, together with the encoded resolution).</li>
+	        <li>Information necessary to convert the video decoder output to a format suitable for display</li>
+	      </ul>
+	    </li>
+	    <li>Identify the global presentation timestamp of every sample in the sequence of Media Segments</li>
+	    <p>For example, if I1 is associated with M1, M2, M3 then the above must hold for all the combinations I1+M1, I1+M2, I1+M1+M2, I1+M2+M3, etc.</p>
+	  </ol>
+        </li>
+      </ul>
+      <p>Byte stream specifications must at a minimum define constraints which ensure that the above requirements hold. Additional constraints may be defined, for example to simplify implementation.</p>
 
-      <h4 id="webm-media-segments">8.1.2. Media Segments</h4>
-      <p>A WebM <a href="#media-segment">media segment</a> is a single <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> element.</p>
-      <p>The following rules apply to WebM media segments:</p>
-      <ol>
-	<li>The Timecode element in the <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> contains a presentation timestamp in TimecodeScale units.</li>
-	<li>The TimecodeScale in the <a href="#webm-init-segment">WebM initialization segment</a> most recently appended applies to all timestamps in the <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a>
-</li>
-	<li>The Cluster header may contain an "unknown" size value. If it does then the end of the cluster is reached when another <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> header or an element header that indicates the start of an <a href="#webm-init-segment">WebM initialization segment</a> is encountered.</li>
-	<li>Block &amp; SimpleBlock elements must be in time increasing order consistent with the <a href="http://www.webmproject.org/code/specs/container/#webm-guidelines">WebM spec</a>.</li>
-	<li>If the most recent <a href="#webm-init-segment">WebM initialization segment</a> describes multiple tracks, then blocks from all the tracks must be interleaved in time increasing order. At least one block from all audio and video tracks must be present.</li>
-	<li>
-<a href="http://www.webmproject.org/code/specs/container/#cueing-data">Cues</a> or <a href="http://www.webmproject.org/code/specs/container/#chapters">Chapters</a> elements may follow a <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> element. These elements must be accepted and ignored by the user agent.</li>
-      </ol>
-
-      <h4 id="webm-random-access-points">8.1.3. Random Access Points</h4>
-      <p>A SimpleBlock element with its Keyframe flag set signals the location of a <a href="#random-access-point">random access point</a> for that track. Media segments containing multiple tracks are only considered a random access point if the first SimpleBlock for each track has its Keyframe flag set. The order of the multiplexed blocks must conform to the <a href="http://www.webmproject.org/code/specs/container/#muxer-guidelines">WebM Muxer Guidelines</a>.</p>
-    </div>
+      <p>Initialization segments are an optimization. They allow a byte stream format to avoid duplication of information in Media Segments that is the same for many Media Segments. Byte stream format specifications need not specify Initialization Segment formats, however. They may instead require that such information is duplicated in every Media Segment.</p>
 
-    <h3 id="iso">8.2 ISO Base Media File Format Byte Streams</h3>
-    <div class="nonnormative">
-      <p>This section defines segment formats for implementations that choose to support the ISO Base Media File Format
-	<a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip">ISO/IEC 14496-12</a> (ISO BMFF).</p> 
-      <h4 id="iso-init-segments">8.2.1. Initialization Segments</h4>
-      <p>An ISO BMFF <a href="#init-segment">initialization segment</a> must contain a single Movie Header Box (<strong>moov</strong>). The tracks in the Movie Header Box must not contain any samples (i.e. the <strong><var>entry_count</var></strong> in the <strong>stts</strong>, <strong>stsc</strong> and <strong>stco</strong> boxes must be set to zero). A Movie Extends (<strong>mvex</strong>) box must be contained in the
-	Movie Header Box to indicate that Movie Fragments are to be expected.</p>
-      <p>The <a href="#init-segment">initialization segment</a> may contain Edit Boxes (<strong>edts</strong>) which provide a mapping of composition times for each track to the global presentation time.</p>
-      <h4 id="iso-media-segments">8.2.2. Media Segments</h4>
-      <p>An ISO BMFF <a href="#media-segment">media segment</a> must contain a single Movie Fragment Box (<strong>moof</strong>) followed by one or more Media Data Boxes (<strong>mdat</strong>).</p>
-      <p>The following rules apply to ISO BMFF media segments:</p>
-      <ol>
-	<li>The Movie Fragment Box must contain at least one Track Fragment Box (<strong>traf</strong>).</li>
-	<li>The Movie Fragment Box must use movie-fragment relative addressing and the flag <strong><var>default-base-is-moof</var></strong> must be set; absolute byte-offsets must not be used.</li>
-	<li>External data references must not be used.</li>
-	<li>If the Movie Fragment contains multiple tracks, the duration by which each track extends should be as close to equal as practical.</li>
-	<li>Each Track Fragment Box must contain a Track Fragment Decode Time Box (<strong>tfdt</strong>)</li>
-	<li>The first sample in each Track Fragment Run Box (<strong>trun</strong>) must indicate that the sample is a <a href="#random-access-point">random access point</a>.</li>
-	<li>The Media Data Boxes must contain all the samples referenced by the Track Fragment Run Boxes (<strong>trun</strong>) of the Movie Fragment Box.</li>
-      </ol>
+      <section id="webm" class="nonnormative">
+        <h3><span class="secno">8.1 </span>WebM Byte Streams</h3>
+        <p>This section defines segment formats for implementations that choose to support WebM.</p>
 
-      <h4 id="iso-random-access-points">8.2.3. Random Access Points</h4>
-      <p>A <a href="#random-access-point">random access point</a> as defined in this specification corresponds to a Stream Access Point of type 1 or 2 as defined in Annex I of <a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip">ISO/IEC 14496-12</a>.</p>
-    </div>
+        <section id="webm-init-segments">
+          <h4><span class="secno">8.1.1 </span>Initialization Segments</h4>
+          <p>A WebM <a href="#init-segment">initialization segment</a> must contain a subset of the elements at the start of a typical WebM file.</p>
+          <p>The following rules apply to WebM initialization segments:</p>
+          <ol>
+	    <li>The <a href="#init-segment">initialization segment</a> must start with an <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> element, followed by a <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header.</li>
+	    <li>The size value in the <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header must signal an "unknown size" or contain a value large enough to include the <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> and <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> elements that follow.</li>
+	    <li>A <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> element and a <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> element must appear, in that order, after the <a href="http://www.webmproject.org/code/specs/container/#segment">Segment</a> header and before any further <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> or <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> elements.</li>
+	    <li>Any elements other than an <a href="http://www.webmproject.org/code/specs/container/#ebml-basics">EBML Header</a> or a <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> that occur before, in between, or after the <a href="http://www.webmproject.org/code/specs/container/#segment-information">Segment Information</a> and <a href="http://www.webmproject.org/code/specs/container/#track">Tracks</a> elements are ignored.</li>
+          </ol>
+        </section>
 
-    <h2 id="examples">9. Examples</h2>
-    <p>Example use of the Media Source Extensions</p>
-    <div class="block">
-      <div class="blockContent">
-        <pre class="code">
-&lt;script&gt;
+        <section id="webm-media-segments">
+          <h4><span class="secno">8.1.2 </span>Media Segments</h4>
+          <p>A WebM <a href="#media-segment">media segment</a> is a single <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> element.</p>
+          <p>The following rules apply to WebM media segments:</p>
+          <ol>
+	    <li>The Timecode element in the <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> contains a presentation timestamp in TimecodeScale units.</li>
+	    <li>The TimecodeScale in the <a href="#webm-init-segments">WebM initialization segment</a> most recently appended applies to all timestamps in the <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a>
+            </li>
+	    <li>The Cluster header may contain an "unknown" size value. If it does then the end of the cluster is reached when another <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> header or an element header that indicates the start of an <a href="#webm-init-segments">WebM initialization segment</a> is encountered.</li>
+	    <li>Block &amp; SimpleBlock elements must be in time increasing order consistent with the <a href="http://www.webmproject.org/code/specs/container/#webm-guidelines">WebM spec</a>.</li>
+	    <li>If the most recent <a href="#webm-init-segments">WebM initialization segment</a> describes multiple tracks, then blocks from all the tracks must be interleaved in time increasing order. At least one block from all audio and video tracks must be present.</li>
+	    <li>
+              <a href="http://www.webmproject.org/code/specs/container/#cueing-data">Cues</a> or <a href="http://www.webmproject.org/code/specs/container/#chapters">Chapters</a> elements may follow a <a href="http://www.webmproject.org/code/specs/container/#cluster">Cluster</a> element. These elements must be accepted and ignored by the user agent.</li>
+          </ol>
+        </section>
+
+        <section id="webm-random-access-points">
+          <h4><span class="secno">8.1.3 </span>Random Access Points</h4>
+          <p>A SimpleBlock element with its Keyframe flag set signals the location of a <a href="#random-access-point">random access point</a> for that track. Media segments containing multiple tracks are only considered a random access point if the first SimpleBlock for each track has its Keyframe flag set. The order of the multiplexed blocks must conform to the <a href="http://www.webmproject.org/code/specs/container/#muxer-guidelines">WebM Muxer Guidelines</a>.</p>
+        </section>
+      </section>
+      
+      <section id="iso" class="nonnormative">
+        <h3><span class="secno">8.2 </span>ISO Base Media File Format Byte Streams</h3>
+        <p>This section defines segment formats for implementations that choose to support the ISO Base Media File Format
+	  <a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip">ISO/IEC 14496-12</a> (ISO BMFF).</p> 
+
+	<section id="iso-init-segments">
+          <h4><span class="secno">8.2.1 </span>Initialization Segments</h4>
+          <p>An ISO BMFF <a href="#init-segment">initialization segment</a> must contain a single Movie Header Box (<span class="iso-box">moov</span>). The tracks in the Movie Header Box must not contain any samples (i.e. the <span class="iso-var">entry_count</span> in the <span class="iso-box">stts</span>, <span class="iso-box">stsc</span> and <span class="iso-box">stco</span> boxes must be set to zero). A Movie Extends (<span class="iso-box">mvex</span>) box must be contained in the
+	    Movie Header Box to indicate that Movie Fragments are to be expected.</p>
+          <p>The <a href="#init-segment">initialization segment</a> may contain Edit Boxes (<span class="iso-box">edts</span>) which provide a mapping of composition times for each track to the global presentation time.</p>
+	</section>
+        
+	<section id="iso-media-segments">
+          <h4><span class="secno">8.2.2 </span>Media Segments</h4>
+          <p>An ISO BMFF <a href="#media-segment">media segment</a> must contain a single Movie Fragment Box (<span class="iso-box">moof</span>) followed by one or more Media Data Boxes (<span class="iso-box">mdat</span>).</p>
+          <p>The following rules apply to ISO BMFF media segments:</p>
+          <ol>
+	    <li>The Movie Fragment Box must contain at least one Track Fragment Box (<span class="iso-box">traf</span>).</li>
+	    <li>The Movie Fragment Box must use movie-fragment relative addressing and the flag <span class="iso-var">default-base-is-moof</span> must be set; absolute byte-offsets must not be used.</li>
+	    <li>External data references must not be used.</li>
+	    <li>If the Movie Fragment contains multiple tracks, the duration by which each track extends should be as close to equal as practical.</li>
+	    <li>Each Track Fragment Box must contain a Track Fragment Decode Time Box (<span class="iso-box">tfdt</span>)</li>
+	    <li>The first sample in each Track Fragment Run Box (<span class="iso-box">trun</span>) must indicate that the sample is a <a href="#random-access-point">random access point</a>.</li>
+	    <li>The Media Data Boxes must contain all the samples referenced by the Track Fragment Run Boxes (<span class="iso-box">trun</span>) of the Movie Fragment Box.</li>
+          </ol>
+	</section>
+
+	<section id="iso-random-access-points">
+          <h4><span class="secno">8.2.3 </span>Random Access Points</h4>
+          <p>A <a href="#random-access-point">random access point</a> as defined in this specification corresponds to a Stream Access Point of type 1 or 2 as defined in Annex I of <a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip">ISO/IEC 14496-12</a>.</p>
+	</section>
+      </section>
+    </section>
+
+    <section id="examples">
+      <!--OddPage--><h2><span class="secno">9. </span>Examples</h2>
+      <p>Example use of the Media Source Extensions</p>
+      <div class="block">
+        <div class="blockContent">
+          <pre class="code">&lt;script&gt;
   function onSourceOpen(videoTag, e) {
     var mediaSource = e.target;
     var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
@@ -1184,10 +1584,10 @@
     var mediaSegment = GetNextMediaSegment();
 
     if (!mediaSegment) {
-       // Error fetching the next media segment.
-       mediaSource.endOfStream("network");
-       return;
-    } 
+      // Error fetching the next media segment.
+      mediaSource.endOfStream("network");
+      return;
+    }
 
     mediaSource.sourceBuffers[0].append(mediaSegment);
   }
@@ -1220,111 +1620,119 @@
   mediaSource.addEventListener('sourceopen', onSourceOpen.bind(this, video));
   video.src = window.URL.createObjectURL(mediaSource);
 &lt;/script&gt;
-        </pre>
+          </pre>
+        </div>
       </div>
-    </div>
+    </section>
 
-    <h2 id="revision-history">10. Revision History</h2>
-    <table>
-      <thead>
-        <tr>
-          <th>Version</th>
-          <th>Comment</th>
-        </tr>
-      </thead>
-      <tbody>
-	<tr>
-	  <td>18 October 2012</td>
-          <td>Refactored SourceBuffer.append() &amp; added SourceBuffer.remove().</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/rev/6d127e69c9f8">8 October 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Defined what HTMLMediaElement.seekable and HTMLMediaElement.buffered should return.</li>
-	      <li>Updated seeking algorithm to run inside Step 10 of the HTMLMediaElement seeking algorithm.</li>
-	      <li>Removed transition from "ended" to "open" in the seeking algorithm.</li>
-	      <li>Clarified all the event targets.</li>
-	    </ul>
-	  </td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/7bab66368f2c/media-source/media-source.html">1 October 2012</a></td>
-          <td>Fixed various addsourcebuffer &amp; removesourcebuffer bugs and allow append() in ended state.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/349559debcc3/media-source/media-source.html">13 September 2012</a></td>
-          <td>Updated endOfStream() behavior to change based on the value of HTMLMediaElement.readyState.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ca093bbbbefb/media-source/media-source.html">24 August 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Added early abort on to duration change algorithm.</li>
-	      <li>Added createObjectURL() IDL &amp; algorithm.</li>
-              <li>Added Track ID &amp; Track description definitions.</li>
-              <li>Rewrote start overlap for audio frames text.</li>
-              <li>Removed rendering silence requirement from section 2.5.</li>
-	    </ul>
-	  </td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/340786fcae83/media-source/media-source.html">22 August 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Clarified WebM byte stream requirements.</li>
-	      <li>Clarified SourceBuffer.buffered return value.</li>
-	      <li>Clarified addsourcebuffer &amp; removesourcebuffer event targets.</li>
-	      <li>Clarified when media source attaches to the HTMLMediaElement.</li>
-	      <li>Introduced duration change algorithm and update relevant algorithms to use it.</li>
-	    </ul>
-	  </td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/032f7b8681d1/media-source/media-source.html">17 August 2012</a></td>
-          <td>Minor editorial fixes.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/29687c019735/media-source/media-source.html">09 August 2012</a></td>
-          <td>Change presentation start time to always be 0 instead of using format specific rules about the first media segment appended.</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/087ea42f59c8/media-source/media-source.html">30 July 2012</a></td>
-          <td>Added SourceBuffer.timestampOffset and MediaSource.duration.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ab36e8e882c6/media-source/media-source.html">17 July 2012</a></td>
-          <td>Replaced SourceBufferList.remove() with MediaSource.removeSourceBuffer().</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/b499a199e427/media-source/media-source.html">02 July 2012</a></td>
-          <td>Converted to the object-oriented API</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/9bbfe09653e4/media-source/media-source.html">26 June 2012</a></td>
-          <td>Converted to Editor's draft.</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/e433598d22a7/media-source/media-source.html">0.5</a></td>
-          <td>Minor updates before proposing to W3C HTML-WG.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.4/draft-spec/mediasource-draft-spec.html">0.4</a></td>
-          <td>Major revision. Adding source IDs, defining buffer model, and clarifying byte stream formats.</td>
-        </tr>
-	<tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.3/draft-spec/mediasource-draft-spec.html">0.3</a></td>
-          <td>Minor text updates.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.2/draft-spec/mediasource-draft-spec.html">0.2</a></td>
-          <td>Updates to reflect initial WebKit implementation.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.1/draft-spec/mediasource-draft-spec.html">0.1</a></td>
-          <td>Initial Proposal</td>
-        </tr>
-      </tbody>
-    </table>
-  </body>
-</html>
+    <section id="revision-history">
+      <!--OddPage--><h2><span class="secno">10. </span>Revision History</h2>
+      <table class="old-table">
+        <thead>
+          <tr>
+            <th>Version</th>
+            <th>Comment</th>
+          </tr>
+        </thead>
+        <tbody>
+          <tr>
+	    <td>09 November 2012</td>
+            <td>Converted document to ReSpec.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/rev/e029f71aafca">18 October 2012</a></td>
+            <td>Refactored SourceBuffer.append() &amp; added SourceBuffer.remove().</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/rev/6d127e69c9f8">8 October 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Defined what HTMLMediaElement.seekable and HTMLMediaElement.buffered should return.</li>
+	        <li>Updated seeking algorithm to run inside Step 10 of the HTMLMediaElement seeking algorithm.</li>
+	        <li>Removed transition from "ended" to "open" in the seeking algorithm.</li>
+	        <li>Clarified all the event targets.</li>
+	      </ul>
+	    </td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/7bab66368f2c/media-source/media-source.html">1 October 2012</a></td>
+            <td>Fixed various addsourcebuffer &amp; removesourcebuffer bugs and allow append() in ended state.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/349559debcc3/media-source/media-source.html">13 September 2012</a></td>
+            <td>Updated endOfStream() behavior to change based on the value of HTMLMediaElement.readyState.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ca093bbbbefb/media-source/media-source.html">24 August 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Added early abort on to duration change algorithm.</li>
+	        <li>Added createObjectURL() IDL &amp; algorithm.</li>
+                <li>Added Track ID &amp; Track description definitions.</li>
+                <li>Rewrote start overlap for audio frames text.</li>
+                <li>Removed rendering silence requirement from section 2.5.</li>
+	      </ul>
+	    </td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/340786fcae83/media-source/media-source.html">22 August 2012</a></td>
+            <td>
+	      <ul>
+	        <li>Clarified WebM byte stream requirements.</li>
+	        <li>Clarified SourceBuffer.buffered return value.</li>
+	        <li>Clarified addsourcebuffer &amp; removesourcebuffer event targets.</li>
+	        <li>Clarified when media source attaches to the HTMLMediaElement.</li>
+	        <li>Introduced duration change algorithm and update relevant algorithms to use it.</li>
+	      </ul>
+	    </td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/032f7b8681d1/media-source/media-source.html">17 August 2012</a></td>
+            <td>Minor editorial fixes.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/29687c019735/media-source/media-source.html">09 August 2012</a></td>
+            <td>Change presentation start time to always be 0 instead of using format specific rules about the first media segment appended.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/087ea42f59c8/media-source/media-source.html">30 July 2012</a></td>
+            <td>Added SourceBuffer.timestampOffset and MediaSource.duration.</td>
+          </tr>
+          <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ab36e8e882c6/media-source/media-source.html">17 July 2012</a></td>
+            <td>Replaced SourceBufferList.remove() with MediaSource.removeSourceBuffer().</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/b499a199e427/media-source/media-source.html">02 July 2012</a></td>
+            <td>Converted to the object-oriented API</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/9bbfe09653e4/media-source/media-source.html">26 June 2012</a></td>
+            <td>Converted to Editor's draft.</td>
+          </tr>
+	  <tr>
+	    <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/e433598d22a7/media-source/media-source.html">0.5</a></td>
+            <td>Minor updates before proposing to <abbr title="World Wide Web Consortium">W3C</abbr> HTML-WG.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.4/draft-spec/mediasource-draft-spec.html">0.4</a></td>
+            <td>Major revision. Adding source IDs, defining buffer model, and clarifying byte stream formats.</td>
+          </tr>
+	  <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.3/draft-spec/mediasource-draft-spec.html">0.3</a></td>
+            <td>Minor text updates.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.2/draft-spec/mediasource-draft-spec.html">0.2</a></td>
+            <td>Updates to reflect initial WebKit implementation.</td>
+          </tr>
+          <tr>
+            <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.1/draft-spec/mediasource-draft-spec.html">0.1</a></td>
+            <td>Initial Proposal</td>
+          </tr>
+        </tbody>
+      </table>
+    </section>
+  
+
+</body></html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/media-source/media-source.js	Thu Nov 08 17:13:35 2012 -0800
@@ -0,0 +1,244 @@
+(function() {
+  function eventdfn_helper(doc, df, id, text) {
+    df.appendChild($("<dfn/>").attr({id: 'dom-evt-' + text.toLowerCase()}).wrapInner($("<code/>").text(text))[0]);
+  }
+
+  function idlref_helper(doc, df, id, text) {
+    df.appendChild($("<code/>").wrapInner($("<a/>").attr({href: "#" + id}).text(text))[0]);
+  }
+
+  function eventref_helper(doc, df, id, text) {
+    df.appendChild($("<code/>").wrapInner($("<a/>").attr({href: "#dom-evt-" + id}).text(text))[0]);
+  }
+
+  function videoref_helper(doc, df, id, text) {
+    link_helper(doc, df, 'http://dev.w3.org/html5/spec/media-elements.html#' + id, text);
+  }
+
+  function code_videoref_helper(doc, df, id, text) {
+    df.appendChild($("<code/>").wrapInner($("<a/>").attr({href: "http://dev.w3.org/html5/spec/media-elements.html#" + id}).text(text))[0]);
+  }
+
+  function fileapi_helper(doc, df, id, text) {
+    link_helper(doc, df, 'http://www.w3.org/TR/FileAPI/#' + id, text);
+  }
+
+  function webappapis_helper(doc, df, id, text) {
+    link_helper(doc, df, 'http://dev.w3.org/html5/spec/webappapis.html#' + id, text);
+  }
+
+  function term_helper(doc, df, id, text) {
+    link_helper(doc, df, '#'+ id, text);
+  }
+
+  function link_helper(doc, df, id, text) {
+    df.appendChild($("<a/>").attr({href: id}).text(text)[0]);
+  }
+
+  function exception_helper(doc, df, id, text) {
+    df.appendChild($("<code/>").wrapInner($("<a/>").attr({href: 'http://dom.spec.whatwg.org/#dom-domexception-' + id}).text(text))[0]);
+  }
+
+  function webmref_helper(doc, df, id, text) {
+    link_helper(doc, df, 'http://www.webmproject.org/code/specs/container/#' + id, text);
+  }
+
+  function queue_and_fire_helper(doc, df, id, text) {
+    webappapis_helper(doc, df, 'queue-a-task', text);
+    df.appendChild(doc.createTextNode(' to '));
+    webappapis_helper(doc, df, 'fire-a-simple-event', 'fire a simple event');
+    df.appendChild(doc.createTextNode(' named'));
+  }
+
+  function fragment_helper(doc, df, id, text) {
+    var f = doc.createDocumentFragment()
+    f.innerHTML = text;
+    df.appendChild(f);
+  }
+
+  var rep = {
+    'sourceBuffers': { func: idlref_helper, fragment: 'widl-MediaSource-sourceBuffers', link_text: 'sourceBuffers',  },
+    'activeSourceBuffers': { func: idlref_helper, fragment: 'widl-MediaSource-activeSourceBuffers', link_text: 'activeSourceBuffers',  },
+    'addSourceBuffer': { func: idlref_helper, fragment: 'widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type', link_text: 'addSourceBuffer()',  },
+    'removeSourceBuffer': { func: idlref_helper, fragment: 'widl-MediaSource-removeSourceBuffer-void-SourceBuffer-sourceBuffer', link_text: 'removeSourceBuffer()',  },
+    'endOfStream': { func: idlref_helper, fragment: 'widl-MediaSource-endOfStream-void-EndOfStreamError-error', link_text: 'endOfStream()',  },
+    'eos-decode': { func: idlref_helper, fragment: 'widl-MediaSource-endOfStream-void-EndOfStreamError-error', link_text: 'endOfStream("decode")',  },
+    'readyState': { func: idlref_helper, fragment: 'widl-MediaSource-readyState', link_text: 'readyState',  },
+    'duration': { func: idlref_helper, fragment: 'widl-MediaSource-duration', link_text: 'duration',  },
+    'append': { func: idlref_helper, fragment: 'widl-SourceBuffer-append-void-Uint8Array-data', link_text: 'append()',  },
+    'abort': { func: idlref_helper, fragment: 'widl-SourceBuffer-abort-void', link_text: 'abort()',  },
+    'buffered': { func: idlref_helper, fragment: 'widl-SourceBuffer-buffered', link_text: 'buffered',  },
+    'timestampOffset': { func: idlref_helper, fragment: 'widl-SourceBuffer-timestampOffset', link_text: 'timestampOffset',  },
+    'length': { func: idlref_helper, fragment: 'widl-SourceBufferList-length', link_text: 'length',  },
+    'createObjectURL': { func: idlref_helper, fragment: 'widl-URL-createObjectURL-DOMString-MediaSource-mediaSource', link_text: 'createObjectURL()',  },
+    'open': { func: idlref_helper, fragment: 'idl-def-ReadyState', link_text: '"open"',  },
+    'closed': { func: idlref_helper, fragment: 'idl-def-ReadyState', link_text: '"closed"',  },
+    'ended': { func: idlref_helper, fragment: 'idl-def-ReadyState', link_text: '"ended"',  },
+    'network': { func: idlref_helper, fragment: 'idl-def-EndOfStreamError', link_text: '"network"',  },
+    'decode': { func: idlref_helper, fragment: 'idl-def-EndOfStreamError', link_text: '"decode"',  },
+
+    'sourceopen': { func: eventref_helper, fragment: 'sourceopen', link_text: 'sourceopen',  },
+    'sourceended': { func: eventref_helper, fragment: 'sourceended', link_text: 'sourceended',  },
+    'sourceclose': { func: eventref_helper, fragment: 'sourceclose', link_text: 'sourceclose',  },
+    'addsourcebuffer': { func: eventref_helper, fragment: 'addsourcebuffer', link_text: 'addsourcebuffer',  },
+    'removesourcebuffer': { func: eventref_helper, fragment: 'removesourcebuffer', link_text: 'removesourcebuffer',  },
+
+    'active-source-buffers': { func: term_helper, fragment: 'active-source-buffers', link_text: 'active source buffers', },
+    'source-buffers': { func: term_helper, fragment: 'source-buffer', link_text: 'source buffers', },
+    'source-buffer': { func: term_helper, fragment: 'source-buffer', link_text: 'source buffer', },
+    'source-buffers': { func: term_helper, fragment: 'source-buffer', link_text: 'source buffers', },
+    'track-buffer': { func: term_helper, fragment: 'track-buffer', link_text: 'track buffer', },
+    'track-buffers': { func: term_helper, fragment: 'track-buffer', link_text: 'track buffers', },
+    'init-segment': { func: term_helper, fragment: 'init-segment', link_text: 'initialization segment', },
+    'init-segments': { func: term_helper, fragment: 'init-segment', link_text: 'initialization segments', },
+    'media-segment': { func: term_helper, fragment: 'media-segment', link_text: 'media segment', },
+    'media-segments': { func: term_helper, fragment: 'media-segment', link_text: 'media segments', },
+    'presentation-start-time': { func: term_helper, fragment: 'presentation-start-time', link_text: 'presentation start time', },
+    'random-access-point': { func: term_helper, fragment: 'random-access-point', link_text: 'random access point', },
+    'random-access-points': { func: term_helper, fragment: 'random-access-point', link_text: 'random access points', },
+    'track-id': { func: term_helper, fragment: 'track-id', link_text: 'Track ID', },
+    'track-ids': { func: term_helper, fragment: 'track-id', link_text: 'Track IDs', },
+    'track-description': { func: term_helper, fragment: 'track-description', link_text: 'track description', },
+    'coded-frame': { func: term_helper, fragment: 'coded-frame', link_text: 'coded frame', },
+    'coded-frames': { func: term_helper, fragment: 'coded-frame', link_text: 'coded frames', },
+    'parent-media-source': { func: term_helper, fragment: 'parent-media-source', link_text: 'parent media source', },
+
+    'duration-change-algorithm': { func: link_helper, fragment: '#duration-change-algorithm', link_text: 'duration change algorithm', },
+    'segment-parser-loop': { func: link_helper, fragment: '#sourcebuffer-segment-parser-loop', link_text: 'segment parser loop', },
+    'append-state': { func: link_helper, fragment: '#sourcebuffer-append-state', link_text: 'append state', },
+    'waiting-for-segment': { func: link_helper, fragment: '#sourcebuffer-waiting-for-segment', link_text: 'WAITING_FOR_SEGMENT', },
+    'parsing-init-segment': { func: link_helper, fragment: '#sourcebuffer-parsing-init-segment', link_text: 'PARSING_INIT_SEGMENT', },
+    'parsing-media-segment': { func: link_helper, fragment: '#sourcebuffer-parsing-media-segment', link_text: 'PARSING_MEDIA_SEGMENT', },
+    'byte-stream-format-specs': { func: link_helper, fragment: '#byte-stream-formats', link_text: 'byte stream format specifications', },
+    'init-segment-received-algorithm': { func: link_helper, fragment: '#sourcebuffer-init-segment-received', link_text: 'initialization segment received algorithm', },
+    'coded-frame-processing-algorithm': { func: link_helper, fragment: '#sourcebuffer-coded-frame-processing', link_text: 'coded frame processing algorithm', },
+    'input-buffer': { func: link_helper, fragment: '#sourcebuffer-input-buffer', link_text: 'input buffer', },
+    'MediaSource-object-URL': { func: link_helper, fragment: '#mediasource-object-url', link_text: 'MediaSource object URL', },
+
+    'FileAPI': { func: fileapi_helper, fragment: '', link_text: 'File API',  },
+    'blob-uri': { func: fileapi_helper, fragment: 'url', link_text: 'Blob URI',  },
+    'File': { func: fileapi_helper, fragment: 'dfn-file', link_text: 'File',  },
+    'Blob': { func: fileapi_helper, fragment: 'dfn-blob', link_text: 'Blob',  },
+    'file-createObjectURL': { func: fileapi_helper, fragment: 'dfn-createObjectURL', link_text: 'createObjectURL()',  },
+    'file-revokeObjectURL': { func: fileapi_helper, fragment: 'dfn-revokeObjectURL', link_text: 'revokeObjectURL()',  },
+
+    'eventdfn': { func: eventdfn_helper, fragment: '', link_text: '', },
+
+    'videoref': { func: videoref_helper, fragment: '', link_text: '', },
+    'resource-fetch-algorithm': { func: videoref_helper, fragment: 'concept-media-load-resource', link_text: 'resource fetch algorithm',  },
+    'intrinsic-width-and-height': { func: videoref_helper, fragment: 'concept-video-intrinsic-width', link_text: 'intrinsic width and height',  },
+    'normalized-timeranges-object': { func: videoref_helper, fragment: 'normalized-timeranges-object', link_text: 'normalized TimeRanges object',  },
+    'media-data-is-corrupted': { func: videoref_helper, fragment: 'fatal-decode-error', link_text: 'media data is corrupted',  },
+    'media-err-decode': { func: code_videoref_helper, fragment: 'dom-mediaerror-media_err_decode', link_text: 'MediaError.MEDIA_ERR_DECODE',  },
+    'media-src': { func: code_videoref_helper, fragment: 'attr-media-src', link_text: 'src',  },
+    'timerange': { func: code_videoref_helper, fragment: 'timeranges', link_text: 'TimeRange',  },
+    'timeranges': { func: code_videoref_helper, fragment: 'timeranges', link_text: 'TimeRanges',  },
+    'video-track': { func: code_videoref_helper, fragment: 'videotrack', link_text: 'VideoTrack',  },
+    'videotracks': { func: code_videoref_helper, fragment: 'dom-media-videotracks', link_text: 'videoTracks',  },
+    'audio-track': { func: code_videoref_helper, fragment: 'audiotrack', link_text: 'AudioTrack',  },
+    'audio-tracks': { func: code_videoref_helper, fragment: 'audiotrack', link_text: 'AudioTracks',  },
+    'audiotracks': { func: code_videoref_helper, fragment: 'dom-media-audiotracks', link_text: 'audioTracks',  },
+    'text-track': { func: code_videoref_helper, fragment: 'texttrack', link_text: 'TextTrack',  },
+    'texttracks': { func: code_videoref_helper, fragment: 'dom-media-texttracks', link_text: 'textTracks',  },
+    'ready-state': { func: code_videoref_helper, fragment: 'dom-media-readystate', link_text: 'HTMLMediaElement.readyState',  },
+    'have-nothing': { func: code_videoref_helper, fragment: 'dom-media-have_nothing', link_text: 'HAVE_NOTHING',  },
+    'have-metadata': { func: code_videoref_helper, fragment: 'dom-media-have_metadata', link_text: 'HAVE_METADATA',  },
+    'have-current-data': { func: code_videoref_helper, fragment: 'dom-media-have_current_data', link_text: 'HAVE_CURRENT_DATA',  },
+    'have-future-data': { func: code_videoref_helper, fragment: 'dom-media-have_future_data', link_text: 'HAVE_FUTURE_DATA',  },
+    'have-enough-data': { func: code_videoref_helper, fragment: 'dom-media-have_enough_data', link_text: 'HAVE_ENOUGH_DATA',  },
+    'loadedmetadata': { func: code_videoref_helper, fragment: 'event-media-loadedmetadata', link_text: 'loadedmetadata',  },
+    'loadeddata': { func: code_videoref_helper, fragment: 'event-media-loadeddata', link_text: 'loadeddata',  },
+    'canplay': { func: code_videoref_helper, fragment: 'event-media-canplay', link_text: 'canplay',  },
+    'canplaythrough': { func: code_videoref_helper, fragment: 'event-media-canplaythrough', link_text: 'canplaythrough',  },
+    'hme-duration': { func: code_videoref_helper, fragment: 'media-controller-duration', link_text: 'media controller duration',  },
+    'hme-buffered': { func: code_videoref_helper, fragment: 'dom-media-buffered', link_text: 'HTMLMediaElement.buffered',  },
+    'hme-seek-algorithm': { func: videoref_helper, fragment: 'dom-media-seek', link_text: 'seek algorithm',  },
+    'hme-duration-change-algorithm': { func: videoref_helper, fragment: 'durationChange', link_text: 'HTMLMediaElement duration change algorithm',  },
+
+    'invalid-access-err': { func: exception_helper, fragment: 'invalid_access_err', link_text: 'INVALID_ACCESS_ERR',  },
+    'invalid-state-err': { func: exception_helper, fragment: 'invalid_state_err', link_text: 'INVALID_STATE_ERR',  },
+    'not-found-err': { func: exception_helper, fragment: 'not_found_err', link_text: 'NOT_FOUND_ERR',  },
+    'not-supported-err': { func: exception_helper, fragment: 'not_supported_err', link_text: 'NOT_SUPPORTED_ERR',  },
+    'quota-exceeded-err': { func: exception_helper, fragment: 'quota_exceeded_err', link_text: 'QUOTA_EXCEEDED_ERR',  },
+
+    'queue-a-task-to-fire-an-event-named': { func: queue_and_fire_helper, fragment: '', link_text: 'queue a task',  },
+    'Queue-a-task-to-fire-an-event-named': { func: queue_and_fire_helper, fragment: '', link_text: 'Queue a task',  },
+    'provide-a-stable-state': { func: webappapis_helper, fragment: 'provide-a-stable-state', link_text: 'provide a stable state',  },
+
+    'webm-spec': { func: webmref_helper, fragment: 'webm-guidelines', link_text: 'WebM spec',  },
+    'webm-ebml-header': { func: webmref_helper, fragment: 'ebml-basics', link_text: 'EBML Header',  },
+    'webm-segment': { func: webmref_helper, fragment: 'segment', link_text: 'Segment',  },
+    'webm-info': { func: webmref_helper, fragment: 'segment-information', link_text: 'Segment Information',  },
+    'webm-tracks': { func: webmref_helper, fragment: 'track', link_text: 'Tracks',  },
+    'webm-cues': { func: webmref_helper, fragment: 'cueing-data', link_text: 'Cues',  },
+    'webm-chapters': { func: webmref_helper, fragment: 'chapters', link_text: 'Chapters',  },
+    'webm-cluster': { func: webmref_helper, fragment: 'cluster', link_text: 'Cluster',  },
+    'webm-muxer-guidelines': { func: webmref_helper, fragment: 'muxer-guidelines', link_text: 'WebM Muxer Guidelines',  },
+    'webm-init-segment': { func: link_helper, fragment: '#webm-init-segments', link_text: 'WebM initialization segment', },
+
+    'iso-14496-12': { func: link_helper, fragment: 'http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip', link_text: 'ISO/IEC 14496-12', },
+
+    'media-data-cannot-be-fetched': { func: fragment_helper, fragment: '', link_text: '&quot;<i>If the media data cannot be fetched at all, due to network errors, causing the user agent to give up trying to fetch the resource</i>&quot;', },
+  };
+
+  function mediaSourcePostProcessor() {
+    var doc = document;
+    doc.normalize();
+
+    var usedMap = {};
+
+    $("a[def-id]").each(function () {
+      var $ant = $(this);
+      var def_id = $ant.attr('def-id');
+      var info = rep[def_id];
+      if (info) {
+	if (!usedMap[def_id]) {
+	  usedMap[def_id] = 1;
+	} else {
+	  usedMap[def_id]++;
+	}
+
+	var id = info.fragment;
+	var text = info.link_text;
+
+	if ($ant.attr('name')) {
+	  id = $ant.attr('name');
+	}
+
+	var element_text = this.innerHTML;
+	if (element_text) {
+	  text = element_text;
+	}
+
+	var df = doc.createDocumentFragment();
+        info.func(doc, df, id, text);
+	this.parentNode.replaceChild(df, this);
+
+      } else {
+        console.log("Found def-id '" + def_id + "' but it does not correspond to anything");
+      }
+    });
+
+    // Validate that all defined def-ids are actually used.
+    for (var k in rep) {
+      if (!usedMap[k]) {
+	console.log("def-id '" + k + "' never used.");
+      }
+    }
+
+    $("a[href]").each(function () {
+      var link = $(this);
+      var href = link.attr('href');
+      var matched = /^#(.+)$/.exec(href);
+      if (matched) {
+	if (!document.querySelector(href)) {
+	  console.log("Internal link to an id '" + matched[1] + "' which does not exist");
+	}
+      }
+    });
+
+    return;
+  }
+
+  window.mediaSourcePostProcessor = mediaSourcePostProcessor;
+})();
\ No newline at end of file
--- a/media-source/media-source.xml	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1241 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <title>Media Source Extensions</title>
-    <link rel="stylesheet" href="video-working-draft.css" />
-    <link rel="stylesheet" href="main.css" />
-    <link type="text/css" rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/w3c-ed.css" />
-    <style type="text/css">
-          <!-- For discussion of open issues. -->
-          .issue {
-          padding:    1em;
-          margin: 1em 0em 0em;
-          border: 1px solid #f00;
-          background: #fcc;
-          }
-          .issue::before {
-          content:    "Issue";
-          display:    block;
-          width:  150px;
-          margin: -1.5em 0 0.5em 0;
-          font-weight:    bold;
-          border: 1px solid #f00;
-          background: #fff;
-          padding:    3px 1em;
-          }
-
-	  div.nonnormative { color: green; margin: 2em 0 2em 0em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
-	  .nonnormative:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This section is non-normative.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
-
-	  <!-- Copied from video-working-draft.css .domintro -->
-	  .example { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
-	  hr + dl.example, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
-	  dl.example dt, dl.domintro dt * { color: black; text-decoration: none; }
-	  dl.example dd { margin: 0.5em 0 1em 2em; padding: 0; }
-	  dl.example dd p { margin: 0.5em 0; }
-
-	  .example:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
-    </style>
-  </head>
-  <body>
-    <div class="head">
-      <p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" width="72" height="48" /></a></p>
-      <h1>Media Source Extensions</h1>
-      <h2>W3C Editor's Draft 18 October 2012</h2>
-      <dl>
-	<dt>Latest published version:</dt>
-	<dd>Not yet published</dd>
-	<dt>Latest editor's draft:</dt>
-	<dd><a href="http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html">http://dvcs.w3.org/hg/html-media/raw-file/tip/media-source/media-source.html</a></dd>
-	<dt>Editors:</dt>
-	<dd>Aaron Colwell, Google, Inc.</dd>
-	<dd>Adrian Bateman, Microsoft Corporation</dd>
-	<dd>Mark Watson, Netflix, Inc.</dd>
-	<dt>Bug/Issue lists:</dt>
-	<dd><a href='http://w3.org/brief/Mjcw'>Bugzilla</a>, <a href='http://www.w3.org/html/wg/tracker/products/20'>Tracker</a></dd>
-	<dt>Discussion list:</dt>
-	<dd><a href='http://lists.w3.org/Archives/Public/public-html-media/'>public-html-media@w3.org</a></dd>
-	<dt>Test Suite:</dt>
-	<dd>None yet</dd>
-
-      </dl>
-    </div>
-    <p class="copyright"><a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#Copyright">Copyright</a> &#169; 2012 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>&#174;</sup> (<a href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/2002/ipr-notice-20021231#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>
-
-    <h2>Status of this Document</h2>
-      
-    <p><em>
-      This section describes the status of this document at the time of its publication. Other documents may supersede this document.
-      A list of current W3C publications and the latest revision of this technical report can be found in the
-      <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/.
-    </em></p>
-
-    <p>
-      This document was published by the <a href="http://www.w3.org/html/wg/">HTML working group</a> as an Editor's Draft.
-      Please submit comments regarding this document by using the W3C's (<a href="https://www.w3.org/Bugs/Public/enter_bug.cgi?product=HTML%20WG&amp;component=Media%20Source%20Extensions">public bug database</a>) with the product set to <kbd>HTML WG</kbd> and the component set to
-      <kbd>Media Source Extensions</kbd>.
-      If you cannot access the bug database, submit comments to <a href="mailto:public-html-media@w3.org">public-html-media@w3.org</a>
-      (<a href="mailto:public-html-media-request@w3.org?subject=subscribe">subscribe</a>,
-      <a href="http://lists.w3.org/Archives/Public/public-html-media/">archives</a>) and arrangements will be made to transpose the comments to the bug database.
-      All feedback is welcome.
-    </p>
-
-    <p>
-      Publication as a Editor's Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated,
-      replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
-    </p>
-    <p>
-      This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>.
-      W3C maintains a <a href="http://www.w3.org/2004/01/pp-impl/40318/status" rel="disclosure">public list of any patent disclosures</a> made in connection with
-      the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which
-      the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the
-      information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section 6 of the W3C Patent Policy</a>.
-    </p>     
-
-    <h2>Abstract</h2>
-    <p>
-      This proposal extends HTMLMediaElement to allow 
-      JavaScript to generate media streams for playback. 
-      Allowing JavaScript to generate streams facilitates a variety of use 
-      cases like adaptive streaming and time shifting live streams.
-    </p>
-
-    <h2>Table of Contents</h2>
-
-    <ul id="toc" class="toc">
-      <li><a href="#introduction">1. Introduction</a></li>
-      <li>
-	<ul>
-	  <li><a href="#goals">1.1 Goals</a></li>
-	  <li><a href="#definitions">1.2 Definitions</a></li>
-	</ul>
-      </li>
-      <li><a href="#source-buffer-model">2. Source Buffer Model</a></li>
-      <li>
-	<ul>
-	  <li><a href="#source-buffer-create">2.1. Creating Source Buffers</a></li>
-	  <li><a href="#source-buffer-remove">2.2. Removing Source Buffers</a></li>
-	  <li><a href="#source-buffer-basic-append">2.3. Basic appending model</a></li>
-	  <li><a href="#source-buffer-init-segment-constraints">2.4.  Initialization Segment constraints</a></li>
-	  <li><a href="#source-buffer-media-segment-constraints">2.5. Media Segment constraints</a></li>
-	  <li><a href="#source-buffer-first-init-segment">2.6. Appending the first Initialization Segment</a></li>
-	  <li><a href="#source-buffer-media-segment-unbuffered">2.7. Appending a Media Segment to an unbuffered region</a></li>
-	  <li><a href="#source-buffer-overlapping-segments">2.8. Appending a Media Segment over a buffered region</a></li>
-	  <li><a href="#source-buffer-to-track-buffer">2.9. Source Buffer to Track Buffer transfer</a></li>
-	  <li><a href="#source-buffer-segment-eviction">2.10. Media Segment Eviction</a></li>
-	  <li><a href="#source-buffer-timestamp-offsets">2.11. Applying Timestamp Offsets</a></li>
-	</ul>
-      </li>
-      <li><a href="#mediasource">3. MediaSource Object</a>
-	<ul>
-	  <li><a href="#mediasource-methods">3.1. Methods and Attributes</a></li>
-	  <li><a href="#mediasource-events">3.2. Event Summary</a></li>
-	  <li><a href="#mediasource-algorithms">3.3. Algorithms</a></li>
-	</ul>
-      </li>
-      <li><a href="#sourcebuffer">4. SourceBuffer Object</a>
-        <ul>
-	  <li><a href="#sourcebuffer-methods">4.1. Methods and Attributes</a></li>
-	  <li><a href="#sourcebuffer-algorithms">4.2. Algorithms</a></li>
-	</ul>
-      </li>
-
-      <li><a href="#sourcebufferlist">5. SourceBufferList Object</a>
-	<ul>
-	  <li><a href="#sourcebufferlist-methods">5.1. Methods and Attributes</a></li>
-	  <li><a href="#sourcebufferlist-events">5.2. Event Summary</a></li>
-	</ul>
-      </li>
-      <li><a href="#url">6. URL Object</a>
-	<ul>
-	  <li><a href="#url-methods">6.1. Methods</a></li>
-	</ul>
-      </li>
-      <li><a href="#htmlmediaelement-attributes">7. HTMLMediaElement attributes</a></li>
-      <li><a href="#byte-stream-formats">8. Byte Stream Formats</a></li>
-      <li>
-	<ul>
-	  <li><a href="#webm">8.1 WebM</a></li>
-	  <li><a href="#iso">8.2 ISO Base Media File Format</a></li>
-	</ul>
-      </li>
-      <li><a href="#examples">9. Examples</a></li>
-      <li><a href="#revision-history">10. Revision History</a></li>
-    </ul>
-
-    <h2 id="introduction">1. Introduction</h2>
-    <p>This proposal allows JavaScript to dynamically construct media streams for &lt;audio&gt; and &lt;video&gt;. 
-       It defines objects that allow JavaScript to pass media segments to an <videoref name="htmlmediaelement">HTMLMediaElement</videoref>.
-       A buffering model is also included to describe how the user agent should act when different media segments are 
-       appended at different times. Byte stream specifications for WebM &amp; ISO Base Media File Format are given to specify the
-       expected format of media segments used with these extensions.</p>
-    <img src="pipeline_model.png" />
-
-    <h3 id="goals">1.1. Goals</h3>
-    <p>This proposal was designed with the following goals in mind:</p>
-    <ul>
-      <li>Allow JavaScript to construct media streams independent of how the media is fetched.</li>
-      <li>Define a splicing and buffering model that facilitates use cases like adaptive streaming, ad-insertion, time-shifting, and video editing.</li>
-      <li>Minimize the need for media parsing in JavaScript.</li>
-      <li>Leverage the browser cache as much as possible.</li>
-      <li>Provide byte stream definitions for WebM &amp; the ISO Base Media File Format.</li>
-      <li>Not require support for any particular media format or codec.</li>
-    </ul>
-
-    <h3 id="definitions">1.2. Definitions</h3>
-
-    <h4 id="init-segment">1.2.1. Initialization Segment</h4>
-    <p>A sequence of bytes that contains all of the initialization information required to decode a sequence of <media-segments/>. This includes codec initialization data, <track-id/> mappings for multiplexed segments, and timestamp offsets (e.g. edit lists).</p>
-
-    <dl class="example">
-      <p>Container specific examples of initialization segments:</p>
-      <dt>ISO Base Media File Format</dt>
-      <dd>A <iso-box>moov</iso-box> box.</dd>
-      <dt>WebM</dt>
-      <dd>The concatenation of the the EBML Header, Segment Header, Info element, and Tracks element.</dd>
-    </dl>
-
-    <h4 id="media-segment">1.2.2. Media Segment</h4>
-    <p>A sequence of bytes that contain packetized &amp; timestamped media data for a portion of the presentation timeline. Media segments are always associated with the most recently appended <init-segment/>.</p>
-
-    <dl class="domintro">
-      <p>Container specific examples of media segments:</p>
-      <dt>ISO Base Media File Format</dt>
-      <dd>A <iso-box>moof</iso-box> box followed by one or more <iso-box>mdat</iso-box> boxes.</dd>
-      <dt>WebM</dt>
-      <dd>A Cluster element</dd>
-    </dl>
-
-    <h4 id="source-buffer">1.2.3. Source Buffer</h4>
-    <p>A hypothetical buffer that contains a distinct sequence of <init-segments/> &amp; <media-segments/>. When <media-segments/> are passed to <append/> they update the state of this buffer. The source buffer only allows a single <media-segment/> to cover a specific point in the presentation timeline of each track. If a <media-segment/> gets appended that contains media data overlapping (in presentation time) with media data from an existing segment, then the new media data will override the old media data. Since <media-segments/> depend on <init-segments/> the source buffer is also responsible for maintaining these associations. During playback, the media element pulls segment data out of the source buffers, demultiplexes it if necessary, and enqueues it into <track-buffers/> so it will get decoded and displayed. <buffered/> describes the time ranges that are covered by <media-segments/> in the source buffer.</p>
-
-    <h4 id="active-source-buffers">1.2.4. Active Source Buffers</h4>
-    <p>The set of <source-buffers/> that are providing the <videoref name="dom-videotrack-selected">selected video track</videoref>, the <videoref name="dom-audiotrack-enabled">enabled audio tracks</videoref>, and the <videoref name="dom-texttrack-showing">&quot;showing&quot;</videoref> or <videoref name="dom-texttrack-hidden">&quot;hidden&quot;</videoref> text tracks. This is a subset of all the source buffers associated with a specific <MediaSource/> object. See <a href="#active-source-buffer-changes">Changes to selected/enabled track state</a> for details.</p>
-
-
-    <h4 id="track-buffer">1.2.5. Track Buffer</h4>
-    <p>A hypothetical buffer that represents initialization and media data for a single <audio-track/>, <video-track/>, or <text-track/> that has been queued for playback. This buffer may not exist in actual implementations, but it is intended to represent media data that will be decoded no matter what <media-segments/> are appended to update the <source-buffer/>. This distinction is important when considering appends that happen close to the current playback position. See <a href="#source-buffer-to-track-buffer">Source Buffer to Track Buffer transfer</a> for details.</p>
-
-
-    <h4 id="random-access-point">1.2.6. Random Access Point</h4>
-    <p>A position in a <media-segment/> where decoding and continuous playback can begin without relying on any previous data in the segment. For video this tends to be the location of I-frames. In the case of audio, most audio frames can be treated as a random access point. Since video tracks tend to have a more sparse distribution of random access points, the location of these points are usually considered the random access points for multiplexed streams.</p>
-
-    <h4 id="presentation-start-time">1.2.7. Presentation Start Time</h4>
-    <p>The presentation start time is the earliest time point in the presentation and specifies the <videoref name="initial-playback-position">initial playback position</videoref> and <videoref name="earliest-possible-position">earliest possible position</videoref>. All presentations created using this specification have a presentation start time of 0. Appending <media-segments/> with negative timestamps will cause playback to terminate with a <media-err-decode/> error unless <timestampOffset/> is used to make the timestamps greater than or equal to 0.</p>
-
-    <h4 id="mediasource-object-url">1.2.8. MediaSource object URL</h4>
-    <p>A MediaSource object URL is a unique <blob-uri/> created by <createObjectURL/>. It is used to attach a <MediaSource/> object to an HTMLMediaElement.</p>
-    <p>These URLs are the same as what the <FileAPI/> specification calls a <blob-uri/>, except that anything in the definition of that feature that refers to <File/> and <Blob/> objects is hereby extended to also apply to <MediaSource/> objects.</p>
-
-    <h4 id="track-id">1.2.9. Track ID</h4>
-    <p>A Track ID is a byte stream format specific identifier that marks sections of the byte stream as being part of a specific track. The Track ID in a <track-description/> identifies which sections of a <media-segment/> belong to that track.</p>
-    
-   <h4 id="track-description">1.2.10. Track Description</h4>
-   <p>A byte stream format specific structure that provides the <track-id/>, codec configuration, and other metadata for a single track. Each track description inside a single <init-segment/> must have a unique <track-id/>.</p>
-
-   <h4 id="coded-frame">1.2.11. Coded Frame</h4>
-   <p>A unit of compressed media data that has a presentation timestamp and  decode timestamp. The presentation timestamp indicates when the frame should be rendered. The decode timestamp indicates when the frame needs to be decoded. If frames can be decoded out of order, then the decode timestamp must be present in the bytestream. If frames cannot be decoded out of order and a decode timestamp is not present in the bytestream, then the decode timestamp is equal to the presentation timestamp.</p>
-
-
-    <h2 id="source-buffer-model">2. Source Buffer Model</h2>
-    <p>The subsections below outline the buffering model for this proposal. It describes how to add and remove <source-buffers/> from the presentation and describes the various rules and behaviors associated with appending data to an individual <source-buffer/>. At the highest level, the web application simply creates <source-buffers/> and appends a sequence of <init-segments/> and <media-segments/> to update the buffer's state. The media element pulls media data out of the <source-buffers/>, plays it, and fires events just like it would if a normal URL was passed to the <media-src/> attribute. The web application is expected to monitor media element events to determine when it needs to append more <media-segments/>.</p>
-
-    <h3 id="source-buffer-create">2.1. Creating Source Buffers</h3>
-    <p><SourceBuffer/> objects can be created once a <MediaSource/> object enters the <open/> state. The application calls <addSourceBuffer/> with a type string that indicates the format of the data it intends to append to the new SourceBuffer. If the user agent supports the format and has sufficient resources, a new <SourceBuffer/> object is created, added to <sourceBuffers/>, and returned by the method. If the user agent doesn't support the specified format or can't support another <SourceBuffer/> then it will throw an appropriate exception to signal why the request couldn't be satisfied.</p>
-
-    <h3 id="source-buffer-remove">2.2. Removing Source Buffers</h3>
-    <p>Removing a <SourceBuffer/> with <removeSourceBuffer/> releases all resources associated with the object. This includes destroying the all the segment data, <track-buffers/>, and decoders. The media element will also remove the appropriate tracks from <audiotracks/>, <videotracks/>,  &amp; <texttracks/> and fire the necessary <videoref name="handler-tracklist-onchange">change</videoref> events. Playback may become degraded or stop if the currently selected <video-track/> or the only enabled <audio-tracks/> are removed.</p>
-
-    <h3 id="source-buffer-basic-append">2.3. Basic appending model</h3>
-    <p>Updating the state of a <source-buffer/> requires appending at least one <init-segment/> and one or more <media-segments/> via <append/>. The following list outlines some of the basic rules for appending segments.
-      <ul>
-	<li>The first segment appended must be an <init-segment/>.</li>
-	<li>All <media-segments/> are associated with the most recently appended <init-segment/>.</li>
-	<li>A whole segment must be appended before another segment can be started unless <abort/> is called.</li>
-	<li>Segments can be appended in pieces. (i.e. A 4096 byte segment can be spread across four 1024 byte calls to <append/>).</li>
-	<li>If a <media-segment/> requires different configuration information (e.g. codec parameters, new <track-ids/>, metadata) from what is in the most recently appended <init-segment/>, a new <init-segment/> with the new configuration information must be appended before the <media-segment/> requiring this information is appended.</li>
-	<li>A new <media-segment/> can overlap, in presentation time, a segment that was previously appended. The new segment will override the previous data.</li>
-	<li>Media segments can be appended in any order.<br/>Note: In practice finite buffer space and maintaining uninterrupted playback will bias appending towards time increasing order near the current playback position. Out of order appends facilitate adaptive streaming, ad insertion, and video editing use cases.</li>
-	<li>The media element may start copying data from a <media-segment/> to the <track-buffers/> before the entire segment has been appended. This prevents unnecessary delays for <media-segments/> that cover a large time range.</li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-init-segment-constraints">2.4. Initialization Segment constraints</h3>
-    <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <init-segments/> that are appended to a specific <SourceBuffer/>:
-      <ul>
-	<li>The number and type of tracks must be consistent across all <init-segments/>. <br/>For example, if the first <init-segment/> has 2 audio tracks and 1 video track, then all <init-segments/> that follow, for this <SourceBuffer/> must describe 2 audio tracks and 1 video track.</li>
-	<li><track-ids/> do not need to be the same across <init-segments/> only if the segment describes one track of each type.<br/> For example, if an <init-segment/> describes a single audio track and a single video track, the internal <track-ids/> do not need to be the same.</li>
-	<li><track-ids/> must be the same across <init-segments/> if multiple tracks for a single type are described. (e.g. 2 audio tracks).</li>
-	<li>Codecs changes are not allowed. <br/> For example, you can't have an <init-segment/> that specifies a single AAC track and then follows it with one that contains AMR-WB. Support for multiple codecs is handled with multiple <SourceBuffer/> objects.</li>
-	<li>Video frame size changes are allowed and must be supported seamlessly.<br/> Note: This will cause the &lt;video&gt; display region to change size if you don't use CSS or HTML attributes (width/height) to constrain the element size.</li>
-	<li>Audio channel count changes are allowed, but they may not be seamless and could trigger downmixing.<br/> Note: This is a quality of implementation issue because changing the channel count may require reinitializing the audio device, resamplers, and channel mixers which tends to be audible.</li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-media-segment-constraints">2.5. Media Segment constraints</h3>
-    <p>To simplify the implementation and facilitate interoperability, a few constraints are placed on the <media-segments/> that are appended to a specific <SourceBuffer/>:
-      <ul>
-	<li>All timestamps must be mapped to the same presentation timeline.</li>
-	<li>Segments must start with a <random-access-point/> to facilitate seamless splicing at the segment boundary.</li>
-	<li>Gaps between <media-segments/> that are smaller than the audio frame size are allowed and must not cause playback to stall. Such gaps must not be reflected by <buffered/>.
-	  <p class="note">Note: This is intended to simplify switching between audio streams where the frame boundaries don't always line up across encodings (e.g. Vorbis).</p></li>
-      </ul>
-    </p>
-
-    <h3 id="source-buffer-first-init-segment">2.6. Appending the first Initialization Segment</h3>
-    <p>Once a new <SourceBuffer/> has been created, it expects an <init-segment/> to be appended first. This first segment indicates the number and type of streams contained in the <media-segments/> that follow. This allows the media element to configure the necessary decoders and output devices. This first segment can also cause a <ready-state/> transition to <have-metadata/> if this is the first <SourceBuffer/>, or if it is the first track of a specific type (i.e. first audio, first video track, or first text track). If neither of the conditions hold then the tracks for this new <SourceBuffer/> will just appear as disabled tracks and won't affect the current <ready-state/> until they are selected. The media element will also add the appropriate tracks to the <audiotracks/>, <videotracks/>, &amp; <texttracks/> collections and fire the necessary <videoref name="handler-tracklist-onchange">change</videoref> events. The description for <append/> contains all the details.</p>
-    
-    <h3 id="source-buffer-media-segment-unbuffered">2.7. Appending a Media Segment to an unbuffered region</h3>
-    <p>If a <media-segment/> is appended to a time range that is not covered by existing segments in the <source-buffer/>, then its data is copied directly into the <source-buffer/>. Addition of this data may trigger <ready-state/> transitions depending on what other data is buffered and whether the media element has determined if it can start playback. Calls to <buffered/> will always reflect the current <timeranges/> buffered in the <SourceBuffer/>.</p>
-
-    <h3 id="source-buffer-overlapping-segments">2.8. Appending a Media Segment over a buffered region</h3>
-    <p>There are several ways that <media-segments/> can overlap segments in the <source-buffer/>. Behavior for the different overlap situations are described below. If more than one overlap applies, then the <a href="#source-buffer-overlap-start">start overlap</a> gets resolved first, followed by any <a href="#source-buffer-overlap-complete">complete overlaps</a>, and finally the <a href="#source-buffer-overlap-end">end overlap</a>. If a segment contains multiple tracks then the overlap is resolved independently for each track.</p>
-
-    <h4 id="source-buffer-overlap-complete">2.8.1 Complete Overlap</h4>
-    <img src="complete_overlap.png"/>
-    <p>The figure above shows how the <source-buffer/> gets updated when a new <media-segment/> completely overlaps a segment in the buffer. In this case, the new segment completely replaces the old segment.</p>
-
-    <h4 id="source-buffer-overlap-start">2.8.2 Start Overlap</h4>
-    <img src="start_overlap.png"/>
-    <p>The figure above shows how the <source-buffer/> gets updated when the beginning of a new <media-segment/> overlaps a segment in the buffer. In this case the new segment replaces all the old media data in the overlapping region. Since <media-segments/> are constrained to starting with <random-access-points/>, this provides a seamless transition between segments.</p>
-    <p>When an audio frame in the <source-buffer/> overlaps with the start of the new <media-segment/> special behavior is required. At a minimum implementations must support dropping the old audio frame that overlaps the start of the new segment and insert silence for the small gap that is created. Higher quality implementations may support crossfading or crosslapping between the overlapping audio frames. No matter which strategy is implemented, no gaps are created in the ranges reported by <buffered/> and playback must never stall at the overlap.</p>
-
-    <h4 id="source-buffer-overlap-end">2.8.3 End Overlap</h4>
-    <img src="end_overlap.png"/>
-    <p>The figure above shows how the <source-buffer/> gets updated when the end of a new <media-segment/> overlaps a segment in the buffer. In this case, the media element tries to keep as much of the old segment as possible. The amount saved depends on where the closest <random-access-point/>, in the old segment, is to the end of the new segment. In the case of audio, if the gap is smaller than the size of an audio frame, then the media element should insert silence for this gap and not reflect it in <buffered/>.</p>
-      <p>An implementation may keep old segment data before the end of the new segment to avoid creating a gap if it wishes. Doing this though can significantly increase implementation complexity and could cause delays at the splice point. The key property that must be preserved is the entirety of the new segment gets added to the <source-buffer/> and it is up to the implementation how much of the old segment data is retained. The web application can use <buffered/> to determine how much of the old segment was preserved.</p>
-
-    <h4 id="source-buffer-overlap-middle">2.8.4 Middle Overlap</h4>
-    <img src="middle_overlap.png"/>
-    <p>The figure above shows how the <source-buffer/> gets updated when the new <media-segment/> is in the middle of the old segment. This condition is handled by first resolving the <a href="#source-buffer-overlap-start">start overlap</a> and then resolving the <a href="#source-buffer-overlap-end">end overlap</a>.</p>
-
-    <h3 id="source-buffer-to-track-buffer">2.9. Source Buffer to Track Buffer transfer</h3>
-    <p>The <source-buffer/> represents the media that the web application would like the media element to play. The <track-buffer/> contains the data that will actually get decoded and rendered. In most cases the <track-buffer/> will simply contain a subset of the <source-buffer/> near the current playback position. These two buffers start to diverge though when <media-segments/> that overlap or are very close to the current playback position are appended. Depending on the contents of the new <media-segment/> it may not be possible to switch to the new data immediately because there isn't a <random-access-point/> close enough to the current playback position. The quality of the implementation determines how much data is considered "in the <track-buffer/>". It should transfer data to the <track-buffer/> as late as possible whilst maintaining seamless playback. Some implementations may be able to instantiate multiple decoders or decode the new data significantly faster than real-time to achieve a seamless splice immediately. Other implementations may delay until the next <random-access-point/> before switching to the newly appended data. Notice that this difference in behavior is only observable when appending close to the current playback position. The <track-buffer/> represents a media subsegment, like a group of pictures or something with similar decode dependencies, that the media element commits to playing. This commitment may be influenced by a variety of things like limited decoding resources, hardware decode buffers, a jitter buffer, or the desire to limit implementation complexity.</p>
-    
-    <p>Here is an example to help clarify the role of the <track-buffer/>. Say the current playback position has a timestamp of 8 and the media element pulled frames with timestamp 9 &amp; 10 into the track buffer. The web application then appends a higher quality <media-segment/> that starts with a <random-access-point/> at timestamp 9. The <source-buffer/> will get updated with the higher quality data, but the media element won't be able to switch to this higher quality data until the next <random-access-point/> at timestamp 20. This is because a frame for timestamp 9 is already in the track buffer. As you can see the track buffer represents the "point of no return." for decoding. If a seek occurs the media element may choose to use the higher quality data since a seek might imply flushing the <track-buffer/> and the user expects a break in playback.</p>
-
-
-    <h3 id="source-buffer-segment-eviction">2.10. Media Segment Eviction</h3>
-    <p>When a new <media-segment/> is appended, memory constraints may cause previously appended segments to get evicted from the <source-buffer/>. The eviction algorithm is implementation dependent, but segments that aren't likely to be needed soon are the most likely to get evicted. The <buffered/> attribute allows the web application to monitor what time ranges are currently buffered in the <source-buffer/>.</p>
-
-    <h3 id="source-buffer-timestamp-offsets">2.11. Applying Timestamp Offsets</h3>
-    <p>For some use cases like ad-insertion or seamless playlists, the web application may want to insert a <media-segment/> in the presentation timeline at a location that is different than what the internal timestamps indicate. This can be accomplished by using the <timestampOffset/> attribute on the <SourceBuffer/> object. The value of <timestampOffset/> is added to all timestamps inside a <media-segment/> before the contents of that segment are added to the <source-buffer/>. The <timestampOffset/> applies to an entire media segment. An exception is thrown if the application tries to update the attribute when only part of a media segment has been appended. Both positive or negative offsets can be assigned to <timestampOffset/>. If an offset causes a <media-segment/> timestamp to get converted to a time before the <presentation-start-time/>, playback will terminate with a <media-err-decode/> error.</p>
-
-    <p>Here is a simple example to clarify how <timestampOffset/> can be used. Say I have two sounds I want to play in sequence. The first sound is 5 seconds long and the second one is 10 seconds. Both sound files have timestamps that start at 0. First append the <init-segment/> and all <media-segments/> for the first sound. Now set <timestampOffset/> to 5 seconds. Finally append the <init-segment/> and <media-segments/> for the second sound. This will result in a 15 second presentation that plays the two sounds in sequence.</p>
-
-    <h2 id="mediasource">3. MediaSource Object</h2>
-    <p>The MediaSource object represents a source of media data for an HTMLMediaElement. It keeps track of the <readyState/> for this source as well as a list of <SourceBuffer/> objects that can be used to add media data to the presentation. MediaSource objects are created by the web application and then attached to an HTMLMediaElement. The application uses the <SourceBuffer/> objects in <sourceBuffers/> to add media data to this source. The HTMLMediaElement fetches this media data from the <MediaSource/> object when it is needed during playback.</p>
-
-    <pre class="idl">
-[Constructor]
-interface <dfn id="dom-mediasource">MediaSource</dfn> : EventTarget {
-  // All the source buffers created by this object.
-  readonly attribute <precoderef>SourceBufferList</precoderef> <precoderef>sourceBuffers</precoderef>;
-
-  // Subset of sourceBuffers that provide data for the selected/enabled tracks.
-  readonly attribute <precoderef>SourceBufferList</precoderef> <precoderef>activeSourceBuffers</precoderef>;
-
-  attribute unrestricted double <precoderef>duration</precoderef>;
-
-  <precoderef>SourceBuffer</precoderef> <premethodref>addSourceBuffer</premethodref>(DOMString type);
-  void <premethodref>removeSourceBuffer</premethodref>(<precoderef>SourceBuffer</precoderef> sourceBuffer);
-
-  enum State { "closed", "open", "ended" };
-  readonly attribute State <precoderef>readyState</precoderef>;
-
-  enum EndOfStreamError { "network", "decode" };
-  void <premethodref>endOfStream</premethodref>(optional EndOfStreamError error);
-};
-    </pre>
-    <h3 id="mediasource-methods">3.1. Methods and Attributes</h3>
-    
-    <p>The <codedfn>sourceBuffers</codedfn> attribute contains the list of <SourceBuffer/> objects associated with this <MediaSource/>. When <readyState/> equals <closed/> this list will be empty. Once <readyState/> transitions to <open/> SourceBuffer objects can be added to this list by using <addSourceBuffer/>.</p>
-
-    <p>The <codedfn>activeSourceBuffers</codedfn> attribute contains the subset of <sourceBuffers/> that represents the <active-source-buffers/>.</p>
-
-    <p>The <codedfn>duration</codedfn> attribute allows the web application to set the presentation duration. The duration is initially set to NaN when the <MediaSource/> object is created.</p>
-    <p>On getting, run the following steps:</p>
-    <ol>
-      <li>If the <readyState/> attribute is <closed/> then return NaN and abort these steps.</li>
-      <li>Return the current value of the attribute.</li>
-    </ol>
-    <p>On setting, run the following steps:</p>
-    <ol>
-      <li>If the value being set is negative or NaN then throw an <invalid-access-err/> exception and abort these steps.</li>
-      <li>If the <readyState/> attribute is not <open/> then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>Run the <duration-change-algorithm/> with <new-duration/> set to the value being set.
-	<p class="note">Note: <append/> and <endOfStream/> can update the duration under certain circumstances.</p>
-      </li>
-    </ol>
-
-    <p>The <methoddfn name="addSourceBuffer">addSourceBuffer(<var title="true">type</var>)</methoddfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">type</var> is null or an empty string then throw an <invalid-access-err/> exception and abort these steps.</li>
-      <li>If <var title="true">type</var> contains a MIME type that is not supported or contains a MIME type that is not supported with the types specified for the other <SourceBuffer/> objects in <sourceBuffers/>, then throw a <not-supported-err/> exception and abort these steps.</li>
-      <li>If the user agent can't handle any more SourceBuffer objects then throw a <quota-exceeded-err/> exception and abort these steps.</li>
-      <li>If the <readyState/> attribute is not in the <open/> state then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>Create a new <SourceBuffer/> object and associated resources.</li>
-      <li>Add the new object to <sourceBuffers/> and <queue-a-task-to-fire-an-event-named/> <addsourcebuffer/> at <sourceBuffers/>.</li>
-      <li>Return the new object.</li>
-    </ol>
-    <p>The <methoddfn name="removeSourceBuffer">removeSourceBuffer(<var title="true">sourceBuffer</var>)</methoddfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">sourceBuffer</var> is null then throw an <invalid-access-err/> exception and abort these steps.</li>
-      <li>If <var title="true">sourceBuffer</var> specifies an object that is not in <sourceBuffers/> then throw a <not-found-err/> exception and abort these steps.</li>
-      <li>Remove track information from <audiotracks/>, <videotracks/>, and <texttracks/> for all tracks associated with <var title="true">sourceBuffer</var> and <queue-a-task-to-fire-an-event-named/> <videoref name="handler-tracklist-onchange">change</videoref> at the modified lists.</li>
-      <li>If <var title="true">sourceBuffer</var> is in <activeSourceBuffers/>, then remove it from <activeSourceBuffers/> and <queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <activeSourceBuffers/>.</li>
-      <li>Remove <var title="true">sourceBuffer</var> from <sourceBuffers/> and <queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <sourceBuffers/>.</li>
-      <li>Destroy all resources for <var title="true">sourceBuffer</var>.</li>
-    </ol>
-
-
-    <p>The <codedfn>readyState</codedfn> attribute indicates the current state of the <MediaSource/> object. It can have the following values:</p>
-    <dl>
-      <dt><codedfn>&quot;closed&quot;</codedfn></dt>
-      <dd>Indicates the source is not currently attached to a media element.</dd>
-
-      <dt><codedfn>&quot;open&quot;</codedfn></dt>
-      <dd>The source has been opened by a media element and is ready for data to be appended to the <SourceBuffer/> objects in <sourceBuffers/>.</dd>
-
-      <dt><codedfn>&quot;ended&quot;</codedfn></dt>
-      <dd>The source is still attached to a media element, but <methodref>endOfStream</methodref> has been called. Appending data to <SourceBuffer/> objects in this state is not allowed.</dd>
-    </dl>
-    <p>When the <MediaSource/> is created <readyState/> must be set to <closed/>.
-    </p>
-
-
-    <h5>End of stream error values:</h5>
-    <dl>
-      <dt><codedfn>&quot;network&quot;</codedfn></dt>
-      <dd>Terminates playback and signals that a network error has occured.</dd> 
-      <p class="note">Note: If the JavaScript fetching media data encounters a network error it should use this status code to terminate playback.</p>
-
-      <dt><codedfn>&quot;decode&quot;</codedfn></dt>
-      <dd>Terminates playback and signals that a decoding error has occured.</dd>
-      <p class="note">Note: If the JavaScript code fetching media data has problems parsing the data it should use this status code to terminate playback.</p>
-    </dl>
-
-    <p>The <methoddfn name="endOfStream">endOfStream(<var title="true">error</var>)</methoddfn> method must run the following steps:</p>
-    <ol>
-      <li>If the <readyState/> attribute is not in the <open/> state then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>Change the <readyState/> attribute value to <ended/>.</li>
-      <li><Queue-a-task-to-fire-an-event-named/> <sourceended/> at the <MediaSource/>.</li>
-      <dl class="switch">
-          <dt>If <var title="true">error</var> is not set, null, or an empty string</dt>
-          <dd>
-	    <ol>
-	      <li>Run the <duration-change-algorithm/> with <new-duration/> set to the highest end timestamp across all <SourceBuffer/> objects in <sourceBuffers/>.<br/>
-		<p class="note">Note: This allows the duration to properly reflect the end of the appended media segments. For example, if the duration was explicitly set to 10 seconds and only media segments for 0 to 5 seconds were appended before endOfStream() was called, then the duration will get updated to 5 seconds.</p>
-	      </li>
-	      <li>Notify the media element that it now has all of the media data. Playback should continue until all the media passed in via <append/> has been played.</li>
-	    </ol>
-	  </dd>
-          <dt>If <var title="true">error</var> is set to <coderef>&quot;network&quot;</coderef></dt>
-          <dd>
-	    <dl class="switch">
-	      <dt>If the <ready-state/> attribute equals <have-nothing/></dt>
-	      <dd>Run the <media-data-cannot-be-fetched/> steps of the <resource-fetch-algorithm/>.</dd>
-	      <dt>If the <ready-state/> attribute is greater than <have-nothing/></dt>
-	      <dd>Run the &quot;<i>If the connection is interrupted after some media data has been received, causing the user agent to give up trying to fetch the resource</i>&quot; steps of the <resource-fetch-algorithm/>.</dd>
-	    </dl>
-	  </dd>
-          <dt>If <var title="true">error</var> is set to <coderef>&quot;decode&quot;</coderef></dt>
-          <dd>
-	    <dl class="switch">
-	      <dt>If the <ready-state/> attribute equals <have-nothing/></dt>
-	      <dd>Run the &quot;<i>If the media data can be fetched but is found by inspection to be in an unsupported format, or can otherwise not be rendered at all</i>&quot; steps of the <resource-fetch-algorithm/>.</dd>
-	      <dt>If the <ready-state/> attribute is greater than <have-nothing/></dt>
-	      <dd>Run the <media-data-is-corrupted/> steps of the <resource-fetch-algorithm/>.</dd>
-	    </dl>
-	  </dd>
-          <dt>Otherwise</dt>
-          <dd>Throw an <invalid-access-err/> exception.</dd>
-        </dl>
-    </ol>
-
-
-    <h3 id="mediasource-events">3.2. Event Summary</h3>
-    <table>
-      <thead>
-        <tr>
-          <th>Event name</th>
-          <th>Interface</th>
-          <th>Dispatched when...</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><eventdfn>sourceopen</eventdfn></td>
-          <td><code>Event</code></td>
-          <td>When <readyState/> transitions from <closed/> to <open/> or from <ended/> to <open/>.</td>
-        </tr>
-        <tr>
-          <td><eventdfn>sourceended</eventdfn></td>
-          <td><code>Event</code></td>
-          <td>When <readyState/> transitions from <open/> to <ended/>.</td>
-        </tr>
-        <tr>
-          <td><eventdfn>sourceclose</eventdfn></td>
-          <td><code>Event</code></td>
-	  <td>When <readyState/> transitions from <open/> to <closed/> or <ended/> to <closed/>.</td>
-        </tr>
-      </tbody>
-    </table>
-
-    <h3 id="mediasource-algorithms">3.3. Algorithms</h3>
-    <h4 id="mediasource-attach">3.3.1 Attaching to a media element</h4>
-    <p> A <MediaSource/> object can be attached to a media element by assigning a <MediaSource-object-URL/> to the media element <media-src/> attribute or the src attribute of a &lt;source&gt; inside a media element. A <MediaSource-object-URL/> is created by passing a MediaSource object to <createObjectURL/>.</p>
-    <p>If the <resource-fetch-algorithm/> absolute URL matches the MediaSource object URL, run the following steps right before the "Perform a potentially
-CORS-enabled fetch" step in the <resource-fetch-algorithm/>.</p>
-    <ol>
-      <dl class="switch">
-        <dt>If <readyState/> is NOT set to <closed/></dt>
-        <dd>Run the <media-data-cannot-be-fetched/> steps of the <resource-fetch-algorithm/>.</dd>
-        <dt>Otherwise</dt>
-        <dd>
-          <ol>
-            <li>Set the <readyState/> attribute to <open/>.</li>
-            <li><Queue-a-task-to-fire-an-event-named/> <sourceopen/> at the <MediaSource/>.</li>
-            <li>Allow the <resource-fetch-algorithm/> to progress based on data passed in via <append/>.</li>
-          </ol>
-        </dd>
-      </dl>
-    </ol>
-
-    <h4 id="mediasource-detach">3.3.2 Detaching from a media element</h4>
-    <p>The following steps are run in any case where the media element is going to transition to <videoref name="dom-media-network_empty">NETWORK_EMPTY</videoref> and <queue-a-task-to-fire-an-event-named/> <videoref name="event-mediacontroller-emptied">emptied</videoref> at the media element. These steps should be run right before the transition.</p>
-    <ol>
-      <li>Set the <readyState/> attribute to <closed/>.</li>
-      <li>Set the <duration/> attribute to NaN.</li>
-      <li>Remove all the <SourceBuffer/> objects from <activeSourceBuffers/>.</li>
-      <li><Queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <activeSourceBuffers/>.</li>
-      <li>Remove all the <SourceBuffer/> objects from <sourceBuffers/>.</li>
-      <li><Queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <sourceBuffers/>.</li>
-      <li><Queue-a-task-to-fire-an-event-named/> <sourceclose/> at the <MediaSource/>.</li>
-    </ol>
-
-    <h4 id="mediasource-seeking">3.3.3 Seeking</h4>
-    <p>Run the following steps as part of the &quot;<i>Wait until the user agent has established whether or not the media data for the new playback position is available, and, if it is, until it has decoded enough data to play back that position&quot;</i> step of the <hme-seek-algorithm/>:</p>
-    <ol>
-      <li>The media element looks for <media-segments/> containing the <var title="true">new playback position</var> in each <SourceBuffer/> object in <activeSourceBuffers/>.</li>
-      <dl class="switch">
-	<dt>If one or more of the objects in <activeSourceBuffers/> is missing <media-segments/> for the <var title="true">new playback position</var></dt>
-	<dd>
-	  <ol>
-	    <li>Set the <ready-state/> attribute to <have-metadata/>.</li>
-	    <li>The media element waits for the necessary <media-segments/> to be passed to <append/>. The web application can use <buffered/> to determine what the media element needs to resume playback.</li>
-	  </ol>
-	</dd>
-	<dt>Otherwise</dt>
-	<dd>Continue</dd>
-      </dl>
-      <li>The media element resets all decoders and initializes each one with data from the appropriate <init-segment/>.</li>
-      <li>The media element feeds data from the <media-segments/> into the decoders until the <var title="true">new playback position</var> is reached.</li>
-      <li>Resume the <hme-seek-algorithm/> at the &quot;<i>Await a stable state</i>&quot; step.</li>
-    </ol>
-
-
-    <h4 id="buffer-monitoring">3.3.4 SourceBuffer Monitoring</h4>
-    <p>The following steps are periodically run during playback to make sure that all of the <SourceBuffer/> objects in <activeSourceBuffers/> have enough data to ensure uninterrupted playback. Appending new segments and changes to <activeSourceBuffers/> also cause these steps to run because they affect the conditions that trigger state transitions. The web application can monitor changes in <ready-state/> to drive <media-segment/> appending.</p>
-    <dl class="switch">
-      <dt>If <buffered/> for all objects in <activeSourceBuffers/> do not contain <timeranges/> for the current playback position:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-metadata/>.</li>
-	  <li>If this is the first transition to <have-metadata/>, then <queue-a-task-to-fire-an-event-named/> <loadedmetadata/> at the media element.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <buffered/> for all objects in <activeSourceBuffers/> contain <timeranges/> that include the current playback position and enough data to ensure uninterrupted playback:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-enough-data/>.</li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <canplaythrough/> at the media element.</li>
-	  <li>Playback may resume at this point if it was previously suspended by a transition to <have-current-data/>.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <buffered/> for at least one object in <activeSourceBuffers/> contains a <timerange/> that includes the current playback position but not enough data to ensure uninterrupted playback:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-future-data/>.</li>
-	  <li>If the previous value of <ready-state/> was less than <have-future-data/>, then <queue-a-task-to-fire-an-event-named/> <canplay/> at the media element.</li>
-	  <li>Playback may resume at this point if it was previously suspended by a transition to <have-current-data/>.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-      <dt>If <buffered/> for at least one object in <activeSourceBuffers/> contains a <timerange/> that ends at the current playback position and does not have a range covering the time immediately after the current position:</dt>
-      <dd>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-current-data/>.</li>
-	  <li>If this is the first transition to <have-current-data/>, then <queue-a-task-to-fire-an-event-named/> <loadeddata/> at the media element.</li>
-	  <li>Playback is suspended at this point since the media element doesn't have enough data to advance the timeline.</li>
-	  <li>Abort these steps.</li>
-	</ol>
-      </dd>
-    </dl>
-
-    <h4 id="active-source-buffer-changes">3.3.5 Changes to selected/enabled track state</h4>
-    <p>During playback <activeSourceBuffers/> needs to be updated if the <videoref name="dom-videotrack-selected">selected video track</videoref>, the <videoref name="dom-audiotrack-enabled">enabled audio tracks</videoref>, or a text track <videoref name="dom-texttrack-mode">mode</videoref> changes. When one or more of these changes occur the following steps need to be followed.</p>
-    <dl class="switch">
-      <dt>If the selected video track changes:</dt>
-      <dd>
-	<ol>
-	  <li>If the <SourceBuffer/> associated with the previously selected video track is not associated with any other enabled tracks, run the following steps:
-  	  <ol>
-	    <li>Remove the <SourceBuffer/> from <activeSourceBuffers/>.</li>
-	    <li><Queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <activeSourceBuffers/></li>
-	  </ol>
-	  </li>
-	  <li>If the <SourceBuffer/> associated with the newly selected video track is not already in <activeSourceBuffers/>, run the following steps:
-	  <ol>
-	    <li>Add the <SourceBuffer/> to <activeSourceBuffers/>.</li>
-	    <li><Queue-a-task-to-fire-an-event-named/> <addsourcebuffer/> at <activeSourceBuffers/></li>
-	  </ol>
-	  </li>
-	</ol>
-      </dd>
-      <dt>If an audio track becomes disabled and the <SourceBuffer/> associated with this track is not associated with any other enabled or selected track</dt>
-      <dd>
-	<ol>
-	  <li>Remove the <SourceBuffer/> associated with the audio track from <activeSourceBuffers/></li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <activeSourceBuffers/></li>
-	</ol>
-      </dd>
-      <dt>If an audio track becomes enabled and the <SourceBuffer/> associated with this track is not already in <activeSourceBuffers/></dt>
-      <dd>
-	<ol>
-	  <li>Add the <SourceBuffer/> associated with the audio track to <activeSourceBuffers/></li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <addsourcebuffer/> at <activeSourceBuffers/></li>
-	</ol>
-      </dd>
-      <dt>If a text track <videoref name="dom-texttrack-mode">mode</videoref> becomes <videoref name="dom-texttrack-disabled">&quot;disabled&quot;</videoref> and the <SourceBuffer/> associated with this track is not associated with any other enabled or selected track</dt>
-      <dd>
-	<ol>
-	  <li>Remove the <SourceBuffer/> associated with the text track from <activeSourceBuffers/></li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <removesourcebuffer/> at <activeSourceBuffers/></li>
-	</ol>
-      </dd>
-      <dt>If a text track <videoref name="dom-texttrack-mode">mode</videoref> becomes <videoref name="dom-texttrack-showing">&quot;showing&quot;</videoref> or <videoref name="dom-texttrack-hidden">&quot;hidden&quot;</videoref> and the <SourceBuffer/> associated with this track is not already in <activeSourceBuffers/></dt>
-      <dd>
-	<ol>
-	  <li>Add the <SourceBuffer/> associated with the text track to <activeSourceBuffers/></li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <addsourcebuffer/> at <activeSourceBuffers/></li>
-	</ol>
-      </dd>
-    </dl>
-
-    <h4 id="duration-change-algorithm">3.3.6 Duration change</h4>
-    <p>Follow these steps when <duration/> needs to change to a <new-duration/>.</p>
-    <ol>
-      <li>If the current value of <duration/> is equal to <new-duration/>, then abort these steps.</li>
-      <li>Update <duration/> to <new-duration/>.</li>
-      <li>Remove all media data with timestamps that are greater than <new-duration/> from all <SourceBuffer/> objects in <sourceBuffers/>.
-      <p class="note">Note: This preserves audio frames that start before and end after the <duration/>. The user agent must end playback at <duration/> even if the audio frame extends beyond this time.</p>
-      </li>
-      <li>Update the <hme-duration/> to <new-duration/> and run the <hme-duration-change-algorithm/>.</li>
-    </ol>
-
-   <h2 id="sourcebuffer">4. SourceBuffer Object</h2>
-   <pre class="idl">
-interface <dfn id="dom-sourcebuffer">SourceBuffer</dfn> : EventTarget {
-  // Returns the time ranges buffered.
-  readonly attribute TimeRanges <precoderef>buffered</precoderef>;
-
-  // Applies an offset to media segment timestamps.
-  attribute double <precoderef>timestampOffset</precoderef>;
-
-  // Append segment data.
-  void <premethodref>append</premethodref>(Uint8Array data);
-
-  // Abort the current segment append sequence.
-  void <premethodref>abort</premethodref>();
-
-  // Remove media for a specific time range.
-  void <premethodref>remove</premethodref>(double start, double end);
-};
-   </pre>
-   <h3 id="sourcebuffer-methods">4.1. Methods and Attributes</h3>
-
-   <p>The <dfn id="sourcebuffer-parent-media-source">parent media source</dfn> of a <SourceBuffer/> object is the <MediaSource/> object that created it.</p>
-
-   <p>The <codedfn>buffered</codedfn> attribute indicates what <timeranges/> are buffered in the <SourceBuffer/>. When the attribute is read the following steps must occur:</p>
-   <ol>
-     <li>If this object has been removed from the <sourceBuffers/> attribute of the <parent-media-source/> then throw an <invalid-state-err/> exception and abort these steps.</li>
-     <li>Return a new static <normalized-timeranges-object/> for the <media-segments/> buffered.</li>
-   </ol>
-
-   <p>The <codedfn>timestampOffset</codedfn> attribute controls the offset applied to timestamps inside subsequent <media-segments/> that are appended to this <SourceBuffer/>. The <timestampOffset/> is initially set to 0 which indicates that no offset is being applied. On getting, the initial value or the last value that was successfully set is returned. On setting, run following steps:</p>
-   <ol>
-     <li>If this object has been removed from the <sourceBuffers/> attribute of the <parent-media-source/>, then throw an <invalid-state-err/> exception and abort these steps.</li>
-     <li>If the <readyState/> attribute of the <parent-media-source/> is not in the <open/> state, then throw an <invalid-state-err/> exception and abort these steps.</li>
-     <li>If this object is waiting for the end of a <media-segment/> to be appended, then throw an <invalid-state-err/> and abort these steps.</li>
-     <li>Update the attribute to the new value.</li>
-   </ol>
-
-   <p>The <methoddfn name="append">append(<var title="true">data</var>)</methoddfn> method must run the following steps:</p>
-   <ol>
-     <li>If <var title="true">data</var> is null then throw an <invalid-access-err/> exception and abort these steps.</li>
-     <li>If this object has been removed from the <sourceBuffers/> attribute of the <parent-media-source/> then throw an <invalid-state-err/> exception and abort these steps.</li>
-     <li>If the <readyState/> attribute of the <parent-media-source/> is in the <closed/> state then throw an <invalid-state-err/> exception and abort these steps.</li>
-     <li>
-       <p>If the <readyState/> attribute of the <parent-media-source/> is in the <ended/> state then run the following steps:</p>
-       <ol>
-	 <li>Set the <readyState/> attribute of the <parent-media-source/> to <open/></li>
-	 <li><Queue-a-task-to-fire-an-event-named/> <sourceopen/> at the <parent-media-source/> .</li>
-       </ol>
-     </li>
-     <li>If <var title="true">data</var>.byteLength is 0 abort these steps.</li>
-     <li>Add <var title="true">data</var> to the end of the <input-buffer/></li>
-     <li>Run the <segment-parser-loop/>.</li>
-   </ol>
-
-    <p>The <methoddfn name="abort">abort()</methoddfn> method must run the following steps:</p>
-    <ol>
-      <li>If this object has been removed from the <sourceBuffers/> attribute of the <parent-media-source/> then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>If the <readyState/> attribute of the <parent-media-source/> is not in the <open/> state then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>The media element aborts parsing the current segment.</li>
-      <li>If the <append-state/> equals <parsing-media-segment/> and the <input-buffer/> contains some complete <coded-frames/>, then run the <coded-frame-processing-algorithm/> as if the media segment only contained these frames.</li>
-      <li>Remove all bytes from the <input-buffer/>.</li>
-      <li>Set <append-state/> to <waiting-for-segment/>.</li>
-    </ol>
-
-    <p>The <methoddfn name="remove">remove(<var title="true">start</var>, <var title="true">end</var>)</methoddfn> method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">start</var> is negative or greater than <duration/>, then throw an <invalid-access-err/> exception and abort these steps.</li>
-      <li>If <var title="true">end</var> is less than or equal to <var title="true">start</var>, then throw an <invalid-access-err/> exception and abort these steps.</li>
-      <li>If this object has been removed from the <sourceBuffers/> attribute of the <parent-media-source/> then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li>If the <readyState/> attribute of the <parent-media-source/> is not in the <open/> state then throw an <invalid-state-err/> exception and abort these steps.</li>
-      <li><p>For each track in this source buffer, run the following steps:</p>
-        <ol>
-	  <li>
-	    <p>Let <var title="true">next random access point timestamp</var> be the timestamp of the next <random-access-point/>, for this track, that is greater than or equal to <var title="true">end</var>.</p>
-	    <p class="note">Note: <var title="true">next random access point timestamp</var> can be different across tracks because the dependencies between <coded-frames/> within a track are usually different than the dependencies in another track.</p></li>
-	  <li>Remove all media data, for this track, that contain starting timestamps greater than or equal to <var title="true">start</var> and less than the <var title="true">next random access point timestamp</var>.</li>
-	</ol>
-      </li>
-      
-    </ol>
-
-    <h3 id="sourcebuffer-algorithms">4.2. Algorithms</h3>
-
-    <h4 id="sourcebuffer-segment-parser-loop">4.2.1 Segment Parser Loop</h4>
-    <p>All SourceBuffer objects have an internal <dfn id="sourcebuffer-append-state">append state</dfn> variable that keeps track of the high-level segment parsing state. It is initially set to <waiting-for-segment/> and can transition to the following states as data is appended.</p>
-    <table>
-      <thead>
-	<tr>
-          <th>Append state name</th>
-          <th>Description</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><dfn id="sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</dfn></td>
-          <td>Waiting for the start of an <init-segment/> or <media-segment/> to be appended.</td>
-        </tr>
-        <tr>
-          <td><dfn id="sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</dfn></td>
-          <td>Currently parsing an <init-segment/>.</td>
-        </tr>
-	<tr>
-	  <td><dfn id="sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</dfn></td>
-          <td>Currently parsing a <media-segment/>.</td>
-        </tr>
-      </tbody>
-    </table>
-    
-    <p>The <dfn id="sourcebuffer-input-buffer">input buffer</dfn> is a byte buffer that is used to hold unparsed bytes across <append/> calls. The buffer is empty when the SourceBuffer object is created.</p>
-
-    <p>While the <input-buffer/> is not empty, run the following steps in a loop:</p>
-    <ol>
-      <li>If the <input-buffer/> starts with bytes that violate the <byte-stream-format-specs/>, then call <eos-decode/>, and abort this algorithm.</li>
-      <li>Remove any bytes that the <byte-stream-format-specs/> say should be ignored from the start of the <input-buffer/>.</li>
-      <li>
-	<p>If the <append-state/> equals <waiting-for-segment/>, then run the following steps:</p>
-	<ol>
-	  <li>If the beginning of the <input-buffer/> indicates the start of an <init-segment/>, set the <append-state/> to <parsing-init-segment/>.</li>
-	  <li>If the beginning of the <input-buffer/> indicates the start of an <media-segment/>, set <append-state/> to <parsing-media-segment/>.</li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <append-state/> equals <parsing-init-segment/>, then run the following steps:</p>
-	<ol>
-	  <li>If the <input-buffer/> does not contain a complete <init-segment/> yet, then exit the loop.</li>
-	  <li>Run the <init-segment-received-algorithm/>.</li>
-	  <li>Remove the <init-segment/> bytes from the beginning of the <input-buffer/>.</li>
-	  <li>Set <append-state/> to <waiting-for-segment/>.</li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <append-state/> equals <parsing-media-segment/>, then run the following steps:</p>
-	<ol>
-	  <li>
-	    <p>If the <input-buffer/> does not contain a complete <media-segment/> header yet, then exit the loop.</p>
-	    <p class="note">Note: Implementations may choose to implement this state as an incremental parser so that it is not necessary to have the entire media segment before running the <coded-frame-processing-algorithm/>.</p>
-	  </li>
-	  <li>Run the <coded-frame-processing-algorithm/>.</li>
-	  <li>Remove the <media-segment/> bytes from the beginning of the <input-buffer/>.</li>
-	  <li>
-	    <p>Set <append-state/> to <waiting-for-segment/>.</p>
-	    <p class="note">Note: Incremental parsers should only do this transition after the entire media segment has been received.</p>
-	  </li>
-	  <li>Return  to the top of the loop.</li>
-	</ol>
-      </li>
-    </ol>
-
-    <h4 id="sourcebuffer-init-segment-received">4.2.2 Initialization Segment Received</h4>
-    <p>The following steps are run when the <segment-parser-loop/> successfully parses a complete <init-segment/>:</p>
-    <ol>
-      <li>Update the <duration/> attribute if it currently equals NaN:</li>
-      <dl class="switch">
-	<dt>If the initialization segment contains a duration:</dt>
-	<dd>Run the <duration-change-algorithm/> with <new-duration/> set to the duration in the initialization segment.</dd>
-	<dt>Otherwise:</dt>
-	<dd>Run the <duration-change-algorithm/> with <new-duration/> set to positive Infinity.</dd>
-      </dl>
-      <li>Handle state transitions:</li>
-      <dl class="switch">
-	<dt>If the <ready-state/> attribute is <have-nothing/>:</dt>
-	<dd>
-	  <ol>
-	    <li>Set the <ready-state/> attribute to <have-metadata/>.</li>
-	    <li><Queue-a-task-to-fire-an-event-named/>  <loadedmetadata/> at the media element.</li>
-	  </ol>
-	</dd>
-	<dt>If the <ready-state/> attribute is greater than <have-current-data/> and the <init-segment/> contains the first video or first audio track in the presentation:</dt>
-	<dd>
-	  Set the <ready-state/> attribute to <have-metadata/>.
-	</dd>
-	<dt>Otherwise:</dt>
-	<dd>Continue</dd>
-      </dl>
-      <li>Update <audiotracks/></li>
-      <dl class="switch">
-	<dt>If <init-segment/> contains the first audio track:</dt>
-	<dd>
-	  <ol>
-	    <li>Add an <audio-track/> and mark it as enabled.</li>
-	    <li>Add this <SourceBuffer/> to <activeSourceBuffers/>.</li>
-	  </ol>
-	</dd>
-	<dt>If <init-segment/> contains audio tracks beyond those already in the presentation:</dt>
-	<dd>Add a disabled <audio-track/> for each audio track in the <init-segment/>.</dd>
-      </dl>
-      <li>Update <videotracks/>:</li>
-      <dl class="switch">
-	<dt>If <init-segment/> contains the first video track:</dt>
-	<dd>
-	  <ol>
-	    <li>Add a <video-track/> and mark it as selected.</li>
-	    <li>Add this <SourceBuffer/> to <activeSourceBuffers/>.</li>
-	  </ol>
-	</dd>
-	<dt>If <init-segment/> contains the video tracks beyond those already in the presentation:</dt>
-	<dd>Add a disabled <video-track/> for each video track in the <init-segment/>.</dd>
-      </dl>
-      <li>Update <texttracks/></li>
-      <dl class="switch">
-	<dd>
-	  <ol>
-	    <li>Add a <text-track/> for each text track in the <init-segment/>.</li>
-	    <li>If the text track <videoref name="dom-texttrack-mode">mode</videoref> is <videoref name="dom-texttrack-showing">&quot;showing&quot;</videoref> or <videoref name="dom-texttrack-hidden">&quot;hidden&quot;</videoref> then add this <SourceBuffer/> to <activeSourceBuffers/>.</li>
-	  </ol>
-	</dd>
-      </dl>
-    </ol>
-
-    <h4 id="sourcebuffer-coded-frame-processing">4.2.3 Coded Frame Processing</h4>
-    <p>When a complete <coded-frame/> has been parsed by the <segment-parser-loop/> then the following steps are run:</p>
-    <ol>
-      <li>
-	<p>For each <coded-frame/> in the <media-segment/> run the following steps:</p>
-	<ol>
-	  <li>Let <var title="true">presentation timestamp</var> be a double precision floating point representation of the coded frame's presentation timestamp.</li>
-	  <li>Let <var title="true">decode timestamp</var> be a double precision floating point representation of the coded frame's decode timestamp.</li>
-	  <li>
-	    <p>If <timestampOffset/> is not 0, then run the following steps:</p>
-	    <ol>
-	      <li>Add <timestampOffset/> to the <var title="true">presentation timestamp</var>.</li>
-	      <li>Add <timestampOffset/> to the <var title="true">decode timestamp</var>.</li>
-	      <li>If the <var title="true">presentation timestamp</var> or <var title="true">decode timestamp</var> is less than the <presentation-start-time/>, then call <eos-decode/>, and abort these steps.</li>
-	    </ol>
-	  </li>
-	  <li>Add the <coded-frame/> with the <var title="true">presentation timestamp</var> and <var title="true">decode timestamp</var>, to the source buffer.</li>
-	</ol>
-      </li>
-      <li><p>If the <ready-state/> attribute is <have-metadata/> and the new <coded-frames/> cause all objects in <activeSourceBuffers/> to have media data for the current playback position, then run the following steps:</p>
-	  <ol>
-	    <li>Set the <ready-state/> attribute to <have-current-data/>.</li>
-	    <li>If this is the first transition to <have-current-data/>, then <queue-a-task-to-fire-an-event-named/> <loadeddata/> at the media element.</li>
-	  </ol>
-      </li>
-      <li>
-	<p>If the <ready-state/> attribute is <have-current-data/> and the new <coded-frames/> cause all objects in <activeSourceBuffers/> to have media data beyond the current playback position, then run the following steps:</p>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-future-data/>.</li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <canplay/> at the media element.</li>
-	</ol>
-      </li>
-      <li>
-	<p>If the <ready-state/> attribute is <have-future-data/> and the new <coded-frames/> cause all objects in <activeSourceBuffers/> to have enough data to start playback, then run the following steps:</p>
-	<ol>
-	  <li>Set the <ready-state/> attribute to <have-enough-data/>.</li>
-	  <li><Queue-a-task-to-fire-an-event-named/> <canplaythrough/> at the media element.</li>
-	</ol>
-      </li>
-      <li>If the <media-segment/> contains data beyond the current <duration/>, then run the <duration-change-algorithm/> with <new-duration/> set to the maximum of the current duration and the highest end timestamp reported by <videoref name="dom-media-buffered">HTMLMediaElement.buffered</videoref>.</li>
-    </ol>
-
-    <h2 id="sourcebufferlist">5. SourceBufferList Object</h2>
-    <p>SourceBufferList is a simple container object for <SourceBuffer/> objects. It provides read-only array access and fires events when the list is modified.</p>
-
-    <pre class="idl">
-interface <dfn id="dom-sourcebufferlist">SourceBufferList</dfn> : EventTarget {
-  readonly attribute unsigned long <precoderef>length</precoderef>;
-  <precoderef>getter</precoderef> <precoderef>SourceBuffer</precoderef> (unsigned long index);
-};
-    </pre>
-    <h3 id="sourcebufferlist-methods">5.1. Methods and Attributes</h3>
-    <p>The <codedfn>length</codedfn> attribute indicates the number of <SourceBuffer/> objects in the list.</p>
-    <p>The <dfn id="dom-getter"><code>getter SourceBuffer (unsigned long <var title="true">index</var>)</code></dfn> method allows the SourceBuffer objects in the list to be accessed with an array operator (i.e. []). This method must run the following steps:</p>
-    <ol>
-      <li>If <var title="true">index</var> is greater than or equal to the <length/> attribute then return undefined and abort these steps.</li>
-      <li>Return the <var title="true">index</var>'th <SourceBuffer/> object in the list.</li>
-    </ol>
-
-    <h3 id="sourcebufferlist-events">5.2. Event Summary</h3>
-    <table>
-      <thead>
-        <tr>
-          <th>Event name</th>
-          <th>Interface</th>
-          <th>Dispatched when...</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr>
-          <td><eventdfn>addsourcebuffer</eventdfn></td>
-          <td><code>Event</code></td>
-          <td>When a <SourceBuffer/> is added to the list.</td>
-        </tr>
-        <tr>
-          <td><eventdfn>removesourcebuffer</eventdfn></td>
-          <td><code>Event</code></td>
-          <td>When a <SourceBuffer/> is removed from the list.</td>
-        </tr>
-      </tbody>
-    </table>
-
-    <h2 id="url">6. URL Object</h2>
-    <p></p>
-
-    <pre class="idl">
-partial interface <dfn id="dom-url">URL</dfn> {
-  static DOMString <precoderef>createObjectURL</precoderef>(<precoderef>MediaSource</precoderef> mediaSource);
-};
-    </pre>
-    <h3 id="url-methods">6.1. Methods</h3>
-    <p>The <methoddfn name="createobjecturl">createObjectURL(<var title="true">mediaSource</var>)</methoddfn> method must run the following steps.</p>
-    <ol>
-      <li>If <var title="true">mediaSource</var> is NULL the return null.</li>
-      <li>Return a unique <MediaSource-object-URL/> that can be used to dereference the <var title="true">mediaSource</var> argument, and run the rest of the algorithm asynchronously.</li>
-      <li><provide-a-stable-state/></li>
-      <li>Revoke the <MediaSource-object-URL/> by calling <file-revokeObjectURL/> on it.</li>
-    </ol>
-    <p class="note">Note: This algorithm is intended to mirror the behavior of the <FileAPI/> <file-createObjectURL/> method with autoRevoke set to true.</p>
-
-    <h2 id="htmlmediaelement-attributes">7. HTMLMediaElement attributes</h2>
-    <p>This section specifies what existing attributes on the <videoref name="htmlmediaelement">HTMLMediaElement</videoref> should return when a <MediaSource/> is attached to the element.</p>
-
-    <p>The <videoref name="dom-media-seekable">HTMLMediaElement.seekable</videoref> attribute returns a new static <normalized-timeranges-object/> created based on the following steps:</p>
-    <dl class="switch">
-      <dt>If <duration/> equals NaN</dt>
-      <dd>Return an empty <timeranges/> object.</dd>
-      <dt>If <duration/> equals positive Infinity</dt>
-      <dd>Return a single range with a start time of 0 and an end time equal to the highest end time reported by the <coderef>HTMLMediaElement.buffered</coderef> attribute.</dd>
-      <dt>Otherwise</dt>
-      <dd>Return a single range with a start time of 0 and an end time equal to <duration/>.</dd>
-    </dl>
-
-    <p id="dom-htmlmediaelement.buffered">The <videoref name="dom-media-buffered">HTMLMediaElement.buffered</videoref> attribute returns a new static <normalized-timeranges-object/> created based on the following steps:</p>
-    <ol>
-      <li>Let <var title="true">active ranges</var> be the ranges returned by <buffered/> for each <SourceBuffer/> object in <activeSourceBuffers/>.</li>
-      <li>Let <var title="true">intersection range</var> be the intersection of the <var title="true">active ranges</var>.</li>
-      <li><p>If <readyState/> is <ended/>, then run the following steps:</p>
-        <ol>
-	  <li>Let <var title="true">highest end time</var> be the largest end time in the <var title="true">active ranges</var>.</li>
-	  <li>Let <var title="true">highest intersection end time</var> be the highest end time in the <var title="true">intersection range</var>.</li>
-	  <li>If the <var title="true">highest intersection end time</var> is less than the <var title="true">highest end time</var>, then update the <var title="true">intersection range</var> so that the <var title="true">highest intersection end time</var> equals the <var title="true">highest end time</var>.</li>
-	</ol>
-      </li>
-      <li>Return the <var title="true">intersection range</var>.</li>
-    </ol>
-    
-    <h2 id="byte-stream-formats">8. Byte Stream Formats</h2>
-    <p>The bytes provided through <append/> for a <SourceBuffer/> form a logical byte stream. The format of this byte stream depends on the media container format in use and is defined in a byte stream format specification. Byte stream format specifications based on WebM and the ISO Base Media File Format are provided below. If these formats are supported then the byte stream formats described below must be supported.</p>
-    <p>This section provides general requirements for all byte stream formats:</p>
-    <ul>
-      <li>A byte stream format specification may define <init-segments/> and must define <media-segments/>.</li>
-      <li>It must be possible to identify segment boundaries and segment type (initialization or media) by examining the byte stream alone.</li>
-      <li>The combination of an Initialization Segment and any contiguous sequence of Media Segments associated with it must:
-	<ol>
-	  <li>Identify the number and type (audio, video, text, etc.) of tracks in the Segments</li>
-	  <li>Identify the decoding capabilities needed to decode each track (i.e. codec and codec parameters)</li>
-	  <li>If a track is encrypted, provide any encryption parameters necessary to decrypt the content (except the encryption key itself)</li>
-	  <li>For each track, provide all information necessary to decode and render the earliest <random-access-point/> in the sequence of Media Segments and all subsequent samples in the sequence (in presentation time). This includes, in particular,
-	    <ul>
-	      <li>Information that determines the <intrinsic-width-and-height/> of the video (specifically, this requires either the picture or pixel aspect ratio, together with the encoded resolution).</li>
-	      <li>Information necessary to convert the video decoder output to a format suitable for display</li>
-	    </ul>
-	  </li>
-	  <li>Identify the global presentation timestamp of every sample in the sequence of Media Segments</li>
-	  <p>For example, if I1 is associated with M1, M2, M3 then the above must hold for all the combinations I1+M1, I1+M2, I1+M1+M2, I1+M2+M3, etc.</p>
-	</ol>
-      </li>
-    </ul>
-    <p>Byte stream specifications must at a minimum define constraints which ensure that the above requirements hold. Additional constraints may be defined, for example to simplify implementation.</p>
-
-    <p>Initialization segments are an optimization. They allow a byte stream format to avoid duplication of information in Media Segments that is the same for many Media Segments. Byte stream format specifications need not specify Initialization Segment formats, however. They may instead require that such information is duplicated in every Media Segment.</p>
-
-    <h3 id="webm">8.1 WebM Byte Streams</h3>
-    <div class="nonnormative">
-      <p>This section defines segment formats for implementations that choose to support WebM.</p>
-      <h4 id="webm-init-segments">8.1.1. Initialization Segments</h4>
-      <p>A WebM <init-segment/> must contain a subset of the elements at the start of a typical WebM file.</p>
-      <p>The following rules apply to WebM initialization segments:</p>
-      <ol>
-	<li>The <init-segment/> must start with an <webm-ebml-header/> element, followed by a <webm-segment/> header.</li>
-	<li>The size value in the <webm-segment/> header must signal an "unknown size" or contain a value large enough to include the <webm-info/> and <webm-tracks/> elements that follow.</li>
-	<li>A <webm-info/> element and a <webm-tracks/> element must appear, in that order, after the <webm-segment/> header and before any further <webm-ebml-header/> or <webm-cluster/> elements.</li>
-	<li>Any elements other than an <webm-ebml-header/> or a <webm-cluster/> that occur before, in between, or after the <webm-info/> and <webm-tracks/> elements are ignored.</li>
-      </ol>
-
-      <h4 id="webm-media-segments">8.1.2. Media Segments</h4>
-      <p>A WebM <media-segment/> is a single <webm-cluster/> element.</p>
-      <p>The following rules apply to WebM media segments:</p>
-      <ol>
-	<li>The Timecode element in the <webm-cluster/> contains a presentation timestamp in TimecodeScale units.</li>
-	<li>The TimecodeScale in the <webm-init-segment/> most recently appended applies to all timestamps in the <webm-cluster/></li>
-	<li>The Cluster header may contain an "unknown" size value. If it does then the end of the cluster is reached when another <webm-cluster/> header or an element header that indicates the start of an <webm-init-segment/> is encountered.</li>
-	<li>Block &amp; SimpleBlock elements must be in time increasing order consistent with the <webm-spec/>.</li>
-	<li>If the most recent <webm-init-segment/> describes multiple tracks, then blocks from all the tracks must be interleaved in time increasing order. At least one block from all audio and video tracks must be present.</li>
-	<li><webm-cues/> or <webm-chapters/> elements may follow a <webm-cluster/> element. These elements must be accepted and ignored by the user agent.</li>
-      </ol>
-
-      <h4 id="webm-random-access-points">8.1.3. Random Access Points</h4>
-      <p>A SimpleBlock element with its Keyframe flag set signals the location of a <random-access-point/> for that track. Media segments containing multiple tracks are only considered a random access point if the first SimpleBlock for each track has its Keyframe flag set. The order of the multiplexed blocks must conform to the <webm-muxer-guidelines/>.</p>
-    </div>
-
-    <h3 id="iso">8.2 ISO Base Media File Format Byte Streams</h3>
-    <div class="nonnormative">
-      <p>This section defines segment formats for implementations that choose to support the ISO Base Media File Format
-	<iso-14496-12/> (ISO BMFF).</p> 
-      <h4 id="iso-init-segments">8.2.1. Initialization Segments</h4>
-      <p>An ISO BMFF <init-segment/> must contain a single Movie Header Box (<iso-box>moov</iso-box>). The tracks in the Movie Header Box must not contain any samples (i.e. the <iso-var>entry_count</iso-var> in the <iso-box>stts</iso-box>, <iso-box>stsc</iso-box> and <iso-box>stco</iso-box> boxes must be set to zero). A Movie Extends (<iso-box>mvex</iso-box>) box must be contained in the
-	Movie Header Box to indicate that Movie Fragments are to be expected.</p>
-      <p>The <init-segment/> may contain Edit Boxes (<iso-box>edts</iso-box>) which provide a mapping of composition times for each track to the global presentation time.</p>
-      <h4 id="iso-media-segments">8.2.2. Media Segments</h4>
-      <p>An ISO BMFF <media-segment/> must contain a single Movie Fragment Box (<iso-box>moof</iso-box>) followed by one or more Media Data Boxes (<iso-box>mdat</iso-box>).</p>
-      <p>The following rules apply to ISO BMFF media segments:</p>
-      <ol>
-	<li>The Movie Fragment Box must contain at least one Track Fragment Box (<iso-box>traf</iso-box>).</li>
-	<li>The Movie Fragment Box must use movie-fragment relative addressing and the flag <iso-var>default-base-is-moof</iso-var> must be set; absolute byte-offsets must not be used.</li>
-	<li>External data references must not be used.</li>
-	<li>If the Movie Fragment contains multiple tracks, the duration by which each track extends should be as close to equal as practical.</li>
-	<li>Each Track Fragment Box must contain a Track Fragment Decode Time Box (<iso-box>tfdt</iso-box>)</li>
-	<li>The first sample in each Track Fragment Run Box (<iso-box>trun</iso-box>) must indicate that the sample is a <random-access-point/>.</li>
-	<li>The Media Data Boxes must contain all the samples referenced by the Track Fragment Run Boxes (<iso-box>trun</iso-box>) of the Movie Fragment Box.</li>
-      </ol>
-
-      <h4 id="iso-random-access-points">8.2.3. Random Access Points</h4>
-      <p>A <random-access-point/> as defined in this specification corresponds to a Stream Access Point of type 1 or 2 as defined in Annex I of <iso-14496-12/>.</p>
-    </div>
-
-    <h2 id="examples">9. Examples</h2>
-    <p>Example use of the Media Source Extensions</p>
-    <div class="block">
-      <div class="blockContent">
-        <pre class="code">
-&lt;script&gt;
-  function onSourceOpen(videoTag, e) {
-    var mediaSource = e.target;
-    var sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vorbis,vp8"');
-
-    videoTag.addEventListener('seeking', onSeeking.bind(videoTag, mediaSource));
-    videoTag.addEventListener('progress', onProgress.bind(videoTag, mediaSource));
-
-    var initSegment = GetInitializationSegment();
-
-    if (initSegment == null) {
-      // Error fetching the initialization segment. Signal end of stream with an error.
-      mediaSource.endOfStream("network");
-      return;
-    }
-
-    // Append the initialization segment.
-    sourceBuffer.append(initSegment);
-
-    // Append some initial media data.
-    appendNextMediaSegment(mediaSource);
-  }
-
-  function appendNextMediaSegment(mediaSource) {
-    if (mediaSource.readyState == "ended")
-      return;
-
-    // If we have run out of stream data, then signal end of stream.
-    if (!HaveMoreMediaSegments()) {
-      mediaSource.endOfStream();
-      return;
-    }
-
-    var mediaSegment = GetNextMediaSegment();
-
-    if (!mediaSegment) {
-       // Error fetching the next media segment.
-       mediaSource.endOfStream("network");
-       return;
-    } 
-
-    mediaSource.sourceBuffers[0].append(mediaSegment);
-  }
-
-  function onSeeking(mediaSource, e) {
-    var video = e.target;
-
-    // Abort current segment append.
-    mediaSource.sourceBuffers[0].abort();
-
-    // Notify the media segment loading code to start fetching data at the
-    // new playback position.
-    SeekToMediaSegmentAt(video.currentTime);
-
-    // Append media segments from the new playback position.
-    appendNextMediaSegment(mediaSource);
-    appendNextMediaSegment(mediaSource);
-  }
-
-  function onProgress(mediaSource, e) {
-    appendNextMediaSegment(mediaSource);
-  }
-&lt;/script&gt;
-
-&lt;video id="v" autoplay&gt; &lt;/video&gt;
-
-&lt;script&gt;
-  var video = document.getElementById('v');
-  var mediaSource = new MediaSource();
-  mediaSource.addEventListener('sourceopen', onSourceOpen.bind(this, video));
-  video.src = window.URL.createObjectURL(mediaSource);
-&lt;/script&gt;
-        </pre>
-      </div>
-    </div>
-
-    <h2 id="revision-history">10. Revision History</h2>
-    <table>
-      <thead>
-        <tr>
-          <th>Version</th>
-          <th>Comment</th>
-        </tr>
-      </thead>
-      <tbody>
-	<tr>
-	  <td>18 October 2012</td>
-          <td>Refactored SourceBuffer.append() &amp; added SourceBuffer.remove().</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/rev/6d127e69c9f8">8 October 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Defined what HTMLMediaElement.seekable and HTMLMediaElement.buffered should return.</li>
-	      <li>Updated seeking algorithm to run inside Step 10 of the HTMLMediaElement seeking algorithm.</li>
-	      <li>Removed transition from "ended" to "open" in the seeking algorithm.</li>
-	      <li>Clarified all the event targets.</li>
-	    </ul>
-	  </td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/7bab66368f2c/media-source/media-source.html">1 October 2012</a></td>
-          <td>Fixed various addsourcebuffer &amp; removesourcebuffer bugs and allow append() in ended state.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/349559debcc3/media-source/media-source.html">13 September 2012</a></td>
-          <td>Updated endOfStream() behavior to change based on the value of HTMLMediaElement.readyState.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ca093bbbbefb/media-source/media-source.html">24 August 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Added early abort on to duration change algorithm.</li>
-	      <li>Added createObjectURL() IDL &amp; algorithm.</li>
-              <li>Added Track ID &amp; Track description definitions.</li>
-              <li>Rewrote start overlap for audio frames text.</li>
-              <li>Removed rendering silence requirement from section 2.5.</li>
-	    </ul>
-	  </td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/340786fcae83/media-source/media-source.html">22 August 2012</a></td>
-          <td>
-	    <ul>
-	      <li>Clarified WebM byte stream requirements.</li>
-	      <li>Clarified SourceBuffer.buffered return value.</li>
-	      <li>Clarified addsourcebuffer &amp; removesourcebuffer event targets.</li>
-	      <li>Clarified when media source attaches to the HTMLMediaElement.</li>
-	      <li>Introduced duration change algorithm and update relevant algorithms to use it.</li>
-	    </ul>
-	  </td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/032f7b8681d1/media-source/media-source.html">17 August 2012</a></td>
-          <td>Minor editorial fixes.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/29687c019735/media-source/media-source.html">09 August 2012</a></td>
-          <td>Change presentation start time to always be 0 instead of using format specific rules about the first media segment appended.</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/087ea42f59c8/media-source/media-source.html">30 July 2012</a></td>
-          <td>Added SourceBuffer.timestampOffset and MediaSource.duration.</td>
-        </tr>
-        <tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/ab36e8e882c6/media-source/media-source.html">17 July 2012</a></td>
-          <td>Replaced SourceBufferList.remove() with MediaSource.removeSourceBuffer().</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/b499a199e427/media-source/media-source.html">02 July 2012</a></td>
-          <td>Converted to the object-oriented API</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/9bbfe09653e4/media-source/media-source.html">26 June 2012</a></td>
-          <td>Converted to Editor's draft.</td>
-        </tr>
-	<tr>
-	  <td><a href="http://dvcs.w3.org/hg/html-media/raw-file/e433598d22a7/media-source/media-source.html">0.5</a></td>
-          <td>Minor updates before proposing to W3C HTML-WG.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.4/draft-spec/mediasource-draft-spec.html">0.4</a></td>
-          <td>Major revision. Adding source IDs, defining buffer model, and clarifying byte stream formats.</td>
-        </tr>
-	<tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.3/draft-spec/mediasource-draft-spec.html">0.3</a></td>
-          <td>Minor text updates.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.2/draft-spec/mediasource-draft-spec.html">0.2</a></td>
-          <td>Updates to reflect initial WebKit implementation.</td>
-        </tr>
-        <tr>
-          <td><a href="http://html5-mediasource-api.googlecode.com/svn/tags/0.1/draft-spec/mediasource-draft-spec.html">0.1</a></td>
-          <td>Initial Proposal</td>
-        </tr>
-      </tbody>
-    </table>
-  </body>
-</html>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/media-source/respec-w3c-common.js	Thu Nov 08 17:13:35 2012 -0800
@@ -0,0 +1,3 @@
+/* ReSpec 3.1.32 - Robin Berjon, http://berjon.com/ (@robinberjon) */
+/* See original source for licenses. */
+var requirejs,require,define;(function(r){function K(e){return O.call(e)==="[object Function]"}function G(e){return O.call(e)==="[object Array]"}function $(e,t,n){for(var r in t)!(r in L)&&(!(r in e)||n)&&(e[r]=t[r]);return d}function P(e,t,n){return e=Error(t+"\nhttp://requirejs.org/docs/errors.html#"+e),n&&(e.originalError=n),e}function aa(e,t,n){var r,i,s;for(r=0;s=t[r];r++)s=typeof s=="string"?{name:s}:s,i=s.location,n&&(!i||i.indexOf("/")!==0&&i.indexOf(":")===-1)&&(i=n+"/"+(i||s.name)),e[s.name]={name:s.name,location:i||s.name,main:(s.main||"main").replace(fa,"").replace(ba,"")}}function V(e,t){e.holdReady?e.holdReady(t):t?e.readyWait+=1:e.ready(!0)}function ga(e){function t(e,t){var n,r;if(e&&e.charAt(0)===".")if(t){E.pkgs[t]?t=[t]:(t=t.split("/"),t=t.slice(0,t.length-1)),n=e=t.concat(e.split("/"));var i;for(r=0;i=n[r];r++)if(i===".")n.splice(r,1),r-=1;else if(i===".."){if(r===1&&(n[2]===".."||n[0]===".."))break;r>0&&(n.splice(r-1,2),r-=2)}r=E.pkgs[n=e[0]],e=e.join("/"),r&&e===n+"/"+r.main&&(e=n)}else e.indexOf("./")===0&&(e=e.substring(2));return e}function n(e,n){var r=e?e.indexOf("!"):-1,i=null,s=n?n.name:null,o=e,u,a;return r!==-1&&(i=e.substring(0,r),e=e.substring(r+1,e.length)),i&&(i=t(i,s)),e&&(i?u=(r=N[i])&&r.normalize?r.normalize(e,function(e){return t(e,s)}):t(e,s):(u=t(e,s),a=T[u],a||(a=b.nameToUrl(e,null,n),T[u]=a))),{prefix:i,name:u,parentMap:n,url:a,originalName:o,fullName:i?i+"!"+(u||""):u}}function i(){var e=!0,t=E.priorityWait,n,r;if(t){for(r=0;n=t[r];r++)if(!C[n]){e=!1;break}e&&delete E.priorityWait}return e}function s(e,t,n){return function(){var r=ha.call(arguments,0),i;return n&&K(i=r[r.length-1])&&(i.__requireJsBuild=!0),r.push(t),e.apply(null,r)}}function o(e,t,n){return t=s(n||b.require,e,t),$(t,{nameToUrl:s(b.nameToUrl,e),toUrl:s(b.toUrl,e),defined:s(b.requireDefined,e),specified:s(b.requireSpecified,e),isBrowser:d.isBrowser}),t}function u(e){var t,i,s,o=e.callback,u=e.map,a=u.fullName,f=e.deps;s=e.listeners;var l=E.requireExecCb||d.execCb;if(o&&K(o)){if(E.catchError.define)try{i=l(a,e.callback,f,N[a])}catch(c){t=c}else i=l(a,e.callback,f,N[a]);a&&((o=e.cjsModule)&&o.exports!==r&&o.exports!==N[a]?i=N[a]=e.cjsModule.exports:i===r&&e.usingExports?i=N[a]:(N[a]=i,H[a]&&(B[a]=!0)))}else a&&(i=N[a]=o,H[a]&&(B[a]=!0));k[e.id]&&(delete k[e.id],e.isDone=!0,b.waitCount-=1,b.waitCount===0&&(A=[])),delete _[a],d.onResourceLoad&&!e.placeholder&&d.onResourceLoad(b,u,e.depArray);if(t)return i=(a?n(a).url:"")||t.fileName||t.sourceURL,s=t.moduleTree,t=P("defineerror",'Error evaluating module "'+a+'" at location "'+i+'":\n'+t+"\nfileName:"+i+"\nlineNumber: "+(t.lineNumber||t.line),t),t.moduleName=a,t.moduleTree=s,d.onError(t);for(t=0;o=s[t];t++)o(i);return r}function a(e,t){return function(n){e.depDone[t]||(e.depDone[t]=!0,e.deps[t]=n,e.depCount-=1,e.depCount||u(e))}}function f(e,t){var r=t.map,i=r.fullName,s=r.name,a=D[e]||(D[e]=N[e]),f;t.loading||(t.loading=!0,f=function(e){t.callback=function(){return e},u(t),C[t.id]=!0,w()},f.fromText=function(e,t){var n=Q;C[e]=!1,b.scriptCount+=1,b.fake[e]=!0,n&&(Q=!1),d.exec(t),n&&(Q=!0),b.completeLoad(e)},i in N?f(N[i]):a.load(s,o(r.parentMap,!0,function(e,i){var s=[],o,u;for(o=0;u=e[o];o++)u=n(u,r.parentMap),e[o]=u.fullName,u.prefix||s.push(e[o]);return t.moduleDeps=(t.moduleDeps||[]).concat(s),b.require(e,i)}),f,E))}function l(e){k[e.id]||(k[e.id]=e,A.push(e),b.waitCount+=1)}function c(e){this.listeners.push(e)}function h(e,t){var r=e.fullName,i=e.prefix,s=i?D[i]||(D[i]=N[i]):null,o,a;return r&&(o=_[r]),!o&&(a=!0,o={id:(i&&!s?M++ +"__p@:":"")+(r||"__r@"+M++),map:e,depCount:0,depDone:[],depCallbacks:[],deps:[],listeners:[],add:c},x[o.id]=!0,r&&(!i||D[i]))&&(_[r]=o),i&&!s?(r=n(i),i in N&&!N[i]&&(delete N[i],delete O[r.url]),i=h(r,!0),i.add(function(){var t=n(e.originalName,e.parentMap),t=h(t,!0);o.placeholder=!0,t.add(function(e){o.callback=function(){return e},u(o)})})):a&&t&&(C[o.id]=!1,b.paused.push(o),l(o)),o}function p(e,t,i,s){var e=n(e,s),f=e.name,c=e.fullName,p=h(e),d=p.id,v=p.deps,m;if(c){if(c in N||C[d]===!0||c==="jquery"&&E.jQuery&&E.jQuery!==i().fn.jquery)return;x[d]=!0,C[d]=!0,c==="jquery"&&i&&W(i())}p.depArray=t,p.callback=i;for(i=0;i<t.length;i++)if(d=t[i])d=n(d,f?e:s),m=d.fullName,t[i]=m,m==="require"?v[i]=o(e):m==="exports"?(v[i]=N[c]={},p.usingExports=!0):m==="module"?p.cjsModule=v[i]={id:f,uri:f?b.nameToUrl(f,null,s):r,exports:N[c]}:!(m in N)||m in k||c in H&&!(c in H&&B[m])?(c in H&&(H[m]=!0,delete N[m],O[d.url]=!1),p.depCount+=1,p.depCallbacks[i]=a(p,i),h(d,!0).add(p.depCallbacks[i])):v[i]=N[m];p.depCount?l(p):u(p)}function v(e){p.apply(null,e)}function m(e,t){var n=e.map.fullName,i=e.depArray,s=!0,o,u,a,f;if(e.isDone||!n||!C[n])return f;if(t[n])return e;t[n]=!0;if(i){for(o=0;o<i.length;o++){u=i[o];if(!C[u]&&!ia[u]){s=!1;break}if((a=k[u])&&!a.isDone&&C[u])if(f=m(a,t))break}s||(f=r,delete t[n])}return f}function g(e,t){var i=e.map.fullName,s=e.depArray,o,u,a,f;if(e.isDone||!i||!C[i])return r;if(i){if(t[i])return N[i];t[i]=!0}if(s)for(o=0;o<s.length;o++)if(u=s[o])if((a=n(u).prefix)&&(f=k[a])&&g(f,t),(a=k[u])&&!a.isDone&&C[u])u=g(a,t),e.depCallbacks[o](u);return N[i]}function y(){var e=E.waitSeconds*1e3,e=e&&b.startTime+e<(new Date).getTime(),t="",n=!1,s=!1,o=[],u,a;if(b.pausedCount>0)return r;if(E.priorityWait){if(!i())return r;w()}for(u in C)if(!(u in L)&&(n=!0,!C[u]))if(e)t+=u+" ";else{if(s=!0,u.indexOf("!")===-1){o=[];break}(a=_[u]&&_[u].moduleDeps)&&o.push.apply(o,a)}if(!n&&!b.waitCount)return r;if(e&&t)return e=P("timeout","Load timeout for modules: "+t),e.requireType="timeout",e.requireModules=t,e.contextName=b.contextName,d.onError(e);if(s&&o.length)for(t=0;u=k[o[t]];t++)if(u=m(u,{})){g(u,{});break}if(!e&&(s||b.scriptCount))return(I||da)&&!X&&(X=setTimeout(function(){X=0,y()},50)),r;if(b.waitCount){for(t=0;u=A[t];t++)g(u,{});b.paused.length&&w(),Y<5&&(Y+=1,y())}return Y=0,d.checkReadyState(),r}var b,w,E={waitSeconds:7,baseUrl:"./",paths:{},pkgs:{},catchError:{}},S=[],x={require:!0,exports:!0,module:!0},T={},N={},C={},k={},A=[],O={},M=0,_={},D={},H={},B={},j=0;return W=function(e){!b.jQuery&&(e=e||(typeof jQuery!="undefined"?jQuery:null))&&(!E.jQuery||e.fn.jquery===E.jQuery)&&("holdReady"in e||"readyWait"in e)&&(b.jQuery=e,v(["jquery",[],function(){return jQuery}]),b.scriptCount)&&(V(e,!0),b.jQueryIncremented=!0)},w=function(){var e,t,n,s,o,u;b.takeGlobalQueue(),j+=1,b.scriptCount<=0&&(b.scriptCount=0);for(;S.length;){if(e=S.shift(),e[0]===null)return d.onError(P("mismatch","Mismatched anonymous define() module: "+e[e.length-1]));v(e)}if(!E.priorityWait||i())for(;b.paused.length;){o=b.paused,b.pausedCount+=o.length,b.paused=[];for(s=0;e=o[s];s++)t=e.map,n=t.url,u=t.fullName,t.prefix?f(t.prefix,e):!O[n]&&!C[u]&&((E.requireLoad||d.load)(b,u,n),n.indexOf("empty:")!==0&&(O[n]=!0));b.startTime=(new Date).getTime(),b.pausedCount-=o.length}return j===1&&y(),j-=1,r},b={contextName:e,config:E,defQueue:S,waiting:k,waitCount:0,specified:x,loaded:C,urlMap:T,urlFetched:O,scriptCount:0,defined:N,paused:[],pausedCount:0,plugins:D,needFullExec:H,fake:{},fullExec:B,managerCallbacks:_,makeModuleMap:n,normalize:t,configure:function(e){var t,n,r;e.baseUrl&&e.baseUrl.charAt(e.baseUrl.length-1)!=="/"&&(e.baseUrl+="/"),t=E.paths,r=E.pkgs,$(E,e,!0);if(e.paths){for(n in e.paths)n in L||(t[n]=e.paths[n]);E.paths=t}if((t=e.packagePaths)||e.packages){if(t)for(n in t)n in L||aa(r,t[n],n);e.packages&&aa(r,e.packages),E.pkgs=r}e.priority&&(n=b.requireWait,b.requireWait=!1,w(),b.require(e.priority),w(),b.requireWait=n,E.priorityWait=e.priority),(e.deps||e.callback)&&b.require(e.deps||[],e.callback)},requireDefined:function(e,t){return n(e,t).fullName in N},requireSpecified:function(e,t){return n(e,t).fullName in x},require:function(t,r,i){if(typeof t=="string")return K(r)?d.onError(P("requireargs","Invalid require call")):d.get?d.get(b,t,r):(r=n(t,r),t=r.fullName,t in N?N[t]:d.onError(P("notloaded","Module name '"+r.fullName+"' has not been loaded yet for context: "+e)));(t&&t.length||r)&&p(null,t,r,i);if(!b.requireWait)for(;!b.scriptCount&&b.paused.length;)w();return b.require},takeGlobalQueue:function(){U.length&&(ja.apply(b.defQueue,[b.defQueue.length-1,0].concat(U)),U=[])},completeLoad:function(e){var t;for(b.takeGlobalQueue();S.length;){if(t=S.shift(),t[0]===null){t[0]=e;break}if(t[0]===e)break;v(t),t=null}t?v(t):v([e,[],e==="jquery"&&typeof jQuery!="undefined"?function(){return jQuery}:null]),d.isAsync&&(b.scriptCount-=1),w(),d.isAsync||(b.scriptCount-=1)},toUrl:function(e,t){var n=e.lastIndexOf("."),r=null;return n!==-1&&(r=e.substring(n,e.length),e=e.substring(0,n)),b.nameToUrl(e,r,t)},nameToUrl:function(e,n,r){var i,s,o,u,a=b.config,e=t(e,r&&r.fullName);if(d.jsExtRegExp.test(e))n=e+(n?n:"");else{i=a.paths,s=a.pkgs,r=e.split("/");for(u=r.length;u>0;u--){if(o=r.slice(0,u).join("/"),i[o]){r.splice(0,u,i[o]);break}if(o=s[o]){e=e===o.name?o.location+"/"+o.main:o.location,r.splice(0,u,e);break}}n=r.join("/")+(n||".js"),n=(n.charAt(0)==="/"||n.match(/^[\w\+\.\-]+:/)?"":a.baseUrl)+n}return a.urlArgs?n+((n.indexOf("?")===-1?"?":"&")+a.urlArgs):n}},b.jQueryCheck=W,b.resume=w,b}function ka(){var e,t,n;if(C&&C.readyState==="interactive")return C;e=document.getElementsByTagName("script");for(t=e.length-1;t>-1&&(n=e[t]);t--)if(n.readyState==="interactive")return C=n;return null}var la=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,ma=/require\(\s*["']([^'"\s]+)["']\s*\)/g,fa=/^\.\//,ba=/\.js$/,O=Object.prototype.toString,u=Array.prototype,ha=u.slice,ja=u.splice,I=typeof window!="undefined"&&!!navigator&&!!document,da=!I&&typeof importScripts!="undefined",na=I&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,ea=typeof opera!="undefined"&&opera.toString()==="[object Opera]",L={},D={},U=[],C=null,Y=0,Q=!1,ia={require:!0,module:!0,exports:!0},d,u={},J,y,v,E,o,w,F,B,z,W,X;if(typeof define=="undefined"){if(typeof requirejs!="undefined"){if(K(requirejs))return;u=requirejs,requirejs=r}typeof require!="undefined"&&!K(require)&&(u=require,require=r),d=requirejs=function(e,t,n){var r="_",i;return!G(e)&&typeof e!="string"&&(i=e,G(t)?(e=t,t=n):e=[]),i&&i.context&&(r=i.context),n=D[r]||(D[r]=ga(r)),i&&n.configure(i),n.require(e,t)},d.config=function(e){return d(e)},require||(require=d),d.toUrl=function(e){return D._.toUrl(e)},d.version="1.0.8",d.jsExtRegExp=/^\/|:|\?|\.js$/,y=d.s={contexts:D,skipAsync:{}};if(d.isAsync=d.isBrowser=I)if(v=y.head=document.getElementsByTagName("head")[0],E=document.getElementsByTagName("base")[0])v=y.head=E.parentNode;d.onError=function(e){throw e},d.load=function(e,t,n){d.resourcesReady(!1),e.scriptCount+=1,d.attach(n,e,t),e.jQuery&&!e.jQueryIncremented&&(V(e.jQuery,!0),e.jQueryIncremented=!0)},define=function(e,t,n){var i,s;return typeof e!="string"&&(n=t,t=e,e=null),G(t)||(n=t,t=[]),!t.length&&K(n)&&n.length&&(n.toString().replace(la,"").replace(ma,function(e,n){t.push(n)}),t=(n.length===1?["require"]:["require","exports","module"]).concat(t)),Q&&(i=J||ka())&&(e||(e=i.getAttribute("data-requiremodule")),s=D[i.getAttribute("data-requirecontext")]),(s?s.defQueue:U).push([e,t,n]),r},define.amd={multiversion:!0,plugins:!0,jQuery:!0},d.exec=function(a){return eval(a)},d.execCb=function(e,t,n,r){return t.apply(r,n)},d.addScriptToDom=function(e){J=e,E?v.insertBefore(e,E):v.appendChild(e),J=null},d.onScriptLoad=function(e){var t=e.currentTarget||e.srcElement,n;if(e.type==="load"||t&&na.test(t.readyState))C=null,e=t.getAttribute("data-requirecontext"),n=t.getAttribute("data-requiremodule"),D[e].completeLoad(n),t.detachEvent&&!ea?t.detachEvent("onreadystatechange",d.onScriptLoad):t.removeEventListener("load",d.onScriptLoad,!1)},d.attach=function(e,t,n,r,i,s){var o;return I?(r=r||d.onScriptLoad,o=t&&t.config&&t.config.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script"),o.type=i||t&&t.config.scriptType||"text/javascript",o.charset="utf-8",o.async=!y.skipAsync[e],t&&o.setAttribute("data-requirecontext",t.contextName),o.setAttribute("data-requiremodule",n),o.attachEvent&&!(o.attachEvent.toString&&o.attachEvent.toString().indexOf("[native code]")<0)&&!ea?(Q=!0,s?o.onreadystatechange=function(){o.readyState==="loaded"&&(o.onreadystatechange=null,o.attachEvent("onreadystatechange",r),s(o))}:o.attachEvent("onreadystatechange",r)):o.addEventListener("load",r,!1),o.src=e,s||d.addScriptToDom(o),o):(da&&(importScripts(e),t.completeLoad(n)),null)};if(I){o=document.getElementsByTagName("script");for(B=o.length-1;B>-1&&(w=o[B]);B--){v||(v=w.parentNode);if(F=w.getAttribute("data-main")){u.baseUrl||(o=F.split("/"),w=o.pop(),o=o.length?o.join("/")+"/":"./",u.baseUrl=o,F=w.replace(ba,"")),u.deps=u.deps?u.deps.concat(F):[F];break}}}d.checkReadyState=function(){var e=y.contexts,t;for(t in e)if(!(t in L)&&e[t].waitCount)return;d.resourcesReady(!0)},d.resourcesReady=function(e){var t,n;d.resourcesDone=e;if(d.resourcesDone)for(n in e=y.contexts,e)!(n in L)&&(t=e[n],t.jQueryIncremented)&&(V(t.jQuery,!1),t.jQueryIncremented=!1)},d.pageLoaded=function(){document.readyState!=="complete"&&(document.readyState="complete")},I&&document.addEventListener&&!document.readyState&&(document.readyState="loading",window.addEventListener("load",d.pageLoaded,!1)),d(u),d.isAsync&&typeof setTimeout!="undefined"&&(z=y.contexts[u.context||"_"],z.requireWait=!0,setTimeout(function(){z.requireWait=!1,z.scriptCount||z.resume(),d.checkReadyState()},0))}})(),function(e,t){function n(e){return H.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}function r(e){if(!vn[e]){var t=_.body,n=H("<"+e+">").appendTo(t),r=n.css("display");n.remove();if(r==="none"||r===""){mn||(mn=_.createElement("iframe"),mn.frameBorder=mn.width=mn.height=0),t.appendChild(mn);if(!gn||!mn.createElement)gn=(mn.contentWindow||mn.contentDocument).document,gn.write((H.support.boxModel?"<!doctype html>":"")+"<html><body>"),gn.close();n=gn.createElement(e),gn.body.appendChild(n),r=H.css(n,"display"),t.removeChild(mn)}vn[e]=r}return vn[e]}function i(e,t){var n={};return H.each(En.concat.apply([],En.slice(0,t)),function(){n[this]=e}),n}function s(){Sn=t}function o(){return setTimeout(s,0),Sn=H.now()}function u(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function a(){try{return new e.XMLHttpRequest}catch(t){}}function f(e,n){e.dataFilter&&(n=e.dataFilter(n,e.dataType));var r=e.dataTypes,i={},s,o,u=r.length,a,f=r[0],l,c,h,p,d;for(s=1;s<u;s++){if(s===1)for(o in e.converters)typeof o=="string"&&(i[o.toLowerCase()]=e.converters[o]);l=f,f=r[s];if(f==="*")f=l;else if(l!=="*"&&l!==f){c=l+" "+f,h=i[c]||i["* "+f];if(!h){d=t;for(p in i){a=p.split(" ");if(a[0]===l||a[0]==="*"){d=i[a[1]+" "+f];if(d){p=i[p],p===!0?h=d:d===!0&&(h=p);break}}}}!h&&!d&&H.error("No conversion from "+c.replace(" "," to ")),h!==!0&&(n=h?h(n):d(p(n)))}}return n}function l(e,n,r){var i=e.contents,s=e.dataTypes,o=e.responseFields,u,a,f,l;for(a in o)a in r&&(n[o[a]]=r[a]);while(s[0]==="*")s.shift(),u===t&&(u=e.mimeType||n.getResponseHeader("content-type"));if(u)for(a in i)if(i[a]&&i[a].test(u)){s.unshift(a);break}if(s[0]in r)f=s[0];else{for(a in r){if(!s[0]||e.converters[a+" "+s[0]]){f=a;break}l||(l=a)}f=f||l}if(f)return f!==s[0]&&s.unshift(f),r[f]}function c(e,t,n,r){if(H.isArray(t))H.each(t,function(t,i){n||Ut.test(e)?r(e,i):c(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&H.type(t)==="object")for(var i in t)c(e+"["+i+"]",t[i],n,r);else r(e,t)}function h(e,n){var r,i,s=H.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&H.extend(!0,e,i)}function p(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u=e[s],a=0,f=u?u.length:0,l=e===rn,c;for(;a<f&&(l||!c);a++)c=u[a](n,r,i),typeof c=="string"&&(!l||o[c]?c=t:(n.dataTypes.unshift(c),c=p(e,n,r,i,c,o)));return(l||!c)&&!o["*"]&&(c=p(e,n,r,i,"*",o)),c}function d(e){return function(t,n){typeof t!="string"&&(n=t,t="*");if(H.isFunction(n)){var r=t.toLowerCase().split(Zt),i=0,s=r.length,o,u,a;for(;i<s;i++)o=r[i],a=/^\+/.test(o),a&&(o=o.substr(1)||"*"),u=e[o]=e[o]||[],u[a?"unshift":"push"](n)}}}function v(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=t==="width"?1:0,s=4;if(r>0){if(n!=="border")for(;i<s;i+=2)n||(r-=parseFloat(H.css(e,"padding"+jt[i]))||0),n==="margin"?r+=parseFloat(H.css(e,n+jt[i]))||0:r-=parseFloat(H.css(e,"border"+jt[i]+"Width"))||0;return r+"px"}r=Ft(e,t);if(r<0||r==null)r=e.style[t];if(Dt.test(r))return r;r=parseFloat(r)||0;if(n)for(;i<s;i+=2)r+=parseFloat(H.css(e,"padding"+jt[i]))||0,n!=="padding"&&(r+=parseFloat(H.css(e,"border"+jt[i]+"Width"))||0),n==="margin"&&(r+=parseFloat(H.css(e,n+jt[i]))||0);return r+"px"}function m(e){var t=_.createElement("div");return Lt.appendChild(t),t.innerHTML=e.outerHTML,t.firstChild}function g(e){var t=(e.nodeName||"").toLowerCase();t==="input"?y(e):t!=="script"&&typeof e.getElementsByTagName!="undefined"&&H.grep(e.getElementsByTagName("input"),y)}function y(e){if(e.type==="checkbox"||e.type==="radio")e.defaultChecked=e.checked}function b(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function w(e,t){var n;t.nodeType===1&&(t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?t.outerHTML=e.outerHTML:n!=="input"||e.type!=="checkbox"&&e.type!=="radio"?n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text):(e.checked&&(t.defaultChecked=t.checked=e.checked),t.value!==e.value&&(t.value=e.value)),t.removeAttribute(H.expando),t.removeAttribute("_submit_attached"),t.removeAttribute("_change_attached"))}function E(e,t){if(t.nodeType===1&&!!H.hasData(e)){var n,r,i,s=H._data(e),o=H._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)H.event.add(t,n,u[n][r])}o.data&&(o.data=H.extend({},o.data))}}function S(e,t){return H.nodeName(e,"table")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function x(e){var t=dt.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function T(e,t,n){t=t||0;if(H.isFunction(t))return H.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return H.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=H.grep(e,function(e){return e.nodeType===1});if(lt.test(t))return H.filter(t,r,!n);t=H.filter(t,r)}return H.grep(e,function(e,r){return H.inArray(e,t)>=0===n})}function N(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function C(){return!0}function k(){return!1}function L(e,t,n){var r=t+"defer",i=t+"queue",s=t+"mark",o=H._data(e,r);o&&(n==="queue"||!H._data(e,i))&&(n==="mark"||!H._data(e,s))&&setTimeout(function(){!H._data(e,i)&&!H._data(e,s)&&(H.removeData(e,r,!0),o.fire())},0)}function A(e){for(var t in e){if(t==="data"&&H.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function O(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(I,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:H.isNumeric(r)?+r:F.test(r)?H.parseJSON(r):r}catch(s){}H.data(e,n,r)}else r=t}return r}function M(e){var t=B[e]={},n,r;e=e.split(/\s+/);for(n=0,r=e.length;n<r;n++)t[e[n]]=!0;return t}var _=e.document,D=e.navigator,P=e.location,H=function(){function n(){if(!r.isReady){try{_.documentElement.doScroll("left")}catch(e){setTimeout(n,1);return}r.ready()}}var r=function(e,t){return new r.fn.init(e,t,o)},i=e.jQuery,s=e.$,o,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,a=/\S/,f=/^\s+/,l=/\s+$/,c=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,h=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,d=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,v=/(?:^|:|,)(?:\s*\[)+/g,m=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,y=/(msie) ([\w.]+)/,b=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,E=/^-ms-/,S=function(e,t){return(t+"").toUpperCase()},x=D.userAgent,T,N,C,k=Object.prototype.toString,L=Object.prototype.hasOwnProperty,A=Array.prototype.push,O=Array.prototype.slice,M=String.prototype.trim,P=Array.prototype.indexOf,H={};return r.fn=r.prototype={constructor:r,init:function(e,n,i){var s,o,a,f;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(e==="body"&&!n&&_.body)return this.context=_,this[0]=_.body,this.selector=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)!=="<"||e.charAt(e.length-1)!==">"||e.length<3?s=u.exec(e):s=[null,e,null];if(s&&(s[1]||!n)){if(s[1])return n=n instanceof r?n[0]:n,f=n?n.ownerDocument||n:_,a=c.exec(e),a?r.isPlainObject(n)?(e=[_.createElement(a[1])],r.fn.attr.call(e,n,!0)):e=[f.createElement(a[1])]:(a=r.buildFragment([s[1]],[f]),e=(a.cacheable?r.clone(a.fragment):a.fragment).childNodes),r.merge(this,e);o=_.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return i.find(e);this.length=1,this[0]=o}return this.context=_,this.selector=e,this}return!n||n.jquery?(n||i).find(e):this.constructor(n).find(e)}return r.isFunction(e)?i.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),r.makeArray(e,this))},selector:"",jquery:"1.7.2",length:0,size:function(){return this.length},toArray:function(){return O.call(this,0)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var i=this.constructor();return r.isArray(e)?A.apply(i,e):r.merge(i,e),i.prevObject=this,i.context=this.context,t==="find"?i.selector=this.selector+(this.selector?" ":"")+n:t&&(i.selector=this.selector+"."+t+"("+n+")"),i},each:function(e,t){return r.each(this,e,t)},ready:function(e){return r.bindReady(),N.add(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(O.apply(this,arguments),"slice",O.call(arguments).join(","))},map:function(e){return this.pushStack(r.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:A,sort:[].sort,splice:[].splice},r.fn.init.prototype=r.fn,r.extend=r.fn.extend=function(){var e,n,i,s,o,u,a=arguments[0]||{},f=1,l=arguments.length,c=!1;typeof a=="boolean"&&(c=a,a=arguments[1]||{},f=2),typeof a!="object"&&!r.isFunction(a)&&(a={}),l===f&&(a=this,--f);for(;f<l;f++)if((e=arguments[f])!=null)for(n in e){i=a[n],s=e[n];if(a===s)continue;c&&s&&(r.isPlainObject(s)||(o=r.isArray(s)))?(o?(o=!1,u=i&&r.isArray(i)?i:[]):u=i&&r.isPlainObject(i)?i:{},a[n]=r.extend(c,u,s)):s!==t&&(a[n]=s)}return a},r.extend({noConflict:function(t){return e.$===r&&(e.$=s),t&&e.jQuery===r&&(e.jQuery=i),r},isReady:!1,readyWait:1,holdReady:function(e){e?r.readyWait++:r.ready(!0)},ready:function(e){if(e===!0&&!--r.readyWait||e!==!0&&!r.isReady){if(!_.body)return setTimeout(r.ready,1);r.isReady=!0;if(e!==!0&&--r.readyWait>0)return;N.fireWith(_,[r]),r.fn.trigger&&r(_).trigger("ready").off("ready")}},bindReady:function(){if(!N){N=r.Callbacks("once memory");if(_.readyState==="complete")return setTimeout(r.ready,1);if(_.addEventListener)_.addEventListener("DOMContentLoaded",C,!1),e.addEventListener("load",r.ready,!1);else if(_.attachEvent){_.attachEvent("onreadystatechange",C),e.attachEvent("onload",r.ready);var t=!1;try{t=e.frameElement==null}catch(i){}_.documentElement.doScroll&&t&&n()}}},isFunction:function(e){return r.type(e)==="function"},isArray:Array.isArray||function(e){return r.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):H[k.call(e)]||"object"},isPlainObject:function(e){if(!e||r.type(e)!=="object"||e.nodeType||r.isWindow(e))return!1;try{if(e.constructor&&!L.call(e,"constructor")&&!L.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var i;for(i in e);return i===t||L.call(e,i)},isEmptyObject:function(e){for(var t in e)return!1;return!0},error:function(e){throw new Error(e)},parseJSON:function(t){if(typeof t!="string"||!t)return null;t=r.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(h.test(t.replace(p,"@").replace(d,"]").replace(v,"")))return(new Function("return "+t))();r.error("Invalid JSON: "+t)},parseXML:function(n){if(typeof n!="string"||!n)return null;var i,s;try{e.DOMParser?(s=new DOMParser,i=s.parseFromString(n,"text/xml")):(i=new ActiveXObject("Microsoft.XMLDOM"),i.async="false",i.loadXML(n))}catch(o){i=t}return(!i||!i.documentElement||i.getElementsByTagName("parsererror").length)&&r.error("Invalid XML: "+n),i},noop:function(){},globalEval:function(t){t&&a.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(E,"ms-").replace(w,S)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toUpperCase()===t.toUpperCase()},each:function(e,n,i){var s,o=0,u=e.length,a=u===t||r.isFunction(e);if(i){if(a){for(s in e)if(n.apply(e[s],i)===!1)break}else for(;o<u;)if(n.apply(e[o++],i)===!1)break}else if(a){for(s in e)if(n.call(e[s],s,e[s])===!1)break}else for(;o<u;)if(n.call(e[o],o,e[o++])===!1)break;return e},trim:M?function(e){return e==null?"":M.call(e)}:function(e){return e==null?"":(e+"").replace(f,"").replace(l,"")},makeArray:function(e,t){var n=t||[];if(e!=null){var i=r.type(e);e.length==null||i==="string"||i==="function"||i==="regexp"||r.isWindow(e)?A.call(n,e):r.merge(n,e)}return n},inArray:function(e,t,n){var r;if(t){if(P)return P.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=e.length,i=0;if(typeof n.length=="number")for(var s=n.length;i<s;i++)e[r++]=n[i];else while(n[i]!==t)e[r++]=n[i++];return e.length=r,e},grep:function(e,t,n){var r=[],i;n=!!n;for(var s=0,o=e.length;s<o;s++)i=!!t(e[s],s),n!==i&&r.push(e[s]);return r},map:function(e,n,i){var s,o,u=[],a=0,f=e.length,l=e instanceof r||f!==t&&typeof f=="number"&&(f>0&&e[0]&&e[f-1]||f===0||r.isArray(e));if(l)for(;a<f;a++)s=n(e[a],a,i),s!=null&&(u[u.length]=s);else for(o in e)s=n(e[o],o,i),s!=null&&(u[u.length]=s);return u.concat.apply([],u)},guid:1,proxy:function(e,n){if(typeof n=="string"){var i=e[n];n=e,e=i}if(!r.isFunction(e))return t;var s=O.call(arguments,2),o=function(){return e.apply(n,s.concat(O.call(arguments)))};return o.guid=e.guid=e.guid||o.guid||r.guid++,o},access:function(e,n,i,s,o,u,a){var f,l=i==null,c=0,h=e.length;if(i&&typeof i=="object"){for(c in i)r.access(e,n,c,i[c],1,u,s);o=1}else if(s!==t){f=a===t&&r.isFunction(s),l&&(f?(f=n,n=function(e,t,n){return f.call(r(e),n)}):(n.call(e,s),n=null));if(n)for(;c<h;c++)n(e[c],i,f?s.call(e[c],c,n(e[c],i)):s,a);o=1}return o?e:l?n.call(e):h?n(e[0],i):u},now:function(){return(new Date).getTime()},uaMatch:function(e){e=e.toLowerCase();var t=m.exec(e)||g.exec(e)||y.exec(e)||e.indexOf("compatible")<0&&b.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},sub:function(){function e(t,n){return new e.fn.init(t,n)}r.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(n,i){return i&&i instanceof r&&!(i instanceof e)&&(i=e(i)),r.fn.init.call(this,n,i,t)},e.fn.init.prototype=e.fn;var t=e(_);return e},browser:{}}),r.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){H["[object "+t+"]"]=t.toLowerCase()}),T=r.uaMatch(x),T.browser&&(r.browser[T.browser]=!0,r.browser.version=T.version),r.browser.webkit&&(r.browser.safari=!0),a.test(" ")&&(f=/^[\s\xA0]+/,l=/[\s\xA0]+$/),o=r(_),_.addEventListener?C=function(){_.removeEventListener("DOMContentLoaded",C,!1),r.ready()}:_.attachEvent&&(C=function(){_.readyState==="complete"&&(_.detachEvent("onreadystatechange",C),r.ready())}),r}(),B={};H.Callbacks=function(e){e=e?B[e]||M(e):{};var n=[],r=[],i,s,o,u,a,f,l=function(t){var r,i,s,o,u;for(r=0,i=t.length;r<i;r++)s=t[r],o=H.type(s),o==="array"?l(s):o==="function"&&(!e.unique||!h.has(s))&&n.push(s)},c=function(t,l){l=l||[],i=!e.memory||[t,l],s=!0,o=!0,f=u||0,u=0,a=n.length;for(;n&&f<a;f++)if(n[f].apply(t,l)===!1&&e.stopOnFalse){i=!0;break}o=!1,n&&(e.once?i===!0?h.disable():n=[]:r&&r.length&&(i=r.shift(),h.fireWith(i[0],i[1])))},h={add:function(){if(n){var e=n.length;l(arguments),o?a=n.length:i&&i!==!0&&(u=e,c(i[0],i[1]))}return this},remove:function(){if(n){var t=arguments,r=0,i=t.length;for(;r<i;r++)for(var s=0;s<n.length;s++)if(t[r]===n[s]){o&&s<=a&&(a--,s<=f&&f--),n.splice(s--,1);if(e.unique)break}}return this},has:function(e){if(n){var t=0,r=n.length;for(;t<r;t++)if(e===n[t])return!0}return!1},empty:function(){return n=[],this},disable:function(){return n=r=i=t,this},disabled:function(){return!n},lock:function(){return r=t,(!i||i===!0)&&h.disable(),this},locked:function(){return!r},fireWith:function(t,n){return r&&(o?e.once||r.push([t,n]):(!e.once||!i)&&c(t,n)),this},fire:function(){return h.fireWith(this,arguments),this},fired:function(){return!!s}};return h};var j=[].slice;H.extend({Deferred:function(e){var t=H.Callbacks("once memory"),n=H.Callbacks("once memory"),r=H.Callbacks("memory"),i="pending",s={resolve:t,reject:n,notify:r},o={done:t.add,fail:n.add,progress:r.add,state:function(){return i},isResolved:t.fired,isRejected:n.fired,then:function(e,t,n){return u.done(e).fail(t).progress(n),this},always:function(){return u.done.apply(u,arguments).fail.apply(u,arguments),this},pipe:function(e,t,n){return H.Deferred(function(r){H.each({done:[e,"resolve"],fail:[t,"reject"],progress:[n,"notify"]},function(e,t){var n=t[0],i=t[1],s;H.isFunction(n)?u[e](function(){s=n.apply(this,arguments),s&&H.isFunction(s.promise)?s.promise().then(r.resolve,r.reject,r.notify):r[i+"With"](this===u?r:this,[s])}):u[e](r[i])})}).promise()},promise:function(e){if(e==null)e=o;else for(var t in o)e[t]=o[t];return e}},u=o.promise({}),a;for(a in s)u[a]=s[a].fire,u[a+"With"]=s[a].fireWith;return u.done(function(){i="resolved"},n.disable,r.lock).fail(function(){i="rejected"},t.disable,r.lock),e&&e.call(u,u),u},when:function(e){function t(e){return function(t){o[e]=arguments.length>1?j.call(arguments,0):t,f.notifyWith(l,o)}}function n(e){return function(t){r[e]=arguments.length>1?j.call(arguments,0):t,--u||f.resolveWith(f,r)}}var r=j.call(arguments,0),i=0,s=r.length,o=Array(s),u=s,a=s,f=s<=1&&e&&H.isFunction(e.promise)?e:H.Deferred(),l=f.promise();if(s>1){for(;i<s;i++)r[i]&&r[i].promise&&H.isFunction(r[i].promise)?r[i].promise().then(n(i),f.reject,t(i)):--u;u||f.resolveWith(f,r)}else f!==e&&f.resolveWith(f,s?[e]:[]);return l}}),H.support=function(){var t,n,r,i,s,o,u,a,f,l,c,h,p=_.createElement("div"),d=_.documentElement;p.setAttribute("className","t"),p.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!n.length||!r)return{};i=_.createElement("select"),s=i.appendChild(_.createElement("option")),o=p.getElementsByTagName("input")[0],t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.55/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:o.value==="on",optSelected:s.selected,getSetAttribute:p.className!=="t",enctype:!!_.createElement("form").enctype,html5Clone:_.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,pixelMargin:!0},H.boxModel=t.boxModel=_.compatMode==="CSS1Compat",o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,i.disabled=!0,t.optDisabled=!s.disabled;try{delete p.test}catch(v){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick")),o=_.createElement("input"),o.value="t",o.setAttribute("type","radio"),t.radioValue=o.value==="t",o.setAttribute("checked","checked"),o.setAttribute("name","t"),p.appendChild(o),u=_.createDocumentFragment(),u.appendChild(p.lastChild),t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=o.checked,u.removeChild(o),u.appendChild(p);if(p.attachEvent)for(c in{submit:1,change:1,focusin:1})l="on"+c,h=l in p,h||(p.setAttribute(l,"return;"),h=typeof p[l]=="function"),t[c+"Bubbles"]=h;return u.removeChild(p),u=i=s=p=o=null,H(function(){var n,r,i,s,o,u,f,l,c,d,v,m,g,y=_.getElementsByTagName("body")[0];!y||(l=1,g="padding:0;margin:0;border:",v="position:absolute;top:0;left:0;width:1px;height:1px;",m=g+"0;visibility:hidden;",c="style='"+v+g+"5px solid #000;",d="<div "+c+"display:block;'><div style='"+g+"0;display:block;overflow:hidden;'></div></div>"+"<table "+c+"' cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",n=_.createElement("div"),n.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+l+"px",y.insertBefore(n,y.firstChild),p=_.createElement("div"),n.appendChild(p),p.innerHTML="<table><tr><td style='"+g+"0;display:none'></td><td>t</td></tr></table>",a=p.getElementsByTagName("td"),h=a[0].offsetHeight===0,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=h&&a[0].offsetHeight===0,e.getComputedStyle&&(p.innerHTML="",f=_.createElement("div"),f.style.width="0",f.style.marginRight="0",p.style.width="2px",p.appendChild(f),t.reliableMarginRight=(parseInt((e.getComputedStyle(f,null)||{marginRight:0}).marginRight,10)||0)===0),typeof p.style.zoom!="undefined"&&(p.innerHTML="",p.style.width=p.style.padding="1px",p.style.border=0,p.style.overflow="hidden",p.style.display="inline",p.style.zoom=1,t.inlineBlockNeedsLayout=p.offsetWidth===3,p.style.display="block",p.style.overflow="visible",p.innerHTML="<div style='width:5px;'></div>",t.shrinkWrapBlocks=p.offsetWidth!==3),p.style.cssText=v+m,p.innerHTML=d,r=p.firstChild,i=r.firstChild,o=r.nextSibling.firstChild.firstChild,u={doesNotAddBorder:i.offsetTop!==5,doesAddBorderForTableAndCells:o.offsetTop===5},i.style.position="fixed",i.style.top="20px",u.fixedPosition=i.offsetTop===20||i.offsetTop===15,i.style.position=i.style.top="",r.style.overflow="hidden",r.style.position="relative",u.subtractsBorderForOverflowNotVisible=i.offsetTop===-5,u.doesNotIncludeMarginInBodyOffset=y.offsetTop!==l,e.getComputedStyle&&(p.style.marginTop="1%",t.pixelMargin=(e.getComputedStyle(p,null)||{marginTop:0}).marginTop!=="1%"),typeof n.style.zoom!="undefined"&&(n.style.zoom=1),y.removeChild(n),f=p=n=null,H.extend(t,u))}),t}();var F=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;H.extend({cache:{},uuid:0,expando:"jQuery"+(H.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?H.cache[e[H.expando]]:e[H.expando],!!e&&!A(e)},data:function(e,n,r,i){if(!!H.acceptData(e)){var s,o,u,a=H.expando,f=typeof n=="string",l=e.nodeType,c=l?H.cache:e,h=l?e[a]:e[a]&&a,p=n==="events";if((!h||!c[h]||!p&&!i&&!c[h].data)&&f&&r===t)return;h||(l?e[a]=h=++H.uuid:h=a),c[h]||(c[h]={},l||(c[h].toJSON=H.noop));if(typeof n=="object"||typeof n=="function")i?c[h]=H.extend(c[h],n):c[h].data=H.extend(c[h].data,n);return s=o=c[h],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[H.camelCase(n)]=r),p&&!o[n]?s.events:(f?(u=o[n],u==null&&(u=o[H.camelCase(n)])):u=o,u)}},removeData:function(e,t,n){if(!!H.acceptData(e)){var r,i,s,o=H.expando,u=e.nodeType,a=u?H.cache:e,f=u?e[o]:o;if(!a[f])return;if(t){r=n?a[f]:a[f].data;if(r){H.isArray(t)||(t in r?t=[t]:(t=H.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?A:H.isEmptyObject)(r))return}}if(!n){delete a[f].data;if(!A(a[f]))return}H.support.deleteExpando||!a.setInterval?delete a[f]:a[f]=null,u&&(H.support.deleteExpando?delete e[o]:e.removeAttribute?e.removeAttribute(o):e[o]=null)}},_data:function(e,t,n){return H.data(e,t,n,!0)},acceptData:function(e){if(e.nodeName){var t=H.noData[e.nodeName.toLowerCase()];if(t)return t!==!0&&e.getAttribute("classid")===t}return!0}}),H.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=H.data(a);if(a.nodeType===1&&!H._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")===0&&(o=H.camelCase(o.substring(5)),O(a,o,l[o]));H._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){H.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",H.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=H.data(a,e),l=O(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=H(this);t.triggerHandler("setData"+i,r),H.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){H.removeData(this,e)})}}),H.extend({_mark:function(e,t){e&&(t=(t||"fx")+"mark",H._data(e,t,(H._data(e,t)||0)+1))},_unmark:function(e,t,n){e!==!0&&(n=t,t=e,e=!1);if(t){n=n||"fx";var r=n+"mark",i=e?0:(H._data(t,r)||1)-1;i?H._data(t,r,i):(H.removeData(t,r,!0),L(t,n,"mark"))}},queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=H._data(e,t),n&&(!r||H.isArray(n)?r=H._data(e,t,H.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=H.queue(e,t),r=n.shift(),i={};r==="inprogress"&&(r=n.shift()),r&&(t==="fx"&&n.unshift("inprogress"),H._data(e,t+".run",i),r.call(e,function(){H.dequeue(e,t)},i)),n.length||(H.removeData(e,t+"queue "+t+".run",!0),L(e,t,"queue"))}}),H.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?H.queue(this[0],e):n===t?this:this.each(function(){var t=H.queue(this,e,n);e==="fx"&&t[0]!=="inprogress"&&H.dequeue(this,e)})},dequeue:function(e){return this.each(function(){H.dequeue(this,e)})},delay:function(e,t){return e=H.fx?H.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){function r(){--u||i.resolveWith(s,[s])}typeof e!="string"&&(n=e,e=t),e=e||"fx";var i=H.Deferred(),s=this,o=s.length,u=1,a=e+"defer",f=e+"queue",l=e+"mark",c;while(o--)if(c=H.data(s[o],a,t,!0)||(H.data(s[o],f,t,!0)||H.data(s[o],l,t,!0))&&H.data(s[o],a,H.Callbacks("once memory"),!0))u++,c.add(r);return r(),i.promise(n)}});var q=/[\n\t\r]/g,R=/\s+/,U=/\r/g,z=/^(?:button|input)$/i,W=/^(?:button|input|object|select|textarea)$/i,X=/^a(?:rea)?$/i,V=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,$=H.support.getSetAttribute,J,K,Q;H.fn.extend({attr:function(e,t){return H.access(this,H.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){H.removeAttr(this,e)})},prop:function(e,t){return H.access(this,H.prop,e,t,arguments.length>1)},removeProp:function(e){return e=H.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(H.isFunction(e))return this.each(function(t){H(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(R);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)~s.indexOf(" "+t[o]+" ")||(s+=t[o]+" ");i.className=H.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(H.isFunction(e))return this.each(function(t){H(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(R);for(r=0,i=this.length;r<i;r++){s=this[r];if(s.nodeType===1&&s.className)if(e){o=(" "+s.className+" ").replace(q," ");for(u=0,a=n.length;u<a;u++)o=o.replace(" "+n[u]+" "," ");s.className=H.trim(o)}else s.className=""}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return H.isFunction(e)?this.each(function(n){H(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=H(this),u=t,a=e.split(R);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&H._data(this,"__className__",this.className),this.className=this.className||e===!1?"":H._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>-1)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!!arguments.length)return i=H.isFunction(e),this.each(function(r){var s=H(this),o;if(this.nodeType===1){i?o=e.call(this,r,s.val()):o=e,o==null?o="":typeof o=="number"?o+="":H.isArray(o)&&(o=H.map(o,function(e){return e==null?"":e+""})),n=H.valHooks[this.type]||H.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,o,"value")===t)this.value=o}});if(s)return n=H.valHooks[s.type]||H.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(U,""):r==null?"":r)}}),H.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r,i,s=e.selectedIndex,o=[],u=e.options,a=e.type==="select-one";if(s<0)return null;n=a?s:0,r=a?s+1:u.length;for(;n<r;n++){i=u[n];if(i.selected&&(H.support.optDisabled?!i.disabled:i.getAttribute("disabled")===null)&&(!i.parentNode.disabled||!H.nodeName(i.parentNode,"optgroup"))){t=H(i).val();if(a)return t;o.push(t)}}return a&&!o.length&&u.length?H(u[s]).val():o},set:function(e,t){var n=H.makeArray(t);return H(e).find("option").each(function(){this.selected=H.inArray(H(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!!e&&a!==3&&a!==8&&a!==2){if(i&&n in H.attrFn)return H(e)[n](r);if(typeof e.getAttribute=="undefined")return H.prop(e,n,r);u=a!==1||!H.isXMLDoc(e),u&&(n=n.toLowerCase(),o=H.attrHooks[n]||(V.test(n)?K:J));if(r!==t){if(r===null){H.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,""+r),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)}},removeAttr:function(e,t){var n,r,i,s,o,u=0;if(t&&e.nodeType===1){r=t.toLowerCase().split(R),s=r.length;for(;u<s;u++)i=r[u],i&&(n=H.propFix[i]||i,o=V.test(i),o||H.attr(e,i,""),e.removeAttribute($?i:n),o&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(z.test(e.nodeName)&&e.parentNode)H.error("type property can't be changed");else if(!H.support.radioValue&&t==="radio"&&H.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return J&&H.nodeName(e,"button")?J.get(e,t):t in e?e.value:null},set:function(e,t,n){if(J&&H.nodeName(e,"button"))return J.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!!e&&u!==3&&u!==8&&u!==2)return o=u!==1||!H.isXMLDoc(e),o&&(n=H.propFix[n]||n,s=H.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):W.test(e.nodeName)||X.test(e.nodeName)&&e.href?0:t}}}}),H.attrHooks.tabindex=H.propHooks.tabIndex,K={get:function(e,n){var r,i=H.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?H.removeAttr(e,n):(r=H.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},$||(Q={name:!0,id:!0,coords:!0},J=H.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(Q[n]?r.nodeValue!=="":r.specified)?r.nodeValue:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=_.createAttribute(n),e.setAttributeNode(r)),r.nodeValue=t+""}},H.attrHooks.tabindex.set=J.set,H.each(["width","height"],function(e,t){H.attrHooks[t]=H.extend(H.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),H.attrHooks.contenteditable={get:J.get,set:function(e,t,n){t===""&&(t="false"),J.set(e,t,n)}}),H.support.hrefNormalized||H.each(["href","src","width","height"],function(e,n){H.attrHooks[n]=H.extend(H.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),H.support.style||(H.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=""+t}}),H.support.optSelected||(H.propHooks.selected=H.extend(H.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),H.support.enctype||(H.propFix.enctype="encoding"),H.support.checkOn||H.each(["radio","checkbox"],function(){H.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),H.each(["radio","checkbox"],function(){H.valHooks[this]=H.extend(H.valHooks[this],{set:function(e,t){if(H.isArray(t))return e.checked=H.inArray(H(e).val(),t)>=0}})});var G=/^(?:textarea|input|select)$/i,Y=/^([^\.]*)?(?:\.(.+))?$/,Z=/(?:^|\s)hover(\.\S+)?\b/,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,it=function(e){var t=rt.exec(e);return t&&(t[1]=(t[1]||"").toLowerCase(),t[3]=t[3]&&new RegExp("(?:^|\\s)"+t[3]+"(?:\\s|$)")),t},st=function(e,t){var n=e.attributes||{};return(!t[1]||e.nodeName.toLowerCase()===t[1])&&(!t[2]||(n.id||{}).value===t[2])&&(!t[3]||t[3].test((n["class"]||{}).value))},ot=function(e){return H.event.special.hover?e:e.replace(Z,"mouseenter$1 mouseleave$1")};H.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,v,m,g;if(!(e.nodeType===3||e.nodeType===8||!n||!r||!(o=H._data(e)))){r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=H.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof H=="undefined"||!!e&&H.event.triggered===e.type?t:H.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=H.trim(ot(n)).split(" ");for(f=0;f<n.length;f++){l=Y.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=H.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=H.event.special[c]||{},p=H.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,quick:s&&it(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),H.event.global[c]=!0}e=null}},global:{},remove:function(e,t,n,r,i){var s=H.hasData(e)&&H._data(e),o,u,a,f,l,c,h,p,d,v,m,g;if(!!s&&!!(p=s.events)){t=H.trim(ot(t||"")).split(" ");for(o=0;o<t.length;o++){u=Y.exec(t[o])||[],a=f=u[1],l=u[2];if(!a){for(a in p)H.event.remove(e,a+t[o],n,r,!0);continue}d=H.event.special[a]||{},a=(r?d.delegateType:d.bindType)||a,m=p[a]||[],c=m.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(h=0;h<m.length;h++)g=m[h],(i||f===g.origType)&&(!n||n.guid===g.guid)&&(!l||l.test(g.namespace))&&(!r||r===g.selector||r==="**"&&g.selector)&&(m.splice(h--,1),g.selector&&m.delegateCount--,d.remove&&d.remove.call(e,g));m.length===0&&c!==m.length&&((!d.teardown||d.teardown.call(e,l)===!1)&&H.removeEvent(e,a,s.handle),delete p[a])}H.isEmptyObject(p)&&(v=s.handle,v&&(v.elem=null),H.removeData(e,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,i,s){if(!i||i.nodeType!==3&&i.nodeType!==8){var o=n.type||n,u=[],a,f,l,c,h,p,d,v,m,g;if(nt.test(o+H.event.triggered))return;o.indexOf("!")>=0&&(o=o.slice(0,-1),f=!0),o.indexOf(".")>=0&&(u=o.split("."),o=u.shift(),u.sort());if((!i||H.event.customEvent[o])&&!H.event.global[o])return;n=typeof n=="object"?n[H.expando]?n:new H.Event(o,n):new H.Event(o),n.type=o,n.isTrigger=!0,n.exclusive=f,n.namespace=u.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+u.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,p=o.indexOf(":")<0?"on"+o:"";if(!i){a=H.cache;for(l in a)a[l].events&&a[l].events[o]&&H.event.trigger(n,r,a[l].handle.elem,!0);return}n.result=t,n.target||(n.target=i),r=r!=null?H.makeArray(r):[],r.unshift(n),d=H.event.special[o]||{};if(d.trigger&&d.trigger.apply(i,r)===!1)return;m=[[i,d.bindType||o]];if(!s&&!d.noBubble&&!H.isWindow(i)){g=d.delegateType||o,c=nt.test(g+o)?i:i.parentNode,h=null;for(;c;c=c.parentNode)m.push([c,g]),h=c;h&&h===i.ownerDocument&&m.push([h.defaultView||h.parentWindow||e,g])}for(l=0;l<m.length&&!n.isPropagationStopped();l++)c=m[l][0],n.type=m[l][1],v=(H._data(c,"events")||{})[n.type]&&H._data(c,"handle"),v&&v.apply(c,r),v=p&&c[p],v&&H.acceptData(c)&&v.apply(c,r)===!1&&n.preventDefault();return n.type=o,!s&&!n.isDefaultPrevented()&&(!d._default||d._default.apply(i.ownerDocument,r)===!1)&&(o!=="click"||!H.nodeName(i,"a"))&&H.acceptData(i)&&p&&i[o]&&(o!=="focus"&&o!=="blur"||n.target.offsetWidth!==0)&&!H.isWindow(i)&&(h=i[p],h&&(i[p]=null),H.event.triggered=o,i[o](),H.event.triggered=t,h&&(i[p]=h)),n.result}},dispatch:function(n){n=H.event.fix(n||e.event);var r=(H._data(this,"events")||{})[n.type]||[],i=r.delegateCount,s=[].slice.call(arguments,0),o=!n.exclusive&&!n.namespace,u=H.event.special[n.type]||{},a=[],f,l,c,h,p,d,v,m,g,y,b;s[0]=n,n.delegateTarget=this;if(!u.preDispatch||u.preDispatch.call(this,n)!==!1){if(i&&(!n.button||n.type!=="click")){h=H(this),h.context=this.ownerDocument||this;for(c=n.target;c!=this;c=c.parentNode||this)if(c.disabled!==!0){d={},m=[],h[0]=c;for(f=0;f<i;f++)g=r[f],y=g.selector,d[y]===t&&(d[y]=g.quick?st(c,g.quick):h.is(y)),d[y]&&m.push(g);m.length&&a.push({elem:c,matches:m})}}r.length>i&&a.push({elem:this,matches:r.slice(i)});for(f=0;f<a.length&&!n.isPropagationStopped();f++){v=a[f],n.currentTarget=v.elem;for(l=0;l<v.matches.length&&!n.isImmediatePropagationStopped();l++){g=v.matches[l];if(o||!n.namespace&&!g.namespace||n.namespace_re&&n.namespace_re.test(g.namespace))n.data=g.data,n.handleObj=g,p=((H.event.special[g.origType]||{}).handle||g.handler).apply(v.elem,s),p!==t&&(n.result=p,p===!1&&(n.preventDefault(),n.stopPropagation()))}}return u.postDispatch&&u.postDispatch.call(this,n),n.result}},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,s,o=n.button,u=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||_,i=r.documentElement,s=r.body,e.pageX=n.clientX+(i&&i.scrollLeft||s&&s.scrollLeft||0)-(i&&i.clientLeft||s&&s.clientLeft||0),e.pageY=n.clientY+(i&&i.scrollTop||s&&s.scrollTop||0)-(i&&i.clientTop||s&&s.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),!e.which&&o!==t&&(e.which=o&1?1:o&2?3:o&4?2:0),e}},fix:function(e){if(e[H.expando])return e;var n,r,i=e,s=H.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=H.Event(i);for(n=o.length;n;)r=o[--n],e[r]=i[r];return e.target||(e.target=i.srcElement||_),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey===t&&(e.metaKey=e.ctrlKey),s.filter?s.filter(e,i):e},special:{ready:{setup:H.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){H.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=H.extend(new H.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?H.event.trigger(i,null,t):H.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},H.event.handle=H.event.dispatch,H.removeEvent=_.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){e.detachEvent&&e.detachEvent("on"+t,n)},H.Event=function(e,t){if(!(this instanceof H.Event))return new H.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?C:k):this.type=e,t&&H.extend(this,t),this.timeStamp=e&&e.timeStamp||H.now(),this[H.expando]=!0},H.Event.prototype={preventDefault:function(){this.isDefaultPrevented=C;var e=this.originalEvent;!e||(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=C;var e=this.originalEvent;!e||(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=C,this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k},H.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){H.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n=this,r=e.relatedTarget,i=e.handleObj,s=i.selector,o;if(!r||r!==n&&!H.contains(n,r))e.type=i.origType,o=i.handler.apply(this,arguments),e.type=t;return o}}}),H.support.submitBubbles||(H.event.special.submit={setup:function(){if(H.nodeName(this,"form"))return!1;H.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=H.nodeName(n,"input")||H.nodeName(n,"button")?n.form:t;r&&!r._submit_attached&&(H.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),r._submit_attached=!0)})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&H.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(H.nodeName(this,"form"))return!1;H.event.remove(this,"._submit")}}),H.support.changeBubbles||(H.event.special.change={setup:function(){if(G.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")H.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),H.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1,H.event.simulate("change",this,e,!0))});return!1}H.event.add(this,"beforeactivate._change",function(e){var t=e.target;G.test(t.nodeName)&&!t._change_attached&&(H.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&H.event.simulate("change",this.parentNode,e,!0)}),t._change_attached=!0)})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return H.event.remove(this,"._change"),G.test(this.nodeName)}}),H.support.focusinBubbles||H.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){H.event.simulate(t,e.target,H.event.fix(e),!0)};H.event.special[t]={setup:function(){n++===0&&_.addEventListener(e,r,!0)},teardown:function(){--n===0&&_.removeEventListener(e,r,!0)}}}),H.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=k;else if(!i)return this;return s===1&&(o=i,i=function(e){return H().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=H.guid++)),this.each(function(){H.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){if(e&&e.preventDefault&&e.handleObj){var i=e.handleObj;return H(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this}if(typeof e=="object"){for(var s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=k),this.each(function(){H.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return H(this.context).on(e,this.selector,t,n),this},die:function(e,t){return H(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length==1?this.off(e,"**"):this.off(t,e,n)},trigger:function(e,t){return this.each(function(){H.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return H.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||H.guid++,r=0,i=function(n){var i=(H._data(this,"lastToggle"+e.guid)||0)%r;return H._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),H.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){H.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},H.attrFn&&(H.attrFn[t]=!0),et.test(t)&&(H.event.fixHooks[t]=H.event.keyHooks),tt.test(t)&&(H.event.fixHooks[t]=H.event.mouseHooks)}),function(){function e(e,t,n,r,s,o){for(var u=0,a=r.length;u<a;u++){var f=r[u];if(f){var l=!1;f=f[e];while(f){if(f[i]===n){l=r[f.sizset];break}if(f.nodeType===1){o||(f[i]=n,f.sizset=u);if(typeof t!="string"){if(f===t){l=!0;break}}else if(h.filter(t,[f]).length>0){l=f;break}}f=f[e]}r[u]=l}}}function n(e,t,n,r,s,o){for(var u=0,a=r.length;u<a;u++){var f=r[u];if(f){var l=!1;f=f[e];while(f){if(f[i]===n){l=r[f.sizset];break}f.nodeType===1&&!o&&(f[i]=n,f.sizset=u);if(f.nodeName.toLowerCase()===t){l=f;break}f=f[e]}r[u]=l}}}var r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache"+(Math.random()+"").replace(".",""),s=0,o=Object.prototype.toString,u=!1,a=!0,f=/\\/g,l=/\r\n/g,c=/\W/;[0,0].sort(function(){return a=!1,0});var h=function(e,t,n,i){n=n||[],t=t||_;var s=t;if(t.nodeType!==1&&t.nodeType!==9)return[];if(!e||typeof e!="string")return n;var u,a,f,l,c,p,m,g,b=!0,w=h.isXML(t),E=[],x=e;do{r.exec(""),u=r.exec(x);if(u){x=u[3],E.push(u[1]);if(u[2]){l=u[3];break}}}while(u);if(E.length>1&&v.exec(e))if(E.length===2&&d.relative[E[0]])a=S(E[0]+E[1],t,i);else{a=d.relative[E[0]]?[t]:h(E.shift(),t);while(E.length)e=E.shift(),d.relative[e]&&(e+=E.shift()),a=S(e,a,i)}else{!i&&E.length>1&&t.nodeType===9&&!w&&d.match.ID.test(E[0])&&!d.match.ID.test(E[E.length-1])&&(c=h.find(E.shift(),t,w),t=c.expr?h.filter(c.expr,c.set)[0]:c.set[0]);if(t){c=i?{expr:E.pop(),set:y(i)}:h.find(E.pop(),E.length!==1||E[0]!=="~"&&E[0]!=="+"||!t.parentNode?t:t.parentNode,w),a=c.expr?h.filter(c.expr,c.set):c.set,E.length>0?f=y(a):b=!1;while(E.length)p=E.pop(),m=p,d.relative[p]?m=E.pop():p="",m==null&&(m=t),d.relative[p](f,m,w)}else f=E=[]}f||(f=a),f||h.error(p||e);if(o.call(f)==="[object Array]")if(!b)n.push.apply(n,f);else if(t&&t.nodeType===1)for(g=0;f[g]!=null;g++)f[g]&&(f[g]===!0||f[g].nodeType===1&&h.contains(t,f[g]))&&n.push(a[g]);else for(g=0;f[g]!=null;g++)f[g]&&f[g].nodeType===1&&n.push(a[g]);else y(f,n);return l&&(h(l,s,n,i),h.uniqueSort(n)),n};h.uniqueSort=function(e){if(w){u=a,e.sort(w);if(u)for(var t=1;t<e.length;t++)e[t]===e[t-1]&&e.splice(t--,1)}return e},h.matches=function(e,t){return h(e,null,null,t)},h.matchesSelector=function(e,t){return h(t,null,null,[e]).length>0},h.find=function(e,t,n){var r,i,s,o,u,a;if(!e)return[];for(i=0,s=d.order.length;i<s;i++){u=d.order[i];if(o=d.leftMatch[u].exec(e)){a=o[1],o.splice(1,1);if(a.substr(a.length-1)!=="\\"){o[1]=(o[1]||"").replace(f,""),r=d.find[u](o,t,n);if(r!=null){e=e.replace(d.match[u],"");break}}}}return r||(r=typeof t.getElementsByTagName!="undefined"?t.getElementsByTagName("*"):[]),{set:r,expr:e}},h.filter=function(e,n,r,i){var s,o,u,a,f,l,c,p,v,m=e,g=[],y=n,b=n&&n[0]&&h.isXML(n[0]);while(e&&n.length){for(u in d.filter)if((s=d.leftMatch[u].exec(e))!=null&&s[2]){l=d.filter[u],c=s[1],o=!1,s.splice(1,1);if(c.substr(c.length-1)==="\\")continue;y===g&&(g=[]);if(d.preFilter[u]){s=d.preFilter[u](s,y,r,g,i,b);if(!s)o=a=!0;else if(s===!0)continue}if(s)for(p=0;(f=y[p])!=null;p++)f&&(a=l(f,s,p,y),v=i^a,r&&a!=null?v?o=!0:y[p]=!1:v&&(g.push(f),o=!0));if(a!==t){r||(y=g),e=e.replace(d.match[u],"");if(!o)return[];break}}if(e===m){if(o!=null)break;h.error(e)}m=e}return y},h.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var p=h.getText=function(e){var t,n,r=e.nodeType,i="";if(r){if(r===1||r===9||r===11){if(typeof e.textContent=="string")return e.textContent;if(typeof e.innerText=="string")return e.innerText.replace(l,"");for(e=e.firstChild;e;e=e.nextSibling)i+=p(e)}else if(r===3||r===4)return e.nodeValue}else for(t=0;n=e[t];t++)n.nodeType!==8&&(i+=p(n));return i},d=h.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(e,t){var n=typeof t=="string",r=n&&!c.test(t),i=n&&!r;r&&(t=t.toLowerCase());for(var s=0,o=e.length,u;s<o;s++)if(u=e[s]){while((u=u.previousSibling)&&u.nodeType!==1);e[s]=i||u&&u.nodeName.toLowerCase()===t?u||!1:u===t}i&&h.filter(t,e,!0)},">":function(e,t){var n,r=typeof t=="string",i=0,s=e.length;if(r&&!c.test(t)){t=t.toLowerCase();for(;i<s;i++){n=e[i];if(n){var o=n.parentNode;e[i]=o.nodeName.toLowerCase()===t?o:!1}}}else{for(;i<s;i++)n=e[i],n&&(e[i]=r?n.parentNode:n.parentNode===t);r&&h.filter(t,e,!0)}},"":function(t,r,i){var o,u=s++,a=e;typeof r=="string"&&!c.test(r)&&(r=r.toLowerCase(),o=r,a=n),a("parentNode",r,u,t,o,i)},"~":function(t,r,i){var o,u=s++,a=e;typeof r=="string"&&!c.test(r)&&(r=r.toLowerCase(),o=r,a=n),a("previousSibling",r,u,t,o,i)}},find:{ID:function(e,t,n){if(typeof t.getElementById!="undefined"&&!n){var r=t.getElementById(e[1]);return r&&r.parentNode?[r]:[]}},NAME:function(e,t){if(typeof t.getElementsByName!="undefined"){var n=[],r=t.getElementsByName(e[1]);for(var i=0,s=r.length;i<s;i++)r[i].getAttribute("name")===e[1]&&n.push(r[i]);return n.length===0?null:n}},TAG:function(e,t){if(typeof t.getElementsByTagName!="undefined")return t.getElementsByTagName(e[1])}},preFilter:{CLASS:function(e,t,n,r,i,s){e=" "+e[1].replace(f,"")+" ";if(s)return e;for(var o=0,u;(u=t[o])!=null;o++)u&&(i^(u.className&&(" "+u.className+" ").replace(/[\t\n\r]/g," ").indexOf(e)>=0)?n||r.push(u):n&&(t[o]=!1));return!1},ID:function(e){return e[1].replace(f,"")},TAG:function(e,t){return e[1].replace(f,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){e[2]||h.error(e[0]),e[2]=e[2].replace(/^\+|\s*/g,"");var t=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=t[1]+(t[2]||1)-0,e[3]=t[3]-0}else e[2]&&h.error(e[0]);return e[0]=s++,e},ATTR:function(e,t,n,r,i,s){var o=e[1]=e[1].replace(f,"");return!s&&d.attrMap[o]&&(e[1]=d.attrMap[o]),e[4]=(e[4]||e[5]||"").replace(f,""),e[2]==="~="&&(e[4]=" "+e[4]+" "),e},PSEUDO:function(e,t,n,i,s){if(e[1]==="not"){if(!((r.exec(e[3])||"").length>1||/^\w/.test(e[3]))){var o=h.filter(e[3],t,n,!0^s);return n||i.push.apply(i,o),!1}e[3]=h(e[3],null,null,t)}else if(d.match.POS.test(e[0])||d.match.CHILD.test(e[0]))return!0;return e},POS:function(e){return e.unshift(!0),e}},filters:{enabled:function(e){return e.disabled===!1&&e.type!=="hidden"},disabled:function(e){return e.disabled===!0},checked:function(e){return e.checked===!0},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!!e.firstChild},empty:function(e){return!e.firstChild},has:function(e,t,n){return!!h(n[3],e).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){var t=e.getAttribute("type"),n=e.type;return e.nodeName.toLowerCase()==="input"&&"text"===n&&(t===n||t===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(e){var t=e.nodeName.toLowerCase();return(t==="input"||t==="button")&&"submit"===e.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(e){var t=e.nodeName.toLowerCase();return(t==="input"||t==="button")&&"reset"===e.type},button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&"button"===e.type||t==="button"},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(e,t){return t===0},last:function(e,t,n,r){return t===r.length-1},even:function(e,t){return t%2===0},odd:function(e,t){return t%2===1},lt:function(e,t,n){return t<n[3]-0},gt:function(e,t,n){return t>n[3]-0},nth:function(e,t,n){return n[3]-0===t},eq:function(e,t,n){return n[3]-0===t}},filter:{PSEUDO:function(e,t,n,r){var i=t[1],s=d.filters[i];if(s)return s(e,n,t,r);if(i==="contains")return(e.textContent||e.innerText||p([e])||"").indexOf(t[3])>=0;if(i==="not"){var o=t[3];for(var u=0,a=o.length;u<a;u++)if(o[u]===e)return!1;return!0}h.error(i)},CHILD:function(e,t){var n,r,s,o,u,a,f,l=t[1],c=e;switch(l){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(l==="first")return!0;c=e;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0;case"nth":n=t[2],r=t[3];if(n===1&&r===0)return!0;s=t[0],o=e.parentNode;if(o&&(o[i]!==s||!e.nodeIndex)){a=0;for(c=o.firstChild;c;c=c.nextSibling)c.nodeType===1&&(c.nodeIndex=++a);o[i]=s}return f=e.nodeIndex-r,n===0?f===0:f%n===0&&f/n>=0}},ID:function(e,t){return e.nodeType===1&&e.getAttribute("id")===t},TAG:function(e,t){return t==="*"&&e.nodeType===1||!!e.nodeName&&e.nodeName.toLowerCase()===t},CLASS:function(e,t){return(" "+(e.className||e.getAttribute("class"))+" ").indexOf(t)>-1},ATTR:function(e,t){var n=t[1],r=h.attr?h.attr(e,n):d.attrHandle[n]?d.attrHandle[n](e):e[n]!=null?e[n]:e.getAttribute(n),i=r+"",s=t[2],o=t[4];return r==null?s==="!=":!s&&h.attr?r!=null:s==="="?i===o:s==="*="?i.indexOf(o)>=0:s==="~="?(" "+i+" ").indexOf(o)>=0:o?s==="!="?i!==o:s==="^="?i.indexOf(o)===0:s==="$="?i.substr(i.length-o.length)===o:s==="|="?i===o||i.substr(0,o.length+1)===o+"-":!1:i&&r!==!1},POS:function(e,t,n,r){var i=t[2],s=d.setFilters[i];if(s)return s(e,n,t,r)}}},v=d.match.POS,m=function(e,t){return"\\"+(t-0+1)};for(var g in d.match)d.match[g]=new RegExp(d.match[g].source+/(?![^\[]*\])(?![^\(]*\))/.source),d.leftMatch[g]=new RegExp(/(^(?:.|\r|\n)*?)/.source+d.match[g].source.replace(/\\(\d+)/g,m));d.match.globalPOS=v;var y=function(e,t){return e=Array.prototype.slice.call(e,0),t?(t.push.apply(t,e),t):e};try{Array.prototype.slice.call(_.documentElement.childNodes,0)[0].nodeType}catch(b){y=function(e,t){var n=0,r=t||[];if(o.call(e)==="[object Array]")Array.prototype.push.apply(r,e);else if(typeof e.length=="number")for(var i=e.length;n<i;n++)r.push(e[n]);else for(;e[n];n++)r.push(e[n]);return r}}var w,E;_.documentElement.compareDocumentPosition?w=function(e,t){return e===t?(u=!0,0):!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition?-1:1:e.compareDocumentPosition(t)&4?-1:1}:(w=function(e,t){if(e===t)return u=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,a=t.parentNode,f=o;if(o===a)return E(e,t);if(!o)return-1;if(!a)return 1;while(f)i.unshift(f),f=f.parentNode;f=a;while(f)s.unshift(f),f=f.parentNode;n=i.length,r=s.length;for(var l=0;l<n&&l<r;l++)if(i[l]!==s[l])return E(i[l],s[l]);return l===n?E(e,s[l],-1):E(i[l],t,1)},E=function(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}),function(){var e=_.createElement("div"),n="script"+(new Date).getTime(),r=_.documentElement;e.innerHTML="<a name='"+n+"'/>",r.insertBefore(e,r.firstChild),_.getElementById(n)&&(d.find.ID=function(e,n,r){if(typeof n.getElementById!="undefined"&&!r){var i=n.getElementById(e[1]);return i?i.id===e[1]||typeof i.getAttributeNode!="undefined"&&i.getAttributeNode("id").nodeValue===e[1]?[i]:t:[]}},d.filter.ID=function(e,t){var n=typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id");return e.nodeType===1&&n&&n.nodeValue===t}),r.removeChild(e),r=e=null}(),function(){var e=_.createElement("div");e.appendChild(_.createComment("")),e.getElementsByTagName("*").length>0&&(d.find.TAG=function(e,t){var n=t.getElementsByTagName(e[1]);if(e[1]==="*"){var r=[];for(var i=0;n[i];i++)n[i].nodeType===1&&r.push(n[i]);n=r}return n}),e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!="undefined"&&e.firstChild.getAttribute("href")!=="#"&&(d.attrHandle.href=function(e){return e.getAttribute("href",2)}),e=null}(),_.querySelectorAll&&function(){var e=h,t=_.createElement("div"),n="__sizzle__";t.innerHTML="<p class='TEST'></p>";if(!t.querySelectorAll||t.querySelectorAll(".TEST").length!==0){h=function(t,r,i,s){r=r||_;if(!s&&!h.isXML(r)){var o=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(t);if(o&&(r.nodeType===1||r.nodeType===9)){if(o[1])return y(r.getElementsByTagName(t),i);if(o[2]&&d.find.CLASS&&r.getElementsByClassName)return y(r.getElementsByClassName(o[2]),i)}if(r.nodeType===9){if(t==="body"&&r.body)return y([r.body],i);if(o&&o[3]){var u=r.getElementById(o[3]);if(!u||!u.parentNode)return y([],i);if(u.id===o[3])return y([u],i)}try{return y(r.querySelectorAll(t),i)}catch(a){}}else if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){var f=r,l=r.getAttribute("id"),c=l||n,p=r.parentNode,v=/^\s*[+~]/.test(t);l?c=c.replace(/'/g,"\\$&"):r.setAttribute("id",c),v&&p&&(r=r.parentNode);try{if(!v||p)return y(r.querySelectorAll("[id='"+c+"'] "+t),i)}catch(m){}finally{l||f.removeAttribute("id")}}}return e(t,r,i,s)};for(var r in e)h[r]=e[r];t=null}}(),function(){var e=_.documentElement,t=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(t){var n=!t.call(_.createElement("div"),"div"),r=!1;try{t.call(_.documentElement,"[test!='']:sizzle")}catch(i){r=!0}h.matchesSelector=function(e,i){i=i.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!h.isXML(e))try{if(r||!d.match.PSEUDO.test(i)&&!/!=/.test(i)){var s=t.call(e,i);if(s||!n||e.document&&e.document.nodeType!==11)return s}}catch(o){}return h(i,null,null,[e]).length>0}}}(),function(){var e=_.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!e.getElementsByClassName&&e.getElementsByClassName("e").length!==0){e.lastChild.className="e";if(e.getElementsByClassName("e").length===1)return;d.order.splice(1,0,"CLASS"),d.find.CLASS=function(e,t,n){if(typeof t.getElementsByClassName!="undefined"&&!n)return t.getElementsByClassName(e[1])},e=null}}(),_.documentElement.contains?h.contains=function(e,t){return e!==t&&(e.contains?e.contains(t):!0)}:_.documentElement.compareDocumentPosition?h.contains=function(e,t){return!!(e.compareDocumentPosition(t)&16)}:h.contains=function(){return!1},h.isXML=function(e){var t=(e?e.ownerDocument||e:0).documentElement;return t?t.nodeName!=="HTML":!1};var S=function(e,t,n){var r,i=[],s="",o=t.nodeType?[t]:t;while(r=d.match.PSEUDO.exec(e))s+=r[0],e=e.replace(d.match.PSEUDO,"");e=d.relative[e]?e+"*":e;for(var u=0,a=o.length;u<a;u++)h(e,o[u],i,n);return h.filter(s,i)};h.attr=H.attr,h.selectors.attrMap={},H.find=h,H.expr=h.selectors,H.expr[":"]=H.expr.filters,H.unique=h.uniqueSort,H.text=h.getText,H.isXMLDoc=h.isXML,H.contains=h.contains}();var ut=/Until$/,at=/^(?:parents|prevUntil|prevAll)/,ft=/,/,lt=/^.[^:#\[\.,]*$/,ct=Array.prototype.slice,ht=H.expr.match.globalPOS,pt={children:!0,contents:!0,next:!0,prev:!0};H.fn.extend({find:function(e){var t=this,n,r;if(typeof e!="string")return H(e).filter(function(){for(n=0,r=t.length;n<r;n++)if(H.contains(t[n],this))return!0});var i=this.pushStack("","find",e),s,o,u;for(n=0,r=this.length;n<r;n++){s=i.length,H.find(e,this[n],i);if(n>0)for(o=s;o<i.length;o++)for(u=0;u<s;u++)if(i[u]===i[o]){i.splice(o--,1);break}}return i},has:function(e){var t=H(e);return this.filter(function(){for(var e=0,n=t.length;e<n;e++)if(H.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(T(this,e,!1),"not",e)},filter:function(e){return this.pushStack(T(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?ht.test(e)?H(e,this.context).index(this[0])>=0:H.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n=[],r,i,s=this[0];if(H.isArray(e)){var o=1;while(s&&s.ownerDocument&&s!==t){for(r=0;r<e.length;r++)H(s).is(e[r])&&n.push({selector:e[r],elem:s,level:o});s=s.parentNode,o++}return n}var u=ht.test(e)||typeof e!="string"?H(e,t||this.context):0;for(r=0,i=this.length;r<i;r++){s=this[r];while(s){if(u?u.index(s)>-1:H.find.matchesSelector(s,e)){n.push(s);break}s=s.parentNode;if(!s||!s.ownerDocument||s===t||s.nodeType===11)break}}return n=n.length>1?H.unique(n):n,this.pushStack(n,"closest",e)},index:function(e){return e?typeof e=="string"?H.inArray(this[0],H(e)):H.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?H(e,t):H.makeArray(e&&e.nodeType?[e]:e),r=H.merge(this.get(),n);return this.pushStack(N(n[0])||N(r[0])?r:H.unique(r))},andSelf:function(){return this.add(this.prevObject)}}),H.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return H.dir(e,"parentNode")},parentsUntil:function(e,t,n){return H.dir(e,"parentNode",n)},next:function(e){return H.nth(e,2,"nextSibling")},prev:function(e){return H.nth(e,2,"previousSibling")},nextAll:function(e){return H.dir(e,"nextSibling")},prevAll:function(e){return H.dir(e,"previousSibling")},nextUntil:function(e,t,n){return H.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return H.dir(e,"previousSibling",n)},siblings:function(e){return H.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return H.sibling(e.firstChild)},contents:function(e){return H.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:H.makeArray(e.childNodes)}},function(e,t){H.fn[e]=function(n,r){var i=H.map(this,t,n);return ut.test(e)||(r=n),r&&typeof r=="string"&&(i=H.filter(r,i)),i=this.length>1&&!pt[e]?H.unique(i):i,(this.length>1||ft.test(r))&&at.test(e)&&(i=i.reverse()),this.pushStack(i,e,ct.call(arguments).join(","))}}),H.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?H.find.matchesSelector(t[0],e)?[t[0]]:[]:H.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!H(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},nth:function(e,t,n,r){t=t||1;var i=0;for(;e;e=e[n])if(e.nodeType===1&&++i===t)break;return e},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var dt="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",vt=/ jQuery\d+="(?:\d+|null)"/g,mt=/^\s+/,gt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,yt=/<([\w:]+)/,bt=/<tbody/i,wt=/<|&#?\w+;/,Et=/<(?:script|style)/i,St=/<(?:script|object|embed|option|style)/i,xt=new RegExp("<(?:"+dt+")[\\s/>]","i"),Tt=/checked\s*(?:[^=]|=\s*.checked.)/i,Nt=/\/(java|ecma)script/i,Ct=/^\s*<!(?:\[CDATA\[|\-\-)/,kt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Lt=x(_);kt.optgroup=kt.option,kt.tbody=kt.tfoot=kt.colgroup=kt.caption=kt.thead,kt.th=kt.td,H.support.htmlSerialize||(kt._default=[1,"div<div>","</div>"]),H.fn.extend({text:function(e){return H.access(this,function(e){return e===t?H.text(this):this.empty().append((this[0]&&this[0].ownerDocument||_).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(H.isFunction(e))return this.each(function(t){H(this).wrapAll(e.call(this,t))});if(this[0]){var t=H(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return H.isFunction(e)?this.each(function(t){H(this).wrapInner(e.call(this,t))}):this.each(function(){var t=H(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=H.isFunction(e);return this.each(function(n){H(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){H.nodeName(this,"body")||H(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){this.nodeType===1&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){this.nodeType===1&&this.insertBefore(e,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=H.clean(arguments);return e.push.apply(e,this.toArray()),this.pushStack(e,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=this.pushStack(this,"after",arguments);return e.push.apply(e,H.clean(arguments)),e}},remove:function(e,t){for(var n=0,r;(r=this[n])!=null;n++)if(!e||H.filter(e,[r]).length)!t&&r.nodeType===1&&(H.cleanData(r.getElementsByTagName("*")),H.cleanData([r])),r.parentNode&&r.parentNode.removeChild(r);return this},empty:function(){for(var e=0,t;(t=this[e])!=null;e++){t.nodeType===1&&H.cleanData(t.getElementsByTagName("*"));while(t.firstChild)t.removeChild(t.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return H.clone(this,e,t)})},html:function(e){return H.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(vt,""):null;if(typeof e=="string"&&!Et.test(e)&&(H.support.leadingWhitespace||!mt.test(e))&&!kt[(yt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(gt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(H.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return this[0]&&this[0].parentNode?H.isFunction(e)?this.each(function(t){var n=H(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=H(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;H(this).remove(),t?H(t).before(e):H(n).append(e)})):this.length?this.pushStack(H(H.isFunction(e)?e():e),"replaceWith",e):this},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){var i,s,o,u,a=e[0],f=[];if(!H.support.checkClone&&arguments.length===3&&typeof a=="string"&&Tt.test(a))return this.each(function(){H(this).domManip(e,n,r,!0)});if(H.isFunction(a))return this.each(function(i){var s=H(this);e[0]=a.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){u=a&&a.parentNode,H.support.parentNode&&u&&u.nodeType===11&&u.childNodes.length===this.length?i={fragment:u}:i=H.buildFragment(e,this,f),o=i.fragment,o.childNodes.length===1?s=o=o.firstChild:s=o.firstChild;if(s){n=n&&H.nodeName(s,"tr");for(var l=0,c=this.length,h=c-1;l<c;l++)r.call(n?S(this[l],s):this[l],i.cacheable||c>1&&l<h?H.clone(o,!0,!0):o)}f.length&&H.each(f,function(e,t){t.src?H.ajax({type:"GET",global:!1,url:t.src,async:!1,dataType:"script"}):H.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Ct,"/*$0*/")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),H.buildFragment=function(e,t,n){var r,i,s,o,u=e[0];return t&&t[0]&&(o=t[0].ownerDocument||t[0]),o.createDocumentFragment||(o=_),e.length===1&&typeof u=="string"&&u.length<512&&o===_&&u.charAt(0)==="<"&&!St.test(u)&&(H.support.checkClone||!Tt.test(u))&&(H.support.html5Clone||!xt.test(u))&&(i=!0,s=H.fragments[u],s&&s!==1&&(r=s)),r||(r=o.createDocumentFragment(),H.clean(e,o,r,n)),i&&(H.fragments[u]=s?r:1),{fragment:r,cacheable:i}},H.fragments={},H.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){H.fn[e]=function(n){var r=[],i=H(n),s=this.length===1&&this[0].parentNode;if(s&&s.nodeType===11&&s.childNodes.length===1&&i.length===1)return i[t](this[0]),this;for(var o=0,u=i.length;o<u;o++){var a=(o>0?this.clone(!0):this).get();H(i[o])[t](a),r=r.concat(a)}return this.pushStack(r,e,i.selector)}}),H.extend({clone:function(e,t,n){var r,i,s,o=H.support.html5Clone||H.isXMLDoc(e)||!xt.test("<"+e.nodeName+">")?e.cloneNode(!0):m(e);if((!H.support.noCloneEvent||!H.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!H.isXMLDoc(e)){w(e,o),r=b(e),i=b(o);for(s=0;r[s];++s)i[s]&&w(r[s],i[s])}if(t){E(e,o);if(n){r=b(e),i=b(o);for(s=0;r[s];++s)E(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var i,s,o,u=[];t=t||_,typeof t.createElement=="undefined"&&(t=t.ownerDocument||t[0]&&t[0].ownerDocument||_);for(var a=0,f;(f=e[a])!=null;a++){typeof f=="number"&&(f+="");if(!f)continue;if(typeof f=="string")if(!wt.test(f))f=t.createTextNode(f);else{f=f.replace(gt,"<$1></$2>");var l=(yt.exec(f)||["",""])[1].toLowerCase(),c=kt[l]||kt._default,h=c[0],p=t.createElement("div"),d=Lt.childNodes,v;t===_?Lt.appendChild(p):x(t).appendChild(p),p.innerHTML=c[1]+f+c[2];while(h--)p=p.lastChild;if(!H.support.tbody){var m=bt.test(f),y=l==="table"&&!m?p.firstChild&&p.firstChild.childNodes:c[1]==="<table>"&&!m?p.childNodes:[];for(o=y.length-1;o>=0;--o)H.nodeName(y[o],"tbody")&&!y[o].childNodes.length&&y[o].parentNode.removeChild(y[o])}!H.support.leadingWhitespace&&mt.test(f)&&p.insertBefore(t.createTextNode(mt.exec(f)[0]),p.firstChild),f=p.childNodes,p&&(p.parentNode.removeChild(p),d.length>0&&(v=d[d.length-1],v&&v.parentNode&&v.parentNode.removeChild(v)))}var b;if(!H.support.appendChecked)if(f[0]&&typeof (b=f.length)=="number")for(o=0;o<b;o++)g(f[o]);else g(f);f.nodeType?u.push(f):u=H.merge(u,f)}if(n){i=function(e){return!e.type||Nt.test(e.type)};for(a=0;u[a];a++){s=u[a];if(r&&H.nodeName(s,"script")&&(!s.type||Nt.test(s.type)))r.push(s.parentNode?s.parentNode.removeChild(s):s);else{if(s.nodeType===1){var w=H.grep(s.getElementsByTagName("script"),i);u.splice.apply(u,[a+1,0].concat(w))}n.appendChild(s)}}}return u},cleanData:function(e){var t,n,r=H.cache,i=H.event.special,s=H.support.deleteExpando;for(var o=0,u;(u=e[o])!=null;o++){if(u.nodeName&&H.noData[u.nodeName.toLowerCase()])continue;n=u[H.expando];if(n){t=r[n];if(t&&t.events){for(var a in t.events)i[a]?H.event.remove(u,a):H.removeEvent(u,a,t.handle);t.handle&&(t.handle.elem=null)}s?delete u[H.expando]:u.removeAttribute&&u.removeAttribute(H.expando),delete r[n]}}}});var At=/alpha\([^)]*\)/i,Ot=/opacity=([^)]*)/,Mt=/([A-Z]|^ms)/g,_t=/^[\-+]?(?:\d*\.)?\d+$/i,Dt=/^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,Pt=/^([\-+])=([\-+.\de]+)/,Ht=/^margin/,Bt={position:"absolute",visibility:"hidden",display:"block"},jt=["Top","Right","Bottom","Left"],Ft,It,qt;H.fn.css=function(e,n){return H.access(this,function(e,n,r){return r!==t?H.style(e,n,r):H.css(e,n)},e,n,arguments.length>1)},H.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ft(e,"opacity");return n===""?"1":n}return e.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":H.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!!e&&e.nodeType!==3&&e.nodeType!==8&&!!e.style){var s,o,u=H.camelCase(n),a=e.style,f=H.cssHooks[u];n=H.cssProps[u]||u;if(r===t)return f&&"get"in f&&(s=f.get(e,!1,i))!==t?s:a[n];o=typeof r,o==="string"&&(s=Pt.exec(r))&&(r=+(s[1]+1)*+s[2]+parseFloat(H.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!H.cssNumber[u]&&(r+="px");if(!f||!("set"in f)||(r=f.set(e,r))!==t)try{a[n]=r}catch(l){}}},css:function(e,n,r){var i,s;n=H.camelCase(n),s=H.cssHooks[n],n=H.cssProps[n]||n,n==="cssFloat"&&(n="float");if(s&&"get"in s&&(i=s.get(e,!0,r))!==t)return i;if(Ft)return Ft(e,n)},swap:function(e,t,n){var r={},i,s;for(s in t)r[s]=e.style[s],e.style[s]=t[s];i=n.call(e);for(s in t)e.style[s]=r[s];return i}}),H.curCSS=H.css,_.defaultView&&_.defaultView.getComputedStyle&&(It=function(e,t){var n,r,i,s,o=e.style;return t=t.replace(Mt,"-$1").toLowerCase(),(r=e.ownerDocument.defaultView)&&(i=r.getComputedStyle(e,null))&&(n=i.getPropertyValue(t),n===""&&!H.contains(e.ownerDocument.documentElement,e)&&(n=H.style(e,t))),!H.support.pixelMargin&&i&&Ht.test(t)&&Dt.test(n)&&(s=o.width,o.width=n,n=i.width,o.width=s),n}),_.documentElement.currentStyle&&(qt=function(e,t){var n,r,i,s=e.currentStyle&&e.currentStyle[t],o=e.style;return s==null&&o&&(i=o[t])&&(s=i),Dt.test(s)&&(n=o.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),o.left=t==="fontSize"?"1em":s,s=o.pixelLeft+"px",o.left=n,r&&(e.runtimeStyle.left=r)),s===""?"auto":s}),Ft=It||qt,H.each(["height","width"],function(e,t){H.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth!==0?v(e,t,r):H.swap(e,Bt,function(){return v(e,t,r)})},set:function(e,t){return _t.test(t)?t+"px":t}}}),H.support.opacity||(H.cssHooks.opacity={get:function(e,t){return Ot.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?parseFloat(RegExp.$1)/100+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=H.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&H.trim(s.replace(At,""))===""){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=At.test(s)?s.replace(At,i):s+" "+i}}),H(function(){H.support.reliableMarginRight||(H.cssHooks.marginRight={get:function(e,t){return H.swap(e,{display:"inline-block"},function(){return t?Ft(e,"margin-right"):e.style.marginRight})}})}),H.expr&&H.expr.filters&&(H.expr.filters.hidden=function(e){var t=e.offsetWidth,n=e.offsetHeight;return t===0&&n===0||!H.support.reliableHiddenOffsets&&(e.style&&e.style.display||H.css(e,"display"))==="none"},H.expr.filters.visible=function(e){return!H.expr.filters.hidden(e)}),H.each({margin:"",padding:"",border:"Width"},function(e,t){H.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+jt[r]+t]=i[r]||i[r-2]||i[0];return s}}});var Rt=/%20/g,Ut=/\[\]$/,zt=/\r?\n/g,Wt=/#.*$/,Xt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,Vt=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,$t=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,Jt=/^(?:GET|HEAD)$/,Kt=/^\/\//,Qt=/\?/,Gt=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,Yt=/^(?:select|textarea)/i,Zt=/\s+/,en=/([?&])_=[^&]*/,tn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,nn=H.fn.load,rn={},sn={},on,un,an=["*/"]+["*"];try{on=P.href}catch(fn){on=_.createElement("a"),on.href="",on=on.href}un=tn.exec(on.toLowerCase())||[],H.fn.extend({load:function(e,n,r){if(typeof e!="string"&&nn)return nn.apply(this,arguments);if(!this.length)return this;var i=e.indexOf(" ");if(i>=0){var s=e.slice(i,e.length);e=e.slice(0,i)}var o="GET";n&&(H.isFunction(n)?(r=n,n=t):typeof n=="object"&&(n=H.param(n,H.ajaxSettings.traditional),o="POST"));var u=this;return H.ajax({url:e,type:o,dataType:"html",data:n,complete:function(e,t,n){n=e.responseText,e.isResolved()&&(e.done(function(e){n=e}),u.html(s?H("<div>").append(n.replace(Gt,"")).find(s):n)),r&&u.each(r,[n,t,e])}}),this},serialize:function(){return H.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?H.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||Yt.test(this.nodeName)||Vt.test(this.type))}).map(function(e,t){var n=H(this).val();return n==null?null:H.isArray(n)?H.map(n,function(e,n){return{name:t.name,value:e.replace(zt,"\r\n")}}):{name:t.name,value:n.replace(zt,"\r\n")}}).get()}}),H.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){H.fn[t]=function(e){return this.on(t,e)}}),H.each(["get","post"],function(e,n){H[n]=function(e,r,i,s){return H.isFunction(r)&&(s=s||i,i=r,r=t),H.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),H.extend({getScript:function(e,n){return H.get(e,t,n,"script")},getJSON:function(e,t,n){return H.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?h(e,H.ajaxSettings):(t=e,e=H.ajaxSettings),h(e,t),e},ajaxSettings:{url:on,isLocal:$t.test(un[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":an},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":H.parseJSON,"text xml":H.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:d(rn),ajaxTransport:d(sn),ajax:function(e,n){function r(e,n,r,p){if(E!==2){E=2,b&&clearTimeout(b),y=t,m=p||"",T.readyState=e>0?4:0;var d,v,g,w=n,x=r?l(i,T,r):t,N,C;if(e>=200&&e<300||e===304){if(i.ifModified){if(N=T.getResponseHeader("Last-Modified"))H.lastModified[h]=N;if(C=T.getResponseHeader("Etag"))H.etag[h]=C}if(e===304)w="notmodified",d=!0;else try{v=f(i,x),w="success",d=!0}catch(k){w="parsererror",g=k}}else{g=w;if(!w||e)w="error",e<0&&(e=0)}T.status=e,T.statusText=""+(n||w),d?u.resolveWith(s,[v,w,T]):u.rejectWith(s,[T,w,g]),T.statusCode(c),c=t,S&&o.trigger("ajax"+(d?"Success":"Error"),[T,i,d?v:g]),a.fireWith(s,[T,w]),S&&(o.trigger("ajaxComplete",[T,i]),--H.active||H.event.trigger("ajaxStop"))}}typeof e=="object"&&(n=e,e=t),n=n||{};var i=H.ajaxSetup({},n),s=i.context||i,o=s!==i&&(s.nodeType||s instanceof H)?H(s):H.event,u=H.Deferred(),a=H.Callbacks("once memory"),c=i.statusCode||{},h,d={},v={},m,g,y,b,w,E=0,S,x,T={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=v[n]=v[n]||e,d[e]=t}return this},getAllResponseHeaders:function(){return E===2?m:null},getResponseHeader:function(e){var n;if(E===2){if(!g){g={};while(n=Xt.exec(m))g[n[1].toLowerCase()]=n[2]}n=g[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(i.mimeType=e),this},abort:function(e){return e=e||"abort",y&&y.abort(e),r(0,e),this}};u.promise(T),T.success=T.done,T.error=T.fail,T.complete=a.add,T.statusCode=function(e){if(e){var t;if(E<2)for(t in e)c[t]=[c[t],e[t]];else t=e[T.status],T.then(t,t)}return this},i.url=((e||i.url)+"").replace(Wt,"").replace(Kt,un[1]+"//"),i.dataTypes=H.trim(i.dataType||"*").toLowerCase().split(Zt),i.crossDomain==null&&(w=tn.exec(i.url.toLowerCase()),i.crossDomain=!(!w||w[1]==un[1]&&w[2]==un[2]&&(w[3]||(w[1]==="http:"?80:443))==(un[3]||(un[1]==="http:"?80:443)))),i.data&&i.processData&&typeof i.data!="string"&&(i.data=H.param(i.data,i.traditional)),p(rn,i,n,T);if(E===2)return!1;S=i.global,i.type=i.type.toUpperCase(),i.hasContent=!Jt.test(i.type),S&&H.active++===0&&H.event.trigger("ajaxStart");if(!i.hasContent){i.data&&(i.url+=(Qt.test(i.url)?"&":"?")+i.data,delete i.data),h=i.url;if(i.cache===!1){var N=H.now(),C=i.url.replace(en,"$1_="+N);i.url=C+(C===i.url?(Qt.test(i.url)?"&":"?")+"_="+N:"")}}(i.data&&i.hasContent&&i.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",i.contentType),i.ifModified&&(h=h||i.url,H.lastModified[h]&&T.setRequestHeader("If-Modified-Since",H.lastModified[h]),H.etag[h]&&T.setRequestHeader("If-None-Match",H.etag[h])),T.setRequestHeader("Accept",i.dataTypes[0]&&i.accepts[i.dataTypes[0]]?i.accepts[i.dataTypes[0]]+(i.dataTypes[0]!=="*"?", "+an+"; q=0.01":""):i.accepts["*"]);for(x in i.headers)T.setRequestHeader(x,i.headers[x]);if(!i.beforeSend||i.beforeSend.call(s,T,i)!==!1&&E!==2){for(x in{success:1,error:1,complete:1})T[x](i[x]);y=p(sn,i,n,T);if(!y)r(-1,"No Transport");else{T.readyState=1,S&&o.trigger("ajaxSend",[T,i]),i.async&&i.timeout>0&&(b=setTimeout(function(){T.abort("timeout")},i.timeout));try{E=1,y.send(d,r)}catch(k){if(!(E<2))throw k;r(-1,k)}}return T}return T.abort(),!1},param:function(e,n){var r=[],i=function(e,t){t=H.isFunction(t)?t():t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=H.ajaxSettings.traditional);if(H.isArray(e)||e.jquery&&!H.isPlainObject(e))H.each(e,function(){i(this.name,this.value)});else for(var s in e)c(s,e[s],n,i);return r.join("&").replace(Rt,"+")}}),H.extend({active:0,lastModified:{},etag:{}});var ln=H.now(),cn=/(\=)\?(&|$)|\?\?/i;H.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return H.expando+"_"+ln++}}),H.ajaxPrefilter("json jsonp",function(t,n,r){var i=typeof t.data=="string"&&/^application\/x\-www\-form\-urlencoded/.test(t.contentType);if(t.dataTypes[0]==="jsonp"||t.jsonp!==!1&&(cn.test(t.url)||i&&cn.test(t.data))){var s,o=t.jsonpCallback=H.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,u=e[o],a=t.url,f=t.data,l="$1"+o+"$2";return t.jsonp!==!1&&(a=a.replace(cn,l),t.url===a&&(i&&(f=f.replace(cn,l)),t.data===f&&(a+=(/\?/.test(a)?"&":"?")+t.jsonp+"="+o))),t.url=a,t.data=f,e[o]=function(e){s=[e]},r.always(function(){e[o]=u,s&&H.isFunction(u)&&e[o](s[0])}),t.converters["script json"]=function(){return s||H.error(o+" was not called"),s[0]},t.dataTypes[0]="json","script"}}),H.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return H.globalEval(e),e}}}),H.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),H.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=_.head||_.getElementsByTagName("head")[0]||_.documentElement;return{send:function(i,s){n=_.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||s(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var hn=e.ActiveXObject?function(){for(var e in dn)dn[e](0,1)}:!1,pn=0,dn;H.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&a()||u()}:a,function(e){H.extend(H.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(H.ajaxSettings.xhr()),H.support.ajax&&H.ajaxTransport(function(n){if(!n.crossDomain||H.support.cors){var r;return{send:function(i,s){var o=n.xhr(),u,a;n.username?o.open(n.type,n.url,n.async,n.username,n.password):o.open(n.type,n.url,n.async);if(n.xhrFields)for(a in n.xhrFields)o[a]=n.xhrFields[a];n.mimeType&&o.overrideMimeType&&o.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(a in i)o.setRequestHeader(a,i[a])}catch(f){}o.send(n.hasContent&&n.data||null),r=function(e,i){var a,f,l,c,h;try{if(r&&(i||o.readyState===4)){r=t,u&&(o.onreadystatechange=H.noop,hn&&delete dn[u]);if(i)o.readyState!==4&&o.abort();else{a=o.status,l=o.getAllResponseHeaders(),c={},h=o.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=o.responseText}catch(e){}try{f=o.statusText}catch(p){f=""}!a&&n.isLocal&&!n.crossDomain?a=c.text?200:404:a===1223&&(a=204)}}}catch(d){i||s(-1,d)}c&&s(a,f,c,l)},!n.async||o.readyState===4?r():(u=++pn,hn&&(dn||(dn={},H(e).unload(hn)),dn[u]=r),o.onreadystatechange=r)},abort:function(){r&&r(0,1)}}}});var vn={},mn,gn,yn=/^(?:toggle|show|hide)$/,bn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,wn,En=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],Sn;H.fn.extend({show:function(e,t,n){var s,o;if(e||e===0)return this.animate(i("show",3),e,t,n);for(var u=0,a=this.length;u<a;u++)s=this[u],s.style&&(o=s.style.display,!H._data(s,"olddisplay")&&o==="none"&&(o=s.style.display=""),(o===""&&H.css(s,"display")==="none"||!H.contains(s.ownerDocument.documentElement,s))&&H._data(s,"olddisplay",r(s.nodeName)));for(u=0;u<a;u++){s=this[u];if(s.style){o=s.style.display;if(o===""||o==="none")s.style.display=H._data(s,"olddisplay")||""}}return this},hide:function(e,t,n){if(e||e===0)return this.animate(i("hide",3),e,t,n);var r,s,o=0,u=this.length;for(;o<u;o++)r=this[o],r.style&&(s=H.css(r,"display"),s!=="none"&&!H._data(r,"olddisplay")&&H._data(r,"olddisplay",s));for(o=0;o<u;o++)this[o].style&&(this[o].style.display="none");return this},_toggle:H.fn.toggle,toggle:function(e,t,n){var r=typeof e=="boolean";return H.isFunction(e)&&H.isFunction(t)?this._toggle.apply(this,arguments):e==null||r?this.each(function(){var t=r?e:H(this).is(":hidden");H(this)[t?"show":"hide"]()}):this.animate(i("toggle",3),e,t,n),this},fadeTo:function(e,t,n,r){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,i){function s(){o.queue===!1&&H._mark(this);var t=H.extend({},o),n=this.nodeType===1,i=n&&H(this).is(":hidden"),s,u,a,f,l,c,h,p,d,v,m;t.animatedProperties={};for(a in e){s=H.camelCase(a),a!==s&&(e[s]=e[a],delete e[a]);if((l=H.cssHooks[s])&&"expand"in l){c=l.expand(e[s]),delete e[s];for(a in c)a in e||(e[a]=c[a])}}for(s in e){u=e[s],H.isArray(u)?(t.animatedProperties[s]=u[1],u=e[s]=u[0]):t.animatedProperties[s]=t.specialEasing&&t.specialEasing[s]||t.easing||"swing";if(u==="hide"&&i||u==="show"&&!i)return t.complete.call(this);n&&(s==="height"||s==="width")&&(t.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],H.css(this,"display")==="inline"&&H.css(this,"float")==="none"&&(!H.support.inlineBlockNeedsLayout||r(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}t.overflow!=null&&(this.style.overflow="hidden");for(a in e)f=new H.fx(this,t,a),u=e[a],yn.test(u)?(m=H._data(this,"toggle"+a)||(u==="toggle"?i?"show":"hide":0),m?(H._data(this,"toggle"+a,m==="show"?"hide":"show"),f[m]()):f[u]()):(h=bn.exec(u),p=f.cur(),h?(d=parseFloat(h[2]),v=h[3]||(H.cssNumber[a]?"":"px"),v!=="px"&&(H.style(this,a,(d||1)+v),p=(d||1)/f.cur()*p,H.style(this,a,p+v)),h[1]&&(d=(h[1]==="-="?-1:1)*d+p),f.custom(p,d,v)):f.custom(p,u,""));return!0}var o=H.speed(t,n,i);return H.isEmptyObject(e)?this.each(o.complete,[!1]):(e=H.extend({},e),o.queue===!1?this.each(s):this.queue(o.queue,s))},stop:function(e,n,r){return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){function t(e,t,n){var i=t[n];H.removeData(e,n,!0),i.stop(r)}var n,i=!1,s=H.timers,o=H._data(this);r||H._unmark(!0,this);if(e==null)for(n in o)o[n]&&o[n].stop&&n.indexOf(".run")===n.length-4&&t(this,o,n);else o[n=e+".run"]&&o[n].stop&&t(this,o,n);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(r?s[n](!0):s[n].saveState(),i=!0,s.splice(n,1));(!r||!i)&&H.dequeue(this,e)})}}),H.each({slideDown:i("show",1),slideUp:i("hide",1),slideToggle:i("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){H.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),H.extend({speed:function(e,t,n){var r=e&&typeof e=="object"?H.extend({},e):{complete:n||!n&&t||H.isFunction(e)&&e,duration:e,easing:n&&t||t&&!H.isFunction(t)&&t};r.duration=H.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in H.fx.speeds?H.fx.speeds[r.duration]:H.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(e){H.isFunction(r.old)&&r.old.call(this),r.queue?H.dequeue(this,r.queue):e!==!1&&H._unmark(this)},r},easing:{linear:function(e){return e},swing:function(e){return-Math.cos(e*Math.PI)/2+.5}},timers:[],fx:function(e,t,n){this.options=t,this.elem=e,this.prop=n,t.orig=t.orig||{}}}),H.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(H.fx.step[this.prop]||H.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]==null||!!this.elem.style&&this.elem.style[this.prop]!=null){var e,t=H.css(this.elem,this.prop);return isNaN(e=parseFloat(t))?!t||t==="auto"?0:t:e}return this.elem[this.prop]},custom:function(e,n,r){function i(e){return s.step(e)}var s=this,u=H.fx;this.startTime=Sn||o(),this.end=n,this.now=this.start=e,this.pos=this.state=0,this.unit=r||this.unit||(H.cssNumber[this.prop]?"":"px"),i.queue=this.options.queue,i.elem=this.elem,i.saveState=function(){H._data(s.elem,"fxshow"+s.prop)===t&&(s.options.hide?H._data(s.elem,"fxshow"+s.prop,s.start):s.options.show&&H._data(s.elem,"fxshow"+s.prop,s.end))},i()&&H.timers.push(i)&&!wn&&(wn=setInterval(u.tick,u.interval))},show:function(){var e=H._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||H.style(this.elem,this.prop),this.options.show=!0,e!==t?this.custom(this.cur(),e):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),H(this.elem).show()},hide:function(){this.options.orig[this.prop]=H._data(this.elem,"fxshow"+this.prop)||H.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(e){var t,n,r,i=Sn||o(),s=!0,u=this.elem,a=this.options;if(e||i>=a.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),a.animatedProperties[this.prop]=!0;for(t in a.animatedProperties)a.animatedProperties[t]!==!0&&(s=!1);if(s){a.overflow!=null&&!H.support.shrinkWrapBlocks&&H.each(["","X","Y"],function(e,t){u.style["overflow"+t]=a.overflow[e]}),a.hide&&H(u).hide();if(a.hide||a.show)for(t in a.animatedProperties)H.style(u,t,a.orig[t]),H.removeData(u,"fxshow"+t,!0),H.removeData(u,"toggle"+t,!0);r=a.complete,r&&(a.complete=!1,r.call(u))}return!1}return a.duration==Infinity?this.now=i:(n=i-this.startTime,this.state=n/a.duration,this.pos=H.easing[a.animatedProperties[this.prop]](this.state,n,0,1,a.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update(),!0}},H.extend(H.fx,{tick:function(){var e,t=H.timers,n=0;for(;n<t.length;n++)e=t[n],!e()&&t[n]===e&&t.splice(n--,1);t.length||H.fx.stop()},interval:13,stop:function(){clearInterval(wn),wn=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){H.style(e.elem,"opacity",e.now)},_default:function(e){e.elem.style&&e.elem.style[e.prop]!=null?e.elem.style[e.prop]=e.now+e.unit:e.elem[e.prop]=e.now}}}),H.each(En.concat.apply([],En),function(e,t){t.indexOf("margin")&&(H.fx.step[t]=function(e){H.style(e.elem,t,Math.max(0,e.now)+e.unit)})}),H.expr&&H.expr.filters&&(H.expr.filters.animated=function(e){return H.grep(H.timers,function(t){return e===t.elem}).length});var xn,Tn=/^t(?:able|d|h)$/i,Nn=/^(?:body|html)$/i;"getBoundingClientRect"in _.documentElement?xn=function(e,t,r,i){try{i=e.getBoundingClientRect()}catch(s){}if(!i||!H.contains(r,e))return i?{top:i.top,left:i.left}:{top:0,left:0};var o=t.body,u=n(t),a=r.clientTop||o.clientTop||0,f=r.clientLeft||o.clientLeft||0,l=u.pageYOffset||H.support.boxModel&&r.scrollTop||o.scrollTop,c=u.pageXOffset||H.support.boxModel&&r.scrollLeft||o.scrollLeft,h=i.top+l-a,p=i.left+c-f;return{top:h,left:p}}:xn=function(e,t,n){var r,i=e.offsetParent,s=e,o=t.body,u=t.defaultView,a=u?u.getComputedStyle(e,null):e.currentStyle,f=e.offsetTop,l=e.offsetLeft;while((e=e.parentNode)&&e!==o&&e!==n){if(H.support.fixedPosition&&a.position==="fixed")break;r=u?u.getComputedStyle(e,null):e.currentStyle,f-=e.scrollTop,l-=e.scrollLeft,e===i&&(f+=e.offsetTop,l+=e.offsetLeft,H.support.doesNotAddBorder&&(!H.support.doesAddBorderForTableAndCells||!Tn.test(e.nodeName))&&(f+=parseFloat(r.borderTopWidth)||0,l+=parseFloat(r.borderLeftWidth)||0),s=i,i=e.offsetParent),H.support.subtractsBorderForOverflowNotVisible&&r.overflow!=="visible"&&(f+=parseFloat(r.borderTopWidth)||0,l+=parseFloat(r.borderLeftWidth)||0),a=r}if(a.position==="relative"||a.position==="static")f+=o.offsetTop,l+=o.offsetLeft;return H.support.fixedPosition&&a.position==="fixed"&&(f+=Math.max(n.scrollTop,o.scrollTop),l+=Math.max(n.scrollLeft,o.scrollLeft)),{top:f,left:l}},H.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){H.offset.setOffset(this,e,t)});var n=this[0],r=n&&n.ownerDocument;return r?n===r.body?H.offset.bodyOffset(n):xn(n,r,r.documentElement):null},H.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return H.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(H.css(e,"marginTop"))||0,n+=parseFloat(H.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=H.css(e,"position");r==="static"&&(e.style.position="relative");var i=H(e),s=i.offset(),o=H.css(e,"top"),u=H.css(e,"left"),a=(r==="absolute"||r==="fixed")&&H.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),H.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},H.fn.extend({position:function(){if(!this[0])return null;var e=this[0],t=this.offsetParent(),n=this.offset(),r=Nn.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(H.css(e,"marginTop"))||0,n.left-=parseFloat(H.css(e,"marginLeft"))||0,r.top+=parseFloat(H.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(H.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||_.body;while(e&&!Nn.test(e.nodeName)&&H.css(e,"position")==="static")e=e.offsetParent;return e})}}),H.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,r){var i=/Y/.test(r);H.fn[e]=function(s){return H.access(this,function(e,s,o){var u=n(e);if(o===t)return u?r in u?u[r]:H.support.boxModel&&u.document.documentElement[s]||u.document.body[s]:e[s];u?u.scrollTo(i?H(u).scrollLeft():o,i?o:H(u).scrollTop()):e[s]=o},e,s,arguments.length,null)}}),H.each({Height:"height",Width:"width"},function(e,n){var r="client"+e,i="scroll"+e,s="offset"+e;H.fn["inner"+e]=function(){var e=this[0];return e?e.style?parseFloat(H.css(e,n,"padding")):this[n]():null},H.fn["outer"+e]=function(e){var t=this[0];return t?t.style?parseFloat(H.css(t,n,e?"margin":"border")):this[n]():null},H.fn[n]=function(e){return H.access(this,function(e,n,o){var u,a,f,l;if(H.isWindow(e))return u=e.document,a=u.documentElement[r],H.support.boxModel&&a||u.body&&u.body[r]||a;if(e.nodeType===9)return u=e.documentElement,u[r]>=u[i]?u[r]:Math.max(e.body[i],u[i],e.body[s],u[s]);if(o===t)return f=H.css(e,n),l=parseFloat(f),H.isNumeric(l)?l:f;H(e).css(n,o)},n,e,arguments.length,null)}}),e.jQuery=e.$=H,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return H})}(window),define("requireLib",function(){}),define("domReady",[],function(){function a(e){for(var t=0,r;r=e[t];t++)r(n)}function f(){var e=r,n=i;t&&(e.length&&(r=[],a(e)),s.resourcesDone&&n.length&&(i=[],a(n)))}function l(){t||(t=!0,u&&clearInterval(u),f())}function c(e){return t?e(n):r.push(e),c}var e=typeof window!="undefined"&&window.document,t=!e,n=e?document:null,r=[],i=[],s=requirejs||require||{},o=s.resourcesReady,u;return"resourcesReady"in s&&(s.resourcesReady=function(e){o&&o(e),e&&f()}),e&&(document.addEventListener?(document.addEventListener("DOMContentLoaded",l,!1),window.addEventListener("load",l,!1)):window.attachEvent&&(window.attachEvent("onload",l),self===self.top&&(u=setInterval(function(){try{document.body&&(document.documentElement.doScroll("left"),l())}catch(e){}},30))),document.readyState==="complete"&&l()),c.withResources=function(e){return t&&s.resourcesDone?e(n):i.push(e),c},c.version="1.0.0",c.load=function(e,t,n,r){r.isBuild?n(null):c(n)},c}),function(e){var t={},n=top!==self;e.respecEvents={pub:function(r){var i=Array.prototype.slice.call(arguments);i.shift(),n&&window.postMessage&&parent.postMessage({topic:r,args:i},"*"),$.each(t[r]||[],function(){this.apply(e,i)})},sub:function(e,n){return t[e]||(t[e]=[]),t[e].push(n),[e,n]},unsub:function(e){var n=e[0];t[n]&&$.each(t[n]||[],function(r){this==e[1]&&t[n].splice(r,1)})}}}(this),window.console&&(respecEvents.sub("warn",function(e){console.log("WARN: "+e)}),respecEvents.sub("error",function(e){console.log("ERROR: "+e)}),respecEvents.sub("start",function(e){respecConfig&&respecConfig.trace&&console.log(">>> began: "+e)}),respecEvents.sub("end",function(e){respecConfig&&respecConfig.trace&&console.log("<<< finished: "+e)}),respecEvents.sub("start-all",function(){console.log("RESPEC PROCESSING STARTED")}),respecEvents.sub("end-all",function(){console.log("RESPEC DONE!")})),define("core/base-runner",[],function(){return{runAll:function(e){var t=0;respecEvents.pub("start-all"),respecEvents.sub("start",function(){t++}),respecEvents.sub("end",function(){t--,t||respecEvents.pub("end-all"),document.respecDone=!0}),respecEvents.pub("start","core/base-runner"),e.shift(),respecConfig||(window.respecConfig={});var n=$("script"),r="";n.each(function(e,t){var n=t.getAttribute("src");if(!n||!$(t).hasClass("remove"))return;/\/js\//.test(n)&&(r=n.replace(/\/js\/.*/,"/js/"))}),respecConfig.respecBase=r,respecConfig.scheme=location.protocol.replace(":","").toLowerCase(),respecConfig.httpScheme=respecConfig.scheme==="https"?"https":"http";var i;i=function(){if(!e.length){if(respecConfig.postProcess)for(var t=0;t<respecConfig.postProcess.length;t++)respecConfig.postProcess[t].apply(this);respecConfig.afterEnd&&respecConfig.afterEnd.apply(window,Array.prototype.slice.call(arguments)),respecEvents.pub("end","core/base-runner");return}var n=e.shift();n.run?n.run.call(n,respecConfig,document,i,respecEvents):i()};if(respecConfig.preProcess)for(var s=0;s<respecConfig.preProcess.length;s++)respecConfig.preProcess[s].apply(this);i()}}}),define("core/override-configuration",[],function(){return{run:function(e,t,n,r){r.pub("start","core/override-configuration");if(location.search){var i=location.search.replace(/^\?/,"").split(";");for(var s=0,o=i.length;s<o;s++){var u=i[s].split("=",2),a=decodeURI(u[0]),f=decodeURI(u[1]).replace(/%3D/g,"=");f==="true"?f=!0:f==="false"?f=!1:f==="null"?f=null:/\[\]$/.test(a)&&(a=a.replace(/\[\]/,""),f=$.parseJSON(f)),e[a]=f}}r.pub("end","core/override-configuration"),n()}}}),define("core/default-root-attr",[],function(){return{run:function(e,t,n,r){r.pub("start","core/default-root-attr");var i=$(t.documentElement);i.attr("lang")||(i.attr("lang","en"),i.attr("dir")||i.attr("dir","ltr")),r.pub("end","core/default-root-attr"),n()}}}),function(){function n(e,n){return e[0][0]!=="!"?'<a href="'+f(n.href)+'"'+(n.title?' title="'+f(n.title)+'"':"")+">"+t.lexer(e[1])+"</a>":'<img src="'+f(n.href)+'" alt="'+f(e[1])+'"'+(n.title?' title="'+f(n.title)+'"':"")+">"}function s(){return i=r.pop()}function o(){switch(i.type){case"space":return"";case"hr":return"<hr>\n";case"heading":return"<h"+i.depth+">"+t.lexer(i.text)+"</h"+i.depth+">\n";case"code":return v.highlight&&(i.code=v.highlight(i.text,i.lang),i.code!=null&&i.code!==i.text&&(i.escaped=!0,i.text=i.code)),i.escaped||(i.text=f(i.text,!0)),"<pre><code"+(i.lang?' class="lang-'+i.lang+'"':"")+">"+i.text+"</code></pre>\n";case"blockquote_start":var e="";while(s().type!=="blockquote_end")e+=o();return"<blockquote>\n"+e+"</blockquote>\n";case"list_start":var n=i.ordered?"ol":"ul",e="";while(s().type!=="list_end")e+=o();return"<"+n+">\n"+e+"</"+n+">\n";case"list_item_start":var e="";while(s().type!=="list_item_end")e+=i.type==="text"?u():o();return"<li>"+e+"</li>\n";case"loose_item_start":var e="";while(s().type!=="list_item_end")e+=o();return"<li>"+e+"</li>\n";case"html":return!i.pre&&!v.pedantic?t.lexer(i.text):i.text;case"paragraph":return"<p>"+t.lexer(i.text)+"</p>\n";case"text":return"<p>"+u()+"</p>\n"}}function u(){var e=i.text,n;while((n=r[r.length-1])&&n.type==="text")e+="\n"+s().text;return t.lexer(e)}function a(e){r=e.reverse();var t="";while(s())t+=o();return r=null,i=null,t}function f(e,t){return e.replace(t?/&/g:/&(?!#?\w+;)/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function l(e){var t="",n=e.length,r=0,i;for(;r<n;r++)i=e.charCodeAt(r),Math.random()>.5&&(i="x"+i.toString(16)),t+="&#"+i+";";return t}function c(){var e="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b";return e}function h(e,t){return e=e.source,t=t||"",function n(r,i){return r?(i=i.source||i,i=i.replace(/(^|[^\[])\^/g,"$1"),e=e.replace(r,i),n):new RegExp(e,t)}}function p(){}function d(t,n){return g(n),a(e.lexer(t))}function g(n){n||(n=m);if(v===n)return;v=n,v.gfm?(e.fences=e.gfm.fences,e.paragraph=e.gfm.paragraph,t.text=t.gfm.text,t.url=t.gfm.url):(e.fences=e.normal.fences,e.paragraph=e.normal.paragraph,t.text=t.normal.text,t.url=t.normal.url),v.pedantic?(t.em=t.pedantic.em,t.strong=t.pedantic.strong):(t.em=t.normal.em,t.strong=t.normal.strong)}var e={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:p,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,lheading:/^([^\n]+)\n *(=|-){3,} *\n*/,blockquote:/^( *>[^\n]+(\n[^\n]+)*\n*)+/,list:/^( *)(bull) [^\0]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,def:/^ *\[([^\]]+)\]: *([^\s]+)(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,paragraph:/^([^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+\n*/,text:/^[^\n]+/};e.bullet=/(?:[*+-]|\d+\.)/,e.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,e.item=h(e.item,"gm")(/bull/g,e.bullet)(),e.list=h(e.list)(/bull/g,e.bullet)("hr",/\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)(),e.html=h(e.html)("comment",/<!--[^\0]*?-->/)("closed",/<(tag)[^\0]+?<\/\1>/)("closing",/<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)(/tag/g,c())(),e.paragraph=h(e.paragraph)("hr",e.hr)("heading",e.heading)("lheading",e.lheading)("blockquote",e.blockquote)("tag","<"+c())("def",e.def)(),e.normal={fences:e.fences,paragraph:e.paragraph},e.gfm={fences:/^ *(```|~~~) *(\w+)? *\n([^\0]+?)\s*\1 *(?:\n+|$)/,paragraph:/^/},e.gfm.paragraph=h(e.paragraph)("(?!","(?!"+e.gfm.fences.source.replace("\\1","\\2")+"|")(),e.lexer=function(t){var n=[];return n.links={},t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g,"    "),e.token(t,n,!0)},e.token=function(t,n,r){var t=t.replace(/^ +$/gm,""),i,s,o,u,a,f,l;while(t){if(o=e.newline.exec(t))t=t.substring(o[0].length),o[0].length>1&&n.push({type:"space"});if(o=e.code.exec(t)){t=t.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),n.push({type:"code",text:v.pedantic?o:o.replace(/\n+$/,"")});continue}if(o=e.fences.exec(t)){t=t.substring(o[0].length),n.push({type:"code",lang:o[2],text:o[3]});continue}if(o=e.heading.exec(t)){t=t.substring(o[0].length),n.push({type:"heading",depth:o[1].length,text:o[2]});continue}if(o=e.lheading.exec(t)){t=t.substring(o[0].length),n.push({type:"heading",depth:o[2]==="="?1:2,text:o[1]});continue}if(o=e.hr.exec(t)){t=t.substring(o[0].length),n.push({type:"hr"});continue}if(o=e.blockquote.exec(t)){t=t.substring(o[0].length),n.push({type:"blockquote_start"}),o=o[0].replace(/^ *> ?/gm,""),e.token(o,n,r),n.push({type:"blockquote_end"});continue}if(o=e.list.exec(t)){t=t.substring(o[0].length),n.push({type:"list_start",ordered:isFinite(o[2])}),o=o[0].match(e.item),i=!1,l=o.length,f=0;for(;f<l;f++)u=o[f],a=u.length,u=u.replace(/^ *([*+-]|\d+\.) +/,""),~u.indexOf("\n ")&&(a-=u.length,u=v.pedantic?u.replace(/^ {1,4}/gm,""):u.replace(new RegExp("^ {1,"+a+"}","gm"),"")),s=i||/\n\n(?!\s*$)/.test(u),f!==l-1&&(i=u[u.length-1]==="\n",s||(s=i)),n.push({type:s?"loose_item_start":"list_item_start"}),e.token(u,n),n.push({type:"list_item_end"});n.push({type:"list_end"});continue}if(o=e.html.exec(t)){t=t.substring(o[0].length),n.push({type:v.sanitize?"paragraph":"html",pre:o[1]==="pre",text:o[0]});continue}if(r&&(o=e.def.exec(t))){t=t.substring(o[0].length),n.links[o[1].toLowerCase()]={href:o[2],title:o[3]};continue}if(r&&(o=e.paragraph.exec(t))){t=t.substring(o[0].length),n.push({type:"paragraph",text:o[0]});continue}if(o=e.text.exec(t)){t=t.substring(o[0].length),n.push({type:"text",text:o[0]});continue}}return n};var t={escape:/^\\([\\`*{}\[\]()#+\-.!_>])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:p,tag:/^<!--[^\0]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([^\0]+?)__(?!_)|^\*\*([^\0]+?)\*\*(?!\*)/,em:/^\b_((?:__|[^\0])+?)_\b|^\*((?:\*\*|[^\0])+?)\*(?!\*)/,code:/^(`+)([^\0]*?[^`])\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,text:/^[^\0]+?(?=[\\<!\[_*`]| {2,}\n|$)/};t._linkInside=/(?:\[[^\]]*\]|[^\]]|\](?=[^\[]*\]))*/,t._linkHref=/\s*<?([^\s]*?)>?(?:\s+['"]([^\0]*?)['"])?\s*/,t.link=h(t.link)("inside",t._linkInside)("href",t._linkHref)(),t.reflink=h(t.reflink)("inside",t._linkInside)(),t.normal={url:t.url,strong:t.strong,em:t.em,text:t.text},t.pedantic={strong:/^__(?=\S)([^\0]*?\S)__(?!_)|^\*\*(?=\S)([^\0]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([^\0]*?\S)_(?!_)|^\*(?=\S)([^\0]*?\S)\*(?!\*)/},t.gfm={url:/^(https?:\/\/[^\s]+[^.,:;"')\]\s])/,text:/^[^\0]+?(?=[\\<!\[_*`]|https?:\/\/| {2,}\n|$)/},t.lexer=function(e){var i="",s=r.links,o,u,a,c;while(e){if(c=t.escape.exec(e)){e=e.substring(c[0].length),i+=c[1];continue}if(c=t.autolink.exec(e)){e=e.substring(c[0].length),c[2]==="@"?(u=c[1][6]===":"?l(c[1].substring(7)):l(c[1]),a=l("mailto:")+u):(u=f(c[1]),a=u),i+='<a href="'+a+'">'+u+"</a>";continue}if(c=t.url.exec(e)){e=e.substring(c[0].length),u=f(c[1]),a=u,i+='<a href="'+a+'">'+u+"</a>";continue}if(c=t.tag.exec(e)){e=e.substring(c[0].length),i+=v.sanitize?f(c[0]):c[0];continue}if(c=t.link.exec(e)){e=e.substring(c[0].length),i+=n(c,{href:c[2],title:c[3]});continue}if((c=t.reflink.exec(e))||(c=t.nolink.exec(e))){e=e.substring(c[0].length),o=(c[2]||c[1]).replace(/\s+/g," "),o=s[o.toLowerCase()];if(!o||!o.href){i+=c[0][0],e=c[0].substring(1)+e;continue}i+=n(c,o);continue}if(c=t.strong.exec(e)){e=e.substring(c[0].length),i+="<strong>"+t.lexer(c[2]||c[1])+"</strong>";continue}if(c=t.em.exec(e)){e=e.substring(c[0].length),i+="<em>"+t.lexer(c[2]||c[1])+"</em>";continue}if(c=t.code.exec(e)){e=e.substring(c[0].length),i+="<code>"+f(c[2],!0)+"</code>";continue}if(c=t.br.exec(e)){e=e.substring(c[0].length),i+="<br>";continue}if(c=t.text.exec(e)){e=e.substring(c[0].length),i+=f(c[0]);continue}}return i};var r,i;p.exec=p;var v,m;d.options=d.setOptions=function(e){return m=e,g(e),d},d.setOptions({gfm:!0,pedantic:!1,sanitize:!1,highlight:null}),d.parser=function(e,t){return g(t),a(e)},d.lexer=function(t,n){return g(n),e.lexer(t)},d.parse=d,typeof module!="undefined"?module.exports=d:this.marked=d}.call(function(){return this||(typeof window!="undefined"?window:global)}()),define("core/marked",function(){}),define("core/markdown",["core/marked"],function(e){return marked.setOptions({gfm:!1,pedantic:!1,sanitize:!1}),{toHTML:function(e){return e=e.replace(/&gt;/g,">"),e=this.removeLeftPadding(e),marked(e)},removeLeftPadding:function(e){var t=e.match(/\n[ ]+\S/g),n,r;if(t){r=t[0].length-2;for(var i=0,s=t.length;i<s;i++){n=t[i].length-2;if(typeof r=="undefined"||r>n)r=n}var o=new RegExp("\n[ ]{0,"+r+"}","g");e=e.replace(o,"\n")}return e},processBody:function(e){var t=e.createDocumentFragment(),n=e.createElement("div"),r;n.innerHTML=this.toHTML(e.body.innerHTML);while(r=n.firstChild)t.appendChild(r);return t},processSections:function(e){var t=this;$("section",e).each(function(){this.innerHTML=t.toHTML(this.innerHTML)})},processIssuesNotesAndReqs:function(e){var t=e.createElement("div"),n=this;$(".issue, .note, .req",e).each(function(){t.innerHTML=n.toHTML(this.innerHTML),this.innerHTML="";var e=t.firstChild;while(e.firstChild)this.appendChild(e.firstChild)})},structure:function(e,t){function u(e,n){var s=t.createElement("section");s.appendChild(e),a(n).appendChild(s),i[n]=s,r=s}function a(e){var t;while(e>0){e--,t=i[e];if(t)return t}}var n=t.createDocumentFragment(),r=n,i=[n],s,o;while(s=e.firstChild){if(s.nodeType!==1){e.removeChild(s);continue}o=s.tagName.toLowerCase();switch(o){case"h1":u(s,1);break;case"h2":u(s,2);break;case"h3":u(s,3);break;case"h4":u(s,4);break;case"h5":u(s,5);break;case"h6":u(s,6);break;default:r.appendChild(s)}}return n},run:function(e,t,n,r){r.pub("start","core/markdown");if(e.format==="markdown"){this.processSections(t);var i=this.structure(this.processBody(t),t);t.body.innerHTML="",t.body.appendChild(i)}r.pub("end","core/markdown"),n()}}}),function(){var e=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],t=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,n=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,r=typeof location!="undefined"&&location.href,i=r&&location.protocol&&location.protocol.replace(/\:/,""),s=r&&location.hostname,o=r&&(location.port||void 0),u=[];define("text",[],function(){var a,f;return a={version:"1.0.8",strip:function(e){if(e){var e=e.replace(t,""),r=e.match(n);r&&(e=r[1])}else e="";return e},jsEscape:function(e){return e.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")},createXhr:function(){var t,n,r;if(typeof XMLHttpRequest!="undefined")return new XMLHttpRequest;if(typeof ActiveXObject!="undefined")for(n=0;n<3;n++){r=e[n];try{t=new ActiveXObject(r)}catch(i){}if(t){e=[r];break}}return t},parseName:function(e){var t=!1,n=e.indexOf("."),r=e.substring(0,n),e=e.substring(n+1,e.length),n=e.indexOf("!");return n!==-1&&(t=e.substring(n+1,e.length),t=t==="strip",e=e.substring(0,n)),{moduleName:r,ext:e,strip:t}},xdRegExp:/^((\w+)\:)?\/\/([^\/\\]+)/,useXhr:function(e,t,n,r){var i=a.xdRegExp.exec(e),s;return i?(e=i[2],i=i[3],i=i.split(":"),s=i[1],i=i[0],(!e||e===t)&&(!i||i===n)&&(!s&&!i||s===r)):!0},finishLoad:function(e,t,n,r,i){n=t?a.strip(n):n,i.isBuild&&(u[e]=n),r(n)},load:function(e,t,n,u){if(u.isBuild&&!u.inlineText)n();else{var f=a.parseName(e),l=f.moduleName+"."+f.ext,c=t.toUrl(l),h=u&&u.text&&u.text.useXhr||a.useXhr;!r||h(c,i,s,o)?a.get(c,function(t){a.finishLoad(e,f.strip,t,n,u)}):t([l],function(e){a.finishLoad(f.moduleName+"."+f.ext,f.strip,e,n,u)})}},write:function(e,t,n){if(u.hasOwnProperty(t)){var r=a.jsEscape(u[t]);n.asModule(e+"!"+t,"define(function () { return '"+r+"';});\n")}},writeFile:function(e,t,n,r,i){var t=a.parseName(t),s=t.moduleName+"."+t.ext,o=n.toUrl(t.moduleName+"."+t.ext)+".js";a.load(s,n,function(){var t=function(e){return r(o,e)};t.asModule=function(e,t){return r.asModule(e,o,t)},a.write(e,s,t,i)},i)}},a.createXhr()?a.get=function(e,t){var n=a.createXhr();n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)}:typeof process!="undefined"&&process.versions&&process.versions.node?(f=require.nodeRequire("fs"),a.get=function(e,t){var n=f.readFileSync(e,"utf8");n.indexOf("")===0&&(n=n.substring(1)),t(n)}):typeof Packages!="undefined"&&(a.get=function(e,t){var n=new java.io.File(e),r=java.lang.System.getProperty("line.separator"),n=new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(n),"utf-8")),i,s,o="";try{i=new java.lang.StringBuffer,(s=n.readLine())&&s.length()&&s.charAt(0)===65279&&(s=s.substring(1));for(i.append(s);(s=n.readLine())!==null;)i.append(r),i.append(s);o=String(i.toString())}finally{n.close()}t(o)}),a})}(),define("text!core/css/respec2.css",[],function(){return'/*****************************************************************\n * ReSpec 3 CSS\n * Robin Berjon - http://berjon.com/\n *****************************************************************/\n\n/* --- INLINES --- */\nem.rfc2119 { \n    text-transform:     lowercase;\n    font-variant:       small-caps;\n    font-style:         normal;\n    color:              #900;\n}\n\nh1 acronym, h2 acronym, h3 acronym, h4 acronym, h5 acronym, h6 acronym, a acronym,\nh1 abbr, h2 abbr, h3 abbr, h4 abbr, h5 abbr, h6 abbr, a abbr {\n    border: none;\n}\n\ndfn {\n    font-weight:    bold;\n}\n\na.internalDFN {\n    color:  inherit;\n    border-bottom:  1px solid #99c;\n    text-decoration:    none;\n}\n\na.externalDFN {\n    color:  inherit;\n    border-bottom:  1px dotted #ccc;\n    text-decoration:    none;\n}\n\na.bibref {\n    text-decoration:    none;\n}\n\ncite .bibref {\n    font-style: normal;\n}\n\ncode {\n    color:  #ff4500;\n}\n\n\n/* --- --- */\nol.algorithm { counter-reset:numsection; list-style-type: none; }\nol.algorithm li { margin: 0.5em 0; }\nol.algorithm li:before { font-weight: bold; counter-increment: numsection; content: counters(numsection, ".") ") "; }\n\n/* --- TOC --- */\n.toc a, .tof a {\n    text-decoration:    none;\n}\n\na .secno, a .figno {\n    color:  #000;\n}\n\nul.tof, ol.tof {\n    list-style: none outside none;\n}\n\n.caption {\n    margin-top: 0.5em;\n    font-style:   italic;\n}\n\n/* --- TABLE --- */\ntable.simple {\n    border-spacing: 0;\n    border-collapse:    collapse;\n    border-bottom:  3px solid #005a9c;\n}\n\n.simple th {\n    background: #005a9c;\n    color:  #fff;\n    padding:    3px 5px;\n    text-align: left;\n}\n\n.simple th[scope="row"] {\n    background: inherit;\n    color:  inherit;\n    border-top: 1px solid #ddd;\n}\n\n.simple td {\n    padding:    3px 10px;\n    border-top: 1px solid #ddd;\n}\n\n.simple tr:nth-child(even) {\n    background: #f0f6ff;\n}\n\n/* --- DL --- */\n.section dd > p:first-child {\n    margin-top: 0;\n}\n\n.section dd > p:last-child {\n    margin-bottom: 0;\n}\n\n.section dd {\n    margin-bottom:  1em;\n}\n\n.section dl.attrs dd, .section dl.eldef dd {\n    margin-bottom:  0;\n}\n'}),define("core/style",["text!core/css/respec2.css"],function(e){return{run:function(t,n,r,i){i.pub("start","core/style"),t.noReSpecCSS||$("<style/>").appendTo($("head",$(n))).text(e),i.pub("end","core/style"),r()}}}),define("core/utils",[],function(){var e={run:function(e,t,n,r){r.pub("start","w3c/utils"),r.pub("end","w3c/utils"),n()},joinAnd:function(e,t){if(!e||!e.length)return"";t=t||function(e){return e};var n="";if(e.length===1)return t(e[0],0);for(var r=0,i=e.length;r<i;r++)r>0&&(i===2?n+=" ":n+=", ",r==i-1&&(n+="and ")),n+=t(e[r],r);return n},xmlEscape:function(e){return e.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/</g,"&lt;")},norm:function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/).join(" ")},concatDate:function(e,t){return t||(t=""),""+e.getFullYear()+t+this.lead0(e.getMonth()+1)+t+this.lead0(e.getDate())},lead0:function(e){return e=""+e,e.length==1?"0"+e:e},parseSimpleDate:function(e){return new Date(e.substr(0,4),e.substr(5,2)-1,e.substr(8,2))},parseLastModified:function(e){return e?new Date(Date.parse(e)):new Date},humanMonths:["January","February","March","April","May","June","July","August","September","October","November","December"],humanDate:function(e){return e instanceof Date||(e=this.parseSimpleDate(e)),this.lead0(e.getDate())+" "+this.humanMonths[e.getMonth()]+" "+e.getFullYear()},linkCSS:function(e,t){$.isArray(t)||(t=[t]),$.each(t,function(t,n){$("head",e).append($("<link/>").attr({rel:"stylesheet",href:n}))})},runTransforms:function(e,t){var n=[this,e],r=Array.prototype.slice.call(arguments);r.shift(),r.shift(),n=n.concat(r);if(t){var i=t.split(/\s+/);for(var s=0;s<i.length;s++){var o=i[s];if(window[o])try{e=window[o].apply(this,n)}catch(u){respecEvents.pub("warn","call to "+o+"() failed with "+u)}}}return e}};return e}),$.fn.renameElement=function(e){var t=[];return this.each(function(){var n=$(this.ownerDocument.createElement(e));for(var r=0,i=this.attributes.length;r<i;r++){var s=this.attributes[r];n[0].setAttributeNS(s.namespaceURI,s.name,s.value)}$(this).contents().appendTo(n),$(this).replaceWith(n),t.push(n[0])}),$(t)},$.fn.dfnTitle=function(){var e;return this.attr("title")?e=this.attr("title"):this.contents().length==1&&this.children("abbr, acronym").length==1&&this.find(":first-child").attr("title")?e=this.find(":first-child").attr("title"):e=this.text(),e.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/).join(" ")},$.fn.makeID=function(e,t,n){if(this.attr("id"))return this.attr("id");t||(t=this.attr("title")?this.attr("title"):this.text()),t=t.replace(/^\s+/,"").replace(/\s+$/,"");var r=n?t:t.toLowerCase();r=r.split(/[^\-.0-9a-z_]+/i).join("-").replace(/^-+/,"").replace(/-+$/,""),r.length>0&&/^[^a-z]/i.test(r)&&(r="x"+r),r.length===0&&(r="generatedID"),e&&(r=e+"-"+r);var i=1,s=this[0].ownerDocument;if($("#"+r,s).length){while($("#"+r+"-"+i,s).length)i++;r+="-"+i}return this.attr("id",r),r},$.fn.allTextNodes=function(e){function s(e){if(e.nodeType===1&&n[e.localName.toLowerCase()])return;if(e.nodeType===3)t.push(e);else for(var r=0,i=e.childNodes.length;r<i;++r)s(e.childNodes[r])}var t=[],n={};for(var r=0,i=e.length;r<i;r++)n[e[r]]=!0;return s(this[0]),t},define("w3c/style",["core/utils"],function(e){return{run:function(t,n,r,i){i.pub("start","w3c/style"),t.specStatus||i.pub("error","Configuration 'specStatus' is not set, required for w3c/style");var s=t.specStatus;if(s==="FPWD"||s==="LC"||s==="WD-NOTE"||s==="LC-NOTE")s="WD";s==="FPWD-NOTE"&&(s="WG-NOTE");if(s==="finding"||s==="draft-finding")s="base";var o;s==="unofficial"?o=t.httpScheme+"://www.w3.org/StyleSheets/TR/w3c-unofficial":s==="base"?o=t.httpScheme+"://www.w3.org/StyleSheets/TR/base":s==="CG-DRAFT"||s==="CG-FINAL"||s==="BG-DRAFT"||s==="BG-FINAL"?o=t.httpScheme+"://www.w3.org/community/src/css/spec/"+s.toLowerCase()+".css":o=t.httpScheme+"://www.w3.org/StyleSheets/TR/W3C-"+s,e.linkCSS(n,o),i.pub("end","w3c/style"),r()}}});var Handlebars={};Handlebars.VERSION="1.0.beta.6",Handlebars.helpers={},Handlebars.partials={},Handlebars.registerHelper=function(e,t,n){n&&(t.not=n),this.helpers[e]=t},Handlebars.registerPartial=function(e,t){this.partials[e]=t},Handlebars.registerHelper("helperMissing",function(e){if(arguments.length===2)return undefined;throw new Error("Could not find property '"+e+"'")});var toString=Object.prototype.toString,functionType="[object Function]";Handlebars.registerHelper("blockHelperMissing",function(e,t){var n=t.inverse||function(){},r=t.fn,i="",s=toString.call(e);s===functionType&&(e=e.call(this));if(e===!0)return r(this);if(e===!1||e==null)return n(this);if(s==="[object Array]"){if(e.length>0)for(var o=0,u=e.length;o<u;o++)i+=r(e[o]);else i=n(this);return i}return r(e)}),Handlebars.registerHelper("each",function(e,t){var n=t.fn,r=t.inverse,i="";if(e&&e.length>0)for(var s=0,o=e.length;s<o;s++)i+=n(e[s]);else i=r(this);return i}),Handlebars.registerHelper("if",function(e,t){var n=toString.call(e);return n===functionType&&(e=e.call(this)),!e||Handlebars.Utils.isEmpty(e)?t.inverse(this):t.fn(this)}),Handlebars.registerHelper("unless",function(e,t){var n=t.fn,r=t.inverse;return t.fn=r,t.inverse=n,Handlebars.helpers["if"].call(this,e,t)}),Handlebars.registerHelper("with",function(e,t){return t.fn(e)}),Handlebars.registerHelper("log",function(e){Handlebars.log(e)});var handlebars=function(){var e={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,statements:6,simpleInverse:7,statement:8,openInverse:9,closeBlock:10,openBlock:11,mustache:12,partial:13,CONTENT:14,COMMENT:15,OPEN_BLOCK:16,inMustache:17,CLOSE:18,OPEN_INVERSE:19,OPEN_ENDBLOCK:20,path:21,OPEN:22,OPEN_UNESCAPED:23,OPEN_PARTIAL:24,params:25,hash:26,param:27,STRING:28,INTEGER:29,BOOLEAN:30,hashSegments:31,hashSegment:32,ID:33,EQUALS:34,pathSegments:35,SEP:36,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"CONTENT",15:"COMMENT",16:"OPEN_BLOCK",18:"CLOSE",19:"OPEN_INVERSE",20:"OPEN_ENDBLOCK",22:"OPEN",23:"OPEN_UNESCAPED",24:"OPEN_PARTIAL",28:"STRING",29:"INTEGER",30:"BOOLEAN",33:"ID",34:"EQUALS",36:"SEP"},productions_:[0,[3,2],[4,3],[4,1],[4,0],[6,1],[6,2],[8,3],[8,3],[8,1],[8,1],[8,1],[8,1],[11,3],[9,3],[10,3],[12,3],[12,3],[13,3],[13,4],[7,2],[17,3],[17,2],[17,2],[17,1],[25,2],[25,1],[27,1],[27,1],[27,1],[27,1],[26,1],[31,2],[31,1],[32,3],[32,3],[32,3],[32,3],[21,1],[35,3],[35,1]],performAction:function(t,n,r,i,s,o,u){var a=o.length-1;switch(s){case 1:return o[a-1];case 2:this.$=new i.ProgramNode(o[a-2],o[a]);break;case 3:this.$=new i.ProgramNode(o[a]);break;case 4:this.$=new i.ProgramNode([]);break;case 5:this.$=[o[a]];break;case 6:o[a-1].push(o[a]),this.$=o[a-1];break;case 7:this.$=new i.InverseNode(o[a-2],o[a-1],o[a]);break;case 8:this.$=new i.BlockNode(o[a-2],o[a-1],o[a]);break;case 9:this.$=o[a];break;case 10:this.$=o[a];break;case 11:this.$=new i.ContentNode(o[a]);break;case 12:this.$=new i.CommentNode(o[a]);break;case 13:this.$=new i.MustacheNode(o[a-1][0],o[a-1][1]);break;case 14:this.$=new i.MustacheNode(o[a-1][0],o[a-1][1]);break;case 15:this.$=o[a-1];break;case 16:this.$=new i.MustacheNode(o[a-1][0],o[a-1][1]);break;case 17:this.$=new i.MustacheNode(o[a-1][0],o[a-1][1],!0);break;case 18:this.$=new i.PartialNode(o[a-1]);break;case 19:this.$=new i.PartialNode(o[a-2],o[a-1]);break;case 20:break;case 21:this.$=[[o[a-2]].concat(o[a-1]),o[a]];break;case 22:this.$=[[o[a-1]].concat(o[a]),null];break;case 23:this.$=[[o[a-1]],o[a]];break;case 24:this.$=[[o[a]],null];break;case 25:o[a-1].push(o[a]),this.$=o[a-1];break;case 26:this.$=[o[a]];break;case 27:this.$=o[a];break;case 28:this.$=new i.StringNode(o[a]);break;case 29:this.$=new i.IntegerNode(o[a]);break;case 30:this.$=new i.BooleanNode(o[a]);break;case 31:this.$=new i.HashNode(o[a]);break;case 32:o[a-1].push(o[a]),this.$=o[a-1];break;case 33:this.$=[o[a]];break;case 34:this.$=[o[a-2],o[a]];break;case 35:this.$=[o[a-2],new i.StringNode(o[a])];break;case 36:this.$=[o[a-2],new i.IntegerNode(o[a])];break;case 37:this.$=[o[a-2],new i.BooleanNode(o[a])];break;case 38:this.$=new i.IdNode(o[a]);break;case 39:o[a-2].push(o[a]),this.$=o[a-2];break;case 40:this.$=[o[a]]}},table:[{3:1,4:2,5:[2,4],6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{1:[3]},{5:[1,16]},{5:[2,3],7:17,8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,19],20:[2,3],22:[1,13],23:[1,14],24:[1,15]},{5:[2,5],14:[2,5],15:[2,5],16:[2,5],19:[2,5],20:[2,5],22:[2,5],23:[2,5],24:[2,5]},{4:20,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{4:21,6:3,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,4],22:[1,13],23:[1,14],24:[1,15]},{5:[2,9],14:[2,9],15:[2,9],16:[2,9],19:[2,9],20:[2,9],22:[2,9],23:[2,9],24:[2,9]},{5:[2,10],14:[2,10],15:[2,10],16:[2,10],19:[2,10],20:[2,10],22:[2,10],23:[2,10],24:[2,10]},{5:[2,11],14:[2,11],15:[2,11],16:[2,11],19:[2,11],20:[2,11],22:[2,11],23:[2,11],24:[2,11]},{5:[2,12],14:[2,12],15:[2,12],16:[2,12],19:[2,12],20:[2,12],22:[2,12],23:[2,12],24:[2,12]},{17:22,21:23,33:[1,25],35:24},{17:26,21:23,33:[1,25],35:24},{17:27,21:23,33:[1,25],35:24},{17:28,21:23,33:[1,25],35:24},{21:29,33:[1,25],35:24},{1:[2,1]},{6:30,8:4,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],22:[1,13],23:[1,14],24:[1,15]},{5:[2,6],14:[2,6],15:[2,6],16:[2,6],19:[2,6],20:[2,6],22:[2,6],23:[2,6],24:[2,6]},{17:22,18:[1,31],21:23,33:[1,25],35:24},{10:32,20:[1,33]},{10:34,20:[1,33]},{18:[1,35]},{18:[2,24],21:40,25:36,26:37,27:38,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,38],28:[2,38],29:[2,38],30:[2,38],33:[2,38],36:[1,46]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],36:[2,40]},{18:[1,47]},{18:[1,48]},{18:[1,49]},{18:[1,50],21:51,33:[1,25],35:24},{5:[2,2],8:18,9:5,11:6,12:7,13:8,14:[1,9],15:[1,10],16:[1,12],19:[1,11],20:[2,2],22:[1,13],23:[1,14],24:[1,15]},{14:[2,20],15:[2,20],16:[2,20],19:[2,20],22:[2,20],23:[2,20],24:[2,20]},{5:[2,7],14:[2,7],15:[2,7],16:[2,7],19:[2,7],20:[2,7],22:[2,7],23:[2,7],24:[2,7]},{21:52,33:[1,25],35:24},{5:[2,8],14:[2,8],15:[2,8],16:[2,8],19:[2,8],20:[2,8],22:[2,8],23:[2,8],24:[2,8]},{14:[2,14],15:[2,14],16:[2,14],19:[2,14],20:[2,14],22:[2,14],23:[2,14],24:[2,14]},{18:[2,22],21:40,26:53,27:54,28:[1,41],29:[1,42],30:[1,43],31:39,32:44,33:[1,45],35:24},{18:[2,23]},{18:[2,26],28:[2,26],29:[2,26],30:[2,26],33:[2,26]},{18:[2,31],32:55,33:[1,56]},{18:[2,27],28:[2,27],29:[2,27],30:[2,27],33:[2,27]},{18:[2,28],28:[2,28],29:[2,28],30:[2,28],33:[2,28]},{18:[2,29],28:[2,29],29:[2,29],30:[2,29],33:[2,29]},{18:[2,30],28:[2,30],29:[2,30],30:[2,30],33:[2,30]},{18:[2,33],33:[2,33]},{18:[2,40],28:[2,40],29:[2,40],30:[2,40],33:[2,40],34:[1,57],36:[2,40]},{33:[1,58]},{14:[2,13],15:[2,13],16:[2,13],19:[2,13],20:[2,13],22:[2,13],23:[2,13],24:[2,13]},{5:[2,16],14:[2,16],15:[2,16],16:[2,16],19:[2,16],20:[2,16],22:[2,16],23:[2,16],24:[2,16]},{5:[2,17],14:[2,17],15:[2,17],16:[2,17],19:[2,17],20:[2,17],22:[2,17],23:[2,17],24:[2,17]},{5:[2,18],14:[2,18],15:[2,18],16:[2,18],19:[2,18],20:[2,18],22:[2,18],23:[2,18],24:[2,18]},{18:[1,59]},{18:[1,60]},{18:[2,21]},{18:[2,25],28:[2,25],29:[2,25],30:[2,25],33:[2,25]},{18:[2,32],33:[2,32]},{34:[1,57]},{21:61,28:[1,62],29:[1,63],30:[1,64],33:[1,25],35:24},{18:[2,39],28:[2,39],29:[2,39],30:[2,39],33:[2,39],36:[2,39]},{5:[2,19],14:[2,19],15:[2,19],16:[2,19],19:[2,19],20:[2,19],22:[2,19],23:[2,19],24:[2,19]},{5:[2,15],14:[2,15],15:[2,15],16:[2,15],19:[2,15],20:[2,15],22:[2,15],23:[2,15],24:[2,15]},{18:[2,34],33:[2,34]},{18:[2,35],33:[2,35]},{18:[2,36],33:[2,36]},{18:[2,37],33:[2,37]}],defaultActions:{16:[2,1],37:[2,23],53:[2,21]},parseError:function(t,n){throw new Error(t)},parse:function(t){function d(e){r.length=r.length-2*e,i.length=i.length-e,s.length=s.length-e}function v(){var e;return e=n.lexer.lex()||1,typeof e!="number"&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],s=[],o=this.table,u="",a=0,f=0,l=0,c=2,h=1;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,typeof this.lexer.yylloc=="undefined"&&(this.lexer.yylloc={});var p=this.lexer.yylloc;s.push(p),typeof this.yy.parseError=="function"&&(this.parseError=this.yy.parseError);var m,g,y,b,w,E,S={},x,T,N,C;for(;;){y=r[r.length-1],this.defaultActions[y]?b=this.defaultActions[y]:(m==null&&(m=v()),b=o[y]&&o[y][m]);if(typeof b=="undefined"||!b.length||!b[0])if(!l){C=[];for(x in o[y])this.terminals_[x]&&x>2&&C.push("'"+this.terminals_[x]+"'");var k="";this.lexer.showPosition?k="Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+C.join(", ")+", got '"+this.terminals_[m]+"'":k="Parse error on line "+(a+1)+": Unexpected "+(m==1?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(k,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:p,expected:C})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+m);switch(b[0]){case 1:r.push(m),i.push(this.lexer.yytext),s.push(this.lexer.yylloc),r.push(b[1]),m=null,g?(m=g,g=null):(f=this.lexer.yyleng,u=this.lexer.yytext,a=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:T=this.productions_[b[1]][1],S.$=i[i.length-T],S._$={first_line:s[s.length-(T||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(T||1)].first_column,last_column:s[s.length-1].last_column},E=this.performAction.call(S,u,f,a,this.yy,b[1],i,s);if(typeof E!="undefined")return E;T&&(r=r.slice(0,-1*T*2),i=i.slice(0,-1*T),s=s.slice(0,-1*T)),r.push(this.productions_[b[1]][0]),i.push(S.$),s.push(S._$),N=o[r[r.length-2]][r[r.length-1]],r.push(N);break;case 3:return!0}}return!0}},t=function(){var e={EOF:1,parseError:function(t,n){if(!this.yy.parseError)throw new Error(t);this.yy.parseError(t,n)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e;var t=e.match(/\n/);return t&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=(new Array(e.length+1)).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");var i=this._currentRules();for(var s=0;s<i.length;s++){t=this._input.match(this.rules[i[s]]);if(t){r=t[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i[s],this.conditionStack[this.conditionStack.length-1]);if(e)return e;return}}if(this._input==="")return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return typeof t!="undefined"?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)}};return e.performAction=function(t,n,r,i){var s=i;switch(r){case 0:n.yytext.slice(-1)!=="\\"&&this.begin("mu"),n.yytext.slice(-1)==="\\"&&(n.yytext=n.yytext.substr(0,n.yyleng-1),this.begin("emu"));if(n.yytext)return 14;break;case 1:return 14;case 2:return this.popState(),14;case 3:return 24;case 4:return 16;case 5:return 20;case 6:return 19;case 7:return 19;case 8:return 23;case 9:return 23;case 10:return n.yytext=n.yytext.substr(3,n.yyleng-5),this.popState(),15;case 11:return 22;case 12:return 34;case 13:return 33;case 14:return 33;case 15:return 36;case 16:break;case 17:return this.popState(),18;case 18:return this.popState(),18;case 19:return n.yytext=n.yytext.substr(1,n.yyleng-2).replace(/\\"/g,'"'),28;case 20:return 30;case 21:return 30;case 22:return 29;case 23:return 33;case 24:return n.yytext=n.yytext.substr(1,n.yyleng-2),33;case 25:return"INVALID";case 26:return 5}},e.rules=[/^[^\x00]*?(?=(\{\{))/,/^[^\x00]+/,/^[^\x00]{2,}?(?=(\{\{))/,/^\{\{>/,/^\{\{#/,/^\{\{\//,/^\{\{\^/,/^\{\{\s*else\b/,/^\{\{\{/,/^\{\{&/,/^\{\{![\s\S]*?\}\}/,/^\{\{/,/^=/,/^\.(?=[} ])/,/^\.\./,/^[\/.]/,/^\s+/,/^\}\}\}/,/^\}\}/,/^"(\\["]|[^"])*"/,/^true(?=[}\s])/,/^false(?=[}\s])/,/^[0-9]+(?=[}\s])/,/^[a-zA-Z0-9_$-]+(?=[=}\s\/.])/,/^\[[^\]]*\]/,/^./,/^$/],e.conditions={mu:{rules:[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],inclusive:!1},emu:{rules:[2],inclusive:!1},INITIAL:{rules:[0,1,26],inclusive:!0}},e}();return e.lexer=t,e}();typeof require!="undefined"&&typeof exports!="undefined"&&(exports.parser=handlebars,exports.parse=function(){return handlebars.parse.apply(handlebars,arguments)},exports.main=function(t){if(!t[1])throw new Error("Usage: "+t[0]+" FILE");if(typeof process!="undefined")var n=require("fs").readFileSync(require("path").join(process.cwd(),t[1]),"utf8");else var r=require("file").path(require("file").cwd()),n=r.join(t[1]).read({charset:"utf-8"});return exports.parser.parse(n)},typeof module!="undefined"&&require.main===module&&exports.main(typeof process!="undefined"?process.argv.slice(1):require("system").args)),Handlebars.Parser=handlebars,Handlebars.parse=function(e){return Handlebars.Parser.yy=Handlebars.AST,Handlebars.Parser.parse(e)},Handlebars.print=function(e){return(new Handlebars.PrintVisitor).accept(e)},Handlebars.logger={DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(e,t){}},Handlebars.log=function(e,t){Handlebars.logger.log(e,t)},function(){Handlebars.AST={},Handlebars.AST.ProgramNode=function(e,t){this.type="program",this.statements=e,t&&(this.inverse=new Handlebars.AST.ProgramNode(t))},Handlebars.AST.MustacheNode=function(e,t,n){this.type="mustache",this.id=e[0],this.params=e.slice(1),this.hash=t,this.escaped=!n},Handlebars.AST.PartialNode=function(e,t){this.type="partial",this.id=e,this.context=t};var e=function(e,t){if(e.original!==t.original)throw new Handlebars.Exception(e.original+" doesn't match "+t.original)};Handlebars.AST.BlockNode=function(t,n,r){e(t.id,r),this.type="block",this.mustache=t,this.program=n},Handlebars.AST.InverseNode=function(t,n,r){e(t.id,r),this.type="inverse",this.mustache=t,this.program=n},Handlebars.AST.ContentNode=function(e){this.type="content",this.string=e},Handlebars.AST.HashNode=function(e){this.type="hash",this.pairs=e},Handlebars.AST.IdNode=function(e){this.type="ID",this.original=e.join(".");var t=[],n=0;for(var r=0,i=e.length;r<i;r++){var s=e[r];s===".."?n++:s==="."||s==="this"?this.isScoped=!0:t.push(s)}this.parts=t,this.string=t.join("."),this.depth=n,this.isSimple=t.length===1&&n===0},Handlebars.AST.StringNode=function(e){this.type="STRING",this.string=e},Handlebars.AST.IntegerNode=function(e){this.type="INTEGER",this.integer=e},Handlebars.AST.BooleanNode=function(e){this.type="BOOLEAN",this.bool=e},Handlebars.AST.CommentNode=function(e){this.type="comment",this.comment=e}}(),Handlebars.Exception=function(e){var t=Error.prototype.constructor.apply(this,arguments);for(var n in t)t.hasOwnProperty(n)&&(this[n]=t[n]);this.message=t.message},Handlebars.Exception.prototype=new Error,Handlebars.SafeString=function(e){this.string=e},Handlebars.SafeString.prototype.toString=function(){return this.string.toString()},function(){var e={"<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},t=/&(?!\w+;)|[<>"'`]/g,n=/[&<>"'`]/,r=function(t){return e[t]||"&amp;"};Handlebars.Utils={escapeExpression:function(e){return e instanceof Handlebars.SafeString?e.toString():e==null||e===!1?"":n.test(e)?e.replace(t,r):e},isEmpty:function(e){return typeof e=="undefined"?!0:e===null?!0:e===!1?!0:Object.prototype.toString.call(e)==="[object Array]"&&e.length===0?!0:!1}}}(),Handlebars.Compiler=function(){},Handlebars.JavaScriptCompiler=function(){},function(e,t){e.OPCODE_MAP={appendContent:1,getContext:2,lookupWithHelpers:3,lookup:4,append:5,invokeMustache:6,appendEscaped:7,pushString:8,truthyOrFallback:9,functionOrFallback:10,invokeProgram:11,invokePartial:12,push:13,assignToHash:15,pushStringParam:16},e.MULTI_PARAM_OPCODES={appendContent:1,getContext:1,lookupWithHelpers:2,lookup:1,invokeMustache:3,pushString:1,truthyOrFallback:1,functionOrFallback:1,invokeProgram:3,invokePartial:1,push:1,assignToHash:1,pushStringParam:1},e.DISASSEMBLE_MAP={};for(var n in e.OPCODE_MAP){var r=e.OPCODE_MAP[n];e.DISASSEMBLE_MAP[r]=n}e.multiParamSize=function(t){return e.MULTI_PARAM_OPCODES[e.DISASSEMBLE_MAP[t]]},e.prototype={compiler:e,disassemble:function(){var t=this.opcodes,n,r,i=[],s,o,u;for(var a=0,f=t.length;a<f;a++){n=t[a];if(n==="DECLARE")o=t[++a],u=t[++a],i.push("DECLARE "+o+" = "+u);else{s=e.DISASSEMBLE_MAP[n];var l=e.multiParamSize(n),c=[];for(var h=0;h<l;h++)r=t[++a],typeof r=="string"&&(r='"'+r.replace("\n","\\n")+'"'),c.push(r);s=s+" "+c.join(" "),i.push(s)}}return i.join("\n")},guid:0,compile:function(e,t){this.children=[],this.depths={list:[]},this.options=t;var n=this.options.knownHelpers;this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0};if(n)for(var r in n)this.options.knownHelpers[r]=n[r];return this.program(e)},accept:function(e){return this[e.type](e)},program:function(e){var t=e.statements,n;this.opcodes=[];for(var r=0,i=t.length;r<i;r++)n=t[r],this[n.type](n);return this.isSimple=i===1,this.depths.list=this.depths.list.sort(function(e,t){return e-t}),this},compileProgram:function(e){var t=(new this.compiler).compile(e,this.options),n=this.guid++;this.usePartial=this.usePartial||t.usePartial,this.children[n]=t;for(var r=0,i=t.depths.list.length;r<i;r++){depth=t.depths.list[r];if(depth<2)continue;this.addDepth(depth-1)}return n},block:function(e){var t=e.mustache,n,r,i,s,o=this.setupStackForMustache(t),u=this.compileProgram(e.program);e.program.inverse&&(s=this.compileProgram(e.program.inverse),this.declare("inverse",s)),this.opcode("invokeProgram",u,o.length,!!t.hash),this.declare("inverse",null),this.opcode("append")},inverse:function(e){var t=this.setupStackForMustache(e.mustache),n=this.compileProgram(e.program);this.declare("inverse",n),this.opcode("invokeProgram",null,t.length,!!e.mustache.hash),this.declare("inverse",null),this.opcode("append")},hash:function(e){var t=e.pairs,n,r;this.opcode("push","{}");for(var i=0,s=t.length;i<s;i++)n=t[i],r=n[1],this.accept(r),this.opcode("assignToHash",n[0])},partial:function(e){var t=e.id;this.usePartial=!0,e.context?this.ID(e.context):this.opcode("push","depth0"),this.opcode("invokePartial",t.original),this.opcode("append")},content:function(e){this.opcode("appendContent",e.string)},mustache:function(e){var t=this.setupStackForMustache(e);this.opcode("invokeMustache",t.length,e.id.original,!!e.hash),e.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},ID:function(e){this.addDepth(e.depth),this.opcode("getContext",e.depth),this.opcode("lookupWithHelpers",e.parts[0]||null,e.isScoped||!1);for(var t=1,n=e.parts.length;t<n;t++)this.opcode("lookup",e.parts[t])},STRING:function(e){this.opcode("pushString",e.string)},INTEGER:function(e){this.opcode("push",e.integer)},BOOLEAN:function(e){this.opcode("push",e.bool)},comment:function(){},pushParams:function(e){var t=e.length,n;while(t--)n=e[t],this.options.stringParams?(n.depth&&this.addDepth(n.depth),this.opcode("getContext",n.depth||0),this.opcode("pushStringParam",n.string)):this[n.type](n)},opcode:function(t,n,r,i){this.opcodes.push(e.OPCODE_MAP[t]),n!==undefined&&this.opcodes.push(n),r!==undefined&&this.opcodes.push(r),i!==undefined&&this.opcodes.push(i)},declare:function(e,t){this.opcodes.push("DECLARE"),this.opcodes.push(e),this.opcodes.push(t)},addDepth:function(e){if(e===0)return;this.depths[e]||(this.depths[e]=!0,this.depths.list.push(e))},setupStackForMustache:function(e){var t=e.params;return this.pushParams(t),e.hash&&this.hash(e.hash),this.ID(e.id),t}},t.prototype={nameLookup:function(e,n,r){return/^[0-9]+$/.test(n)?e+"["+n+"]":t.isValidJavaScriptVariableName(n)?e+"."+n:e+"['"+n+"']"},appendToBuffer:function(e){return this.environment.isSimple?"return "+e+";":"buffer += "+e+";"},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(e,t,n,r){this.environment=e,this.options=t||{},this.name=this.environment.name,this.isChild=!!n,this.context=n||{programs:[],aliases:{self:"this"},registers:{list:[]}},this.preamble(),this.stackSlot=0,this.stackVars=[],this.compileChildren(e,t);var i=e.opcodes,s;this.i=0;for(u=i.length;this.i<u;this.i++)s=this.nextOpcode(0),s[0]==="DECLARE"?(this.i=this.i+2,this[s[1]]=s[2]):(this.i=this.i+s[1].length,this[s[0]].apply(this,s[1]));return this.createFunctionContext(r)},nextOpcode:function(t){var n=this.environment.opcodes,r=n[this.i+t],i,s,o,u;if(r==="DECLARE")return i=n[this.i+1],s=n[this.i+2],["DECLARE",i,s];i=e.DISASSEMBLE_MAP[r],o=e.multiParamSize(r),u=[];for(var a=0;a<o;a++)u.push(n[this.i+a+1+t]);return[i,u]},eat:function(e){this.i=this.i+e.length},preamble:function(){var e=[];this.useRegister("foundHelper");if(!this.isChild){var t=this.namespace,n="helpers = helpers || "+t+".helpers;";this.environment.usePartial&&(n=n+" partials = partials || "+t+".partials;"),e.push(n)}else e.push("");this.environment.isSimple?e.push(""):e.push(", buffer = "+this.initializeBuffer()),this.lastContext=0,this.source=e},createFunctionContext:function(e){var t=this.stackVars;this.isChild||(t=t.concat(this.context.registers.list)),t.length>0&&(this.source[1]=this.source[1]+", "+t.join(", "));if(!this.isChild){var n=[];for(var r in this.context.aliases)this.source[1]=this.source[1]+", "+r+"="+this.context.aliases[r]}this.source[1]&&(this.source[1]="var "+this.source[1].substring(2)+";"),this.isChild||(this.source[1]+="\n"+this.context.programs.join("\n")+"\n"),this.environment.isSimple||this.source.push("return buffer;");var i=this.isChild?["depth0","data"]:["Handlebars","depth0","helpers","partials","data"];for(var s=0,o=this.environment.depths.list.length;s<o;s++)i.push("depth"+this.environment.depths.list[s]);if(e)return i.push(this.source.join("\n  ")),Function.apply(this,i);var u="function "+(this.name||"")+"("+i.join(",")+") {\n  "+this.source.join("\n  ")+"}";return Handlebars.log(Handlebars.logger.DEBUG,u+"\n\n"),u},appendContent:function(e){this.source.push(this.appendToBuffer(this.quotedString(e)))},append:function(){var e=this.popStack();this.source.push("if("+e+" || "+e+" === 0) { "+this.appendToBuffer(e)+" }"),this.environment.isSimple&&this.source.push("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){var e=this.nextOpcode(1),t="";this.context.aliases.escapeExpression="this.escapeExpression",e[0]==="appendContent"&&(t=" + "+this.quotedString(e[1][0]),this.eat(e)),this.source.push(this.appendToBuffer("escapeExpression("+this.popStack()+")"+t))},getContext:function(e){this.lastContext!==e&&(this.lastContext=e)},lookupWithHelpers:function(e,t){if(e){var n=this.nextStack();this.usingKnownHelper=!1;var r;!t&&this.options.knownHelpers[e]?(r=n+" = "+this.nameLookup("helpers",e,"helper"),this.usingKnownHelper=!0):t||this.options.knownHelpersOnly?r=n+" = "+this.nameLookup("depth"+this.lastContext,e,"context"):(this.register("foundHelper",this.nameLookup("helpers",e,"helper")),r=n+" = foundHelper || "+this.nameLookup("depth"+this.lastContext,e,"context")),r+=";",this.source.push(r)}else this.pushStack("depth"+this.lastContext)},lookup:function(e){var t=this.topStack();this.source.push(t+" = ("+t+" === null || "+t+" === undefined || "+t+" === false ? "+t+" : "+this.nameLookup(t,e,"context")+");")},pushStringParam:function(e){this.pushStack("depth"+this.lastContext),this.pushString(e)},pushString:function(e){this.pushStack(this.quotedString(e))},push:function(e){this.pushStack(e)},invokeMustache:function(e,t,n){this.populateParams(e,this.quotedString(t),"{}",null,n,function(e,t,n){this.usingKnownHelper||(this.context.aliases.helperMissing="helpers.helperMissing",this.context.aliases.undef="void 0",this.source.push("else if("+n+"=== undef) { "+e+" = helperMissing.call("+t+"); }"),e!==n&&this.source.push("else { "+e+" = "+n+"; }"))})},invokeProgram:function(e,t,n){var r=this.programExpression(this.inverse),i=this.programExpression(e);this.populateParams(t,null,i,r,n,function(e,t,n){this.usingKnownHelper||(this.context.aliases.blockHelperMissing="helpers.blockHelperMissing",this.source.push("else { "+e+" = blockHelperMissing.call("+t+"); }"))})},populateParams:function(e,t,n,r,i,s){var o=i||this.options.stringParams||r||this.options.data,u=this.popStack(),a,f=[],l,c,h;o?(this.register("tmp1",n),h="tmp1"):h="{ hash: {} }";if(o){var p=i?this.popStack():"{}";this.source.push("tmp1.hash = "+p+";")}this.options.stringParams&&this.source.push("tmp1.contexts = [];");for(var d=0;d<e;d++)l=this.popStack(),f.push(l),this.options.stringParams&&this.source.push("tmp1.contexts.push("+this.popStack()+");");r&&(this.source.push("tmp1.fn = tmp1;"),this.source.push("tmp1.inverse = "+r+";")),this.options.data&&this.source.push("tmp1.data = data;"),f.push(h),this.populateCall(f,u,t||u,s,n!=="{}")},populateCall:function(e,t,n,r,i){var s=["depth0"].concat(e).join(", "),o=["depth0"].concat(n).concat(e).join(", "),u=this.nextStack();if(this.usingKnownHelper)this.source.push(u+" = "+t+".call("+s+");");else{this.context.aliases.functionType='"function"';var a=i?"foundHelper && ":"";this.source.push("if("+a+"typeof "+t+" === functionType) { "+u+" = "+t+".call("+s+"); }")}r.call(this,u,o,t),this.usingKnownHelper=!1},invokePartial:function(e){params=[this.nameLookup("partials",e,"partial"),"'"+e+"'",this.popStack(),"helpers","partials"],this.options.data&&params.push("data"),this.pushStack("self.invokePartial("+params.join(", ")+");")},assignToHash:function(e){var t=this.popStack(),n=this.topStack();this.source.push(n+"['"+e+"'] = "+t+";")},compiler:t,compileChildren:function(e,t){var n=e.children,r,i;for(var s=0,o=n.length;s<o;s++){r=n[s],i=new this.compiler,this.context.programs.push("");var u=this.context.programs.length;r.index=u,r.name="program"+u,this.context.programs[u]=i.compile(r,t,this.context)}},programExpression:function(e){if(e==null)return"self.noop";var t=this.environment.children[e],n=t.depths.list,r=[t.index,t.name,"data"];for(var i=0,s=n.length;i<s;i++)depth=n[i],depth===1?r.push("depth0"):r.push("depth"+(depth-1));return n.length===0?"self.program("+r.join(", ")+")":(r.shift(),"self.programWithDepth("+r.join(", ")+")")},register:function(e,t){this.useRegister(e),this.source.push(e+" = "+t+";")},useRegister:function(e){this.context.registers[e]||(this.context.registers[e]=!0,this.context.registers.list.push(e))},pushStack:function(e){return this.source.push(this.nextStack()+" = "+e+";"),"stack"+this.stackSlot},nextStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),"stack"+this.stackSlot},popStack:function(){return"stack"+this.stackSlot--},topStack:function(){return"stack"+this.stackSlot},quotedString:function(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r")+'"'}};var i="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),s=t.RESERVED_WORDS={};for(var o=0,u=i.length;o<u;o++)s[i[o]]=!0;t.isValidJavaScriptVariableName=function(e){return!t.RESERVED_WORDS[e]&&/^[a-zA-Z_$][0-9a-zA-Z_$]+$/.test(e)?!0:!1}}(Handlebars.Compiler,Handlebars.JavaScriptCompiler),Handlebars.precompile=function(e,t){t=t||{};var n=Handlebars.parse(e),r=(new Handlebars.Compiler).compile(n,t);return(new Handlebars.JavaScriptCompiler).compile(r,t)},Handlebars.compile=function(e,t){function r(){var n=Handlebars.parse(e),r=(new Handlebars.Compiler).compile(n,t),i=(new Handlebars.JavaScriptCompiler).compile(r,t,undefined,!0);return Handlebars.template(i)}t=t||{};var n;return function(e,t){return n||(n=r()),n.call(this,e,t)}},Handlebars.VM={template:function(e){var t={escapeExpression:Handlebars.Utils.escapeExpression,invokePartial:Handlebars.VM.invokePartial,programs:[],program:function(e,t,n){var r=this.programs[e];return n?Handlebars.VM.program(t,n):r?r:(r=this.programs[e]=Handlebars.VM.program(t),r)},programWithDepth:Handlebars.VM.programWithDepth,noop:Handlebars.VM.noop};return function(n,r){return r=r||{},e.call(t,Handlebars,n,r.helpers,r.partials,r.data)}},programWithDepth:function(e,t,n){var r=Array.prototype.slice.call(arguments,2);return function(n,i){return i=i||{},e.apply(this,[n,i.data||t].concat(r))}},program:function(e,t){return function(n,r){return r=r||{},e(n,r.data||t)}},noop:function(){return""},invokePartial:function(e,t,n,r,i,s){options={helpers:r,partials:i,data:s};if(e===undefined)throw new Handlebars.Exception("The partial "+t+" could not be found");if(e instanceof Function)return e(n,options);if(!Handlebars.compile)throw new Handlebars.Exception("The partial "+t+" could not be compiled when running in runtime-only mode");return i[t]=Handlebars.compile(e),i[t](n,options)}},Handlebars.template=Handlebars.VM.template,define("handlebars",function(){}),define("tmpl",["handlebars","text"],function(e,t){var n={};return{load:function(e,r,i,s){return t.load(e,r,function(t){s.isBuild&&s.inlineText&&(n[e]=t),i(s.isBuild?t:Handlebars.compile(t))},s)},write:function(e,r,i){if(r in n){var s=t.jsEscape(n[r]);i("define('"+e+"!"+r+"', ['handlebars'], function (hb) { return Handlebars.compile('"+s+"');});\n")}}}}),define("tmpl!w3c/templates/headers.html",["handlebars"],function(e){return Handlebars.compile("<div class='head'>\n  <p>\n    {{#if prependW3C}}\n      <a href='http://www.w3.org/'><img width='72' height='48' src='{{httpScheme}}://www.w3.org/Icons/w3c_home' alt='W3C'/></a>\n    {{/if}}\n  </p>\n  <h1 class='title' id='title'>{{title}}</h1>\n  {{#if subtitle}}\n    <h2 id='subtitle'>{{subtitle}}</h2>\n  {{/if}}\n  <h2>{{#if prependW3C}}W3C {{/if}}{{textStatus}} {{publishHumanDate}}</h2>\n  <dl>\n    {{#unless isNoTrack}}\n      <dt>This version:</dt>\n      <dd><a href='{{thisVersion}}'>{{thisVersion}}</a></dd>\n      <dt>Latest published version:</dt>\n      <dd>{{#if latestVersion}}<a href='{{latestVersion}}'>{{latestVersion}}</a>{{else}}none{{/if}}</dd>\n    {{/unless}}\n    {{#if edDraftURI}}\n      <dt>Latest editor's draft:</dt>\n      <dd><a href='{{edDraftURI}}'>{{edDraftURI}}</a></dd>\n    {{/if}}\n    {{#if testSuiteURI}}\n      <dt>Test suite:</dt>\n      <dd><a href='{{testSuiteURI}}'>{{testSuiteURI}}</a></dd>\n    {{/if}}\n    {{#if implementationReportURI}}\n      <dt>Implementation report:</dt>\n      <dd><a href='{{implementationReportURI}}'>{{implementationReportURI}}</a></dd>\n    {{/if}}\n    {{#if isED}}\n      {{#if prevED}}\n        <dt>Previous editor's draft:</dt>\n        <dd><a href='{{prevED}}'>{{prevED}}</a></dd>\n      {{/if}}\n    {{/if}}\n    {{#if showPreviousVersion}}\n      <dt>Previous version:</dt>\n      <dd><a href='{{prevVersion}}'>{{prevVersion}}</a></dd>\n    {{/if}}\n    {{#if prevRecURI}}\n      <dt>Latest recommendation:</dt>\n      <dd><a href='{{prevRecURI}}'>{{prevRecURI}}</a></dd>\n    {{/if}}\n    <dt>Editor{{#if multipleEditors}}s{{/if}}:</dt>\n    {{showPeople \"Editor\" editors}}\n    {{#if authors}}\n      <dt>Author{{#if multipleAuthors}}s{{/if}}:</dt>\n      {{showPeople \"Author\" authors}}\n    {{/if}}\n  </dl>\n  {{#if errata}}\n    <p>\n      Please refer to the <a href=\"{{errata}}\">errata</a> for this document, which may include some normative corrections.\n    </p>\n  {{/if}}\n  {{#if alternateFormats}}\n    <p>\n      {{#if multipleAlternates}}\n        This document is also available in these non-normative formats: \n      {{else}}\n        This document is also available in this non-normative format: \n      {{/if}}\n      {{{alternatesHTML}}}\n    </p>\n  {{/if}}\n  {{#if isRec}}\n    <p>\n      The English version of this specification is the only normative version. Non-normative \n      <a href=\"http://www.w3.org/Consortium/Translation/\">translations</a> may also be available.\n    </p>\n  {{/if}}\n  {{#if isUnofficial}}\n    {{#if additionalCopyrightHolders}}\n      <p class='copyright'>{{{additionalCopyrightHolders}}}</p>\n    {{else}}\n      {{#if overrideCopyright}}\n        {{{overrideCopyright}}}\n      {{else}}\n        <p class='copyright'>\n          This document is licensed under a \n          <a class='subfoot' href='http://creativecommons.org/licenses/by/3.0/' rel='license'>Creative Commons \n          Attribution 3.0 License</a>.\n        </p>\n      {{/if}}\n    {{/if}}\n  {{else}}\n    {{#if overrideCopyright}}\n      {{{overrideCopyright}}}\n    {{else}}\n      <p class='copyright'>\n        <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> &copy; \n        {{#if copyrightStart}}{{copyrightStart}}-{{/if}}{{publishYear}}\n        {{#if additionalCopyrightHolders}} {{{additionalCopyrightHolders}}} &amp;{{/if}}\n        <a href='http://www.w3.org/'><abbr title='World Wide Web Consortium'>W3C</abbr></a><sup>&reg;</sup> \n        (<a href='http://www.csail.mit.edu/'><abbr title='Massachusetts Institute of Technology'>MIT</abbr></a>,\n        <a href='http://www.ercim.eu/'><abbr title='European Research Consortium for Informatics and Mathematics'>ERCIM</abbr></a>,\n        <a href='http://www.keio.ac.jp/'>Keio</a>), All Rights Reserved.\n        W3C <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer'>liability</a>,\n        <a href='http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks'>trademark</a> and\n        <a href='http://www.w3.org/Consortium/Legal/copyright-documents'>document use</a> rules apply.\n      </p>\n    {{/if}}\n  {{/if}}\n  <hr/>\n</div>\n")}),define("tmpl!w3c/templates/sotd.html",["handlebars"],function(e){return Handlebars.compile("<section id='sotd' class='introductory'><h2>Status of This Document</h2>\n  {{#if isUnofficial}}\n    <p>\n      This document is merely a public working draft of a potential specification. It has\n      no official standing of any kind and does not represent the support or consensus of any\n      standards organisation.\n    </p>\n    {{{sotdCustomParagraph}}}\n  {{else}}\n    {{#if isTagFinding}}\n      {{#if sotdCustomParagraph}}\n        {{{sotdCustomParagraph}}}\n      {{else}}\n        <p style='color: red'>\n          ReSpec does not support automated SotD generation for TAG findings, please specify one using a \n          <code>&lt;section></code> element with ID=sotd.\n        </p>\n      {{/if}}\n    {{else}}\n      {{#if isNoTrack}}\n        <p>\n          This document is merely a W3C-internal {{#if isMO}}member-confidential{{/if}} document. It has no\n          official standing of any kind and does not represent consensus of the W3C Membership.\n        </p>\n        {{{sotdCustomParagraph}}}\n      {{else}}\n        <p>\n          <em>This section describes the status of this document at the time of its publication. Other\n          documents may supersede this document. A list of current W3C publications and the latest revision\n          of this technical report can be found in the <a href='http://www.w3.org/TR/'>W3C technical reports\n          index</a> at http://www.w3.org/TR/.</em>\n        </p>\n        {{{sotdCustomParagraph}}}\n        <p>\n          This document was published by the {{{wgHTML}}} as {{anOrA}} {{longStatus}}.\n          {{#if notYetRec}}\n            This document is intended to become a W3C Recommendation.\n          {{/if}}\n          If you wish to make comments regarding this document, please send them to \n          <a href='mailto:{{wgPublicList}}@w3.org'>{{wgPublicList}}@w3.org</a> \n          (<a href='mailto:{{wgPublicList}}-request@w3.org?subject=subscribe'>subscribe</a>,\n          <a href='http://lists.w3.org/Archives/Public/{{wgPublicList}}/'>archives</a>).\n          {{#if isLC}}The Last Call period ends {{humanLCEnd}}.{{/if}}\n          {{#if isCR}}\n            W3C publishes a Candidate Recommendation to indicate that the document is believed\n            to be stable and to encourage implementation by the developer community. This\n            Candidate Recommendation is expected to advance to Proposed Recommendation no earlier than\n            {{humanCREnd}}.\n          {{/if}}\n          All feedback is welcome.\n        </p>\n        {{#if notRec}}\n          <p>\n            Publication as {{anOrA}} {{textStatus}} does not imply endorsement by the W3C Membership.\n            This is a draft document and may be updated, replaced or obsoleted by other documents at \n            any time. It is inappropriate to cite this document as other than work in progress.\n          </p>\n        {{/if}}\n        {{#if isLC}}\n          <p>\n            This is a Last Call Working Draft and thus the Working Group has determined that this document has satisfied the\n            relevant technical requirements and is sufficiently stable to advance through the Technical Recommendation process.\n          </p>\n        {{/if}}\n        <p>\n          {{#unless isIGNote}}\n            This document was produced by a group operating under the \n            <a href='http://www.w3.org/Consortium/Patent-Policy-20040205/'>5 February 2004 W3C Patent Policy</a>.\n          {{/unless}}\n          {{#if recNotExpected}}The group does not expect this document to become a W3C Recommendation.{{/if}}\n          {{#unless isIGNote}}\n            {{#if multipleWGs}}\n              W3C maintains a public list of any patent disclosures ({{{wgPatentHTML}}})\n            {{else}}\n              W3C maintains a <a href='{{wgPatentURI}}' rel='disclosure'>public list of any patent disclosures</a> \n            {{/if}}\n            made in connection with the deliverables of the group; that page also includes instructions for \n            disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains\n            <a href='http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential'>Essential Claim(s)</a> must disclose the\n            information in accordance with <a href='http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure'>section\n            6 of the W3C Patent Policy</a>.\n          {{/unless}}\n          {{#if isIGNote}}\n            The disclosure obligations of the Participants of this group are described in the \n            <a href='{{charterDisclosureURI}}'>charter</a>. \n          {{/if}}\n        </p>\n        {{#if addPatentNote}}<p>{{{addPatentNote}}}</p>{{/if}}\n      {{/if}}\n    {{/if}}\n  {{/if}}\n</section>\n\n")}),define("tmpl!w3c/templates/cgbg-headers.html",["handlebars"],function(e){return Handlebars.compile("<div class='head'>\n  <p>\n    <a href='http://www.w3.org/'><img width='72' height='48' src='{{httpScheme}}://www.w3.org/Icons/w3c_home' alt='W3C'/></a>\n  </p>\n  <h1 class='title' id='title'>{{title}}</h1>\n  {{#if subtitle}}<h2 id='subtitle'>{{subtitle}}</h2>{{/if}}\n  <h2>{{longStatus}} {{publishHumanDate}}</h2>\n  <dl>\n    {{#if thisVersion}}\n      <dt>This version:</dt>\n      <dd><a href='{{thisVersion}}'>{{thisVersion}}</a></dd>\n    {{/if}}\n    {{#if latestVersion}}\n      <dt>Latest published version:</dt>\n      <dd><a href='{{latestVersion}}'>{{latestVersion}}</a></dd>\n    {{/if}}\n    {{#if edDraftURI}}\n      <dt>Latest editor's draft:</dt>\n      <dd><a href='{{edDraftURI}}'>{{edDraftURI}}</a></dd>\n    {{/if}}\n    {{#if testSuiteURI}}\n      <dt>Test suite:</dt>\n      <dd><a href='{{testSuiteURI}}'>{{testSuiteURI}}</a></dd>\n    {{/if}}\n    {{#if implementationReportURI}}\n      <dt>Implementation report:</dt>\n      <dd><a href='{{implementationReportURI}}'>{{implementationReportURI}}</a></dd>\n    {{/if}}\n    {{#if prevVersion}}\n      <dt>Previous version:</dt>\n      <dd><a href='{{prevVersion}}'>{{prevVersion}}</a></dd>\n    {{/if}}\n    {{#unless isCGFinal}}\n      {{#if prevED}}\n        <dt>Previous editor's draft:</dt>\n        <dd><a href='{{prevED}}'>{{prevED}}</a></dd>\n      {{/if}}\n    {{/unless}}\n    <dt>Editor{{#if multipleEditors}}s{{/if}}:</dt>\n    {{showPeople \"Editor\" editors}}\n    {{#if authors}}\n      <dt>Author{{#if multipleAuthors}}s{{/if}}:</dt>\n      {{showPeople \"Author\" authors}}\n    {{/if}}\n  </dl>\n  {{#if alternateFormats}}\n    <p>\n      {{#if multipleAlternates}}\n        This document is also available in these non-normative formats: \n      {{else}}\n        This document is also available in this non-normative format: \n      {{/if}}\n      {{{alternatesHTML}}}\n    </p>\n  {{/if}}\n  <p class='copyright'>\n    <a href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> &copy; \n    {{#if copyrightStart}}{{copyrightStart}}-{{/if}}{{publishYear}}\n    the Contributors to the {{title}} Specification, published by the\n    <a href='{{wgURI}}'>{{wg}}</a> under the\n    {{#if isCGFinal}}\n      <a href=\"https://www.w3.org/community/about/agreements/fsa/\">W3C Community Final Specification Agreement (FSA)</a>. \n      A human-readable <a href=\"http://www.w3.org/community/about/agreements/fsa-deed/\">summary</a> is available.\n    {{else}}\n      <a href=\"https://www.w3.org/community/about/agreements/cla/\">W3C Community Contributor License Agreement (CLA)</a>.\n      A human-readable <a href=\"http://www.w3.org/community/about/agreements/cla-deed/\">summary</a> is available.\n    {{/if}}\n  </p>\n  <hr/>\n</div>\n")}),define("tmpl!w3c/templates/cgbg-sotd.html",["handlebars"],function(e){return Handlebars.compile("<section id='sotd' class='introductory'><h2>Status of This Document</h2>\n  <p>\n    This specification was published by the <a href='{{wgURI}}'>{{wg}}</a>.\n    It is not a W3C Standard nor is it on the W3C Standards Track.\n    {{#if isCGFinal}}\n      Please note that under the \n      <a href=\"https://www.w3.org/community/about/agreements/final/\">W3C Community Final Specification Agreement (FSA)</a> \n      other conditions apply.\n    {{else}}\n      Please note that under the \n      <a href=\"https://www.w3.org/community/about/agreements/cla/\">W3C Community Contributor License Agreement (CLA)</a>\n      there is a limited opt-out and other conditions apply.\n    {{/if}}\n    Learn more about \n    <a href=\"http://www.w3.org/community/\">W3C Community and Business Groups</a>.\n  </p>\n  {{{sotdCustomParagraph}}}\n</section>\n")}),define("w3c/headers",["handlebars","core/utils","tmpl!w3c/templates/headers.html","tmpl!w3c/templates/sotd.html","tmpl!w3c/templates/cgbg-headers.html","tmpl!w3c/templates/cgbg-sotd.html"],function(e,t,n,r,i,s){return Handlebars.registerHelper("showPeople",function(e,t){var n="",r="",i="",s="",o="",u="";this.doRDFa&&(e==="Editor"?(n=" rel='bibo:editor'",this.doRDFa=="1.1"&&(n+=" inlist=''")):e==="Author"&&(n=" rel='dcterms:contributor'"),s=" property='foaf:name'",i=" rel='foaf:mbox'",r=" typeof='foaf:Person'",o=" rel='foaf:workplaceHomepage'",u=" rel='foaf:homepage'");var a="";for(var f=0,l=t.length;f<l;f++){var c=t[f];this.doRDFa?a+="<dd"+n+"><span"+r+">":a+="<dd>",c.url?this.doRDFa?a+="<a"+u+s+" content='"+c.name+"' href='"+c.url+"'>"+c.name+"</a>":a+="<a href='"+c.url+"'>"+c.name+"</a>":a+="<span"+s+">"+c.name+"</span>",c.company&&(a+=", ",c.companyURL?a+="<a"+o+" href='"+c.companyURL+"'>"+c.company+"</a>":a+=c.company),c.mailto&&(a+=", <span class='ed_mailto'><a"+i+" href='mailto:"+c.mailto+"'>"+c.mailto+"</a></span>"),c.note&&(a+=" ("+c.note+")"),this.doRDFa&&(a+="</span>\n"),a+="</dd>\n"}return new Handlebars.SafeString(a)}),{status2maturity:{FPWD:"WD",LC:"WD","FPWD-NOTE":"NOTE","WD-NOTE":"WD","LC-NOTE":"LC","IG-NOTE":"NOTE","WG-NOTE":"NOTE"},status2text:{NOTE:"Note","WG-NOTE":"Working Group Note","CG-NOTE":"Co-ordination Group Note","IG-NOTE":"Interest Group Note","Member-SUBM":"Member Submission","Team-SUBM":"Team Submission",MO:"Member-Only Document",ED:"Editor's Draft",FPWD:"Working Draft",WD:"Working Draft","FPWD-NOTE":"Working Group Note","WD-NOTE":"Working Draft","LC-NOTE":"Working Draft",LC:"Working Draft",CR:"Candidate Recommendation",PR:"Proposed Recommendation",PER:"Proposed Edited Recommendation",REC:"Recommendation",RSCND:"Rescinded Recommendation",unofficial:"Unofficial Draft",base:"Document",finding:"TAG Finding","draft-finding":"Draft TAG Finding","CG-DRAFT":"Draft Community Group Specification","CG-FINAL":"Final Community Group Specification","BG-DRAFT":"Draft Business Group Specification","BG-FINAL":"Final Business Group Specification"},status2long:{FPWD:"First Public Working Draft","FPWD-NOTE":"First Public Working Group Note",LC:"Last Call Working Draft","LC-NOTE":"Last Call Working Draft"},recTrackStatus:["FPWD","WD","LC","CR","PR","PER","REC"],noTrackStatus:["MO","unofficial","base","finding","draft-finding","CG-DRAFT","CG-FINAL","BG-DRAFT","BG-FINAL"],cgbg:["CG-DRAFT","CG-FINAL","BG-DRAFT","BG-FINAL"],precededByAn:["ED","IG-NOTE"],run:function(e,o,u,a){a.pub("start","w3c/headers"),e.isCGBG=$.inArray(e.specStatus,this.cgbg)>=0,e.isCGFinal=e.isCGBG&&/G-FINAL$/.test(e.specStatus),e.specStatus||a.pub("error","Missing required configuration: specStatus"),!e.isCGBG&&!e.shortName&&a.pub("error","Missing required configuration: shortName"),e.title=o.title||"No Title",e.subtitle||(e.subtitle=""),e.publishDate?e.publishDate instanceof Date||(e.publishDate=t.parseSimpleDate(e.publishDate)):e.publishDate=t.parseLastModified(o.lastModified),e.publishYear=e.publishDate.getFullYear(),e.publishHumanDate=t.humanDate(e.publishDate),e.isNoTrack=$.inArray(e.specStatus,this.noTrackStatus)>=0,e.isRecTrack=e.noRecTrack?!1:$.inArray(e.specStatus,this.recTrackStatus)>=0,e.anOrA=$.inArray(e.specStatus,this.precededByAn)>=0?"an":"a",e.isTagFinding=e.specStatus==="finding"||e.specStatus==="draft-finding",e.edDraftURI||(e.edDraftURI="",e.specStatus==="ED"&&a.pub("warn","Editor's Drafts should set edDraftURI.")),e.maturity=this.status2maturity[e.specStatus]?this.status2maturity[e.specStatus]:e.specStatus;var f="TR";e.specStatus==="Member-SUBM"?f="Submission":e.specStatus==="Team-SUBM"&&(f="TeamSubmission"),e.isCGBG||(e.thisVersion="http://www.w3.org/"+f+"/"+e.publishDate.getFullYear()+"/"+e.maturity+"-"+e.shortName+"-"+t.concatDate(e.publishDate)+"/"),e.specStatus==="ED"&&(e.thisVersion=e.edDraftURI),e.isCGBG||(e.latestVersion="http://www.w3.org/"+f+"/"+e.shortName+"/"),e.isTagFinding&&(e.latestVersion="http://www.w3.org/2001/tag/doc/"+e.shortName,e.thisVersion=e.latestVersion+"-"+t.concatDate(e.publishDate,"-"));if(e.previousPublishDate){!e.previousMaturity&&!e.isTagFinding&&a.pub("error","previousPublishDate is set, but not previousMaturity"),e.previousPublishDate instanceof Date||(e.previousPublishDate=t.parseSimpleDate(e.previousPublishDate));var l=this.status2maturity[e.previousMaturity]?this.status2maturity[e.previousMaturity]:e.previousMaturity;e.isTagFinding?e.prevVersion=e.latestVersion+"-"+t.concatDate(e.previousPublishDate,"-"):e.isCGBG?e.prevVersion=e.prevVersion||"":e.prevVersion="http://www.w3.org/TR/"+e.previousPublishDate.getFullYear()+"/"+l+"-"+e.shortName+"-"+t.concatDate(e.previousPublishDate)+"/"}else e.specStatus!=="FPWD"&&e.specStatus!=="ED"&&!e.noRecTrack&&!e.isNoTrack&&a.pub("error","Document on track but no previous version."),e.prevVersion||(e.prevVersion="");e.prevRecShortname&&!e.prevRecURI&&(e.prevRecURI="http://www.w3.org/TR/"+e.prevRecShortname),(!e.editors||e.editors.length===0)&&a.pub("error","At least one editor is required");var c=function(e,t){t.name||a.pub("error","All authors and editors must have a name.")};$.each(e.editors,c),$.each(e.authors||[],c),e.multipleEditors=e.editors.length>1,e.multipleAuthors=e.authors&&e.authors.length>1,$.each(e.alternateFormats||[],function(e,t){(!t.uri||!t.label)&&a.pub("error","All alternate formats must have a uri and a label.")}),e.multipleAlternates=e.alternateFormats&&e.alternateFormats.length>1,e.alternatesHTML=t.joinAnd(e.alternateFormats,function(e){return"<a href='"+e.uri+"'>"+e.label+"</a>"}),e.copyrightStart&&e.copyrightStart==e.publishYear&&(e.copyrightStart="");for(var h in this.status2text){if(this.status2long[h])continue;this.status2long[h]=this.status2text[h]}e.longStatus=this.status2long[e.specStatus],e.textStatus=this.status2text[e.specStatus],e.showThisVersion=!e.isNoTrack||e.isTagFinding,e.showPreviousVersion=e.specStatus!=="FPWD"&&e.specStatus!=="ED"&&!e.isNoTrack&&!e.noRecTrack,e.isTagFinding&&(e.showPreviousVersion=e.previousPublishDate?!0:!1),e.notYetRec=e.isRecTrack&&e.specStatus!=="REC",e.isRec=e.isRecTrack&&e.specStatus==="REC",e.notRec=e.specStatus!=="REC",e.isUnofficial=e.specStatus==="unofficial",e.prependW3C=!e.isUnofficial,e.isED=e.specStatus==="ED",e.isLC=e.specStatus==="LC",e.isCR=e.specStatus==="CR",e.isMO=e.specStatus==="MO",e.isIGNote=e.specStatus==="IG-NOTE",$("body",o).prepend($(e.isCGBG?i(e):n(e)));var p=$("#sotd");(e.isCGBG||!e.isNoTrack||e.isTagFinding)&&!p.length&&a.pub("error","A custom SotD paragraph is required for your type of document."),e.sotdCustomParagraph=p.html(),p.remove();if($.isArray(e.wg)){e.multipleWGs=e.wg.length>1,e.wgHTML=t.joinAnd($.isArray(e.wg)?e.wg:[e.wg],function(t,n){return"<a href='"+e.wgURI[n]+"'>"+t+"</a>"});var d=[];for(var v=0,m=e.wg.length;v<m;v++)d.push("<a href='"+e.wgPatentURI[v]+"' rel='disclosure'>"+e.wg[v]+"</a>");e.wgPatentHTML=d.join(", ")}else e.multipleWGs=!1,e.wgHTML="<a href='"+e.wgURI+"'>"+e.wg+"</a>";e.specStatus==="LC"&&!e.lcEnd&&a.pub("error","Status is LC but no lcEnd is specified"),e.humanLCEnd=t.humanDate(e.lcEnd||""),e.specStatus==="CR"&&!e.crEnd&&a.pub("error","Status is CR but no crEnd is specified"),e.humanCREnd=t.humanDate(e.crEnd||""),e.recNotExpected=!e.isRecTrack&&e.maturity=="WD"&&e.specStatus!=="FPWD-NOTE",e.isIGNote&&!e.charterDisclosureURI&&a.pub("error","IG-NOTEs must link to charter's disclosure section using charterDisclosureURI"),$(e.isCGBG?s(e):r(e)).insertAfter($("#abstract")),a.pub("end","w3c/headers"),u()}}}),define("w3c/abstract",[],function(){return{run:function(e,t,n,r){r.pub("start","w3c/abstract");var i=$("#abstract");if(!i)return r.pub("error","Document must have one element with ID 'abstract'");i.find("p").length===0&&i.contents().wrapAll($("<p></p>")),i.prepend("<h2>Abstract</h2>"),i.addClass("introductory"),r.pub("end","w3c/abstract"),n()}}}),define("tmpl!w3c/templates/conformance.html",["handlebars"],function(e){return Handlebars.compile("<h2>Conformance</h2>\n<p>\n  As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,\n  and notes in this specification are non-normative. Everything else in this specification is\n  normative.\n</p>\n<p>\n  The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY,\n  and OPTIONAL in this specification are to be interpreted as described in [[!RFC2119]].\n</p>\n")}),define("w3c/conformance",["tmpl!w3c/templates/conformance.html"],function(e){return{run:function(t,n,r,i){i.pub("start","w3c/conformance");var s=$("#conformance");s.length&&s.prepend(e(t)),i.pub("end","w3c/conformance"),r()}}}),define("core/data-transform",["core/utils"],function(e){return{run:function(t,n,r,i){i.pub("start","w3c/data-transform"),$("[data-transform]",n).each(function(t,n){var r=$(n),i=r.attr("data-transform");r.removeAttr("data-transform");var s=e.runTransforms(r.html(),i);s&&r.html(s)}),i.pub("end","w3c/data-transform"),r()}}}),define("core/data-include",["core/utils"],function(e){return{run:function(t,n,r,i){i.pub("start","w3c/data-include");var s=$("[data-include]"),o=s.length,u=function(e){e.removeAttr("data-include"),e.removeAttr("data-oninclude"),e.removeAttr("data-include-format"),o--,o<=0&&(i.pub("end","w3c/data-include"),r())};o||(i.pub("end","w3c/data-include"),r()),s.each(function(){var t=$(this),n=t.attr("data-include"),r=t.attr("data-include-format")||"html";$.ajax({dataType:r,url:n,success:function(i,s,o){if(i){var a=t.attr("data-oninclude");a&&(i=e.runTransforms(i,a,n)),r==="text"?t.text(i):t.html(i)}u(t)},error:function(e,r,s){i.pub("error","Error including URI="+n+": "+r+" ("+s+")"),u(t)}})})}}}),define("core/inlines",["core/utils"],function(){return{run:function(e,t,n,r){r.pub("start","core/inlines"),t.normalize(),e.normativeReferences||(e.normativeReferences={}),e.informativeReferences||(e.informativeReferences={});var i={},s={};$("abbr[title]",t).each(function(){i[$(this).text()]=$(this).attr("title")}),$("acronym[title]",t).each(function(){s[$(this).text()]=$(this).attr("title")});var o=[];for(var u in i)o.push(u);for(var u in s)o.push(u);o.sort(function(e,t){return t.length<e.length?-1:e.length<t.length?1:0});var a=o.length?"(?:\\b"+o.join("\\b)|(?:\\b")+"\\b)":null,f=$("body",t).allTextNodes(["pre"]),l=new RegExp("(\\bMUST(?:\\s+NOT)?\\b|\\bSHOULD(?:\\s+NOT)?\\b|\\bSHALL(?:\\s+NOT)?\\b|\\bMAY\\b|\\b(?:NOT\\s+)?REQUIRED\\b|\\b(?:NOT\\s+)?RECOMMENDED\\b|\\bOPTIONAL\\b|(?:\\[\\[(?:!)?[A-Za-z0-9-]+\\]\\])"+(a?"|"+a:"")+")");for(var c=0;c<f.length;c++){var h=f[c],p=h.data.split(l);if(p.length===1)continue;var d=t.createDocumentFragment();while(p.length){var v=p.shift(),m=null;p.length&&(m=p.shift()),d.appendChild(t.createTextNode(v));if(m)if(/MUST(?:\s+NOT)?|SHOULD(?:\s+NOT)?|SHALL(?:\s+NOT)?|MAY|(?:NOT\s+)?REQUIRED|(?:NOT\s+)?RECOMMENDED|OPTIONAL/.test(m))m=m.toLowerCase(),d.appendChild($("<em/>").attr({"class":"rfc2119",title:m}).text(m)[0]);else if(/^\[\[/.test(m)){var g=m;g=g.replace(/^\[\[/,""),g=g.replace(/\]\]$/,"");var y=!1;g.indexOf("!")===0&&(y=!0,g=g.replace(/^!/,"")),y?e.normativeReferences[g]=!0:e.informativeReferences[g]=!0,d.appendChild(t.createTextNode("[")),d.appendChild($("<cite/>").wrapInner($("<a/>").attr({"class":"bibref",href:"#bib-"+g}).text(g))[0]),d.appendChild(t.createTextNode("]"))}else i[m]?$(h).parents("abbr").length?d.appendChild(t.createTextNode(m)):d.appendChild($("<abbr/>").attr({title:i[m]}).text(m)[0]):s[m]?$(h).parents("acronym").length?d.appendChild(t.createTextNode(m)):d.appendChild($("<acronym/>").attr({title:s[m]}).text(m)[0]):r.pub("error","Found token '"+m+"' but it does not correspond to anything")}h.parentNode.replaceChild(d,h)}r.pub("end","core/inlines"),n()}}}),define("core/dfn",[],function(){return{run:function(e,t,n,r){r.pub("start","core/dfn"),t.normalize(),e.definitionMap||(e.definitionMap={}),$("dfn").each(function(){var t=$(this).dfnTitle();e.definitionMap[t]=$(this).makeID("dfn",t)}),$("a:not([href])").each(function(){var t=$(this);if(t.hasClass("externalDFN"))return;var n=t.dfnTitle();e.definitionMap[n]&&!(e.definitionMap[n]instanceof Function)&&t.attr("href","#"+e.definitionMap[n]).addClass("internalDFN")}),r.pub("end","core/dfn"),n()}}}),define("text!core/css/examples.css",[],function(){return"/* --- EXAMPLES --- */\ndiv.example-title {\n    min-width: 7.5em;\n    color: #b9ab2d;\n}\ndiv.example-title span {\n    text-transform: uppercase;   \n}\naside.example, div.example, div.illegal-example {\n    padding: 0.5em;\n    margin: 1em 0;\n    position: relative;\n    clear: both;\n}\ndiv.illegal-example { color: red }\ndiv.illegal-example p { color: black }\naside.example, div.example {\n    padding: .5em;\n    border-left-width: .5em;\n    border-left-style: solid;\n    border-color: #e0cb52;\n    background: #fcfaee;    \n}\n\naside.example div.example {\n    border-left-width: .1em;\n    border-color: #999;\n    background: #fff;\n}\naside.example div.example div.example-title {\n    color: #999;\n}\n"}),define("core/examples",["text!core/css/examples.css"],function(e){var t=function(e,t,n){var r=t>0?" "+t:"",i=$("<div class='example-title'><span>Example"+r+"</span></div>");return n.title=e.attr("title"),n.title&&(i.append(e[0].ownerDocument.createTextNode(": "+n.title)),e.removeAttr("title")),i};return{run:function(n,r,i,s){s.pub("start","core/examples");var o=$("pre.example, pre.illegal-example, aside.example"),u=0;o.length&&($(r).find("head link").first().before($("<style/>").text(e)),o.each(function(e,n){var r=$(n),i={number:u,illegal:r.hasClass("illegal-example")};if(r.is("aside")){u++;var o=t(r,u,i);r.prepend(o),s.pub("example",i)}else{var a=!!r.parents("aside").length;a||u++;var f=r.html().split("\n");while(f.length&&/^\s*$/.test(f[0]))f.shift();while(f.length&&/^\s*$/.test(f[f.length-1]))f.pop();var l=/^(\s+)/.exec(f[0]);if(l){var c=new RegExp("^"+l[1]);for(var h=0;h<f.length;h++)f[h]=f[h].replace(c,"")}i.content=f.join("\n"),r.html(f.join("\n"));var p=$("<div class='example'></div>"),o=t(r,a?0:u,i);p.append(o),p.append(r.clone()),r.replaceWith(p),a||s.pub("example",i)}})),s.pub("end","core/examples"),i()}}}),define("text!core/css/issues-notes.css",[],function(){return"/* --- ISSUES/NOTES --- */\ndiv.issue-title, div.note-title {\n    padding-right:  1em;\n    min-width: 7.5em;\n    color: #b9ab2d;\n}\ndiv.issue-title { color: #e05252; }\ndiv.note-title { color: #52e052; }\ndiv.issue-title span, div.note-title span {\n    text-transform: uppercase;\n}\ndiv.note, div.issue {\n    margin-top: 1em;\n    margin-bottom: 1em;\n}\n.note > p:first-child, .issue > p:first-child { margin-top: 0 }\n.issue, .note {\n    padding: .5em;\n    border-left-width: .5em;\n    border-left-style: solid;\n}\ndiv.issue, div.note {\n    padding: 0.5em;\n    margin: 1em 0;\n    position: relative;\n    clear: both;\n}\nspan.note, span.issue { padding: .1em .5em .15em; }\n\n.issue {\n    border-color: #e05252;\n    background: #fbe9e9;\n}\n.note {\n    border-color: #52e052;\n    background: #e9fbe9;\n}\n\n\n"}),define("core/issues-notes",["text!core/css/issues-notes.css"],function(e){return{run:function(t,n,r,i){i.pub("start","core/issues-notes");var s=$(".issue, .note");if(s.length){$(n).find("head link").first().before($("<style/>").text(e));var o=$(".issue[data-number]").length>0,u=0;s.each(function(e,r){var s=$(r),a=s.hasClass("issue"),f=s.css("display")!="block",l=s.attr("data-number"),c={inline:f,content:s.html()};c.type=a?"issue":"note",a&&!f&&!o?(u++,c.number=u):l&&(c.number=l);if(!f){var h=$("<div class='"+c.type+"'></div>"),p=$("<div class='"+c.type+"-title'><span></span></div>"),d=a?"Issue":"Note";a&&(o?l&&(d+=" "+l,t.issueBase&&p.find("span").wrap($("<a href='"+t.issueBase+l+"'/>"))):d+=" "+u),p.find("span").text(d),c.title=s.attr("title"),c.title&&(p.append(n.createTextNode(": "+c.title)),s.removeAttr("title")),h.append(p),h.append(s.clone().removeClass(c.type).removeAttr("data-number")),s.replaceWith(h)}i.pub(c.type,c)})}i.pub("end","core/issues-notes"),r()}}}),define("core/requirements",[],function(){return{run:function(e,t,n,r){r.pub("start","core/requirements"),$(".req").each(function(e){e++;var t=$(this),n="Req. "+e;r.pub("req",{type:"req",number:e,content:t.html(),title:n}),t.prepend("<a href='#"+t.attr("id")+"'>"+n+"</a>: ")}),$("a.reqRef").each(function(){var e=$(this),t=e.attr("href"),n,r,i;if(!t)return;n=t.substring(1),r=$("#"+n),r.length?i=r.find("> a").text():i="Req. not found '"+n+"'",e.text(i)}),r.pub("end","core/requirements"),n()}}}),define("text!core/css/highlight.css",[],function(){return"/* HIGHLIGHTS */\ncode.prettyprint {\n    color:  inherit;\n}\n\n/* this from google-code-prettify */\n.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}\n"}),define("core/highlight",["text!core/css/highlight.css"],function(e){return{run:function(t,n,r,i){i.pub("start","core/highlight");var s="sh_css sh_html sh_javascript sh_javascript_dom sh_xml".split(" ");for(var o=0,u=s.length;o<u;o++){var a=s[o];$("."+a).each(function(){$(this).removeClass(a).addClass("highlight")})}var f=$("pre.highlight, code.highlight"),l=function(){i.pub("end","core/highlight"),r()};f.length?($(n).find("head link").first().before($("<style/>").text(e)),f.addClass("prettyprint"),prettyPrint(l)):l()}}}),window.PR_SHOULD_USE_CONTINUATION=!0,function(){function L(e){function a(e){var t=e.charCodeAt(0);if(t!==92)return t;var n=e.charAt(1);return t=u[n],t?t:"0"<=n&&n<="7"?parseInt(e.substring(1),8):n==="u"||n==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);var t=String.fromCharCode(e);if(t==="\\"||t==="-"||t==="["||t==="]")t="\\"+t;return t}function l(e){var t=e.substring(1,e.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g")),n=[],r=[],i=t[0]==="^";for(var s=i?1:0,o=t.length;s<o;++s){var u=t[s];if(/\\[bdsw]/i.test(u))n.push(u);else{var l=a(u),c;s+2<o&&"-"===t[s+1]?(c=a(t[s+2]),s+=2):c=l,r.push([l,c]),c<65||l>122||(c<65||l>90||r.push([Math.max(65,l)|32,Math.min(c,90)|32]),c<97||l>122||r.push([Math.max(97,l)&-33,Math.min(c,122)&-33]))}}r.sort(function(e,t){return e[0]-t[0]||t[1]-e[1]});var h=[],p=[NaN,NaN];for(var s=0;s<r.length;++s){var d=r[s];d[0]<=p[1]+1?p[1]=Math.max(p[1],d[1]):h.push(p=d)}var v=["["];i&&v.push("^"),v.push.apply(v,n);for(var s=0;s<h.length;++s){var d=h[s];v.push(f(d[0])),d[1]>d[0]&&(d[1]+1>d[0]&&v.push("-"),v.push(f(d[1])))}return v.push("]"),v.join("")}function c(e){var r=e.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),i=r.length,s=[];for(var o=0,u=0;o<i;++o){var a=r[o];if(a==="(")++u;else if("\\"===a.charAt(0)){var f=+a.substring(1);f&&f<=u&&(s[f]=-1)}}for(var o=1;o<s.length;++o)-1===s[o]&&(s[o]=++t);for(var o=0,u=0;o<i;++o){var a=r[o];if(a==="(")++u,s[u]===undefined&&(r[o]="(?:");else if("\\"===a.charAt(0)){var f=+a.substring(1);f&&f<=u&&(r[o]="\\"+s[u])}}for(var o=0,u=0;o<i;++o)"^"===r[o]&&"^"!==r[o+1]&&(r[o]="");if(e.ignoreCase&&n)for(var o=0;o<i;++o){var a=r[o],c=a.charAt(0);a.length>=2&&c==="["?r[o]=l(a):c!=="\\"&&(r[o]=a.replace(/[a-zA-Z]/g,function(e){var t=e.charCodeAt(0);return"["+String.fromCharCode(t&-33,t|32)+"]"}))}return r.join("")}var t=0,n=!1,r=!1;for(var i=0,s=e.length;i<s;++i){var o=e[i];if(o.ignoreCase)r=!0;else if(/[a-z]/i.test(o.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){n=!0,r=!1;break}}var u={b:8,t:9,n:10,v:11,f:12,r:13},h=[];for(var i=0,s=e.length;i<s;++i){var o=e[i];if(o.global||o.multiline)throw new Error(""+o);h.push("(?:"+c(o)+")")}return new RegExp(h.join("|"),r?"gi":"g")}function A(e){function a(e){switch(e.nodeType){case 1:if(t.test(e.className))return;for(var o=e.firstChild;o;o=o.nextSibling)a(o);var f=e.nodeName;if("BR"===f||"LI"===f)n[s]="\n",i[s<<1]=r++,i[s++<<1|1]=e;break;case 3:case 4:var l=e.nodeValue;l.length&&(u?l=l.replace(/\r\n?/g,"\n"):l=l.replace(/[ \t\r\n]+/g," "),n[s]=l,i[s<<1]=r,r+=l.length,i[s++<<1|1]=e)}}var t=/(?:^|\s)nocode(?:\s|$)/,n=[],r=0,i=[],s=0,o;e.currentStyle?o=e.currentStyle.whiteSpace:document.defaultView.getComputedStyle&&document.defaultView.getComputedStyle(e,null)&&(o=document.defaultView.getComputedStyle(e,null).getPropertyValue("white-space"));var u=o&&"pre"===o.substring(0,3);return a(e),{sourceCode:n.join("").replace(/\n$/,""),spans:i}}function O(e,t,n,r){if(!t)return;var i={sourceCode:t,basePos:e};n(i),r.push.apply(r,i.decorations)}function _(e){var t=undefined;for(var n=e.firstChild;n;n=n.nextSibling){var r=n.nodeType;t=r===1?t?e:n:r===3?M.test(n.nodeValue)?e:t:t}return t===e?undefined:t}function D(e,t){var n={},r;(function(){var i=e.concat(t),s=[],o={};for(var u=0,a=i.length;u<a;++u){var f=i[u],l=f[3];if(l)for(var c=l.length;--c>=0;)n[l.charAt(c)]=f;var h=f[1],p=""+h;o.hasOwnProperty(p)||(s.push(h),o[p]=null)}s.push(/[\0-\uffff]/),r=L(s)})();var i=t.length,s=function(e){var o=e.sourceCode,u=e.basePos,a=[u,w],f=0,l=o.match(r)||[],c={};for(var h=0,p=l.length;h<p;++h){var d=l[h],v=c[d],m=void 0,g;if(typeof v=="string")g=!1;else{var y=n[d.charAt(0)];if(y)m=d.match(y[1]),v=y[0];else{for(var b=0;b<i;++b){y=t[b],m=d.match(y[1]);if(m){v=y[0];break}}m||(v=w)}g=v.length>=5&&"lang-"===v.substring(0,5),g&&(!m||typeof m[1]!="string")&&(g=!1,v=x),g||(c[d]=v)}var E=f;f+=d.length;if(!g)a.push(u+E,v);else{var S=m[1],T=d.indexOf(S),N=T+S.length;m[2]&&(N=d.length-m[2].length,T=N-S.length);var C=v.substring(5);O(u+E,d.substring(0,T),s,a),O(u+E+T,S,q(C,S),a),O(u+E+N,d.substring(N),s,a)}}e.decorations=a};return s}function P(e){var t=[],n=[];e.tripleQuotedStrings?t.push([d,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""]):e.multiLineStrings?t.push([d,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):t.push([d,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]),e.verbatimStrings&&n.push([d,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);var r=e.hashComments;r&&(e.cStyleComments?(r>1?t.push([m,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"]):t.push([m,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]),n.push([d,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])):t.push([m,/^#[^\r\n]*/,null,"#"])),e.cStyleComments&&(n.push([m,/^\/\/[^\r\n]*/,null]),n.push([m,/^\/\*[\s\S]*?(?:\*\/|$)/,null]));if(e.regexLiterals){var i="/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/";n.push(["lang-regex",new RegExp("^"+k+"("+i+")")])}var s=e.types;s&&n.push([g,s]);var o=(""+e.keywords).replace(/^ | $/g,"");return o.length&&n.push([v,new RegExp("^(?:"+o.replace(/[\s,]+/g,"|")+")\\b"),null]),t.push([w,/^\s+/,null," \r\n	 "]),n.push([y,/^@[a-z_$][a-z_$@0-9]*/i,null],[g,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[w,/^[a-z_$][a-z_$@0-9]*/i,null],[y,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[w,/^\\[\s\S]?/,null],[b,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]),D(t,n)}function B(e,t){function f(e){switch(e.nodeType){case 1:if(n.test(e.className))break;if("BR"===e.nodeName)l(e),e.parentNode&&e.parentNode.removeChild(e);else for(var t=e.firstChild;t;t=t.nextSibling)f(t);break;case 3:case 4:if(o){var s=e.nodeValue,u=s.match(r);if(u){var a=s.substring(0,u.index);e.nodeValue=a;var c=s.substring(u.index+u[0].length);if(c){var h=e.parentNode;h.insertBefore(i.createTextNode(c),e.nextSibling)}l(e),a||e.parentNode.removeChild(e)}}}}function l(e){function t(e,n){var r=n?e.cloneNode(!1):e,i=e.parentNode;if(i){var s=t(i,1),o=e.nextSibling;s.appendChild(r);for(var u=o;u;u=o)o=u.nextSibling,s.appendChild(u)}return r}while(!e.nextSibling){e=e.parentNode;if(!e)return}var n=t(e.nextSibling,0);for(var r;(r=n.parentNode)&&r.nodeType===1;)n=r;a.push(n)}var n=/(?:^|\s)nocode(?:\s|$)/,r=/\r\n?|\n/,i=e.ownerDocument,s;e.currentStyle?s=e.currentStyle.whiteSpace:window.getComputedStyle&&(s=i.defaultView.getComputedStyle(e,null).getPropertyValue("white-space"));var o=s&&"pre"===s.substring(0,3),u=i.createElement("LI");while(e.firstChild)u.appendChild(e.firstChild);var a=[u];for(var c=0;c<a.length;++c)f(a[c]);t===(t|0)&&a[0].setAttribute("value",t);var h=i.createElement("OL");h.className="linenums";var p=Math.max(0,t-1|0)||0;for(var c=0,d=a.length;c<d;++c)u=a[c],u.className="L"+(c+p)%10,u.firstChild||u.appendChild(i.createTextNode(" ")),h.appendChild(u);e.appendChild(h)}function j(e){var t=/\bMSIE\b/.test(navigator.userAgent),n=/\n/g,r=e.sourceCode,i=r.length,s=0,o=e.spans,u=o.length,a=0,f=e.decorations,l=f.length,c=0;f[l]=i;var h,p;for(p=h=0;p<l;)f[p]!==f[p+2]?(f[h++]=f[p++],f[h++]=f[p++]):p+=2;l=h;for(p=h=0;p<l;){var d=f[p],v=f[p+1],m=p+2;while(m+2<=l&&f[m+1]===v)m+=2;f[h++]=d,f[h++]=v,p=m}l=f.length=h;var g=null;while(a<u){var y=o[a],b=o[a+2]||i,w=f[c],E=f[c+2]||i,m=Math.min(b,E),S=o[a+1],x;if(S.nodeType!==1&&(x=r.substring(s,m))){t&&(x=x.replace(n,"\r")),S.nodeValue=x;var T=S.ownerDocument,N=T.createElement("SPAN");N.className=f[c+1];var C=S.parentNode;C.replaceChild(N,S),N.appendChild(S),s<b&&(o[a+1]=S=T.createTextNode(r.substring(m,b)),C.insertBefore(S,N.nextSibling))}s=m,s>=b&&(a+=2),s>=E&&(c+=2)}}function I(e,t){for(var n=t.length;--n>=0;){var r=t[n];F.hasOwnProperty(r)?window.console&&console.warn("cannot override language handler %s",r):F[r]=e}}function q(e,t){if(!e||!F.hasOwnProperty(e))e=/^\s*</.test(t)?"default-markup":"default-code";return F[e]}function R(e){var t=e.langExtension;try{var n=A(e.sourceNode),r=n.sourceCode;e.sourceCode=r,e.spans=n.spans,e.basePos=0,q(t,r)(e),j(e)}catch(i){"console"in window&&console.log(i&&i.stack?i.stack:i)}}function U(e,t,n){var r=document.createElement("PRE");r.innerHTML=e,n&&B(r,n);var i={langExtension:t,numberLines:n,sourceNode:r};return R(i),r.innerHTML}function z(e){function t(e){return document.getElementsByTagName(e)}function h(){var t=window.PR_SHOULD_USE_CONTINUATION?u.now()+250:Infinity;for(;a<r.length&&u.now()<t;a++){var n=r[a],i=n.className;if(i.indexOf("prettyprint")>=0){var s=i.match(l),o;!s&&(o=_(n))&&"CODE"===o.tagName&&(s=o.className.match(l)),s&&(s=s[1]);var c=!1;for(var p=n.parentNode;p;p=p.parentNode)if((p.tagName==="pre"||p.tagName==="code"||p.tagName==="xmp")&&p.className&&p.className.indexOf("prettyprint")>=0){c=!0;break}if(!c){var d=n.className.match(/\blinenums\b(?::(\d+))?/);d=d?d[1]&&d[1].length?+d[1]:!0:!1,d&&B(n,d),f={langExtension:s,sourceNode:n,numberLines:d},R(f)}}}a<r.length?setTimeout(h,250):e&&e()}var n=[t("pre"),t("code"),t("xmp")],r=[];for(var i=0;i<n.length;++i)for(var s=0,o=n[i].length;s<o;++s)r.push(n[i][s]);n=null;var u=Date;u.now||(u={now:function(){return+(new Date)}});var a=0,f,l=/\blang(?:uage)?-([\w.]+)(?!\S)/,c=/\bprettyprint\b/;h()}var e=["break,continue,do,else,for,if,return,while"],t=[e,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],n=[t,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],r=[n,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],i=[n,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],s=[i,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],o="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",u=[n,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],a="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",f=[e,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],l=[e,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],c=[e,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],h=[r,s,u,a+f,l,c],p=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,d="str",v="kwd",m="com",g="typ",y="lit",b="pun",w="pln",E="tag",S="dec",x="src",T="atn",N="atv",C="nocode",k="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*",M=/\S/,H=P({keywords:h,hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};I(H,["default-code"]),I(D([],[[w,/^[^<?]+/],[S,/^<!\w[^>]*(?:>|$)/],[m,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[b,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]),I(D([[w,/^[\s]+/,null," 	\r\n"],[N,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[E,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[T,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[b,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]),I(D([],[[N,/^[\s\S]+/]]),["uq.val"]),I(P({keywords:r,hashComments:!0,cStyleComments:!0,types:p}),["c","cc","cpp","cxx","cyc","m"]),I(P({keywords:"null,true,false"}),["json"]),I(P({keywords:s,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:p}),["cs"]),I(P({keywords:i,cStyleComments:!0}),["java"]),I(P({keywords:c,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]),I(P({keywords:f,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py"]),I(P({keywords:a,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]),I(P({keywords:l,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]),I(P({keywords:u,cStyleComments:!0,regexLiterals:!0}),["js"]),I(P({keywords:o,hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]),I(D([],[[d,/^[\s\S]+/]]),["regex"]),window.prettyPrintOne=U,window.prettyPrint=z,window.PR={createSimpleLexer:D,registerLangHandler:I,sourceDecorator:P,PR_ATTRIB_NAME:T,PR_ATTRIB_VALUE:N,PR_COMMENT:m,PR_DECLARATION:S,PR_KEYWORD:v,PR_LITERAL:y,PR_NOCODE:C,PR_PLAIN:w,PR_PUNCTUATION:b,PR_SOURCE:x,PR_STRING:d,PR_TAG:E,PR_TYPE:g}}(),define("text!core/css/bp.css",[],function(){return"/* --- Best Practices --- */\ndiv.practice {\n    border: solid #bebebe 1px;\n    margin: 2em 1em 1em 2em;\n}\n\nspan.practicelab {\n    margin: 1.5em 0.5em 1em 1em;\n    font-weight: bold;\n    font-style: italic;\n    background: #dfffff;\n    position: relative;\n    padding: 0 0.5em;\n    top: -1.5em;\n}\n\np.practicedesc {\n    margin: 1.5em 0.5em 1em 1em;\n}\n\n@media screen {\n    p.practicedesc {\n        position: relative;\n        top: -2em;\n        padding: 0;\n        margin: 1.5em 0.5em -1em 1em;\n    }\n}\n"}),define("core/best-practices",["text!core/css/bp.css"],function(e){return{run:function(t,n,r,i){i.pub("start","core/best-practices");var s=0,o=$("span.practicelab",n),u=$("<div><h2>Best Practices Summary</h2><ul></ul></div>"),a=u.find("ul");o.each(function(){var e=$(this),t=e.makeID("bp"),r=$("<li><a></a></li>"),i=r.find("a");s++,i.attr("href","#"+t).text("Best Practice "+s),r.append(n.createTextNode(": "+e.text())),a.append(r),e.prepend(n.createTextNode("Best Practice "+s+": "))}),o.length?($(n).find("head link").first().before($("<style/>").text(e)),$("#bp-summary")&&$("#bp-summary").append(u.contents())):$("#bp-summary").remove(),i.pub("end","core/best-practices"),r()}}}),define("core/figures",[],function(){return{run:function(e,t,n,r){r.pub("start","core/figures"),$(".figure",t).each(function(e,t){var n=$(t),r=n.attr("title")||n.find("[title]").attr("title")||n.attr("alt")||n.find("[alt]").attr("alt")||"",i=$("<figcaption/>").text(r);n.is("div")?(n.append(i),n.renameElement("figure")):(n.wrap("<figure></figure>"),n.parent().append(i))});var i={},s=[],o=0;$("figure").each(function(){var e=$(this),n=e.find("figcaption"),r=n.text(),u=e.makeID("fig",r);o++,n.html("").append(t.createTextNode("Fig. ")).append($("<span class='figno'>"+o+"</span>")).append(t.createTextNode(" ")).append($("<span class='fig-title'/>").text(r)),i[u]=n.contents().clone(),s.push($("<li class='tofline'><a class='tocxref' href='#"+u+"'></a></li>").find(".tocxref").append(n.contents().clone()).end())}),$("a[href]",t).each(function(){var e=$(this),t=e.attr("href");if(!t)return;t=t.substring(1),i[t]&&(e.addClass("fig-ref"),e.html()===""&&e.append(i[t]))});var u=$("#tof",t);if(s.length&&u.length){!u.hasClass("appendix")&&!u.hasClass("introductory")&&!u.parents("section").length&&(u.prevAll("section.introductory").length==u.prevAll("section").length?u.addClass("introductory"):u.prevAll("appendix").length&&u.addClass("appendix")),u.append($("<h2>Table of Figures</h2>")),u.append($("<ul class='tof'/>"));var a=u.find("ul");while(s.length)a.append(s.shift())}r.pub("end","core/figures"),n()}}});var sn;(function(){function e(){var e="respec-err",t=document.getElementById(e);if(t)return t.firstElementChild.nextElementSibling;t=sn.element("div",{id:e,style:"position: fixed; width: 350px; top: 10px; right: 10px; border: 3px double #f00; background: #fff","class":"removeOnSave"},document.body);var n=sn.element("p",{style:"float: right; margin: 2px; text-decoration: none"},t);sn.text("[",n);var r=sn.element("a",{href:"#"},n,"x");return r.onclick=function(){return document.getElementById(e).style.display="none",!1},sn.text("]",n),sn.element("ul",{style:"clear: both"},t)}function t(t){window.respecEvent&&respecEvent.pub("error",t),sn.element("li",{style:"color: #c00"},e(),t)}function n(t){window.respecEvent&&respecEvent.pub("warn",t),sn.element("li",{style:"color: #666"},e(),t)}typeof berjon=="undefined"&&(window.berjon={}),berjon.respec=function(){},berjon.respec.prototype={loadAndRun:function(e,t,n,r,e,t){var i=document.querySelectorAll("script[src]"),s,o="";for(var u=0;u<i.length;u++){var a=i[u].src;/\/js\/require\.js$/.test(a)&&(s=i[u],o=a.replace(/js\/require\.js$/,""))}var f=[],l=["js/simple-node.js","js/shortcut.js","bibref/biblio.js"],c=document.getElementsByTagName("head")[0],h=this,p=function(i){f.push(i.target.src),f.length==l.length&&(sn=new berjon.simpleNode({"":"http://www.w3.org/1999/xhtml",x:"http://www.w3.org/1999/xhtml"},document),h.run(n,r,e,t),t.pub("end","w3c/legacy"),e())};if(!berjon.simpleNode&&!berjon.biblio)for(var u=0;u<l.length;u++){var d=l[u],v=document.createElement("script");v.type="text/javascript",v.src=o+d,v.setAttribute("class","remove"),v.onload=p,c.appendChild(v)}else sn=new berjon.simpleNode({"":"http://www.w3.org/1999/xhtml",x:"http://www.w3.org/1999/xhtml"},document),h.run(n,r,e,t),t.pub("end","w3c/legacy"),e()},run:function(e,t,n,r){try{this.extractConfig(),this.overrideBiblio(e),this.bibref(e,t,n,r),this.doRDFa&&this.makeRDFa();var i=this;shortcut.add("Ctrl+Shift+Alt+S",function(){i.showSaveOptions()}),shortcut.add("Esc",function(){i.hideSaveOptions()})}catch(s){r.pub("error","Processing error: "+s)}},overrideBiblio:function(e){if(e.localBiblio)for(var t in e.localBiblio)berjon.biblio[t]=e.localBiblio[t]},makeRDFa:function(){var e=document.getElementById("abstract");if(e){var t="dcterms:abstract",n=e.getAttribute("property");n&&(t=n+" "+t),e.setAttribute("property",t),e.setAttribute("datatype","")}var r=document.querySelectorAll("section");for(var i=0;i<r.length;i++){var s="",o=r[i].firstElementChild,n=r[i].getAttribute("id");n?s="#"+n:o&&(n=o.getAttribute("id"),n&&(s="#"+n)),s!==""&&(r[i].setAttribute("typeof","bibo:Chapter"),r[i].setAttribute("resource",s),r[i].setAttribute("rel","bibo:chapter"))}},saveMenu:null,showSaveOptions:function(){var e=this;this.saveMenu=sn.element("div",{style:"position: fixed; width: 400px; top: 10px; padding: 1em; border: 5px solid #90b8de; background: #fff"},document.body),sn.element("h4",{},this.saveMenu,"Save Options");var t=sn.element("button",{},this.saveMenu,"Save as HTML");t.onclick=function(){e.hideSaveOptions(),e.toHTML()};var n=sn.element("button",{},this.saveMenu,"Save as HTML (Source)");n.onclick=function(){e.hideSaveOptions(),e.toHTMLSource()};var n=sn.element("button",{},this.saveMenu,"Save as XHTML");n.onclick=function(){e.hideSaveOptions(),e.toXHTML()};var n=sn.element("button",{},this.saveMenu,"Save as XHTML (Source)");n.onclick=function(){e.hideSaveOptions(),e.toXHTMLSource()};if(this.diffTool&&(this.previousDiffURI||this.previousURI)){var r=sn.element("button",{},this.saveMenu,"Diffmark");r.onclick=function(){e.hideSaveOptions(),e.toDiffHTML()}}},hideSaveOptions:function(){if(!this.saveMenu)return;this.saveMenu.parentNode.removeChild(this.saveMenu)},toString:function(){var e="<!DOCTYPE html",t=document.doctype;t&&t.publicId&&(e+=" PUBLIC '"+t.publicId+"' '"+t.systemId+"'"),e+=">\n",e+="<html";var n=document.documentElement.attributes,r="";for(var i=0;i<n.length;i++){var s=n[i].name;if(s=="xmlns"||s=="xml:lang")continue;if(s=="prefix"){r=n[i].value;continue}e+=" "+s+'="'+this._esc(n[i].value)+'"'}this.doRDFa&&(r!==""&&(r+=" "),this.doRDFa!="1.1"?r+="dcterms: http://purl.org/dc/terms/ bibo: http://purl.org/ontology/bibo/ foaf: http://xmlns.com/foaf/0.1/ xsd: http://www.w3.org/2001/XMLSchema#":r+="bibo: http://purl.org/ontology/bibo/",e+=' prefix="'+this._esc(r)+'"',e+=' typeof="bibo:Document"'),e+=">\n";var o=document.createComment("[if lt IE 9]><script src='"+this.httpScheme+"://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]");return $("head").append(o),e+=document.documentElement.innerHTML,e+="</html>",e},toXML:function(){var e="<?xml version='1.0' encoding='UTF-8'?>\n<!DOCTYPE html",t=document.doctype;t&&t.publicId?e+=" PUBLIC '"+t.publicId+"' '"+t.systemId+"'":this.doRDFa?this.doRDFa=="1.1"?e+=" PUBLIC '-//W3C//DTD XHTML+RDFa 1.1//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd'":e+=" PUBLIC '-//W3C//DTD XHTML+RDFa 1.0//EN' 'http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd'":e+=" PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'",e+=">\n",e+="<html";var r=document.documentElement.attributes,i="",s=!1;for(var o=0;o<r.length;o++){var u=r[o].name;if(u=="lang")continue;u=="xmlns"&&(s=!0);if(u=="prefix"){i=r[o].value;continue}e+=" "+u+'="'+this._esc(r[o].value)+'"'}s||(e+=' xmlns="http://www.w3.org/1999/xhtml"');if(this.doRDFa)if(this.doRDFa!="1.1"){e+=" xmlns:dcterms='http://purl.org/dc/terms/' xmlns:bibo='http://purl.org/ontology/bibo/' xmlns:foaf='http://xmlns.com/foaf/0.1/' xmlns:xsd='http://www.w3.org/2001/XMLSchema#'";if(i!==""){var a=i.split(/\s+/);for(var o=0;o<a.length;o+=2){var f=a[o];f=f.replace(/:$/,""),e+=" xmlns:"+f+'="'+a[o+1]+'"'}}e+=' version="XHTML+RDFa 1.0"'}else i!==""?e+=" prefix='"+i+" bibo: http://purl.org/ontology/bibo/'":e+=" prefix='bibo: http://purl.org/ontology/bibo/'";e+=' typeof="bibo:Document"',e+=">\n";var l=this,c={};"br img input area base basefont col isindex link meta param hr".split(" ").forEach(function(e){c[e]=!0});var h=[!1],p=document.createComment("[if lt IE 9]><script src='"+this.httpScheme+"://www.w3.org/2008/site/js/html5shiv.js'></script><![endif]");$("head").append(p);var d=function(e){var t="";if(e.nodeType==9||e.nodeType==1&&e.nodeName.toLowerCase()=="html")for(var r=0;r<e.childNodes.length;r++)t+=d(e.childNodes[r]);else if(1===e.nodeType){var i=e.nodeName.toLowerCase();t+="<"+i;for(var r=0;r<e.attributes.length;r++){var s=e.attributes[r];t+=" "+s.name+'="'+l._esc(s.value)+'"'}if(c[i])t+=" />";else{t+=">",h.push(i==="style"||i==="script");for(var r=0;r<e.childNodes.length;r++)t+=d(e.childNodes[r]);h.pop(),t+="</"+i+">"}}else 8===e.nodeType?t+="\n<!--"+e.nodeValue+"-->\n":3===e.nodeType||4===e.nodeType?t+=h[h.length-1]?e.nodeValue:l._esc(e.nodeValue):n("Cannot handle serialising nodes of type: "+e.nodeType);return t};return e+=d(document.documentElement),e+="</html>",e},toDiffHTML:function(){var e=window.location.href;e=e.replace(/\/[^\/]*$/,"/");var t="<!DOCTYPE html>\n";t+="<html";var n=document.documentElement.attributes;for(var r=0;r<n.length;r++)t+=" "+n[r].name+'="'+this._esc(n[r].value)+'"';t+=">\n",t+="<head><title>diff form</title></head>\n",t+="<body><form name='form' method='POST' action='"+this.diffTool+"'>\n",t+="<input type='hidden' name='base' value='"+e+"'>\n",this.previousDiffURI?t+="<input type='hidden' name='oldfile' value='"+this.previousDiffURI+"'>\n":t+="<input type='hidden' name='oldfile' value='"+this.previousURI+"'>\n",t+='<input type="hidden" name="newcontent" value="'+this._esc(this.toString())+'">\n',t+="<p>Please wait...</p>",t+="</form></body></html>\n";var i=window.open();i.document.write(t),i.document.close(),i.document.form.submit()},toHTML:function(){var e=window.open();e.document.write(this.toString()),e.document.close()},toHTMLSource:function(){var e=window.open();e.document.write("<pre>"+this._esc(this.toString())+"</pre>"),e.document.close()},toXHTML:function(){var e=window.open();e.document.write(this.toXML()),e.document.close()},toXHTMLSource:function(){var e=window.open();e.document.write("<pre>"+this._esc(this.toXML())+"</pre>"),e.document.close()},extractConfig:function(){var e=respecConfig||{};e.diffTool||(e.diffTool="http://www5.aptest.com/standards/htmldiff/htmldiff.pl"),e.doRDFa||(e.doRDFa=!1);for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t])},bibref:function(e,n,r,i){function f(e){var t=[];for(var n in e)t.push(n);return t}var s={},o=0,u=e.informativeReferences,a=e.normativeReferences,l=[];for(var c in u)a[c]&&l.push(c);for(var h=0;h<l.length;h++)delete u[l[h]];u=f(u),a=f(a);if(!u.length&&!a.length&&!this.refNote)return;var p=sn.element("section",{id:"references","class":"appendix"},document.body);sn.element("h2",{},p,"References");if(this.refNote){var d=sn.element("p",{},p);d.innerHTML=this.refNote}var v=["Normative","Informative"];for(var h=0;h<v.length;h++){var m=v[h],g=m=="Normative"?a:u;if(!g.length)continue;var y=sn.element("section",{},p);sn.makeID(y,null,m+" references"),sn.element("h3",{},y,m+" references"),g.sort();var b=sn.element("dl",{"class":"bibliography"},y);this.doRDFa&&b.setAttribute("about","");for(var w=0;w<g.length;w++){var E=g[w];sn.element("dt",{id:"bib-"+E},b,"["+E+"]");var S=sn.element("dd",{},b);this.doRDFa&&(m=="Normative"?S.setAttribute("rel","dcterms:requires"):S.setAttribute("rel","dcterms:references")),berjon.biblio[E]?S.innerHTML=berjon.biblio[E]+"\n":(s[E]||(s[E]=0),s[E]++,o++,S.innerHTML="<em>Reference not found.</em>\n")}}if(o>0){t("Got "+o+" tokens looking like a reference, not in biblio DB: ");for(var x in s)s.hasOwnProperty(x)&&t("Bad ref: "+x+", count = "+s[x])}},_esc:function(e){return e=e.replace(/&/g,"&amp;"),e=e.replace(/>/g,"&gt;"),e=e.replace(/"/g,"&quot;"),e=e.replace(/</g,"&lt;"),e}}})(),function(){if(!document.evaluate){window.XPathResult=function(e){return e.snapshotLength=e.length,e.snapshotItem=function(e){return this[e]},e},window.XPathResult.prototype.ORDERED_NODE_SNAPSHOT_TYPE=7,window.XPathResult.ORDERED_NODE_SNAPSHOT_TYPE=7;var e=function(e){var t=function(e,t){var n=document.querySelectorAll(e),r=[];for(var i=0,s=n.length;i<s;i++)n[i].compareDocumentPosition(t)&16&&r.push(n[i]);return r},n=null,r=function(){if(n==null){var e=document.createNodeIterator(document.body,4,function(){return 1},!1);n=[];var t;while(t=e.nextNode())n.push(t)}},i=function(e){r();var t=[];for(var i=0,s=n.length;i<s;i++)n[i].compareDocumentPosition(e)&8&&t.push(n[i]);return t},s=function(e,t){var n=document.querySelectorAll(e),r=[];for(var i=0,s=n.length;i<s;i++)n[i].compareDocumentPosition(t)&16&&r.push(n[i]);return r},o=function(e,t){var n=e.querySelectorAll(t),r=[];for(var i=0,s=n.length;i<s;i++)n[i].parentNode==e&&r.push(n[i]);return r};e.evaluate=function(e,n,r,u,a){return e=="ancestor::x:section|ancestor::section"?XPathResult(t("section",n)):e=="./x:section|./section"?XPathResult(o(n,"section")):e=="./x:section[not(@class='introductory')]|./section[not(@class='introductory')]"?XPathResult(o(n,"section:not([class='introductory'])")):e==".//text()"?XPathResult(i(n)):e=="ancestor::abbr"||e=="ancestor::acronym"?XPathResult(s(e=="ancestor::abbr"?"abbr":"acronym",n)):e=="./dt"?XPathResult(o(n,"dt")):e=="dl[@class='parameters']"?XPathResult(n.querySelectorAll("dl[class='parameters']")):e=="*[@class='exception']"?XPathResult(n.querySelectorAll("[class='exception']")):XPathResult([])}};window.Document?e(Document.prototype):e(window.document)}}(),define("w3c/legacy",[],function(){return{run:function(e,t,n,r){r.pub("start","w3c/legacy"),(new berjon.respec).loadAndRun(n,r,e,t,n,r)}}}),define("tmpl!core/css/webidl-oldschool.css",["handlebars"],function(e){return Handlebars.compile('/* --- WEB IDL --- */\npre.idl {\n    border-top: 1px solid #90b8de;\n    border-bottom: 1px solid #90b8de;\n    padding:    1em;\n    line-height:    120%;\n}\n\npre.idl::before {\n    content:    "WebIDL";\n    display:    block;\n    width:      150px;\n    background: #90b8de;\n    color:  #fff;\n    font-family:    initial;\n    padding:    3px;\n    font-weight:    bold;\n    margin: -1em 0 1em -1em;\n}\n\n.idlType {\n    color:  #ff4500;\n    font-weight:    bold;\n    text-decoration:    none;\n}\n\n/*.idlModule*/\n/*.idlModuleID*/\n/*.idlInterface*/\n.idlInterfaceID, .idlDictionaryID, .idlCallbackID, .idlEnumID {\n    font-weight:    bold;\n    color:  #005a9c;\n}\n\n.idlSuperclass {\n    font-style: italic;\n    color:  #005a9c;\n}\n\n/*.idlAttribute*/\n.idlAttrType, .idlFieldType, .idlMemberType {\n    color:  #005a9c;\n}\n.idlAttrName, .idlFieldName, .idlMemberName {\n    color:  #ff4500;\n}\n.idlAttrName a, .idlFieldName a, .idlMemberName a {\n    color:  #ff4500;\n    border-bottom:  1px dotted #ff4500;\n    text-decoration: none;\n}\n\n/*.idlMethod*/\n.idlMethType, .idlCallbackType {\n    color:  #005a9c;\n}\n.idlMethName {\n    color:  #ff4500;\n}\n.idlMethName a {\n    color:  #ff4500;\n    border-bottom:  1px dotted #ff4500;\n    text-decoration: none;\n}\n\n/*.idlParam*/\n.idlParamType {\n    color:  #005a9c;\n}\n.idlParamName {\n    font-style: italic;\n}\n\n.extAttr {\n    color:  #666;\n}\n\n/*.idlConst*/\n.idlConstType {\n    color:  #005a9c;\n}\n.idlConstName {\n    color:  #ff4500;\n}\n.idlConstName a {\n    color:  #ff4500;\n    border-bottom:  1px dotted #ff4500;\n    text-decoration: none;\n}\n\n/*.idlException*/\n.idlExceptionID {\n    font-weight:    bold;\n    color:  #c00;\n}\n\n.idlTypedefID, .idlTypedefType {\n    color:  #005a9c;\n}\n\n.idlRaises, .idlRaises a.idlType, .idlRaises a.idlType code, .excName a, .excName a code {\n    color:  #c00;\n    font-weight:    normal;\n}\n\n.excName a {\n    font-family:    monospace;\n}\n\n.idlRaises a.idlType, .excName a.idlType {\n    border-bottom:  1px dotted #c00;\n}\n\n.excGetSetTrue, .excGetSetFalse, .prmNullTrue, .prmNullFalse, .prmOptTrue, .prmOptFalse {\n    width:  45px;\n    text-align: center;\n}\n.excGetSetTrue, .prmNullTrue, .prmOptTrue { color:  #0c0; }\n.excGetSetFalse, .prmNullFalse, .prmOptFalse { color:  #c00; }\n\n.idlImplements a {\n    font-weight:    bold;\n}\n\ndl.attributes, dl.methods, dl.constants, dl.fields, dl.dictionary-members {\n    margin-left:    2em;\n}\n\n.attributes dt, .methods dt, .constants dt, .fields dt, .dictionary-members dt {\n    font-weight:    normal;\n}\n\n.attributes dt code, .methods dt code, .constants dt code, .fields dt code, .dictionary-members dt code {\n    font-weight:    bold;\n    color:  #000;\n    font-family:    monospace;\n}\n\n.attributes dt code, .fields dt code, .dictionary-members dt code {\n    background:  #ffffd2;\n}\n\n.attributes dt .idlAttrType code, .fields dt .idlFieldType code, .dictionary-members dt .idlMemberType code {\n    color:  #005a9c;\n    background:  transparent;\n    font-family:    inherit;\n    font-weight:    normal;\n    font-style: italic;\n}\n\n.methods dt code {\n    background:  #d9e6f8;\n}\n\n.constants dt code {\n    background:  #ddffd2;\n}\n\n.attributes dd, .methods dd, .constants dd, .fields dd, .dictionary-members dd {\n    margin-bottom:  1em;\n}\n\ntable.parameters, table.exceptions {\n    border-spacing: 0;\n    border-collapse:    collapse;\n    margin: 0.5em 0;\n    width:  100%;\n}\ntable.parameters { border-bottom:  1px solid #90b8de; }\ntable.exceptions { border-bottom:  1px solid #deb890; }\n\n.parameters th, .exceptions th {\n    color:  #fff;\n    padding:    3px 5px;\n    text-align: left;\n    font-family:    initial;\n    font-weight:    normal;\n    text-shadow:    #666 1px 1px 0;\n}\n.parameters th { background: #90b8de; }\n.exceptions th { background: #deb890; }\n\n.parameters td, .exceptions td {\n    padding:    3px 10px;\n    border-top: 1px solid #ddd;\n    vertical-align: top;\n}\n\n.parameters tr:first-child td, .exceptions tr:first-child td {\n    border-top: none;\n}\n\n.parameters td.prmName, .exceptions td.excName, .exceptions td.excCodeName {\n    width:  100px;\n}\n\n.parameters td.prmType {\n    width:  120px;\n}\n\ntable.exceptions table {\n    border-spacing: 0;\n    border-collapse:    collapse;\n    width:  100%;\n}\n')}),define("tmpl!core/templates/webidl/module.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlModule'>{{extAttr obj indent true }}{{idn indent}}module <span class='idlModuleID'>{{obj.id}}</span> {\n{{#each obj.children}}{{asWebIDL proc this indent}}{{/each}}\n{{idn indent}}};</span>\n")}),define("tmpl!core/templates/webidl/typedef.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlTypedef' id='idl-def-{{obj.refId}}'>typedef {{extAttr obj 0 false\n}}<span class='idlTypedefType'>{{datatype obj.datatype\n}}</span>{{arr}}{{nullable}} <span class='idlTypedefID'>{{obj.id}}</span>;</span>\n")}),define("tmpl!core/templates/webidl/implements.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlImplements'>{{extAttr obj indent true}}{{idn indent}}<a>{{obj.id}}</a> implements <a>{{obj.datatype}}</a>;</span>\n")}),define("tmpl!core/templates/webidl/dict-member.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlMember'>{{extAttr obj indent true\n}}{{idn indent}}<span class='idlMemberType'>{{datatype obj.datatype}}{{arr}}{{nullable}}</span> {{pads pad\n}}<span class='idlMemberName'><a href='#{{curLnk}}{{obj.refId}}'>{{obj.id}}</a></span>{{#if obj.defaultValue\n}} = <span class='idlMemberValue'>{{obj.defaultValue}}</span>{{/if}};</span>\n")}),define("tmpl!core/templates/webidl/dictionary.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlDictionary' id='idl-def-{{obj.refId}}'>{{extAttr obj indent true\n}}{{idn indent}}dictionary <span class='idlDictionaryID'>{{obj.id}}</span>{{superclasses obj}} {\n{{{children}}}};</span>\n")}),define("tmpl!core/templates/webidl/enum-item.html",["handlebars"],function(e){return Handlebars.compile('{{idn indent}}"<span class="idlEnumItem">{{obj.id}}</span>"')}),define("tmpl!core/templates/webidl/enum.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlEnum' id='idl-def-{{obj.refId}}'>{{extAttr obj indent true\n}}{{idn indent}}enum <span class='idlEnumID'>{{obj.id}}</span> {\n{{{children}}}\n{{idn indent}}}};")}),define("tmpl!core/templates/webidl/const.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlConst'>{{extAttr obj indent true\n}}{{idn indent}}const <span class='idlConstType'><a>{{obj.datatype}}</a>{{nullable}}</span> {{pads pad\n}}<span class='idlConstName'><a href='#{{curLnk}}{{obj.refId}}'>{{obj.id\n}}</a></span> = <span class='idlConstValue'>{{obj.value}}</span>;</span>\n")}),define("tmpl!core/templates/webidl/param.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlParam'>{{extAttr obj 0 false\n}}{{optional}}<span class='idlParamType'>{{datatype obj.datatype}}{{arr}}{{nullable}}{{variadic\n}}</span> <span class='idlParamName'>{{obj.id}}</span></span>")}),define("tmpl!core/templates/webidl/callback.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlCallback' id='idl-def-{{obj.refId}}'>{{extAttr obj indent true\n}}{{idn indent}}callback <span class='idlCallbackID'>{{obj.id\n}}</span> = <span class='idlCallbackType'>{{datatype obj.datatype}}{{arr}}{{nullable}}</span> ({{{children}}});</span>\n")}),define("tmpl!core/templates/webidl/method.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlMethod'>{{extAttr obj indent true\n}}{{idn indent}}{{static}}<span class='idlMethType'>{{datatype obj.datatype}}{{arr}}{{nullable}}</span> {{pads pad\n}}<span class='idlMethName'><a href='#{{id}}'>{{obj.id}}</a></span> ({{{children}}});</span>\n")}),define("tmpl!core/templates/webidl/attribute.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlAttribute'>{{extAttr obj indent true\n}}{{idn indent}}{{readonly}} attribute <span class='idlAttrType'>{{datatype obj.datatype}}{{arr}}{{nullable}}</span> {{pads\npad}}<span class='idlAttrName'><a href='#{{href}}'>{{obj.id}}</a></span>;</span>\n")}),define("tmpl!core/templates/webidl/field.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlField'>{{extAttr obj indent true\n}}{{idn indent}}<span class='idlFieldType'>{{datatype obj.datatype}}{{arr}}{{nullable}}</span> {{pads\npad}}<span class='idlFieldName'><a href='#{{href}}'>{{obj.id}}</a></span>;</span>\n")}),define("tmpl!core/templates/webidl/exception.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlException' id='idl-def-{{obj.refId}}'>{{extAttr obj indent true\n}}{{idn indent}}exception <span class='idlExceptionID'>{{obj.id}}</span>{{superclasses obj}} {\n{{{children}}}{{idn indent}}}};</span>")}),define("tmpl!core/templates/webidl/interface.html",["handlebars"],function(e){return Handlebars.compile("<span class='idlInterface' id='{{id}}'>{{extAttr obj indent true\n}}{{idn indent}}{{partial}}{{callback}}interface <span class='idlInterfaceID'>{{obj.id}}</span>{{superclasses obj}} {\n{{{children}}}{{idn indent}}}};</span>")}),define("core/webidl-oldschool",["handlebars","tmpl!core/css/webidl-oldschool.css","tmpl!core/templates/webidl/module.html","tmpl!core/templates/webidl/typedef.html","tmpl!core/templates/webidl/implements.html","tmpl!core/templates/webidl/dict-member.html","tmpl!core/templates/webidl/dictionary.html","tmpl!core/templates/webidl/enum-item.html","tmpl!core/templates/webidl/enum.html","tmpl!core/templates/webidl/const.html","tmpl!core/templates/webidl/param.html","tmpl!core/templates/webidl/callback.html","tmpl!core/templates/webidl/method.html","tmpl!core/templates/webidl/attribute.html","tmpl!core/templates/webidl/field.html","tmpl!core/templates/webidl/exception.html","tmpl!core/templates/webidl/interface.html"],function(e,t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m){var g=function(e){this.parent={type:"module",id:"outermost",children:[]},e||(e={});for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);Handlebars.registerHelper("extAttr",function(e,t,n){var r="";return e.extendedAttributes&&(r+=y(t)+"[<span class='extAttr'>"+e.extendedAttributes+"</span>]"+(n?"\n":" ")),new Handlebars.SafeString(r)}),Handlebars.registerHelper("idn",function(e){return new Handlebars.SafeString(y(e))}),Handlebars.registerHelper("asWebIDL",function(e,t,n){return new Handlebars.SafeString(e.writeAsWebIDL(t,n))}),Handlebars.registerHelper("datatype",function(e){return new Handlebars.SafeString(S(e))}),Handlebars.registerHelper("pads",function(e){return new Handlebars.SafeString(x(e))}),Handlebars.registerHelper("superclasses",function(e){if(!e.superclasses||!e.superclasses.length)return"";var t=" : "+e.superclasses.map(function(e){return"<span class='idlSuperclass'><a>"+e+"</a></span>"}).join(", ");return new Handlebars.SafeString(t)})},y=function(e){var t="";for(var n=0;n<e;n++)t+="    ";return t},b=function(e){return e.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/).join(" ")},w=function(e){return e=e.split(/[^\-.0-9a-zA-Z_]/).join("-"),e=e.replace(/^\-+/g,""),e=e.replace(/\-+$/,""),e.length>0&&/^[^a-z]/.test(e)&&(e="x"+e),e.length===0&&(e="generatedID"),e},E=function(e){var t="";for(var n=0,r=e.arrayCount;n<r;n++)t+="[]";return t},S=function(e){if($.isArray(e)){var t=[];for(var n=0,r=e.length;n<r;n++)t.push(S(e[n]));return"("+t.join(" or ")+")"}var i=/^sequence<(.+)>$/.exec(e);return i?"sequence&lt;<a>"+i[1]+"</a>&gt;":"<a>"+e+"</a>"},x=function(e){var t="";for(var n=0;n<e;n++)t+=" ";return t};return g.prototype={setID:function(e,t){e.id=t,e.refId=e.id.replace(/[^a-zA-Z_\-]/g,"")},nullable:function(e,t){return e.nullable=!1,/\?$/.test(t)&&(t=t.replace(/\?$/,""),e.nullable=!0),t},array:function(e,t){return e.array=!1,/\[\]$/.test(t)&&(e.arrayCount=0,t=t.replace(/(?:\[\])/g,function(){return e.arrayCount++,""}),e.array=!0),t},params:function(e,t,n){var r={};e=this.parseExtendedAttributes(e,r);var i=/^\s*(?:in\s+)?([^,]+)\s+\b([^,\s]+)\s*(?:,)?\s*/,s=i.exec(e);if(!s)return this.msg.pub("error","Expected parameter list, got: "+e),!1;e=e.replace(i,"");var o=s[1];return this.parseDatatype(r,o),this.setID(r,s[2]),t&&(r.description=t.contents()),n.params.push(r),e},optional:function(e){if(e.isUnionType)return e.optional=!1,!1;var t=e.datatype.split(/\s+/),n=t.indexOf("optional"),r=!1;return n>-1&&(r=!0,t.splice(n,1),e.datatype=t.join(" ")),e.optional=r,r},definition:function(e){var t={children:[]},n=e.attr("title"),r=e.attr("id");return n=this.parseExtendedAttributes(n,t),n.indexOf("interface")===0||n.indexOf("partial")===0||/^callback\s+interface\b/.test(n)?this.processInterface(t,n,e):n.indexOf("exception")===0?this.exception(t,n,e):n.indexOf("dictionary")===0?this.dictionary(t,n,e):n.indexOf("callback")===0?this.callback(t,n,e):n.indexOf("enum")===0?this.processEnum(t,n,e):n.indexOf("typedef")===0?this.typedef(t,n,e):/\bimplements\b/.test(n)?this.processImplements(t,n,e):this.msg.pub("error","Expected definition, got: "+n),this.parent.children.push(t),this.processMembers(t,e),r&&(t.htmlID=r),t},processInterface:function(e,t,n){e.type="interface";var r=/^\s*(?:(partial|callback)\s+)?interface\s+([A-Za-z][A-Za-z0-9]*)(?:\s+:\s*([^{]+)\s*)?/.exec(t);return r?(e.partial=!!r[1]&&r[1]==="partial",e.callback=!!r[1]&&r[1]==="callback",this.setID(e,r[2]),n.attr("data-merge")&&(e.merge=n.attr("data-merge").split(" ")),r[3]&&(e.superclasses=r[3].split(/\s*,\s*/))):this.msg.pub("error","Expected interface, got: "+t),e},dictionary:function(e,t,n){return this.excDic("dictionary",e,t,n)},exception:function(e,t,n){return this.excDic("exception",e,t,n)},excDic:function(e,t,n,r){t.type=e;var i=new RegExp("^\\s*"+e+"\\s+([A-Za-z][A-Za-z0-9]*)(?:\\s+:\\s*([^{]+)\\s*)?\\s*"),s=i.exec(n);return s?(this.setID(t,s[1]),s[2]&&(t.superclasses=s[2].split(/\s*,\s*/))):this.msg.pub("error","Expected "+e+", got: "+n),t},callback:function(e,t,n){e.type="callback";var r=/^\s*callback\s+([A-Za-z][A-Za-z0-9]*)\s*=\s*\b(.*?)\s*$/.exec(t);if(r){this.setID(e,r[1]);var i=r[2];this.parseDatatype(e,i)}else this.msg.pub("error","Expected callback, got: "+t);return e},processEnum:function(e,t,n){e.type="enum";var r=/^\s*enum\s+([A-Za-z][A-Za-z0-9]*)\s*$/.exec(t);return r?this.setID(e,r[1]):this.msg.pub("error","Expected enum, got: "+t),e},typedef:function(e,t,n){e.type="typedef",t=t.replace(/^\s*typedef\s+/,""),t=this.parseExtendedAttributes(t,e);var r=/^(.+)\s+(\S+)\s*$/.exec(t);if(r){var i=r[1];this.parseDatatype(e,i),this.setID(e,r[2]),e.description=n.contents()}else this.msg.pub("error","Expected typedef, got: "+t);return e},processImplements:function(e,t,n){e.type="implements";var r=/^\s*(.+?)\s+implements\s+(.+)\s*$/.exec(t);return r?(this.setID(e,r[1]),e.datatype=r[2],e.description=n.contents()):this.msg.pub("error","Expected implements, got: "+t),e},processMembers:function(e,t){var n=this.parent,r=this;this.parent=e,t.find("> dt").each(function(){var t=$(this),n=t.next(),i=e.type,s;i==="exception"?s=r.exceptionMember(t,n):i==="dictionary"?s=r.dictionaryMember(t,n):i==="callback"?s=r.callbackMember(t,n):i==="enum"?s=r.processEnumMember(t,n):s=r.interfaceMember(t,n),e.children.push(s)}),this.parent=n},parseConst:function(e,t){var n=/^\s*const\s+\b([^=]+\??)\s+([^=\s]+)\s*=\s*(.*)$/.exec(t);if(n){e.type="constant";var r=n[1];return this.parseDatatype(e,r),this.setID(e,n[2]),e.value=n[3],!0}return!1},exceptionMember:function(e,t){var n={children:[]},r=b(e.text());n.description=t.contents(),r=this.parseExtendedAttributes(r,n);if(this.parseConst(n,r))return n;var i=/^\s*(.*?)\s+(\S+)\s*$/.exec(r);if(i){n.type="field";var s=i[1];return this.parseDatatype(n,s),this.setID(n,i[2]),n}this.msg.pub("error","Expected exception member, got: "+r)},dictionaryMember:function(e,t){var n={children:[]},r=b(e.text());n.description=t.contents(),r=this.parseExtendedAttributes(r,n);var i=/^\s*([^=]+\??)\s+([^=\s]+)(?:\s*=\s*(.*))?$/.exec(r);if(i){n.type="member";var s=i[1];return n.defaultValue=i[3],this.setID(n,i[2]),this.parseDatatype(n,s),n}this.msg.pub("error","Expected dictionary member, got: "+r)},callbackMember:function(e,t){var n={children:[]},r=b(e.text());n.description=t.contents(),r=this.parseExtendedAttributes(r,n);var i=/^\s*\b(.*?)\s+([A-Za-z][A-Za-z0-9]*)\s*$/.exec(r);if(i){n.type="member";var s=i[1];return this.setID(n,i[2]),n.defaultValue=i[3],this.parseDatatype(n,s),this.optional(n),n}this.msg.pub("error","Expected callback member, got: "+r)},processEnumMember:function(e,t){var n={children:[]},r=b(e.text());return n.description=t.contents(),r=this.parseExtendedAttributes(r,n),n.type="member",this.setID(n,r),n},interfaceMember:function(e,t){var n={children:[]},r=b(e.text()),i=t.find("dl.parameters").first(),s=t.find(".getraises, .setraises"),o=t.find("dl.exception").first();n.description=t.contents().not("dl.parameters"),r=this.parseExtendedAttributes(r,n);var u;u=/^\s*(?:(readonly)\s+)?attribute\s+\b(.*?)\s+(\S+)\s*$/.exec(r);if(u){n.type="attribute",n.readonly=u[1]==="readonly";var a=u[2];return this.parseDatatype(n,a),this.setID(n,u[3]),n.raises=[],s.each(function(){var e=$(this),t={id:e.attr("title"),onSet:e.hasClass("setraises"),onGet:e.hasClass("getraises")};e.is("dl")?(t.type="codelist",t.description=[],e.find("dt").each(function(){var e=$(this),n=e.next("dd");t.description.push({id:e.text(),description:n.contents().clone()})})):e.is("div")?(t.type="simple",t.description=e.contents().clone()):this.msg.pub("error","Do not know what to do with exceptions being raised defined outside of a div or dl."),e.remove(),n.raises.push(t)}),n}if(this.parseConst(n,r))return n;u=/^\s*(.*?)\s+\b(\S+)\s*\(\s*(.*)\s*\)\s*$/.exec(r);if(u){n.type="method";var a=u[1],f=u[3];a=this.parseStatic(n,a),this.parseDatatype(n,a),this.setID(n,u[2]),n.params=[],n.raises=[],o.each(function(){var e=$(this),t={id:e.attr("title")};e.is("dl")?(t.type="codelist",t.description=[],e.find("dt").each(function(){var e=$(this),n=e.next("dd");t.description.push({id:e.text(),description:n.contents().clone()})})):e.is("div")?(t.type="simple",t.description=e.contents().clone()):this.msg.pub("error","Do not know what to do with exceptions being raised defined outside of a div or dl."),e.remove(),n.raises.push(t)});if(i.length){i.remove();var l=this;i.find("> dt").each(function(e){return l.params($(this).text(),$(this).next(),n)})}else while(f.length){f=this.params(f,null,n);if(f===!1)break}var c=!1;for(var h=0;h<n.params.length;h++)c?n.params[h].optional=!0:c=this.optional(n.params[h]);return n}this.msg.pub("error","Expected interface member, got: "+r)},parseDatatype:function(e,t){t=this.nullable(e,t),t=this.array(e,t),e.variadic=!1,/\.\.\./.test(t)&&(t=t.replace(/\.\.\./,""),e.variadic=!0),t.indexOf("(")===0?(t=t.replace("(","").replace(")",""),e.datatype=t.split(/\s+or\s+/),e.isUnionType=!0):e.datatype=t},parseStatic:function(e,t){return/^static\s+/.test(t)?(t=t.replace(/^static\s+/,""),e.isStatic=!0):e.isStatic=!1,t},parseExtendedAttributes:function(e,t){return e.replace(/^\s*\[([^\]]+)\]\s*/,function(e,n){return t.extendedAttributes=n,""})},makeMarkup:function(e){var t=$("<div></div>"),n={"class":"idl"};e&&(n.id=e);var r=$("<pre></pre>").attr(n);return r.html(this.writeAsWebIDL(this.parent,-1)),t.append(r),t.append(this.writeAsHTML(this.parent)),t.children()},writeAsHTML:function(e){if(e.type=="module")return e.id=="outermost"?(e.children.length>1&&this.msg.pub("error","We currently only support one structural level per IDL fragment"),this.writeAsHTML(e.children[0])):(this.msg.pub("warn","No HTML can be generated for module definitions."),$("<span></span>"));if(e.type=="typedef"){var t;if(e.description&&e.description.text())t=[e.description];else{var n=sn.element("span",{"class":"idlTypedefType"},null);n.innerHTML=S(e.datatype),t=[sn.text("Throughout this specification, the identifier "),sn.element("span",{"class":"idlTypedefID"},null,e.id),sn.text(" is used to refer to the "),sn.text(e.array?(e.arrayCount>1?e.arrayCount+"-":"")+"array of ":""),n,sn.text(e.nullable?" (nullable)":""),sn.text(" type.")]}return sn.element("div",{"class":"idlTypedefDesc"},null,t)}if(e.type=="implements"){var t;return e.description&&e.description.text()?t=[e.description]:(t=[sn.text("All instances of the "),sn.element("code",{},null,[sn.element("a",{},null,e.id)]),sn.text(" type are defined to also implement the "),sn.element("a",{},null,e.datatype),sn.text(" interface.")],t=[sn.element("p",{},null,t)]),sn.element("div",{"class":"idlImplementsDesc"},null,t)}if(e.type=="exception"){var r=sn.documentFragment(),i="widl-"+e.refId+"-",s=["field","constant"],o=function(e){return e.type===f},u=function(e,t){return e.id<t.id?-1:e.id>t.id?1:0};for(var a=0;a<s.length;a++){var f=s[a],l=e.children.filter(o);if(l.length===0)continue;this.noIDLSorting||l.sort(u);var c=sn.element("section",{},r),h=f;h=h.substr(0,1).toUpperCase()+h.substr(1)+"s",this.conf.noIDLSectionTitle||sn.element("h2",{},c,h);var p=sn.element("dl",{"class":f+"s"},c);for(var d=0;d<l.length;d++){var v=l[d],m=sn.element("dt",{id:i+v.refId},p);sn.element("code",{},m,v.id);var g=sn.element("dd",{},p,[v.description]);if(f=="field"){sn.text(" of type ",m);if(v.array)for(var y=0,b=v.arrayCount;y<b;y++)sn.text("array of ",m);var w=sn.element("span",{"class":"idlFieldType"},m),x=/^sequence<(.+)>$/.exec(v.datatype);x?(sn.text("sequence<",w),sn.element("a",{},w,x[1]),sn.text(">",w)):sn.element("a",{},w,v.datatype),v.nullable&&sn.text(", nullable",m)}else f=="constant"&&(sn.text(" of type ",m),sn.element("span",{"class":"idlConstType"},m,[sn.element("a",{},null,v.datatype)]),v.nullable&&sn.text(", nullable",m))}}return r}if(e.type=="dictionary"){var r=sn.documentFragment(),i="widl-"+e.refId+"-",l=e.children,t;if(l.length===0)return r;this.noIDLSorting||l.sort(function(e,t){return e.id<t.id?-1:e.id>t.id?1:0});var c=sn.element("section",{},r);t=[sn.text("Dictionary "),sn.element("a",{"class":"idlType"},null,e.id),sn.text(" Members")],this.conf.noIDLSectionTitle||sn.element("h2",{},c,t);var p=sn.element("dl",{"class":"dictionary-members"},c);for(var d=0;d<l.length;d++){var v=l[d],m=sn.element("dt",{id:i+v.refId},p);sn.element("code",{},m,v.id);var g=sn.element("dd",{},p,[v.description]);sn.text(" of type ",m);if(v.array)for(var a=0,b=v.arrayCount;a<b;a++)sn.text("array of ",m);var w=sn.element("span",{"class":"idlMemberType"},m),x=/^sequence<(.+)>$/.exec(v.datatype);x?(sn.text("sequence<",w),sn.element("a",{},w,x[1]),sn.text(">",w)):sn.element("a",{},w,v.datatype),v.nullable&&sn.text(", nullable",m),v.defaultValue&&(sn.text(", defaulting to ",m),sn.element("code",{},m,[sn.text(v.defaultValue)]))}return r}if(e.type=="callback"){var r=sn.documentFragment(),i="widl-"+e.refId+"-",l=e.children,t;if(l.length===0)return r;var c=sn.element("section",{},r);t=[sn.text("Callback "),sn.element("a",{"class":"idlType"},null,e.id),sn.text(" Parameters")],this.conf.noIDLSectionTitle||sn.element("h2",{},c,t);var p=sn.element("dl",{"class":"callback-members"},c);for(var d=0;d<l.length;d++){var v=l[d],m=sn.element("dt",{id:i+v.refId},p);sn.element("code",{},m,v.id);var g=sn.element("dd",{},p,[v.description]);sn.text(" of type ",m);if(v.array)for(var a=0,b=v.arrayCount;a<b;a++)sn.text("array of ",m);var w=sn.element("span",{"class":"idlMemberType"},m),x=/^sequence<(.+)>$/.exec(v.datatype);x?(sn.text("sequence<",w),sn.element("a",{},w,x[1]),sn.text(">",w)):sn.element("a",{},w,v.datatype),v.nullable&&sn.text(", nullable",m),v.defaultValue&&(sn.text(", defaulting to ",m),sn.element("code",{},m,[sn.text(v.defaultValue)]))}return r}if(e.type=="enum"){var r=sn.documentFragment(),l=e.children;if(l.length===0)return r;var c=sn.element("table",{"class":"simple"},r);sn.element("tr",{},c,[sn.element("th",{colspan:2},null,[sn.text("Enumeration description")])]);for(var d=0;d<l.length;d++){var v=l[d],T=sn.element("tr",{},c),N=sn.element("td",{},T);sn.element("code",{},N,v.id),sn.element("td",{},T,[v.description])}return r}if(e.type=="interface"){var r=sn.documentFragment(),i="widl-"+e.refId+"-",s=["attribute","method","constant"],o=function(e){return e.type==f},u=function(e,t){return e.id<t.id?-1:e.id>t.id?1:0};for(var a=0;a<s.length;a++){var f=s[a],l=e.children.filter(o);if(l.length===0)continue;this.noIDLSorting||l.sort(u);var c=sn.element("section",{},r),h=f;h=h.substr(0,1).toUpperCase()+h.substr(1)+"s",this.conf.noIDLSectionTitle||sn.element("h2",{},c,h);var p=sn.element("dl",{"class":f+"s"},c);for(var d=0;d<l.length;d++){var v=l[d],C=f=="method"?this.makeMethodID(i,v):sn.idThatDoesNotExist(i+v.refId),m=sn.element("dt",{id:C},p);sn.element("code",{},m,v.id),v.isStatic&&m.appendChild(this.doc.createTextNode(", static"));var g=sn.element("dd",{},p,[v.description]);if(f=="method"){if(v.params.length){var k=sn.element("table",{"class":"parameters"},g),T=sn.element("tr",{},k);["Parameter","Type","Nullable","Optional","Description"].forEach(function(e){sn.element("th",{},T,e)});for(var y=0;y<v.params.length;y++){var L=v.params[y],T=sn.element("tr",{},k);sn.element("td",{"class":"prmName"},T,L.id);var A=sn.element("td",{"class":"prmType"},T),O=sn.element("code",{},A);O.innerHTML=S(L.datatype),L.array&&(O.innerHTML+=E(L)),L.nullable?sn.element("td",{"class":"prmNullTrue"},T,"✔"):sn.element("td",{"class":"prmNullFalse"},T,"✘"),L.optional?sn.element("td",{"class":"prmOptTrue"},T,"✔"):sn.element("td",{"class":"prmOptFalse"},T,"✘");var t=L.description?[L.description]:"";sn.element("td",{"class":"prmDesc"},T,t)}}else sn.element("div",{},g,[sn.element("em",{},null,"No parameters.")]);if(this.conf.idlOldStyleExceptions&&v.raises.length){var k=sn.element("table",{"class":"exceptions"},g),T=sn.element("tr",{},k);["Exception","Description"].forEach(function(e){sn.element("th",{},T,e)});for(var y=0;y<v.raises.length;y++){var M=v.raises[y],T=sn.element("tr",{},k);sn.element("td",{"class":"excName"},T,[sn.element("a",{},null,M.id)]);var _=sn.element("td",{"class":"excDesc"},T);if(M.type=="simple")$(_).append(M.description);else{var D=sn.element("table",{"class":"exceptionCodes"},_);for(var P=0;P<M.description.length;P++){var H=M.description[P],T=sn.element("tr",{},D);sn.element("td",{"class":"excCodeName"},T,[sn.element("code",{},null,H.id)]),sn.element("td",{"class":"excCodeDesc"},T,[H.description])}}}}var B=sn.element("div",{},g);sn.element("em",{},B,"Return type: ");var O=sn.element("code",{},B);O.innerHTML=S(v.datatype),v.array&&(O.innerHTML+=E(v)),v.nullable&&sn.text(", nullable",B)}else if(f=="attribute"){sn.text(" of type ",m);if(v.array)for(var P=0,b=v.arrayCount;P<b;P++)sn.text("array of ",m);var w=sn.element("span",{"class":"idlAttrType"},m),x=/^sequence<(.+)>$/.exec(v.datatype);x?(sn.text("sequence<",w),sn.element("a",{},w,x[1]),sn.text(">",w)):sn.element("a",{},w,v.datatype),v.readonly&&sn.text(", readonly",m),v.nullable&&sn.text(", nullable",m);if(this.conf.idlOldStyleExceptions&&v.raises.length){var k=sn.element("table",{"class":"exceptions"},g),T=sn.element("tr",{},k);["Exception","On Get","On Set","Description"].forEach(function(e){sn.element("th",{},T,e)});for(var y=0;y<v.raises.length;y++){var M=v.raises[y],T=sn.element("tr",{},k);sn.element("td",{"class":"excName"},T,[sn.element("a",{},null,M.id)]),["onGet","onSet"].forEach(function(e){M[e]?sn.element("td",{"class":"excGetSetTrue"},T,"✔"):sn.element("td",{"class":"excGetSetFalse"},T,"✘")});var _=sn.element("td",{"class":"excDesc"},T);if(M.type=="simple")_.appendChild(M.description);else{var D=sn.element("table",{"class":"exceptionCodes"},_);for(var P=0;P<M.description.length;P++){var H=M.description[P],T=sn.element("tr",{},D);sn.element("td",{"class":"excCodeName"},T,[sn.element("code",{},null,H.id)]),sn.element("td",{"class":"excCodeDesc"},T,[H.description])}}}}}else f=="constant"&&(sn.text(" of type ",m),sn.element("span",{"class":"idlConstType"},m,[sn.element("a",{},null,v.datatype)]),v.nullable&&sn.text(", nullable",m))}}return typeof e.merge!="undefined"&&e.merge.length>0&&setTimeout(function(){for(var t=0;t<e.merge.length;t++){var n=document.querySelector("#idl-def-"+e.refId),r=document.querySelector("#idl-def-"+e.merge[t]);r.parentNode.parentNode.removeChild(r.parentNode),n.appendChild(document.createElement("br")),n.appendChild(r)}},0),r}},makeMethodID:function(e,t){var n=e+t.refId+"-"+t.datatype+"-",r=[];for(var i=0,s=t.params.length;i<s;i++){var o=t.params[i];r.push(o.datatype+(o.array?"Array":"")+"-"+o.id)}return n+=r.join("-"),w(n)},writeAsWebIDL:function(e,t){t++;var s={indent:t,obj:e,proc:this};if(e.type==="module"){if(e.id=="outermost"){var f=$("<div></div>");for(var h=0;h<e.children.length;h++)f.append(this.writeAsWebIDL(e.children[h],t-1));return f.children()}return $(n(s))}if(e.type==="typedef")return s.nullable=e.nullable?"?":"",s.arr=E(e),$(r(s));if(e.type==="implements")return $(i(s));if(e.type==="interface"){var p=this.doc.createElement("div"),d=$(p).makeID("idl-def",e.refId,!0),g=0,y=0,b=0,w=!1;e.children.forEach(function(e,t){var n=0;e.isUnionType?n=e.datatype.join(" or ").length+2:n=e.datatype.length,e.isStatic&&(n+=7),e.nullable&&(n+=1),e.array&&(n+=2*e.arrayCount),e.type=="attribute"?g=n>g?n:g:e.type=="method"?y=n>y?n:y:e.type=="constant"&&(b=n>b?n:b),e.type=="attribute"&&e.readonly&&(w=!0)});var S="widl-"+e.refId+"-",x=this,T=e.children.map(function(e){if(e.type=="attribute")return x.writeAttribute(e,g,t+1,S,w);if(e.type=="method")return x.writeMethod(e,y,t+1,S);if(e.type=="constant")return x.writeConst(e,b,t+1,S)}).join("");return m({obj:e,indent:t,id:d,partial:e.partial?"partial ":"",callback:e.callback?"callback ":"",children:T})}if(e.type==="exception"){var g=0,b=0;e.children.forEach(function(e,t){var n=e.datatype.length;e.nullable&&(n+=1),e.array&&(n+=2*e.arrayCount),e.type==="field"?g=n>g?n:g:e.type==="constant"&&(b=n>b?n:b)});var S="widl-"+e.refId+"-",x=this,T=e.children.map(function(e){if(e.type==="field")return x.writeField(e,g,t+1,S);if(e.type==="constant")return x.writeConst(e,b,t+1,S)}).join("");return v({obj:e,indent:t,children:T})}if(e.type==="dictionary"){var N=0;e.children.forEach(function(e,t){var n=e.datatype.length;e.nullable&&(n+=1),e.array&&(n+=2*e.arrayCount),N=n>N?n:N});var S="widl-"+e.refId+"-",x=this,T=e.children.map(function(e){return x.writeMember(e,N,t+1,S)}).join("");return o({obj:e,indent:t,children:T})}if(e.type==="callback"){var C=e.children.map(function(e){return l({obj:e,optional:e.optional?"optional ":"",arr:E(e),nullable:e.nullable?"?":"",variadic:e.variadic?"...":""})}).join(", ");return c({obj:e,indent:t,arr:E(e),nullable:e.nullable?"?":"",children:C})}if(e.type==="enum"){var T=e.children.map(function(e){return u({obj:e,indent:t+1})}).join(",\n");return a({obj:e,indent:t,children:T})}},writeField:function(e,t,n,r){var i=t-e.datatype.length;return e.nullable&&(i-=1),e.array&&(i-=2*e.arrayCount),d({obj:e,indent:n,arr:E(e),nullable:e.nullable?"?":"",pad:i,href:r+e.refId})},writeAttribute:function(e,t,n,r,i){var s=t-e.datatype.length;return e.nullable&&(s-=1),e.array&&(s-=2*e.arrayCount),p({obj:e,indent:n,readonly:e.readonly?"readonly":"        ",pad:s,arr:E(e),nullable:e.nullable?"?":"",href:r+e.refId})},writeMethod:function(e,t,n,r){var i=e.params.map(function(e){return l({obj:e,optional:e.optional?"optional ":"",arr:E(e),nullable:e.nullable?"?":"",variadic:e.variadic?"...":""})}).join(", "),s=0;e.isUnionType?s=e.datatype.join(" or ").length+2:s=e.datatype.length,e.isStatic&&(s+=7);var o=t-s;return e.nullable&&(o-=1),e.array&&(o-=2*e.arrayCount),h({obj:e,indent:n,arr:E(e),nullable:e.nullable?"?":"","static":e.isStatic?"static ":"",pad:o,id:this.makeMethodID(r,e),children:i})},writeConst:function(e,t,n,r){var i=t-e.datatype.length;return e.nullable&&i--,f({obj:e,indent:n,pad:i,nullable:e.nullable?"?":""})},writeMember:function(e,t,n,r){var i={obj:e,indent:n,curLnk:r,nullable:e.nullable?"?":"",arr:E(e)};return i.pad=t-e.datatype.length,e.nullable&&(i.pad=i.pad-1),e.array&&(i.pad=i.pad-2*e.arrayCount),s(i)}},{run:function(e,n,r,i){i.pub("start","core/webidl"),e.noIDLSorting||(e.noIDLSorting=!1),e.noIDLSectionTitle||(e.noIDLSectionTitle=!1);var s=$(".idl",n),o=function(){i.pub("end","core/webidl"),r()};if(!s.length)return o();$(n).find("head link").first().before($("<style/>").text(t));var u=[];s.each(function(){var t=new g({noIDLSorting:e.noIDLSorting,msg:i,doc:n,conf:e}),r=t.definition($(this)),s=t.makeMarkup(r.htmlID);$(this).replaceWith(s),$.inArray(r.type,"interface exception dictionary typedef callback enum".split(" "))!==-1&&u.push(r.id)}),n.normalize(),$("a:not([href])").each(function(){var e=$(this);if(e.hasClass("externalDFN"))return;var t=e.text();$.inArray(t,u)!==-1&&e.attr("href","#idl-def-"+t).addClass("idlType").html("<code>"+t+"</code>")}),o()}}}),define("core/fix-headers",[],function(){return{run:function(e,t,n,r){r.pub("start","core/fix-headers");var i=$("section:not(.introductory)",t).find("h1:first, h2:first, h3:first, h4:first, h5:first, h6:first");i.each(function(){var e=$(this).parents("section").length+1;e>6&&(e=6);var t="h"+e;this.localName.toLowerCase()!=t&&$(this).renameElement(t)}),r.pub("end","core/fix-headers"),n()}}}),define("core/structure",[],function(){var e={en:{toc:"Table of Contents"},fr:{toc:"Sommaire"}},t={},n=!1,r=0,i="ABCDEFGHIJKLMNOPQRSTUVWXYZ",s=function(e,o,u,a,f){var l=e.children(f.tocIntroductory?"section":"section:not(.introductory)");if(l.length===0)return null;var c=$("<ul class='toc'></ul>");for(var h=0;h<l.length;h++){var p=$(l[h],o),d=p.hasClass("introductory");if(!p.children().length)continue;var v=p.children()[0],m=v.localName.toLowerCase();if(m!=="h2"&&m!=="h3"&&m!=="h4"&&m!=="h5"&&m!=="h6")continue;var g=v.textContent,y=$("<div></div>").append($(v).contents().clone());y.find("a").renameElement("span").attr("class","formerLink").removeAttr("href"),y.find("dfn").renameElement("span").removeAttr("id");var b=p.makeID(null,g);d||u[u.length-1]++;var w=u.slice();p.hasClass("appendix")&&u.length===1&&!n&&(r=u[0],n=!0),n&&(w[0]=i.charAt(u[0]-r));var E=w.join("."),S=w.length==1;S&&(E+=".",$(v).before(document.createComment("OddPage")));var x=$("<span class='secno'></span>").text(E+" ");d||$(v).prepend(x),t[b]=(d?"":"<span class='secno'>"+E+"</span> ")+"<span class='sec-title'>"+g+"</span>";var T=$("<a/>").attr({href:"#"+b,"class":"tocxref"}).append(d?"":x.clone()).append(y.contents()),N=$("<li class='tocline'/>").append(T);c.append(N);if(f.maxTocLevel&&a>=f.maxTocLevel)continue;u.push(0);var C=s(p,o,u,a+1,f);C&&N.append(C),u.pop()}return c};return{run:function(n,r,i,o){o.pub("start","core/structure"),n.tocIntroductory||(n.tocIntroductory=!1),n.maxTocLevel||(n.maxTocLevel=0);var u=$("section:not(.introductory)",r).find("h1:first, h2:first, h3:first, h4:first, h5:first, h6:first"),a=function(){o.pub("end","core/structure"),i()};if(!u.length)return a();u.each(function(){var e=$(this).parents("section").length+1;e>6&&(e=6);var t="h"+e;this.localName.toLowerCase()!=t&&$(this).renameElement(t)});if(!n.noTOC){var f=s($("body",r),r,[0],1,n);if(!f)return;var l=$("<section id='toc'/>").append("<h2 class='introductory'>"+e[n.lang||"en"].toc+"</h2>").append(f),c=$("#toc",r);c.length||(c=$("#sotd",r)),c.length||(c=$("#abstract",r)),c.after(l)}$("a[href^='#']:not(.tocxref)",r).each(function(){var e=$(this);if(e.html()!=="")return;var n=e.attr("href").slice(1);t[n]&&(e.addClass("sec-ref"),e.html(t[n]))}),a()}}}),define("w3c/informative",[],function(){return{run:function(e,t,n,r){r.pub("start","core/informative"),$("section.informative").find("h2:first, h3:first, h4:first, h5:first, h6:first").after("<p><em>This section is non-normative.</em></p>"),r.pub("end","core/informative"),n()}}}),define("core/section-refs",[],function(){return{run:function(e,t,n,r){r.pub("start","core/section-refs"),$("a.sectionRef").each(function(){var e=$(this);if(!e.attr("href"))return;var t=e.attr("href").substring(1),n=$("#"+t),r="Not found '"+t+"'";n.length&&(r=n.find("> :first-child").text()),e.text("section "+r)}),r.pub("end","core/section-refs"),n()}}}),define("core/id-headers",[],function(){return{run:function(e,t,n,r){r.pub("start","core/id-headers"),$("h2, h3, h4, h5, h6").each(function(){var e=$(this);if(!e.attr("id")){if(e.parent("section").attr("id")&&e.prev().length===0)return;e.makeID()}}),r.pub("end","core/id-headers"),n()}}}),define("core/remove-respec",[],function(){return{run:function(e,t,n,r){r.pub("start","core/remove-respec"),$(".remove, script[data-requiremodule]",t).remove(),r.pub("end","core/remove-respec"),n()}}}),define("profile-w3c-common",["domReady","core/base-runner","core/override-configuration","core/default-root-attr","core/markdown","core/style","w3c/style","w3c/headers","w3c/abstract","w3c/conformance","core/data-transform","core/data-include","core/inlines","core/dfn","core/examples","core/issues-notes","core/requirements","core/highlight","core/best-practices","core/figures","w3c/legacy","core/webidl-oldschool","core/fix-headers","core/structure","w3c/informative","core/section-refs","core/id-headers","core/remove-respec"],function(e,t){var n=Array.prototype.slice.call(arguments),r=!1;e(function(){r=!0,t.runAll(n)})}),typeof berjon=="undefined"&&(berjon={}),berjon.biblio={"ABA-DSIG-GUIDELINES":'<a href="http://www.signelec.com/content/download/digital_signature_guidelines.pdf"><cite>Digital Signature Guidelines.</cite></a> 1 August 1996. Information Security Committee, American Bar Association. URL: <a href="http://www.signelec.com/content/download/digital_signature_guidelines.pdf">http://www.signelec.com/content/download/digital_signature_guidelines.pdf</a>',ABC:'Leo Geurts; Lambert Meertens; Steven Pemberton. <a href="http://www.cwi.nl/~steven/abc"><cite>The ABC Programmer\'s Handbook.</cite></a> Prentice-Hall. ISBN: 0-13-000027-2. URL: <a href="http://www.cwi.nl/~steven/abc">http://www.cwi.nl/~steven/abc</a>',ABNF:"D. Crocker and P. Overell. <a href='http://www.ietf.org/rfc/rfc5234.txt'><cite>Augmented BNF for Syntax Specifications: ABNF.</cite></a> January 2008. Internet RFC 5234. URL: <a href='http://www.ietf.org/rfc/rfc5234.txt'>http://www.ietf.org/rfc/rfc5234.txt</a>","ACCESS-CONTROL":'Anne van Kesteren. <a href="http://www.w3.org/TR/2008/WD-access-control-20080912"><cite>Access Control for Cross-Site Requests.</cite></a> 12 September 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-access-control-20080912">http://www.w3.org/TR/2008/WD-access-control-20080912</a> ',ACDI:'Rhys Lewis. <a href="http://www.w3.org/TR/2003/NOTE-acdi-20030901"><cite>Authoring Challenges for Device Independence.</cite></a> 1 September 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-acdi-20030901">http://www.w3.org/TR/2003/NOTE-acdi-20030901</a> ',ACSS:'Chris Lilley; T. V. Raman. <a href="http://www.w3.org/TR/1999/WD-acss-19990902"><cite>Aural Cascading Style Sheets (ACSS) Specification.</cite></a> 2 September 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-acss-19990902">http://www.w3.org/TR/1999/WD-acss-19990902</a> ',"AD-INDUSTRY":'American Association of Advertising Industries, et al. <a href="http://www.iab.net/media/file/ven-principles-07-01-09.pdf"><cite>Self-Regulatory Principles for Online Behavioral Advertising</cite></a> July 2009. URL: http://www.iab.net/media/file/ven-principles-07-01-09.pdf ',AERT:'Chris Ridpath; Wendy Chisholm. <a href="http://www.w3.org/TR/2000/WD-AERT-20000426"><cite>Techniques For Accessibility Evaluation And Repair Tools.</cite></a> 26 April 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-AERT-20000426">http://www.w3.org/TR/2000/WD-AERT-20000426</a> ',AES:'<a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf"><cite>NIST FIPS 197: Advanced Encryption Standard (AES)</cite></a>. November 2001. URL: <a href="http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf">http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf</a>',"AES-WRAP":'J. Schaad and R. Housley. <a href="http://www.ietf.org/rfc/rfc3394.txt"><cite>RFC3394: Advanced Encryption Standard (AES) Key Wrap Algorithm</cite></a>.  IETF Informational RFC, September 2002. URL: <a href="http://www.rfc-editor.org/rfc/rfc3394.txt">http://www.rfc-editor.org/rfc/rfc3394.txt</a>',"AES-WRAP-PAD":'R. Housley, M. Dworkin. <a href="http://www.ietf.org/rfc/rfc5649.txt"><cite>RFC 5649: Advanced Encryption Standard (AES) Key Wrap with Padding Algorithm</cite></a>.   IETF Informational RFC, August 2009. URL:  <a href="http://www.ietf.org/rfc/rfc5649.txt"> http://www.ietf.org/rfc/rfc5649.txt</a>. ',AGBDL:'Charles Jacobs; et al. <a href="http://grail.cs.washington.edu/pub/papers/Jacobs2003.pdf">&ldquo;Adaptive Grid Based Document Layout&rdquo;</a> in: <cite>ACM Transactions on Graphics.</cite> 22. 3. pp. 838&#8211;847. July 2003. URL: <a href="http://grail.cs.washington.edu/pub/papers/Jacobs2003.pdf">http://grail.cs.washington.edu/pub/papers/Jacobs2003.pdf</a> ',"ALT-TECHNIQUES":'Steve Faulkner <a href="http://www.w3.org/TR/html-alt-techniques/"><cite>HTML5: Techniques for providing useful text alternatives</cite></a>. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/html-alt-techniques/">http://www.w3.org/TR/html-alt-techniques/</a> ',"ANIMATION-TIMING":'James Robinson; Cameron McCormack. <a href="http://www.w3.org/TR/animation-timing/"><cite>Timing control for script-based animations.</cite></a> URL: <a href="http://www.w3.org/TR/animation-timing/">http://www.w3.org/TR/animation-timing/</a>',"ANSI-X9-44-2007":'<a href="http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.44-2007"><cite>ANSI X9.44-2007: Key Establishment Using Integer Factorization Cryptography.</cite></a> URL: <a href="http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.44-2007">http://webstore.ansi.org/RecordDetail.aspx?sku=ANSI+X9.44-2007</a>',"ARABIC-MATH":'Azzeddine Lazrek; Bruce R. Miller. <a href="http://www.w3.org/TR/2006/NOTE-arabic-math-20060131"><cite>Arabic mathematical notation.</cite></a> 31 January 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-arabic-math-20060131">http://www.w3.org/TR/2006/NOTE-arabic-math-20060131</a> ',"ARABIC-TYPO":"Huda Smitshuijzen AbiFares. <cite>Arabic Typography: A Comprehensive Sourcebook.</cite> Saqi Books. 2001. ISBN 0-86356-347-3.","ATAG-WOMBAT":'Jan Richards; Charles McCathieNevile; Jutta Treviranus. <a href="http://www.w3.org/TR/2001/WD-ATAG-wombat-20011221"><cite>Authoring Tool Accessibility Guidelines &quot;Wombat&quot;.</cite></a> 21 December 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-ATAG-wombat-20011221">http://www.w3.org/TR/2001/WD-ATAG-wombat-20011221</a> ',ATAG10:'Jutta Treviranus; et al. <a href="http://www.w3.org/TR/2000/REC-ATAG10-20000203"><cite>Authoring Tool Accessibility Guidelines 1.0.</cite></a> 3 February 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-ATAG10-20000203">http://www.w3.org/TR/2000/REC-ATAG10-20000203</a> ',"ATAG10-TECHS":'Gregory Rosmaita; et al. <a href="http://www.w3.org/TR/2002/NOTE-ATAG10-TECHS-20021029"><cite>Techniques for Authoring Tool Accessibility Guidelines 1.0.</cite></a> 29 October 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-ATAG10-TECHS-20021029">http://www.w3.org/TR/2002/NOTE-ATAG10-TECHS-20021029</a> ',ATAG20:'Jan Richards; Jutta Treviranus; Jeanne Spellman. <a href="http://www.w3.org/TR/2009/WD-ATAG20-20090217"><cite>Authoring Tool Accessibility Guidelines (ATAG) 2.0.</cite></a> 17 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ATAG20-20090217">http://www.w3.org/TR/2009/WD-ATAG20-20090217</a> ',"ATAG20-TECHS":'Jan Richards; Jutta Treviranus; Tim Boland. <a href="http://www.w3.org/TR/2008/WD-ATAG20-TECHS-20080310"><cite>Implementation Techniques for Authoring Tool Accessibility Guidelines 2.0.</cite></a> 10 March 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-ATAG20-TECHS-20080310">http://www.w3.org/TR/2008/WD-ATAG20-TECHS-20080310</a> ',BACKPLANE:'Steven Pemberton; et al. <a href="http://www.w3.org/TR/2006/NOTE-backplane-20061116"><cite>Rich Web Application Backplane.</cite></a> 16 November 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-backplane-20061116">http://www.w3.org/TR/2006/NOTE-backplane-20061116</a> ',"BBC-WP193":'J.P. Barrett; M.E. Hammond; S.J.E Jolly. <a href="http://www.bbc.co.uk/rd/publications/whitepaper193.shtml"><cite>White Paper 193 : The Universal Control API version 0.6.0 - An Overview</cite></a>. June 2011. URL: <a href="http://www.bbc.co.uk/rd/publications/whitepaper193.shtml">http://www.bbc.co.uk/rd/publications/whitepaper193.shtml</a>',"BBC-WP194":'J.P. Barrett; M.E. Hammond; S.J.E Jolly. <a href="http://www.bbc.co.uk/rd/publications/whitepaper194.shtml"><cite>White Paper 194 : The Universal Control API v.0.6.0 - Specification for the behaviour of a universal control server running on a set-top box, and the clients that connect to it</cite></a>. June 2011. URL: <a href="http://www.bbc.co.uk/rd/publications/whitepaper194.shtml">http://www.bbc.co.uk/rd/publications/whitepaper194.shtml</a>',BCP47:'A. Phillips; M. Davis. <a href="http://tools.ietf.org/html/bcp47"><cite>Tags for Identifying Languages</cite></a> September 2009. IETF Best Current Practice. URL: <a href="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</a> ',BECSS:'Ian Hickson. <a href="http://www.w3.org/TR/2007/WD-becss-20071019"><cite>Behavioral Extensions to CSS.</cite></a> 19 October 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-becss-20071019">http://www.w3.org/TR/2007/WD-becss-20071019</a> ',BLOB:'Arun Ranganathan. <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob"><cite>Blob.</cite></a> 17 November 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-FileAPI-20091117/">http://www.w3.org/TR/2009/WD-FileAPI-20091117/#dfn-Blob</a> ',"BONDI-ARCH-SECURITY-11":'<a href="http://bondi.omtp.org/1.11/security/BONDI_Architecture_and_Security_v1.1.pdf"><cite>BONDI Architecture &amp; Security Requirements v1.1</cite></a> 27 January 2010. URL: <a href="http://bondi.omtp.org/1.11/security/BONDI_Architecture_and_Security_v1.1.pdf">http://bondi.omtp.org/1.11/security/BONDI_Architecture_and_Security_v1.1.pdf</a> ',"BONDI-FEATURES1-11":'<a href="http://bondi.omtp.org/1.11/apis/apifeatures.html"><cite>BONDI API Features v1.11</cite></a> 2 June 2010. URL: <a href="http://bondi.omtp.org/1.11/apis/apifeatures.html">http://bondi.omtp.org/1.11/apis/apifeatures.html</a> ',"C14N-ISSUES":'Konrad Lanz; Jos&#233; Kahan. <a href="http://www.w3.org/TR/2006/NOTE-C14N-issues-20061220"><cite>Known Issues with Canonical XML 1.0 (C14N/1.0).</cite></a> 20 December 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-C14N-issues-20061220">http://www.w3.org/TR/2006/NOTE-C14N-issues-20061220</a> ',"C14N2-TestCases":'Pratik Datta, Frederick Hirsch, <a href="http://www.w3.org/2008/xmlsec/Drafts/c14n-20/test-cases/"><cite>Test Cases for Canonical XML 2.0</cite></a> 5 January 2012. W3C First Public Working Draft (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-xml-c14n2-testcases-20120105/">http://www.w3.org/TR/2012/WD-xml-c14n2-testcases-20120105/</a>',"CALL-CONTROL-REQS":'Brad Porter. <a href="http://www.w3.org/TR/2001/WD-call-control-reqs-20010413"><cite>Call Control Requirements in a Voice Browser Framework.</cite></a> 13 April 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-call-control-reqs-20010413">http://www.w3.org/TR/2001/WD-call-control-reqs-20010413</a> ',"CEA-2014":'<a href="http://www.ce.org/Standards/browseByCommittee_2757.asp"><cite>Web-based Protocol and Framework for Remote User Interface on UPnP Networks and the Internet (Web4CE)</cite></a>. January 2011. ANSI/CEA Standard. URL: <a href="http://www.ce.org/Standards/browseByCommittee_2757.asp">http://www.ce.org/Standards/browseByCommittee_2757.asp</a>',"CLABS-HNAPI":'<a href="http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf"><cite>CableLabs Revised Home Networking API</cite></a>. 26 July 2011. Draft proposal. URL: <a href="http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf">http://www.w3.org/2011/webtv/HNTF/CableLabs_Revised_API_20110727-2.pdf</a>',"CANVAS-2D":'Ian Hickson. <a href="http://www.w3.org/TR/2dcontext/"><cite>HTML Canvas 2D Context.</cite></a> 25 May 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2dcontext/">http://www.w3.org/TR/2dcontext/</a> ',"CC-ABOUT":"<a href = 'http://creativecommons.org/about/licenses/'><cite>Creative Commons: About Licenses</cite></a> URL: http://creativecommons.org/about/licenses/ ","CC-CHOOSE":"<a href = 'http://creativecommons.org/choose/'><cite>Creative Commons: License Your Work</cite></a> URL: http://creativecommons.org/choose/ ",CCPP:'Franklin Reynolds; et al. <a href="http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115"><cite>Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0.</cite></a> 15 January 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115">http://www.w3.org/TR/2004/REC-CCPP-struct-vocab-20040115</a> ',"CCPP-COORDINATION":'Johan Hjelm; Lalitha Suryanarayana. <a href="http://www.w3.org/TR/2001/NOTE-CCPP-COORDINATION-20011220"><cite>CC/PP Implementors Guide: Harmonization with Existing Vocabularies and Content Transformation Heuristics.</cite></a> 20 December 2001. W3C Note. URL: <a href="http://www.w3.org/TR/2001/NOTE-CCPP-COORDINATION-20011220">http://www.w3.org/TR/2001/NOTE-CCPP-COORDINATION-20011220</a> ',"CCPP-RA":'Johan Hjelm; Mikael Nilsson; Hidetaka Ohto. <a href="http://www.w3.org/TR/2000/WD-CCPP-ra-20000721"><cite>Composite Capabilities/Preference Profiles: Requirements and Architecture.</cite></a> 21 July 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-CCPP-ra-20000721">http://www.w3.org/TR/2000/WD-CCPP-ra-20000721</a> ',"CCPP-STRUCT-VOCAB2":'C&#233;dric Kiss. <a href="http://www.w3.org/TR/2007/WD-CCPP-struct-vocab2-20070430"><cite>Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 2.0.</cite></a> 30 April 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-CCPP-struct-vocab2-20070430">http://www.w3.org/TR/2007/WD-CCPP-struct-vocab2-20070430</a> ',"CCPP-TA":'Mikael Nilsson. <a href="http://www.w3.org/TR/2000/WD-CCPP-ta-20000721"><cite>Composite Capabilities/Preference Profiles: Terminology and Abbreviations.</cite></a> 21 July 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-CCPP-ta-20000721">http://www.w3.org/TR/2000/WD-CCPP-ta-20000721</a> ',"CCPP-TRUST":'Johan Hjelm; Hidetaka Ohto; Lalitha Suryanarayana. <a href="http://www.w3.org/TR/2001/WD-CCPP-trust-20011220"><cite>CC/PP Implementors Guide: Privacy and Protocols.</cite></a> 20 December 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-CCPP-trust-20011220">http://www.w3.org/TR/2001/WD-CCPP-trust-20011220</a> ',CCXML:'RJ Auburn. <a href="http://www.w3.org/TR/2007/WD-ccxml-20070119"><cite>Voice Browser Call Control: CCXML Version 1.0.</cite></a> 19 January 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-ccxml-20070119">http://www.w3.org/TR/2007/WD-ccxml-20070119</a> ',CDFREQS:'Steve Speicher; Petri Vuorimaa. <a href="http://www.w3.org/TR/2005/WD-CDFReqs-20051219"><cite>Compound Document Use Cases and Requirements Version 2.0.</cite></a> 19 December 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-CDFReqs-20051219">http://www.w3.org/TR/2005/WD-CDFReqs-20051219</a> ',CDR:'Lasse Pajunen; et al. <a href="http://www.w3.org/TR/2007/CR-CDR-20070718"><cite>Compound Document by Reference Framework 1.0.</cite></a> 18 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-CDR-20070718">http://www.w3.org/TR/2007/CR-CDR-20070718</a> ',CDRREQS:'Daniel Appelquist; Antoine Quint; Timur Mehrvarz. <a href="http://www.w3.org/TR/2005/NOTE-CDRReqs-20051219"><cite>Compound Document by Reference Use Cases and Requirements Version 1.0.</cite></a> 19 December 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-CDRReqs-20051219">http://www.w3.org/TR/2005/NOTE-CDRReqs-20051219</a> ',CGM:'Roy Platon; Chris Lilley. <a href="http://www.w3.org/TR/NOTE-cgm-970618"><cite>Use of CGM as a Scalable Graphics Format.</cite></a> 18 June 1997. W3C Note. URL: <a href="http://www.w3.org/TR/NOTE-cgm-970618">http://www.w3.org/TR/NOTE-cgm-970618</a> ',CHARMOD:'Martin J. D&#252;rst; et al. <a href="http://www.w3.org/TR/2005/REC-charmod-20050215"><cite>Character Model for the World Wide Web 1.0: Fundamentals.</cite></a> 15 February 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-charmod-20050215">http://www.w3.org/TR/2005/REC-charmod-20050215</a> ',"CHARMOD-NORM":'Martin J. D&#252;rst; et al. <a href="http://www.w3.org/TR/2005/WD-charmod-norm-20051027"><cite>Character Model for the World Wide Web 1.0: Normalization.</cite></a> 27 October 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-charmod-norm-20051027">http://www.w3.org/TR/2005/WD-charmod-norm-20051027</a> ',"CHARMOD-RESID":'Fran&#231;ois Yergeau; et al. <a href="http://www.w3.org/TR/2004/CR-charmod-resid-20041122"><cite>Character Model for the World Wide Web 1.0: Resource Identifiers.</cite></a> 22 November 2004. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/CR-charmod-resid-20041122">http://www.w3.org/TR/2004/CR-charmod-resid-20041122</a> ',CHARREQ:'Martin J. D&#252;rst. <a href="http://www.w3.org/TR/1998/WD-charreq-19980710"><cite>Requirements for String Identity Matching and String Indexing.</cite></a> 10 July 1998. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1998/WD-charreq-19980710">http://www.w3.org/TR/1998/WD-charreq-19980710</a> ',CHARSETS:'<a href="http://www.iana.org/assignments/character-sets"><cite>Characters sets.</cite></a> These are the official names for character sets that may be used in the Internet and may be referred to in Internet documentation URL: <a href="http://www.iana.org/assignments/character-sets">http://www.iana.org/assignments/character-sets</a> ',"CLIPBOARD-APIS":'Doug Schepers; Charles McCathieNevile. <a href="http://www.w3.org/TR/2006/WD-clipboard-apis-20061115"><cite>Clipboard Operations for the Web 1.0: Copy, Paste, Drag and Drop.</cite></a> 15 November 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-clipboard-apis-20061115">http://www.w3.org/TR/2006/WD-clipboard-apis-20061115</a> ',"CMS-Algorithms":'R. Housley. <a href="http://www.ietf.org/rfc/rfc3370.txt"><cite>RFC3370: Cryptographic Message Syntax (CMS) Algorithms</cite></a>.  IETF Informational RFC, February 2002. URL: <a href="http://www.ietf.org/rfc/rfc3370.txt">http://www.ietf.org/rfc/rfc3370.txt</a>',"CMS-WRAP":'R. Housley. <a href="http://www.ietf.org/rfc/rfc3217.txt"><cite>RFC3217: Triple-DES and R2 Key Wrapping</cite></a>.  IETF Informational RFC, December 2001. URL: <a href="http://www.ietf.org/rfc/rfc3217.txt">http://www.ietf.org/rfc/rfc3217.txt</a>',COLORIMETRY:"<cite>Colorimetry, Second Edition.</cite> CIE Publication 15.2-1986. ISBN 3-900-734-00-3","CONSENT-EU-WP187":'WP189, <a href="http://ec.europa.eu/justice/policies/privacy/docs/wpdocs/2011/wp187_en.pdf"><cite>Opinion 15/2011 on the definition of consent</cite></a>. EU Article 29 Data Protection Working Party, 01197/11/EN WP187. 13 July 2011. URL: <a href="http://ec.europa.eu/justice/policies/privacy/docs/wpdocs/2011/wp187_en.pdf">http://ec.europa.eu/justice/policies/privacy/docs/wpdocs/2011/wp187_en.pdf</a>',"CONTACTS-API":'R. Tibbett. <a href="http://dev.w3.org/2009/dap/contacts/Overview.html"><cite>Contacts API</cite></a>. 3rd August 2010. W3C Latest Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/contacts/Overview.html">http://dev.w3.org/2009/dap/contacts/Overview.html</a> ',"CONTACTS-WRITER-API":'R. Tibbett. <a href="http://dev.w3.org/2009/dap/contacts/Writer.html"><cite>Contacts Writer API</cite></a>. 3rd August 2010. W3C Latest Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/contacts/Writer.html">http://dev.w3.org/2009/dap/contacts/Writer.html</a> ',"CONTENT-IN-RDF":'Carlos A Velasco; Johannes Koch. <a href="http://www.w3.org/TR/2008/WD-Content-in-RDF-20080908"><cite>Representing Content in RDF.</cite></a> 8 September 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-Content-in-RDF-20080908">http://www.w3.org/TR/2008/WD-Content-in-RDF-20080908</a> ',COOKIES:'Adam Barth. <cite><a href="http://www.rfc-editor.org/rfc/rfc6265.txt">HTTP State Management Mechanism</a>.</cite> April 2011. Internet Proposed Standard RFC 6265. URL: <a href="http://www.rfc-editor.org/rfc/rfc6265.txt">http://www.rfc-editor.org/rfc/rfc6265.txt</a> ',COOLURIS:'Richard Cyganiak; Leo Sauermann. <a href="http://www.w3.org/TR/2008/NOTE-cooluris-20081203"><cite>Cool URIs for the Semantic Web.</cite></a> 3 December 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-cooluris-20081203">http://www.w3.org/TR/2008/NOTE-cooluris-20081203</a> ',CORS:'Anne van Kesteren. <a href="http://www.w3.org/TR/2009/WD-cors-20090317"><cite>Cross-Origin Resource Sharing.</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-cors-20090317">http://www.w3.org/TR/2009/WD-cors-20090317</a> ',"CORE-DEVICE":'Robin Berjon. <a href="http://dev.w3.org/2009/dap/device/"><cite>Core Device Interfaces.</cite></a> 02 December 2009. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/device/">http://dev.w3.org/2009/dap/device/</a> ',"Coloring-RDF":"Giorgos Flouris; Irini Fundulaki; Panagiotis Pediaditis; Yannis Theoharis; Vassilis Christophides. <a href=\"http://data.semanticweb.org/conference/iswc/2009/paper/research/165/html\"><cite>Coloring RDF Triples to Capture Provenance</cite></a> 2009. The Semantic Web - ISWC 2009, Washington DC, Springer-Verlag,. URL: <a href='http://data.semanticweb.org/conference/iswc/2009/paper/research/165/html'>http://data.semanticweb.org/conference/iswc/2009/paper/research/165/html</a> ","Context-SW":"R.M.R. Guha; R. Fikes. <cite>Contexts for the Semantic Web</cite>. 2005. The Semantic Web — ISWC2004. Yokohama, Japan: Springer-Verlag","CPC-REQ":'Markus Lauff; Amy Yu. <a href="http://www.w3.org/TR/2003/WD-cpc-req-20030510"><cite>Core Presentation Characteristics:&#160;Requirements and Use Cases.</cite></a> 10 May 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-cpc-req-20030510">http://www.w3.org/TR/2003/WD-cpc-req-20030510</a> ',CSELECTION:'Rhys Lewis; Max Froumentin; Roland Merrick. <a href="http://www.w3.org/TR/2007/CR-cselection-20070725"><cite>Content Selection for Device Independence (DISelect) 1.0.</cite></a> 25 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-cselection-20070725">http://www.w3.org/TR/2007/CR-cselection-20070725</a> ',"CSELECTION-PRIMER":'Roland Merrick; Rhys Lewis. <a href="http://www.w3.org/TR/2007/WD-cselection-primer-20070109"><cite>Content Selection Primer 1.0.</cite></a> 9 January 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-cselection-primer-20070109">http://www.w3.org/TR/2007/WD-cselection-primer-20070109</a> ',"CSELECTION-XAF":'Rhys Lewis; Roland Merrick. <a href="http://www.w3.org/TR/2007/CR-cselection-xaf-20070725"><cite>Delivery Context: XPath Access Functions 1.0.</cite></a> 25 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-cselection-xaf-20070725">http://www.w3.org/TR/2007/CR-cselection-xaf-20070725</a> ',"CSS-ADAPTATION":'Rune Lillesveen. <a href="http://dev.w3.org/csswg/css-device-adapt/">CSS Device Adaptation</a>. 23 January 2012. Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/csswg/css-device-adapt/">http://dev.w3.org/csswg/css-device-adapt/</a>',"CSS-MOBILE":'Svante Schubert. <a href="http://www.w3.org/TR/2008/CR-css-mobile-20081210"><cite>CSS Mobile Profile 2.0.</cite></a> 10 December 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-css-mobile-20081210">http://www.w3.org/TR/2008/CR-css-mobile-20081210</a> ',"CSS-POTENTIAL":'Bert Bos. <a href="http://www.w3.org/TR/1998/NOTE-CSS-potential-19981210"><cite>List of suggested extensions to CSS.</cite></a> 10 December 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-CSS-potential-19981210">http://www.w3.org/TR/1998/NOTE-CSS-potential-19981210</a> ',"CSS-PRINT":'Melinda Grant. <a href="http://www.w3.org/TR/2006/WD-css-print-20061013"><cite>CSS Print Profile.</cite></a> 13 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-css-print-20061013">http://www.w3.org/TR/2006/WD-css-print-20061013</a> ',"CSS-TV":'Sean Hayes; et al. <a href="http://www.w3.org/TR/2003/CR-css-tv-20030514"><cite>CSS TV Profile 1.0.</cite></a> 14 May 2003. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/CR-css-tv-20030514">http://www.w3.org/TR/2003/CR-css-tv-20030514</a> ',CSS1:'H&#229;kon Wium Lie; Bert Bos. <a href="http://www.w3.org/TR/2008/REC-CSS1-20080411"><cite>Cascading Style Sheets (CSS1) Level 1 Specification.</cite></a> 11 April 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-CSS1-20080411">http://www.w3.org/TR/2008/REC-CSS1-20080411</a> ',CSS2:'Ian Jacobs; et al. <a href="http://www.w3.org/TR/CSS21/"><cite>Cascading Style Sheets, level 2 (CSS2) Specification.</cite></a> 07 June 2011. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-CSS2-20080411">http://www.w3.org/TR/2008/REC-CSS2-20080411</a> ',CSS21:'Bert Bos; et al. <a href="http://www.w3.org/TR/CSS21/"><cite>Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification.</cite></a>. W3C Recommendation. URL: <a href="http://www.w3.org/TR/CSS21">http://www.w3.org/TR/CSS21/</a> ',"CSS3-2D-TRANSFORMS":'Simon Fraser; Dean Jackson; David Hyatt; Chris Marrin; Edward O\'Connor. <a href="http://www.w3.org/TR/css3-2d-transforms/"><cite>CSS 2D Transforms Module Level 3.</cite></a> URL: <a href="http://www.w3.org/TR/css3-2d-transforms/">http://www.w3.org/TR/css3-2d-transforms/</a> ',"CSS3-3D-TRANSFORMS":'Dean Jackson; David Hyatt; Chris Marrin. <a href="http://www.w3.org/TR/css3-3d-transforms/"><cite>CSS 3D Transforms Module Level 3.</cite></a> URL: <a href="http://www.w3.org/TR/css3-3d-transforms/">http://www.w3.org/TR/css3-3d-transforms</a> ',"CSS3-TRANSFORMS":'Simon Fraser; Dean Jackson; David Hyatt; Chris Marrin; Edward O\'Connor; Dirk Schulze; Aryeh Gregor. <a href="http://www.w3.org/TR/css3-transforms/"><cite>CSS Transforms.</cite></a> URL: <a href="http://www.w3.org/TR/css3-transforms/">http://www.w3.org/TR/css3-transforms/</a> ',"CSS3-ANIMATIONS":'Dean Jackson (Apple Inc); David Hyatt (Apple Inc); Chris Marrin (Apple Inc). <a href="http://www.w3.org/TR/css3-animations/"><cite>CSS Animations.</cite></a> 03 April 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-animations/">http://www.w3.org/TR/css3-animations/</a> ',"CSS3-FONTS":'John Daggett (Mozilla). <a href="http://www.w3.org/TR/css3-fonts"><cite>CSS Fonts Module Level 3</cite></a> URL: <a href="http://www.w3.org/TR/css3-fonts">http://www.w3.org/TR/css3-fonts</a> ',"CSS3-FONTS-20020802":'Michel Suignard; Chris Lilley. <a href="http://www.w3.org/TR/2002/WD-css3-fonts-20020802"><cite>CSS3 module: Fonts.</cite></a> 2 August 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css3-fonts-20020802">http://www.w3.org/TR/2002/WD-css3-fonts-20020802</a> ',"CSS3-HYPERLINKS":'Daniel Glazman; Bert Bos; Tantek &#199;elik. <a href="http://www.w3.org/TR/2004/WD-css3-hyperlinks-20040224"><cite>CSS3 Hyperlink Presentation Module.</cite></a> 24 February 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-css3-hyperlinks-20040224">http://www.w3.org/TR/2004/WD-css3-hyperlinks-20040224</a> ',"CSS3-IMAGES":'Elika J. Etemad, Tab Atkins Jr.. <a href="http://www.w3.org/TR/css3-images/">CSS Image Values and Replaced Content</a>. 17 April 2012. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/css3-images/">http://www.w3.org/TR/css3-images/</a>',"CSS3-MARQUEE":'Bert Bos. <a href="http://www.w3.org/TR/2008/CR-css3-marquee-20081205"><cite>CSS Marquee Module Level 3.</cite></a> 5 December 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-css3-marquee-20081205">http://www.w3.org/TR/2008/CR-css3-marquee-20081205</a> ',"CSS3-PRESLEV":'Ian Hickson; H&#229;kon Wium Lie. <a href="http://www.w3.org/TR/2003/WD-css3-preslev-20030813"><cite>CSS3 module: Presentation Levels.</cite></a> 13 August 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-css3-preslev-20030813">http://www.w3.org/TR/2003/WD-css3-preslev-20030813</a> ',"CSS3-READER":'Bert Bos. <a href="http://www.w3.org/TR/2004/WD-css3-reader-20040224"><cite>The CSS \'Reader\' Media Type.</cite></a> 24 February 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-css3-reader-20040224">http://www.w3.org/TR/2004/WD-css3-reader-20040224</a> ',"CSS3-TRANSITIONS":'Dean Jackson; David Hyatt; Chris Marrin; L. David Baron. <a href="http://www.w3.org/TR/css3-transitions/"><cite>CSS Transitions.</cite></a> 03 April 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-transitions/">http://www.w3.org/TR/css3-transitions/</a> ',"CSS3-WEBFONTS":'Michel Suignard; Chris Lilley. <a href="http://www.w3.org/TR/2002/WD-css3-webfonts-20020802"><cite>CSS3 module: Web Fonts.</cite></a> 2 August 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css3-webfonts-20020802">http://www.w3.org/TR/2002/WD-css3-webfonts-20020802</a> ',"CSS3-BG":'Elika J. Etemad; Bert Bos; Brad Kemper. <a href="http://www.w3.org/TR/css3-background/"><cite>CSS Backgrounds and Borders Module Level 3.</cite></a> URL: <a href="http://www.w3.org/TR/css3-background/">http://www.w3.org/TR/css3-background/</a> ',CSS3BORDER:'Tapas Roy. <a href="http://www.w3.org/TR/2002/WD-css3-border-20021107"><cite>CSS3 module: Border.</cite></a> 7 November 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css3-border-20021107">http://www.w3.org/TR/2002/WD-css3-border-20021107</a> ',CSS3BOX:'Bert Bos. <a href="http://www.w3.org/TR/2007/WD-css3-box-20070809"><cite>CSS basic box model.</cite></a> 9 August 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-css3-box-20070809">http://www.w3.org/TR/2007/WD-css3-box-20070809</a> ',CSS3CASCADE:'H&#229;kon Wium Lie. <a href="http://www.w3.org/TR/2005/WD-css3-cascade-20051215"><cite>CSS3 module: Cascading and inheritance.</cite></a> 15 December 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-css3-cascade-20051215">http://www.w3.org/TR/2005/WD-css3-cascade-20051215</a> ',CSS3COL:'Håkon Wium Lie. <a href="http://www.w3.org/TR/css3-multicol/"><cite>CSS3 module: Multi-column layout.</cite></a> 12 April 2011. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-multicol/">http://www.w3.org/TR/css3-multicol/</a> ',CSS3COLOR:'Tantek Çelik; Chris Lilley; L. David Baron. <a href="http://www.w3.org/TR/css3-color"><cite>CSS Color Module Level 3.</cite></a> 07 June 2011. W3C Recommendation. URL: <a href="http://www.w3.org/TR/css3-color">http://www.w3.org/TR/css3-color</a> ',CSS3GCPM:'H&#229;kon Wium Lie. <a href="http://www.w3.org/TR/2007/WD-css3-gcpm-20070504"><cite>CSS3 module: Generated Content for Paged Media.</cite></a> 4 May 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-css3-gcpm-20070504">http://www.w3.org/TR/2007/WD-css3-gcpm-20070504</a> ',CSS3GENCON:'Ian Hickson. <a href="http://www.w3.org/TR/2003/WD-css3-content-20030514"><cite>CSS3 Generated and Replaced Content Module.</cite></a> 14 May 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-css3-content-20030514">http://www.w3.org/TR/2003/WD-css3-content-20030514</a> ',CSS3GRID:'Markus Mielke; Alex Mogilevsky. <a href="http://www.w3.org/TR/2007/WD-css3-grid-20070905"><cite>CSS Grid Positioning Module Level 3.</cite></a> 5 September 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-css3-grid-20070905">http://www.w3.org/TR/2007/WD-css3-grid-20070905</a> ',CSS3INTRO:'Eric A. Meyer; Bert Bos. <a href="http://www.w3.org/TR/2001/WD-css3-roadmap-20010523"><cite>CSS3 introduction.</cite></a> 23 May 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-css3-roadmap-20010523">http://www.w3.org/TR/2001/WD-css3-roadmap-20010523</a> ',CSS3LAYOUT:'Bert Bos. <a href="http://www.w3.org/TR/2007/WD-css3-layout-20070809"><cite>CSS Advanced Layout Module.</cite></a> 9 August 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-css3-layout-20070809">http://www.w3.org/TR/2007/WD-css3-layout-20070809</a> ',CSS3LINE:'Michel Suignard; Eric A. Meyer. <a href="http://www.w3.org/TR/2002/WD-css3-linebox-20020515"><cite>CSS3 module: line.</cite></a> 15 May 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css3-linebox-20020515">http://www.w3.org/TR/2002/WD-css3-linebox-20020515</a> ',CSS3LIST:'Ian Hickson; Tantek &#199;elik. <a href="http://www.w3.org/TR/2002/WD-css3-lists-20021107"><cite>CSS3 module: Lists.</cite></a> 7 November 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css3-lists-20021107">http://www.w3.org/TR/2002/WD-css3-lists-20021107</a> ',CSS3MARQUEE:'Bert Bos. <a href="http://www.w3.org/TR/2008/CR-css3-marquee-20081205"><cite>CSS Marquee Module Level 3.</cite></a> 5 December 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-css3-marquee-20081205">http://www.w3.org/TR/2008/CR-css3-marquee-20081205</a> ',"CSS3-MEDIAQUERIES":'H. Lie, T. Çelik, D. Glazman, A. van Kesteren. <a href="http://www.w3.org/TR/css3-mediaqueries/"><cite>Media Queries</cite></a>  URL: <a href="http://www.w3.org/TR/css3-mediaqueries/">http://www.w3.org/TR/css3-mediaqueries/</a> ',CSS3NAMESPACE:'Anne van Kesteren; Elika J. Etemad. <a href="http://www.w3.org/TR/2008/CR-css3-namespace-20080523"><cite>CSS Namespaces Module.</cite></a> 23 May 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-css3-namespace-20080523">http://www.w3.org/TR/2008/CR-css3-namespace-20080523</a> ',CSS3PAGE:'Melinda Grant; H&#229;kon Wium Lie. <a href="http://www.w3.org/TR/2006/WD-css3-page-20061010"><cite>CSS3 Module: Paged Media.</cite></a> 10 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-css3-page-20061010">http://www.w3.org/TR/2006/WD-css3-page-20061010</a> ',CSS3POS:"Bert Bos. <cite>CSS3 Positioning Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)",CSS3RUBY:'Michel Suignard. <a href="http://www.w3.org/TR/2003/CR-css3-ruby-20030514"><cite>CSS3 Ruby Module.</cite></a> 14 May 2003. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/CR-css3-ruby-20030514">http://www.w3.org/TR/2003/CR-css3-ruby-20030514</a> ',CSS3SPEECH:'David Raggett; Daniel Glazman; Claudio Santambrogio. <a href="http://www.w3.org/TR/2004/WD-css3-speech-20041216"><cite>CSS3 Speech Module.</cite></a> 16 December 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-css3-speech-20041216">http://www.w3.org/TR/2004/WD-css3-speech-20041216</a> ',CSS3SYN:'L. David Baron. <a href="http://www.w3.org/TR/2003/WD-css3-syntax-20030813"><cite>CSS3 module: Syntax.</cite></a> 13 August 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-css3-syntax-20030813">http://www.w3.org/TR/2003/WD-css3-syntax-20030813</a> ',CSS3TBL:"Bert Bos; David Hyatt. <cite>CSS3 Tables Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)","CSS4-IMAGES":'Elika J. Etemad, Tab Atkins Jr. <a href="http://www.w3.org/TR/css4-images/"><cite>CSS Image Values and Replaced Content Module Level 4</cite></a>. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css4-images/">http://www.w3.org/TR/css4-images/</a> ',CSS3TEXT:'Elika J. Etemad; Koji Ishii. <a href="http://www.w3.org/TR/css3-text/"><cite>CSS Text Level 3.</cite></a> 19 January 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-text/">http://www.w3.org/TR/css3-text/</a> ',CSS3TEXTLAYOUT:"Elika J. Etemad; Paul Nelson. <cite>CSS3 Text Layout Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)",CSS3UI:'Tantek Çelik. <a href="http://www.w3.org/TR/css3-ui/"><cite>CSS3 Basic User Interface Module.</cite></a> 17 January 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-ui/">http://www.w3.org/TR/css3-ui/</a> ',CSS3VAL:'Chris Lilley; H&#229;kon Wium Lie. <a href="http://www.w3.org/TR/css3-values/"><cite>CSS3 Values and Units.</cite></a> 08 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-values/">http://www.w3.org/TR/css3-values/</a> ',CSS3WRITINGMODES:'Elika J. Etemad; Koji Ishii; Shinyu Murakami. <a href="http://dev.w3.org/csswg/css3-writing-modes"><cite>CSS Writing Modes Module Level 3.</cite></a> 17 October 2010. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/csswg/css3-writing-modes">http://dev.w3.org/csswg/css3-writing-modes</a> ',CSSBEIJING:'Elika J. Etemad. <a href="http://www.w3.org/TR/2008/WD-css-beijing-20080516"><cite>Cascading Style Sheets (CSS) Snapshot 2007.</cite></a> 16 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-css-beijing-20080516">http://www.w3.org/TR/2008/WD-css-beijing-20080516</a> ',"CSSOM-VIEW":'Anne van Kesteren. <a href="http://www.w3.org/TR/2008/WD-cssom-view-20080222"><cite>CSSOM View Module.</cite></a> 22 February 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-cssom-view-20080222">http://www.w3.org/TR/2008/WD-cssom-view-20080222</a> ',CSSSTYLEATTR:'Marc Attinasi; Bert Bos; Tantek &#199;elik. <a href="http://www.w3.org/TR/2002/WD-css-style-attr-20020515"><cite>Syntax of CSS rules in HTML\'s &quot;style&quot; attribute.</cite></a> 15 May 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-css-style-attr-20020515">http://www.w3.org/TR/2002/WD-css-style-attr-20020515</a> ',"CT-GUIDELINES":'Jo Rabin. <a href="http://www.w3.org/TR/2008/WD-ct-guidelines-20080801"><cite>Content Transformation Guidelines 1.0.</cite></a> 1 August 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-ct-guidelines-20080801">http://www.w3.org/TR/2008/WD-ct-guidelines-20080801</a> ',"CT-LANDSCAPE":'Jo Rabin; Andrew Swainston. <a href="http://www.w3.org/TR/2007/WD-ct-landscape-20071025"><cite>Content Transformation Landscape 1.0.</cite></a> 25 October 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-ct-landscape-20071025">http://www.w3.org/TR/2007/WD-ct-landscape-20071025</a> ',CURIE:'Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/"><cite>RDFa Core 1.1 - Section 6.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/</a> ',"CVE-2009-0217":'<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0217"><cite>Common Vulnerabilities and Exposures List, CVE-2009-0217</cite></a> URL: <a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0217"> http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-0217</a>',CX:'Philippe Le H&#233;garet; et al. <a href="http://www.w3.org/TR/2001/NOTE-CX-20011211"><cite>Component Extension (CX) API requirements Version 1.0.</cite></a> 11 December 2001. W3C Note. URL: <a href="http://www.w3.org/TR/2001/NOTE-CX-20011211">http://www.w3.org/TR/2001/NOTE-CX-20011211</a> ',DAHUT:"Robin Berjon; et al. <cite>The Dahut Specification Example From the Higher Circle.</cite> 15 March 1977. Lazy Daft. (Work for progress.) URL: <a href='http://berjon.com/'>http://berjon.com/</a>","DAP-ACCESS-REQS":'L. Arribas, P. Byers, M. Hanclik, F Hirsch, D. Rogers. <a href="http://dev.w3.org/2009/dap/policy-reqs/"><cite>Device API Access Control Requirements</cite></a> 17 June 2010. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/policy-reqs/">http://dev.w3.org/2009/dap/policy-reqs/</a> ',"DAP-POLICY-FRAMEWORK":'L. Arribas, P. Byers, M. Hanclik, F Hirsch, D. Rogers. <a href="http://dev.w3.org/2009/dap/policy/Framework.html"><cite>Device API Policy Framework.</cite></a> 17 June 2010. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/policy/Framework.html">http://dev.w3.org/2009/dap/policy/Framework.html</a> ',"DAP-PRIVACY-POSITION":'Frederick Hirsch, Robin Berjon. <a href="http://www.w3.org/2010/policy-ws/papers/14-Hirsch-Berjon-DAP.html"><cite>Position Paper: Privacy and Policy in the DAP WG - A DAP Perspective</cite></a>. 2 September 2010. URL: <a href="http://www.w3.org/2010/policy-ws/papers/14-Hirsch-Berjon-DAP.html">http://www.w3.org/2010/policy-ws/papers/14-Hirsch-Berjon-DAP.html</a> (<a href="http://www.w3.org/2010/policy-ws/">W3C Workshop on Privacy and Data Usage Control</a>.)',"DAP-PRIVACY-REQS":'Alissa Cooper, Frederick Hirsch, John Morris. <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/"><cite>Device API Privacy Requirements</cite></a> 29 June 2010. W3C Note URL: <a href="http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/">http://www.w3.org/TR/2010/NOTE-dap-privacy-reqs-20100629/</a> ',"DAP-REQS":'Robin Berjon; et al. <a href="http://www.w3.org/TR/2009/NOTE-dap-api-reqs-20091015/"><cite>Device API Requirementsml</cite></a> 15 October 2009. Working Group Note. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/NOTE-dap-api-reqs-20091015/">http://www.w3.org/TR/2009/NOTE-dap-api-reqs-20091015/</a> ',"DAP-XACML-POLICY-PROFILE":'L. Arribas, P. Byers, M. Hanclik, F Hirsch, D. Rogers. <a href="http://dev.w3.org/2009/dap/policy/Profile.html"><cite>XACML Policy Profile for Device APIs.</cite></a> 17 June 2010. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/policy/Profile.html">http://dev.w3.org/2009/dap/policy/Profile.html</a> ',Davis:'<a href="http://www.usenix.org/publications/library/proceedings/usenix01/davis.html"><cite>Defective Sign &amp; Encrypt in S/MIME, PKCS#7, MOSS, PEM, PGP, and XML.</cite></a> D. Davis. USENIX Annual Technical Conference. 2001. URL: <a href="http://www.usenix.org/publications/library/proceedings/usenix01/davis.html">http://www.usenix.org/publications/library/proceedings/usenix01/davis.html</a>',DC11:'Dublin Core metadata initiative. <a href="http://dublincore.org/documents/dcmi-terms/"><cite>Dublin Core metadata element set, version 1.1.</cite></a> July 1999. Dublin Core recommendation. URL: <a href="http://dublincore.org/documents/dcmi-terms/">http://dublincore.org/documents/dcmi-terms/</a> ',DCONTOLOGY:'Jos&#233; Manuel Cantera Fonseca; Rhys Lewis. <a href="http://www.w3.org/TR/2009/WD-dcontology-20090616"><cite>Delivery Context Ontology.</cite></a> 16 June 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-dcontology-20090616/">http://www.w3.org/TR/2009/WD-dcontology-20090616/</a>',"DC-RDF":'M. Nilsson; et al. <a href="http://dublincore.org/documents/dc-rdf/"><cite>Expressing Dublin Core metadata using the Resource Description Framework (RDF).</cite></a> 14 January 2008. DCMI Recommendation. URL: <a href="http://dublincore.org/documents/2008/01/14/dc-rdf/">http://dublincore.org/documents/2008/01/14/dc-rdf/</a>',"DC-TERMS":'Dublin Core Metadata Initiative. <a href="http://dublincore.org/documents/2010/10/11/dcmi-terms/"><cite>Dublin Core Metadata Initiative Terms, version 1.1.</cite></a> 11 October 2010. DCMI Recommendation. URL: <a href="http://dublincore.org/documents/2010/10/11/dcmi-terms/">http://dublincore.org/documents/2010/10/11/dcmi-terms/</a>.',"DD-ECOSYSTEM":'Rotan Hanrahan. <a href="http://www.w3.org/TR/2007/NOTE-dd-ecosystem-20071031"><cite>Device Description Ecosystem 1.0.</cite></a> 31 October 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-dd-ecosystem-20071031">http://www.w3.org/TR/2007/NOTE-dd-ecosystem-20071031</a> ',"DD-LANDSCAPE":'Matt Womer; Eman Nkeze; James Pearce. <a href="http://www.w3.org/TR/2007/NOTE-dd-landscape-20071031"><cite>Device Description Landscape 1.0.</cite></a> 31 October 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-dd-landscape-20071031">http://www.w3.org/TR/2007/NOTE-dd-landscape-20071031</a> ',"DD-STRUCTURES":'Jos&#233; Manuel Cantera Fonseca. <a href="http://www.w3.org/TR/2008/WD-dd-structures-20081205"><cite>Device Description Structures.</cite></a> 5 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-dd-structures-20081205">http://www.w3.org/TR/2008/WD-dd-structures-20081205</a> ',"DDR-CORE-VOCABULARY":'Andrea Trasatti; Jo Rabin; Rotan Hanrahan. <a href="http://www.w3.org/TR/2008/NOTE-ddr-core-vocabulary-20080414"><cite>Device Description Repository Core Vocabulary.</cite></a> 14 April 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-ddr-core-vocabulary-20080414">http://www.w3.org/TR/2008/NOTE-ddr-core-vocabulary-20080414</a> ',"DDR-REQUIREMENTS":'Kevin Smith; David Sanders. <a href="http://www.w3.org/TR/2007/NOTE-DDR-requirements-20071217"><cite>Device Description Repository Requirements 1.0.</cite></a> 17 December 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-DDR-requirements-20071217">http://www.w3.org/TR/2007/NOTE-DDR-requirements-20071217</a> ',"DDR-SIMPLE-API":'Jos&#233; Manuel Cantera Fonseca; et al. <a href="http://www.w3.org/TR/2008/REC-DDR-Simple-API-20081205"><cite>Device Description Repository Simple API.</cite></a> 5 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-DDR-Simple-API-20081205">http://www.w3.org/TR/2008/REC-DDR-Simple-API-20081205</a> ',DES:'<a href="http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf"><cite>NIST FIPS 46-3: Data Encryption Standard (DES)</cite></a> . October 1999. URL: <a href="http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf">http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf</a>',"DEVICE-ORIENTATION":'Steve Block, Andrei Popescu. <a href="http://www.w3.org/TR/2011/WD-orientation-event-20111201/">DeviceOrientation Event Specification</a>. 1 December 2011. Last Call Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-orientation-event-20111201/">http://www.w3.org/TR/2011/WD-orientation-event-20111201/</a>',DFAUI:'Arthur Barstow. <a href="http://www.w3.org/TR/2007/NOTE-dfaui-20070912"><cite>Declarative Formats for Applications and User Interfaces.</cite></a> 12 September 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-dfaui-20070912">http://www.w3.org/TR/2007/NOTE-dfaui-20070912</a> ',"DI-ATDI":'Roland Merrick; Rotan Hanrahan. <a href="http://www.w3.org/TR/2004/NOTE-di-atdi-20040218"><cite>Authoring Techniques for Device Independence.</cite></a> 18 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-di-atdi-20040218">http://www.w3.org/TR/2004/NOTE-di-atdi-20040218</a> ',"DI-DCO":'Sailesh Sathish; Rhys Lewis; Roger Gimson. <a href="http://www.w3.org/TR/2006/NOTE-di-dco-20060320"><cite>Delivery Context Overview for Device Independence.</cite></a> 20 March 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-di-dco-20060320">http://www.w3.org/TR/2006/NOTE-di-dco-20060320</a> ',"DI-GLOSS":'Rhys Lewis. <a href="http://www.w3.org/TR/2005/WD-di-gloss-20050118"><cite>Glossary of Terms for Device Independence.</cite></a> 18 January 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-di-gloss-20050118">http://www.w3.org/TR/2005/WD-di-gloss-20050118</a> ',"DI-PRINC":'Roger Gimson. <a href="http://www.w3.org/TR/2003/NOTE-di-princ-20030901"><cite>Device Independence Principles.</cite></a> 1 September 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-di-princ-20030901">http://www.w3.org/TR/2003/NOTE-di-princ-20030901</a> ',DIAL:'Kevin Smith. <a href="http://www.w3.org/TR/2007/WD-dial-20070727"><cite>Device Independent Authoring Language (DIAL).</cite></a> 27 July 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-dial-20070727">http://www.w3.org/TR/2007/WD-dial-20070727</a> ',"DIAL-PRIMER":'Kevin Smith; Kevin Smith. <a href="http://www.w3.org/TR/2007/WD-dial-primer-20071101"><cite>DIAL Part 0: Primer.</cite></a> 1 November 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-dial-primer-20071101">http://www.w3.org/TR/2007/WD-dial-primer-20071101</a> ',DIG2000:'Digital Imaging Group. <a href="http://www.digitalimaging.org/pdf/wg1n1017.pdf"><cite>DIG2000 file format proposal.</cite></a> Oct 1998. Report (draft) ISO/IEC JTC1/SG29/WG1 N1017. URL: <a href="http://www.digitalimaging.org/pdf/wg1n1017.pdf">http://www.digitalimaging.org/pdf/wg1n1017.pdf</a> ',"DISCO-PROP":'Rich Tibbett, Clarke Stevens. <a href="http://people.opera.com/richt/release/specs/discovery/Overview.html"><cite>Networked Service Discovery and Messaging</cite></a>. 22 September 2011. Draft proposal (no official standing). URL: <a href="http://people.opera.com/richt/release/specs/discovery/Overview.html">http://people.opera.com/richt/release/specs/discovery/Overview.html</a>',"DNS-SD":'S. Cheshire; M. Krochmal. <a href="http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt"><cite>DNS-Based Service Discovery.</cite></a> 27 February 2011. IETF Draft. URL: <a href="http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt">http://files.dns-sd.org/draft-cheshire-dnsext-dns-sd.txt</a>',"DOM-BINDINGS":'Cameron McCormack. <a href="http://www.w3.org/TR/2008/WD-WebIDL-20081219"><cite>Web IDL.</cite></a> 19 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-WebIDL-20081219">http://www.w3.org/TR/2008/WD-WebIDL-20081219</a> ',DOM4:'Anne van Kesteren; Aryeh Gregor; Ms2ger. <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html/"><cite>DOM4.</cite></a> URL: <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html/">http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html/</a> ',"DOM-LEVEL-1":'Vidur Apparao; et al. <a href="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/"><cite>Document Object Model (DOM) Level 1.</cite></a> 1 October 1998. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/">http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/</a> ',"DOM-LEVEL-1-2e":'Jonathan Robie; et al. <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929"><cite>Document Object Model (DOM) Level 1 Specification (Second Edition).</cite></a> 29 September 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929">http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929</a> ',"DOM-LEVEL-2-CORE":'Arnaud Le Hors; et al. <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/"><cite>Document Object Model (DOM) Level 2 Core Specification.</cite></a> 13 November 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/">http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/</a> ',"DOM-LEVEL-2-EVENTS":'Tom Pixley. <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113"><cite>Document Object Model (DOM) Level 2 Events Specification.</cite></a> 13 November 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113">http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113</a> ',"DOM-LEVEL-2-HTML":'Arnaud Le Hors; Johnny Stenback; Philippe Le H&#233;garet. <a href="http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109"><cite>Document Object Model (DOM) Level 2 HTML Specification.</cite></a> 9 January 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109">http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109</a> ',"DOM-LEVEL-2-STYLE":'Vidur Apparao; Philippe Le H&#233;garet; Chris Wilson. <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113"><cite>Document Object Model (DOM) Level 2 Style Specification.</cite></a> 13 November 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113">http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113</a> ',"DOM-LEVEL-2-TRAVERSAL-RANGE":'Vidur Apparao; et al. <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113"><cite>Document Object Model (DOM) Level 2 Traversal and Range Specification.</cite></a> 13 November 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113">http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113</a> ',"DOM-LEVEL-2-VIEWS":'Laurence Cable; Arnaud Le Hors. <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113"><cite>Document Object Model (DOM) Level 2 Views Specification.</cite></a> 13 November 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113">http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113</a> ',"DOM-LEVEL-3-AS":'Ben Chang; et al. <a href="http://www.w3.org/TR/2002/NOTE-DOM-Level-3-AS-20020725"><cite>Document Object Model (DOM) Level 3 Abstract Schemas Specification.</cite></a> 25 July 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-DOM-Level-3-AS-20020725">http://www.w3.org/TR/2002/NOTE-DOM-Level-3-AS-20020725</a> ',"DOM-LEVEL-3-CORE":'Gavin Nicol; et al. <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407"><cite>Document Object Model (DOM) Level 3 Core Specification.</cite></a> 7 April 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407">http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407</a> ',"DOM-LEVEL-3-EVENTS":'Bj&#246;rn H&#246;hrmann; Tom Pixley; Philippe Le H&#233;garet. <a href="http://www.w3.org/TR/2011/WD-DOM-Level-3-Events-20110531/"><cite>Document Object Model (DOM) Level 3 Events Specification.</cite></a> 31 May 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-DOM-Level-3-Events-20110531/">http://www.w3.org/TR/2011/WD-DOM-Level-3-Events-20110531/</a> ',"DOM-LEVEL-3-LS":'Johnny Stenback; Andy Heninger. <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407"><cite>Document Object Model (DOM) Level 3 Load and Save Specification.</cite></a> 7 April 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407">http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407</a> ',"DOM-LEVEL-3-VAL":'Ben Chang; Rezaur Rahman; Joe Kesselman. <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Val-20040127"><cite>Document Object Model (DOM) Level 3 Validation Specification.</cite></a> 27 January 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Val-20040127">http://www.w3.org/TR/2004/REC-DOM-Level-3-Val-20040127</a> ',"DOM-LEVEL-3-VIEWS":'Ray Whitmer. <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-Views-20040226"><cite>Document Object Model (DOM) Level 3 Views and Formatting Specification.</cite></a> 26 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-Views-20040226">http://www.w3.org/TR/2004/NOTE-DOM-Level-3-Views-20040226</a> ',"DOM-LEVEL-3-XPATH":'Ray Whitmer. <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226"><cite>Document Object Model (DOM) Level 3 XPath Specification.</cite></a> 26 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226">http://www.w3.org/TR/2004/NOTE-DOM-Level-3-XPath-20040226</a> ',"DOM-REQUIREMENTS":'Arnaud Le Hors; et al. <a href="http://www.w3.org/TR/2004/NOTE-DOM-Requirements-20040226"><cite>Document Object Model (DOM) Requirements.</cite></a> 26 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-DOM-Requirements-20040226">http://www.w3.org/TR/2004/NOTE-DOM-Requirements-20040226</a> ',DPF:'Max Froumentin; et al. <a href="http://www.w3.org/TR/2007/CR-DPF-20071221"><cite>Delivery Context: Client Interfaces (DCCI) 1.0.</cite></a> 21 December 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-DPF-20071221">http://www.w3.org/TR/2007/CR-DPF-20071221</a> ',"DSIG-LABEL":'Philip DesAutels; et al. <a href="http://www.w3.org/TR/1998/REC-DSig-label-19980527"><cite>PICS Signed Labels (DSig) 1.0 Specification.</cite></a> 27 May 1998. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1998/REC-DSig-label-19980527">http://www.w3.org/TR/1998/REC-DSig-label-19980527</a> ',"DSIG-USAGE":'Thomas Roessler. <a href="http://www.w3.org/TR/2006/NOTE-DSig-usage-20061220"><cite>Using XML Digital Signatures in the 2006 XML Environment.</cite></a> 20 December 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-DSig-usage-20061220">http://www.w3.org/TR/2006/NOTE-DSig-usage-20061220</a> ',DSS:'<a href="http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf"><cite>FIPS PUB 186-3:  Digital Signature Standard (DSS)</cite></a>. June 2009. U.S. Department of Commerce/National Institute of Standards and Technology. URL: <a href="http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf">http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf</a>',"EARL10-REQUIREMENTS":'Shadi Abou-Zahra; Jim Ley. <a href="http://www.w3.org/TR/2005/WD-EARL10-Requirements-20050711"><cite>Requirements for the Evaluation and Report Language (EARL) 1.0.</cite></a> 11 July 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-EARL10-Requirements-20050711">http://www.w3.org/TR/2005/WD-EARL10-Requirements-20050711</a> ',"EARL10-SCHEMA":'Shadi Abou-Zahra. <a href="http://www.w3.org/TR/2007/WD-EARL10-Schema-20070323"><cite>Evaluation and Report Language (EARL) 1.0 Schema.</cite></a> 23 March 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-EARL10-Schema-20070323">http://www.w3.org/TR/2007/WD-EARL10-Schema-20070323</a> ',"EBXML-MSG":'Ian Jones; Brian Gibb; David Fischer. <a href="https://www.oasis-open.org/committees/download.php/272/ebMS_v2_0.pdf"><cite> OASIS ebXML Message Service Specification</cite></a> 1 April 2002. URL: <a href="https://www.oasis-open.org/committees/download.php/272/ebMS_v2_0.pdf">https://www.oasis-open.org/committees/download.php/272/ebMS_v2_0.pdf</a>',"ECC-ALGS":'D. McGrew, K. Igoe, M. Salter. <a href="http://www.rfc-editor.org/rfc/rfc6090.txt"><cite>RFC 6090: Fundamental Elliptic Curve Cryptography Algorithms.</cite></a> February 2011. IETF Informational RFC. URL: <a href="http://www.rfc-editor.org/rfc/rfc6090.txt">http://www.rfc-editor.org/rfc/rfc6090.txt</a>',"EC-RELATED-ACTIVITIES":'Thierry Michel. <a href="http://www.w3.org/TR/2000/NOTE-EC-related-activities-20000107"><cite>W3C and Electronic Commerce.</cite></a> 7 January 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-EC-related-activities-20000107">http://www.w3.org/TR/2000/NOTE-EC-related-activities-20000107</a> ',"ECMA-262":'<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm"><cite>ECMAScript Language Specification.</cite></a> June 2011. URL: <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">http://www.ecma-international.org/publications/standards/Ecma-262.htm</a> ',"ECMA-262-51":'<a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript Language Specification, Edition 5.1</a>. June 2011. URL: <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">http://www.ecma-international.org/publications/standards/Ecma-262.htm</a>',"EGOV-IMPROVING":'Kevin Novak; Jos&#233; M. Alonso. <a href="http://www.w3.org/TR/2009/WD-egov-improving-20090310"><cite>Improving Access to Government through Better Use of the Web.</cite></a> 10 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-egov-improving-20090310">http://www.w3.org/TR/2009/WD-egov-improving-20090310</a> ',ELEMENTTRAVERSAL:'Robin Berjon; Doug Schepers. <a href="http://www.w3.org/TR/2008/REC-ElementTraversal-20081222"><cite>Element Traversal Specification.</cite></a> 22 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-ElementTraversal-20081222">http://www.w3.org/TR/2008/REC-ElementTraversal-20081222</a> ',ELEMTYPO:"Robert Bringhurst. <cite>The Elements of Typographic Style, Version 3.1.</cite> Hartley &amp; Marks. 2005. ISBN 0-88179-206-3.",EMAIL:"P. Resnick. <a href='http://tools.ietf.org/html/rfc5322'><cite>RFC 5322: Internet Message Format</cite></a>. October 2008. IETF draft standard. URL: <a href='http://tools.ietf.org/html/rfc5322'>http://tools.ietf.org/html/rfc5322</a> ",EMMA:'Michael Johnston. <a href="http://www.w3.org/TR/2009/REC-emma-20090210"><cite>EMMA: Extensible MultiModal Annotation markup language.</cite></a> 10 February 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-emma-20090210">http://www.w3.org/TR/2009/REC-emma-20090210</a> ',EMMAREQS:'St&#233;phane H. Maes; Stephen Potter. <a href="http://www.w3.org/TR/2003/NOTE-EMMAreqs-20030113"><cite>Requirements for EMMA.</cite></a> 13 January 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-EMMAreqs-20030113">http://www.w3.org/TR/2003/NOTE-EMMAreqs-20030113</a> ',"ERICSSON-WDC":'<a href="https://labs.ericsson.com/apis/web-device-connectivity/"><cite>Web Device Connectivity</cite></a>. 18 October 2010. Ericsson Labs. URL: <a href="https://labs.ericsson.com/apis/web-device-connectivity/"></a>',ESDH:'E. Rescorla. <a href="http://www.ietf.org/rfc/rfc2631.txt"><cite> Diffie-Hellman Key Agreement Method.</cite></a>. IETF RFC 2631 Standards Track, 1999. URL: <a     href="http://www.ietf.org/rfc/rfc2631.txt">http://www.ietf.org/rfc/rfc2631.txt</a>',EXI:'Takuki Kamiya; John Schneider. <a href="http://www.w3.org/TR/2009/CR-exi-20091208/"><cite>Efficient XML Interchange (EXI) Format 1.0.</cite></a> 8 December 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/CR-exi-20091208/">http://www.w3.org/TR/2009/CR-exi-20091208/</a> ',"EXI-BEST-PRACTICES":'Mike Cokus; Daniel Vogelheim. <a href="http://www.w3.org/TR/2007/WD-exi-best-practices-20071219"><cite>Efficient XML Interchange (EXI) Best Practices.</cite></a> 19 December 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-exi-best-practices-20071219">http://www.w3.org/TR/2007/WD-exi-best-practices-20071219</a> ',"EXI-EVALUATION":'Carine Bournez. <a href="http://www.w3.org/TR/2008/WD-exi-evaluation-20080728"><cite>Efficient XML Interchange Evaluation.</cite></a> 28 July 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-exi-evaluation-20080728">http://www.w3.org/TR/2008/WD-exi-evaluation-20080728</a> ',"EXI-IMPACTS":'Jaakko Kangasharju. <a href="http://www.w3.org/TR/2008/WD-exi-impacts-20080903"><cite>Efficient XML Interchange (EXI) Impacts.</cite></a> 3 September 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-exi-impacts-20080903">http://www.w3.org/TR/2008/WD-exi-impacts-20080903</a> ',"EXI-MEASUREMENTS":'Jaakko Kangasharju; et al. <a href="http://www.w3.org/TR/2007/WD-exi-measurements-20070725"><cite>Efficient XML Interchange Measurements Note.</cite></a> 25 July 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-exi-measurements-20070725">http://www.w3.org/TR/2007/WD-exi-measurements-20070725</a> ',"EXI-PRIMER":'Daniel Peintner; Santiago Pericas-Geertsen. <a href="http://www.w3.org/TR/2007/WD-exi-primer-20071219"><cite>Efficient XML Interchange (EXI) Primer.</cite></a> 19 December 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-exi-primer-20071219">http://www.w3.org/TR/2007/WD-exi-primer-20071219</a> ',"FILE-UPLOAD":'Robin Berjon. <a href="http://www.w3.org/TR/2006/WD-file-upload-20061018"><cite>File Upload.</cite></a> 18 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-file-upload-20061018">http://www.w3.org/TR/2006/WD-file-upload-20061018</a> ',"FILE-API":'Arun Ranganathan; Jonas Sicking. <a href="http://www.w3.org/TR/2011/WD-FileAPI-20111020/"><cite>File API.</cite></a> 20 October 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-FileAPI-20111020/">http://www.w3.org/TR/2011/WD-FileAPI-20111020/</a> ',"FILE-WRITER":'Eric Uhrhane. <a href="http://www.w3.org/TR/2011/WD-file-writer-api-20110419/"><cite>File Writer API.</cite></a> 19 April 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-file-writer-api-20110419/">http://www.w3.org/TR/2011/WD-file-writer-api-20110419/</a> ',"FIN-PRIV-NOTICE":"Kleimann Communications Group, Inc. <a href='http://www.ftc.gov/privacy/privacyinitiatives/ftcfinalreport060228.pdf'><cite>Evolution of a Prototype Financial Privacy Notice </cite></a> 28 February 2006. URL: http://www.ftc.gov/privacy/privacyinitiatives/ftcfinalreport060228.pdf ","FIPS-180-3":'<a href="http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf"><cite>FIPS PUB 180-3 Secure Hash Standard</cite></a>.  U.S. Department of Commerce/National Institute of Standards and Technology. URL: <a href="http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf">http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf</a>',"FIPS-186-3":'<a href="http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf"><cite>FIPS PUB 186-3:  Digital Signature Standard (DSS)</cite></a>. June 2009. U.S. Department of Commerce/National Institute of Standards and Technology. URL: <a href="http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf">http://csrc.nist.gov/publications/fips/fips186-3/fips_186-3.pdf</a>',FIR:'Joe Clark. <a href="http://www.alistapart.com/articles/fir">&ldquo;Facts and Opinion About Fahrner Image Replacement&rdquo;</a> in: <cite>A List Apart.</cite> Issue No. 160. 20 October 2003. URL: <a href="http://www.alistapart.com/articles/fir">http://www.alistapart.com/articles/fir</a> ',FLEX:"<cite>Flex: The Lexical Scanner Generator.</cite> Version 2.3.7, ISBN 1882114213",FLEXBOX:'Tab Atkins Jr.; Elika J. Etemad; Alex Mogilevsky. <a href="http://www.w3.org/TR/css3-flexbox/"><cite>Flexible Box Layout Module.</cite></a> 12 June 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/css3-flexbox/">http://www.w3.org/TR/css3-flexbox/</a> ',FOAF:'Dan Brickley, Libby Miller. <a href="http://xmlns.com/foaf/spec/"><cite>FOAF Vocabulary Specification 0.98.</cite></a> 9 August 2010. URL: <a href="http://xmlns.com/foaf/spec/">http://xmlns.com/foaf/spec/</a>',FULLSCREEN:'Anne van Kesteren. <a href="http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html"><cite>The Fullscreen API.</cite></a> 4 January 2012. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html">http://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html</a> ',"GEOLOCATION-API":'Andrei Popescu. <a href="http://www.w3.org/TR/2008/WD-geolocation-API-20081222/"><cite>Geolocation API Specification.</cite></a> 22 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-geolocation-API-20081222/">http://www.w3.org/TR/2008/WD-geolocation-API-20081222/</a> ',"GEOPRIV-ARCH":"Barnes, R. Lepinski, M. Cooper, A. Morris, J. Tschofenig, H. Schulzrinne, H. <a href = 'http://tools.ietf.org/html/draft-ietf-geopriv-arch-01'><cite>An Architecture for Location and Location Privacy in Internet Applications</cite></a> 29 October 2009. URL: <a href=\"http://tools.ietf.org/html/draft-ietf-geopriv-arch-01\">http://tools.ietf.org/html/draft-ietf-geopriv-arch-01</a>","GEOLOCATION-PRIVACY":'Marcos Cáceres <a href="http://www.w3.org/2010/api-privacy-ws/papers/privacy-ws-21.pdf"><cite>Privacy of Geolocation Implementations</cite></a>, "W3C Workshop on Privacy for Advanced Web APIs" paper, 12/13 July 2010. URL: <a href="http://www.w3.org/2010/api-privacy-ws/papers/privacy-ws-21.pdf">http://www.w3.org/2010/api-privacy-ws/papers/privacy-ws-21.pdf</a>',GETUSERMEDIA:'D. Burnett, A. Narayanan. <a href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html"><cite>getusermedia: Getting access to local devices that can generate multimedia streams</cite></a> 22 December 2011. W3C Editors draft (Work in progress.) URL: <a href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/getusermedia.html</a> ',GRDDL:'Dan Connolly. <a href="http://www.w3.org/TR/2007/REC-grddl-20070911"><cite>Gleaning Resource Descriptions from Dialects of Languages (GRDDL).</cite></a> 11 September 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-grddl-20070911">http://www.w3.org/TR/2007/REC-grddl-20070911</a> ',"GRDDL-PRIMER":'Harry Halpin; Ian Davis. <a href="http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628"><cite>GRDDL Primer.</cite></a> 28 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628">http://www.w3.org/TR/2007/NOTE-grddl-primer-20070628</a> ',"GRDDL-SCENARIOS":'Fabien Gandon. <a href="http://www.w3.org/TR/2007/NOTE-grddl-scenarios-20070406"><cite>GRDDL Use Cases: Scenarios of extracting RDF data from XML documents.</cite></a> 6 April 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-grddl-scenarios-20070406">http://www.w3.org/TR/2007/NOTE-grddl-scenarios-20070406</a> ',"GRDDL-TESTS":'Chimezie Ogbuji. <a href="http://www.w3.org/TR/2007/REC-grddl-tests-20070911"><cite>GRDDL Test Cases.</cite></a> 11 September 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-grddl-tests-20070911">http://www.w3.org/TR/2007/REC-grddl-tests-20070911</a> ',"GSM-SMS":'3G Partnership Project. <a href="http://www.3gpp.org/ftp/Specs/archive/03_series/03.40/0340-750.zip"><cite>Technical realization of the Short Message Service (SMS).</cite></a> 11 January 2002. 3GPP 0340-750. URL: <a href="http://www.3gpp.org/ftp/Specs/archive/03_series/03.40/0340-750.zip">http://www.3gpp.org/ftp/Specs/archive/03_series/03.40/0340-750.zip</a> ',"HASH-IN-URI":'T.V. Raman; Ashok Malhotra. <a href="http://www.w3.org/2001/tag/2011/01/HashInURI-20110115"><cite>Repurposing the Hash Sign for the New Web.</cite></a> 15 January 2011. Putative TAG Finding. URL: <a href="http://www.w3.org/2001/tag/2011/01/HashInURI-20110115">http://www.w3.org/2001/tag/2011/01/HashInURI-20110115</a> ',"HCLS-KB":'Eric Prud\'hommeaux; M. Scott Marshall. <a href="http://www.w3.org/TR/2008/NOTE-hcls-kb-20080604"><cite>A Prototype Knowledge Base for the Life Sciences.</cite></a> 4 June 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-hcls-kb-20080604">http://www.w3.org/TR/2008/NOTE-hcls-kb-20080604</a> ',"HCLS-SENSELAB":'Kei-Hoi Cheung; Matthias Samwald. <a href="http://www.w3.org/TR/2008/NOTE-hcls-senselab-20080604"><cite>Experiences with the conversion of SenseLab databases to RDF/OWL.</cite></a> 4 June 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-hcls-senselab-20080604">http://www.w3.org/TR/2008/NOTE-hcls-senselab-20080604</a> ',HLINK:'Steven Pemberton; Masayasu Ishikawa. <a href="http://www.w3.org/TR/2002/WD-hlink-20020913"><cite>HLink: Link recognition for the XHTML Family.</cite></a> 13 September 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-hlink-20020913">http://www.w3.org/TR/2002/WD-hlink-20020913</a> ',HMAC:'H. Krawczyk, M. Bellare, R. Canetti. <a href="http://www.ietf.org/rfc/rfc2104.txt"><cite>HMAC: Keyed-Hashing for Message Authentication</cite></a>. February 1997. IETF RFC 2104.  URL: <a href="http://www.ietf.org/rfc/rfc2104.txt">http://www.ietf.org/rfc/rfc2104.txt</a>',"HMAC-Security":'C. Rechberger, V. Rijmen. <a href="http://www.jucs.org/jucs_14_3/new_results_on_nmac/jucs_14_3_0347_0376_rechberger.pdf"><cite>New Results on NMAC/HMAC when Instantiated with Popular Hash Functions</cite></a>. 2 January 2008. Journal of Universal Computer Science, vol. 14, no. 3 (2008), 347-376.  URL: <a href="http://www.jucs.org/jucs_14_3/new_results_on_nmac/jucs_14_3_0347_0376_rechberger.pdf">http://www.jucs.org/jucs_14_3/new_results_on_nmac/jucs_14_3_0347_0376_rechberger.pdf</a>',HMRMC:'<a href="http://www.hmrc.gov.uk/softwaredevelopers/index.htm"><cite>HM Revenue and customs</cite></a> Her Majesty\'s Revenue and Customs. URL: <a href="http://www.hmrc.gov.uk/softwaredevelopers/index.htm">http://www.hmrc.gov.uk/softwaredevelopers/index.htm</a> <br> Sample response message with XML signature: <a href="http://www.hmrc.gov.uk/ebu/responsemessages.pdf">http://www.hmrc.gov.uk/ebu/responsemessages.pdf</a>',HSL:'Steven Pemberton. <a href="http://www.cwi.nl/~steven/css/hsl.html"><cite>HSL: light vs saturation.</cite></a> 19 November 1998. URL: <a href="http://www.cwi.nl/~steven/css/hsl.html">http://www.cwi.nl/~steven/css/hsl.html</a> ',"HTML-DESIGN-PRINCIPLES":'Anne van Kesteren; Maciej Stachowiak. <a href="http://www.w3.org/TR/2007/WD-html-design-principles-20071126"><cite>HTML Design Principles.</cite></a> 26 November 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-html-design-principles-20071126">http://www.w3.org/TR/2007/WD-html-design-principles-20071126</a> ',"HTML-LAN":'M. T. Carrasco Benitez. <a href="http://www.w3.org/TR/1998/NOTE-html-lan-19980313"><cite>Primary Language in HTML.</cite></a> 13 March 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-html-lan-19980313">http://www.w3.org/TR/1998/NOTE-html-lan-19980313</a> ',HTML32:'David Raggett. <a href="http://www.w3.org/TR/REC-html32-19970114"><cite>HTML 3.2 Reference Specification.</cite></a> 14 January 1997. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-html32-19970114">http://www.w3.org/TR/REC-html32-19970114</a> ',HTML40:'Ian Jacobs; David Raggett; Arnaud Le Hors. <a href="http://www.w3.org/TR/1998/REC-html40-19980424"><cite>HTML 4.0 Specification.</cite></a> 24 April 1998. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1998/REC-html40-19980424">http://www.w3.org/TR/1998/REC-html40-19980424</a> ',"HTML40-MOBILE":'Shin\'ichi Matsui; et al. <a href="http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315"><cite>HTML 4.0 Guidelines for Mobile Access.</cite></a> 15 March 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315">http://www.w3.org/TR/1999/NOTE-html40-mobile-19990315</a> ',HTML401:'David Raggett; Ian Jacobs; Arnaud Le Hors. <a href="http://www.w3.org/TR/1999/REC-html401-19991224"><cite>HTML 4.01 Specification.</cite></a> 24 December 1999. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1999/REC-html401-19991224">http://www.w3.org/TR/1999/REC-html401-19991224</a> ',HTML5:'Ian Hickson; David Hyatt. <a href="http://www.w3.org/TR/html5"><cite>HTML5.</cite></a> 29 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/html5">http://www.w3.org/TR/html5</a> ',"HTML5-DIFF":'Anne van Kesteren. <a href="http://www.w3.org/TR/2009/WD-html5-diff-20090212"><cite>HTML 5 differences from HTML 4.</cite></a> 12 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-html5-diff-20090212">http://www.w3.org/TR/2009/WD-html5-diff-20090212</a> ',"HTML5-PUBNOTES":'Michael Smith. <a href="http://www.w3.org/TR/2008/NOTE-html5-pubnotes-20080610"><cite>HTML 5 Publication Notes.</cite></a> 10 June 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-html5-pubnotes-20080610">http://www.w3.org/TR/2008/NOTE-html5-pubnotes-20080610</a> ',"HTML-DEVICE":'Ian Hickson. <a href="http://dev.w3.org/html5/html-device/"><cite>HTML Device</cite></a> 9th September 2010. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/html5/html-device/">http://dev.w3.org/html5/html-device/</a>',HTMLICCPROF:'Apple Computer with input from Microsoft Corporation. <a href="http://www.apple.com/colorsync/benefits/web/icc-profiles.html"><cite>Proposal for HTML support of ICC profiles.</cite></a> URL: <a href="http://www.apple.com/colorsync/benefits/web/icc-profiles.html">http://www.apple.com/colorsync/benefits/web/icc-profiles.html</a> ',"HTTP-IN-RDF":'Carlos A Velasco; Johannes Koch; Shadi Abou-Zahra. <a href="http://www.w3.org/TR/2008/WD-HTTP-in-RDF-20080908"><cite>HTTP Vocabulary in RDF.</cite></a> 8 September 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-HTTP-in-RDF-20080908">http://www.w3.org/TR/2008/WD-HTTP-in-RDF-20080908</a> ',"HTTP-NG-TESTBED":'Daniel Veillard. <a href="http://www.w3.org/TR/1998/NOTE-HTTP-NG-testbed-19980710"><cite>Design of HTTP-ng Testbed.</cite></a> 10 July 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-HTTP-NG-testbed-19980710">http://www.w3.org/TR/1998/NOTE-HTTP-NG-testbed-19980710</a> ',HTTP11:'R. Fielding; et al. <a href="http://www.ietf.org/rfc/rfc2616.txt"><cite>Hypertext Transfer Protocol - HTTP/1.1.</cite></a> June 1999. Internet RFC 2616. URL: <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a> ',"HTTP-TLS":'E. Rescorla. <a href="http://www.ietf.org/rfc/rfc2818.txt"><cite>HTTP Over TLS.</cite></a> May 2000. Internet RFC 2818. URL: <a href="http://www.ietf.org/rfc/rfc2818.txt">http://www.ietf.org/rfc/rfc2818.txt</a> ',HunterZhan:'Hunter, Jane; Zhan, Zhimin. <a href="http://archive.dstc.edu.au/RDU/staff/jane-hunter/PNG/paper.html">&ldquo;An Indexing and Querying System for Online Images Based on the PNG Format and Embedded Metadata&rdquo;</a> in: <cite>ARLIS/ANZ Conference.</cite> Sep 1999. Brisbane, Australia. URL: <a href="http://archive.dstc.edu.au/RDU/staff/jane-hunter/PNG/paper.html">http://archive.dstc.edu.au/RDU/staff/jane-hunter/PNG/paper.html</a> ',"HTML-RDFA":'Manu Sporny; et al. <a href="http://www.w3.org/TR/2011/WD-rdfa-in-html-20110525/"><cite>HTML+RDFa 1.1</cite></a> 25 May 2011. W3C Working Draft. URL: <a href="http://www.w3.org/TR/2011/WD-rdfa-in-html-20110525/">http://www.w3.org/TR/2011/WD-rdfa-in-html-20110525/</a> ',"I18N-GUIDE-FRAMEWORK":'Richard Ishida. <a href="http://www.w3.org/TR/2003/WD-i18n-guide-framework-20030417"><cite>Framework Document for i18n Guidelines 1.0.</cite></a> 17 April 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-i18n-guide-framework-20030417">http://www.w3.org/TR/2003/WD-i18n-guide-framework-20030417</a> ',"ID-MGM":"Rundle, M. <a href = 'http://identityproject.lse.ac.uk/mary.pdf'><cite>International Data Protection and Digitial Identity Management Tools</cite></a> Internet Governance Forum 2006 - Athens, Privacy Workshop I. 31 October 2006. URL: http://identityproject.lse.ac.uk/mary.pdf ",IEEE1363:'<a href="http://grouper.ieee.org/groups/1363/"><cite>IEEE 1363: Standard Specifications for Public Key Cryptography</cite></a>. August 2000.  URL: <a href="http://grouper.ieee.org/groups/1363/">http://grouper.ieee.org/groups/1363/</a>',IEEE1588:'<a href="http://grouper.ieee.org/groups/1588/"><cite>IEEE 1588-2008: A Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</cite></a>. 24 July 2008. URL: <a href="http://grouper.ieee.org/groups/1588/">http://grouper.ieee.org/groups/1588/</a>',"IEEE802-1AS":'Geoff Garner. <a href="http://ieee802.org/1/pages/802.1as.html"><cite>IEEE 802.1AS - Timing and Synchronization</cite></a>. 30 March 2011. IEEE Standard. URL: <a href="http://ieee802.org/1/pages/802.1as.html">http://ieee802.org/1/pages/802.1as.html</a>',"IEEE802-3":"<cite>IEEE 802.3: Carrier sense multiple access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications</cite>. December 2008.","I18N-HTML-TECH-BIDI":'Richard Ishida. <a href="http://www.w3.org/TR/2007/WD-i18n-html-tech-bidi-20070606"><cite>Internationalization Best Practices: Handling Right-to-left Scripts in XHTML and HTML Content.</cite></a> 6 June 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-i18n-html-tech-bidi-20070606">http://www.w3.org/TR/2007/WD-i18n-html-tech-bidi-20070606</a> ',"I18N-HTML-TECH-CHAR":'Richard Ishida. <a href="http://www.w3.org/TR/2004/WD-i18n-html-tech-char-20040509"><cite>Authoring Techniques for XHTML &amp; HTML Internationalization: Characters and Encodings 1.0.</cite></a> 9 May 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-i18n-html-tech-char-20040509">http://www.w3.org/TR/2004/WD-i18n-html-tech-char-20040509</a> ',"I18N-HTML-TECH-LANG":'Richard Ishida. <a href="http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412"><cite>Internationalization Best Practices: Specifying Language in XHTML &amp; HTML Content.</cite></a> 12 April 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412">http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412</a> ',"IANA-SRVPORT-REG":"<a href='http://www.iana.org/form/ports-services'>IANA Service Name and Transport Protocol Port Number Registry</a>. URL: <a href='http://www.iana.org/form/ports-services'>http://www.iana.org/form/ports-services</a>","IANA-TSV":'Paul Lindner. <a href="http://www.iana.org/assignments/media-types/text/tab-separated-values"><cite>Definition of tab-separated-values (tsv)</cite></a> June 1993. IANA Media Type Registration. URL: <a href="http://www.iana.org/assignments/media-types/text/tab-separated-values">http://www.iana.org/assignments/media-types/text/tab-separated-values</a>',ICC32:'<a href="http://www.color.org/icc32.pdf"><cite>ICC Profile Format Specification, version 3.2.</cite></a> 1995. URL: <a href="http://www.color.org/icc32.pdf">http://www.color.org/icc32.pdf</a>',ICC42:'<a href="http://color.org/ICC1v42_2006-05.pdf"><cite>Image technology colour management &#8212; Architecture, profile format, and data structure.</cite></a> International Color Consortium. Specification ICC.1:2004-10 (Profile version 4.2.0.0) With errata incorporated, 5/22/2006. URL: <a href="http://color.org/ICC1v42_2006-05.pdf">http://color.org/ICC1v42_2006-05.pdf</a> ',ICE:'J. Rosenberg. <a href="http://tools.ietf.org/html/rfc5245"><cite>Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal for Offer/Answer Protocols.</cite></a> April 2010. Internet RFC 5245. URL: <a href="http://tools.ietf.org/html/rfc5245">http://tools.ietf.org/html/rfc5245</a>',"ILU-REQUESTOR":'Paul Everitt. <a href="http://www.w3.org/TR/WD-ilu-requestor-960307"><cite>The ILU Requester: Object Services in HTTP Servers.</cite></a> 7 March 1996. W3C Note. URL: <a href="http://www.w3.org/TR/WD-ilu-requestor-960307">http://www.w3.org/TR/WD-ilu-requestor-960307</a> ',IMAGEMAP:'Ian Graham. <a href="http://www.w3.org/TR/NOTE-imagemap"><cite>Imagemapped Images and Image-Incapable User Agents.</cite></a> 27 November 1996. W3C Note. URL: <a href="http://www.w3.org/TR/NOTE-imagemap">http://www.w3.org/TR/NOTE-imagemap</a> ',INDEXEDDB:'Nikunj Mehta, Jonas Sicking, Eliot Graff, Andrei Popescu, Jeremy Orlow. <a href="http://www.w3.org/TR/IndexedDB/">Indexed Database API</a>. April 2011. Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/IndexedDB/">http://www.w3.org/TR/IndexedDB/</a>',INKML:'Stephen M. Watt; Max Froumentin; Yi-Min Chee. <a href="http://www.w3.org/TR/2006/WD-InkML-20061023"><cite>Ink Markup Language (InkML).</cite></a> 23 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-InkML-20061023">http://www.w3.org/TR/2006/WD-InkML-20061023</a> ',INKREQS:'Yi-Min Chee; Sai Prasad. <a href="http://www.w3.org/TR/2003/NOTE-inkreqs-20030122"><cite>Requirements for the Ink Markup Language.</cite></a> 22 January 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-inkreqs-20030122">http://www.w3.org/TR/2003/NOTE-inkreqs-20030122</a> ',IRI:'M. Duerst, M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRI).</cite></a> January 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3987.txt</a> ',ISO10646:"<cite>Information Technology - Universal Multiple- Octet Coded CharacterSet (UCS) - Part 1: Architecture and Basic Multilingual Plane.</cite> ISO/IEC10646-1:1993. The current specification also takes into consideration the first five amendments to ISO/IEC 10646-1:1993. Useful &lt;a href=&quot;http://www.egt.ie/standards/iso10646/ucs-roadmap.html&quot;&gt;roadmaps&lt;/a&gt;show which scripts sit at which numeric ranges.",ISO15924:"<cite>Code for the representation of names of scripts.</cite> International Organization for Standardization. 1998. ISO 15924:1998. Draft International Standard","ISO18033-2":'<cite>Information technology -- Security techniques -- Encryption algorithms -- Part 2: Asymmetric ciphers</cite>, International Organization for Standardization.  18033-2:2006. May 2006. URL: <a href="http://www.iso.org/iso/home.htm">http://www.iso.org/iso/home.htm</a>.',ISO8601:'<cite>Representation of dates and times.</cite> International Organization for Standardization. 2004. ISO 8601:2004. URL: <a href="http://www.iso.org/iso/catalogue_detail?csnumber=40874">http://www.iso.org/iso/catalogue_detail?csnumber=40874</a> ',ISO9070:'<cite>Registration procedures for public text owner identifiers.</cite> International Organization for Standardization. 1990. ISO 9070:1990. URL: <a href="http://www.iso.org/iso/catalogue_detail.htm?csnumber=16644">http://www.iso.org/iso/catalogue_detail.htm?csnumber=16644</a> ',ISO8879:'<a href="http://www.iso.ch/cate/d16387.html"><cite>Information Processing -- Text and Office Systems -- Standard Generalized Markup Language (SGML).</cite></a> ISO 8879:1986. URL: <a href="http://www.iso.ch/cate/d16387.html">http://www.iso.ch/cate/d16387.html</a> ',ITS:'Felix Sasaki; Christian Lieske. <a href="http://www.w3.org/TR/2007/REC-its-20070403"><cite>Internationalization Tag Set (ITS) Version 1.0.</cite></a> 3 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-its-20070403">http://www.w3.org/TR/2007/REC-its-20070403</a> ',ITSREQ:'Yves Savourel. <a href="http://www.w3.org/TR/2006/WD-itsreq-20060518"><cite>Internationalization and Localization Markup Requirements.</cite></a> 18 May 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-itsreq-20060518">http://www.w3.org/TR/2006/WD-itsreq-20060518</a> ',ITUMCC:"<cite>List of Mobile Countries or Geographical Region Codes.</cite> International Telecommunication Union. 2007. URL: <a href='http://www.itu.int/publ/T-SP-E.212A-2007/en'>http://www.itu.int/publ/T-SP-E.212A-2007/en</a>",ITUMNC:"<cite>Mobile Network Codes (MNC) for The International Identification Plan for Public Networks and Subscriptions.</cite> International Telecommunication Union. 2009. URL: <a href='http://www.itu.int/publ/T-SP-E.212B-2009/en'>http://www.itu.int/publ/T-SP-E.212B-2009/en</a>",JIGSAW:'Jigsaw Team (Yves Lafon &amp; Benoit Mahe). <a href="http://www.w3.org/Jigsaw/Doc/Programmer/design.html"><cite>Jigsaw 2.0 internal design.</cite></a> July 1999. URL: <a href="http://www.w3.org/Jigsaw/Doc/Programmer/design.html">http://www.w3.org/Jigsaw/Doc/Programmer/design.html</a> ',JIS4051:"<cite>Formatting rules for Japanese documents (&#12302;&#26085;&#26412;&#35486;&#25991;&#26360;&#12398;&#32068;&#29256;&#26041;&#27861;&#12303;).</cite> Japanese Standards Association. 2004. JIS X 4051:2004. In Japanese",JISX4051:"<cite>Line composition rules for Japanese documents.</cite> Japanese Standards Association. 1995. JIS X 4051-1995. In Japanese",JLREQ:'Kenzou Onozawa; et al. <a href="http://www.w3.org/TR/2008/WD-jlreq-20081015"><cite>Requirements of Japanese Text Layout.</cite></a> 15 October 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-jlreq-20081015">http://www.w3.org/TR/2008/WD-jlreq-20081015</a> ',JPEG:'Hamilton, Eric. <a href="http://www.w3.org/Graphics/JPEG/jfif3.pdf"><cite>JPEG File Interchange Format.</cite></a> Sep 1992. URL: <a href="http://www.w3.org/Graphics/JPEG/jfif3.pdf">http://www.w3.org/Graphics/JPEG/jfif3.pdf</a> C-Cube Microsystems. Milpitas, CA, USA.',JPEG2000:'Joint Photographers Expert Group (JPEG). <a href="http://www.jpeg.org/cd15444-1.pdf"><cite>Jpeg 2000 image coding system.</cite></a> 9 Dec 1999. Report (draft) ISO/IEC CD15444-1:1999. URL: <a href="http://www.jpeg.org/cd15444-1.pdf">http://www.jpeg.org/cd15444-1.pdf</a> ',"JAX-RS":'M. Hadley and P. Sandoz, Eds., JAX-RS: Java API for RESTful Web Services Version 1.0. Sun Microsystems Inc., 08-Sep-2008.<a href="http://download.oracle.com/otn-pub/jcp/jaxrs-1.0-fr-eval-oth-JSpec/jaxrs-1.0-final-spec.pdf"><cite>JAX-RS: Java API for RESTful Web Services Version 1.0</cite></a>',"JSON-LD":'Manu Sporny, et al. <a href="http://json-ld.org/spec/latest/"><cite>JSON-LD - Linked Data Expression in JSON</cite></a> 15 October 2010. Unofficial Draft. URL: <a href="http://json-ld.org/spec/latest/">http://json-ld.org/spec/latest/</a> ',KnowPrivacy:'Joshua Gomez; Travis Pinnick; Ashkan Soltani. <a href="http://www.knowprivacy.org/report/KnowPrivacy_Final_Report.pdf"><cite>KnowPrivacy.</cite></a> 1 June 2009. URL: <a href="http://www.knowprivacy.org/report/KnowPrivacy_Final_Report.pdf">http://www.knowprivacy.org/report/KnowPrivacy_Final_Report.pdf</a> ',KUIL:'Kormann, Thierry. <a href="http://www.inria.fr/koala/kuil/index.html"><cite>KUIL, the Koala User Interface Language.</cite></a> Sep 1999. Software package URL: <a href="http://www.inria.fr/koala/kuil/index.html">http://www.inria.fr/koala/kuil/index.html</a> ',LANGCULTTYPE:"John D. Berry, Ed. <cite>Language Culture Type.</cite> Graphis. 2001. ISBN 1-932026-01-0.",LBASE:'Ramanathan V. Guha; Patrick Hayes. <a href="http://www.w3.org/TR/2003/NOTE-lbase-20031010"><cite>LBase: Semantics for Languages of the Semantic Web.</cite></a> 10 October 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-lbase-20031010">http://www.w3.org/TR/2003/NOTE-lbase-20031010</a> ',"LDAP-DN":'K. Zeilenga. <a href="http://www.ietf.org/rfc/rfc4514.txt"><cite>Lightweight Directory Access Protocol : String Representation of Distinguished Names</cite></a>. June 2006. IETF RFC 4514. URL: <a href="http://www.ietf.org/rfc/rfc4514.txt">http://www.ietf.org/rfc/rfc4514.txt</a>',LEIRI:'Richard Tobin; Norman Walsh; Henry S. Thompson. <a href="http://www.w3.org/TR/2008/NOTE-leiri-20081103"><cite>Legacy extended IRIs for XML resource identification.</cite></a> 3 November 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-leiri-20081103">http://www.w3.org/TR/2008/NOTE-leiri-20081103</a> ',"LEXICON-REQS":'Paolo Baggia; Frank Scahill. <a href="http://www.w3.org/TR/2004/WD-lexicon-reqs-20041029"><cite>Pronunciation Lexicon Specification (PLS) Version 1.0 Requirements.</cite></a> 29 October 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-lexicon-reqs-20041029">http://www.w3.org/TR/2004/WD-lexicon-reqs-20041029</a> ',"LIC-PRIV":"Robin Berjon. <a href='http://dev.w3.org/2009/dap/docs/privacy-license.html'><cite>License-based Privacy: Technical Aspects.</cite></a> 19 April 2010. W3C-Internal Document. URL: <a href='http://dev.w3.org/2009/dap/docs/privacy-license.html'>http://dev.w3.org/2009/dap/docs/privacy-license.html</a> ",LTLI:'Felix Sasaki. <a href="http://www.w3.org/TR/2006/WD-ltli-20060612"><cite>Language Tags and Locale Identifiers for the World Wide Web.</cite></a> 12 June 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-ltli-20060612">http://www.w3.org/TR/2006/WD-ltli-20060612</a> ',"LINKED-DATA":'Tim Berners-Lee. <a href="http://www.w3.org/DesignIssues/LinkedData.html"><cite>Linked Data.</cite></a> 18 June 2009. Design Issue. (Work in progress.) URL: <a href="http://www.w3.org/DesignIssues/LinkedData.html">http://www.w3.org/DesignIssues/LinkedData.html</a> ',MATHML:'Patrick Ion; Robert Miner. <a href="http://www.w3.org/1999/07/REC-MathML-19990707"><cite>Mathematical Markup Language (MathML) 1.01 Specification.</cite></a> 7 July 1999. W3C Recommendation. URL: <a href="http://www.w3.org/1999/07/REC-MathML-19990707">http://www.w3.org/1999/07/REC-MathML-19990707</a> ',"MATHML-BVAR":'Stan Devitt; Michael Kohlhase. <a href="http://www.w3.org/TR/2003/NOTE-mathml-bvar-20031110"><cite>Bound Variables in MathML.</cite></a> 10 November 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-mathml-bvar-20031110">http://www.w3.org/TR/2003/NOTE-mathml-bvar-20031110</a> ',"MATHML-FOR-CSS":'David Carlisle; et al. <a href="http://www.w3.org/TR/2007/WD-mathml-for-css-20071214"><cite>A MathML for CSS profile.</cite></a> 14 December 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-mathml-for-css-20071214">http://www.w3.org/TR/2007/WD-mathml-for-css-20071214</a> ',"MATHML-TYPES":'Stan Devitt; Michael Kohlhase; Max Froumentin. <a href="http://www.w3.org/TR/2003/NOTE-mathml-types-20031110"><cite>Structured Types in MathML 2.0.</cite></a> 10 November 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-mathml-types-20031110">http://www.w3.org/TR/2003/NOTE-mathml-types-20031110</a> ',"MATHML-UNITS":'Douglas Wilhelm Harder; Stan Devitt. <a href="http://www.w3.org/TR/2003/NOTE-mathml-units-20031110"><cite>Units in MathML.</cite></a> 10 November 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-mathml-units-20031110">http://www.w3.org/TR/2003/NOTE-mathml-units-20031110</a> ',MATHML2:'Nico Poppelier; et al. <a href="http://www.w3.org/TR/2003/REC-MathML2-20031021"><cite>Mathematical Markup Language (MathML) Version 2.0 (Second Edition).</cite></a> 21 October 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-MathML2-20031021">http://www.w3.org/TR/2003/REC-MathML2-20031021</a> ',MATHML3:'Patrick Ion; David Carlisle; Robert Miner. <a href="http://www.w3.org/TR/2008/WD-MathML3-20081117"><cite>Mathematical Markup Language (MathML) Version 3.0.</cite></a> 17 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-MathML3-20081117">http://www.w3.org/TR/2008/WD-MathML3-20081117</a> ',"MCINTOSH-WRAP":" Michael McIntosh; Paula Austel. <cite>XML signature element wrapping attacks and countermeasures.</cite> In Workshop on Secure Web Services, 2005","MDN-SETCAPTURE":"Shepherd, Eric; et. al. <a href='https://developer.mozilla.org/en/DOM/element.setCapture'><cite>element.setCapture</cite></a> 12 Nov 2010. Mozilla Developer Network. URL: <a href='https://developer.mozilla.org/en/DOM/element.setCapture'>https://developer.mozilla.org/en/DOM/element.setCapture</a>",MDNS:'S. Cheshire; M. Krochmal. <a href="http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt"><cite>Multicast DNS.</cite></a> 14 February 2011. IETF Draft. URL: <a href="http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt">http://files.multicastdns.org/draft-cheshire-dnsext-multicastdns.txt</a>',"MEDIA-ANNOT-REQS":'WonSuk Lee; Felix Sasaki; Tobias B&#252;rger; V&eacute;ronique Malais&eacute;. <a href="http://www.w3.org/TR/2010/WD-media-annot-reqs-20100121/"><cite>Use Cases and Requirements for Ontology and API for Media Object 1.0.</cite></a>W3C Working Draft 21 January 2010. URL: <a href="http://www.w3.org/TR/2010/WD-media-annot-reqs-20100121/">http://www.w3.org/TR/2010/WD-media-annot-reqs-20100121/</a> ',"MEDIA-FRAGMENT":'R. Troncy; E. Mannens; Silvia Pfeiffer and Davy Van Deursen. <a href="http://www.w3.org/TR/2010/WD-media-frags-20100624"><cite>Media Fragments URI 1.0.</cite></a> 18 November 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/WD-media-frags-20100624">http://www.w3.org/TR/2010/WD-media-frags-20100624</a> ',"MEDIA-FRAGMENTS":'Raphael Troncy; Erik Mannens; Silvia Pfeiffer and Davy Van Deursen. <a href="http://www.w3.org/TR/2011/WD-media-frags-20110317/"><cite>Media Fragments URI 1.0</a>. W3C Working Draft 17 March 2011.</cite> URL: <a href="http://www.w3.org/TR/2011/WD-media-frags-20110317/">http://www.w3.org/TR/2011/WD-media-frags-20110317/</a> ',MEDIAACCESSEVENTS:'Ola Andersson; Jean-Claude Dufourd; Roland Lundblad. <a href="http://www.w3.org/TR/2006/WD-MediaAccessEvents-20061013"><cite>Media Access Events.</cite></a> 13 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-MediaAccessEvents-20061013">http://www.w3.org/TR/2006/WD-MediaAccessEvents-20061013</a> ',"MEDIACAPTURE-API":"Dzung D Tran; Ilkka Oksanen; Ingmar Kliche. <a href='http://dev.w3.org/2009/dap/camera/Overview-API.html'><cite>The Media Capture API</cite></a> 3 September 2010. W3C Editors Draft. (Work in progress.) URL: <a href='http://dev.w3.org/2009/dap/camera/Overview-API.html'>http://dev.w3.org/2009/dap/camera/Overview-API.html</a> ","MEDIAONT-API":'WonSuk Lee; Florian Stegmaier; Chris Poppe. <a href="http://www.w3.org/TR/2010/WD-mediaont-api-1.0-20100608"><cite>API for Media Resource 1.0.</cite></a> 8 June 2010. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-mediaont-api-1.0-20100608">http://www.w3.org/TR/2010/WD-mediaont-api-1.0-20100608</a> ',MEDIAQ:'Håkon Wium Lie; et al. <a href="http://www.w3.org/TR/2009/CR-css3-mediaqueries-20090915/"><cite>Media Queries.</cite></a>. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/CR-css3-mediaqueries-20090915/">http://www.w3.org/TR/2009/CR-css3-mediaqueries-20090915/</a> ',"MESSAGING-API":"Suresh Chitturi, Daniel Coloma, Max Froumentin, Maria Angeles Oteo, Niklas Widell. <a href='http://dev.w3.org/2009/dap/messaging/'><cite>The Messaging API.</cite></a> 23 August 2010. W3C Editors' Draft. (Work in progress.) URL: <a href='http://dev.w3.org/2009/dap/messaging/'>http://dev.w3.org/2009/dap/messaging/</a>",MICRODATA:'<cite><a href="http://www.w3.org/TR/2012/WD-microdata-20120329/">HTML Microdata</a></cite> Ian Hickson Editor. W3C Working Draft. (Work in progress). 29 March 2012. This edition of the HTML Microdata specification is http://www.w3.org/TR/2012/WD-microdata-20120329/. The <a href="http://www.w3.org/TR/microdata/">latest edition of HTML Microdata</a> is available at http://www.w3.org/TR/microdata/',"MICRODATA-RDF":'<cite><a href="http://www.w3.org/TR/2012/NOTE-microdata-rdf-20120308/">Microdata to RDF</a></cite> Gregg Kellogg Editor. W3C Note. 08 March 2012. This edition of the HTML Microdata specification is http://www.w3.org/TR/2012/NOTE-microdata-rdf-20120308/. The <a href="http://www.w3.org/TR/microdata-rdf/">latest edition of HTML Microdata</a> is available at http://www.w3.org/TR/microdata-rdf/',MICROFORMATS:"<a href='http://microformats.org'><cite>Microformats</cite></a>. URL: <a href='http://microformats.org'>http://microformats.org</a> ","MIME-REG":'N. Freed, J. Klensin. <a href="http://www.ietf.org/rfc/rfc4289.txt"><cite>RFC 4289: Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures</cite></a>. December 2005. Best Current Practice. URL: <a href="http://www.ietf.org/rfc/rfc4289.txt">http://www.ietf.org/rfc/rfc4289.txt</a>',"MMI-ARCH":'Jim Barnett. <a href="http://www.w3.org/TR/2008/WD-mmi-arch-20081016"><cite>Multimodal Architecture and Interfaces.</cite></a> 16 October 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-mmi-arch-20081016">http://www.w3.org/TR/2008/WD-mmi-arch-20081016</a> ',"MMI-AUTH":'Ingmar Kliche. <a href="http://www.w3.org/TR/2008/NOTE-mmi-auth-20080702"><cite>Authoring Applications for the Multimodal Architecture.</cite></a> 2 July 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-mmi-auth-20080702">http://www.w3.org/TR/2008/NOTE-mmi-auth-20080702</a> ',"MMI-DEV-FEEDBACK":'Gerald McCobb; et al. <a href="http://www.w3.org/TR/2006/NOTE-mmi-dev-feedback-20060414"><cite>Multimodal Application Developer Feedback.</cite></a> 14 April 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-mmi-dev-feedback-20060414">http://www.w3.org/TR/2006/NOTE-mmi-dev-feedback-20060414</a> ',"MMI-FRAMEWORK":'T.V. Raman; James A. Larson; David Raggett. <a href="http://www.w3.org/TR/2003/NOTE-mmi-framework-20030506"><cite>W3C Multimodal Interaction Framework.</cite></a> 6 May 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-mmi-framework-20030506">http://www.w3.org/TR/2003/NOTE-mmi-framework-20030506</a> ',"MMI-REQS":'St&#233;phane H. Maes; Vijay Saraswat. <a href="http://www.w3.org/TR/2003/NOTE-mmi-reqs-20030108"><cite>Multimodal Interaction Requirements.</cite></a> 8 January 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-mmi-reqs-20030108">http://www.w3.org/TR/2003/NOTE-mmi-reqs-20030108</a> ',"MMI-SUGGESTIONS":'Jim Larson. <a href="http://www.w3.org/TR/2006/NOTE-mmi-suggestions-20060911"><cite>Common Sense Suggestions for Developing Multimodal User Interfaces.</cite></a> 11 September 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-mmi-suggestions-20060911">http://www.w3.org/TR/2006/NOTE-mmi-suggestions-20060911</a> ',"MMI-USE-CASES":'David Raggett; Emily Candell. <a href="http://www.w3.org/TR/2002/NOTE-mmi-use-cases-20021204"><cite>Multimodal Interaction Use Cases.</cite></a> 4 December 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-mmi-use-cases-20021204">http://www.w3.org/TR/2002/NOTE-mmi-use-cases-20021204</a> ',"MOBILE-BP":'Charles McCathieNevile; Jo Rabin. <a href="http://www.w3.org/TR/2008/REC-mobile-bp-20080729"><cite>Mobile Web Best Practices 1.0.</cite></a> 29 July 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-mobile-bp-20080729">http://www.w3.org/TR/2008/REC-mobile-bp-20080729</a> ',"MOBILE-BP-SCOPE":'Phil Archer; Ed Mitukiewicz. <a href="http://www.w3.org/TR/2005/NOTE-mobile-bp-scope-20051220"><cite>Scope of Mobile Web Best Practices.</cite></a> 20 December 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-mobile-bp-scope-20051220">http://www.w3.org/TR/2005/NOTE-mobile-bp-scope-20051220</a> ',MOBILEOK:'Jo Rabin; Phil Archer. <a href="http://www.w3.org/TR/2008/WD-mobileOK-20081117"><cite>W3C mobileOK Scheme 1.0.</cite></a> 17 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-mobileOK-20081117">http://www.w3.org/TR/2008/WD-mobileOK-20081117</a> ',"MOBILEOK-BASIC10-TESTS":'Jo Rabin; Sean Owen. <a href="http://www.w3.org/TR/2008/REC-mobileOK-basic10-tests-20081208"><cite>W3C mobileOK Basic Tests 1.0.</cite></a> 8 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-mobileOK-basic10-tests-20081208">http://www.w3.org/TR/2008/REC-mobileOK-basic10-tests-20081208</a> ',"MODALITY-INTERFACE":'Brad Porter. <a href="http://www.w3.org/TR/2004/NOTE-modality-interface-20040510"><cite>Modality Component to Host Environment DOM Requirements and Capabilities Assessment.</cite></a> 10 May 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-modality-interface-20040510">http://www.w3.org/TR/2004/NOTE-modality-interface-20040510</a> ',"MOZ-ICONS":"Martin, J. Raskin, A. Gelman, L. Rood, D. Surman, M. Hadfield, G. Greant, Z. <a href = 'https://wiki.mozilla.org/Drumbeat/Challenges/Privacy_Icons'<cite>Privacy Icons</cite></a> 6 March 2010. Mozilla Wiki. URL: https://wiki.mozilla.org/Drumbeat/Challenges/Privacy_Icons ",MRCPv2:"Burnett, D. Shanmugham, S. <a href = 'http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-27'><cite>Media Resource Control Protocol Version 2</cite></a> 15 November 2011. URL: <a href=\"http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-27\">http://tools.ietf.org/html/draft-ietf-speechsc-mrcpv2-27</a>","MULTIMODAL-REQS":'Marianne Hickey. <a href="http://www.w3.org/TR/2000/WD-multimodal-reqs-20000710"><cite>Multimodal Requirements for Voice Markup Languages.</cite></a> 10 July 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-multimodal-reqs-20000710">http://www.w3.org/TR/2000/WD-multimodal-reqs-20000710</a> ',MWABP:'Adam Connors; Bryan Sullivan. <a href="http://www.w3.org/TR/2010/REC-mwabp-20101214/">Mobile Web Application Best Practices.</cite></a> 14 December 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-mwabp-20101214/">http://www.w3.org/TR/2010/REC-mwabp-20101214/</a> ',"MWBP-WCAG":'Yeliz Yesilada; Alan Chuter. <a href="http://www.w3.org/TR/2008/WD-mwbp-wcag-20080703"><cite>Relationship between Mobile Web Best Practices (MWBP) and Web Content Accessibility Guidelines (WCAG).</cite></a> 3 July 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-mwbp-wcag-20080703">http://www.w3.org/TR/2008/WD-mwbp-wcag-20080703</a> ',NAMES:'Lilley, Chris. <a href="http://lists.w3.org/Archives/Member/w3c-ui-tech/2001Mar/0002.html"><cite>Restrictions on identifiers.</cite></a> (forthcoming). W3C Note. URL: <a href="http://lists.w3.org/Archives/Member/w3c-ui-tech/2001Mar/0002.html">http://lists.w3.org/Archives/Member/w3c-ui-tech/2001Mar/0002.html</a> ',NAMESPACESTATE:'Norman Walsh. <a href="http://www.w3.org/TR/2006/WD-namespaceState-20060329"><cite>The Disposition of Names in an XML Namespace.</cite></a> 29 March 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-namespaceState-20060329">http://www.w3.org/TR/2006/WD-namespaceState-20060329</a> ',"NAMED-GRAPHS":"Jeremy J. Carroll; Chris Bizer; Pat Hayes; Patrick Stickler. <a href=\"http://sites.wiwiss.fu-berlin.de/suhl/bizer/SWTSGuide/carroll-ISWC2004.pdf\"><cite>Named Graphs, Provenance and Trust</cite></a>. The Semantic Web — ISWC2004, Yokohama, Springer–Verlag, 2005. URL: <a href='http://sites.wiwiss.fu-berlin.de/suhl/bizer/SWTSGuide/carroll-ISWC2004.pdf'>http://sites.wiwiss.fu-berlin.de/suhl/bizer/SWTSGuide/carroll-ISWC2004.pdf</a>.",NAVIGATOR:"Ian Hickson, David Hyatt. <a href='http://dev.w3.org/html5/spec/timers.html#navigator'><cite>Navigator interface in HTML5.</cite></a> 15 April 2011. Editors' draft. (Work in progress.) URL: <a href='http://dev.w3.org/html5/spec/timers.html#navigator'>http://dev.w3.org/html5/spec/timers.html#navigator</a> ",NFC:'M. Davis, Ken Whistler. <a href="http://www.unicode.org/reports/tr15/"><cite>TR15, Unicode Normalization Forms.</cite></a>. 17 September 2010, URL: <a href="http://www.unicode.org/reports/tr15/">http://www.unicode.org/reports/tr15/</a>',"NGRAM-SPEC":'David Raggett; Michael K. Brown; Andreas Kellner. <a href="http://www.w3.org/TR/2001/WD-ngram-spec-20010103"><cite>Stochastic Language Models (N-Gram) Specification.</cite></a> 3 January 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-ngram-spec-20010103">http://www.w3.org/TR/2001/WD-ngram-spec-20010103</a> ',"NL-SPEC":'Deborah A. Dahl. <a href="http://www.w3.org/TR/2000/WD-nl-spec-20001120"><cite>Natural Language Semantics Markup Language for the Speech Interface Framework.</cite></a> 20 November 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-nl-spec-20001120">http://www.w3.org/TR/2000/WD-nl-spec-20001120</a> ',"NOTE-CCPP":'Franklin Reynolds; et al. <a href="http://www.w3.org/1999/07/NOTE-CCPP-19990727"><cite>Composite Capability/Preference Profiles (CC/PP): A user side framework for content negotiation.</cite></a> 27 July 1999. W3C Note. URL: <a href="http://www.w3.org/1999/07/NOTE-CCPP-19990727">http://www.w3.org/1999/07/NOTE-CCPP-19990727</a> ',N3:'Tim Berners-Lee; Dan Connolly. <a href="http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/"><cite>Notation3 (N3): A readable RDF syntax.</cite></a> 14 January 2008. W3C Team Submission. URL: <a href="http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/">http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/</a> ',NTP:'D. Mills. <a href="http://www.ietf.org/rfc/rfc1305.txt"><cite>Network Time Protocol (Version 3)</cite></a>. March 1992. IETF RFC 1305. URL: <a href="http://www.ietf.org/rfc/rfc1305.txt">http://www.ietf.org/rfc/rfc1305.txt</a>',"OAEP-ATTACK":'Manger, James. <a href="http://archiv.infsec.ethz.ch/education/fs08/secsem/Manger01.pdf"><cite> A Chosen Ciphertext Attack on RSA Optimal Asymmetric Encryption Padding (OAEP) as Standardized in PKCS #1 v2.0</cite></a>. URL: <a href="http://archiv.infsec.ethz.ch/education/fs08/secsem/Manger01.pdf">http://archiv.infsec.ethz.ch/education/fs08/secsem/Manger01.pdf</a>',"OASIS-TAG":'Stephen D. Green, Dmitry Kostovarov. <a href="http://docs.oasis-open.org/tag/guidelines/v1.0/testassertionsguidelines.html"><cite>Test Assertions Guidelines</cite></a>. OASIS Committee Draft (Work in progress) .URL: <a href="http://docs.oasis-open.org/tag/guidelines/v1.0/testassertionsguidelines.html">http://docs.oasis-open.org/tag/guidelines/v1.0/testassertionsguidelines.html</a>',OGP:'<a href="http://ogp.me"> <cite>The Open Graph Protocol</cite></a>.  December 2010. URL: <a href="http://ogp.me">http://ogp.me</a>',OCSP:'M. Myers, R. Ankney, A. Malpani, S. Galperin. <a href="http://www.ietf.org/rfc/rfc2560.txt"><cite>X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP</cite></a>. June 1999. IETF RFC 2560. URL: <a href="http://www.ietf.org/rfc/rfc2560.txt">http://www.ietf.org/rfc/rfc2560.txt</a>',ODRL11:'Renato Iannella. <a href="http://www.w3.org/TR/odrl"><cite>Open Digital Rights Language (ODRL) Version 1.1.</cite></a> W3C Note. 19 September 2002. URL: <a href="http://www.w3.org/TR/odrl">http://www.w3.org/TR/odrl</a> ',OEB101:'<a href="http://www.openebook.org/oebps/oebps1.0.1/download/oeb101-xhtml.htm"><cite>Open eBook(tm) Publication Structure 1.0.1.</cite></a> Open eBook Forum(tm). 02 July 2001. URL: <a href="http://www.openebook.org/oebps/oebps1.0.1/download/oeb101-xhtml.htm">http://www.openebook.org/oebps/oebps1.0.1/download/oeb101-xhtml.htm</a> ',"OFFLINE-WEBAPPS":'Ian Hickson; Anne van Kesteren. <a href="http://www.w3.org/TR/2008/NOTE-offline-webapps-20080530"><cite>Offline Web Applications.</cite></a> 30 May 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-offline-webapps-20080530">http://www.w3.org/TR/2008/NOTE-offline-webapps-20080530</a> ',"OIPF-DAE-2":"Open IPTV Forum. Release 2 volume 5 (v2.1). URL:<a href='http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf'>http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-5-Declarative-Application-Environment-v2_1-2011-06-21.pdf</a>","OIPF-SERV-2":"Open IPTV Forum. Services and Functions for Release 2 - v1.0”. URL:<a href='http://www.oipf.tv/docs/OIPF-T1-R2-Services_and_Functions-V1_0-2008-10-20.pdf'>http://www.oipf.tv/docs/OIPF-T1-R2-Services_and_Functions-V1_0-2008-10-20.pdf</a>","OIPF-REQS-2":"Open IPTV Forum. Open IPTV Forum Service and Platform Requirements v2.0”. URL:<a href='http://www.oipf.tv/docs/OIPF-T1-R2-Service-and-Platform-RequirementsV2_0-2008-12-12.pdf'>http://www.oipf.tv/docs/OIPF-T1-R2-Service-and-Platform-RequirementsV2_0-2008-12-12.pdf</a>","OIPF-ARCH-2":"Open IPTV Forum. Functional Architecture - V2.1”. URL:<a href='http://www.oipf.tv/docs/OIPF-T1-R2-Functional_Architecture-v2_1-2011-03-15.pdf'>http://www.oipf.tv/docs/OIPF-T1-R2-Functional_Architecture-v2_1-2011-03-15.pdf</a>","OIPF-PROT-2":"Open IPTV Forum. Release 2 volume 4 (v2.1). URL:<a href='http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-4-Protocols-v2_1-2011-06-21.pdf'>http://www.oipf.tv/docs/Release2/V2.1/OIPF-T1-R2-Specification-Volume-4-Protocols-v2_1-2011-06-21.pdf</a>","OMA-CAB":"Converged Address Book Enabler, Version 1.0, Open Mobile Alliance, URL: http://www.openmobilealliance.org/","OMA-DM":'<a href="http://www.openmobilealliance.org/Technical/release_program/dm_v1_2.aspx"><cite>OMA Device Management V1.2 </cite></a> 17 June 2008. URL: <a href="http://www.openmobilealliance.org/Technical/release_program/dm_v1_2.aspx">http://www.openmobilealliance.org/Technical/release_program/dm_v1_2.aspx</a> ',"OMA-URI-SCHEMES":'<a href="http://www.openmobilealliance.org/Technical/release_program/docs/URI_Schemes/V1_0-20080626-A/OMA-TS-URI_Schemes-V1_0-20080626-A.pdf"><cite>URI Schemes for the Mobile Applications Environment. Approved Version 1.0</cite></a> 26 Jun 2008. URL: <a href="http://www.openmobilealliance.org/Technical/release_program/docs/URI_Schemes/V1_0-20080626-A/OMA-TS-URI_Schemes-V1_0-20080626-A.pdf">http://www.openmobilealliance.org/Technical/release_program/docs/URI_Schemes/V1_0-20080626-A/OMA-TS-URI_Schemes-V1_0-20080626-A.pdf</a> ',"OMA-PUSH":'Open Mobile Alliance. OMA Push Version 2.3. URL: <a href="http://www.openmobilealliance.org/Technical/release_program/push_v2_3.aspx">http://www.openmobilealliance.org/Technical/release_program/push_v2_3.aspx</a> ',ORIGIN:"<a href='http://tools.ietf.org/html/rfc6454'>The Web Origin Concept</a>, A. Barth. IETF.","OWL-FEATURES":'Deborah L. McGuinness; Frank van Harmelen. <a href="http://www.w3.org/TR/2004/REC-owl-features-20040210"><cite>OWL Web Ontology Language Overview.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-owl-features-20040210">http://www.w3.org/TR/2004/REC-owl-features-20040210</a> ',"OWL-GUIDE":'Deborah L. McGuinness; Michael K. Smith; Chris Welty. <a href="http://www.w3.org/TR/2004/REC-owl-guide-20040210"><cite>OWL Web Ontology Language Guide.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-owl-guide-20040210">http://www.w3.org/TR/2004/REC-owl-guide-20040210</a> ',"OWL-PARSING":'Sean Bechhofer. <a href="http://www.w3.org/TR/2004/NOTE-owl-parsing-20040121"><cite>OWL Web Ontology Language Parsing OWL in RDF/XML.</cite></a> 21 January 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-owl-parsing-20040121">http://www.w3.org/TR/2004/NOTE-owl-parsing-20040121</a> ',"OWL-REF":'Guus Schreiber; Mike Dean. <a href="http://www.w3.org/TR/2004/REC-owl-ref-20040210"><cite>OWL Web Ontology Language Reference.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-owl-ref-20040210">http://www.w3.org/TR/2004/REC-owl-ref-20040210</a> ',"OWL-SEMANTICS":'Patrick Hayes; Peter F. Patel-Schneider; Ian Horrocks. <a href="http://www.w3.org/TR/2004/REC-owl-semantics-20040210"><cite>OWL Web Ontology Language Semantics and Abstract Syntax.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-owl-semantics-20040210">http://www.w3.org/TR/2004/REC-owl-semantics-20040210</a> ',"OWL-TEST":'Jeremy J. Carroll; Jos De Roo. <a href="http://www.w3.org/TR/2004/REC-owl-test-20040210"><cite>OWL Web Ontology Language Test Cases.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-owl-test-20040210">http://www.w3.org/TR/2004/REC-owl-test-20040210</a> ',"OWL-TIME":'Feng Pan; Jerry R. Hobbs. <a href="http://www.w3.org/TR/2006/WD-owl-time-20060927"><cite>Time Ontology in OWL.</cite></a> 27 September 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-owl-time-20060927">http://www.w3.org/TR/2006/WD-owl-time-20060927</a> ',"OWL-XMLSYNTAX":'Masahiro Hori; Peter F. Patel-Schneider; J&#233;r&#244;me Euzenat. <a href="http://www.w3.org/TR/2003/NOTE-owl-xmlsyntax-20030611"><cite>OWL Web Ontology Language XML Presentation Syntax.</cite></a> 11 June 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-owl-xmlsyntax-20030611">http://www.w3.org/TR/2003/NOTE-owl-xmlsyntax-20030611</a> ',"OWL2-MANCHESTER-SYNTAX":'Peter F. Patel-Schneider; Matthew Horridge. <a href="http://www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/"><cite>OWL 2 Web Ontology Language:Manchester Syntax.</cite></a> 27 October 2009. W3C Note. URL: <a href="http://www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/">http://www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/</a> ',"OWL2-MAPPING-TO-RDF":'Boris Motik; Peter F. Patel-Schneider. <a href="http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/"><cite>OWL 2 Web Ontology Language:Mapping to RDF Graphs.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/">http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/</a> ',"OWL2-NEW-FEATURES":'Evan K. Wallace; Christine Golbreich. <a href="http://www.w3.org/TR/2009/REC-owl2-new-features-20091027"><cite>OWL 2 Web Ontology Language:New Features and Rationale.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-new-features-20091027">http://www.w3.org/TR/2009/REC-owl2-new-features-20091027</a> ',"OWL2-PRIMER":'Pascal Hitzler; Markus Kr&#246;tzsch; Bijan Parsia; Peter F. Patel-Schneider; Sebastian Rudolph. <a href="http://www.w3.org/TR/2009/REC-owl2-primer-20091027/"><cite>OWL 2 Web Ontology Language:Primer.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-primer-20091027/">http://www.w3.org/TR/2009/REC-owl2-primer-20091027/</a> ',"OWL2-PROFILES":'Boris Motik; Bernardo Cuenca Grau; Ian Horrocks; Zhe Wu; Achille Fokoue; Carsten Lutz. <a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/"><cite>OWL 2 Web Ontology Language:Profiles.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/">http://www.w3.org/TR/2009/REC-owl2-profiles-20091027/</a> ',"OWL2-QUICK-REFERENCE":'Jie Bao; Elisa F. Kendall; Deborah L. McGuinness, Peter F. Patel-Schneider. <a href="http://www.w3.org/TR/2009/REC-owl2-quick-reference-20091027/"><cite>OWL 2 Web Ontology Language:Quick Reference Guide.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-quick-reference-20091027/">http://www.w3.org/TR/2009/REC-owl2-quick-reference-20091027/</a> ',"OWL2-RDF-BASED-SEMANTICS":'Michael Schneider. <a href="http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/"><cite>OWL 2 Web Ontology Language:RDF-Based Semantics.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/">http://www.w3.org/TR/2009/REC-owl2-rdf-based-semantics-20091027/</a> ',"OWL-RL-in-RIF":'Dave Reynolds. <a href="http://www.w3.org/TR/2010/NOTE-rif-owl-rl-20100622/"><cite>OWL 2 RL in RIF.</cite></a> 22 June 2010. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2010/NOTE-rif-owl-rl-20100622/">http://www.w3.org/TR/2010/NOTE-rif-owl-rl-20100622/</a> ',"OWL2-DIRECT-SEMANTICS":'Boris Motik; Peter F. Patel-Schneider; Bernardo Cuenca Grau. <a href="http://www.w3.org/TR/2009/REC-owl2-direct-semantics-20091027/"><cite>OWL 2 Web Ontology Language:Direct Semantics.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-direct-semantics-20091027/">http://www.w3.org/TR/2009/REC-owl2-direct-semantics-20091027/</a> ',"OWL2-SYNTAX":'Boris Motik; Peter F. Patel-Schneider; Bijan Parsia. <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/"><cite>OWL 2 Web Ontology Language:Structural Specification and Functional-Style Syntax.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/">http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/</a> ',"OWL2-CONFORMANCE":'Michael Smith; Ian Horrocks; Markus Krötzsch; Birte Glimm. <a href="http://www.w3.org/TR/2009/REC-owl2-conformance-20091027/"><cite>OWL 2 Web Ontology Language:Conformance.</cite></a> 27 October 2009. W3C Recommendation.  URL: <a href="http://www.w3.org/TR/2009/REC-owl2-conformance-20091027/">http://www.w3.org/TR/2009/REC-owl2-conformance-20091027/</a> ',"OWL2-XML-SERIALIZATION":'Boris Motik; Bijan Parsia; Peter Patel-Schneider; . <a href="http://www.w3.org/TR/2009/REC-owl2-xml-serialization-20091027/"><cite>OWL 2 Web Ontology Language: XML Serialization.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-xml-serialization-20091027/">http://www.w3.org/TR/2009/REC-owl2-xml-serialization-20091027/</a> ',"OWL2-OVERVIEW":'W3C OWL Working Group. <a href="http://www.w3.org/TR/2009/REC-owl2-overview-20091027/"><cite>OWL 2 Web Ontology Language: Overview.</cite></a> 27 October 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-owl2-overview-20091027/">http://www.w3.org/TR/2009/REC-owl2-overview-20091027/</a> ',"P3P-PREFERENCES":'Marc Langheinrich. <a href="http://www.w3.org/TR/2002/WD-P3P-preferences-20020415"><cite>A P3P Preference Exchange Language 1.0 (APPEL1.0).</cite></a> 15 April 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-P3P-preferences-20020415">http://www.w3.org/TR/2002/WD-P3P-preferences-20020415</a> ',"P3P-RDFSCHEMA":'Rigo Wenning; Lorrie Cranor; Brian McBride. <a href="http://www.w3.org/TR/2002/NOTE-p3p-rdfschema-20020125"><cite>An RDF Schema for P3P.</cite></a> 25 January 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-p3p-rdfschema-20020125">http://www.w3.org/TR/2002/NOTE-p3p-rdfschema-20020125</a> ',"P3P1.0":'Massimo Marchiori. <a href="http://www.w3.org/TR/2002/REC-P3P-20020416"><cite>The Platform for Privacy Preferences 1.0 (P3P1.0) Specification.</cite></a> 16 April 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-P3P-20020416">http://www.w3.org/TR/2002/REC-P3P-20020416</a> ',"P3P10-PRINCIPLES":'Lorrie Faith Cranor. <a href="http://www.w3.org/TR/1998/NOTE-P3P10-principles-19980721"><cite>P3P Guiding Principles.</cite></a> 21 July 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-P3P10-principles-19980721">http://www.w3.org/TR/1998/NOTE-P3P10-principles-19980721</a> ',"P3P10-PROTOCOLS":'Joseph Reagle; Philip DesAutels; Steve Lucas. <a href="http://www.w3.org/TR/1998/NOTE-P3P10-Protocols-19980324"><cite>P3P Protocol and Data Transport Working Group Draft White Paper.</cite></a> 24 March 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-P3P10-Protocols-19980324">http://www.w3.org/TR/1998/NOTE-P3P10-Protocols-19980324</a> ',P3P11:'Matthias Schunter; Rigo Wenning. <a href="http://www.w3.org/TR/2006/NOTE-P3P11-20061113"><cite>The Platform for Privacy Preferences 1.1 (P3P1.1) Specification.</cite></a> 13 November 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-P3P11-20061113">http://www.w3.org/TR/2006/NOTE-P3P11-20061113</a> ',P3PDEPLOYMENT:'Martin Presler-Marshall. <a href="http://www.w3.org/TR/2002/NOTE-p3pdeployment-20020211"><cite>The Platform for Privacy Preferences 1.0 Deployment Guide.</cite></a> 11 February 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-p3pdeployment-20020211">http://www.w3.org/TR/2002/NOTE-p3pdeployment-20020211</a> ',"PAGE-VISIBILITY":'J. Mann; A. Jain. <a href="http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html"><cite>Page Visibility</cite></a>. 26 September 2011. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html">http://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PageVisibility/Overview.html</a> ',PGP:'J. Callas, L. Donnerhacke, H. Finney, D. Shaw, R. Thayer. <a href="http://www.ietf.org/rfc/rfc4880.txt"><cite>OpenPGP Message Format</cite></a>. IETF RFC 4880. November 2007. URL: <a href="http://www.ietf.org/rfc/rfc4880.txt">http://www.ietf.org/rfc/rfc4880.txt</a>',"PICS-LABELS":'Win Treese; et al. <a href="http://www.w3.org/TR/REC-PICS-labels-961031"><cite>PICS 1.1 Label Distribution -- Label Syntax and Communication Protocols.</cite></a> 31 October 1996. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-PICS-labels-961031">http://www.w3.org/TR/REC-PICS-labels-961031</a> ',"PICS-SERVICES":'David Singer; Paul Resnick; Jim Miller. <a href="http://www.w3.org/TR/REC-PICS-services-961031"><cite>PICS 1.1 Rating Services and Rating Systems -- and Their Machine Readable Descriptions.</cite></a> 31 October 1996. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-PICS-services-961031">http://www.w3.org/TR/REC-PICS-services-961031</a> ',PICSRULES:'Clive D.W. Feather; et al. <a href="http://www.w3.org/TR/REC-PICSRules-971229"><cite>PICSRules 1.1 Specification.</cite></a> 29 December 1997. W3C Recommendation. URL: <a href="http://www.w3.org/TR/REC-PICSRules-971229">http://www.w3.org/TR/REC-PICSRules-971229</a> ',PKCS1:'J. Jonsson and B. Kaliski. <a href="http://www.ietf.org/rfc/rfc3447.txt"><cite>Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications  Version 2.1.</cite></a> RFC 3447 (Informational), February  2003. URL: <a href="http://www.ietf.org/rfc/rfc3447.txt">http://www.ietf.org/rfc/rfc3447.txt</a> ',PKCS5:'B. Kaliski. <a href="http://www.ietf.org/rfc/rfc2898.txt"><cite>PKCS #5 v2.0: Password-Based Cryptography Standard</cite></a> IETF RFC 2898. September 2000. URL: <a href="http://www.ietf.org/rfc/rfc2898.txt">http://www.ietf.org/rfc/rfc2898.txt</a>',PKCS5Amd1:'<a href="ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs-5v2-0a1.pdf"><cite>PKCS #5 v2.0 Amendment 1: XML Schema for Password-Based Cryptography</cite></a> RSA Laboratories, March 2007. URL: <a href="ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs-5v2-0a1.pdf">ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-5v2/pkcs-5v2-0a1.pdf</a>',"PLING-WIKI":'Policy Languages Interest Group (PLING). <a href="http://www.w3.org/Policy/pling/"><cite>PLING Wiki.</cite></a> URL: <a href="http://www.w3.org/Policy/pling/">http://www.w3.org/Policy/pling/</a> ',PNG2e:'David Duce. <a href="http://www.w3.org/TR/2003/REC-PNG-20031110"><cite>Portable Network Graphics (PNG) Specification (Second Edition).</cite></a> 10 November 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-PNG-20031110">http://www.w3.org/TR/2003/REC-PNG-20031110</a> ',"POCO-SCHEMA":'Joseph Smarr. <a href="http://portablecontacts.net/draft-spec.html#schema"><cite>Portable Contacts 1.0 Draft C: Contact Schema</cite></a> 5 August 2008. URL: <a href="http://portablecontacts.net/draft-spec.html#schema">http://portablecontacts.net/draft-spec.html#schema</a> ',"POINTERS-IN-RDF":'Mike Squillace; Carlos Iglesias. <a href="http://www.w3.org/TR/2009/WD-Pointers-in-RDF-20090310"><cite>Pointer Methods in RDF.</cite></a> 10 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-Pointers-in-RDF-20090310">http://www.w3.org/TR/2009/WD-Pointers-in-RDF-20090310</a> ',"POLICY-REQS":'Laura Arribas; Paddy Byers; Marcin Hanclik; Frederick Hirsch; David Rogers. <a href="http://dev.w3.org/2009/dap/policy-reqs"><cite>Device API Policy Requirements.</cite></a> 13 April 2010. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dev.w3.org/2009/dap/policy-reqs/">http://dev.w3.org/2009/dap/policy-reqs/</a> ',POSITIONING:'Robert Stevahn; Scott Furman; Scott Isaacs. <a href="http://www.w3.org/TR/1999/WD-positioning-19990902"><cite>Positioning HTML Elements with Cascading Style Sheets.</cite></a> 2 September 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-positioning-19990902">http://www.w3.org/TR/1999/WD-positioning-19990902</a> ',POSTMSG:"Ian Hickson. <a href='http://dev.w3.org/html5/postmsg'><cite>HTML5 Web Messaging.</cite></a> URL: <a href='http://dev.w3.org/html5/postmsg'>http://dev.w3.org/html5/postmsg</a>","POWDER-DR":'Kevin Smith; Phil Archer; Andrea Perego. <a href="http://www.w3.org/TR/2008/WD-powder-dr-20081114"><cite>Protocol for Web Description Resources (POWDER): Description Resources.</cite></a> 14 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-powder-dr-20081114">http://www.w3.org/TR/2008/WD-powder-dr-20081114</a> ',"POWDER-FORMAL":'Phil Archer; Stasinos Konstantopoulos. <a href="http://www.w3.org/TR/2008/WD-powder-formal-20081114"><cite>Protocol for Web Description Resources (POWDER): Formal Semantics.</cite></a> 14 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-powder-formal-20081114">http://www.w3.org/TR/2008/WD-powder-formal-20081114</a> ',"POWDER-GROUPING":'Andrea Perego; Kevin Smith; Phil Archer. <a href="http://www.w3.org/TR/2008/WD-powder-grouping-20081114"><cite>Protocol for Web Description Resources (POWDER): Grouping of Resources.</cite></a> 14 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-powder-grouping-20081114">http://www.w3.org/TR/2008/WD-powder-grouping-20081114</a> ',"POWDER-PRIMER":'Kai Scheppe. <a href="http://www.w3.org/TR/2008/WD-powder-primer-20081114"><cite>Protocol for Web Description Resources (POWDER): Primer.</cite></a> 14 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-powder-primer-20081114">http://www.w3.org/TR/2008/WD-powder-primer-20081114</a> ',"POWDER-TEST":'Antonis Kukurikos. <a href="http://www.w3.org/TR/2008/WD-powder-test-20080815"><cite>Protocol for Web Description Resources (POWDER): Test Suite.</cite></a> 15 August 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-powder-test-20080815">http://www.w3.org/TR/2008/WD-powder-test-20080815</a> ',"POWDER-USE-CASES":'Phil Archer. <a href="http://www.w3.org/TR/2007/NOTE-powder-use-cases-20071031"><cite>POWDER: Use Cases and Requirements.</cite></a> 31 October 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-powder-use-cases-20071031">http://www.w3.org/TR/2007/NOTE-powder-use-cases-20071031</a> ',"POWDER-VOC":'Andrea Perego; Phil Archer. <a href="http://www.w3.org/TR/2007/WD-powder-voc-20070925"><cite>Protocol for Web Description Resources (POWDER): Web Description Resources (WDR) Vocabulary.</cite></a> 25 September 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-powder-voc-20070925">http://www.w3.org/TR/2007/WD-powder-voc-20070925</a> ',"POWDER-XSD":'Kevin Smith; Andrea Perego; Phil Archer. <a href="http://www.w3.org/TR/2007/WD-powder-xsd-20070925"><cite>Protocol for Web Description Resources (POWDER): Web Description Resources Datatypes (WDRD).</cite></a> 25 September 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-powder-xsd-20070925">http://www.w3.org/TR/2007/WD-powder-xsd-20070925</a> ',PRINT:'H&#229;kon Wium Lie; Robert Stevahn; Stephen Waters. <a href="http://www.w3.org/TR/1999/WD-print-19990902"><cite>CSS Printing Extensions.</cite></a> 2 September 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-print-19990902">http://www.w3.org/TR/1999/WD-print-19990902</a> ',"PRIV-ICONS":"Raskin, A. <a href ='http://www.azarask.in/blog/post/what-should-matter-in-privacy'><cite>The 7 Things that Mater Most in Privacy</cite></a> 31 March 2010. URL: http://www.azarask.in/blog/post/what-should-matter-in-privacy ","PRIV-ICONSET":"Mehldau, M. <a href = 'http://asset.netzpolitik.org/wp-upload/data-privacy-icons-v01.pdf'><cite>Iconset for Data-Privacy Declarations v0.1</cite></a> URL: http://www.netzpolitik.org/wp-upload/data-privacy-icons-v01.pdf ","PRIV-LABEL":"Kelley, P. Bresse, J. Cranor, L. Reeder, R. <a href ='http://cups.cs.cmu.edu/soups/2009/proceedings/a4-kelley.pdf'><cite>A 'Nutrition Label' for Privacy</cite></a> 10 November 2009. Carnegie Mellon University. URL: http://cups.cs.cmu.edu/soups/2009/proceedings/a4-kelley.pdf ","PRIVACY-BY-DESIGN":"Ann Cavoukian, PhD. <a href='http://www.ipc.on.ca/images/Resources/7foundationalprinciples.pdf'><cite>Privacy By Design: The 7 Foundational Principles</cite></a>. August 2009, revised January 2011. URL: <a href='http://www.ipc.on.ca/images/Resources/7foundationalprinciples.pdf'>http://www.ipc.on.ca/images/Resources/7foundationalprinciples.pdf</a>","PRIVACY-ISSUES-GEO":"Doty, N. Mulligan, D. Wilde, E. <a href='http://escholarship.org/uc/item/0rp834wf'><cite>Privacy Issues of the W3C Geolocation API</cite></a>. UC Berkeley School of Information. 24 February 2010. URL: http://escholarship.org/uc/item/0rp834wf ","PRIVACY-TERMINOLOGY":'A. Pfitzmann, M. Hansen, H Tschofenig. <a href="http://tools.ietf.org/id/draft-hansen-privacy-terminology-00.html"><cite>Terminology for Talking about Privacy by Data Minimization: Anonymity, Unlinkability, Undetectability, Unobservability, Pseudonymity, and Identity Management</cite></a> IETF Internet Draft. URL: <a hre"http://tools.ietf.org/id/draft-hansen-privacy-terminology-00.html">http://tools.ietf.org/id/draft-hansen-privacy-terminology-00.html</a>',"PROC-MODEL-REQ":'Dmitry Lenkov; Norman Walsh. <a href="http://www.w3.org/TR/2004/NOTE-proc-model-req-20040405"><cite>XML Processing Model Requirements.</cite></a> 5 April 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-proc-model-req-20040405">http://www.w3.org/TR/2004/NOTE-proc-model-req-20040405</a> ',"PROGRESS-EVENTS":'Charles McCathieNevile. <a href="http://www.w3.org/TR/2011/CR-progress-events-20110922/"><cite>Progress Events 1.0.</cite></a> 22 September 2011. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/CR-progress-events-20110922/">http://www.w3.org/TR/2011/CR-progress-events-20110922/</a> ',"PROV-RDF-S":"Panagiotis Pediaditis; Giorgos Flouris; Irini Fundulaki; Vassilis Christophides. <a href=\"http://www.usenix.org/events/tapp09/tech/full_papers/pediaditis/pediaditis_html/\"><cite>On Explicit Provenance Management in RDF/S Graphs</cite></a> 2009. First Workshop on the Theory and Practice of Provenance (TaPP'09), ed. James Cheney. San Francisco, CA. URL: <a href='http://www.usenix.org/events/tapp09/tech/full_papers/pediaditis/pediaditis_html/'>http://www.usenix.org/events/tapp09/tech/full_papers/pediaditis/pediaditis_html/</a> ","PROV-QUERY":"Renata Dividino; Sergey Sizov; Steffen Staab; Bernhard Schueler. <a href=\"http://linkinghub.elsevier.com/retrieve/pii/S1570826809000237\"><cite>Querying for provenance, trust, uncertainty and other meta knowledge in RDF</cite></a>. 2009. Web Semantics: Science, Services and Agents on the World Wide Web, vol. 7, 2009, p. 204-219. URL: <a href='http://linkinghub.elsevier.com/retrieve/pii/S1570826809000237'>http://linkinghub.elsevier.com/retrieve/pii/S1570826809000237</a> ","PRONUNCIATION-LEXICON":'Paolo Baggia. <a href="http://www.w3.org/TR/2008/REC-pronunciation-lexicon-20081014"><cite>Pronunciation Lexicon Specification (PLS) Version 1.0.</cite></a> 14 October 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-pronunciation-lexicon-20081014">http://www.w3.org/TR/2008/REC-pronunciation-lexicon-20081014</a> ',"PTECH-DECL":'C. Concolato; J. Le Feuvre; J. C. Dufourd. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917"><cite>Declarative Interfaces for Dynamic Widgets Communications</cite></a>. September 2009. Document Engineering, Munich, Germany, September 2009, pp. 241-244. PDF Document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9917</a>',"PTECH-MIGRATE":'C. Concolato; J. C. Dufourd; J. Le Feuvre; K. Parkl J. Song. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187"><cite>Communicating and migratable interactive multimedia documents</cite></a>. May 2011. Multimedia Tools and Applications. PDF document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=11187</a>',"PTECH-SCW":'J. C. Dufourd; C. Concolato; J. Le Feuvre. <a href="http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/"><cite>SVG Communicating Widgets</cite></a>. October 2009. SVG Open, Mountain View, CA, USA. URL: <a href="http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/">http://www.svgopen.org/2009/papers/28-SVG_Communicating_Widgets/</a>',"PTECH-WM":'J. Le Feuvre; C. Concolato; J. C. Dufourd. <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919"><cite>Widgets Mobility</cite></a>. September 2009. International Conference on Mobile Technology, Applications and Systems, Nice, France. PDF document. URL: <a href="http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919">http://biblio.telecom-paristech.fr/cgi-bin/download.cgi?id=9919</a>',PWGMSN:'Ron Bergman; Tom Hastings. <a href="ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf"><cite>Media Standardized Names.</cite></a> 26 February 2002. IEEE ISTO Printer Working Group 5101.1-2002. URL: <a href="ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf">ftp://ftp.pwg.org/pub/pwg/candidates/cs-pwgmsn10-20020226-5101.1.pdf</a> ',"QA-HANDBOOK":'Lofton Henderson. <a href="http://www.w3.org/TR/2005/NOTE-qa-handbook-20050906"><cite>The QA Handbook.</cite></a> 6 September 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-qa-handbook-20050906">http://www.w3.org/TR/2005/NOTE-qa-handbook-20050906</a> ',"QAFRAME-OPS-EXTECH":'Dimitris Dimitriadis; et al. <a href="http://www.w3.org/TR/2002/NOTE-qaframe-ops-extech-20021202"><cite>QA Framework: Operational Examples &amp; Techniques.</cite></a> 2 December 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-qaframe-ops-extech-20021202">http://www.w3.org/TR/2002/NOTE-qaframe-ops-extech-20021202</a> ',"QAFRAME-SPEC":'Lynne Rosenthal; et al. <a href="http://www.w3.org/TR/2005/REC-qaframe-spec-20050817"><cite>QA Framework: Specification Guidelines.</cite></a> 17 August 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-qaframe-spec-20050817">http://www.w3.org/TR/2005/REC-qaframe-spec-20050817</a> ',"QAFRAME-TEST":'Patrick Curran; Dimitris Dimitriadis. <a href="http://www.w3.org/TR/2004/WD-qaframe-test-20040820"><cite>QA Framework: Test Guidelines.</cite></a> 20 August 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-qaframe-test-20040820">http://www.w3.org/TR/2004/WD-qaframe-test-20040820</a> ',QNAMES:'N. Walsh. <a href="http://www.w3.org/2001/tag/doc/qnameids-2004-03-17"><cite>Using Qualified Names (QNames) as Identifiers in XML Content</cite></a> 17 March, 2004. TAG Finding. URL: <a href="http://www.w3.org/2001/tag/doc/qnameids-2004-03-17">http://www.w3.org/2001/tag/doc/qnameids-2004-03-17</a> ',"QUOTA-API":'Kinuko Yasuda. <a href="http://www.w3.org/TR/quota-api/"><cite>Quota Management API</cite></a>. 3 July 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/quota-api/">http://www.w3.org/TR/quota-api/</a>',RANDOM:'D.  Eastlake, S. Crocker, J. Schiller. <a href="http://www.ietf.org/rfc/rfc4086.txt"><cite>Randomness Recommendations for Security.</cite></a>. IETF RFC 4086. June 2005. URL: <a href="http://www.ietf.org/rfc/rfc4086.txt">http://www.ietf.org/rfc/rfc4086.txt</a>',"RDF-CONCEPTS":'Graham Klyne; Jeremy J. Carroll. <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210"><cite>Resource Description Framework (RDF): Concepts and Abstract Syntax.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210">http://www.w3.org/TR/2004/REC-rdf-concepts-20040210</a> ',"RDF-DAWG-UC":'Kendall Grant Clark. <a href="http://www.w3.org/TR/2005/WD-rdf-dawg-uc-20050325"><cite>RDF Data Access Use Cases and Requirements.</cite></a> 25 March 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-rdf-dawg-uc-20050325">http://www.w3.org/TR/2005/WD-rdf-dawg-uc-20050325</a> ',"RDF-MT":'Patrick Hayes. <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210"><cite>RDF Semantics.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210">http://www.w3.org/TR/2004/REC-rdf-mt-20040210</a> ',"RDF-PRIMER":'Frank Manola; Eric Miller. <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/"><cite>RDF Primer.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">http://www.w3.org/TR/2004/REC-rdf-primer-20040210/</a> ',"RDF-SCHEMA":'Dan Brickley; Ramanathan V. Guha. <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210"><cite>RDF Vocabulary Description Language 1.0: RDF Schema.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210">http://www.w3.org/TR/2004/REC-rdf-schema-20040210</a> ',"RDF-SPARQL-JSON-RES":'Kendall Grant Clark; Elias Torres; Lee Feigenbaum. <a href="http://www.w3.org/TR/2007/NOTE-rdf-sparql-json-res-20070618"><cite>Serializing SPARQL Query Results in JSON.</cite></a> 18 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-rdf-sparql-json-res-20070618">http://www.w3.org/TR/2007/NOTE-rdf-sparql-json-res-20070618</a> ',"RDF-SPARQL-PROTOCOL":'Lee Feigenbaum; Kendall Grant Clark; Elias Torres. <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-protocol-20080115"><cite>SPARQL Protocol for RDF.</cite></a> 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-protocol-20080115">http://www.w3.org/TR/2008/REC-rdf-sparql-protocol-20080115</a> ',"RDF-SPARQL-QUERY":'Andy Seaborne; Eric Prud\'hommeaux. <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115"><cite>SPARQL Query Language for RDF.</cite></a> 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115">http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115</a> ',"RDF-SPARQL-XMLRES":'Jeen Broekstra; Dave Beckett. <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115"><cite>SPARQL Query Results XML Format.</cite></a> 15 January 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115">http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115</a> ',"RDF-SYNTAX":'Ora Lassila; Ralph R. Swick. <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222"><cite>Resource Description Framework (RDF) Model and Syntax Specification.</cite></a> 22 February 1999. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222">http://www.w3.org/TR/1999/REC-rdf-syntax-19990222</a> ',"RDF-SYNTAX-GRAMMAR":'Dave Beckett. <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210"><cite>RDF/XML Syntax Specification (Revised).</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210">http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210</a> ',"RDF-TESTCASES":'Jan Grant; Dave Beckett. <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210"><cite>RDF Test Cases.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210">http://www.w3.org/TR/2004/REC-rdf-testcases-20040210</a> ',"RDF-UML":'Walter W. Chang. <a href="http://www.w3.org/TR/1998/NOTE-rdf-uml-19980804"><cite>A Discussion of the Relationship Between RDF-Schema and UML.</cite></a> 4 August 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-rdf-uml-19980804">http://www.w3.org/TR/1998/NOTE-rdf-uml-19980804</a> ',"RDFA-CORE":'Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-core-20120607/">http://www.w3.org/TR/2012/REC-rdfa-core-20120607/</a> ',"RDFA-LITE":'Manu Sporny. <a href="http://www.w3.org/TR/2012/REC-rdfa-lite-20120607/"><cite>RDFa Lite 1.1.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-rdfa-lite-20120607/">http://www.w3.org/TR/2012/REC-rdfa-lite-20120607/</a> ',"RDFA-PRIMER":'Ben Adida, Ivan Herman, Manu Sporny. <a href="http://www.w3.org/TR/2012/NOTE-rdfa-primer-20120607"><cite>RDFa Primer.</cite></a> 07 June 2012. W3C Note. URL: <a href="http://www.w3.org/TR/2012/NOTE-rdfa-primer-20120607">http://www.w3.org/TR/2012/NOTE-rdfa-primer-20120607</a> ',"RDFA-SYNTAX":'Ben Adida, et al. <a href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014"><cite>RDFa in XHTML: Syntax and Processing.</cite></a> 14 October 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014">http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014</a> ',RDFCAL:'Dan Connolly; Libby Miller. <a href="http://www.w3.org/TR/2005/NOTE-rdfcal-20050929"><cite>RDF Calendar - an application of the Resource Description Framework to iCalendar Data.</cite></a> 29 September 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-rdfcal-20050929">http://www.w3.org/TR/2005/NOTE-rdfcal-20050929</a> ',"RDFTM-SURVEY":'Fabio Vitali; et al. <a href="http://www.w3.org/TR/2006/NOTE-rdftm-survey-20060210"><cite>A Survey of RDF/Topic Maps Interoperability Proposals.</cite></a> 10 February 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-rdftm-survey-20060210">http://www.w3.org/TR/2006/NOTE-rdftm-survey-20060210</a> ',"RELAXNG-SCHEMA":'<a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip"><cite>Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG</cite></a>. ISO/IEC 19757-2:2008. URL: <a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip">http://standards.iso.org/ittf/PubliclyAvailableStandards/c052348_ISO_IEC_19757-2_2008(E).zip</a>',"REUSABLE-DIALOG-REQS":'Daniel C. Burnett. <a href="http://www.w3.org/TR/2000/WD-reusable-dialog-reqs-20000426"><cite>Reusable Dialog Requirements for Voice Markup Language.</cite></a> 26 April 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-reusable-dialog-reqs-20000426">http://www.w3.org/TR/2000/WD-reusable-dialog-reqs-20000426</a> ',REX:'Robin Berjon. <a href="http://www.w3.org/TR/2006/WD-rex-20061013"><cite>Remote Events for XML (REX) 1.0.</cite></a> 13 October 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-rex-20061013">http://www.w3.org/TR/2006/WD-rex-20061013</a> ',"REX-REQS":'Robin Berjon. <a href="http://www.w3.org/TR/2006/NOTE-rex-reqs-20060202"><cite>Remote Events for XML (REX) Requirements.</cite></a> 2 February 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-rex-reqs-20060202">http://www.w3.org/TR/2006/NOTE-rex-reqs-20060202</a> ',RFC1034:'P. Mockapetris. <a href="http://www.ietf.org/rfc/rfc1034.txt"><cite>DOMAIN NAMES - CONCEPTS AND FACILITIES.</cite></a> November 1987. Internet RFC 1034. URL: <a href="http://www.ietf.org/rfc/rfc1034.txt">http://www.ietf.org/rfc/rfc1034.txt</a> ',RFC1738:'T. Berners-Lee; L. Masinter; M. McCahill. <a href="http://www.ietf.org/rfc/rfc1738.txt"><cite>Uniform Resource Locators (URL).</cite></a> December 1994. Internet RFC 1738. URL: <a href="http://www.ietf.org/rfc/rfc1738.txt">http://www.ietf.org/rfc/rfc1738.txt</a> ',RFC1808:'R. Fielding. <a href="http://www.ietf.org/rfc/rfc1808.txt"><cite>Relative Uniform Resource Locators.</cite></a> June 1995. Internet RFC 1808 (Obsoleted by RFC 3986). URL: <a href="http://www.ietf.org/rfc/rfc1808.txt">http://www.ietf.org/rfc/rfc1808.txt</a> ',RFC2045:'N. Freed and N. Borenstein. <a href="http://www.ietf.org/rfc/rfc2045.txt"><cite>Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies.</cite></a> November 1996. URL: <a href="http://www.ietf.org/rfc/rfc2045.txt">http://www.ietf.org/rfc/rfc2045.txt</a> ',RFC2046:'N. Freed; N. Borenstein. <a href="http://www.ietf.org/rfc/rfc2046.txt"><cite>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types.</cite></a> November 1996. Internet RFC 2046. URL: <a href="http://www.ietf.org/rfc/rfc2046.txt">http://www.ietf.org/rfc/rfc2046.txt</a> ',RFC2119:'S. Bradner. <a href="http://www.ietf.org/rfc/rfc2119.txt"><cite>Key words for use in RFCs to Indicate Requirement Levels.</cite></a> March 1997. Internet RFC 2119.  URL: <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a> ',RFC2231:'N. Freed, K. Moore.  <a href="http://www.ietf.org/rfc/rfc2231.txt"><cite>MIME Parameter Value and Encoded Word Extensions: Character Sets, Languages, and Continuations.</cite></a> November 1997.  IETF RFC 2231. URL: <a href="http://www.ietf.org/rfc/rfc2231.txt">http://www.ietf.org/rfc/rfc2231.txt</a> ',RFC2318:'H. Lie, B. Bos, C. Lilley. <a href="http://www.ietf.org/rfc/rfc2318.txt"><cite>The text/css Media Type.</cite></a> March 1998. URL: <a href="http://www.ietf.org/rfc/rfc2318.txt">http://www.ietf.org/rfc/rfc2318.txt</a> ',RFC2397:'L. Masinter. <a href="http://www.ietf.org/rfc/rfc2397.txt"><cite>The &quot;data&quot; URL scheme.</cite></a> August 1998. Internet RFC 2397. URL: <a href="http://www.ietf.org/rfc/rfc2397.txt">http://www.ietf.org/rfc/rfc2397.txt</a> ',RFC2426:'F. Dawson, T. Howes. <a href="http://www.ietf.org/rfc/rfc2426.txt"><cite>vCard MIME Directory Profile.</cite></a> September 1998. URL: <a href="http://www.ietf.org/rfc/rfc2426.txt">http://www.ietf.org/rfc/rfc2426.txt</a> ',RFC2531:'G. Klyne; L. McIntyre. <a href="http://www.ietf.org/rfc/rfc2531.txt"><cite>Content Feature Schema for Internet Fax.</cite></a> March 1999. Internet RFC 2531. URL: <a href="http://www.ietf.org/rfc/rfc2531.txt">http://www.ietf.org/rfc/rfc2531.txt</a> ',RFC2533:'G. Klyne. <a href="http://www.ietf.org/rfc/rfc2533"><cite>A Syntax for Describing Media Feature Sets.</cite></a> March 1999. Internet RFC 2533. URL: <a href="http://www.ietf.org/rfc/rfc2533">http://www.ietf.org/rfc/rfc2533</a> ',RFC2534:'L. Masinter; D. Wing; et al. <a href="http://www.ietf.org/rfc/rfc2534"><cite>Media Features for Display, Print, and Fax.</cite></a> March 1999. Internet RFC 2534. URL: <a href="http://www.ietf.org/rfc/rfc2534">http://www.ietf.org/rfc/rfc2534</a> ',RFC3406:'L. Daigle, D. van Gulik, R. Iannella, P. Faltstrom. <a href="http://www.ietf.org/rfc/rfc3406.txt"><cite> URN Namespace Definition Mechanisms.</cite></a>. IETF RFC 3406 October 2002. URL: <a href="http://www.ietf.org/rfc/rfc3406.txt"> http://www.ietf.org/rfc/rfc3406.txt</a>',RFC2854:'D. Connolly; L. Masinter. <a href="http://www.rfc-editor.org/rfc/rfc2854.txt"><cite>The \'text/html\' Media Type.</cite></a> June 2000. Internet RFC 2854. URL: <a href="http://www.rfc-editor.org/rfc/rfc2854.txt">http://www.rfc-editor.org/rfc/rfc2854.txt</a> ',RFC2978:'N. Freed; J. Postel. <a href="http://www.ietf.org/rfc/rfc2978.txt"><cite>IANA Charset Registration Procedures.</cite></a> October 2000. Internet RFC 2978. URL: <a href="http://www.ietf.org/rfc/rfc2978.txt">http://www.ietf.org/rfc/rfc2978.txt</a> ',RFC3023:'M. Murata; S. St.Laurent; D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types</cite></a> January 2001. Internet RFC 3023. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a> ',RFC3161:'C. Adams, P. Cain, D. Pinkas, R. Zuccherato. <a href="http://www.rfc-editor.org/rfc/rfc3161.txt"><cite>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</cite></a> August 2001. Internet RFC 3161. URL: <a href="http://www.rfc-editor.org/rfc/rfc3161.txt">http://www.rfc-editor.org/rfc/rfc3161.txt</a> ',"RFC3161-PKIX-UPDATE-9":'Stefan Santesson, Nick Pope. <a href="http://tools.ietf.org/id/draft-ietf-pkix-rfc3161-update-09.txt"><cite> ESSCertIDv2 update for RFC 3161</cite></a> 29 April 2010, IETF Internet Draft. URL: <a href="http://tools.ietf.org/id/draft-ietf-pkix-rfc3161-update-09.txt"> http://tools.ietf.org/id/draft-ietf-pkix-rfc3161-update-09.txt</a> ',RFC3218:'Rescorla, E. <a href="http://tools.ietf.org/html/rfc3218"><cite>Preventing the Million Message Attack on Cryptographic Message Syntax.</cite></a>January 2002. Informational RFC 3218. URL: <a href="http://tools.ietf.org/html/rfc3218">http://tools.ietf.org/html/rfc3218</a>',RFC3236:'P. Stark; M. Baker. <a href="http://www.rfc-editor.org/rfc/rfc3236.txt"><cite>The \'application/xhtml+xml\' Media Type.</cite></a> January 2002. Internet RFC 3236. URL: <a href="http://www.rfc-editor.org/rfc/rfc3236.txt">http://www.rfc-editor.org/rfc/rfc3236.txt</a> ',RFC3279:'W. Polk, R. Housley, L. Bassham. <a href="http://www.ietf.org/rfc/rfc3279.txt"><cite>Algorithmupdates and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</cite></a>. April 2002. Internet RFC 3279. URL: <a href="http://www.ietf.org/rfc/rfc3279.txt">http://www.ietf.org/rfc/rfc3279.txt</a>',RFC3339:'G. Klyne, C. Newman. <a href="http://www.ietf.org/rfc/rfc3339.txt"><cite>Date and Time on the Internet: Timestamps</cite></a>. July 2002. Internet RFC 3339. URL: <a href="http://www.ietf.org/rfc/rfc3339.txt">http://www.ietf.org/rfc/rfc3339.txt</a>',RFC3428:'B. Campbell, Ed.; J. Rosenberg, et al. <a href="http://www.ietf.org/rfc/rfc3428.txt"><cite>Session Initiation Protocol (SIP) Extension for Instant Messaging.</cite></a> December 2002. Internet RFC 3428. URL: <a href="http://www.ietf.org/rfc/rfc3428.txt">http://www.ietf.org/rfc/rfc3428.txt</a> ',RFC3490:"P. Faltstrom; P. Hoffman; A. Costello. <a href='http://www.rfc-editor.org/rfc/rfc3490.txt'><cite>Internationalizing Domain Names in Applications (IDNA).</cite></a> March 2003. Internet RFC 3490. URL: <a href='http://www.rfc-editor.org/rfc/rfc3490.txt'>http://www.rfc-editor.org/rfc/rfc3490.txt</a>",RFC3555:"S. Casner; P. Hoschka. <a href='http://www.rfc-editor.org/rfc/rfc3555.txt'><cite>MIME Type Registration of RTP Payload Formats</cite></a>. July 2003. Internet RFC 3555. URL: <a href='http://www.rfc-editor.org/rfc/rfc3555.txt'>http://www.rfc-editor.org/rfc/rfc3555.txt</a>",RFC3966:'H. Schulzrinne. <a href="http://www.ietf.org/rfc/rfc3966.txt"><cite>The tel URI for Telephone Numbers</cite></a> December 2004. Internet RFC 3966. URL: <a href="http://www.ietf.org/rfc/rfc3966.txt">http://www.ietf.org/rfc/rfc3966.txt</a> ',RFC3986:'T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifier (URI): Generic Syntax.</cite></a> January 2005. Internet RFC 3986. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a> ',RFC3987:'M. D&#252;rst; M. Suignard. <a href="http://www.ietf.org/rfc/rfc3987.txt"><cite>Internationalized Resource Identifiers (IRIs).</cite></a> January 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc3987.txt">http://www.ietf.org/rfc/rfc3987.txt</a> ',RFC4050:'S. Blake-Wilson, G. Karlinger, T. Kobayashi, Y. Wang.    <a href="http://www.ietf.org/rfc/rfc4050.txt"><cite>Using the Elliptic Curve Signature Algorithm (ECDSA) for XML Digital Signatures.</cite></a> IETF RFC 4050. April 2005. URL: <a href="http://www.ietf.org/rfc/rfc4050.txt">http://www.ietf.org/rfc/rfc4050.txt</a>',RFC4051:'D. Eastlake 3rd. <a href="http://www.ietf.org/rfc/rfc4051.txt"><cite>Additional XML Security Uniform Resource Identifiers</cite></a>. RFC 4051 April 2005. URL: <a href="http://www.ietf.org/rfc/rfc4051.txt">http://www.ietf.org/rfc/rfc4051.txt</a>',RFC4055:'J. Schaad, B. Kaliski, R. Housley. <a href="http://www.ietf.org/rfc/rfc4055.txt"><cite>Additional Algorithms and Identifiers for RSA Cryptography for use in the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</cite></a>. June 2005. IETF RFC 4055. URL: <a href="http://www.ietf.org/rfc/rfc4055.txt">http://www.ietf.org/rfc/rfc4055.txt</a>',RFC4122:'P. Leach; M. Mealling; R. Salz. <a href="http://www.ietf.org/rfc/rfc4122.txt"><cite>A Universally Unique IDentifier (UUID) URN Namespace</cite></a> July 2005. Internet RFC 4122. URL: <a href="http://www.ietf.org/rfc/rfc4122.txt">http://www.ietf.org/rfc/rfc4122.txt</a> ',RFC4180:'Y. Shafranovich. <a href="http://www.ietf.org/rfc/rfc4180.txt"> <cite>Common Format and MIME Type for Comma-Separated Values (CSV) Files</cite></a> October 2005. Internet RFC 3987. URL: <a href="http://www.ietf.org/rfc/rfc4180.txt">http://www.ietf.org/rfc/rfc4180.txt</a>',RFC4281:'R. Gellens, D. Singer, P. Frojdh. <a href="http://www.ietf.org/rfc/rfc4281.txt"><cite>The Codecs Parameter for &quot;Bucket&quot; Media Types</cite></a> November 2005. Internet RFC 4281. URL: <a href="http://www.ietf.org/rfc/rfc4281.txt">http://www.ietf.org/rfc/rfc4281.txt</a> ',RFC4572:'J. Lennox. <a href="http://www.ietf.org/rfc/rfc4572.txt"><cite> Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP).</cite></a> July 2006. Internet RFC 4572. URL: <a href="http://www.ietf.org/rfc/rfc4572.txt">http://www.ietf.org/rfc/rfc4572.txt</a>',RFC4627:'D. Crockford. <a href="http://www.ietf.org/rfc/rfc4627.txt"><cite>The application/json Media Type for JavaScript Object Notation (JSON)</cite></a> July 2006. Internet RFC 4627. URL: <a href="http://www.ietf.org/rfc/rfc4627.txt">http://www.ietf.org/rfc/rfc4627.txt</a>',RFC4770:'C. Jennings; J. Reschke. <a href="http://www.ietf.org/rfc/rfc4770.txt"><cite>vCard Extensions for Instant Messaging (IM)</cite></a> January 2007. Internet RFC 4770. URL: <a href="http://www.ietf.org/rfc/rfc4770.txt">http://www.ietf.org/rfc/rfc4770.txt</a> ',RFC4868:'S. Kelly, S. Frankel. <a href="http://www.ietf.org/rfc/rfc4868.txt"><cite>Using HMAC-SHA-256, HMAC-SHA-384, and HMAC-SHA-512 with IPsec</cite></a> IETF RFC 4868. May 2007. URL: <a href="http://www.ietf.org/rfc/rfc4868.txt">http://www.ietf.org/rfc/rfc4868.txt</a>',RFC4949:'R. Shirey. <a href="http://www.ietf.org/rfc/rfc4949.txt"><cite>Internet Security Glossary, Version 2.</cite></a>. IETF RFC 4949. August 2007. URL: <a href="http://www.ietf.org/rfc/rfc4949.txt">http://www.ietf.org/rfc/rfc4949.txt</a>',RFC5280:'D. Cooper, et. al. <a href="http://www.ietf.org/rfc/rfc5280.txt"><cite> Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. </cite></a>. IETF RFC 5280 May 2008. URL: <a href="http://www.ietf.org/rfc/rfc5280.txt">http://www.ietf.org/rfc/rfc5280.txt</a>',RFC5480:'S. Turner, et. al. <a href="http://www.ietf.org/rfc/rfc5480.txt"><cite> Elliptic Curve Cryptography Subject Public Key Information.</cite></a>. IETF RFC 5480 March 2009. URL: <a href="http://www.ietf.org/rfc/rfc5480.txt">http://www.ietf.org/rfc/rfc5480.txt</a>',RFC5545:'B. Desruisseaux. <a href="http://www.rfc-editor.org/rfc/rfc5545.txt"><cite>Internet Calendaring and Scheduling Core Object Specification (iCalendar).</cite></a> September 2009. Internet RFC 5545. URL: <a href="http://www.rfc-editor.org/rfc/rfc5545.txt">http://www.rfc-editor.org/rfc/rfc5545.txt</a> ',RFC5646:'A. Phillips, M. Davis. <a href="http://www.rfc-editor.org/rfc/rfc5646.txt"><cite>Tags for Identifying Languages.</cite></a> September 2009. Internet RFC 5646. URL: <a href="http://www.rfc-editor.org/rfc/rfc5646.txt">http://www.rfc-editor.org/rfc/rfc5646.txt</a> ',RFC5724:'E. Wilde, A. Vaha-Sipila. <a href="http://www.ietf.org/rfc/rfc5724.txt">URI Scheme for Global System for Mobile Communications (GSM) Short Message Service (SMS)</a>. January 2010. Request for Comments. URL: <a href="http://www.ietf.org/rfc/rfc5724.txt">http://www.ietf.org/rfc/rfc5724.txt</a>',RFC5785:'Mark Nottingham; Eran Hammer-Lahav. <a href="http://www.rfc-editor.org/rfc/rfc5785.txt"><cite>Defining Well-Known Uniform Resource Identifiers (URIs).</cite></a> April 2010. Internet Proposed Standard RFC 5785. URL: <a href="http://www.rfc-editor.org/rfc/rfc5785.txt">http://www.rfc-editor.org/rfc/rfc5785.txt</a> ',RFC5789:'L Dusseault, J. Snell. <a href="http://tools.ietf.org/html/rfc5789"><cite>PATCH Method for HTTP.</cite></a> March 2010.  Internet Proposed Standard RFC 5789. URL: <a href="http://tools.ietf.org/html/rfc5789">http://tools.ietf.org/html/rfc5789</a>',RFC6068:'M. Duerst; L. Masinter; J. Zawinski. <a href="http://www.ietf.org/rfc/rfc6068.txt"><cite>The \'mailto\' URI Scheme.</cite></a> October 2010. Internet Proposed Standard RFC 6068. URL: <a href="http://www.ietf.org/rfc/rfc6068.txt">http://www.ietf.org/rfc/rfc6068.txt</a> ',RichSnippets:'<a href="http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html/"><cite>Introducing Rich Snippets.</cite></a> 12 May 2009. Google Webmaster Central Blog. URL: <a href="http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html/">http://googlewebmastercentral.blogspot.com/2009/05/introducing-rich-snippets.html/</a> ',"RIF-BLD":'Harold Boley, Michael Kifer; . <a href="http://www.w3.org/TR/2010/REC-rif-bld-20100622/"><cite>RIF Basic Logic Dialect.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-bld-20100622/">http://www.w3.org/TR/2010/REC-rif-bld-20100622/</a> ',"RIF-CORE":'Harold Boley, et al. <a href="http://www.w3.org/TR/2010/REC-rif-core-20100622/"><cite>RIF Core.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-core-20100622/">http://www.w3.org/TR/2010/REC-rif-core-20100622/</a> ',"RIF-DTB":'Axel Polleres, Harold Boley, Michael Kifer. <a href="http://www.w3.org/TR/2010/REC-rif-dtb-20100622/"><cite>RIF Datatypes and Built-Ins 1.0.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-dtb-20100622/">http://www.w3.org/TR/2010/REC-rif-dtb-20100622/</a> ',"RIF-FLD":'Harold Boley, Michael Kifer. <a href="http://www.w3.org/TR/2010/REC-rif-fld-20100622/"><cite>RIF Framework for Logic Dialects.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-fld-20100622/">http://www.w3.org/TR/2010/REC-rif-fld-20100622/</a> ',"RIF-PRD":'Christian de Sainte Marie, Gary Hallmark, Adrian Paschke; . <a href="http://www.w3.org/TR/2010/REC-rif-prd-20100622/"><cite>RIF Production Rule Dialect.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-prd-20100622/">http://www.w3.org/TR/2010/REC-rif-prd-20100622/</a> ',"RIF-RDF-OWL":'Jos de Bruijn. <a href="http://www.w3.org/TR/2010/REC-rif-rdf-owl-20100622/"><cite>RIF RDF and OWL Compatibility.</cite></a> 22 June 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-rif-rdf-owl-20100622/">http://www.w3.org/TR/2010/REC-rif-rdf-owl-20100622/</a> ',"RIF-TEST":'Stella Mitchell, Leora Morgenstern, Adrian Paschke. <a href="http://www.w3.org/TR/2010/WD-rif-test-20100622/"><cite>RIF Test Cases.</cite></a> 1 October 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-rif-test-20100622/">http://www.w3.org/TR/2010/WD-rif-test-20100622/</a> ',"RIF-OVERVIEW":'Michael Kifer; Harold Boley. <a href="http://www.w3.org/TR/2010/NOTE-rif-overview-20100622/"><cite>RIF Overview.</cite></a> 22 June 2010. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2010/NOTE-rif-overview-20100622/">http://www.w3.org/TR/2010/NOTE-rif-overview-20100622/</a> ',"RIF-UCR":'David Hirtle; et al. <a href="http://www.w3.org/TR/2008/WD-rif-ucr-20081218"><cite>RIF Use Cases and Requirements.</cite></a> 18 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-rif-ucr-20081218">http://www.w3.org/TR/2008/WD-rif-ucr-20081218</a> ',"RIPEMD-160":'B. Preneel, A. Bosselaers, and H. Dobbertin. <a href="http://www.cosic.esat.kuleuven.be/publications/article-317.pdf"><cite>The Cryptographic Hash Function RIPEMD-160</cite></a>. CryptoBytes, Volume 3, Number 2. pp. 9-14, RSA Laboratories 1997. URL: <a href="http://www.cosic.esat.kuleuven.be/publications/article-317.pdf">http://www.cosic.esat.kuleuven.be/publications/article-317.pdf</a>',"ROLE-ATTRIBUTE":'Shane McCarron; et al. <a href="http://www.w3.org/TR/2012/CR-role-attribute-20120712/"><cite>Role Attribute.</cite></a> 12 July 2012. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2012/CR-role-attribute-20120712/">http://www.w3.org/TR/2012/CR-role-attribute-20120712/</a> ',"RTCWEB-CONSTRAINTS":'D. Burnett. <a href="http://datatracker.ietf.org/doc/draft-burnett-rtcweb-constraints-registry/"><cite>IANA Registry for RTCWeb Media Constraints.</cite></a> URL: <a href="http://datatracker.ietf.org/doc/draft-burnett-rtcweb-constraints-registry/">http://datatracker.ietf.org/doc/draft-burnett-rtcweb-constraints-registry/</a> ',"RTCWEB-JSEP":'J. Uberti, C. Jennings. <a href="http://datatracker.ietf.org/doc/draft-ietf-rtcweb-jsep/"><cite>Javascript Session Establishment Protocol.</cite></a> URL: <a href="http://datatracker.ietf.org/doc/draft-ietf-rtcweb-jsep/">http://datatracker.ietf.org/doc/draft-ietf-rtcweb-jsep/</a> ',"RTCWEB-USECAS":'C. Holmberg, S. Hakansson, G. Eriksson. <a href="http://datatracker.ietf.org/doc/draft-ietf-rtcweb-use-cases-and-requirements/"><cite>Web Real-Time Communication Use-cases and Requirements.</cite></a> URL: <a href="http://datatracker.ietf.org/doc/draft-ietf-rtcweb-use-cases-and-requirements/">http://datatracker.ietf.org/doc/draft-ietf-rtcweb-use-cases-and-requirements/</a> ',RUBY:'Masayasu Ishikawa; et al. <a href="http://www.w3.org/TR/2001/REC-ruby-20010531"><cite>Ruby Annotation.</cite></a> 31 May 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-ruby-20010531">http://www.w3.org/TR/2001/REC-ruby-20010531</a> ',S6GROUP2:'Stuart Weibel. <a href="http://www.w3.org/Search/9605-Indexing-Workshop/ReportOutcomes/S6Group2"><cite>A Proposed Convention for Embedding Metadata in HTML.</cite></a> 2 June 1996. W3C Note. URL: <a href="http://www.w3.org/Search/9605-Indexing-Workshop/ReportOutcomes/S6Group2">http://www.w3.org/Search/9605-Indexing-Workshop/ReportOutcomes/S6Group2</a> ',"SAML2-CORE":'Scott Cantor; John Kemp; Rob Philpott; Eve Maler. <a href="http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf"><cite>Assertions and Protocols for SAML V2.0</cite></a> 15 March 2005. URL: <a href="http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf">http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf</a>',SAWSDL:'Joel Farrell; Holger Lausen. <a href="http://www.w3.org/TR/2007/REC-sawsdl-20070828"><cite>Semantic Annotations for WSDL and XML Schema.</cite></a> 28 August 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-sawsdl-20070828">http://www.w3.org/TR/2007/REC-sawsdl-20070828</a> ',"SAWSDL-GUIDE":'Rama Akkiraju; Brahmananda Sapkota. <a href="http://www.w3.org/TR/2007/NOTE-sawsdl-guide-20070828"><cite>Semantic Annotations for WSDL and XML Schema &#8212; Usage Guide.</cite></a> 28 August 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-sawsdl-guide-20070828">http://www.w3.org/TR/2007/NOTE-sawsdl-guide-20070828</a> ',SAX:'D. Megginson, et al. <a href="http://www.megginson.com/downloads/SAX/"><cite>SAX: The Simple API for XML</cite></a>. May 1998. URL: <a href="http://www.megginson.com/downloads/SAX/"> http://www.megginson.com/downloads/SAX/</a>',"SCHEMA-ARCH":'Ralph R. Swick; Henry S. Thompson. <a href="http://www.w3.org/TR/1999/NOTE-schema-arch-19991007"><cite>The Cambridge Communiqu&#233;.</cite></a> 7 October 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-schema-arch-19991007">http://www.w3.org/TR/1999/NOTE-schema-arch-19991007</a> ',SCXML:'Torbj&#246;rn Lage; et al. <a href="http://www.w3.org/TR/2008/WD-scxml-20080516"><cite>State Chart XML (SCXML): State Machine Notation for Control Abstraction.</cite></a> 16 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-scxml-20080516">http://www.w3.org/TR/2008/WD-scxml-20080516</a> ',SDP:'J. Rosenberg, H. Schulzrinne. <a href="http://tools.ietf.org/html/rfc3264"><cite>An Offer/Answer Model with the Session Description Protocol (SDP).</cite></a> June 2002. Internet RFC 3264. URL: <a href="http://tools.ietf.org/html/rfc3264">http://tools.ietf.org/html/rfc3264</a>',SDPLABEL:'O. Levin, G. Camarillo. <a href="http://tools.ietf.org/html/rfc4574"><cite>The Session Description Protocol (SDP) Label Attribute.</cite></a> August 2006. Internet RFC 4574. URL: <a href="http://tools.ietf.org/html/rfc4574">http://tools.ietf.org/html/rfc4574</a>',SECG1:'<a href="http://www.secg.org/download/aid-780/sec1-v2.pdf"><cite>SEC1: Elliptic Curve Cryptography, Version 2.0, Standards for Efficient Cryptography Group</cite></a>. May 2009. URL: <a href="http://www.secg.org/download/aid-780/sec1-v2.pdf">http://www.secg.org/download/aid-780/sec1-v2.pdf</a> ',SELECT:'Daniel Glazman; et al. <a href="http://www.w3.org/TR/2009/WD-css3-selectors-20090310"><cite>Selectors Level 3.</cite></a> 10 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-css3-selectors-20090310">http://www.w3.org/TR/2009/WD-css3-selectors-20090310</a> ',"SELECTORS-LEVEL-3":'Daniel Glazman; et al. <a href="http://www.w3.org/TR/2011/REC-css3-selectors-20110929"><cite>Selectors Level 3.</cite></a> W3C Recommendation 29 September 2011 URL: <a href="http://www.w3.org/TR/2011/REC-css3-selectors-20110929">http://www.w3.org/TR/2011/REC-css3-selectors-20110929</a> ',"SELECTORS-API":'Lachlan Hunt; Anne van Kesteren. <a href="http://www.w3.org/TR/2008/WD-selectors-api-20081114"><cite>Selectors API.</cite></a> 14 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-selectors-api-20081114">http://www.w3.org/TR/2008/WD-selectors-api-20081114</a> ',"SELECTORS-API2":'Lachlan Hunt. <a href="http://www.w3.org/TR/selectors-api2/">Selectors API Level 2</a>. 19 January 2010. Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/selectors-api2/">http://www.w3.org/TR/selectors-api2/</a>',"SEMANTIC-INTERPRETATION":'David Burke; Luc Van Tichelen. <a href="http://www.w3.org/TR/2007/REC-semantic-interpretation-20070405"><cite>Semantic Interpretation for Speech Recognition (SISR) Version 1.0.</cite></a> 5 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-semantic-interpretation-20070405">http://www.w3.org/TR/2007/REC-semantic-interpretation-20070405</a> ',"SGML-CATALOG":"Paul Grosso. <cite><a href='https://www.oasis-open.org/html/a401.htm'>Entity Management: OASIS Technical Resolution 9401:1997 (Amendment 2 to TR 9401)</cite></a> 10 september 1007. Entity Management Subcommittee, SGML Open. URL: <a href='https://www.oasis-open.org/html/a401.htm'>https://www.oasis-open.org/html/a401.htm</a> ","SGML-XML":'James Clark. <a href="http://www.w3.org/TR/NOTE-sgml-xml-971215"><cite>Comparison of SGML and XML.</cite></a> 15 December 1997. W3C Note. URL: <a href="http://www.w3.org/TR/NOTE-sgml-xml-971215">http://www.w3.org/TR/NOTE-sgml-xml-971215</a> ',"SHA-1-Analysis":'McDonald, C., Hawkes, P., and J. Pieprzyk. <a href="http://eurocrypt2009rump.cr.yp.to/837a0a8086fa6ca714249409ddfae43d.pdf"><cite>SHA-1 collisions now 2<sup>52</sup> </cite></a>. EuroCrypt 2009 Rump session. URL: <a href="http://eurocrypt2009rump.cr.yp.to/837a0a8086fa6ca714249409ddfae43d.pdf">http://eurocrypt2009rump.cr.yp.to/837a0a8086fa6ca714249409ddfae43d.pdf</a>',"SHA-1-Collisions":'X. Wang, Y.L. Yin, H. Yu. <a href="http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf"><cite>Finding Collisions in the Full SHA-1</cite></a>. In Shoup, V., editor, Advances in Cryptology - CRYPTO 2005, 25th Annual International Cryptology Conference, Santa Barbara, California, USA, August 14-18, 2005, Proceedings, volume 3621 of LNCS, pages 17–36. Springer, 2005. URL: <a href="http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf">http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf</a> (also published in <a href="http://www.springerlink.com/content/26vljj3xhc28ux5m/">http://www.springerlink.com/content/26vljj3xhc28ux5m/</a>)',"SKOS-PRIMER":'Antoine Isaac; Ed Summers. <a href="http://www.w3.org/TR/2009/NOTE-skos-primer-20090818/"><cite>SKOS Simple Knowledge Organization System Primer.</cite></a> 18 August 2009. W3C Note. URL: <a href="http://www.w3.org/TR/2009/NOTE-skos-primer-20090818/">http://www.w3.org/TR/2009/NOTE-skos-primer-20090818/</a> ',"SKOS-REFERENCE":'Sean Bechhofer; Alistair Miles. <a href="http://www.w3.org/TR/2009/REC-skos-reference-20090818/"><cite>SKOS Simple Knowledge Organization System Reference.</cite></a> 18 August 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-skos-reference-20090818/">http://www.w3.org/TR/2009/REC-skos-reference-20090818/</a> ',"SKOS-UCR":'Jon Phipps; Daniel Rubin; Antoine Isaac. <a href="http://www.w3.org/TR/2007/WD-skos-ucr-20070516"><cite>SKOS Use Cases and Requirements.</cite></a> 16 May 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-skos-ucr-20070516">http://www.w3.org/TR/2007/WD-skos-ucr-20070516</a> ',"SMIL-ANIMATION":'Patrick Schmitz; Aaron Cohen. <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904"><cite>SMIL Animation.</cite></a> 4 September 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-smil-animation-20010904">http://www.w3.org/TR/2001/REC-smil-animation-20010904</a> ',SMIL10:'Philipp Hoschka. <a href="http://www.w3.org/TR/1998/REC-smil-19980615"><cite>Synchronized Multimedia Integration Language (SMIL) 1.0 Specification.</cite></a> 15 June 1998. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1998/REC-smil-19980615">http://www.w3.org/TR/1998/REC-smil-19980615</a> ',SMIL2:'Dick Bulterman; et al. <a href="http://www.w3.org/TR/2005/REC-SMIL2-20051213"><cite>Synchronized Multimedia Integration Language (SMIL 2.1).</cite></a> 13 December 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-SMIL2-20051213">http://www.w3.org/TR/2005/REC-SMIL2-20051213</a> ',SMIL20:'Jack Jansen; et al. <a href="http://www.w3.org/TR/2005/REC-SMIL2-20051213"><cite>Synchronized Multimedia Integration Language (SMIL 2.1).</cite></a> 13 December 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-SMIL2-20051213">http://www.w3.org/TR/2005/REC-SMIL2-20051213</a> ',SMIL3:'Dick Bulterman. <a href="http://www.w3.org/TR/2008/REC-SMIL3-20081201"><cite>Synchronized Multimedia Integration Language (SMIL 3.0).</cite></a> 1 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-SMIL3-20081201">http://www.w3.org/TR/2008/REC-SMIL3-20081201</a> ',SMIME:'B. Ramsdell. <a href="http://www.ietf.org/rfc/rfc3851.txt"><cite>S/MIME Version 3.1 Message Specification.</cite></a> July 2004. Internet RFC 3851. URL: <a href="http://www.ietf.org/rfc/rfc3851.txt">http://www.ietf.org/rfc/rfc3851.txt</a> ',SML:'Valentina Popescu; Virginia Smith; Bhalchandra Pandit. <a href="http://www.w3.org/TR/2009/PR-sml-20090212"><cite>Service Modeling Language, Version 1.1.</cite></a> 12 February 2009. W3C Proposed Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/PR-sml-20090212">http://www.w3.org/TR/2009/PR-sml-20090212</a> ',"SML-IF":'Valentina Popescu; Bhalchandra Pandit; Virginia Smith. <a href="http://www.w3.org/TR/2009/PR-sml-if-20090212"><cite>Service Modeling Language Interchange Format Version 1.1.</cite></a> 12 February 2009. W3C Proposed Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/PR-sml-if-20090212">http://www.w3.org/TR/2009/PR-sml-if-20090212</a> ',"SOAP11-ROR-HTTPBINDING":'David Orchard. <a href="http://www.w3.org/TR/2006/NOTE-soap11-ror-httpbinding-20060321"><cite>SOAP 1.1 Request Optional Response HTTP Binding.</cite></a> 21 March 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-soap11-ror-httpbinding-20060321">http://www.w3.org/TR/2006/NOTE-soap11-ror-httpbinding-20060321</a> ',"SOAP12-AF":'Henrik Frystyk Nielsen; Herv&#233; Ruellan. <a href="http://www.w3.org/TR/2004/NOTE-soap12-af-20040608"><cite>SOAP 1.2 Attachment Feature.</cite></a> 8 June 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-soap12-af-20040608">http://www.w3.org/TR/2004/NOTE-soap12-af-20040608</a> ',"SOAP12-EMAIL":'Highland Mary Mountain; et al. <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020703"><cite>SOAP Version 1.2 Email Binding.</cite></a> 3 July 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020703">http://www.w3.org/TR/2002/NOTE-soap12-email-20020703</a> ',"SOAP12-MTOM":'Mark Nottingham; et al. <a href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125"><cite>SOAP Message Transmission Optimization Mechanism.</cite></a> 25 January 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-soap12-mtom-20050125">http://www.w3.org/TR/2005/REC-soap12-mtom-20050125</a> ',"SOAP12-MTOM-POLICY":'Christopher Ferris; Yves Lafon. <a href="http://www.w3.org/TR/2007/WD-soap12-mtom-policy-20070918"><cite>MTOM Serialization Policy Assertion 1.1.</cite></a> 18 September 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-soap12-mtom-policy-20070918">http://www.w3.org/TR/2007/WD-soap12-mtom-policy-20070918</a> ',"SOAP12-N11N":'Martin Gudgin; Marc Hadley. <a href="http://www.w3.org/TR/2003/NOTE-soap12-n11n-20031008"><cite>SOAP Version 1.2 Message Normalization.</cite></a> 8 October 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-soap12-n11n-20031008">http://www.w3.org/TR/2003/NOTE-soap12-n11n-20031008</a> ',"SOAP12-OS-UCR":'Mark Jones; Tony Graham; Anish Karmarkar. <a href="http://www.w3.org/TR/2004/WD-soap12-os-ucr-20040608"><cite>SOAP Optimized Serialization Use Cases and Requirements.</cite></a> 8 June 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-soap12-os-ucr-20040608">http://www.w3.org/TR/2004/WD-soap12-os-ucr-20040608</a> ',"SOAP12-PART0":'Yves Lafon; Nilo Mitra. <a href="http://www.w3.org/TR/2007/REC-soap12-part0-20070427"><cite>SOAP Version 1.2 Part 0: Primer (Second Edition).</cite></a> 27 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-soap12-part0-20070427">http://www.w3.org/TR/2007/REC-soap12-part0-20070427</a> ',"SOAP12-PART1":'Noah Mendelsohn; et al. <a href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/"><cite>SOAP Version 1.2 Part 1: Messaging Framework (Second Edition).</cite></a> 27 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-soap12-part1-20070427/">http://www.w3.org/TR/2007/REC-soap12-part1-20070427/</a> ',"SOAP12-PART2":'Jean-Jacques Moreau; et al. <a href="http://www.w3.org/TR/2007/REC-soap12-part2-20070427"><cite>SOAP Version 1.2 Part 2: Adjuncts (Second Edition).</cite></a> 27 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-soap12-part2-20070427">http://www.w3.org/TR/2007/REC-soap12-part2-20070427</a> ',"SOAP12-PART3":'David Orchard. <a href="http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702"><cite>SOAP 1.2 Part 3: One-Way MEP.</cite></a> 2 July 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702">http://www.w3.org/TR/2007/NOTE-soap12-part3-20070702</a> ',"SOAP12-REP":'Yves Lafon; Anish Karmarkar; Martin Gudgin. <a href="http://www.w3.org/TR/2005/REC-soap12-rep-20050125"><cite>Resource Representation SOAP Header Block.</cite></a> 25 January 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-soap12-rep-20050125">http://www.w3.org/TR/2005/REC-soap12-rep-20050125</a> ',"SOAP12-TESTCOLLECTION":'Hugo Haas; et al. <a href="http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427"><cite>SOAP Version 1.2 Specification Assertions and Test Collection (Second Edition).</cite></a> 27 April 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427">http://www.w3.org/TR/2007/REC-soap12-testcollection-20070427</a> ',SOAPJMS:'Bhakti Mehta; Roland Merrick; Peter Easton. <a href="http://www.w3.org/TR/2008/WD-soapjms-20081121"><cite>SOAP over Java Message Service 1.0.</cite></a> 21 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-soapjms-20081121">http://www.w3.org/TR/2008/WD-soapjms-20081121</a> ',"SP800-38D":'M. Dworkin. <a href="http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf"><cite> NIST Special Publication 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC</cite></a>. November 2007 URL: <a href="http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf">http://csrc.nist.gov/publications/nistpubs/800-38D/SP-800-38D.pdf</a>',"SP800-56A":'<a href="http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf"><cite> NIST Special Publication 800-56A: Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography (Revised)</cite></a>. March 2007 URL: <a href="http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf">http://csrc.nist.gov/publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf</a>',"SP800-57":'<a href="http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf"><cite>Recommendation for Key Management &#8211; Part 1: General (Revision 3)</cite></a>. SP800-57. July 2012. U.S. Department of Commerce/National Institute of Standards and Technology. URL: <a href="http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf">http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf</a>',"SP800-67":'<a href="http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf"><cite> Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher, Revised January 2012.</cite></a> SP-800-67 Revision 1. U.S. Department of Commerce/National Institute of Standards and Technology. URL: <a href="http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf">http://csrc.nist.gov/publications/nistpubs/800-67-Rev1/SP-800-67-Rev1.pdf</a>',"SPARQL-QUERY":'E. Prud\'hommeaux, A. Seaborne. <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/"><cite>SPARQL Query  Language for RDF.</a></cite> W3C Recommendation. 15 January 2008. URL: <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/">http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/</a>',"SPARQL-UPDATE":'S. Schenk, P. Gearon. <a href="http://www.w3.org/TR/2010/WD-sparql11-update-20100126/"><cite>SPARQL 1.1 Update.</cite></a>W3C Working Draft. 26 January 2010. URL: <a href="http://www.w3.org/TR/2010/WD-sparql11-update-20100126/">http://www.w3.org/TR/2010/WD-sparql11-update-20100126/</a>',"SPEC-VARIABILITY":'Dominique Haza&#235;l-Massieux; Lynne Rosenthal. <a href="http://www.w3.org/TR/2005/NOTE-spec-variability-20050831"><cite>Variability in Specifications.</cite></a> 31 August 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-spec-variability-20050831">http://www.w3.org/TR/2005/NOTE-spec-variability-20050831</a> ',"SPEECH-GRAMMAR":'Andrew Hunt; Scott McGlashan. <a href="http://www.w3.org/TR/2004/REC-speech-grammar-20040316"><cite>Speech Recognition Grammar Specification Version 1.0.</cite></a> 16 March 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-speech-grammar-20040316">http://www.w3.org/TR/2004/REC-speech-grammar-20040316</a> ',"SPEECH-SYNTHESIS":'Daniel C. Burnett; Mark R. Walker; Andrew Hunt. <a href="http://www.w3.org/TR/2004/REC-speech-synthesis-20040907"><cite>Speech Synthesis Markup Language (SSML) Version 1.0.</cite></a> 7 September 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-speech-synthesis-20040907">http://www.w3.org/TR/2004/REC-speech-synthesis-20040907</a> ',"SPEECH-SYNTHESIS11":'Zhi Wei Shuang (&#21452;&#24535;&#20255;); Daniel C. Burnett. <a href="http://www.w3.org/TR/2008/CR-speech-synthesis11-20081107"><cite>Speech Synthesis Markup Language (SSML) Version 1.1.</cite></a> 7 November 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-speech-synthesis11-20081107">http://www.w3.org/TR/2008/CR-speech-synthesis11-20081107</a> ',SPROT11:'Andy Seaborne; Lee Feigenbaum; Elias Torres. <a href="http://www.w3.org/TR/2005/WD-sprot11-20051024"><cite>SPARQL Protocol for RDF Using WSDL 1.1.</cite></a> 24 October 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-sprot11-20051024">http://www.w3.org/TR/2005/WD-sprot11-20051024</a> ',SRGB:'<a href="http://www.iec.ch/nr1899.htm"><cite>Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB.</cite></a> IEC 61966-2-1 (1999-10). ISBN: 2-8318-4989-6 - ICS codes: 33.160.60, 37.080 - TC 100 - 51 pp. URL: <a href="http://www.iec.ch/nr1899.htm">http://www.iec.ch/nr1899.htm</a>',SSE:'Ian Hickson; <a href="http://www.w3.org/TR/eventsource/"><cite>Server-Sent Events.</cite></a>W3C Editor Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/eventsource/">http://www.w3.org/TR/eventsource/</a> ',"SSE-ed":'Ian Hickson; <a href="http://dev.w3.org/html5/eventsource/"><cite>Server-Sent Events.</cite></a>W3C Editor Draft. (Work in progress.) URL: <a href="http://dev.w3.org/html5/eventsource/">http://dev.w3.org/html5/eventsource/</a> ',"SSML-SAYAS":'Daniel C. Burnett; et al. <a href="http://www.w3.org/TR/2005/NOTE-ssml-sayas-20050526"><cite>SSML 1.0 say-as attribute values.</cite></a> 26 May 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-ssml-sayas-20050526">http://www.w3.org/TR/2005/NOTE-ssml-sayas-20050526</a> ',SSML11REQS:'Daniel C. Burnett; Zhi Wei Shuang. <a href="http://www.w3.org/TR/2007/WD-ssml11reqs-20070611"><cite>Speech Synthesis Markup Language Version 1.1 Requirements.</cite></a> 11 June 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-ssml11reqs-20070611">http://www.w3.org/TR/2007/WD-ssml11reqs-20070611</a> ',STUN:'J. Rosenberg, R. Mahy, P. Matthews, D. Wing. <a href="http://tools.ietf.org/html/rfc5389"><cite>Session Traversal Utilities for NAT (STUN).</cite></a> October 2008. Internet RFC 5389. URL: <a href="http://tools.ietf.org/html/rfc5389">http://tools.ietf.org/html/rfc5389</a>',"STUN-URI":'S. Nandakumar,  G. Salgueiro, P. Jones, and M. Petit-Huguenin. <a href="http://tools.ietf.org/html/draft-nandakumar-rtcweb-stun-uri"><cite>URI Scheme for Session Traversal Utilities for NAT (STUN) Protocol.</cite></a> 12 March 2012. Internet Draft (work in progress). URL: <a href="http://tools.ietf.org/html/draft-nandakumar-rtcweb-stun-uri">http://tools.ietf.org/html/draft-nandakumar-rtcweb-stun-uri</a> ',SUITEB:'<a href="http://www.nsa.gov/ia/programs/suiteb_cryptography/"><cite>NSA Suite B Cryptography</cite></a>. URL: <a href="http://www.nsa.gov/ia/programs/suiteb_cryptography/">http://www.nsa.gov/ia/programs/suiteb_cryptography/</a> ',SUS3:'Cathy Hughes. <a href="http://www.unix.org/single_unix_specification/"><cite>The Single UNIX Specification, Version 3</cite></a>. 2004 URL: <a href="http://www.unix.org/single_unix_specification/">http://www.unix.org/single_unix_specification/</a>',SVG10:'Jon Ferraiolo. <a href="http://www.w3.org/TR/2001/REC-SVG-20010904"><cite>Scalable Vector Graphics (SVG) 1.0 Specification.</cite></a> 4 September 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-SVG-20010904">http://www.w3.org/TR/2001/REC-SVG-20010904</a> ',SVG11:'Erik Dahlstr&#246;m; et al. <a href="http://www.w3.org/TR/2011/REC-SVG11-20110816/"><cite>Scalable Vector Graphics (SVG) 1.1 (Second Edition).</cite></a> 16 August 2011. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2011/REC-SVG11-20110816/">http://www.w3.org/TR/2011/REC-SVG11-20110816/</a> ',SVG112:'Erik Dahlstr&#246;m; et al. <a href="http://www.w3.org/TR/2010/WD-SVG11-20100622"><cite>Scalable Vector Graphics (SVG) 1.1 (Second Edition).</cite></a> 22 June 2010. W3C Working Draft. (Work in progress). URL: <a href="http://www.w3.org/TR/2010/WD-SVG11-20100622">http://www.w3.org/TR/2010/WD-SVG11-20100622</a> ',SVG12:'Craig Northway; Dean Jackson. <a href="http://www.w3.org/TR/2005/WD-SVG12-20050413"><cite>Scalable Vector Graphics (SVG) Full 1.2 Specification.</cite></a> 13 April 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-SVG12-20050413">http://www.w3.org/TR/2005/WD-SVG12-20050413</a> ',SVG2REQS:'Dean Jackson. <a href="http://www.w3.org/TR/2002/WD-SVG2Reqs-20020422"><cite>SVG 1.1/1.2/2.0 Requirements.</cite></a> 22 April 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-SVG2Reqs-20020422">http://www.w3.org/TR/2002/WD-SVG2Reqs-20020422</a> ',SVGFILTER12:'Erik Dahlstr&#246;m. <a href="http://www.w3.org/TR/2007/WD-SVGFilter12-20070501"><cite>SVG Filters 1.2, Part 2: Language.</cite></a> 1 May 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-SVGFilter12-20070501">http://www.w3.org/TR/2007/WD-SVGFilter12-20070501</a> ',SVGFILTERPRIMER12:'Erik Dahlstr&#246;m. <a href="http://www.w3.org/TR/2007/WD-SVGFilterPrimer12-20070501"><cite>SVG Filters 1.2, Part 1: Primer.</cite></a> 1 May 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-SVGFilterPrimer12-20070501">http://www.w3.org/TR/2007/WD-SVGFilterPrimer12-20070501</a> ',SVGFILTERREQS12:'Erik Dahlstr&#246;m. <a href="http://www.w3.org/TR/2007/WD-SVGFilterReqs12-20070501"><cite>SVG Filter Requirements.</cite></a> 1 May 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-SVGFilterReqs12-20070501">http://www.w3.org/TR/2007/WD-SVGFilterReqs12-20070501</a> ',SVGMOBILE:'Tolga Capin. <a href="http://www.w3.org/TR/2003/REC-SVGMobile-20030114"><cite>Mobile SVG Profiles: SVG Tiny and SVG Basic.</cite></a> 14 January 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-SVGMobile-20030114">http://www.w3.org/TR/2003/REC-SVGMobile-20030114</a> ',SVGMOBILE12:'Chris Lilley; et al. <a href="http://www.w3.org/TR/2006/CR-SVGMobile12-20060810"><cite>Scalable Vector Graphics (SVG) Tiny 1.2 Specification.</cite></a> 10 August 2006. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/CR-SVGMobile12-20060810">http://www.w3.org/TR/2006/CR-SVGMobile12-20060810</a> ',SVGMOBILEREQS:'Rick Graham; Tolga Capin. <a href="http://www.w3.org/TR/2001/WD-SVGMobileReqs-20010803"><cite>SVG Mobile Requirements.</cite></a> 3 August 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-SVGMobileReqs-20010803">http://www.w3.org/TR/2001/WD-SVGMobileReqs-20010803</a> ',SVGPRINT12:'Craig Northway; et al. <a href="http://www.w3.org/TR/2007/WD-SVGPrint12-20071221"><cite>SVG Print 1.2, Part 2: Language.</cite></a> 21 December 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-SVGPrint12-20071221">http://www.w3.org/TR/2007/WD-SVGPrint12-20071221</a> ',SVGPRINTPRIMER12:'Anthony Grasso; Chris Lilley; Andrew Shellshear. <a href="http://www.w3.org/TR/2007/WD-SVGPrintPrimer12-20071221"><cite>SVG Print 1.2, Part 1: Primer.</cite></a> 21 December 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-SVGPrintPrimer12-20071221">http://www.w3.org/TR/2007/WD-SVGPrintPrimer12-20071221</a> ',SVGPRINTREQS:'Lee Klosterman; et al. <a href="http://www.w3.org/TR/2003/WD-SVGPrintReqs-20030218"><cite>SVG Printing Requirements.</cite></a> 18 February 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-SVGPrintReqs-20030218">http://www.w3.org/TR/2003/WD-SVGPrintReqs-20030218</a> ',SVGREQ:'Jon Ferraiolo. <a href="http://www.w3.org/TR/1998/WD-SVGReq-19981029"><cite>Scalable Vector Graphics (SVG) Requirements.</cite></a> 29 October 1998. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1998/WD-SVGReq-19981029">http://www.w3.org/TR/1998/WD-SVGReq-19981029</a> ',SVGTINY12:'Scott Hayman; et al. <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222"><cite>Scalable Vector Graphics (SVG) Tiny 1.2 Specification.</cite></a> 22 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-SVGTiny12-20081222">http://www.w3.org/TR/2008/REC-SVGTiny12-20081222</a> ',SVGTINY12REQS:'Andrew Emmons. <a href="http://www.w3.org/TR/2006/WD-SVGTiny12Reqs-20060810"><cite>SVGT 1.2 Requirements.</cite></a> 10 August 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-SVGTiny12Reqs-20060810">http://www.w3.org/TR/2006/WD-SVGTiny12Reqs-20060810</a> ',"SW-OOSD-PRIMER":'Phil Tetlow; et al. <a href="http://www.w3.org/TR/2006/NOTE-sw-oosd-primer-20060309"><cite>A Semantic Web Primer for Object-Oriented Software Developers.</cite></a> 9 March 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-sw-oosd-primer-20060309">http://www.w3.org/TR/2006/NOTE-sw-oosd-primer-20060309</a> ',"SWBP-CLASSES-AS-VALUES":'Natasha Noy. <a href="http://www.w3.org/TR/2005/NOTE-swbp-classes-as-values-20050405"><cite>Representing Classes As Property Values on the Semantic Web.</cite></a> 5 April 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-swbp-classes-as-values-20050405">http://www.w3.org/TR/2005/NOTE-swbp-classes-as-values-20050405</a> ',"SWBP-N-ARYRELATIONS":'Natasha Noy; Alan Rector. <a href="http://www.w3.org/TR/2006/NOTE-swbp-n-aryRelations-20060412"><cite>Defining N-ary Relations on the Semantic Web.</cite></a> 12 April 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-swbp-n-aryRelations-20060412">http://www.w3.org/TR/2006/NOTE-swbp-n-aryRelations-20060412</a> ',"SWBP-SKOS-CORE-GUIDE":'Alistair Miles; Dan Brickley. <a href="http://www.w3.org/TR/2005/WD-swbp-skos-core-guide-20051102"><cite>SKOS Core Guide.</cite></a> 2 November 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-swbp-skos-core-guide-20051102">http://www.w3.org/TR/2005/WD-swbp-skos-core-guide-20051102</a> ',"SWBP-SKOS-CORE-SPEC":'Alistair Miles; Dan Brickley. <a href="http://www.w3.org/TR/2005/WD-swbp-skos-core-spec-20051102"><cite>SKOS Core Vocabulary Specification.</cite></a> 2 November 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-swbp-skos-core-spec-20051102">http://www.w3.org/TR/2005/WD-swbp-skos-core-spec-20051102</a> ',"SWBP-SPECIFIED-VALUES":'Alan Rector. <a href="http://www.w3.org/TR/2005/NOTE-swbp-specified-values-20050517"><cite>Representing Specified Values in OWL: &quot;value partitions&quot; and &quot;value sets&quot;.</cite></a> 17 May 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-swbp-specified-values-20050517">http://www.w3.org/TR/2005/NOTE-swbp-specified-values-20050517</a> ',"SWBP-THESAURUS-PUBGUIDE":'Alistair Miles. <a href="http://www.w3.org/TR/2005/WD-swbp-thesaurus-pubguide-20050517"><cite>Quick Guide to Publishing a Thesaurus on the Semantic Web.</cite></a> 17 May 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-swbp-thesaurus-pubguide-20050517">http://www.w3.org/TR/2005/WD-swbp-thesaurus-pubguide-20050517</a> ',"SWBP-VOCAB-PUB":'Jon Phipps; Diego Berrueta. <a href="http://www.w3.org/TR/2008/NOTE-swbp-vocab-pub-20080828"><cite>Best Practice Recipes for Publishing RDF Vocabularies.</cite></a> 28 August 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-swbp-vocab-pub-20080828">http://www.w3.org/TR/2008/NOTE-swbp-vocab-pub-20080828</a> ',"SWBP-XSCH-DATATYPES":'Jeremy J. Carroll; Jeff Z. Pan. <a href="http://www.w3.org/TR/2006/NOTE-swbp-xsch-datatypes-20060314"><cite>XML Schema Datatypes in RDF and OWL.</cite></a> 14 March 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-swbp-xsch-datatypes-20060314">http://www.w3.org/TR/2006/NOTE-swbp-xsch-datatypes-20060314</a> ',SXBL:'Ian Hickson; Jon Ferraiolo; David Hyatt. <a href="http://www.w3.org/TR/2005/WD-sXBL-20050815"><cite>SVG\'s XML Binding Language (sXBL).</cite></a> 15 August 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-sXBL-20050815">http://www.w3.org/TR/2005/WD-sXBL-20050815</a> ',SXSWGRIDS:'Khoi Vinh; Mark Boulton. <a href="http://www.subtraction.com/pics/0703/grids_are_good.pdf"><cite>Grids Are Good.</cite></a> March 2007. SXSW Interactive, Austin, TX. URL: <a href="http://www.subtraction.com/pics/0703/grids_are_good.pdf">http://www.subtraction.com/pics/0703/grids_are_good.pdf</a> ',"SYMM-MODULES":'Ted Wugofski; Patrick Schmitz; Warner ten Kate. <a href="http://www.w3.org/TR/1999/NOTE-SYMM-modules-19990223"><cite>Synchronized Multimedia Modules based upon SMIL 1.0.</cite></a> 23 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-SYMM-modules-19990223">http://www.w3.org/TR/1999/NOTE-SYMM-modules-19990223</a> ',SYSINFOAPI:'Dzung Tran, Max Froumentin, et al. <a href="http://www.w3.org/TR/2010/WD-system-info-api-20100202/"><cite>The System Information API.</cite></a> 2 February 2010. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-system-info-api-20100202/">http://www.w3.org/TR/2010/WD-system-info-api-20100202/</a>',HTMLMEDIACAPTURE:'Anssi Kostiainen; Ilkka Oksanen; Dominique Hazaël-Massieux. <a href="http://www.w3.org/TR/2012/WD-html-media-capture-20120529/"><cite>HTML Media Capture.</cite></a> 29 May 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-html-media-capture-20120529/">http://www.w3.org/TR/2012/WD-html-media-capture-20120529/</a>',TAGLINK20030116:'Ian Jacobs (Scribe). <a href="http://www.w3.org/2003/01/16-tag-xlink"><cite>Minutes of 16 Jan 2003 discussion on Linking in XML Documents.</cite></a> 2003. W3C TAG archives. URL: <a href="http://www.w3.org/2003/01/16-tag-xlink">http://www.w3.org/2003/01/16-tag-xlink</a> ',"TEST-METADATA":'Patrick Curran; Karl Dubost. <a href="http://www.w3.org/TR/2005/NOTE-test-metadata-20050914"><cite>Test Metadata.</cite></a> 14 September 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-test-metadata-20050914">http://www.w3.org/TR/2005/NOTE-test-metadata-20050914</a> ',THEGRID:"Allen Hurlburt. <cite>Grid: A Modular System for the Design and Production of Newpapers, Magazines, and Books.</cite> Wiley. 1982. ISBN 0-471-28923-X.",TIMESHEETS:'Pablo Cesar; Dick Bulterman; Petri Vuorimaa. <a href="http://www.w3.org/TR/2008/WD-timesheets-20080110"><cite>SMIL Timesheets 1.0.</cite></a> 10 January 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-timesheets-20080110">http://www.w3.org/TR/2008/WD-timesheets-20080110</a> ',TIMEZONE:'Martin D&#252;rst; et al. <a href="http://www.w3.org/TR/2005/NOTE-timezone-20051013"><cite>Working with Time Zones.</cite></a> 13 October 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-timezone-20051013">http://www.w3.org/TR/2005/NOTE-timezone-20051013</a> ',TLS:'T. Dierks, E. Rescorla. <a href="http://tools.ietf.org/html/rfc5246"><cite>The Transport Layer Security (TLS) Protocol, Version 1.2.</cite></a> August 2008. Internet RFC 5246. URL: <a href="http://tools.ietf.org/html/rfc5246">http://tools.ietf.org/html/rfc5246</a>',Tobin:'R. Tobin. <a href="http://lists.w3.org/Archives/Member/w3c-xml-core-wg/2000OctDec/0054"><cite>Infoset for external entities.</cite></a> 2000. URL: <a href="http://lists.w3.org/Archives/Member/w3c-xml-core-wg/2000OctDec/0054">http://lists.w3.org/Archives/Member/w3c-xml-core-wg/2000OctDec/0054</a> [XML Core mailing list, <a href="http://cgi.w3.org/MemberAccess/AccessRequest">W3C Member Only</a>].',"TOUCH-EVENTS":'Matt Brubeck; Sangwhan Moon; Doug Schepers; <a href="http://www.w3.org/TR/touch-events/"><cite>Touch Events version 1</cite></a> URL: <a href="http://www.w3.org/TR/touch-events/">http://www.w3.org/TR/touch-events</a>',"TRACKING-COMPLIANCE":'Justin Brookman; Sean Harvey; Erica Newland; Heather West. <a href="http://www.w3.org/TR/tracking-compliance/"><cite>Tracking Compliance and Scope.</cite></a> 13 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-tracking-compliance-20120313/">http://www.w3.org/TR/2012/WD-tracking-compliance-20120313/</a> ',"TRACKING-DNT":'Roy T. Fielding; David Singer. <a href="http://www.w3.org/TR/tracking-dnt/"><cite>Tracking Preference Expression (DNT).</cite></a> 13 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-tracking-dnt-20120313/">http://www.w3.org/TR/2012/WD-tracking-dnt-20120313/</a> ',TRIPLEDES:'<a href="http://www.ansi.org/"><cite>ANSI X9.52: Triple Data Encryption Algorithm Modes of Operation. 1998</cite></a>. URL: <a href="http://www.ansi.org/">http://www.ansi.org/</a>',"TTAF1-DFXP":'Glenn Adams. <a href="http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116"><cite>Timed Text (TT) Authoring Format 1.0&#160;&#8211; Distribution Format Exchange Profile (DFXP).</cite></a> 16 November 2006. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116">http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116</a> ',"TTAF1-REQ":'Glenn Adams. <a href="http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427"><cite>Timed Text (TT) Authoring Format 1.0 Use Cases and Requirements.</cite></a> 27 April 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427">http://www.w3.org/TR/2006/NOTE-ttaf1-req-20060427</a> ',TURINGTEST:'Matt May. <a href="http://www.w3.org/TR/2005/NOTE-turingtest-20051123"><cite>Inaccessibility of CAPTCHA.</cite></a> 23 November 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-turingtest-20051123">http://www.w3.org/TR/2005/NOTE-turingtest-20051123</a> ',TURN:'P. Mahy, P. Matthews, J. Rosenberg. <a href="http://tools.ietf.org/html/rfc5766"><cite>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN).</cite></a> April 2010. Internet RFC 5766. URL: <a href="http://tools.ietf.org/html/rfc5766">http://tools.ietf.org/html/rfc5766</a>',"TURN-URI":'M. Petit-Huguenin, S. Nandakumar,  G. Salgueiro, and  P. Jones. <a href="http://tools.ietf.org/html/draft-petithuguenin-behave-turn-uris"><cite>Traversal Using Relays around NAT (TURN) Uniform Resource Identifiers.</cite></a> 12 March 2012. Internet Draft (work in progress). URL: <a href="http://tools.ietf.org/html/draft-petithuguenin-behave-turn-uris">http://tools.ietf.org/html/draft-petithuguenin-behave-turn-uris</a> ',TURTLE:'David Beckett, Tim Berners-Lee. <a href="http://www.w3.org/TeamSubmission/turtle/"><cite>Turtle: Terse RDF Triple Language.</cite></a> January 2008. W3C Team Submission. URL: <a href="http://www.w3.org/TeamSubmission/turtle/">http://www.w3.org/TeamSubmission/turtle/</a> ',TUSSLE:"David D. Clark et.al.<a href='http://groups.csail.mit.edu/ana/Publications/PubPDFs/Tussle%20in%20Cyberspace%20Defining%20Tomorrows%20Internet%202005%27s%20Internet.pdf'><cite>Tussle in Cyberspace: Defining Tomorrow's Internet.</cite></a> June 2005. IEEE/ACM Transactions on Networking","TVWEB-URI-REQUIREMENTS":'Gomar Thomas; Warner ten Kate; Craig Finseth. <a href="http://www.w3.org/TR/1999/NOTE-TVWeb-URI-Requirements-19991021"><cite>TV Broadcast URI Schemes Requirements.</cite></a> 21 October 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-TVWeb-URI-Requirements-19991021">http://www.w3.org/TR/1999/NOTE-TVWeb-URI-Requirements-19991021</a> ',"TYPED-ARRAYS":'David Herman, Kenneth Russell. <a href="https://www.khronos.org/registry/typedarray/specs/latest/"><cite>Typed Arrays</cite></a> Khronos Working Draft. (Work in progress.) URL: <a href="https://www.khronos.org/registry/typedarray/specs/latest/">https://www.khronos.org/registry/typedarray/specs/latest/</a> ',TZDB:"<a href='http://www.twinsun.com/tz/tz-link.htm'><cite>Time Zone Information Database.</cite></a> URL: <a href='http://www.twinsun.com/tz/tz-link.htm'>http://www.twinsun.com/tz/tz-link.htm</a>",UAAG10:'Jon Gunderson; Ian Jacobs; Eric Hansen. <a href="http://www.w3.org/TR/2002/REC-UAAG10-20021217"><cite>User Agent Accessibility Guidelines 1.0.</cite></a> 17 December 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-UAAG10-20021217">http://www.w3.org/TR/2002/REC-UAAG10-20021217</a> ',"UAAG10-TECHS":'Ian Jacobs; Jon Gunderson; Eric Hansen. <a href="http://www.w3.org/TR/2002/NOTE-UAAG10-TECHS-20021217"><cite>Techniques for User Agent Accessibility Guidelines 1.0.</cite></a> 17 December 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-UAAG10-TECHS-20021217">http://www.w3.org/TR/2002/NOTE-UAAG10-TECHS-20021217</a> ',UAAG20:'Jan Richards; James Allan. <a href="http://www.w3.org/TR/2009/WD-UAAG20-20090311"><cite>User Agent Accessibility Guidelines (UAAG) 2.0.</cite></a> 11 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-UAAG20-20090311">http://www.w3.org/TR/2009/WD-UAAG20-20090311</a> ',"UAAG20-REQUIREMENTS":'Jim Allan; Jan Richards. <a href="http://www.w3.org/TR/2007/WD-UAAG20-requirements-20071031"><cite>User Agent Accessibility Guidelines 2.0 Requirements.</cite></a> 31 October 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-UAAG20-requirements-20071031">http://www.w3.org/TR/2007/WD-UAAG20-requirements-20071031</a> ',UAX11:'Asmus Freytag. <a href="http://www.unicode.org/unicode/reports/tr11/tr11-8.html"><cite>East Asian Width.</cite></a> 23 March 2001. Unicode Standard Annex #11. URL: <a href="http://www.unicode.org/unicode/reports/tr11/tr11-8.html">http://www.unicode.org/unicode/reports/tr11/tr11-8.html</a> ',UAX14:'Asmus Freytag. <a href="http://www.unicode.org/unicode/reports/tr14/tr14-17.html"><cite>Line Breaking Properties.</cite></a> 29 March 2005. Unicode Standard Annex #14. URL: <a href="http://www.unicode.org/unicode/reports/tr14/tr14-17.html">http://www.unicode.org/unicode/reports/tr14/tr14-17.html</a> ',UAX21:'Mark Davis. <a href="http://www.unicode.org/reports/tr21/tr21-5.html"><cite>Case Mappings.</cite></a> 26 March 2001. Unicode Standard Annex #21. URL: <a href="http://www.unicode.org/reports/tr21/tr21-5.html">http://www.unicode.org/reports/tr21/tr21-5.html</a> ',UAX24:'Mark Davis. <a href="http://www.unicode.org/unicode/reports/tr24/tr24-7.html"><cite>Script Names.</cite></a> 28 March 2005. Unicode Standard Annex #24. URL: <a href="http://www.unicode.org/unicode/reports/tr24/tr24-7.html">http://www.unicode.org/unicode/reports/tr24/tr24-7.html</a> ',UAX27:'Mark Davis; Michael Everson; et al. <a href="http://www.unicode.org/unicode/reports/tr27/tr27-4.html"><cite>Unicode 3.1.0.</cite></a> 16 May 2001. Unicode Standard Annex #27. URL: <a href="http://www.unicode.org/unicode/reports/tr27/tr27-4.html">http://www.unicode.org/unicode/reports/tr27/tr27-4.html</a> ',UAX29:'Mark Davis. <a href="http://www.unicode.org/unicode/reports/tr29/tr29-9.html"><cite>Text Boundaries.</cite></a> 25 March 2005. Unicode Standard Annex #29. URL: <a href="http://www.unicode.org/unicode/reports/tr29/tr29-9.html">http://www.unicode.org/unicode/reports/tr29/tr29-9.html</a> ',"UNDERSTANDING-WCAG20":'Gregg Vanderheiden; et al. <a href="http://www.w3.org/TR/2008/NOTE-UNDERSTANDING-WCAG20-20081211"><cite>Understanding WCAG 2.0.</cite></a> 11 December 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-UNDERSTANDING-WCAG20-20081211">http://www.w3.org/TR/2008/NOTE-UNDERSTANDING-WCAG20-20081211</a> ',UNICODE:'The Unicode Consortium. <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html"><cite>The Unicode Standard.</cite></a> 2003. Defined by: The Unicode Standard, Version 4.0 (Boston, MA, Addison-Wesley, ISBN 0-321-18578-1), as updated from time to time by the publication of new versions URL: <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html">http://www.unicode.org/unicode/standard/versions/enumeratedversions.html</a> ',"UNICODE-XML":'Asmus Freytag; Martin D&#252;rst. <a href="http://www.w3.org/TR/2007/NOTE-unicode-xml-20070516"><cite>Unicode in XML and other Markup Languages.</cite></a> 16 May 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-unicode-xml-20070516">http://www.w3.org/TR/2007/NOTE-unicode-xml-20070516</a> ',UNICODE310:'The Unicode Consortium. <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode_3_1_0"><cite>The Unicode Standard: Version 3.1.0.</cite></a> Addison Wesley Longman. 2000. ISBN 0-201-61633-5. For more information, consult the Unicode Consortium\'s home page at &lt;a href=&quot;http://www.unicode.org/&quot;&gt;http://www.unicode.org/&lt;/a&gt; URL: <a href="http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode_3_1_0">http://www.unicode.org/unicode/standard/versions/enumeratedversions.html#Unicode_3_1_0</a> ',UNICODE4:'The Unicode Consortium. <a href="http://www.unicode.org/versions/Unicode4.1.0/"><cite>The Unicode Standard, Version 4.1.0.</cite></a> Defined by: The Unicode Standard, Version 4.0 (Boston, MA, Addison-Wesley, 2003. ISBN 0-321-18578-1), as amended by Unicode 4.0.1 (http://www.unicode.org/versions/Unicode4.0.1) and by Unicode 4.1.0 (http://www.unicode.org/versions/Unicode4.1.0) URL: <a href="http://www.unicode.org/versions/Unicode4.1.0/">http://www.unicode.org/versions/Unicode4.1.0/</a> ',UNICODE5:'The Unicode Consortium. <a href="http://www.unicode.org/versions/Unicode5.1.0/"><cite>The Unicode Standard, Version 5.1.0.</cite></a> Addison-Wesley. 2007. ISBN 0-321-48091-0. URL: <a href="http://www.unicode.org/versions/Unicode5.1.0/">http://www.unicode.org/versions/Unicode5.1.0/</a> ',"UPNP-AVARCH2":'John Ritchie, Thomas Kuehnel, Wouter van der Beek, Jeffrey Kang. <a href="http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf"><cite>UPnP AV Architecture:2</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-AVArchitecture-v2-20101231.pdf</a>',"UPNP-AVT3":'<a href="http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf"><cite>AVTransport:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-AVTransport-v3-Service-20101231.pdf</a>',"UPNP-CD4":'<a href="http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf"><cite>ContentDirectory:4 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ContentDirectory-v4-Service-20101231.pdf</a>',"UPNP-CM3":'<a href="http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf"><cite>ConnectionManager:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ConnectionManager-v3-Service-20101231.pdf</a>',"UPNP-DEVICEARCH":'<a href="http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf"><cite>UPnP Device Architecture 1.0</cite></a>. 15 October 2008. UPnP Forum. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf">http://www.upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.0-20081015.pdf</a>',"UPNP-DEVICEARCH11":'<a href="http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf"><cite>UPnP Device Architecture 1.1</cite></a>. 15 October 2008. UPnP Forum. PDF document. URL: <a href="http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf">http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf</a>',"UPNP-DP1":'<a href="http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf"><cite>DeviceProtection:1 Service</cite></a>. 24 February 2011. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf">http://www.upnp.org/specs/gw/UPnP-gw-DeviceProtection-v1-Service-20110224.pdf</a>',"UPNP-MR3":'<a href="http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf"><cite>MediaRenderer:3 Device</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-MediaRenderer-v3-Device-20101231.pdf</a>',"UPNP-MS4":'<a href="http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf"><cite>MediaServer:4 Device</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf">http://upnp.org/specs/av/UPnP-av-MediaServer-v4-Device.pdf</a>',"UPNP-RC3":'<a href="http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf"><cite>RenderingControl:3 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. PDF document. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-RenderingControl-v3-Service-20101231.pdf</a>',"UPNP-SR2":'<a href="http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf"><cite>ScheduledRecording:2 Service</cite></a>. 31 December 2010. UPnP Forum. Standardized DCP. For UPnP Version 1.0. URL: <a href="http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf">http://www.upnp.org/specs/av/UPnP-av-ScheduledRecording-v2-Service-20101231.pdf</a>',URI:'T. Berners-Lee; R. Fielding; L. Masinter. <a href="http://www.ietf.org/rfc/rfc3986.txt"><cite>Uniform Resource Identifiers (URI): generic syntax.</cite></a> January 2005. Internet RFC 3986. URL: <a href="http://www.ietf.org/rfc/rfc3986.txt">http://www.ietf.org/rfc/rfc3986.txt</a> ',"URI-CLARIFICATION":'URI Planning Interest Group. <a href="http://www.w3.org/TR/2001/NOTE-uri-clarification-20010921"><cite>URIs, URLs, and URNs: Clarifications and Recommendations 1.0.</cite></a> 21 September 2001. W3C Note. URL: <a href="http://www.w3.org/TR/2001/NOTE-uri-clarification-20010921">http://www.w3.org/TR/2001/NOTE-uri-clarification-20010921</a> ',"URI-TEMPLATE":'Joe Gregorio; Roy T. Fielding; Marc Hadley; Mark Nottingham; David Orchard. <a href="http://www.rfc-editor.org/rfc/rfc6570.txt"><cite>URI Template.</cite></a> March 2012. Internet RFC 6570. URL: <a href="http://www.rfc-editor.org/rfc/rfc6570.txt">http://www.rfc-editor.org/rfc/rfc6570.txt</a> ',URN:'R. Moats. <a href="http://www.ietf.org/rfc/rfc2141.txt"><cite>URN Syntax.</cite></a> IETF RFC 2141. May 1997.  URL: <a href="http://www.ietf.org/rfc/rfc2141.txt">http://www.ietf.org/rfc/rfc2141.txt</a>',"URN-OID":'M. Mealling. <a href="http://www.ietf.org/rfc/rfc3061.txt"><cite>A URN Namespace of Object Identifiers. </cite></a>. IETF RFC 3061. February 2001. URL: <a href="http://www.ietf.org/rfc/rfc3061.txt">http://www.ietf.org/rfc/rfc3061.txt</a>',"UTF-8":'F. Yergeau. <a href="http://www.ietf.org/rfc/rfc3629.txt"><cite>UTF-8, a transformation format of ISO 10646</cite></a>. IETF RFC 3629. November 2003. URL: <a href="http://www.ietf.org/rfc/rfc3629.txt">http://www.ietf.org/rfc/rfc3629.txt</a>',"UTF-16":'P. Hoffman , F. Yergeau. <a href="http://www.ietf.org/rfc/rfc2781.txt"><cite>UTF-16, an encoding of ISO 10646.</cite></a> IETF RFC 2781. February 2000.   URL: <a href="http://www.ietf.org/rfc/rfc2781.txt">http://www.ietf.org/rfc/rfc2781.txt</a>',UTR24:'Mark Davis. <a href="http://www.unicode.org/unicode/reports/tr24/tr24-3.html"><cite>Script Names.</cite></a> 27 September 2001. Unicode Technical Report #24. URL: <a href="http://www.unicode.org/unicode/reports/tr24/tr24-3.html">http://www.unicode.org/unicode/reports/tr24/tr24-3.html</a> ',"VBI-REQS":'Kenneth G. Rehor. <a href="http://www.w3.org/TR/2002/WD-vbi-reqs-20020808"><cite>Voice Browser Interoperation: Requirements.</cite></a> 8 August 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-vbi-reqs-20020808">http://www.w3.org/TR/2002/WD-vbi-reqs-20020808</a> ',VOICE:'David Raggett; Or Ben-Nattan. <a href="http://www.w3.org/TR/1998/NOTE-voice-0128"><cite>Voice Browsers.</cite></a> 28 January 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-voice-0128">http://www.w3.org/TR/1998/NOTE-voice-0128</a> ',"VOICE-ARCHITECTURE":'Michael K. Brown; D. A. Dahl. <a href="http://www.w3.org/TR/1999/WD-voice-architecture-19991223"><cite>Model Architecture for Voice Browser Systems.</cite></a> 23 December 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-voice-architecture-19991223">http://www.w3.org/TR/1999/WD-voice-architecture-19991223</a> ',"VOICE-DIALOG-REQS":'Scott McGlashan. <a href="http://www.w3.org/TR/1999/WD-voice-dialog-reqs-19991223"><cite>Dialog Requirements for Voice Markup Languages.</cite></a> 23 December 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-voice-dialog-reqs-19991223">http://www.w3.org/TR/1999/WD-voice-dialog-reqs-19991223</a> ',"VOICE-GRAMMAR-REQS":'Michael K. Brown. <a href="http://www.w3.org/TR/1999/WD-voice-grammar-reqs-19991223"><cite>Grammar Representation Requirements for Voice Markup Languages.</cite></a> 23 December 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-voice-grammar-reqs-19991223">http://www.w3.org/TR/1999/WD-voice-grammar-reqs-19991223</a> ',"VOICE-INTRO":'Jim Larson. <a href="http://www.w3.org/TR/2000/WD-voice-intro-20001204"><cite>Voice Browsers, Introduction.</cite></a> 4 December 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-voice-intro-20001204">http://www.w3.org/TR/2000/WD-voice-intro-20001204</a> ',"VOICE-NLU-REQS":'Deborah Dahl. <a href="http://www.w3.org/TR/1999/WD-voice-nlu-reqs-19991223"><cite>Natural Language Processing Requirements for Voice Markup Languages.</cite></a> 23 December 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-voice-nlu-reqs-19991223">http://www.w3.org/TR/1999/WD-voice-nlu-reqs-19991223</a> ',"VOICE-TTS-REQS":'Andrew Hunt. <a href="http://www.w3.org/TR/1999/WD-voice-tts-reqs-19991223"><cite>Speech Synthesis Markup Requirements for Voice Markup Languages.</cite></a> 23 December 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-voice-tts-reqs-19991223">http://www.w3.org/TR/1999/WD-voice-tts-reqs-19991223</a> ',VOICEXML20:'Brad Porter; et al. <a href="http://www.w3.org/TR/2004/REC-voicexml20-20040316"><cite>Voice Extensible Markup Language (VoiceXML) Version 2.0.</cite></a> 16 March 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-voicexml20-20040316">http://www.w3.org/TR/2004/REC-voicexml20-20040316</a> ',VOICEXML21:'Scott McGlashan; et al. <a href="http://www.w3.org/TR/2007/REC-voicexml21-20070619"><cite>Voice Extensible Markup Language (VoiceXML) 2.1.</cite></a> 19 June 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-voicexml21-20070619">http://www.w3.org/TR/2007/REC-voicexml21-20070619</a> ',VOICEXML30:'Paolo Baggia; et al. <a href="http://www.w3.org/TR/2008/WD-voicexml30-20081219"><cite>Voice Extensible Markup Language (VoiceXML) 3.0.</cite></a> 19 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-voicexml30-20081219">http://www.w3.org/TR/2008/WD-voicexml30-20081219</a> ',VXML30REQS:'Emily Candell; Jeff Hoepfinger. <a href="http://www.w3.org/TR/2008/WD-vxml30reqs-20080808"><cite>Voice Extensible Markup Language (VoiceXML) 3.0 Requirements.</cite></a> 8 August 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-vxml30reqs-20080808">http://www.w3.org/TR/2008/WD-vxml30reqs-20080808</a> ',"WAC-ORIENTATION-API":'WAC Application Services Ltd. <a href="http://specs.wacapps.net/2.0/jun2011/deviceapis/orientation.html"><cite>Device APIs: The orientation module</cite></a> 28 January 2011. WAC 2.0 Proposed Release Version (PRV) URL: <a href="http://specs.wacapps.net/2.0/jun2011/deviceapis/orientation.html">http://specs.wacapps.net/2.0/jun2011/deviceapis/orientation.html</a> ',"WAC-SENSOR-API":'WAC Application Services Ltd. <a href="http://specs.wacapps.net/2.0/jun2011/deviceapis/sensors.html"><cite>Device APIs: The sensor module</cite></a> July 2011. WAC Ipanema Editor\'s Draft. URL: <a href="http://specs.wacapps.net/2.0/jun2011/deviceapis/sensors.html">http://specs.wacapps.net/2.0/jun2011/deviceapis/sensors.html</a> ',"WAI-AGE-LITERATURE":'Andrew Arch. <a href="http://www.w3.org/TR/2008/WD-wai-age-literature-20080514"><cite>Web Accessibility for Older Users: A Literature Review.</cite></a> 14 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-wai-age-literature-20080514">http://www.w3.org/TR/2008/WD-wai-age-literature-20080514</a> ',"WAI-ARIA":'Lisa Pappas; et al. <a href="http://www.w3.org/TR/2009/WD-wai-aria-20090224"><cite>Accessible Rich Internet Applications (WAI-ARIA) 1.0.</cite></a> 24 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-wai-aria-20090224">http://www.w3.org/TR/2009/WD-wai-aria-20090224</a> ',"WAI-ARIA-IMPLEMENTATION":'Michael Cooper; Aaron Leventhal. <a href="http://www.w3.org/TR/2009/WD-wai-aria-implementation-20090224"><cite>WAI-ARIA 1.0 User Agent Implementation Guide.</cite></a> 24 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-wai-aria-implementation-20090224">http://www.w3.org/TR/2009/WD-wai-aria-implementation-20090224</a> ',"WAI-ARIA-PRACTICES":'Michael Cooper; Richard Schwerdtfeger; Lisa Pappas. <a href="http://www.w3.org/TR/2009/WD-wai-aria-practices-20090224"><cite>WAI-ARIA Best Practices.</cite></a> 24 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-wai-aria-practices-20090224">http://www.w3.org/TR/2009/WD-wai-aria-practices-20090224</a> ',"WAI-ARIA-PRIMER":'Richard Schwerdtfeger; Michael Cooper; Lisa Pappas. <a href="http://www.w3.org/TR/2008/WD-wai-aria-primer-20080204"><cite>WAI-ARIA Primer.</cite></a> 4 February 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-wai-aria-primer-20080204">http://www.w3.org/TR/2008/WD-wai-aria-primer-20080204</a> ',"WAI-ARIA-ROADMAP":'Richard Schwerdtfeger. <a href="http://www.w3.org/TR/2008/WD-wai-aria-roadmap-20080204"><cite>Roadmap for Accessible Rich Internet Applications (WAI-ARIA Roadmap).</cite></a> 4 February 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-wai-aria-roadmap-20080204">http://www.w3.org/TR/2008/WD-wai-aria-roadmap-20080204</a> ',WCA:'Johan Hjelm; Jim Pitkow; Henrik Frystyk Nielsen. <a href="http://www.w3.org/TR/1999/NOTE-WCA-19990319"><cite>Web Characterization: From working group to activity.</cite></a> 19 March 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-WCA-19990319">http://www.w3.org/TR/1999/NOTE-WCA-19990319</a> ',WCAG:'Wendy Chisholm; Gregg Vanderheiden; Ian Jacobs. <a href="http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505"><cite>Web Content Accessibility Guidelines 1.0.</cite></a> 5 May 1999. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505">http://www.w3.org/TR/1999/WAI-WEBCONTENT-19990505</a> ',"WCAG10-CORE-TECHS":'Gregg Vanderheiden; Ian Jacobs; Wendy Chisholm. <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-CORE-TECHS-20001106"><cite>Core Techniques for Web Content Accessibility Guidelines 1.0.</cite></a> 6 November 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-CORE-TECHS-20001106">http://www.w3.org/TR/2000/NOTE-WCAG10-CORE-TECHS-20001106</a> ',"WCAG10-CSS-TECHS":'Gregg Vanderheiden; Ian Jacobs; Wendy Chisholm. <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-CSS-TECHS-20001106"><cite>CSS Techniques for Web Content Accessibility Guidelines 1.0.</cite></a> 6 November 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-CSS-TECHS-20001106">http://www.w3.org/TR/2000/NOTE-WCAG10-CSS-TECHS-20001106</a> ',"WCAG10-HTML-TECHS":'Wendy Chisholm; Gregg Vanderheiden; Ian Jacobs. <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-HTML-TECHS-20001106"><cite>HTML Techniques for Web Content Accessibility Guidelines 1.0.</cite></a> 6 November 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-HTML-TECHS-20001106">http://www.w3.org/TR/2000/NOTE-WCAG10-HTML-TECHS-20001106</a> ',"WCAG10-TECHS":'Gregg Vanderheiden; Ian Jacobs; Wendy Chisholm. <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-TECHS-20001106"><cite>Techniques for Web Content Accessibility Guidelines 1.0.</cite></a> 6 November 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-WCAG10-TECHS-20001106">http://www.w3.org/TR/2000/NOTE-WCAG10-TECHS-20001106</a> ',"WCAG2-REQ":'Gregg Vanderheiden; Wendy Chisholm; John Slatin. <a href="http://www.w3.org/TR/2006/NOTE-wcag2-req-20060425"><cite>Requirements for WCAG 2.0.</cite></a> 25 April 2006. W3C Note. URL: <a href="http://www.w3.org/TR/2006/NOTE-wcag2-req-20060425">http://www.w3.org/TR/2006/NOTE-wcag2-req-20060425</a> ',"WCAG2-TECH-REQ":'Michael Cooper. <a href="http://www.w3.org/TR/2003/WD-wcag2-tech-req-20030207"><cite>Requirements for WCAG 2.0 Checklists and Techniques.</cite></a> 7 February 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-wcag2-tech-req-20030207">http://www.w3.org/TR/2003/WD-wcag2-tech-req-20030207</a> ',WCAG20:'Michael Cooper; et al. <a href="http://www.w3.org/TR/2008/REC-WCAG20-20081211"><cite>Web Content Accessibility Guidelines (WCAG) 2.0.</cite></a> 11 December 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-WCAG20-20081211">http://www.w3.org/TR/2008/REC-WCAG20-20081211</a> ',"WCAG20-TECHS":'Michael Cooper; et al. <a href="http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211"><cite>Techniques for WCAG 2.0.</cite></a> 11 December 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211">http://www.w3.org/TR/2008/NOTE-WCAG20-TECHS-20081211</a> ',WCSS11:'Open Mobile Alliance. <a href="http://www.openmobilealliance.org/technical/release_program/docs/Browsing/V2_3-20080331-A/OMA-WAP-WCSS-V1_1-20061020-A.pdf"><cite>Wireless CSS Specification.</cite></a> October 2006. Approved Version 1.1. URL: <a href="http://www.openmobilealliance.org/technical/release_program/docs/Browsing/V2_3-20080331-A/OMA-WAP-WCSS-V1_1-20061020-A.pdf">http://www.openmobilealliance.org/technical/release_program/docs/Browsing/V2_3-20080331-A/OMA-WAP-WCSS-V1_1-20061020-A.pdf</a> ',WCSS12:'Open Mobile Alliance. <a href="http://www.openmobilealliance.org/ftp/Public_documents/MCE/MAE/Permanent_documents/OMA-TS-WCSS-V1_2-20070921-D.zip"><cite>Wireless CSS Specification Version 1.2.</cite></a> 21 September 2007. (Work in progress.) URL: <a href="http://www.openmobilealliance.org/ftp/Public_documents/MCE/MAE/Permanent_documents/OMA-TS-WCSS-V1_2-20070921-D.zip">http://www.openmobilealliance.org/ftp/Public_documents/MCE/MAE/Permanent_documents/OMA-TS-WCSS-V1_2-20070921-D.zip</a> ',"WEBAPPS-MANIFEST-API":'Anant Narayanan. <a href="http://dvcs.w3.org/hg/app-manifest/raw-file/tip/index.html"><cite>Web Application Manifest Format and Management APIs</cite></a>. W3C Editor\'s Draft. (Work in progress.) URL: <a href="http://dvcs.w3.org/hg/app-manifest/raw-file/tip/index.html">http://dvcs.w3.org/hg/app-manifest/raw-file/tip/index.html</a> ',"WEBAPP-PRIVACY-BESTPRACTICES":'Frederick Hirsch. <a href="http://www.w3.org/TR/app-privacy-bp/"><cite>Web Application Privacy Best Practices</cite></a>. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/app-privacy-bp/">http://www.w3.org/TR/app-privacy-bp/</a> ',"WEB-FORMS-2":'Ian Hickson. <a href="http://www.w3.org/TR/2006/WD-web-forms-2-20060821"><cite>Web Forms 2.0.</cite></a> 21 August 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-web-forms-2-20060821">http://www.w3.org/TR/2006/WD-web-forms-2-20060821</a> ',WEBARCH:'Norman Walsh; Ian Jacobs. <a href="http://www.w3.org/TR/2004/REC-webarch-20041215/"><cite>Architecture of the World Wide Web, Volume One.</cite></a> 15 December 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-webarch-20041215/">http://www.w3.org/TR/2004/REC-webarch-20041215/</a> ',WEBCGM:'Lofton Henderson; et al. <a href="http://www.w3.org/TR/2001/REC-WebCGM-20011217"><cite>WebCGM 1.0 Second Release.</cite></a> 17 December 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-WebCGM-20011217">http://www.w3.org/TR/2001/REC-WebCGM-20011217</a> ',WEBCGM20:'Benoit Bezaire; Lofton Henderson; David Cruikshank. <a href="http://www.w3.org/TR/2007/REC-webcgm20-20070130"><cite>WebCGM 2.0.</cite></a> 30 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-webcgm20-20070130">http://www.w3.org/TR/2007/REC-webcgm20-20070130</a> ',WEBCGM21:'Lofton Henderson; Benoit Bezaire. <a href="http://www.w3.org/TR/2009/WD-webcgm21-20090130"><cite>WebCGM 2.1.</cite></a> 30 January 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-webcgm21-20090130">http://www.w3.org/TR/2009/WD-webcgm21-20090130</a> ',WEBGL:'Chris Marrin (Apple Inc.) <a href="https://www.khronos.org/registry/webgl/specs/1.0/"><cite>WebGL Specification, Version 1.0</cite></a> , 10 February 2011 URL: <a href="http://www.w3.org/TR/2011/REC-css3-selectors-20110929/">http://www.w3.org/TR/2011/REC-css3-selectors-20110929</a>',WEBIDL:'Cameron McCormack. <a href="http://www.w3.org/TR/2011/WD-WebIDL-20110927/"><cite>Web IDL.</cite></a> 27 September 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-WebIDL-20110927/">http://www.w3.org/TR/2011/WD-WebIDL-20110927/</a> ',"WEBONT-REQ":'Jeff Heflin. <a href="http://www.w3.org/TR/2004/REC-webont-req-20040210"><cite>OWL Web Ontology Language Use Cases and Requirements.</cite></a> 10 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-webont-req-20040210">http://www.w3.org/TR/2004/REC-webont-req-20040210</a> ',"WebBug-Wikipedia":'<a href="http://en.wikipedia.org/wiki/Web_bug"><cite>Wikipedia Web Bug definition</cite></a> URL: <a href="http://en.wikipedia.org/wiki/Web_bug"> http://en.wikipedia.org/wiki/Web_bug</a> ',WEBINTENTS:'Greg Billock; James Hawkins; Paul Kinlan. <a href="http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html"><cite>Web Intents.</cite></a> Editors\' Draft. (Work in progress.) URL: <a href="http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html">http://dvcs.w3.org/hg/web-intents/raw-file/tip/spec/Overview.html</a> ',WEBRTC10:'A Bergkvist; D Burnett; C Jennings; A Narayanan. <a href="http://www.w3.org/TR/2011/WD-webrtc-20111027/"><cite>WebRTC 1.0.</cite></a> 27 October 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-webrtc-20111027/">http://www.w3.org/TR/2011/WD-webrtc-20111027/</a> ',"WEBSOCKETS-API-20110929":'I. Hickson. <a href="http://www.w3.org/TR/2011/WD-websockets-20110929/"><cite>The WebSocket API.</cite></a> 29 September 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-websockets-20110929/">http://www.w3.org/TR/2011/WD-websockets-20110929/</a> ',"WEBSOCKETS-API":'I. Hickson. <a href="http://www.w3.org/TR/websockets/"><cite>The WebSocket API.</cite></a> W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/websockets/">http://www.w3.org/TR/websockets/</a> ',"WEBSOCKETS-PROTOCOL":'C. Holmberg, S. Hakansson, G. Eriksson. <a href="http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-09.txt"><cite>The WebSocket protocol.</cite></a> URL: <a href="http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-09.txt">http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-09.txt</a> ',WEBSTORAGE:'Ian Hickson. <a href="http://www.w3.org/TR/2009/WD-webstorage-20090910/"><cite>Web Storage.</cite></a> 10 September 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-webstorage-20090910/">http://www.w3.org/TR/2009/WD-webstorage-20090910/</a> ',WEBVTT:'Ian Hickson. <a href="http://dev.w3.org/html5/webvtt/"><cite>WebVTT.</cite></a> 21 August 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://dev.w3.org/html5/webvtt/">http://dev.w3.org/html5/webvtt/</a> ',WEBWORKERS:'Ian Hickson. <a href="http://www.w3.org/TR/2011/WD-workers-20110901/"><cite>Web Workers.</cite></a> 1 September 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-workers-20110901/">http://www.w3.org/TR/2011/WD-workers-20110901/</a> ',WICD:'Daniel Appelquist; et al. <a href="http://www.w3.org/TR/2007/CR-WICD-20070718"><cite>WICD Core 1.0.</cite></a> 18 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-WICD-20070718">http://www.w3.org/TR/2007/CR-WICD-20070718</a> ',WICDFULL:'Timur Mehrvarz; et al. <a href="http://www.w3.org/TR/2007/CR-WICDFull-20070718"><cite>WICD Full 1.0.</cite></a> 18 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-WICDFull-20070718">http://www.w3.org/TR/2007/CR-WICDFull-20070718</a> ',WICDMobile10:'Timur Mehrvarz; et al. <a href="http://www.w3.org/TR/2007/CR-WICDMobile-20070718"><cite>WICD Mobile 1.0.</cite></a> 18 July 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-WICDMobile-20070718">http://www.w3.org/TR/2007/CR-WICDMobile-20070718</a> ',WIDGETS:'Marcos Cáceres. <a href="http://www.w3.org/TR/widgets/"><cite>Widget Packaging and XML Configuration</cite></a>. W3C Recommendation. URL: <a href="http://www.w3.org/TR/widgets/">http://www.w3.org/TR/widgets/</a> ',"WIDGETS-APIS":'Marcos Cáceres <a href="http://www.w3.org/TR/widgets-api/"><cite>Widget Interface.</cite></a> W3C Proposed Recommendation. URL: <a href="http://www.w3.org/TR/widgets-api/">http://www.w3.org/TR/widgets-api/</a> ',"WIDGETS-DIGSIG":'M. Cáceres; P. Bayers; Stuart Knightley; F. Hirsch; M Priestley. <a href="http://www.w3.org/TR/widgets-digsig"><cite>Digital Signatures for Widgets.</cite></a> (Work in progress.) URL: <a href="http://www.w3.org/TR/widgets-digsig">http://www.w3.org/TR/2010/CR-widgets-digsig-20100624</a> ',"WIDGETS-LAND":'Marcos Cáceres. <a href="http://www.w3.org/TR/2008/WD-widgets-land-20080414"><cite>The Widget Landscape (Q1 2008).</cite></a> 14 April 2008. W3C Working Group Note. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-widgets-land-20080414">http://www.w3.org/TR/2008/WD-widgets-land-20080414</a> ',"WIDGETS-PC-TESTS":'Marcos Cáceres <a href="http://dev.w3.org/2006/waf/widgets/test-suite/"><cite>Test Suite for Packaging and XML Configuration.</cite></a> W3C Test Suite. URL: <a href="http://dev.w3.org/2006/waf/widgets/test-suite/">http://dev.w3.org/2006/waf/widgets/test-suite/</a> ',"WIDGETS-PC-INTEROP":'Marcos Cáceres <a href="http://dev.w3.org/2006/waf/widgets/imp-report/"><cite>Implementation Report for Widgets Packaging and XML Configuration.</cite></a>. URL: <a href="http://dev.w3.org/2006/waf/widgets/imp-report/">http://dev.w3.org/2006/waf/widgets/imp-report/</a> ',"WIDGETS-REQS":'Marcos Cáceres. <a href="http://www.w3.org/TR/widgets-reqs/"><cite> Requirements For Standardizing Widgets.</cite></a>. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/widgets-reqs/">http://www.w3.org/TR/widgets-reqs/</a> ',"WIDGETS-UPDATES":'Marcos Cáceres. <a href="http://www.w3.org/TR/2008/WD-widgets-updates-20081007"><cite>Widget Updates.</cite></a> 7 October 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-widgets-updates-20081007">http://www.w3.org/TR/2008/WD-widgets-updates-20081007</a> ',"WIDGETS-URI":'Marcos Cáceres. <a href="http://www.w3.org/TR/2011/WD-widgets-uri-20110927"><cite>Widget URI Scheme.</cite></a>. W3C Note. URL: <a href="http://www.w3.org/TR/2011/WD-widgets-uri-20110927">http://www.w3.org/TR/2011/WD-widgets-uri-20110927</a> ',WINDOW:'Ian Davis; Maciej Stachowiak. <a href="http://www.w3.org/TR/2006/WD-Window-20060407"><cite>Window Object 1.0.</cite></a> 7 April 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-Window-20060407">http://www.w3.org/TR/2006/WD-Window-20060407</a> ',WOFF:'Jonathan Kew, Tal Leming, Erik van Blokland. <a href="http://www.w3.org/TR/WOFF/">WOFF File Format 1.0</a>. 04 August 2011. Candidate Recommendation. URL: <a href="http://www.w3.org/TR/WOFF/">http://www.w3.org/TR/WOFF/</a>',"WORDNET-RDF":'Aldo Gangemi; Guus Schreiber; Mark van Assem. <a href="http://www.w3.org/TR/2006/WD-wordnet-rdf-20060619"><cite>RDF/OWL Representation of WordNet.</cite></a> 19 June 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-wordnet-rdf-20060619">http://www.w3.org/TR/2006/WD-wordnet-rdf-20060619</a> ',"WS-ADDR-CORE":'Martin Gudgin; Marc Hadley; Tony Rogers. <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509"><cite>Web Services Addressing 1.0 - Core.</cite></a> 9 May 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509">http://www.w3.org/TR/2006/REC-ws-addr-core-20060509</a> ',"WS-ADDR-METADATA":'Martin Gudgin; et al. <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904"><cite>Web Services Addressing 1.0 - Metadata.</cite></a> 4 September 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904">http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904</a> ',"WS-ADDR-SOAP":'Tony Rogers; et al. <a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509"><cite>Web Services Addressing 1.0 - SOAP Binding.</cite></a> 9 May 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509">http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509</a> ',"WS-ARCH":'Francis McCabe; et al. <a href="http://www.w3.org/TR/2004/NOTE-ws-arch-20040211"><cite>Web Services Architecture.</cite></a> 11 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-ws-arch-20040211">http://www.w3.org/TR/2004/NOTE-ws-arch-20040211</a> ',"WS-ARCH-SCENARIOS":'David Orchard; Hugo Haas; Hao He. <a href="http://www.w3.org/TR/2004/NOTE-ws-arch-scenarios-20040211"><cite>Web Services Architecture Usage Scenarios.</cite></a> 11 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-ws-arch-scenarios-20040211">http://www.w3.org/TR/2004/NOTE-ws-arch-scenarios-20040211</a> ',"WS-CDL-10":'Yves Lafon; et al. <a href="http://www.w3.org/TR/2005/CR-ws-cdl-10-20051109"><cite>Web Services Choreography Description Language Version 1.0.</cite></a> 9 November 2005. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/CR-ws-cdl-10-20051109">http://www.w3.org/TR/2005/CR-ws-cdl-10-20051109</a> ',"WS-CDL-10-PRIMER":'Steve Ross-Talbot; Tony Fletcher. <a href="http://www.w3.org/TR/2006/WD-ws-cdl-10-primer-20060619"><cite>Web Services Choreography Description Language: Primer.</cite></a> 19 June 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-ws-cdl-10-primer-20060619">http://www.w3.org/TR/2006/WD-ws-cdl-10-primer-20060619</a> ',"WS-CHOR-MODEL":'David Burdett; Nickolas Kavantzas. <a href="http://www.w3.org/TR/2004/WD-ws-chor-model-20040324"><cite>WS Choreography Model Overview.</cite></a> 24 March 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-ws-chor-model-20040324">http://www.w3.org/TR/2004/WD-ws-chor-model-20040324</a> ',"WS-CHOR-REQS":'Ed Peters; et al. <a href="http://www.w3.org/TR/2004/WD-ws-chor-reqs-20040311"><cite>Web Services Choreography Requirements.</cite></a> 11 March 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-ws-chor-reqs-20040311">http://www.w3.org/TR/2004/WD-ws-chor-reqs-20040311</a> ',"WS-DESC-REQS":'Jeffrey C. Schlimmer. <a href="http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028"><cite>Web Services Description Requirements.</cite></a> 28 October 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028">http://www.w3.org/TR/2002/WD-ws-desc-reqs-20021028</a> ',"WS-DESC-USECASES":'Waqar Sadiq; Sandeep Kumar. <a href="http://www.w3.org/TR/2002/WD-ws-desc-usecases-20020604"><cite>Web Service Description Usage Scenarios.</cite></a> 4 June 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-ws-desc-usecases-20020604">http://www.w3.org/TR/2002/WD-ws-desc-usecases-20020604</a> ',"WS-ENUMERATION":'Ashok Malhotra; et al. <a href="http://www.w3.org/TR/2009/WD-ws-enumeration-20090317"><cite>Web Services Enumeration (WS-Enumeration).</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ws-enumeration-20090317">http://www.w3.org/TR/2009/WD-ws-enumeration-20090317</a> ',"WS-EVENTING":'Ashok Malhotra; et al. <a href="http://www.w3.org/TR/2009/WD-ws-eventing-20090317"><cite>Web Services Eventing (WS-Eventing).</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ws-eventing-20090317">http://www.w3.org/TR/2009/WD-ws-eventing-20090317</a> ',"WS-FRAGMENT":'D. Davis; A. Malhotra; K. Warr; W. Chou. <a href="http://www.w3.org/TR/2010/WD-ws-fragment-20100330"><cite>Web Services Fragment (WS-Fragment).</cite></a> 30 March 2010. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-ws-fragment-20100330">http://www.w3.org/TR/2010/WD-ws-fragment-20100330</a> ',"WS-GLOSS":'Hugo Haas; Allen Brown. <a href="http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211"><cite>Web Services Glossary.</cite></a> 11 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211">http://www.w3.org/TR/2004/NOTE-ws-gloss-20040211</a> ',"WS-I18N":'Mary Trumble; Addison Phillips; Felix Sasaki. <a href="http://www.w3.org/TR/2008/WD-ws-i18n-20080415"><cite>Web Services Internationalization (WS-I18N).</cite></a> 15 April 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-ws-i18n-20080415">http://www.w3.org/TR/2008/WD-ws-i18n-20080415</a> ',"WS-I18N-REQ":'Addison Phillips. <a href="http://www.w3.org/TR/2004/NOTE-ws-i18n-req-20041116"><cite>Requirements for the Internationalization of Web Services.</cite></a> 16 November 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-ws-i18n-req-20041116">http://www.w3.org/TR/2004/NOTE-ws-i18n-req-20041116</a> ',"WS-I18N-SCENARIOS":'Takao Suzuki; et al. <a href="http://www.w3.org/TR/2004/NOTE-ws-i18n-scenarios-20040730"><cite>Web Services Internationalization Usage Scenarios.</cite></a> 30 July 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-ws-i18n-scenarios-20040730">http://www.w3.org/TR/2004/NOTE-ws-i18n-scenarios-20040730</a> ',"WS-METADATA-EXCHANGE":'Katy Warr; et al. <a href="http://www.w3.org/TR/2009/WD-ws-metadata-exchange-20090317"><cite>Web Services Metadata Exchange (WS-MetadataExchange).</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ws-metadata-exchange-20090317">http://www.w3.org/TR/2009/WD-ws-metadata-exchange-20090317</a> ',"WS-POLICY":'&#220;mit Yal&#231;inalp; et al. <a href="http://www.w3.org/TR/2007/REC-ws-policy-20070904"><cite>Web Services Policy 1.5 - Framework.</cite></a> 4 September 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-ws-policy-20070904">http://www.w3.org/TR/2007/REC-ws-policy-20070904</a> ',"WS-POLICY-ATTACH":'&#220;mit Yal&#231;inalp; et al. <a href="http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904"><cite>Web Services Policy 1.5 - Attachment.</cite></a> 4 September 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904">http://www.w3.org/TR/2007/REC-ws-policy-attach-20070904</a> ',"WS-POLICY-GUIDELINES":'Maryann Hondo; et al. <a href="http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112"><cite>Web Services Policy 1.5 - Guidelines for Policy Assertion Authors.</cite></a> 12 November 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112">http://www.w3.org/TR/2007/NOTE-ws-policy-guidelines-20071112</a> ',"WS-POLICY-PRIMER":'Asir S Vedamuthu; et al. <a href="http://www.w3.org/TR/2007/NOTE-ws-policy-primer-20071112"><cite>Web Services Policy 1.5 - Primer.</cite></a> 12 November 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-ws-policy-primer-20071112">http://www.w3.org/TR/2007/NOTE-ws-policy-primer-20071112</a> ',"WS-RESOURCE-TRANSFER":'Ashok Malhotra; et al. <a href="http://www.w3.org/TR/2009/WD-ws-resource-transfer-20090317"><cite>Web Services Resource Transfer (WS-RT).</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ws-resource-transfer-20090317">http://www.w3.org/TR/2009/WD-ws-resource-transfer-20090317</a> ',"WS-SECURITY11":'A. Nadalin, C. Kaler, R. Monzillo, P. Hallam-Baker. <a href="https://www.oasis-open.org/standards#wssv1.1"><cite>Web Services Security: SOAP Message Security 1.1 (WS-Security 2004)</cite></a>. OASIS Standard, 1 February 2006. URL: <a href="https://www.oasis-open.org/standards#wssv1.1">https://www.oasis-open.org/standards#wssv1.1</a> ',"WS-SECURECONVERSATION13":'A. Nadalin, M. Goodner, M. Gudgin, A. Barbir, H. Granqvist. <a href="https://www.oasis-open.org/standards#wssecconv1.3"><cite>WS-SecureConversation 1.3</cite></a>. OASIS Standard, 1 March 2007. URL: <a href="https://www.oasis-open.org/standards#wssecconv1.3">https://www.oasis-open.org/standards#wssecconv1.3</a> ',"WS-SECURITYPOLICY12":'A. Nadalin, M. Goodner, M. Gudgin, A. Barbir, H. Granqvist. <a href="https://www.oasis-open.org/standards#wssecpolv1.2"><cite>WS-SecurityPolicy 1.2, OASIS Standard</cite></a>. 1 July 2007. URL: <a href="https://www.oasis-open.org/standards#wssecpolv1.2">https://www.oasis-open.org/standards#wssecpolv1.2</a> ',"WS-TRANSFER":'Ashok Malhotra; et al. <a href="http://www.w3.org/TR/2009/WD-ws-transfer-20090317"><cite>Web Services Transfer (WS-Transfer).</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-ws-transfer-20090317">http://www.w3.org/TR/2009/WD-ws-transfer-20090317</a> ',"WS-TRUST13":'A. Nadalin, M. Goodner, M. Gudgin, A. Barbir, H. Granqvist.  <a href="https://www.oasis-open.org/standards#wstrustv1.3"><cite>WS-Trust 1.3</cite></a>. OASIS Standard, 19 March 2007. URL: <a href="https://www.oasis-open.org/standards#wstrustv1.3">https://www.oasis-open.org/standards#wstrustv1.3</a> ',"WSS-USERNAME11":'A. Nadalin, C. Kaler, R. Monzillo, P. Hallam-Baker. <a href="https://www.oasis-open.org/committees/download.php/16782/wss-v1.1-spec-os-UsernameTokenProfile.pdf"><cite>Web Services Security UsernameToken Profile 1.1</cite></a>. OASIS Standard Specification, 1 February 2006. URL: <a href="https://www.oasis-open.org/committees/download.php/16782/wss-v1.1-spec-os-UsernameTokenProfile.pdf">https://www.oasis-open.org/committees/download.php/16782/wss-v1.1-spec-os-UsernameTokenProfile.pdf</a> ',"WSA-REQS":'Sharad Garg; et al. <a href="http://www.w3.org/TR/2004/NOTE-wsa-reqs-20040211"><cite>Web Services Architecture Requirements.</cite></a> 11 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-wsa-reqs-20040211">http://www.w3.org/TR/2004/NOTE-wsa-reqs-20040211</a> ',"WSC-THREATS":'Thomas Roessler. <a href="http://www.w3.org/TR/2007/NOTE-wsc-threats-20071101"><cite>Web User Interaction: Threat Trees.</cite></a> 1 November 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-wsc-threats-20071101">http://www.w3.org/TR/2007/NOTE-wsc-threats-20071101</a> ',"WSC-UI":'Anil Saldhana; Thomas Roessler. <a href="http://www.w3.org/TR/2009/WD-wsc-ui-20090226"><cite>Web Security Context: User Interface Guidelines.</cite></a> 26 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-wsc-ui-20090226">http://www.w3.org/TR/2009/WD-wsc-ui-20090226</a> ',"WSC-USECASES":'Tyler Close. <a href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306"><cite>Web Security Experience, Indicators and Trust: Scope and Use Cases.</cite></a> 6 March 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306">http://www.w3.org/TR/2008/NOTE-wsc-usecases-20080306</a> ',"WSC-XIT":'Anil Saldhana; Thomas Roessler. <a href="http://www.w3.org/TR/2008/WD-wsc-xit-20080403"><cite>Web Security Context: Experience, Indicators, and Trust.</cite></a> 3 April 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-wsc-xit-20080403">http://www.w3.org/TR/2008/WD-wsc-xit-20080403</a> ',WSDL11ELEMENTIDENTIFIERS:'Asir S. Vedamuthu; et al. <a href="http://www.w3.org/TR/2007/NOTE-wsdl11elementidentifiers-20070720"><cite>WSDL 1.1 Element Identifiers.</cite></a> 20 July 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-wsdl11elementidentifiers-20070720">http://www.w3.org/TR/2007/NOTE-wsdl11elementidentifiers-20070720</a> ',WSDL20:'Sanjiva Weerawarana; et al. <a href="http://www.w3.org/TR/2007/REC-wsdl20-20070626"><cite>Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language.</cite></a> 26 June 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-wsdl20-20070626">http://www.w3.org/TR/2007/REC-wsdl20-20070626</a> ',"WSDL20-ADDITIONAL-MEPS":'Amelia A. Lewis. <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-additional-meps-20070626"><cite>Web Services Description Language (WSDL) Version 2.0: Additional MEPs.</cite></a> 26 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-additional-meps-20070626">http://www.w3.org/TR/2007/NOTE-wsdl20-additional-meps-20070626</a> ',"WSDL20-ADJUNCTS":'Amelia A. Lewis; et al. <a href="http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626"><cite>Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts.</cite></a> 26 June 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626">http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626</a> ',"WSDL20-ALTSCHEMALANGS":'Amelia A. Lewis; Bijan Parsia. <a href="http://www.w3.org/TR/2005/NOTE-wsdl20-altschemalangs-20050817"><cite>Discussion of Alternative Schema Languages and Type System Support in WSDL 2.0.</cite></a> 17 August 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-wsdl20-altschemalangs-20050817">http://www.w3.org/TR/2005/NOTE-wsdl20-altschemalangs-20050817</a> ',"WSDL20-PRIMER":'David Booth; Canyang Kevin Liu. <a href="http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626"><cite>Web Services Description Language (WSDL) Version 2.0 Part 0: Primer.</cite></a> 26 June 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626">http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626</a> ',"WSDL20-RDF":'Jacek Kopecky. <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-rdf-20070626"><cite>Web Services Description Language (WSDL) Version 2.0: RDF Mapping.</cite></a> 26 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-rdf-20070626">http://www.w3.org/TR/2007/NOTE-wsdl20-rdf-20070626</a> ',"WSDL20-SOAP11-BINDING":'Asir S. Vedamuthu. <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-soap11-binding-20070626"><cite>Web Services Description Language (WSDL) Version 2.0 SOAP 1.1 Binding.</cite></a> 26 June 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-wsdl20-soap11-binding-20070626">http://www.w3.org/TR/2007/NOTE-wsdl20-soap11-binding-20070626</a> ',"WSI-BSP10":'M. McIntosh, M. Gudgin, K. S. Morrison, A. Barbir. <a href="http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html"><cite>Basic Security Profile Version 1.0</cite></a>. WS-I Final Material, 30 March 2007. URL: <a href="http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html">http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html</a> ',WSLC:'Hao He; Igor Sedukhin; Mark Potts. <a href="http://www.w3.org/TR/2004/NOTE-wslc-20040211"><cite>Web Service Management: Service Life Cycle.</cite></a> 11 February 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-wslc-20040211">http://www.w3.org/TR/2004/NOTE-wslc-20040211</a> ',X11COLORS:'Robert B. Hess. <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/X11_names.asp"><cite>Colors By Name.</cite></a> MSDN Online Web Workshop. 02 November 1996. URL: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/X11_names.asp">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebgen/html/X11_names.asp</a> ',X509V3:'<cite>ITU-T Recommendation X.509 version 3 (1997). "Information Technology - Open Systems Interconnection - The Directory Authentication Framework"&nbsp; ISO/IEC 9594-8:1997</cite>.',XACML20:'Tim Moses. <a href="http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-core-spec-os.pdf"><cite>OASIS eXtensible Access Control Markup Language (XACML) Version 2.0</cite></a>. 01 Feb 2005 URL: <a href="http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-core-spec-os.pdf">http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-core-spec-os.pdf</a>',"XACML-INTRO":'<a href="https://www.oasis-open.org/committees/download.php/2713/Brief_Introduction_to_XACML.html"><cite>A Brief Introduction to XACML</cite></a>. 14 March 2003. URL: <a href="https://www.oasis-open.org/committees/download.php/2713/Brief_Introduction_to_XACML.html"> https://www.oasis-open.org/committees/download.php/2713/Brief_Introduction_to_XACML.html</a>',XADES:'<a href="http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.04.01_60/ts_101903v010401p.pdf"><cite>XML Advanced Electronic Signatures (XAdES)</cite></a>.  ETSI TS 101 903 V1.4.1 (2009-06) URL: <a href="http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.04.01_60/ts_101903v010401p.pdf">http://www.etsi.org/deliver/etsi_ts/101900_101999/101903/01.04.01_60/ts_101903v010401p.pdf</a>',XAG:'Charles McCathieNevile; Sean B. Palmer; Daniel Dardailler. <a href="http://www.w3.org/TR/2002/WD-xag-20021003"><cite>XML Accessibility Guidelines.</cite></a> 3 October 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-xag-20021003">http://www.w3.org/TR/2002/WD-xag-20021003</a> ',"XBC-CHARACTERIZATION":'Dmitry Lenkov; Oliver Goldman. <a href="http://www.w3.org/TR/2005/NOTE-xbc-characterization-20050331"><cite>XML Binary Characterization.</cite></a> 31 March 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xbc-characterization-20050331">http://www.w3.org/TR/2005/NOTE-xbc-characterization-20050331</a> ',"XBC-MEASUREMENT":'Peter Haggar; Stephen D. Williams. <a href="http://www.w3.org/TR/2005/NOTE-xbc-measurement-20050331"><cite>XML Binary Characterization Measurement Methodologies.</cite></a> 31 March 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xbc-measurement-20050331">http://www.w3.org/TR/2005/NOTE-xbc-measurement-20050331</a> ',"XBC-PROPERTIES":'Santiago Pericas-Geertsen; Mike Cokus. <a href="http://www.w3.org/TR/2005/NOTE-xbc-properties-20050331"><cite>XML Binary Characterization Properties.</cite></a> 31 March 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xbc-properties-20050331">http://www.w3.org/TR/2005/NOTE-xbc-properties-20050331</a> ',"XBC-USE-CASES":'Santiago Pericas-Geertsen; Mike Cokus. <a href="http://www.w3.org/TR/2005/NOTE-xbc-use-cases-20050331"><cite>XML Binary Characterization Use Cases.</cite></a> 31 March 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xbc-use-cases-20050331">http://www.w3.org/TR/2005/NOTE-xbc-use-cases-20050331</a> ',XBL:'Ian Hickson. <a href="http://www.w3.org/TR/2007/CR-xbl-20070316"><cite>XML Binding Language (XBL) 2.0.</cite></a> 16 March 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-xbl-20070316">http://www.w3.org/TR/2007/CR-xbl-20070316</a> ',"XBL-PRIMER":'Lachlan Hunt; Marcos Cáceres. <a href="http://www.w3.org/TR/2007/WD-xbl-primer-20070718"><cite>XBL 2.0 Primer: An Introduction for Developers.</cite></a> 18 July 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xbl-primer-20070718">http://www.w3.org/TR/2007/WD-xbl-primer-20070718</a> ',"XFORMS-11-REQ":'John Boyer; Roland Merrick. <a href="http://www.w3.org/TR/2004/NOTE-xforms-11-req-20040831"><cite>XForms 1.1 Requirements.</cite></a> 31 August 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-xforms-11-req-20040831">http://www.w3.org/TR/2004/NOTE-xforms-11-req-20040831</a> ',"XFORMS-BASIC":'T. V. Raman; Micah Dubinko. <a href="http://www.w3.org/TR/2003/CR-xforms-basic-20031014"><cite>XForms 1.0 Basic Profile.</cite></a> 14 October 2003. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/CR-xforms-basic-20031014">http://www.w3.org/TR/2003/CR-xforms-basic-20031014</a> ',"XFORMS-FOR-HTML":'John M. Boyer. <a href="http://www.w3.org/TR/2008/WD-XForms-for-HTML-20081219"><cite>XForms for HTML.</cite></a> 19 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-XForms-for-HTML-20081219">http://www.w3.org/TR/2008/WD-XForms-for-HTML-20081219</a> ',XFORMS10:'John M. Boyer. <a href="http://www.w3.org/TR/2007/REC-xforms-20071029"><cite>XForms 1.0 (Third Edition).</cite></a> 29 October 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xforms-20071029">http://www.w3.org/TR/2007/REC-xforms-20071029</a> ',XFORMS11:'John M. Boyer. <a href="http://www.w3.org/TR/2007/CR-xforms11-20071129"><cite>XForms 1.1.</cite></a> 29 November 2007. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/CR-xforms11-20071129">http://www.w3.org/TR/2007/CR-xforms11-20071129</a> ',XFRAMES:'Steven Pemberton; Masayasu Ishikawa. <a href="http://www.w3.org/TR/2005/WD-xframes-20051012"><cite>XFrames.</cite></a> 12 October 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-xframes-20051012">http://www.w3.org/TR/2005/WD-xframes-20051012</a> ',XH:'Dan Connolly; Lauren Wood. <a href="http://www.w3.org/TR/1998/NOTE-xh-19980511"><cite>XML in HTML Meeting Report.</cite></a> 11 May 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-xh-19980511">http://www.w3.org/TR/1998/NOTE-xh-19980511</a> ',"XHTML-ACCESS":'T. V. Raman; et al. <a href="http://www.w3.org/TR/2008/WD-xhtml-access-20080526"><cite>XHTML Access Module.</cite></a> 26 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xhtml-access-20080526">http://www.w3.org/TR/2008/WD-xhtml-access-20080526</a> ',"XHTML-BASIC":'Mark Baker; et al. <a href="http://www.w3.org/TR/2000/REC-xhtml-basic-20001219"><cite>XHTML&#8482; Basic.</cite></a> 19 December 2000. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2000/REC-xhtml-basic-20001219">http://www.w3.org/TR/2000/REC-xhtml-basic-20001219</a> ',"XHTML-BASIC11":'Mark Baker; et al. <a href="http://www.w3.org/TR/2008/REC-xhtml-basic-20080729"><cite>XHTML&#8482; Basic 1.1.</cite></a> 29 July 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-xhtml-basic-20080729">http://www.w3.org/TR/2008/REC-xhtml-basic-20080729</a> ',"XHTML-FORMS-REQ":'Malte Wedel; et al. <a href="http://www.w3.org/TR/2001/WD-xhtml-forms-req-20010404"><cite>XForms Requirements.</cite></a> 4 April 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-xhtml-forms-req-20010404">http://www.w3.org/TR/2001/WD-xhtml-forms-req-20010404</a> ',"XHTML-MEDIA-TYPES":'Shane McCarron. <a href="http://www.w3.org/TR/2009/NOTE-xhtml-media-types-20090116"><cite>XHTML Media Types - Second Edition.</cite></a> 16 January 2009. W3C Note. URL: <a href="http://www.w3.org/TR/2009/NOTE-xhtml-media-types-20090116">http://www.w3.org/TR/2009/NOTE-xhtml-media-types-20090116</a> ',"XHTML-MODULARIZATION":'Shane McCarron; et al. <a href="http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218"><cite>Modularization of XHTML&#8482; 1.0 - Second Edition.</cite></a> 18 February 2004. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218">http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218</a> ',"XHTML-MODULARIZATION11":'Shane McCarron; et al. <a href="http://www.w3.org/TR/2008/REC-xhtml-modularization-20081008"><cite>XHTML&#8482; Modularization 1.1.</cite></a> 8 October 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-xhtml-modularization-20081008">http://www.w3.org/TR/2008/REC-xhtml-modularization-20081008</a> ',"XHTML-MODULARIZATION11-2e":'Shane McCarron. <a href="http://www.w3.org/TR/2010/REC-xhtml-modularization-20100729"><cite>XHTML&#8482; Modularization 1.1 Second Edition.</cite></a> 29 July 2010. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2010/REC-xhtml-modularization-20100729">http://www.w3.org/TR/2010/REC-xhtml-modularization-20100729</a> ',"XHTML-PRINT":'Jim Bigelow; Melinda Grant. <a href="http://www.w3.org/TR/2006/REC-xhtml-print-20060920"><cite>XHTML-Print.</cite></a> 20 September 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xhtml-print-20060920">http://www.w3.org/TR/2006/REC-xhtml-print-20060920</a> ',"XHTML-PROF-REQ":'David Raggett; Ted Wugofski; Peter Stark. <a href="http://www.w3.org/TR/1999/WD-xhtml-prof-req-19990906"><cite>XHTML&#8482; Document Profile Requirements.</cite></a> 6 September 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-xhtml-prof-req-19990906">http://www.w3.org/TR/1999/WD-xhtml-prof-req-19990906</a> ',"XHTML-RDFA":'Shane McCarron; et. al. <a href="http://www.w3.org/TR/2012/REC-xhtml-rdfa-20120607/"><cite>XHTML+RDFa 1.1.</cite></a> 7 June 2012. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2012/REC-xhtml-rdfa-20120607/">http://www.w3.org/TR/2012/REC-xhtml-rdfa-20120607/</a> ',"XHTML-RDFA-PRIMER":'Mark Birbeck; Ben Adida. <a href="http://www.w3.org/TR/2008/NOTE-xhtml-rdfa-primer-20081014"><cite>RDFa Primer.</cite></a> 14 October 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-xhtml-rdfa-primer-20081014">http://www.w3.org/TR/2008/NOTE-xhtml-rdfa-primer-20081014</a> ',"XHTML-RDFA-SCENARIOS":'Michael Hausenblas; Ben Adida. <a href="http://www.w3.org/TR/2007/WD-xhtml-rdfa-scenarios-20070330"><cite>RDFa Use Cases: Scenarios for Embedding RDF in HTML.</cite></a> 30 March 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xhtml-rdfa-scenarios-20070330">http://www.w3.org/TR/2007/WD-xhtml-rdfa-scenarios-20070330</a> ',"XHTML-ROADMAP":'Steven Pemberton; David Raggett; Masayasu Ishikawa. <a href="http://www.w3.org/TR/2000/NOTE-xhtml-roadmap-20001108"><cite>HTML Working Group Roadmap.</cite></a> 8 November 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-xhtml-roadmap-20001108">http://www.w3.org/TR/2000/NOTE-xhtml-roadmap-20001108</a> ',"XHTML-ROLE":'Shane McCarron; et al. <a href="http://www.w3.org/TR/2008/WD-xhtml-role-20080407"><cite>XHTML Role Attribute Module.</cite></a> 7 April 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xhtml-role-20080407">http://www.w3.org/TR/2008/WD-xhtml-role-20080407</a> ',"XHTML-VOCAB":"XHTML 2 Working Group. <a href=\"http://www.w3.org/1999/xhtml/vocab\"><cite>XHTML Vocabulary</cite></a>. URL: <a href='http://www.w3.org/1999/xhtml/vocab'>http://www.w3.org/1999/xhtml/vocab</a> ","XHTML1-SCHEMA":'Masayasu Ishikawa. <a href="http://www.w3.org/TR/2002/NOTE-xhtml1-schema-20020902"><cite>XHTML 1.0 in XML Schema.</cite></a> 2 September 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-xhtml1-schema-20020902">http://www.w3.org/TR/2002/NOTE-xhtml1-schema-20020902</a> ',XHTML10:'Steven Pemberton. <a href="http://www.w3.org/TR/2002/REC-xhtml1-20020801/"><cite>XHTML&#8482; 1.0 The Extensible HyperText Markup Language (Second Edition).</cite></a> 1 August 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xhtml1-20020801/">http://www.w3.org/TR/2002/REC-xhtml1-20020801/</a> ',XHTML11:'Murray Altheim; Shane McCarron. <a href="http://www.w3.org/TR/2001/REC-xhtml11-20010531"><cite>XHTML&#8482; 1.1 - Module-based XHTML.</cite></a> 31 May 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-xhtml11-20010531">http://www.w3.org/TR/2001/REC-xhtml11-20010531</a> ',"XHTML11-2e":'Masayasu Ishikawa; Shane McCarron. <a href="http://www.w3.org/TR/2007/WD-xhtml11-20070216"><cite>XHTML&#8482; 1.1 - Module-based XHTML - Second Edition.</cite></a> 16 February 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xhtml11-20070216">http://www.w3.org/TR/2007/WD-xhtml11-20070216</a> ',XHTML2:'Micah Dubinko; et al. <a href="http://www.w3.org/TR/2006/WD-xhtml2-20060726"><cite>XHTML&#8482; 2.0.</cite></a> 26 July 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-xhtml2-20060726">http://www.w3.org/TR/2006/WD-xhtml2-20060726</a> ',XHTMLPLUSMATHMLPLUSSVG:'Masayasu Ishikawa. <a href="http://www.w3.org/TR/2002/WD-XHTMLplusMathMLplusSVG-20020809"><cite>An XHTML + MathML + SVG Profile.</cite></a> 9 August 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-XHTMLplusMathMLplusSVG-20020809">http://www.w3.org/TR/2002/WD-XHTMLplusMathMLplusSVG-20020809</a> ',XHTMLPLUSSMIL:'Aaron Patterson; Patrick Schmitz; Debbie Newman. <a href="http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131"><cite>XHTML+SMIL Profile.</cite></a> 31 January 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131">http://www.w3.org/TR/2002/NOTE-XHTMLplusSMIL-20020131</a> ',XINCLUDE:'Jonathan Marsh; David Orchard; Daniel Veillard. <a href="http://www.w3.org/TR/2006/REC-xinclude-20061115"><cite>XML Inclusions (XInclude) Version 1.0 (Second Edition).</cite></a> 15 November 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xinclude-20061115">http://www.w3.org/TR/2006/REC-xinclude-20061115</a> ',"XKMS-PGP":'Tommy Lindberg; Jos&#233; Kahan. <a href="http://www.w3.org/TR/2005/NOTE-xkms-pgp-20051219"><cite>Using XKMS with PGP.</cite></a> 19 December 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xkms-pgp-20051219">http://www.w3.org/TR/2005/NOTE-xkms-pgp-20051219</a> ',"XKMS-WSDL":'Rich Salz; Yunhao Zhang. <a href="http://www.w3.org/TR/2005/NOTE-xkms-wsdl-20051118"><cite>A WSDL 1.1 description for XKMS.</cite></a> 18 November 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xkms-wsdl-20051118">http://www.w3.org/TR/2005/NOTE-xkms-wsdl-20051118</a> ',XKMS2:'Shivaram H. Mysore; Phillip Hallam-Baker. <a href="http://www.w3.org/TR/2005/REC-xkms2-20050628/"><cite>XML Key Management Specification (XKMS 2.0).</cite></a> 28 June 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-xkms2-20050628/">http://www.w3.org/TR/2005/REC-xkms2-20050628/</a> ',"XKMS2-BINDINGS":'Shivaram H. Mysore; Phillip Hallam-Baker. <a href="http://www.w3.org/TR/2005/REC-xkms2-bindings-20050628"><cite>XML Key Management Specification (XKMS 2.0) Bindings.</cite></a> 28 June 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-xkms2-bindings-20050628">http://www.w3.org/TR/2005/REC-xkms2-bindings-20050628</a> ',"XKMS2-REQ":'Frederick Hirsch; Mike Just. <a href="http://www.w3.org/TR/2003/NOTE-xkms2-req-20030505"><cite>XML Key Management (XKMS 2.0) Requirements.</cite></a> 5 May 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-xkms2-req-20030505">http://www.w3.org/TR/2003/NOTE-xkms2-req-20030505</a> ',"XLINK-PRINCIPLES":'Eve Maler; Steven DeRose. <a href="http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303"><cite>XML Linking Language (XLink) Design Principles.</cite></a> 3 March 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303">http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303</a> ',"XLINK-REQ":'Steven J. DeRose. <a href="http://www.w3.org/TR/1999/NOTE-xlink-req-19990224"><cite>XML XLink Requirements Version 1.0.</cite></a> 24 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xlink-req-19990224">http://www.w3.org/TR/1999/NOTE-xlink-req-19990224</a> ',XLINK10:'David Orchard; Eve Maler; Steven DeRose. <a href="http://www.w3.org/TR/2001/REC-xlink-20010627"><cite>XML Linking Language (XLink) Version 1.0.</cite></a> 27 June 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-xlink-20010627">http://www.w3.org/TR/2001/REC-xlink-20010627</a> ',"XLINK10-EXT":'Norman Walsh. <a href="http://www.w3.org/TR/2005/NOTE-xlink10-ext-20050127"><cite>Extending XLink 1.0.</cite></a> 27 January 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xlink10-ext-20050127">http://www.w3.org/TR/2005/NOTE-xlink10-ext-20050127</a> ',XLINK11:'Eve Maler; et al. <a href="http://www.w3.org/TR/2008/WD-xlink11-20080331"><cite>XML Linking Language (XLink) Version 1.1.</cite></a> 31 March 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xlink11-20080331">http://www.w3.org/TR/2008/WD-xlink11-20080331</a> ',XLINK2RDF:'Ron Daniel Jr. <a href="http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929"><cite>Harvesting RDF Statements from XLinks.</cite></a> 29 September 2000. W3C Note. URL: <a href="http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929">http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929</a> ',"XML-BLUEBERRY-REQ":'John Cowan. <a href="http://www.w3.org/TR/2001/WD-xml-blueberry-req-20010921"><cite>XML Blueberry Requirements.</cite></a> 21 September 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-xml-blueberry-req-20010921">http://www.w3.org/TR/2001/WD-xml-blueberry-req-20010921</a> ',"XML-C14N":'John Boyer. <a href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"><cite>Canonical XML Version 1.0.</cite></a> 15 March 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-xml-c14n-20010315">http://www.w3.org/TR/2001/REC-xml-c14n-20010315</a> ',"XML-C14N11":'John Boyer, Glenn Marcy. <a href="http://www.w3.org/TR/2008/REC-xml-c14n11-20080502/"><cite>Canonical XML Version 1.1.</cite></a> 2 May 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-xml-c14n11-20080502/">http://www.w3.org/TR/2008/REC-xml-c14n11-20080502/</a> ',"XML-C14N20":'John Boyer; Glen Marcy; Pratik Datta; Frederick Hirsch. <a href="http://www.w3.org/TR/2012/CR-xml-c14n2-20120124/"><cite>Canonical XML Version 2.0.</cite></a> 24 January 2012. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/CR-xml-c14n2-20120124/">http://www.w3.org/TR/2012/CR-xml-c14n2-20120124/</a>',"XML-CANONICAL-REQ":'James Tauber; Joel Nava. <a href="http://www.w3.org/TR/1999/NOTE-xml-canonical-req-19990605"><cite>XML Canonicalization Requirements.</cite></a> 5 June 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xml-canonical-req-19990605">http://www.w3.org/TR/1999/NOTE-xml-canonical-req-19990605</a> ',"XML-ENCRYPTION-REQ":'Joseph Reagle. <a href="http://www.w3.org/TR/2002/NOTE-xml-encryption-req-20020304"><cite>XML Encryption Requirements.</cite></a> 4 March 2002. W3C Note. URL: <a href="http://www.w3.org/TR/2002/NOTE-xml-encryption-req-20020304">http://www.w3.org/TR/2002/NOTE-xml-encryption-req-20020304</a> ',"XML-ENTITY-NAMES":'Patrick Ion; David Carlisle. <a href="http://www.w3.org/TR/2008/WD-xml-entity-names-20080721"><cite>XML Entity definitions for Characters.</cite></a> 21 July 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xml-entity-names-20080721">http://www.w3.org/TR/2008/WD-xml-entity-names-20080721</a> ',"XML-EVENTS":'Mark Birbeck; Shane McCarron. <a href="http://www.w3.org/TR/2007/WD-xml-events-20070216"><cite>XML Events 2.</cite></a> 16 February 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xml-events-20070216">http://www.w3.org/TR/2007/WD-xml-events-20070216</a> ',"XML-EXC-C14N":'Donald E. Eastlake 3rd; Joseph Reagle; John Boyer. <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/"><cite>Exclusive XML Canonicalization Version 1.0.</cite></a> 18 July 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/</a> ',"XML-FRAG-REQ":'Paul Grosso. <a href="http://www.w3.org/TR/1998/NOTE-XML-FRAG-REQ-19981123"><cite>XML Fragment Interchange Requirements, Version 1.0.</cite></a> 23 November 1998. W3C Note. URL: <a href="http://www.w3.org/TR/1998/NOTE-XML-FRAG-REQ-19981123">http://www.w3.org/TR/1998/NOTE-XML-FRAG-REQ-19981123</a> ',"XML-FRAGID":'Paul Grosso. <a href="http://www.w3.org/TR/2003/NOTE-xml-fragid-20030912"><cite>Proposal for XML Fragment Identifier Syntax 0.9.</cite></a> 12 September 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-xml-fragid-20030912">http://www.w3.org/TR/2003/NOTE-xml-fragid-20030912</a> ',"XML-FRAGMENT":'Paul Grosso; Daniel Veillard. <a href="http://www.w3.org/TR/2001/CR-xml-fragment-20010212"><cite>XML Fragment Interchange.</cite></a> 12 February 2001. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/CR-xml-fragment-20010212">http://www.w3.org/TR/2001/CR-xml-fragment-20010212</a> ',"XML-I18N-BP":'Jirka Kosek; Yves Savourel; Richard Ishida. <a href="http://www.w3.org/TR/2008/NOTE-xml-i18n-bp-20080213"><cite>Best Practices for XML Internationalization.</cite></a> 13 February 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-xml-i18n-bp-20080213">http://www.w3.org/TR/2008/NOTE-xml-i18n-bp-20080213</a> ',"XML-ID":'Daniel Veillard; Jonathan Marsh; Norman Walsh. <a href="http://www.w3.org/TR/2005/REC-xml-id-20050909"><cite>xml:id Version 1.0.</cite></a> 9 September 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-xml-id-20050909">http://www.w3.org/TR/2005/REC-xml-id-20050909</a> ',"XML-ID-REQ":'Jonathan Marsh. <a href="http://www.w3.org/TR/2003/WD-xml-id-req-20030806"><cite>xml:id Requirements.</cite></a> 6 August 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-xml-id-req-20030806">http://www.w3.org/TR/2003/WD-xml-id-req-20030806</a> ',"XML-INFOSET":'John Cowan; Richard Tobin. <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/"><cite>XML Information Set (Second Edition).</cite></a> 4 February 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/">http://www.w3.org/TR/2004/REC-xml-infoset-20040204/</a> ',"XML-INFOSET-RDFS":'Richard Tobin. <a href="http://www.w3.org/TR/2001/NOTE-xml-infoset-rdfs-20010406"><cite>An RDF Schema for the XML Information Set.</cite></a> 6 April 2001. W3C Note. URL: <a href="http://www.w3.org/TR/2001/NOTE-xml-infoset-rdfs-20010406">http://www.w3.org/TR/2001/NOTE-xml-infoset-rdfs-20010406</a> ',"XML-INFOSET-REQ":'David Megginson. <a href="http://www.w3.org/TR/1999/NOTE-xml-infoset-req-19990218"><cite>XML Information Set Requirements.</cite></a> 18 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xml-infoset-req-19990218">http://www.w3.org/TR/1999/NOTE-xml-infoset-req-19990218</a> ',"XML-Japanese":'M. Murata. <a href="http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/"><cite>XML Japanese Profile (2nd Edition)</cite></a>. March 2005. W3C Member Submission. URL: <a href="http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/"> http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/</a>',"XML-LINK-STYLE":'Norman Walsh. <a href="http://www.w3.org/TR/2001/NOTE-xml-link-style-20010605"><cite>XML Linking and Style.</cite></a> 5 June 2001. W3C Note. URL: <a href="http://www.w3.org/TR/2001/NOTE-xml-link-style-20010605">http://www.w3.org/TR/2001/NOTE-xml-link-style-20010605</a> ',"XML-MEDIA-TYPES":'&#220;mit Yal&#231;&#305;nalp; Anish Karmarkar. <a href="http://www.w3.org/TR/2005/NOTE-xml-media-types-20050504/"><cite>Describing Media Content of Binary Data in XML.</cite></a> 4 May 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xml-media-types-20050504/">http://www.w3.org/TR/2005/NOTE-xml-media-types-20050504/</a> ',"XML-MT":'M. Murata, S. St.Laurent, D. Kohn. <a href="http://www.ietf.org/rfc/rfc3023.txt"><cite>XML Media Types</cite></a>. IETF RFC 3023. URL: <a href="http://www.ietf.org/rfc/rfc3023.txt"> http://www.ietf.org/rfc/rfc3023.txt</a>.',"XML-NAMES":'Richard Tobin; et al. <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/"><cite>Namespaces in XML 1.0 (Third Edition).</cite></a> 8 December 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/">http://www.w3.org/TR/2009/REC-xml-names-20091208/</a> ',"XML-NAMES11":'Andrew Layman; et al. <a href="http://www.w3.org/TR/2006/REC-xml-names11-20060816"><cite>Namespaces in XML 1.1 (Second Edition).</cite></a> 16 August 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xml-names11-20060816">http://www.w3.org/TR/2006/REC-xml-names11-20060816</a> ',"XML-NAMES11-REQ":'Jonathan Marsh. <a href="http://www.w3.org/TR/2002/WD-xml-names11-req-20020403"><cite>Namespaces in XML 1.1 Requirements.</cite></a> 3 April 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-xml-names11-req-20020403">http://www.w3.org/TR/2002/WD-xml-names11-req-20020403</a> ',"XML-SCHEMA-REQ":'Ashok Malhotra; Murray Maloney. <a href="http://www.w3.org/TR/1999/NOTE-xml-schema-req-19990215"><cite>XML Schema Requirements.</cite></a> 15 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xml-schema-req-19990215">http://www.w3.org/TR/1999/NOTE-xml-schema-req-19990215</a> ',"XML-STYLESHEET":'James Clark. <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629"><cite>Associating Style Sheets with XML documents.</cite></a> 29 June 1999. W3C Recommendation. URL: <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629</a> ',XML10:'C. M. Sperberg-McQueen; et al. <a href="http://www.w3.org/TR/2008/REC-xml-20081126/"><cite>Extensible Markup Language (XML) 1.0 (Fifth Edition).</cite></a> 26 November 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-xml-20081126/">http://www.w3.org/TR/2008/REC-xml-20081126/</a> ',"XML10-4e":'C. M. Sperberg-McQueen; et al. <a href="http://www.w3.org/TR/2006/REC-xml-20060816/"><cite>Extensible Markup Language (XML) 1.0 (Fourth Edition).</cite></a> 16 August 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xml-20060816/">http://www.w3.org/TR/2006/REC-xml-20060816/</a> ',XML11:'Eve Maler; et al. <a href="http://www.w3.org/TR/2006/REC-xml11-20060816"><cite>Extensible Markup Language (XML) 1.1 (Second Edition).</cite></a> 16 August 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xml11-20060816">http://www.w3.org/TR/2006/REC-xml11-20060816</a> ',XML11SCHEMA10:'Henry S. Thompson. <a href="http://www.w3.org/TR/2005/NOTE-xml11schema10-20050511"><cite>Processing XML 1.1 documents with XML Schema 1.0 processors.</cite></a> 11 May 2005. W3C Note. URL: <a href="http://www.w3.org/TR/2005/NOTE-xml11schema10-20050511">http://www.w3.org/TR/2005/NOTE-xml11schema10-20050511</a> ',XMLBASE:'Jonathan Marsh, Richard Tobin. <a href="http://www.w3.org/TR/2009/REC-xmlbase-20090128/"><cite>XML Base (Second Edition).</cite></a> 28 January 2009. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2009/REC-xmlbase-20090128/">http://www.w3.org/TR/2009/REC-xmlbase-20090128/</a> ',"XMLDSIG-BESTPRACTICES":'Pratik Datta; Frederick Hirsch. <a href="http://www.w3.org/TR/2012/NOTE-xmldsig-bestpractices-20120710/"><cite>XML Signature Best Practices.</cite></a> 10 July 2012. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2012/NOTE-xmldsig-bestpractices-20120710/">http://www.w3.org/TR/2012/NOTE-xmldsig-bestpractices-20120710/</a> ',"XMLDSIG-CORE2002":'Joseph Reagle; et al. <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/"><cite>XML Signature Syntax and Processing.</cite></a> 12 February 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/">http://www.w3.org/TR/2002/REC-xmldsig-core-20020212</a> ',"XMLDSIG-CORE":'Joseph Reagle; et al. <a href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/"><cite>XML Signature Syntax and Processing (Second Edition).</cite></a> 10 June 2008. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2008/REC-xmldsig-core-20080610/">http://www.w3.org/TR/2008/REC-xmldsig-core-20080610</a> ',"XMLDSIG-CORE1":'D. Eastlake, J. Reagle, D. Solo, F. Hirsch, T. Roessler, K. Yiu. <a href="http://www.w3.org/TR/2012/WD-xmldsig-core1-20121018/"><cite>XML Signature Syntax and Processing Version 1.1.</cite></a> 18 October 2012. W3C Last Call Working Draft. (Work in progress) URL: <a href="http://www.w3.org/TR/2012/WD-xmldsig-core1-20121018/">http://www.w3.org/TR/2012/WD-xmldsig-core1-20121018/</a> ',"XMLDSIG-CORE1-CHGS":'Frederick Hirsch. <a href="http://www.w3.org/TR/2012/NOTE-xmldsig-core1-explain-20121018/"><cite>Functional Explanation of Changes in XML Signature 1.1</cite></a>. 18 October 2012. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2012/NOTE-xmldsig-core1-explain-20121018/">http://www.w3.org/TR/2012/NOTE-xmldsig-core1-explain-20121018/</a> ',"XMLDSIG-CORE1-INTEROP":'Frederick Hirsch <a href="http://www.w3.org/2008/xmlsec/Drafts/xmldsig-core1-interop/Overview.src.html"><cite>XML Signature 1.1 Interop Test Report</cite></a>. 23 July 2012. W3C Editors Draft. (Work in progress.) URL: <a href="http://www.w3.org/2008/xmlsec/Drafts/xmldsig-core1-interop/Overview.src.html">http://www.w3.org/2008/xmlsec/Drafts/xmldsig-core1-interop/Overview.src.html</a> ',"XMLDSIG-CORE2":'Mark Bartel; John Boyer; Barb Fox et al. <a href="http://www.w3.org/TR/2012/CR-xmldsig-core2-20120124/"><cite>XML Signature Syntax and Processing Version 2.0</cite></a>. 24 January 2012.  W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/CR-xmldsig-core2-20120124/">http://www.w3.org/TR/2012/CR-xmldsig-core2-20120124/</a>',"XMLDSIG-GARCIA":'Raúl Benito García. <a href="http://www.w3.org/2008/xmlsec/papers/TFCFirmasdigitalesenXML-11-10-2007.pdf"><cite>Verificación De Firmas Digitales En Documentos XML De Tamaño Arbitrario.</cite></a> December 2006. URL: <a href="http://www.w3.org/2008/xmlsec/papers/TFCFirmasdigitalesenXML-11-10-2007.pdf">http://www.w3.org/2008/xmlsec/papers/TFCFirmasdigitalesenXML-11-10-2007.pdf</a>',"XMLDSIG-COMPLEXITY":'Brad Hill. <a href="http://www.w3.org/2007/xmlsec/ws/papers/04-hill-isecpartners/"><cite>Complexity as the Enemy of Security: Position Paper for W3C Workshop on Next Steps for XML Signature and XML Encryption.</cite></a>. 25-26 September 2007. W3C Workshop. URL: <a href="http://www.w3.org/2007/xmlsec/ws/papers/04-hill-isecpartners/">http://www.w3.org/2007/xmlsec/ws/papers/04-hill-isecpartners/</a> ',"XMLDSIG-SEMANTICS":'Sebastian Gajek, Lijun Liao, and Jörg Schwenk. <a href="http://www.w3.org/2007/xmlsec/ws/papers/07-gajek-rub/"><cite> Towards a Semantic of XML Signature: Position Paper for W3C Workshop on Next Steps for XML Signature and XML Encryption </cite></a> 25-26 September 2007. W3C Workshop. URL: <a href="http://www.w3.org/2007/xmlsec/ws/papers/07-gajek-rub/">http://www.w3.org/2007/xmlsec/ws/papers/07-gajek-rub/</a> ',"XMLDSIG-THOMPSON":'Henry Thompson. <a href="http://www.w3.org/2007/xmlsec/ws/papers/20-thompson/"><cite>Radical proposal for Vnext of XML Signature: Position Paper for W3C Workshop on Next Steps for XML Signature and XML Encryption</cite></a> 26 September 2007. W3C Workshop. URL: <a href="http://www.w3.org/2007/xmlsec/ws/papers/20-thompson/"> http://www.w3.org/2007/xmlsec/ws/papers/20-thompson/</a> ',"XMLDSIG-XPATH":'Pratik Datta. Frederick Hirsch, Meiko Jensen <a href="http://www.w3.org/TR/2012/CR-xmldsig-xpath-20120124/"><cite>XML Signature Streaming Profile of XPath 1.0</cite>.</a> 24 January 2012. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/CR-xmldsig-xpath-20120124/">http://www.w3.org/TR/2012/CR-xmldsig-xpath-20120124/</a>',"XMLDSIG-XPATH-FILTER2":'Merlin Hughes; John Boyer; Joseph Reagle. <a href="http://www.w3.org/TR/2002/REC-xmldsig-filter2-20021108/"><cite>XML-Signature XPath Filter 2.0.</cite></a> 8 November 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xmldsig-filter2-20021108/">http://www.w3.org/TR/2002/REC-xmldsig-filter2-20021108/</a> ',"XMLDSIG-PROPERTIES":'Frederick Hirsch. <a href="http://www.w3.org/TR/2011/CR-xmldsig-properties-20110303/"><cite>XML Signature Properties.</cite></a> 3 March 2011. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/CR-xmldsig-properties-20110303/">http://www.w3.org/TR/2011/CR-xmldsig-properties-20110303/</a> ',"XMLDSIG-REQUIREMENTS":'Joseph Reagle Jr. <a href="http://www.w3.org/TR/1999/WD-xmldsig-requirements-19991014"><cite>XML-Signature Requirements.</cite></a> 14 October 1999. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1999/WD-xmldsig-requirements-19991014">http://www.w3.org/TR/1999/WD-xmldsig-requirements-19991014</a> ',"XMLDSIG-SIMPLIFY":'Pratik Datta; Frederick Hirsch. <a href="http://www.w3.org/TR/2009/WD-xmldsig-simplify-20090226"><cite>XML Signature Transform Simplification: Requirements and Design.</cite></a> 26 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-xmldsig-simplify-20090226">http://www.w3.org/TR/2009/WD-xmldsig-simplify-20090226</a> ',"XMLDSIG2ED-TESTS":'Konrad Lanz; Sean Mullan; Juan Carlos Cruellas. <a href="http://www.w3.org/TR/2008/NOTE-xmldsig2ed-tests-20080610"><cite>Test Cases for C14N 1.1 and XMLDSig Interoperability.</cite></a> 10 June 2008. W3C Note. URL: <a href="http://www.w3.org/TR/2008/NOTE-xmldsig2ed-tests-20080610">http://www.w3.org/TR/2008/NOTE-xmldsig2ed-tests-20080610</a> ',"XMLENC-CBC-ATTACK":'Tibor Jager; Juraj Somorovsky. <a href="http://www.nds.rub.de/media/nds/veroeffentlichungen/2011/10/22/HowToBreakXMLenc.pdf"><cite>How to Break XML Encryption</cite></a> 17-21 October 2011. CCS\' 11, ACM. URL: <a href="http://www.nds.rub.de/media/nds/veroeffentlichungen/2011/10/22/HowToBreakXMLenc.pdf">http://www.nds.rub.de/media/nds/veroeffentlichungen/2011/10/22/HowToBreakXMLenc.pdf</a> ',"XMLENC-CBC-ATTACK-COUNTERMEASURES":'Juraj Somorovsky, J&ouml;rg Schwenk. <a href="http://www.w3.org/2008/xmlsec/papers/xmlEncCountermeasuresW3C.pdf"><cite>Technical Analysis of Countermeasures against Attack on XML Encryption - or - Just Another Motivation for Authenticated Encryption</cite.></a>. 2011.  URL: <a href="http://www.w3.org/2008/xmlsec/papers/xmlEncCountermeasuresW3C.pdf">http://www.w3.org/2008/xmlsec/papers/xmlEncCountermeasuresW3C.pdf</a>',"XMLENC-CREF2":'Frederick Hirsch. <a href="http://www.w3.org/TR/2012/CR-xmlenc-transform20-20120313/">Encryption 1.1 CipherReference Processing Using 2.0 Transforms</cite></a> 13 March 2012. W3C Candidate Recommendation. (Work in progress.) URL: <a href=" http://www.w3.org/TR/2012/CR-xmlenc-transform20-20120313/">http://www.w3.org/TR/2012/CR-xmlenc-transform20-20120313/</a>',"XMLENC-CORE":'Donald Eastlake; Joseph Reagle. <a href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/"><cite>XML Encryption Syntax and Processing.</cite></a> 10 December 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/">http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/</a> ',"XMLENC-CORE1":'J. Reagle; D. Eastlake; F. Hirsch; T. Roessler. <a href="http://www.w3.org/TR/2012/WD-xmlenc-core1-20121018/"><cite>XML Encryption Syntax and Processing Version 1.1.</cite></a> 18 October 2012. W3C Last Call Working Draft. (Work in progress) URL: <a href="http://www.w3.org/TR/2012/WD-xmlenc-core1-20121018/">http://www.w3.org/TR/2012/WD-xmlenc-core1-20121018/</a> ',"XMLENC-CORE1-CHGS":'Frederick Hirsch. <a href="http://www.w3.org/TR/2012/NOTE-xmlenc-core1-explain-20121018/"><cite>Functional Explanation of in XML Encryption 1.1</cite></a>. 18 October 2012. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2012/NOTE-xmlenc-core1-explain-20121018/">http://www.w3.org/TR/2012/NOTE-xmlenc-core1-explain-20121018/</a> ',"XMLENC-CORE1-INTEROP":'Frederick Hirsch <a href="http://www.w3.org/2008/xmlsec/Drafts/xmlenc-core1-interop/Overview.src.html"><cite>XML Encryption 1.1 Interop Test Report</cite></a>. 6 August 2012. W3C Editors Draft. (Work in progress.) URL: <a href="http://www.w3.org/2008/xmlsec/Drafts/xmlenc-core1-interop/Overview.src.html">http://www.w3.org/2008/xmlsec/Drafts/xmlenc-core1-interop/Overview.src.html</a> ',"XMLENC-DECRYPT":'Takeshi Imamura; Merlin Hughes; Hiroshi Maruyama. <a href="http://www.w3.org/TR/2002/REC-xmlenc-decrypt-20021210"><cite>Decryption Transform for XML Signature.</cite></a> 10 December 2002. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2002/REC-xmlenc-decrypt-20021210">http://www.w3.org/TR/2002/REC-xmlenc-decrypt-20021210</a> ',"XMLENC-PKCS15-ATTACK":'Tibor Jager; Sebastian Schinzel, Juraj Somorovsky. <a href="http://www.nds.rub.de/media/nds/veroeffentlichungen/2012/07/11/XMLencBleichenbacher.pdf"><cite>Bleichenbacher\'s Attack Strikes Again: Breaking PKCS#1.5 in XML Encryption</cite></a> . 2012. In Proceedings of the 17th European Symposium on Research in Computer Security (ESO RICS). URL: <a href="http://www.nds.rub.de/media/nds/veroeffentlichungen/2012/07/11/XMLencBleichenbacher.pdf">http://www.nds.rub.de/media/nds/veroeffentlichungen/2012/07/11/XMLencBleichenbacher.pdf</a> ',"XMLENC11-TESTCASES":'Pratik Datta, Frederick Hirsch. <a href="http://www.w3.org/TR/2012/WD-xmlenc-core1-testcases-20120105/"><cite>Test Cases for XML Encryption 1.1.</cite></a> 5 January 2012. W3C First Public Working Draft (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-xmlenc-core1-testcases-20120105/">http://www.w3.org/TR/2012/WD-xmlenc-core1-testcases-20120105/</a>',XHR:"Anne van Kesteren. <a href='http://www.w3.org/TR/XMLHttpRequest/'>XMLHttpRequest</a>",XMLHTTPREQUEST:'Anne van Kesteren. <a href="http://www.w3.org/TR/2008/WD-XMLHttpRequest-20080415"><cite>The XMLHttpRequest Object.</cite></a> 15 April 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-XMLHttpRequest-20080415">http://www.w3.org/TR/2008/WD-XMLHttpRequest-20080415</a> ',XMLHTTPREQUEST2:'Anne van Kesteren. <a href="http://www.w3.org/TR/2008/WD-XMLHttpRequest2-20080930"><cite>XMLHttpRequest Level 2.</cite></a> 30 September 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-XMLHttpRequest2-20080930">http://www.w3.org/TR/2008/WD-XMLHttpRequest2-20080930</a> ',XMLHTTPREQUEST3:'Anne van Kesteren. <a href="http://www.w3.org/TR/2010/CR-XMLHttpRequest-20100803"><cite>XMLHttpRequest</cite></a> 3 August 2010. W3C Candidate Recommendation. URL: <a href="http://www.w3.org/TR/2010/CR-XMLHttpRequest-20100803">http://www.w3.org/TR/2010/CR-XMLHttpRequest-20100803</a> ',"XMLP-REQS":'Oisin Hurley; et al. <a href="http://www.w3.org/TR/2003/NOTE-xmlp-reqs-20030728"><cite>XML Protocol (XMLP) Requirements.</cite></a> 28 July 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-xmlp-reqs-20030728">http://www.w3.org/TR/2003/NOTE-xmlp-reqs-20030728</a> ',"XMLP-SCENARIOS":'John Ibbotson. <a href="http://www.w3.org/TR/2003/NOTE-xmlp-scenarios-20030730"><cite>SOAP Version 1.2 Usage Scenarios.</cite></a> 30 July 2003. W3C Note. URL: <a href="http://www.w3.org/TR/2003/NOTE-xmlp-scenarios-20030730">http://www.w3.org/TR/2003/NOTE-xmlp-scenarios-20030730</a> ',"XMLSCHEMA-0":'David C. Fallside; Priscilla Walmsley. <a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/"><cite>XML Schema Part 0: Primer Second Edition.</cite></a> 28 October 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/</a> ',"XMLSCHEMA-1":'Henry S. Thompson; et al. <a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/"><cite>XML Schema Part 1: Structures Second Edition.</cite></a> 28 October 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/</a> ',"XMLSCHEMA-11-REQ":'Priscilla Walmsley; Ashok Malhotra; Charles Campbell. <a href="http://www.w3.org/TR/2003/WD-xmlschema-11-req-20030121"><cite>Requirements for XML Schema 1.1.</cite></a> 21 January 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-xmlschema-11-req-20030121">http://www.w3.org/TR/2003/WD-xmlschema-11-req-20030121</a> ',"XMLSCHEMA-2":'Paul V. Biron; Ashok Malhotra. <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/"><cite>XML Schema Part 2: Datatypes Second Edition.</cite></a> 28 October 2004. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/">http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/</a> ',"XMLSCHEMA-FORMAL":'Philip Wadler; et al. <a href="http://www.w3.org/TR/2001/WD-xmlschema-formal-20010925"><cite>XML Schema: Formal Description.</cite></a> 25 September 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-xmlschema-formal-20010925">http://www.w3.org/TR/2001/WD-xmlschema-formal-20010925</a> ',"XMLSCHEMA-GUIDE2VERSIONING":'David Orchard. <a href="http://www.w3.org/TR/2007/WD-xmlschema-guide2versioning-20070720"><cite>Guide to Versioning XML Languages using new XML Schema 1.1 features.</cite></a> 20 July 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xmlschema-guide2versioning-20070720">http://www.w3.org/TR/2007/WD-xmlschema-guide2versioning-20070720</a> ',"XMLSCHEMA-PATTERNS":'Jonathan Calladine; et al. <a href="http://www.w3.org/TR/2008/WD-xmlschema-patterns-20080328"><cite>Basic XML Schema Patterns for Databinding Version 1.0.</cite></a> 28 March 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xmlschema-patterns-20080328">http://www.w3.org/TR/2008/WD-xmlschema-patterns-20080328</a> ',"XMLSCHEMA-PATTERNS-ADVANCED":'George Cowe; et al. <a href="http://www.w3.org/TR/2008/WD-xmlschema-patterns-advanced-20080328"><cite>Advanced XML Schema Patterns for Databinding Version 1.0.</cite></a> 28 March 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xmlschema-patterns-advanced-20080328">http://www.w3.org/TR/2008/WD-xmlschema-patterns-advanced-20080328</a> ',"XMLSCHEMA-REF":'Asir S. Vedamuthu; Mary Holstege. <a href="http://www.w3.org/TR/2008/WD-xmlschema-ref-20081117"><cite>W3C XML Schema Definition Language (XSD): Component Designators.</cite></a> 17 November 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xmlschema-ref-20081117">http://www.w3.org/TR/2008/WD-xmlschema-ref-20081117</a> ',"XMLSCHEMA11-1":'C. M. Sperberg-McQueen; Henry S. Thompson; Shudi Gao. <a href="http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures.</cite></a> 5 April 2012. W3C Recommendation URL: <a href="http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/">http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/</a> ',"XMLSCHEMA11-2":'Henry S. Thompson; et al. <a href="http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes.</cite></a> 5 April 2012. W3C Recommendation URL: <a href="http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/">http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/</a> ',"XMLSEC-ALGORITHMS":'Thomas Roessler; Frederick Hirsch; Kelvin Yiu. <a href="http://www.w3.org/TR/2012/WD-xmlsec-algorithms-20120105/"><cite>XML Security Algorithm Cross-Reference.</cite></a> 5 January 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-xmlsec-algorithms-20120105/">http://www.w3.org/TR/2012/WD-xmlsec-algorithms-20120105/</a> ',"XMLSEC-DERIVEDKEYS":'Magnus Nystr&#246;m. <a href="http://www.w3.org/TR/2009/WD-xmlsec-derivedkeys-20090226/"><cite>XML Security Derived Keys.</cite></a> 26 February 2009. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2009/WD-xmlsec-derivedkeys-20090226">http://www.w3.org/TR/2009/WD-xmlsec-derivedkeys-20090226</a> ',"XMLSEC-GHCIPHERS":'Magnus Nystr&#246;m; Frederick Hirsch. <a href="http://www.w3.org/TR/2011/CR-xmlsec-generic-hybrid-20110303/"><cite>XML Security Generic Hybrid Ciphers.</cite></a> 3 March 2011. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/CR-xmlsec-generic-hybrid-20110303/">http://www.w3.org/TR/2011/CR-xmlsec-generic-hybrid-20110303/</a> ',"XMLSEC-NEXTSTEPS-2007":'Frederick Hirsch; Thomas Roessler. <a href="http://www.w3.org/2007/xmlsec/ws/report.html"><cite>Workshop Report W3C Workshop on Next Steps for XML Signature and XML Encryption</cite></a> 25-26 September 2007. W3C Workshop Report. URL: <a href="http://www.w3.org/2007/xmlsec/ws/report.html">http://www.w3.org/2007/xmlsec/ws/report.html</a>',"XMLSEC-RELAXNG":'Makoto Murata, Frederick Hirsch. <a href="http://www.w3.org/TR/2012/NOTE-xmlsec-rngschema-20120124/"><cite>XML Security RELAX NG Schemas.</cite></a> 24 January 2012. W3C Working Group Note. URL: <a href="http://www.w3.org/TR/2012/NOTE-xmlsec-rngschema-20120124/">http://www.w3.org/TR/2012/NOTE-xmlsec-rngschema-20120124/</a>',"XMLSEC11-REQS":'Frederick Hirsch, Thomas Roessler. <a href="http://www.w3.org/TR/2011/WD-xmlsec-reqs-20110303/"><cite>XML Security 1.1 Requirements and Design Considerations.</cite></a> 3 March 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-xmlsec-reqs-20110303/">http://www.w3.org/TR/2011/WD-xmlsec-reqs-20110303/</a> ',"XMLSEC2-REQS":'Frederick Hirsch, Pratik Datta. <a href="http://www.w3.org/TR/2011/WD-xmlsec-reqs2-20110421/"><cite>XML Security 2.0 Requirements and Design Considerations.</cite></a> 21 April 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-xmlsec-reqs2-20110421/">http://www.w3.org/TR/2011/WD-xmlsec-reqs2-20110421/</a> ',XMLSTYLE:'James Clark. <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629"><cite>Associating Style Sheets with XML documents.</cite></a> 29 June 1999. W3C Recommendation. URL: <a href="http://www.w3.org/1999/06/REC-xml-stylesheet-19990629">http://www.w3.org/1999/06/REC-xml-stylesheet-19990629</a> ',"XML-PARSER-STAX":'Christopher Fry. <a href="http://jcp.org/en/jsr/detail?id=173"><cite>JSR 173: Streaming API for XML for Java Specification</cite></a> 8th October 2003. v1.0  URL: <a href="http://jcp.org/en/jsr/detail?id=173">http://jcp.org/en/jsr/detail?id=173</a>',XOP10:'Martin Gudgin; et al. <a href="http://www.w3.org/TR/2005/REC-xop10-20050125"><cite>XML-binary Optimized Packaging.</cite></a> 25 January 2005. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2005/REC-xop10-20050125">http://www.w3.org/TR/2005/REC-xop10-20050125</a> ',"XOPINC-FAQ":'Michael Mahan. <a href="http://www.w3.org/TR/2004/NOTE-xopinc-FAQ-20040608"><cite>XOP Inclusion Mechanism - Frequently Asked Questions.</cite></a> 8 June 2004. W3C Note. URL: <a href="http://www.w3.org/TR/2004/NOTE-xopinc-FAQ-20040608">http://www.w3.org/TR/2004/NOTE-xopinc-FAQ-20040608</a> ',XPATH:'James Clark; Steven DeRose. <a href="http://www.w3.org/TR/1999/REC-xpath-19991116/"><cite>XML Path Language (XPath) Version 1.0.</cite></a> 16 November 1999. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1999/REC-xpath-19991116/">http://www.w3.org/TR/1999/REC-xpath-19991116/</a> ',"XPATH-DATAMODEL":'Norman Walsh; et al. <a href="http://www.w3.org/TR/2007/REC-xpath-datamodel-20070123"><cite>XQuery 1.0 and XPath 2.0 Data Model (XDM).</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xpath-datamodel-20070123">http://www.w3.org/TR/2007/REC-xpath-datamodel-20070123</a> ',"XPATH-FULL-TEXT-10":'Stephen Buxton; et al. <a href="http://www.w3.org/TR/2008/CR-xpath-full-text-10-20080516"><cite>XQuery and XPath Full Text 1.0.</cite></a> 16 May 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-xpath-full-text-10-20080516">http://www.w3.org/TR/2008/CR-xpath-full-text-10-20080516</a> ',"XPATH-FULL-TEXT-10-REQUIREMENTS":'Pat Case; Stephen Buxton; Michael Rys. <a href="http://www.w3.org/TR/2008/WD-xpath-full-text-10-requirements-20080516"><cite>XQuery and XPath Full Text 1.0 Requirements.</cite></a> 16 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xpath-full-text-10-requirements-20080516">http://www.w3.org/TR/2008/WD-xpath-full-text-10-requirements-20080516</a> ',"XPATH-FULL-TEXT-10-USE-CASES":'Pat Case; Sihem Amer-Yahia. <a href="http://www.w3.org/TR/2008/WD-xpath-full-text-10-use-cases-20080516"><cite>XQuery and XPath Full Text 1.0 Use Cases.</cite></a> 16 May 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xpath-full-text-10-use-cases-20080516">http://www.w3.org/TR/2008/WD-xpath-full-text-10-use-cases-20080516</a> ',"XPATH-FUNCTIONS":'Jim Melton; Ashok Malhotra; Norman Walsh. <a href="http://www.w3.org/TR/2007/REC-xpath-functions-20070123"><cite>XQuery 1.0 and XPath 2.0 Functions and Operators.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xpath-functions-20070123">http://www.w3.org/TR/2007/REC-xpath-functions-20070123</a> ',XPATH20:'Anders Berglund; et al. <a href="http://www.w3.org/TR/2007/REC-xpath20-20070123"><cite>XML Path Language (XPath) 2.0.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xpath20-20070123">http://www.w3.org/TR/2007/REC-xpath20-20070123</a> ',XPATH20REQ:'K. Karun; Mary F. Fern&#225;ndez; Mark Scardina. <a href="http://www.w3.org/TR/2005/WD-xpath20req-20050603"><cite>XPath Requirements Version 2.0.</cite></a> 3 June 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-xpath20req-20050603">http://www.w3.org/TR/2005/WD-xpath20req-20050603</a> ',XPROC:'Alex Milowski; Henry S. Thompson; Norman Walsh. <a href="http://www.w3.org/TR/2008/CR-xproc-20081126/"><cite>XProc: An XML Pipeline Language.</cite></a> 26 November 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-xproc-20081126/">http://www.w3.org/TR/2008/CR-xproc-20081126/</a> ',"XPROC-REQUIREMENTS":'Alex Milowski. <a href="http://www.w3.org/TR/2006/WD-xproc-requirements-20060411"><cite>XML Processing Model Requirements and Use Cases.</cite></a> 11 April 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-xproc-requirements-20060411">http://www.w3.org/TR/2006/WD-xproc-requirements-20060411</a> ',"XPTR-ELEMENT":'Norman Walsh; et al. <a href="http://www.w3.org/TR/2003/REC-xptr-element-20030325/"><cite>XPointer element() Scheme.</cite></a> 25 March 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-xptr-element-20030325/">http://www.w3.org/TR/2003/REC-xptr-element-20030325/</a> ',"XPTR-FRAMEWORK":'Paul Grosso; et al. <a href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/"><cite>XPointer Framework.</cite></a> 25 March 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-xptr-framework-20030325/">http://www.w3.org/TR/2003/REC-xptr-framework-20030325/</a> ',"XPTR-INFOSET-LIAISON":'Steven J. DeRose. <a href="http://www.w3.org/TR/1999/NOTE-xptr-infoset-liaison-19990224"><cite>XPointer-Information Set Liaison Statement Version 1.0.</cite></a> 24 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xptr-infoset-liaison-19990224">http://www.w3.org/TR/1999/NOTE-xptr-infoset-liaison-19990224</a> ',"XPTR-POLICY":'Henry Thompson. <a href="http://www.w3.org/2005/04/xpointer-policy.html"><cite>XPointer Scheme Name Registry Policy.</cite></a>. URL: <a href="http://www.w3.org/2005/04/xpointer-policy.html">http://www.w3.org/2005/04/xpointer-policy.html</a>',"XPTR-REQ":'Steven J. DeRose. <a href="http://www.w3.org/TR/1999/NOTE-xptr-req-19990224"><cite>XML XPointer Requirements Version 1.0.</cite></a> 24 February 1999. W3C Note. URL: <a href="http://www.w3.org/TR/1999/NOTE-xptr-req-19990224">http://www.w3.org/TR/1999/NOTE-xptr-req-19990224</a> ',"XPTR-XMLNS":'Jonathan Marsh; et al. <a href="http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/"><cite>XPointer xmlns() Scheme.</cite></a> 25 March 2003. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/">http://www.w3.org/TR/2003/REC-xptr-xmlns-20030325/</a> ',"XPTR-XPOINTER-CR2001":'Ron Daniel Jr.; Eve Maler; Steven DeRose. <a href="http://www.w3.org/TR/2001/CR-xptr-20010911/"><cite>XPointer xpointer() Scheme.</cite></a> September 2001. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/CR-xptr-20010911/">http://www.w3.org/TR/2001/CR-xptr-20010911/</a> ',"XPTR-XPOINTER":'Ron Daniel Jr.; Eve Maler; Steven DeRose. <a href="http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/"><cite>XPointer xpointer() Scheme.</cite></a> 19 December 2002. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/">http://www.w3.org/TR/2002/WD-xptr-xpointer-20021219/</a> ',XQUERY:'Don Chamberlin; et al. <a href="http://www.w3.org/TR/2007/REC-xquery-20070123"><cite>XQuery 1.0: An XML Query Language.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xquery-20070123">http://www.w3.org/TR/2007/REC-xquery-20070123</a> ',"XQUERY-11":'Jonathan Robie; Don Chamberlin. <a href="http://www.w3.org/TR/2008/WD-xquery-11-20081203"><cite>XQuery 1.1.</cite></a> 3 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xquery-11-20081203">http://www.w3.org/TR/2008/WD-xquery-11-20081203</a> ',"XQUERY-11-REQUIREMENTS":'Daniel Engovatov; Daniel Engovatov. <a href="http://www.w3.org/TR/2007/WD-xquery-11-requirements-20070323"><cite>XML Query (XQuery) 1.1 Requirements.</cite></a> 23 March 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xquery-11-requirements-20070323">http://www.w3.org/TR/2007/WD-xquery-11-requirements-20070323</a> ',"XQUERY-11-USE-CASES":'Tim Kraska. <a href="http://www.w3.org/TR/2008/WD-xquery-11-use-cases-20081203"><cite>XQuery 1.1 Use Cases.</cite></a> 3 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xquery-11-use-cases-20081203">http://www.w3.org/TR/2008/WD-xquery-11-use-cases-20081203</a> ',"XQUERY-30":'Jonathan Robie; Don Chamberlin; Michael Dyck; John Snelson. <a href="http://www.w3.org/TR/2011/WD-xquery-30-20111213/"><cite>XQuery 3.0.</cite></a> 13 December 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2011/WD-xquery-30-20111213/">http://www.w3.org/TR/2011/WD-xquery-30-20111213/</a> ',"XQUERY-30-REQUIREMENTS":'Daniel Engovatov; Jonathan Robie. <a href="http://www.w3.org/TR/2010/WD-xquery-30-requirements-20100916/"><cite>XQuery 3.0 Requirements.</cite></a> 16 September 2010. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-xquery-30-requirements-20100916/">http://www.w3.org/TR/2010/WD-xquery-30-requirements-20100916/</a> ',"XQUERY-30-USE-CASES":'Jonathan Robie; Tim Kraska. <a href="http://www.w3.org/TR/2012/WD-xquery-30-use-cases-20120327/"><cite>XQuery 3.0 Use Cases.</cite></a> 27 March 2012. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2012/WD-xquery-30-use-cases-20120327/">http://www.w3.org/TR/2012/WD-xquery-30-use-cases-20120327/</a> ',"XQUERY-REQUIREMENTS":'Massimo Marchiori; et al. <a href="http://www.w3.org/TR/2007/NOTE-xquery-requirements-20070323"><cite>XML Query (XQuery) Requirements.</cite></a> 23 March 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-xquery-requirements-20070323">http://www.w3.org/TR/2007/NOTE-xquery-requirements-20070323</a> ',"XQUERY-SEMANTICS":'Michael Rys; et al. <a href="http://www.w3.org/TR/2007/REC-xquery-semantics-20070123"><cite>XQuery 1.0 and XPath 2.0 Formal Semantics.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xquery-semantics-20070123">http://www.w3.org/TR/2007/REC-xquery-semantics-20070123</a> ',"XQUERY-SX-10":'Giorgio Ghelli; et al. <a href="http://www.w3.org/TR/2008/WD-xquery-sx-10-20081203"><cite>XQuery Scripting Extension 1.0.</cite></a> 3 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xquery-sx-10-20081203">http://www.w3.org/TR/2008/WD-xquery-sx-10-20081203</a> ',"XQUERY-SX-10-REQUIREMENTS":'Giorgio Ghelli; et al. <a href="http://www.w3.org/TR/2007/WD-xquery-sx-10-requirements-20070323"><cite>XQuery Scripting Extension 1.0 Requirements.</cite></a> 23 March 2007. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2007/WD-xquery-sx-10-requirements-20070323">http://www.w3.org/TR/2007/WD-xquery-sx-10-requirements-20070323</a> ',"XQUERY-SX-10-USE-CASES":'John Snelson. <a href="http://www.w3.org/TR/2008/WD-xquery-sx-10-use-cases-20081203"><cite>XQuery Scripting Extension 1.0 Use Cases.</cite></a> 3 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xquery-sx-10-use-cases-20081203">http://www.w3.org/TR/2008/WD-xquery-sx-10-use-cases-20081203</a> ',"XQUERY-UPDATE-10":'Daniela Florescu; et al. <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-20080801"><cite>XQuery Update Facility 1.0.</cite></a> 1 August 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-20080801">http://www.w3.org/TR/2008/CR-xquery-update-10-20080801</a> ',"XQUERY-UPDATE-10-REQUIREMENTS":'Jonathan Robie; Don Chamberlin. <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-requirements-20080314"><cite>XQuery Update Facility 1.0 Requirements.</cite></a> 14 March 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-requirements-20080314">http://www.w3.org/TR/2008/CR-xquery-update-10-requirements-20080314</a> ',"XQUERY-UPDATE-10-USE-CASES":'Jonathan Robie; Ioana Manolescu. <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-use-cases-20080314"><cite>XQuery Update Facility 1.0 Use Cases.</cite></a> 14 March 2008. W3C Candidate Recommendation. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/CR-xquery-update-10-use-cases-20080314">http://www.w3.org/TR/2008/CR-xquery-update-10-use-cases-20080314</a> ',"XQUERY-USE-CASES":'Daniela Florescu; et al. <a href="http://www.w3.org/TR/2007/NOTE-xquery-use-cases-20070323"><cite>XML Query Use Cases.</cite></a> 23 March 2007. W3C Note. URL: <a href="http://www.w3.org/TR/2007/NOTE-xquery-use-cases-20070323">http://www.w3.org/TR/2007/NOTE-xquery-use-cases-20070323</a> ',"XQUERY-XPATH-PARSING":'Scott Boag. <a href="http://www.w3.org/TR/2005/WD-xquery-xpath-parsing-20050404"><cite>Building a Tokenizer for XPath or XQuery.</cite></a> 4 April 2005. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2005/WD-xquery-xpath-parsing-20050404">http://www.w3.org/TR/2005/WD-xquery-xpath-parsing-20050404</a> ',XQUERYX:'Subramanian Muralidhar; Jim Melton. <a href="http://www.w3.org/TR/2007/REC-xqueryx-20070123"><cite>XML Syntax for XQuery 1.0 (XQueryX).</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xqueryx-20070123">http://www.w3.org/TR/2007/REC-xqueryx-20070123</a> ',"XQUERYX-11":'Jim Melton. <a href="http://www.w3.org/TR/2008/WD-xqueryx-11-20081203"><cite>XQueryX 1.1.</cite></a> 3 December 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xqueryx-11-20081203">http://www.w3.org/TR/2008/WD-xqueryx-11-20081203</a> ',XQUPDATEUSECASES:'Ioana Manolescu; Jonathan Robie. <a href="http://www.w3.org/TR/2006/WD-xqupdateusecases-20060508"><cite>XQuery Update Facility Use Cases.</cite></a> 8 May 2006. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2006/WD-xqupdateusecases-20060508">http://www.w3.org/TR/2006/WD-xqupdateusecases-20060508</a> ',XSL10:'Jeremy Richman; et al. <a href="http://www.w3.org/TR/2001/REC-xsl-20011015/"><cite>Extensible Stylesheet Language (XSL) Version 1.0.</cite></a> 15 October 2001. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2001/REC-xsl-20011015/">http://www.w3.org/TR/2001/REC-xsl-20011015/</a> ',XSL11:'Anders Berglund. <a href="http://www.w3.org/TR/2006/REC-xsl11-20061205"><cite>Extensible Stylesheet Language (XSL) Version 1.1.</cite></a> 5 December 2006. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2006/REC-xsl11-20061205">http://www.w3.org/TR/2006/REC-xsl11-20061205</a> ',"XSL11-REQ":'Paul Grosso. <a href="http://www.w3.org/TR/2003/WD-xsl11-req-20031217"><cite>Extensible Stylesheet Language (XSL) Version 1.1 Requirements.</cite></a> 17 December 2003. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2003/WD-xsl11-req-20031217">http://www.w3.org/TR/2003/WD-xsl11-req-20031217</a> ',"XSLFO20-REQ":'Klaas Bals. <a href="http://www.w3.org/TR/2008/WD-xslfo20-req-20080326"><cite>Extensible Stylesheet Language (XSL) Requirements Version 2.0.</cite></a> 26 March 2008. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2008/WD-xslfo20-req-20080326">http://www.w3.org/TR/2008/WD-xslfo20-req-20080326</a> ',XSLREQ:'Norman Walsh. <a href="http://www.w3.org/TR/1998/WD-XSLReq-19980511"><cite>XSL Requirements Summary.</cite></a> 11 May 1998. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/1998/WD-XSLReq-19980511">http://www.w3.org/TR/1998/WD-XSLReq-19980511</a> ',XSLT:'James Clark. <a href="http://www.w3.org/TR/1999/REC-xslt-19991116"><cite>XSL Transformations (XSLT) Version 1.0.</cite></a> 16 November 1999. W3C Recommendation. URL: <a href="http://www.w3.org/TR/1999/REC-xslt-19991116">http://www.w3.org/TR/1999/REC-xslt-19991116</a> ',"XSLT-XQUERY-SERIALIZATION":'Michael Kay; et al. <a href="http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123"><cite>XSLT 2.0 and XQuery 1.0 Serialization.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123">http://www.w3.org/TR/2007/REC-xslt-xquery-serialization-20070123</a> ',XSLT11:'James Clark. <a href="http://www.w3.org/TR/2001/WD-xslt11-20010824"><cite>XSL Transformations (XSLT) Version 1.1.</cite></a> 24 August 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-xslt11-20010824">http://www.w3.org/TR/2001/WD-xslt11-20010824</a> ',XSLT11REQ:'Steve Muench. <a href="http://www.w3.org/TR/2000/WD-xslt11req-20000825"><cite>XSL Transformations Requirements Version 1.1.</cite></a> 25 August 2000. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2000/WD-xslt11req-20000825">http://www.w3.org/TR/2000/WD-xslt11req-20000825</a> ',XSLT20:'Michael Kay. <a href="http://www.w3.org/TR/2007/REC-xslt20-20070123"><cite>XSL Transformations (XSLT) Version 2.0.</cite></a> 23 January 2007. W3C Recommendation. URL: <a href="http://www.w3.org/TR/2007/REC-xslt20-20070123">http://www.w3.org/TR/2007/REC-xslt20-20070123</a> ',XSLT21:'Michael Kay. <a href="http://www.w3.org/TR/2010/WD-xslt-21-20100511/"><cite>XSL Transformations (XSLT) Version 2.1.</cite></a> 11 May 2011. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-xslt-21-20100511/">http://www.w3.org/TR/2010/WD-xslt-21-20100511/</a> ',XSLT20REQ:'Steve Muench; Mark Scardina. <a href="http://www.w3.org/TR/2001/WD-xslt20req-20010214"><cite>XSLT Requirements Version 2.0.</cite></a> 14 February 2001. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2001/WD-xslt20req-20010214">http://www.w3.org/TR/2001/WD-xslt20req-20010214</a> ',YACC:"S. C. Johnson. <cite>YACC - Yet another compiler compiler.</cite> Murray Hill. 1975. Technical Report.",ZEROCONF:'S. Cheshire; B. Aboba; E. Guttman. <a href="http://files.zeroconf.org/rfc3927.txt"><cite>Dynamic Configuration of IPv4 Link-Local Addresses.</cite></a> May 2005. IETF Draft. URL: <a href="http://files.zeroconf.org/rfc3927.txt">http://files.zeroconf.org/rfc3927.txt</a>',ZHMARK:"<cite>&#26631;&#28857;&#31526;&#21495;&#29992;&#27861; (Punctuation Mark Usage).</cite> 1995. &#20013;&#21326;&#20154;&#27665;&#20849;&#21644;&#22269;&#22269;&#23478;&#26631;&#20934; "},define("biblio",function(){}),typeof berjon=="undefined"&&(window.berjon={}),berjon.simpleNode=function(e,t){e||(e={}),t||(t=document),this.ns=e,this.doc=t},berjon.calls={},berjon.simpleNode.prototype={element:function(e,t,n,r){t||(t={});var i=this._nameToQName(e,!1),s=this.doc.createElementNS(i.ns,e);for(var o in t)this._setAttr(s,o,t[o]);n&&n.appendChild(s);if(r)if(r instanceof jQuery)$(s).append(r);else if(r instanceof Array)for(var u=0;u<r.length;u++)$(s).append(r[u]);else this.text(r,s);return s},text:function(e,t){var n=this.doc.createTextNode(e);return t&&t.appendChild(n),n},comment:function(e,t){var n=this.doc.createComment(e);return t&&t.appendChild(n),n},pi:function(e,t,n){var r=this.doc.createProcessingInstruction(e,t);return n&&n.appendChild(r),r},documentFragment:function(e,t){var n=this.doc.createDocumentFragment();if(t)if(t instanceof Array)for(var r=0;r<t.length;r++)n.appendChild(t[r]);else this.text(t,n);return e&&e.appendChild(n),n},findNodes:function(e,t){t||(t=this.doc);var n=this.ns,r=this.doc.evaluate(e,t,function(e){return n[e]||null},XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),i=[];for(var s=0;s<r.snapshotLength;s++)i.push(r.snapshotItem(s));return i},copyChildren:function(e,t){while(e.childNodes.length)t.appendChild(e.firstChild)},copyAttr:function(e,t){for(var n=0;n<e.attributes.length;n++){var r=e.attributes[n];t.setAttributeNS(r.namespaceURI,r.name,r.value)}},renameEl:function(e,t){var n=e.nextSibling,r=e.parentNode;r&&r.removeChild(e);var i=this.element(t);return this.copyAttr(e,i),this.copyChildren(e,i),r&&r.insertBefore(i,n),i},makeID:function(e,t,n){if(e.hasAttribute("id"))return e.getAttribute("id");var r="";return n||(e.hasAttribute("title")?n=e.getAttribute("title"):n=e.textContent),n=n.replace(/^\s+/,""),n=n.replace(/\s+$/,""),r+=n,r=r.toLowerCase(),r.length===0&&(r="generatedID"),r=this.sanitiseID(r),t&&(r=t+"-"+r),r=this.idThatDoesNotExist(r),e.setAttribute("id",r),r},sanitiseID:function(e){return e=e.split(/[^\-.0-9a-zA-Z_]/).join("-"),e=e.replace(/^-+/g,""),e=e.replace(/-+$/,""),e.length>0&&/^[^a-z]/.test(e)&&(e="x"+e),e.length===0&&(e="generatedID"),e},idCache:{},idThatDoesNotExist:function(e){var t=1;if(this.doc.getElementById(e)||this.idCache[e]){while(this.doc.getElementById(e+"-"+t)||this.idCache[e+"-"+t])t++;e=e+"-"+t}return e},hasClass:function(e,t){return this.listClasses(e).indexOf(t)>=0},addClass:function(e,t){var n=this.listClasses(e);if(n.indexOf(t)>=0)return;n.push(t),this.setClassList(e,n)},removeClass:function(e,t){var n=this.listClasses(e),r=n.indexOf(t);if(r<0)return;n.splice(r,1),this.setClassList(e,n)},listClasses:function(e){return e.hasAttribute("class")?e.getAttribute("class").split(/\s+/):[]},setClassList:function(e,t){e.setAttribute("class",t.join(" "))},_nameToQName:function(e,t){var n=/^(.+):(.+)$/.exec(e),r,i,s;if(n){r=n[1],s=n[2];if(!this.ns[r])throw"No namespace declared for prefix '"+r+"'";i=this.ns[r]}else t?i=null:i=this.ns[""],s=e;return{ns:i,ln:s}},_setAttr:function(e,t,n){var r=this._nameToQName(t,!0);e.setAttributeNS(r.ns,r.ln,n)}},define("simpleNode",function(){}),shortcut={all_shortcuts:{},add:function(e,t,n){var r={type:"keydown",propagate:!1,disable_in_input:!1,target:document,keycode:!1};if(!n)n=r;else for(var i in r)typeof n[i]=="undefined"&&(n[i]=r[i]);var s=n.target;typeof n.target=="string"&&(s=document.getElementById(n.target));var o=this;e=e.toLowerCase();var u=function(r){r=r||window.event;if(n.disable_in_input){var i;r.target?i=r.target:r.srcElement&&(i=r.srcElement),i.nodeType==3&&(i=i.parentNode);if(i.tagName=="INPUT"||i.tagName=="TEXTAREA")return}r.keyCode?code=r.keyCode:r.which&&(code=r.which);var s=String.fromCharCode(code).toLowerCase();code==188&&(s=","),code==190&&(s=".");var o=e.split("+"),u=0,a={"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"},f={esc:27,escape:27,tab:9,space:32,"return":13,enter:13,backspace:8,scrolllock:145,scroll_lock:145,scroll:145,capslock:20,caps_lock:20,caps:20,numlock:144,num_lock:144,num:144,pause:19,"break":19,insert:45,home:36,"delete":46,end:35,pageup:33,page_up:33,pu:33,pagedown:34,page_down:34,pd:34,left:37,up:38,right:39,down:40,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123},l={shift:{wanted:!1,pressed:!1},ctrl:{wanted:!1,pressed:!1},alt:{wanted:!1,pressed:!1},meta:{wanted:!1,pressed:!1}};r.ctrlKey&&(l.ctrl.pressed=!0),r.shiftKey&&(l.shift.pressed=!0),r.altKey&&(l.alt.pressed=!0),r.metaKey&&(l.meta.pressed=!0);for(var c=0;k=o[c],c<o.length;c++)k=="ctrl"||k=="control"?(u++,l.ctrl.wanted=!0):k=="shift"?(u++,l.shift.wanted=!0):k=="alt"?(u++,l.alt.wanted=!0):k=="meta"?(u++,l.meta.wanted=!0):k.length>1?f[k]==code&&u++:n.keycode?n["keycode"]==code&&u++:s==k?u++:a[s]&&r.shiftKey&&(s=a[s],s==k&&u++);if(u==o.length&&l.ctrl.pressed==l.ctrl.wanted&&l.shift.pressed==l.shift.wanted&&l.alt.pressed==l.alt.wanted&&l.meta.pressed==l.meta.wanted){t(r);if(!n.propagate)return r.cancelBubble=!0,r.returnValue=!1,r.stopPropagation&&(r.stopPropagation(),r.preventDefault()),!1}};this.all_shortcuts[e]={callback:u,target:s,event:n.type},s.addEventListener?s.addEventListener(n.type,u,!1):s.attachEvent?s.attachEvent("on"+n.type,u):s["on"+n.type]=u},remove:function(e){e=e.toLowerCase();var t=this.all_shortcuts[e];delete this.all_shortcuts[e];if(!t)return;var n=t.event,r=t.target,i=t.callback;r.detachEvent?r.detachEvent("on"+n,i):r.removeEventListener?r.removeEventListener(n,i,!1):r["on"+n]=!1}},define("shortcut",function(){})
\ No newline at end of file
--- a/media-source/spec-html.xsl	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,865 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-
-<xsl:stylesheet version="1.0" 
-		xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-  <xsl:output method="html" doctype-system="about:legacy-compat" encoding="utf-8" omit-xml-declaration="yes"/>
-  <xsl:variable name="lower">abcdefghijklmnopqrstuvwxyz___</xsl:variable> 
-  <xsl:variable name="upper">ABCDEFGHIJKLMNOPQRSTUVWXYZ ()</xsl:variable>
-
-  <xsl:template match="//*">
-    <xsl:copy select=".">
-      <xsl:for-each select="attribute::*">
-	<xsl:attribute name="{name(.)}">
-	  <xsl:value-of select="." />
-	</xsl:attribute>
-      </xsl:for-each>
-      <xsl:apply-templates/>
-    </xsl:copy>
-  </xsl:template>
-
-  <xsl:template match="//precoderef">
-    <a><xsl:attribute name="href">#dom-<xsl:value-of select="translate(.,$upper,$lower)"/></xsl:attribute><xsl:value-of select="."/></a>
-  </xsl:template>
-
-  <xsl:template match="//premethodref">
-    <a><xsl:attribute name="href">#dom-<xsl:value-of select="translate(.,$upper,$lower)"/></xsl:attribute><xsl:value-of select="."/></a>
-  </xsl:template>
-
-  <xsl:template name="coderef_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <code><a><xsl:attribute name="href">#dom-<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a></code>
-  </xsl:template>
-
-  <xsl:template name="eventref_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <code><a><xsl:attribute name="href">#dom-evt-<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a></code>
-  </xsl:template>
-
-  <xsl:template match="//coderef">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment"><xsl:value-of select="translate(.,$upper,$lower)"/></xsl:with-param>
-      <xsl:with-param name="link_text"><xsl:value-of select="."/></xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-
-  <xsl:template match="//track-id">
-    <a href="#track-id">Track ID</a>
-  </xsl:template>
-
-  <xsl:template match="//track-ids">
-    <a href="#track-id">Track IDs</a>
-  </xsl:template>
- 
-  <xsl:template match="//track-description">
-    <a href="#track-id">track description</a>
-  </xsl:template>
-
-  <xsl:template match="//coded-frame">
-    <a href="#coded-frame">coded frame</a>
-  </xsl:template>
-
-  <xsl:template match="//coded-frames">
-    <a href="#coded-frame">coded frames</a>
-  </xsl:template>
-
-
-  <!-- MediaSource tags -->
-  <xsl:template match="//sourceBuffers">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">sourcebuffers</xsl:with-param>
-      <xsl:with-param name="link_text">sourceBuffers</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  <xsl:template match="//activeSourceBuffers">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">activesourcebuffers</xsl:with-param>
-      <xsl:with-param name="link_text">activeSourceBuffers</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//addSourceBuffer">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">addsourcebuffer</xsl:with-param>
-      <xsl:with-param name="link_text">addSourceBuffer()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//removeSourceBuffer">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">removesourcebuffer</xsl:with-param>
-      <xsl:with-param name="link_text">removeSourceBuffer()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//endOfStream">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">endofstream</xsl:with-param>
-      <xsl:with-param name="link_text">endOfStream()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//readyState">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">readystate</xsl:with-param>
-      <xsl:with-param name="link_text">readyState</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//duration">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">duration</xsl:with-param>
-      <xsl:with-param name="link_text">duration</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//duration-change-algorithm">
-    <a href="#duration-change-algorithm">duration change algorithm</a>
-  </xsl:template>
-  <xsl:template match="//new-duration">
-    <var title="true">new duration</var>
-  </xsl:template>
-
-  <xsl:template match="//eos-decode">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">endofstream</xsl:with-param>
-      <xsl:with-param name="link_text">endOfStream(&quot;decode&quot;)</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//sourceopen">
-    <xsl:call-template name="eventref_helper">
-      <xsl:with-param name="fragment">sourceopen</xsl:with-param>
-      <xsl:with-param name="link_text">sourceopen</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//sourceended">
-    <xsl:call-template name="eventref_helper">
-      <xsl:with-param name="fragment">sourceended</xsl:with-param>
-      <xsl:with-param name="link_text">sourceended</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//sourceclose">
-    <xsl:call-template name="eventref_helper">
-      <xsl:with-param name="fragment">sourceclose</xsl:with-param>
-      <xsl:with-param name="link_text">sourceclose</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <!-- SourceBufferList tags -->
-  <xsl:template match="//length">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">length</xsl:with-param>
-      <xsl:with-param name="link_text">length</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//addsourcebuffer">
-    <xsl:call-template name="eventref_helper">
-      <xsl:with-param name="fragment">addsourcebuffer</xsl:with-param>
-      <xsl:with-param name="link_text">addsourcebuffer</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//removesourcebuffer">
-    <xsl:call-template name="eventref_helper">
-      <xsl:with-param name="fragment">removesourcebuffer</xsl:with-param>
-      <xsl:with-param name="link_text">removesourcebuffer</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <!-- SourceBuffer tags -->
-  <xsl:template match="//parent-media-source">
-    <a href="#sourcebuffer-parent-media-source">parent media source</a>
-  </xsl:template>
-
-  <xsl:template match="//segment-parser-loop">
-    <a href="#sourcebuffer-segment-parser-loop">segment parser loop</a>
-  </xsl:template>
-
-  <xsl:template match="//append-state">
-    <a href="#sourcebuffer-append-state">append state</a>
-  </xsl:template>
-
-  <xsl:template match="//waiting-for-segment">
-    <a href="#sourcebuffer-waiting-for-segment">WAITING_FOR_SEGMENT</a>
-  </xsl:template>
-
-  <xsl:template match="//parsing-init-segment">
-    <a href="#sourcebuffer-parsing-init-segment">PARSING_INIT_SEGMENT</a>
-  </xsl:template>
-
-  <xsl:template match="//parsing-media-segment">
-    <a href="#sourcebuffer-parsing-media-segment">PARSING_MEDIA_SEGMENT</a>
-  </xsl:template>
-
-  <xsl:template match="//byte-stream-format-specs">
-    <a href="#byte-stream-formats">byte stream format specifications</a>
-  </xsl:template>
-
-  <xsl:template match="//init-segment-received-algorithm">
-    <a href="#sourcebuffer-init-segment-received">initialization segment received algorithm</a>
-  </xsl:template>
-
-  <xsl:template match="//coded-frame-processing-algorithm">
-    <a href="#sourcebuffer-coded-frame-processing">coded frame processing algorithm</a>
-  </xsl:template>
-
-  <xsl:template match="//input-buffer">
-    <a href="#sourcebuffer-input-buffer">input buffer</a>
-  </xsl:template>
-
-  <xsl:template match="//append">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">append</xsl:with-param>
-      <xsl:with-param name="link_text">append()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//abort">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">abort</xsl:with-param>
-      <xsl:with-param name="link_text">abort()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//buffered">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">buffered</xsl:with-param>
-      <xsl:with-param name="link_text">buffered</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//timestampOffset">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">timestampoffset</xsl:with-param>
-      <xsl:with-param name="link_text">timestampOffset</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//SourceBuffer">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">sourcebuffer</xsl:with-param>
-      <xsl:with-param name="link_text">SourceBuffer</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//SourceBufferList">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">sourcebufferlist</xsl:with-param>
-      <xsl:with-param name="link_text">SourceBufferList</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//MediaSource">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">mediasource</xsl:with-param>
-      <xsl:with-param name="link_text">MediaSource</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//open">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">&quot;open&quot;</xsl:with-param>
-      <xsl:with-param name="link_text">&quot;open&quot;</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  <xsl:template match="//closed">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">closed</xsl:with-param>
-      <xsl:with-param name="link_text">&quot;closed&quot;</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  <xsl:template match="//ended">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">&quot;ended&quot;</xsl:with-param>
-      <xsl:with-param name="link_text">&quot;ended&quot;</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <!-- URL tags -->
-  <xsl:template match="//createObjectURL">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment">createobjecturl</xsl:with-param>
-      <xsl:with-param name="link_text">createObjectURL()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//MediaSource-object-URL">
-    <a href="#mediasource-object-url">MediaSource object URL</a>
-  </xsl:template>
-
-
-  <xsl:template name="fileapi_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <a><xsl:attribute name="href">http://www.w3.org/TR/FileAPI/#<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a>
-  </xsl:template>
-  <xsl:template match="//FileAPI">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment"></xsl:with-param>
-      <xsl:with-param name="link_text">File API</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//blob-uri">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment">url</xsl:with-param>
-      <xsl:with-param name="link_text">Blob URI</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//File">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment">dfn-file</xsl:with-param>
-      <xsl:with-param name="link_text">File</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//Blob">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment">dfn-blob</xsl:with-param>
-      <xsl:with-param name="link_text">Blob</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//file-createObjectURL">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment">dfn-createObjectURL</xsl:with-param>
-      <xsl:with-param name="link_text">createObjectURL()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//file-revokeObjectURL">
-    <xsl:call-template name="fileapi_helper">
-      <xsl:with-param name="fragment">dfn-revokeObjectURL</xsl:with-param>
-      <xsl:with-param name="link_text">revokeObjectURL()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//eventdfn">
-    <dfn><xsl:attribute name="id">dom-evt-<xsl:value-of select="translate(.,$upper,$lower)"/></xsl:attribute><code><xsl:value-of select="."/></code></dfn>
-  </xsl:template>
-
-  <xsl:template match="//codedfn">
-    <dfn><xsl:attribute name="id">dom-<xsl:value-of select="translate(.,$upper,$lower)"/></xsl:attribute><code><xsl:value-of select="."/></code></dfn>
-  </xsl:template>
-
-  <xsl:template match="//methoddfn">
-    <dfn><xsl:attribute name="id">dom-<xsl:value-of select="translate(@name,$upper,$lower)"/></xsl:attribute><code><xsl:value-of select="."/></code></dfn>
-  </xsl:template>
-
-  <xsl:template match="//methodref">
-    <xsl:call-template name="coderef_helper">
-      <xsl:with-param name="fragment"><xsl:value-of select="translate(.,$upper,$lower)"/></xsl:with-param>
-      <xsl:with-param name="link_text"><xsl:value-of select="."/>()</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="videoref_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/media-elements.html#<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a>
-  </xsl:template>
-
-  <xsl:template name="code_videoref_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <code><xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment"><xsl:value-of select="$fragment"/></xsl:with-param>
-      <xsl:with-param name="link_text"><xsl:value-of select="$link_text"/></xsl:with-param>
-    </xsl:call-template></code>
-  </xsl:template>
-
-  <xsl:template match="//videoref">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment"><xsl:value-of select="@name"/></xsl:with-param>
-      <xsl:with-param name="link_text"><xsl:value-of select="."/></xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//resource-fetch-algorithm">
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">concept-media-load-resource</xsl:with-param>
-      <xsl:with-param name="link_text">resource fetch algorithm</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//intrinsic-width-and-height">
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">concept-video-intrinsic-width</xsl:with-param>
-      <xsl:with-param name="link_text">intrinsic width and height</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
- 
-  <xsl:template match="//normalized-timeranges-object">
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">normalized-timeranges-object</xsl:with-param>
-      <xsl:with-param name="link_text">normalized TimeRanges object</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//media-data-is-corrupted">
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">fatal-decode-error</xsl:with-param>
-      <xsl:with-param name="link_text">media data is corrupted</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//media-data-cannot-be-fetched">
-    &quot;<i>If the media data cannot be fetched at all, due to network errors, causing the user agent to give up trying to fetch the resource</i>&quot;
-  </xsl:template>
-
-  <xsl:template match="//media-err-decode">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-mediaerror-media_err_decode</xsl:with-param>
-      <xsl:with-param name="link_text">MediaError.MEDIA_ERR_DECODE</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//active-source-buffer">
-    <a><xsl:attribute name="href">#active-source-buffers</xsl:attribute>active source buffers</a>
-  </xsl:template>
-
-  <xsl:template match="//active-source-buffers">
-    <a><xsl:attribute name="href">#active-source-buffers</xsl:attribute>active source buffers</a>
-  </xsl:template>
-
-  <xsl:template match="//source-buffers">
-    <a><xsl:attribute name="href">#source-buffer</xsl:attribute>source buffers</a>
-  </xsl:template>
-
-  <xsl:template match="//source-buffer">
-    <a><xsl:attribute name="href">#source-buffer</xsl:attribute>source buffer</a>
-  </xsl:template>
-
-  <xsl:template match="//source-buffers">
-    <a><xsl:attribute name="href">#source-buffer</xsl:attribute>source buffers</a>
-  </xsl:template>
-
-  <xsl:template match="//track-buffer">
-    <a><xsl:attribute name="href">#track-buffer</xsl:attribute>track buffer</a>
-  </xsl:template>
-
-  <xsl:template match="//track-buffers">
-    <a><xsl:attribute name="href">#track-buffer</xsl:attribute>track buffers</a>
-  </xsl:template>
-
-  <xsl:template match="//var-id">
-    <var title="true">id</var>
-  </xsl:template>
-  
-  <xsl:template match="//var-type">
-    <var title="true">type</var>
-  </xsl:template>
-
-  <xsl:template match="//init-segment">
-    <a><xsl:attribute name="href">#init-segment</xsl:attribute>initialization segment</a>
-  </xsl:template>
-
-  <xsl:template match="//init-segments">
-    <a><xsl:attribute name="href">#init-segment</xsl:attribute>initialization segments</a>
-  </xsl:template>
-
-  <xsl:template match="//media-segment">
-    <a><xsl:attribute name="href">#media-segment</xsl:attribute>media segment</a>
-  </xsl:template>
-
-  <xsl:template match="//media-segments">
-    <a><xsl:attribute name="href">#media-segment</xsl:attribute>media segments</a>
-  </xsl:template>
-  
-  <xsl:template match="//presentation-start-time">
-    <a><xsl:attribute name="href">#presentation-start-time</xsl:attribute>presentation start time</a>
-  </xsl:template>
-
-  <xsl:template match="//random-access-point">
-    <a><xsl:attribute name="href">#random-access-point</xsl:attribute>random access point</a>
-  </xsl:template>
-
-  <xsl:template match="//random-access-points">
-    <a><xsl:attribute name="href">#random-access-point</xsl:attribute>random access points</a>
-  </xsl:template>
-
-  <xsl:template match="//media-src">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">attr-media-src</xsl:with-param>
-      <xsl:with-param name="link_text">src</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//timerange">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">timeranges</xsl:with-param>
-      <xsl:with-param name="link_text">TimeRange</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//timeranges">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">timeranges</xsl:with-param>
-      <xsl:with-param name="link_text">TimeRanges</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-
-  <xsl:template match="//video-track">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">videotrack</xsl:with-param>
-      <xsl:with-param name="link_text">VideoTrack</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//videotracks">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-videotracks</xsl:with-param>
-      <xsl:with-param name="link_text">videoTracks</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//selected-index">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-videotracklist-selectedindex</xsl:with-param>
-      <xsl:with-param name="link_text">selectedIndex</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//audio-track">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">audiotrack</xsl:with-param>
-      <xsl:with-param name="link_text">AudioTrack</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  
-  <xsl:template match="//audio-tracks">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">audiotrack</xsl:with-param>
-      <xsl:with-param name="link_text">AudioTracks</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//audiotracks">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-audiotracks</xsl:with-param>
-      <xsl:with-param name="link_text">audioTracks</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//text-track">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">texttrack</xsl:with-param>
-      <xsl:with-param name="link_text">TextTrack</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//texttracks">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-texttracks</xsl:with-param>
-      <xsl:with-param name="link_text">textTracks</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  
-  <xsl:template match="//ready-state">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-readystate</xsl:with-param>
-      <xsl:with-param name="link_text">HTMLMediaElement.readyState</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//have-nothing">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-have_nothing</xsl:with-param>
-      <xsl:with-param name="link_text">HAVE_NOTHING</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//have-metadata">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-have_metadata</xsl:with-param>
-      <xsl:with-param name="link_text">HAVE_METADATA</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//have-current-data">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-have_current_data</xsl:with-param>
-      <xsl:with-param name="link_text">HAVE_CURRENT_DATA</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//have-future-data">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-have_future_data</xsl:with-param>
-      <xsl:with-param name="link_text">HAVE_FUTURE_DATA</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//have-enough-data">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-have_enough_data</xsl:with-param>
-      <xsl:with-param name="link_text">HAVE_ENOUGH_DATA</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//loadedmetadata">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">event-media-loadedmetadata</xsl:with-param>
-      <xsl:with-param name="link_text">loadedmetadata</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//loadeddata">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">event-media-loadeddata</xsl:with-param>
-      <xsl:with-param name="link_text">loadeddata</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//canplay">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">event-media-canplay</xsl:with-param>
-      <xsl:with-param name="link_text">canplay</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//canplaythrough">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">event-media-canplaythrough</xsl:with-param>
-      <xsl:with-param name="link_text">canplaythrough</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//hme-currenttime">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-media-currenttime</xsl:with-param>
-      <xsl:with-param name="link_text">HTMLMediaElement.currentTime</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//hme-duration">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">media-controller-duration</xsl:with-param>
-      <xsl:with-param name="link_text">media controller duration</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//hme-seek-algorithm">
-    media element
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">dom-media-seek</xsl:with-param>
-      <xsl:with-param name="link_text">seek algorithm</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//hme-duration-change-algorithm">
-    <xsl:call-template name="videoref_helper">
-      <xsl:with-param name="fragment">durationChange</xsl:with-param>
-      <xsl:with-param name="link_text">HTMLMediaElement duration change algorithm</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//MEDIA_ERR_SRC_NOT_SUPPORTED">
-    <xsl:call-template name="code_videoref_helper">
-      <xsl:with-param name="fragment">dom-mediaerror-media_err_src_not_supported</xsl:with-param>
-      <xsl:with-param name="link_text">MEDIA_ERR_SRC_NOT_SUPPORTED</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="exception_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <code><a><xsl:attribute name="href">http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a></code>
-  </xsl:template>
-
-  <xsl:template match="//invalid-access-err">
-    <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">invalid_access_err</xsl:with-param>
-      <xsl:with-param name="link_text">INVALID_ACCESS_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//invalid-state-err">
-    <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">invalid_state_err</xsl:with-param>
-      <xsl:with-param name="link_text">INVALID_STATE_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//syntax-err">
-    <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">syntax_err</xsl:with-param>
-      <xsl:with-param name="link_text">SYNTAX_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
- 
-  <xsl:template match="//not-found-err">
-     <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">not_found_err</xsl:with-param>
-      <xsl:with-param name="link_text">NOT_FOUND_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-  <xsl:template match="//not-supported-err">
-     <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">not_supported_err</xsl:with-param>
-      <xsl:with-param name="link_text">NOT_SUPPORTED_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//quota-exceeded-err">
-    <xsl:call-template name="exception_helper">
-      <xsl:with-param name="fragment">quota_exceeded_err</xsl:with-param>
-      <xsl:with-param name="link_text">QUOTA_EXCEEDED_ERR</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="webappapis_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <a><xsl:attribute name="href">http://dev.w3.org/html5/spec/webappapis.html#<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a>
-  </xsl:template>
-
-  <xsl:template match="//queue-a-task">
-    <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">queue-a-task</xsl:with-param>
-      <xsl:with-param name="link_text">queue a task</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//fire-a-simple-event">
-    <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">fire-a-simple-event</xsl:with-param>
-      <xsl:with-param name="link_text">fire a simple event</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//queue-a-task-to-fire-an-event-named">
-    <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">queue-a-task</xsl:with-param>
-      <xsl:with-param name="link_text">queue a task</xsl:with-param>
-    </xsl:call-template> to <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">fire-a-simple-event</xsl:with-param>
-      <xsl:with-param name="link_text">fire a simple event</xsl:with-param>
-    </xsl:call-template> named
-  </xsl:template>
-
-  <xsl:template match="//Queue-a-task-to-fire-an-event-named">
-    <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">queue-a-task</xsl:with-param>
-      <xsl:with-param name="link_text">Queue a task</xsl:with-param>
-    </xsl:call-template> to <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">fire-a-simple-event</xsl:with-param>
-      <xsl:with-param name="link_text">fire a simple event</xsl:with-param>
-    </xsl:call-template> named
-  </xsl:template>
-
-  <xsl:template match="//provide-a-stable-state">
-    <xsl:call-template name="webappapis_helper">
-      <xsl:with-param name="fragment">provide-a-stable-state</xsl:with-param>
-      <xsl:with-param name="link_text">provide a stable state</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template name="webmref_helper">
-    <xsl:param name="fragment" />
-    <xsl:param name="link_text" />
-    <a><xsl:attribute name="href">http://www.webmproject.org/code/specs/container/#<xsl:value-of select="$fragment"/></xsl:attribute><xsl:value-of select="$link_text"/></a>
-  </xsl:template>
-
-  <xsl:template match="//webm-spec">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">webm-guidelines</xsl:with-param>
-      <xsl:with-param name="link_text">WebM spec</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-ebml-header">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">ebml-basics</xsl:with-param>
-      <xsl:with-param name="link_text">EBML Header</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-segment">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">segment</xsl:with-param>
-      <xsl:with-param name="link_text">Segment</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-info">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">segment-information</xsl:with-param>
-      <xsl:with-param name="link_text">Segment Information</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-tracks">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">track</xsl:with-param>
-      <xsl:with-param name="link_text">Tracks</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-global-elements">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">global-elements-used-throughout-the-format</xsl:with-param>
-      <xsl:with-param name="link_text">Global Elements</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-
-  <xsl:template match="//webm-meta-seek">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">meta-seek-information</xsl:with-param>
-      <xsl:with-param name="link_text">Meta Seek Information</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-cues">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">cueing-data</xsl:with-param>
-      <xsl:with-param name="link_text">Cues</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-chapters">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">chapters</xsl:with-param>
-      <xsl:with-param name="link_text">Chapters</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-cluster">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">cluster</xsl:with-param>
-      <xsl:with-param name="link_text">Cluster</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-muxer-guidelines">
-    <xsl:call-template name="webmref_helper">
-      <xsl:with-param name="fragment">muxer-guidelines</xsl:with-param>
-      <xsl:with-param name="link_text">WebM Muxer Guidelines</xsl:with-param>
-    </xsl:call-template>
-  </xsl:template>
-
-  <xsl:template match="//webm-init-segment">
-    <a href="#webm-init-segment">WebM initialization segment</a>
-  </xsl:template>
-
-  <xsl:template match="//iso-box">
-    <strong><xsl:value-of select="." /></strong>
-  </xsl:template>
-  <xsl:template match="//iso-var">
-    <strong><var><xsl:value-of select="." /></var></strong>
-  </xsl:template>
-
-  <xsl:template match="//iso-14496-12">
-    <a href="http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip">ISO/IEC 14496-12</a>
-  </xsl:template>
-</xsl:stylesheet>
--- a/media-source/video-working-draft.css	Wed Oct 31 17:47:58 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/* Styles taken from http://www.w3.org/TR/html5/video.html */
-
-   pre { margin-left: 2em; white-space: pre-wrap; }
-   h2 { margin: 3em 0 1em 0; }
-   h3 { margin: 2.5em 0 1em 0; }
-   h4 { margin: 2.5em 0 0.75em 0; }
-   h5, h6 { margin: 2.5em 0 1em; }
-   h1 + h2, h1 + h2 + h2 { margin: 0.75em 0 0.75em; }
-   h2 + h3, h3 + h4, h4 + h5, h5 + h6 { margin-top: 0.5em; }
-   p { margin: 1em 0; }
-   hr:not(.top) { display: block; background: none; border: none; padding: 0; margin: 2em 0; height: auto; }
-   dl, dd { margin-top: 0; margin-bottom: 0; }
-   dt { margin-top: 0.75em; margin-bottom: 0.25em; clear: left; }
-   dt + dt { margin-top: 0; }
-   dd dt { margin-top: 0.25em; margin-bottom: 0; }
-   dd p { margin-top: 0; }
-   dd dl + p { margin-top: 1em; }
-   dd table + p { margin-top: 1em; }
-   p + * > li, dd li { margin: 1em 0; }
-   dt, dfn { font-weight: bold; font-style: normal; }
-   dt dfn { font-style: italic; }
-   pre, code { font-size: inherit; font-family: monospace; font-variant: normal; }
-   pre strong { color: black; font: inherit; font-weight: bold; background: yellow; }
-   pre em { font-weight: bolder; font-style: normal; }
-   @media screen { code { color: orangered; } code :link, code :visited { color: inherit; } }
-   var sub { vertical-align: bottom; font-size: smaller; position: relative; top: 0.1em; }
-   table { border-collapse: collapse; border-style: hidden hidden none hidden; }
-   table thead, table tbody { border-bottom: solid; }
-   table tbody th:first-child { border-left: solid; }
-   table tbody th { text-align: left; }
-   table td, table th { border-left: solid; border-right: solid; border-bottom: solid thin; vertical-align: top; padding: 0.2em; }
-   blockquote { margin: 0 0 0 2em; border: 0; padding: 0; font-style: italic; }
-
-   .bad, .bad *:not(.XXX) { color: gray; border-color: gray; background: transparent; }
-   .matrix, .matrix td { border: none; text-align: right; }
-   .matrix { margin-left: 2em; }
-   .dice-example { border-collapse: collapse; border-style: hidden solid solid hidden; border-width: thin; margin-left: 3em; }
-   .dice-example caption { width: 30em; font-size: smaller; font-style: italic; padding: 0.75em 0; text-align: left; }
-   .dice-example td, .dice-example th { border: solid thin; width: 1.35em; height: 1.05em; text-align: center; padding: 0; }
-
-   .toc dfn, h1 dfn, h2 dfn, h3 dfn, h4 dfn, h5 dfn, h6 dfn { font: inherit; }
-   img.extra { float: right; }
-   pre.idl { border: solid thin; background: #EEEEEE; color: black; padding: 0.5em 1em; }
-   pre.idl :link, pre.idl :visited { color: inherit; background: transparent; }
-   pre.css { border: solid thin; background: #FFFFEE; color: black; padding: 0.5em 1em; }
-   pre.css:first-line { color: #AAAA50; }
-   dl.domintro { color: green; margin: 2em 0 2em 2em; padding: 0.5em 1em; border: none; background: #DDFFDD; }
-   hr + dl.domintro, div.impl + dl.domintro { margin-top: 2.5em; margin-bottom: 1.5em; }
-   dl.domintro dt, dl.domintro dt * { color: black; text-decoration: none; }
-   dl.domintro dd { margin: 0.5em 0 1em 2em; padding: 0; }
-   dl.domintro dd p { margin: 0.5em 0; }
-   dl.switch { padding-left: 2em; }
-   dl.switch > dt { text-indent: -1.5em; }
-   dl.switch > dt:before { content: '\21AA'; padding: 0 0.5em 0 0; display: inline-block; width: 1em; text-align: right; line-height: 0.5em; }
-   dl.triple { padding: 0 0 0 1em; }
-   dl.triple dt, dl.triple dd { margin: 0; display: inline }
-   dl.triple dt:after { content: ':'; }
-   dl.triple dd:after { content: '\A'; white-space: pre; }
-   .diff-old { text-decoration: line-through; color: silver; background: transparent; }
-   .diff-chg, .diff-new { text-decoration: underline; color: green; background: transparent; }
-   a .diff-new { border-bottom: 1px blue solid; }
-
-   h2 { page-break-before: always; }
-   h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
-   h1 + h2, hr + h2.no-toc { page-break-before: auto; }
-
-   p  > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]),
-   li > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]), { border-bottom: solid #9999CC; }
-
-   div.head { margin: 0 0 1em; padding: 1em 0 0 0; }
-   div.head p { margin: 0; }
-   div.head h1 { margin: 0; }
-   div.head .logo { float: right; margin: 0 1em; }
-   div.head .logo img { border: none } /* remove border from top image */
-   div.head dl { margin: 1em 0; }
-   div.head p.copyright, div.head p.alt { font-size: x-small; font-style: oblique; margin: 0; }
-
-   body > .toc > li { margin-top: 1em; margin-bottom: 1em; }
-   body > .toc.brief > li { margin-top: 0.35em; margin-bottom: 0.35em; }
-   body > .toc > li > * { margin-bottom: 0.5em; }
-   body > .toc > li > * > li > * { margin-bottom: 0.25em; }
-   .toc, .toc li { list-style: none; }
-
-   .brief { margin-top: 1em; margin-bottom: 1em; line-height: 1.1; }
-   .brief li { margin: 0; padding: 0; }
-   .brief li p { margin: 0; padding: 0; }
-
-   .category-list { margin-top: -0.75em; margin-bottom: 1em; line-height: 1.5; }
-   .category-list::before { content: '\21D2\A0'; font-size: 1.2em; font-weight: 900; }
-   .category-list li { display: inline; }
-   .category-list li:not(:last-child)::after { content: ', '; }
-   .category-list li > span, .category-list li > a { text-transform: lowercase; }
-   .category-list li * { text-transform: none; } /* don't affect <code> nested in <a> */
-
-   .XXX { color: #E50000; background: white; border: solid red; padding: 0.5em; margin: 1em 0; }
-   .XXX > :first-child { margin-top: 0; }
-   p .XXX { line-height: 3em; }
-   .annotation { border: solid thin black; background: #0C479D; color: white; position: relative; margin: 8px 0 20px 0; }
-   .annotation:before { position: absolute; left: 0; top: 0; width: 100%; height: 100%; margin: 6px -6px -6px 6px; background: #333333; z-index: -1; content: ''; }
-   .annotation :link, .annotation :visited { color: inherit; }
-   .annotation :link:hover, .annotation :visited:hover { background: transparent; }
-   .annotation span { border: none ! important; }
-   .note { color: green; background: transparent; font-family: sans-serif; }
-   .warning { color: red; background: transparent; }
-   .note, .warning { font-weight: bolder; font-style: italic; }
-   p.note, div.note { padding: 0.5em 2em; }
-   span.note { padding: 0 2em; }
-   .note p:first-child, .warning p:first-child
-
-
-.glyph.control { color: red; }
-
-   @font-face {
-     font-family: 'Essays1743';
-     src: url('http://www.whatwg.org/specs/web-apps/current-work/fonts/Essays1743.ttf');
-   }
-   @font-face {
-     font-family: 'Essays1743';
-     font-weight: bold;
-     src: url('http://www.whatwg.org/specs/web-apps/current-work/fonts/Essays1743-Bold.ttf');
-   }
-   @font-face {
-     font-family: 'Essays1743';
-     font-style: italic;
-     src: url('http://www.whatwg.org/specs/web-apps/current-work/fonts/Essays1743-Italic.ttf');
-   }
-   @font-face {
-     font-family: 'Essays1743';
-     font-style: italic;
-     font-weight: bold;
-     src: url('http://www.whatwg.org/specs/web-apps/current-work/fonts/Essays1743-BoldItalic.ttf');
-   }
-
-
-.domintro:before { display: table; margin: -1em -0.5em -0.5em auto; width: auto; content: 'This box is non-normative. Implementation requirements are given below this box.'; color: black; font-style: italic; border: solid 2px; background: white; padding: 0 0.25em; }
\ No newline at end of file