--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/Overview.html Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,2149 @@
+<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>
+<html lang="en" dir="ltr" about="" property="dc:language" content="en" prefix="dc: 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#">
+<head>
+ <title>Networked Service Discovery and Messaging</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+ <!-- This spec has been compiled with ReSpec v2 -->
+
+
+ <style type="text/css">
+ /**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+ .syntaxhighlighter a,
+ .syntaxhighlighter div,
+ .syntaxhighlighter code,
+ .syntaxhighlighter table,
+ .syntaxhighlighter table td,
+ .syntaxhighlighter table tr,
+ .syntaxhighlighter table tbody,
+ .syntaxhighlighter table thead,
+ .syntaxhighlighter table caption,
+ .syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+ }
+
+ .syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 0.8em !important;
+ }
+ .syntaxhighlighter.source {
+ overflow: hidden !important;
+ }
+ .syntaxhighlighter .bold {
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter .italic {
+ font-style: italic !important;
+ }
+ .syntaxhighlighter .line {
+ white-space: pre !important;
+ }
+ .syntaxhighlighter table {
+ width: 100% !important;
+ }
+ .syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+ }
+ .syntaxhighlighter table td.code {
+ width: 100% !important;
+ }
+ .syntaxhighlighter table td.code .container {
+ position: relative !important;
+ }
+ .syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+ }
+ .syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+ }
+ .syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+ }
+ .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+ }
+ .syntaxhighlighter.show {
+ display: block !important;
+ }
+ .syntaxhighlighter.collapsed table {
+ display: none !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+ }
+ .syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+ }
+ .syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+ }
+ .syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+ }
+ .syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+ }
+ .syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+ }
+ .syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+ }
+ .syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+ }
+ .syntaxhighlighter.printing .line.alt1 .content,
+ .syntaxhighlighter.printing .line.alt2 .content,
+ .syntaxhighlighter.printing .line.highlighted .number,
+ .syntaxhighlighter.printing .line.highlighted.alt1 .content,
+ .syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+ }
+ .syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+ }
+ .syntaxhighlighter.printing .line .content {
+ color: black !important;
+ }
+ .syntaxhighlighter.printing .toolbar {
+ display: none !important;
+ }
+ .syntaxhighlighter.printing a {
+ text-decoration: none !important;
+ }
+ .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+ }
+ .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+ }
+ .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+ }
+ .syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+ }
+ .syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+ }
+ .syntaxhighlighter.printing .value {
+ color: #009900 !important;
+ }
+ .syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+ }
+ .syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+ }
+ .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+ }
+ .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+ }
+ </style>
+ <style type="text/css">
+ /**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+ .syntaxhighlighter {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.alt1 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.alt2 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.highlighted.number {
+ color: black !important;
+ }
+ .syntaxhighlighter table caption {
+ color: black !important;
+ }
+ .syntaxhighlighter .gutter {
+ color: #afafaf !important;
+ }
+ .syntaxhighlighter .gutter .line {
+ border-right: 3px solid #6ce26c !important;
+ }
+ .syntaxhighlighter .gutter .line.highlighted {
+ background-color: #6ce26c !important;
+ color: white !important;
+ }
+ .syntaxhighlighter.printing .line .content {
+ border: none !important;
+ }
+ .syntaxhighlighter.collapsed {
+ overflow: visible !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar {
+ color: blue !important;
+ background: none !important;
+ border: 1px solid #6ce26c !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar a {
+ color: blue !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar a:hover {
+ color: red !important;
+ }
+ .syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #6ce26c !important;
+ border: none !important;
+ }
+ .syntaxhighlighter .toolbar a {
+ color: white !important;
+ }
+ .syntaxhighlighter .toolbar a:hover {
+ color: black !important;
+ }
+ .syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+ }
+ .syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #008200 !important;
+ }
+ .syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: blue !important;
+ }
+ .syntaxhighlighter .keyword {
+ color: #006699 !important;
+ }
+ .syntaxhighlighter .preprocessor {
+ color: gray !important;
+ }
+ .syntaxhighlighter .variable {
+ color: #aa7700 !important;
+ }
+ .syntaxhighlighter .value {
+ color: #009900 !important;
+ }
+ .syntaxhighlighter .functions {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter .constants {
+ color: #0066cc !important;
+ }
+ .syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #006699 !important;
+ background-color: none !important;
+ }
+ .syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+ }
+ .syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+ }
+
+ .syntaxhighlighter .keyword {
+ font-weight: bold !important;
+ }
+ </style>
+
+
+
+
+
+
+ <style type="text/css">
+ /* Custom CSS optimizations (Richard Tibbett) */
+
+ /* Add better spacing to sections */
+ section, .section { margin-bottom: 2em; }
+
+ /* Reduce note & issue render size */
+ .note, .issue { font-size:0.8em; }
+
+ /* Add addition spacing to <ol> and <ul> for rule definition */
+ ol.rule li, ul.rule li { padding:0.6em; }
+
+ pre.widl { border: solid thin; background: #EEEEEE; color: black; padding: 0.5em 1em; position: relative; }
+ pre.widl :link, pre.widl :visited { color: #000; background: transparent; }
+ pre.widl:before { content: "IDL"; font: bold small sans-serif; padding: 0.5em; background: white; position: absolute; top: 0; margin: -1px 0 0 -4em; width: 1.5em; border: thin solid; border-radius: 0 0 0 0.5em }
+
+ div.example { border: solid thin red; background: #F7DFE5; color: black; padding: 0.5em 1em; position: relative; margin: 1em 0 1em 4.6em; width: auto; }
+ div.example:before { content: "EXAMPLE"; font: bold small sans-serif; padding: 0.5em; background: red; color: white; position: absolute; top: 0; margin: -1px 0 0 -7.6em; width: 5em; border: thin solid red; border-radius: 0 0 0 0.5em }
+
+ 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.domintro code {font-size: inherit; font-style: italic; }
+ dl.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: red; border: solid 2px; background: white; padding: 0 0.25em; }
+ </style>
+ <style type="text/css">
+/*
+ XXX this is not up to date with the needs of various other parts, it will require
+ to be synched up with the latest developments
+ It may be that this will be split up so that only the parts that are acually used
+ by the document get to be included (e.g. WebIDL).
+*/
+
+/*****************************************************************
+ * ReSpec 2 CSS
+ * Robin Berjon, 2010-01-04
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+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: medium solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: medium dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- 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 {
+ font-weight: bold;
+ color: #005a9c;
+}
+
+.idlSuperclass {
+ font-style: italic;
+ color: #005a9c;
+}
+
+/*.idlAttribute*/
+.idlAttrType {
+ color: #005a9c;
+}
+.idlAttrName {
+ color: #ff4500;
+}
+.idlAttrName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlMethod*/
+.idlMethType {
+ 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 {
+ margin-left: 2em;
+}
+
+.attributes dt, .methods dt, .constants dt {
+ font-weight: normal;
+}
+
+.attributes dt code, .methods dt code, .constants dt code {
+ font-weight: bold;
+ color: #000;
+ font-family: monospace;
+}
+
+.attributes dt code {
+ background: #ffffd2;
+}
+
+.attributes dt .idlAttrType 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 {
+ 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%;
+}
+
+/* --- TOC --- */
+.toc a {
+ text-decoration: none;
+}
+
+a .secno {
+ color: #000;
+}
+
+/* --- 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;
+}
+
+/* --- EXAMPLES --- */
+pre.example {
+ border-top: 1px solid #ff4500;
+ border-bottom: 1px solid #ff4500;
+ padding: 1em;
+ margin: 2em 0;
+}
+
+pre.example::before {
+ content: "Example";
+ display: block;
+ width: 150px;
+ background: #ff4500;
+ color: #fff;
+ font-family: initial;
+ padding: 3px;
+ font-weight: bold;
+ margin: -1em 0 1em -1em;
+}
+
+/* --- EDITORIAL NOTES --- */
+.issue {
+ padding: 1em;
+ border: 1px solid #f00;
+ background: #ffc;
+}
+
+.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;
+}
+
+.note {
+ padding: 1em;
+ border: 2px solid #cff6d9;
+ background: #e2fff0;
+}
+
+.note::before {
+ content: "Note";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #cff6d9;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+/* --- SYNTAX HIGHLIGHTING --- */
+/* Pretty printing styles. Used with prettify.js. */
+.str { color: #080; }
+.kwd { color: #008; }
+.com { color: #800; }
+.typ { color: #606; }
+.lit { color: #066; }
+.pun { color: #660; }
+.pln { color: #000; }
+.tag { color: #008; }
+.atn { color: #606; }
+.atv { color: #080; }
+.dec { color: #606; }
+/*pre.prettyprint { padding: 2px; border: 1px solid #888 }*/
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
+li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1, li.L3, li.L5, li.L7, li.L9 { background: #eee }
+
+@media print {
+ .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 { color: #440; }
+ .pln { color: #000; }
+ .tag { color: #006; font-weight: bold; }
+ .atn { color: #404; }
+ .atv { color: #060; }
+}
+</style><link rel="stylesheet" href="http://www.w3.org/StyleSheets/TR/w3c-unofficial" type="text/css" media="all" charset="utf-8"></head>
+
+ <body><div class="head">
+ <p>
+
+
+ </p>
+ <h1 class="title" id="title" rel="dc:title">Networked Service Discovery and Messaging</h1>
+
+ <h2 id="unofficial-draft-02-august-2012">Unofficial Draft 02 August 2012</h2>
+ <dl>
+
+
+
+ <dt>Previous version:</dt><dd> <a href="" rel="dc:replaces"></a></dd>
+
+
+
+
+
+ <dt>Editors:</dt>
+
+ <dd class="Editor" rel="bibo:editor"><span typeof="foaf:Person"><span class="name" property="foaf:name">Rich Tibbett</span>,
+
+ <a class="company" href="http://opera.com/" rel="foaf:workplaceHomepage">Opera Software ASA</a>
+
+
+
+
+ </span></dd>
+
+ <dd class="Editor" rel="bibo:editor"><span typeof="foaf:Person"><span class="name" property="foaf:name">Clarke Stevens</span>,
+
+ <a class="company" href="http://cablelabs.com/" rel="foaf:workplaceHomepage">CableLabs</a>
+
+
+
+
+ </span></dd>
+
+
+
+
+
+
+ </dl>
+
+
+
+
+
+ <p class="copyright">
+
+
+ This document is licensed under a <a class="subfoot" href="http://creativecommons.org/licenses/by/3.0/" rel="license">Creative
+ Commons Attribution 3.0 License</a>.
+
+
+ </p><hr></div>
+ <div id="abstract" class="introductory section" property="dcterms:absract" datatype="" about="#abstract" typeof="bibo:Chapter"><h2>Abstract</h2>
+ <p>
+ This specification defines a mechanism for an HTML document to discover and subsequently communicate with <acronym title="Hypertext Transfer Protocol"><acronym title="Hypertext Transfer Protocol">HTTP</acronym></acronym>-based services
+ advertised via common discovery protocols within a user's network.
+ </p>
+ </div><div id="sotd" class="introductory section" about="#sotd" typeof="bibo:Chapter"><h2>Status of This Document</h2>
+ <p>This document is merely a public working draft of a potential specification. It has
+ no official standing of any kind and does not represent the support or consensus of any
+ standards organisation.</p></div><div id="toc" about="#toc" typeof="bibo:Chapter" class="section"><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></li><li class="tocline"><a href="#conformance" class="tocxref"><span class="secno">2. </span>Conformance</a><ul class="toc"><li class="tocline"><a href="#dependencies" class="tocxref"><span class="secno">2.1 </span>Dependencies</a></li></ul></li><li class="tocline"><a href="#terminology" class="tocxref"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a href="#requesting-networked-services" class="tocxref"><span class="secno">4. </span>Requesting networked services</a><ul class="toc"><li class="tocline"><a href="#methods" class="tocxref"><span class="secno">4.1 </span>Methods</a></li><li class="tocline"><a href="#error-handling" class="tocxref"><span class="secno">4.2 </span>Error Handling</a></li></ul></li><li class="tocline"><a href="#obtaining-networked-services" class="tocxref"><span class="secno">5. </span>Obtaining networked services</a><ul class="toc"><li class="tocline"><a href="#attributes" class="tocxref"><span class="secno">5.1 </span>Attributes</a></li><li class="tocline"><a href="#methods-1" class="tocxref"><span class="secno">5.2 </span>Methods</a></li><li class="tocline"><a href="#events" class="tocxref"><span class="secno">5.3 </span>Events</a></li></ul></li><li class="tocline"><a href="#communicating-with-a-networked-service" class="tocxref"><span class="secno">6. </span>Communicating with a networked service</a><ul class="toc"><li class="tocline"><a href="#attributes-1" class="tocxref"><span class="secno">6.1 </span>Attributes</a></li><li class="tocline"><a href="#states" class="tocxref"><span class="secno">6.2 </span>States</a></li><li class="tocline"><a href="#events-1" class="tocxref"><span class="secno">6.3 </span>Events</a></li></ul></li><li class="tocline"><a href="#service-discovery" class="tocxref"><span class="secno">7. </span>Service Discovery</a><ul class="toc"><li class="tocline"><a href="#zeroconf--mdns---dns-sd" class="tocxref"><span class="secno">7.1 </span>Zeroconf (<acronym title="Multicast DNS"><acronym title="Multicast DNS">mDNS</acronym></acronym> + <acronym title="Domain Name System"><acronym title="Domain Name System">DNS</acronym></acronym>-<acronym title="Service Discovery"><acronym title="Service Discovery">SD</acronym></acronym>)</a></li><li class="tocline"><a href="#universal-plug-and-play--upnp" class="tocxref"><span class="secno">7.2 </span>Universal Plug-and-Play (<acronym title="Universal Plug-and-Play"><acronym title="Universal Plug-and-Play">UPnP</acronym></acronym>)</a></li><li class="tocline"><a href="#network-topology-monitoring" class="tocxref"><span class="secno">7.3 </span>Network Topology Monitoring</a></li></ul></li><li class="tocline"><a href="#garbage-collection" class="tocxref"><span class="secno">8. </span>Garbage collection</a></li><li class="tocline"><a href="#use-cases-and-requirements" class="tocxref"><span class="secno">9. </span>Use Cases and Requirements</a></li><li class="tocline"><a href="#examples" class="tocxref"><span class="secno">A. </span>Examples</a></li><li class="tocline"><a href="#acknowledgements" class="tocxref"><span class="secno">B. </span>Acknowledgements</a></li><li class="tocline"><a href="#references" class="tocxref"><span class="secno">C. </span>References</a><ul class="toc"><li class="tocline"><a href="#normative-references" class="tocxref"><span class="secno">C.1 </span>Normative references</a></li></ul></li></ul></div>
+
+
+
+ <div class="informative section" id="introduction" about="#introduction" typeof="bibo:Chapter">
+ <!--OddPage--><h2><span class="secno">1. </span>Introduction</h2><em>This section is non-normative.</em>
+
+ <p>To enable Web pages to connect and communicate with Local-networked Services provided over <acronym title="Hypertext Transfer Protocol">HTTP</acronym>, this specification introduces the
+ <a href="#navigatornetworkservice"><code>NavigatorNetworkService</code></a> interface.</p>
+
+ <p>
+ Using this <acronym title="Application Programming Interface"><acronym title="Application Programming Interface">API</acronym></acronym> consists of requesting a well-known service type, known by developers and advertised by Local-networked Devices. User authorization, where the user connects the web page to one or more discovered services,
+ is expected before the web page is able to interact with any Local-networked Services.
+ </p>
+
+ <p>
+ A web page creates a request to obtain connectivity to services running in the network by specifying a well-known discovery service type that it wishes to interact with.
+ </p>
+
+ <p>
+ The user agent, having captured all advertised services on the network from the Service Discovery mechanisms included in this recommendation, attempts to match
+ the requested service type to a discovered service according to the processing described herein.
+ </p>
+
+ <p>
+ If a service connectivity request is successful then the Web page is provided with the necessary information to communicate with the authorized Local-networked Service.
+ If the request fails then the Web page will receive an error callback containing an error code describing the cause of Local-networked Service connectivity failure.
+ </p>
+
+ <p>
+ Once connected to a Local-networked Service the Web page can send requests and receive responses to the Local-networked Service via the messaging format and appropriate channel inferred from the service type
+ authorized via the provided <acronym title="Application Programming Interface">API</acronym>.
+ The Web page, once connected, can also receive service-pushed events, in the messaging format supported by the Local-networked Device, if such event subscription functionality is provided by the
+ connected Local-networked Service.
+ </p>
+
+ <div class="example">
+ <p>Example of requesting a <acronym title="Domain Name System">DNS</acronym>-<acronym title="Service Discovery">SD</acronym> advertised service:</p>
+ <hr>
+ <div><div id="highlighter_631369" class="syntaxhighlighter nogutter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js keyword">function</code> <code class="js plain">showServices( services ) {</code></div><div class="line number2 index1 alt1"><code class="js spaces"> </code><code class="js comments">// Show a list of all the services provided to the web page</code></div><div class="line number3 index2 alt2"><code class="js spaces"> </code><code class="js keyword">for</code><code class="js plain">(</code><code class="js keyword">var</code> <code class="js plain">i = 0, l = services.length; i < l; i++) console.log( services[i].name );</code></div><div class="line number4 index3 alt1"><code class="js plain">}</code></div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1"><code class="js plain">navigator.getNetworkServices(</code><code class="js string">'zeroconf:_boxee-jsonrpc._tcp'</code><code class="js plain">, showServices);</code></div></div></td></tr></tbody></table></div></div>
+ </div>
+
+ <div class="example">
+ <p>Example of requesting a <acronym title="Universal Plug-and-Play">UPnP</acronym> advertised service, also handling error conditions:</p>
+ <hr>
+ <div><div id="highlighter_906369" class="syntaxhighlighter nogutter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js keyword">function</code> <code class="js plain">showServices( services ) {</code></div><div class="line number2 index1 alt1"><code class="js spaces"> </code><code class="js comments">// Show a list of all the services provided to the web page</code></div><div class="line number3 index2 alt2"><code class="js spaces"> </code><code class="js keyword">for</code><code class="js plain">(</code><code class="js keyword">var</code> <code class="js plain">i = 0, l = services.length; i < l; i++) console.log( services[i].name );</code></div><div class="line number4 index3 alt1"><code class="js plain">}</code></div><div class="line number5 index4 alt2"> </div><div class="line number6 index5 alt1"><code class="js keyword">function</code> <code class="js plain">error( e ) {</code></div><div class="line number7 index6 alt2"><code class="js spaces"> </code><code class="js plain">console.log( </code><code class="js string">"Error occurred: "</code> <code class="js plain">+ e.code );</code></div><div class="line number8 index7 alt1"><code class="js plain">}</code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"><code class="js plain">navigator.getNetworkServices(</code><code class="js string">'upnp:urn:schemas-upnp-org:service:ContentDirectory:1'</code><code class="js plain">, showServices, error);</code></div></div></td></tr></tbody></table></div></div>
+ </div>
+
+ <div class="example">
+ <p>Example of requesting either a <acronym title="Domain Name System">DNS</acronym>-<acronym title="Service Discovery">SD</acronym> or <acronym title="Universal Plug-and-Play">UPnP</acronym> advertised service:</p>
+ <hr>
+ <div><div id="highlighter_284052" class="syntaxhighlighter nogutter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js keyword">function</code> <code class="js plain">showServices( services ) {</code></div><div class="line number2 index1 alt1"><code class="js spaces"> </code><code class="js comments">// Show a list of all the services provided to the web page (+ service type)</code></div><div class="line number3 index2 alt2"><code class="js spaces"> </code><code class="js keyword">for</code><code class="js plain">(</code><code class="js keyword">var</code> <code class="js plain">i = 0, l = services.length; i < l; i++)</code></div><div class="line number4 index3 alt1"><code class="js spaces"> </code><code class="js plain">console.log( services[i].name + </code><code class="js string">'('</code> <code class="js plain">+ services[i].type + </code><code class="js string">')'</code> <code class="js plain">);</code></div><div class="line number5 index4 alt2"><code class="js plain">}</code></div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2"><code class="js plain">navigator.getNetworkServices([</code></div><div class="line number8 index7 alt1"><code class="js spaces"> </code><code class="js string">'zeroconf:_boxee-jsonrpc._tcp'</code><code class="js plain">,</code></div><div class="line number9 index8 alt2"><code class="js spaces"> </code><code class="js string">'upnp:urn:schemas-upnp-org:service:ContentDirectory:1'</code></div><div class="line number10 index9 alt1"><code class="js plain">], showServices);</code></div></div></td></tr></tbody></table></div></div>
+ </div>
+
+ <p>For more detailed examples see the <a href="#examples" class="sec-ref">Examples</a> section.
+ </p></div>
+
+ <div id="conformance" about="#conformance" typeof="bibo:Chapter" class="section"><!--OddPage--><h2><span class="secno">2. </span>Conformance</h2><p>
+ As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
+ and notes in this specification are non-normative. Everything else in this specification is
+ normative.
+ </p>
+ <p>
+ The key words <em class="rfc2119" title="must">must</em>, <em class="rfc2119" title="must not">must not</em>, <em class="rfc2119" title="required">required</em>, <em class="rfc2119" title="should">should</em>, <em class="rfc2119" title="should not">should not</em>, <em class="rfc2119" title="recommended">recommended</em>, <em class="rfc2119" title="may">may</em>,
+ and <em class="rfc2119" title="optional">optional</em> in this specification are to be interpreted as described in [<cite><a class="bibref" rel="biblioentry" href="#bib-RFC2119">RFC2119</a></cite>].
+ </p>
+
+ <p>Requirements phrased in the imperative as part of algorithms (such as "strip any leading space characters" or "return false and abort these steps") are to be interpreted with the
+ meaning of the key word ("must", "should", "may", etc) used in introducing the algorithm.</p>
+
+ <p>
+ Some conformance requirements are phrased as requirements on attributes, methods or objects. Such requirements are to be interpreted as requirements on user agents.
+ </p>
+
+ <p>
+ Conformance requirements phrased as algorithms or specific steps may be implemented in any manner, so long as the end result is equivalent. (In particular, the algorithms defined in
+ this specification are intended to be easy to follow, and not intended to be performant.)
+ </p>
+
+ <p>
+ The only conformance class defined by this specification is a <dfn id="dfn-user-agent">user agent</dfn>.
+ </p>
+
+ <p>
+ User agents may impose implementation-specific limits on otherwise unconstrained inputs, e.g. to prevent denial of service attacks, to guard against running out of memory, or to work
+ around platform-specific limitations.
+ </p>
+
+ <p>
+ When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid in development, or for performance reasons), user agents must act as if
+ they had no support for the feature whatsoever, and as if the feature was not mentioned in this specification. For example, if a particular feature is accessed via an attribute in a Web
+ IDL interface, the attribute itself would be omitted from the objects that implement that interface - leaving the attribute on the object but making it return null or throw an exception
+ is insufficient.
+ </p>
+
+ <section id="dependencies" about="#dependencies" typeof="bibo:Chapter">
+ <h3><span class="secno">2.1 </span>Dependencies</h3>
+
+ This specification relies on several other underlying specifications.
+
+ <dl>
+ <dt>HTML</dt>
+ <dd>Many fundamental concepts from HTML are used by this specification. [<cite><a class="bibref" rel="biblioentry" href="#bib-HTML5">HTML5</a></cite>]</dd>
+ <dt>WebIDL</dt>
+ <dd>The IDL blocks in this specification use the semantics of the WebIDL specification. [<cite><a class="bibref" rel="biblioentry" href="#bib-WEBIDL">WEBIDL</a></cite>]</dd>
+ </dl>
+ </section>
+ </div>
+
+ <div id="terminology" about="#terminology" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">3. </span>Terminology</h2>
+
+ <p>
+ The construction "a <code>Foo</code> object", where <code>Foo</code> is actually an interface, is sometimes used instead of the more accurate "an object implementing the interface <code>Foo</code>".
+ </p>
+
+ <p>
+ The term DOM is used to refer to the <acronym title="Application Programming Interface">API</acronym> set made available to scripts in Web applications, and does not necessarily imply the existence of an actual <code>Document</code> object or of any
+ other <code>Node</code> objects as defined in the DOM Core specifications. [<cite><a class="bibref" rel="biblioentry" href="#bib-DOM-CORE">DOM-CORE</a></cite>]
+ </p>
+
+ <p>
+ An IDL attribute is said to be <em>getting</em> when its value is being retrieved (e.g. by author script), and is said to be <em>setting</em> when a new value is assigned to it.
+ </p>
+
+ <p>
+ A <dfn id="dfn-valid-service-type">valid service type</dfn> is a string that begins with <code>upnp:</code> or <code>zeroconf:</code> followed by one or more characters in the ranges U+0021, U+0023 to U+0027, U+002A to U+002B, U+002D to U+002E, U+0030 to U+0039, U+0041 to U+005A, U+005E to U+007E.
+ </p>
+
+ <p>
+ A <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> provided in the <code>type</code> attribute of the <code>getNetworkServices()</code> method will be matched against the services currently contained in the <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a> according to the algorithms defined in this specification.
+ </p>
+ </div>
+
+ <div id="requesting-networked-services" about="#requesting-networked-services" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">4. </span>Requesting networked services</h2>
+
+
+<pre class="widl">[Supplemental, NoInterfaceObject]
+interface <dfn id="navigatornetworkservice">NavigatorNetworkService</dfn> {
+ // Obtain a Local-networked Service
+ void <a href="#dom-navigator-getnetworkservices">getNetworkServices</a>( in any type,
+ in <a href="#navigatornetworkservicesuccesscallback">NavigatorNetworkServiceSuccessCallback</a> successCallback,
+ in optional <a href="#navigatornetworkserviceerrorcallback">NavigatorNetworkServiceErrorCallback</a> errorCallback );
+};
+<a class="externalDFN" href="http://www.whatwg.org/specs/web-apps/current-work/complete/timers.html#navigator">Navigator</a> implements <a href="#navigatornetworkservice">NavigatorNetworkService</a>;
+
+[Callback=FunctionOnly, NoInterfaceObject]
+interface <dfn id="navigatornetworkservicesuccesscallback">NavigatorNetworkServiceSuccessCallback</dfn> {
+ void handleEvent( in <a href="#networkservices">NetworkServices</a> services );
+};
+
+[NoInterfaceObject]
+interface <dfn id="navigatornetworkserviceerror">NavigatorNetworkServiceError</dfn> {
+ const unsigned short <a href="#dom-navigatornetworkserviceerror-permission_denied">PERMISSION_DENIED_ERR</a> = 1;
+ const unsigned short <a href="#dom-navigatornetworkserviceerror-unknown_type_prefix">UNKNOWN_TYPE_PREFIX_ERR</a> = 2;
+ readonly attribute unsigned short <a href="#dom-navigatornetworkserviceerror-code">code</a>;
+};
+
+[Callback=FunctionOnly, NoInterfaceObject]
+interface <dfn id="navigatornetworkserviceerrorcallback">NavigatorNetworkServiceErrorCallback</dfn> {
+ void handleEvent( in <a href="#navigatornetworkserviceerror">NavigatorNetworkServiceError</a> error );
+};
+</pre>
+
+ <section id="methods" about="#methods" typeof="bibo:Chapter">
+ <h3><span class="secno">4.1 </span>Methods</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">window</var>
+ .
+ <code title="dom-navigator">
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/timers.html#navigator">navigator</a>
+ </code>
+ .
+ <code title="dom-navigator-getNetworkServices">
+ <a href="#dom-navigator-getnetworkservices">getNetworkServices</a>
+ </code>
+ (
+ <var title="">type</var>
+ ,
+ <var title="">successCallback</var>
+ [,
+ <var title="">errorCallback</var>
+ ] )
+ </dt>
+ <dd>
+ <p>Prompts the user to select one or more discovered network services that have advertised support for the requested service type.</p>
+ <p>
+ The
+ <var title="">type</var>
+ argument contains one or more <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens that the web page would like to interact with.
+ </p>
+ <p>
+ If the user accepts, the
+ <var title="">successCallback</var>
+ is
+ invoked, with one or more
+ <code>
+ <a href="#networkservice"><code>NetworkService</code></a>
+ </code>
+ objects as
+ its argument.
+ </p>
+ <p>
+ If the user declines, the
+ <var title="">errorCallback</var>
+ (if
+ any) is invoked.
+ </p>
+ </dd>
+ </dl>
+
+ <div>
+ <p>
+ When the <dfn id="dom-navigator-getnetworkservices" title="dom-navigator-getnetworkservices"><code>getNetworkServices(type, successCallback[, errorCallback])</code></dfn> method is called, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ If <var>successCallback</var> is empty or is not an object of type <code>Function</code> then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+
+ <li>
+ Let <var>requested control types</var> be initially set to an empty array.
+ </li>
+
+ <li>
+ If <var>type</var> is an array consisting of one or more <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens, then let <var>requested control types</var> by the value of <var>type</var>, removing any non-<a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens from the resulting array.
+ </li>
+
+ <li>
+ If <var>type</var> is a string consisting of one <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> token, then let <var>requested control types</var> be an array containing one item with a value of <var>type</var>.
+ </li>
+
+ <li>
+ If <var>requested control types</var> is an array that contains at least one or more <a title="valid service type" href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens then continue to the step labeled <em>process</em> below. Otherwise, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 2
+ (<a href="#dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></a>) as its argument,
+ abort any remaining steps and return.
+ </li>
+
+ <li>
+ <em>Process</em>: Let <var>services found</var> be an empty array.
+ </li>
+
+ <li>
+ For each <var>available service</var> in the <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a> run the following steps:
+ <ol class="rule">
+ <li>
+ For each <var>requested control type</var> in <var>requested control types</var>: If <var>available service</var>'s <code>type</code> attribute equals the <var>requested control type</var> then let <var>matched service</var> equal the value of <var>available service</var> and continue at the step labeled <var>attach</var> below.
+ </li>
+ <li>
+ Continue at the next <var>available service</var>.
+ </li>
+ <li>
+ <em>Attach</em>: If <var>matched service</var> is not empty then run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>new service object</var> be a new <a href="#networkservice"><code>NetworkService</code></a> object, mapping the parameters of
+ <var>matched service</var> to this new object where possible.
+ </li>
+ <li>
+ Append <var>new service object</var> to the <var>services found</var> array.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ If <var>services found</var> is an empty array, then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </li>
+
+ <li>
+ Return, and run the remaining steps asynchronously.
+ </li>
+
+ <li>
+ Optionally, e.g. based on a previously-established user preference, for security reasons, or due to platform limitations, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="may">may</em> <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </li>
+
+ <li>
+ The <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> prompt the user in a user-agent-specific manner for permission to provide the
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script" class="externalDFN">entry script</a>'s
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin" class="externalDFN">origin</a> with an array of
+ <a href="#networkservice"><code>NetworkService</code></a> objects representing the user-authorized subset of <var>services found</var>.
+
+ <p>
+ If the user grants permission to access one or more networked services then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="should">should</em> include an
+ "ongoing local-network communication" indicator.
+ </p>
+
+ <p>If the user denies permission, then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </p>
+
+ <p>
+ If the user never responds, this algorithm stalls on this step.
+ </p>
+
+ </li>
+
+ <li>
+ Let <var>services</var> be the array of one or more <a href="#networkservice"><code>NetworkService</code></a> objects for which the user granted permission.
+ </li>
+
+ <li>
+ For each Object <var>service</var> in <var>services</var>, run the following substeps:
+
+ <ol class="rule">
+ <li>
+ Add the <var>service</var>'s <code>url</code> parameter to the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator"><acronym title="Uniform Resource Locator">URL</acronym></acronym> whitelist</a>.
+ </li>
+ <li>
+ If <var>service</var> was originally created from a <acronym title="Universal Plug-and-Play">UPnP</acronym> discovery process and the <var>service</var>'s <code>eventsUrl</code> parameter is not empty then <a href="#dfn-setup-a-upnp-events-subscription" class="internalDFN">setup a <acronym title="Universal Plug-and-Play">UPnP</acronym> Events Subscription</a> for <var>service</var>.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Let <var>services manager</var> be a new <a href="#networkservices"><code>NetworkServices</code></a> object.
+ </li>
+
+ <li>
+ Set <var>services manager</var>'s <code>servicesAvailable</code> attribute to the length of <var>services</var>.
+ </li>
+
+ <li>
+ Store the set of <var>services</var> as <dfn id="current_authorized_services">current authorized services</dfn> internally against the newly created <var>services manager</var> object.
+ </li>
+
+ <li>
+ The <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>successCallback</var> with
+ <var>services manager</var> as its argument.
+ </li>
+
+ </ol>
+
+ <p>
+ The <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#task-source" class="externalDFN">task source</a> for these
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#concept-task" class="externalDFN">tasks</a> is the
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#user-interaction-task-source" class="externalDFN">user interaction task source</a>.
+ </p>
+
+ <p>
+ When a <a href="#networkservice"><code>NetworkService</code></a> object is provided to a Web page, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> add the <code>url</code> property
+ to the <dfn id="dfn-entry-script-origin-s-url-whitelist">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</dfn>. This list enables the
+ Web page to override and initiate cross-site resource requests towards these URLs, and any sub-resources of these URLs, within the current
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script" class="externalDFN">entry script</a>'s
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin" class="externalDFN">origin</a> via various existing mechanisms (e.g. Web Sockets, Server-Sent Events,
+ Web Messaging, XMLHttpRequest).
+ </p>
+
+ <p>
+ If the user navigates away from the current browsing context, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> remove all previously whitelisted urls from the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a>.
+ There is no persistence to network service selections provided to a web page. It is not possible to access a previously white-listed networked service without the necessary user authorization in all of the following cases:
+ </p><ul>
+ <li>If the current script is reloaded at any point in the same or different window.</li>
+ <li>if the current script reinvokes the <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> method at any point in its execution.</li>
+ <li>If the user navigates forward or back in their history to reload the current page.</li>
+ <li>If a script is running in a different origin.</li>
+ </ul>
+ <p></p>
+
+ </div>
+ </section>
+
+ <section id="error-handling" about="#error-handling" typeof="bibo:Chapter">
+ <h3><span class="secno">4.2 </span>Error Handling</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">error</var>
+ .
+ <code title="dom-NavigatorNetworkServiceError-code">
+ <a href="#dom-navigatornetworkserviceerror-code">code</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current error's error code. At the current time, this may be <code>1</code> or <code>2</code>, for which the
+ corresponding error constants
+ <a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a> and
+ <a href="#dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></a> are defined.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ The <dfn id="dom-navigatornetworkserviceerror-code" title="dom-navigatornetworkserviceerror-code"><code>code</code></dfn> attribute of a
+ <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object <em class="rfc2119" title="must">must</em> return the code for the error, which will be one of the following:
+ </p>
+
+ <dl>
+ <dt>
+ <dfn id="dom-navigatornetworkserviceerror-permission_denied" title="dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></dfn> (numeric value 1)
+ </dt>
+ <dd>
+ The user denied the page permission to access any services.
+ </dd>
+ <dt>
+ <dfn id="dom-navigatornetworkserviceerror-unknown_type_prefix" title="dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></dfn> (numeric value 2)
+ </dt>
+ <dd>
+ No <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens were provided in the method invocation.
+ </dd>
+ </dl>
+
+ </section>
+
+ </div>
+ <div id="obtaining-networked-services" about="#obtaining-networked-services" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">5. </span>Obtaining networked services</h2>
+
+ <p>
+ The <a href="#networkservices"><code>NetworkServices</code></a> interface is the top-level response object from a call to <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> and provides access to a set of user-authorized <a href="#networkservice"><code>NetworkService</code></a> objects for the given request.
+ </p>
+
+<pre class="widl">[NoInterfaceObject]
+interface <dfn id="networkservices">NetworkServices</dfn> {
+ readonly attribute unsigned long <a href="#dom-networkservices-length">length</a>;
+ getter <a href="#networkservice">NetworkService</a> (unsigned long index);
+ <a href="#networkservice">NetworkService</a>? <a href="#dom-networkservices-getservicebyid">getServiceById</a>(DOMString id);
+
+ readonly attribute unsigned long <a href="#dom-networkservices-servicesavailable">servicesAvailable</a>;
+
+ // event handler attributes
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservices-onserviceavailable">onserviceavailable</a>;
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservices-onserviceunavailable">onserviceunavailable</a>;
+
+};
+
+<a href="#networkservices">NetworkServices</a> implements <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-eventtarget" class="externalDFN">EventTarget</a>;
+</pre>
+
+ <section id="attributes" about="#attributes" typeof="bibo:Chapter">
+ <h3><span class="secno">5.1 </span>Attributes</h3>
+
+ <dl class="domintro">
+ <dt>
+ <code title="dom-networkservices-length">
+ <a href="#dom-networkservices-length">length</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current number of services in the respective object's <a href="#current_authorized_services" class="internalDFN">current authorized services</a>.
+ </p>
+ </dd>
+ <dt>
+ <code title="dom-networkservices-servicesavailable">
+ <a href="#dom-networkservices-servicesavailable">servicesAvailable</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current number of services matching one of the app-requested <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> tokens that are actively available within the user's current network.
+ </p>
+ </dd>
+ </dl>
+
+ <div>
+ <p>
+ The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute <em class="rfc2119" title="must">must</em> return the number of services represented in the object's corresponding <a href="#current_authorized_services" class="internalDFN">current authorized services</a> list at the time of getting.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservices-servicesavailable"><code>servicesAvailable</code></dfn> attribute <em class="rfc2119" title="must">must</em> return the number of services available in the
+ user's network that match the <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> that was initially used to create the current <a href="#networkservices"><code>NetworkServices</code></a> object.
+ By default, <a href="#dom-networkservices-servicesavailable"><code>servicesAvailable</code></a> <em class="rfc2119" title="must">must</em> be set to <code>1</code>.
+ </p>
+
+ <p>
+ When a previously unknown instance of a networked service matching one or the requested <a href="#dfn-valid-service-type">valid service types</a> becomes available on the user's current network, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> fire a new simple
+ event at the <a href="#dom-networkservices-onserviceavailable"><code>onserviceavailable</code></a> event handler.
+ </p>
+
+ <p>
+ When a previously known instance of a networked service matching one or the requested <a href="#dfn-valid-service-type">valid service types</a> becomes unavailable on the user's current network, the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> fire a new simple
+ event at the <a href="#dom-networkservices-onserviceunavailable"><code>onserviceunavailable</code></a> event handler.
+ </p>
+ </div>
+
+ </section>
+
+ <section id="methods-1" about="#methods-1" typeof="bibo:Chapter">
+ <h3><span class="secno">5.2 </span>Methods</h3>
+ <dl class="domintro">
+ <dt>
+ <code title="networkservices-getter">
+ <a href="#networkservices">services</a>
+ </code>
+ [
+ <var title="">index</var>
+ ]
+ </dt>
+ <dd>
+ <p>
+ Returns the specified <a href="#networkservice"><code>NetworkService</code></a> object.
+ </p>
+ </dd>
+ <dt>
+ <code title="networkservices-getter">
+ <a href="#networkservices">services</a>
+ </code>
+ .
+ <code title="dom-networkservices-getservicebyid">
+ <a href="#dom-networkservices-getservicebyid">getServiceById</a>
+ </code>
+ (
+ <var title="">id</var>
+ )
+ </dt>
+ <dd>
+ <p>
+ Returns the <a href="#networkservice"><code>NetworkService</code></a> object with the given identifier, or null if no
+ service has that identifier.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ A <a href="#networkservices"><code>NetworkServices</code></a> object represents the current list of zero or more <a href="#current_authorized_services" class="internalDFN">current authorized services</a>, of which zero or more can be available at a time. Each item in <a href="#current_authorized_services" class="internalDFN">current authorized services</a> is represented by a <a href="#networkservice"><code>NetworkService</code></a> object.
+ </p>
+
+ <p class="note">
+ Each service in a <a href="#networkservices"><code>NetworkServices</code></a> object thus has an index; the first has the index 0, and each subsequent service is numbered one higher than the previous one. If the <a href="#dfn-user-agent" class="internalDFN">user agent</a> dynamically adds or removes network services for any reason, then the indices of the services in <a href="#current_authorized_services" class="internalDFN">current authorized services</a> will change dynamically. If the set of network services changes entirely, then all the previous services will be removed from <a href="#current_authorized_services" class="internalDFN">current authorized services</a> and replaced with new services.
+ </p>
+
+ <p>
+ The <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#supported-property-indices" class="externalDFN">supported property indices</a> of <a href="#networkservices"><code>NetworkServices</code></a> objects at any instant are the numbers from zero to the number of items in <a href="#current_authorized_services" class="internalDFN">current authorized services</a> represented by the respective object minus one, if any services are represented in <a href="#current_authorized_services" class="internalDFN">current authorized services</a>. If a <a href="#networkservices"><code>NetworkServices</code></a> object represents no <a href="#current_authorized_services" class="internalDFN">current authorized services</a>, it has no <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#supported-property-indices" class="externalDFN">supported property indices</a>.
+ </p>
+
+ <p>
+ To <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#determine-the-value-of-an-indexed-property" class="externalDFN">determine the value of an indexed property</a> for a given index <var>index</var> in a <a href="#networkservices"><code>NetworkServices</code></a> object's <a href="#current_authorized_services" class="internalDFN">current authorized services</a>, the user agent <em class="rfc2119" title="must">must</em> return the <a href="#networkservice"><code>NetworkService</code></a> object that represents the <var>index</var>th service in <a href="#current_authorized_services" class="internalDFN">current authorized services</a>.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservices-getservicebyid"><code>getServiceById(id)</code></dfn> method <em class="rfc2119" title="must">must</em> return the first <a href="#networkservice"><code>NetworkService</code></a> object in <a href="#current_authorized_services" class="internalDFN">current authorized services</a> represented by the respective object whose <a href="#dom-networkservice-id"><code>id</code></a> attribute is equal to the value of the <var>id</var> argument.
+ When no services in <a href="#current_authorized_services" class="internalDFN">current authorized services</a> match the given argument, the method <em class="rfc2119" title="must">must</em> return null.
+ </p>
+
+ <p>
+ Services available within the local network can connect and disconnect at different times during the execution of a web page. A <a href="#dfn-user-agent" class="internalDFN">user agent</a> can
+ inform a web page when the state of networked services matching the requested <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> change. Web pages can use this information to enable in-page experiences for communicating the state of networked services
+ with the ability to change the particular service or set of services the page is connected to by re-invoking the <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> method.
+ </p>
+
+ </section>
+
+ <section id="events" about="#events" typeof="bibo:Chapter">
+ <h3><span class="secno">5.3 </span>Events</h3>
+
+ <p>
+ The following are the event handlers (and their corresponding event handler event types) that must be supported, as IDL attributes, by all objects implementing the <a href="#networkservices"><code>NetworkServices</code></a> interface:
+ </p>
+
+ <table border="1">
+ <thead>
+ <tr>
+ <th>
+ <span title="event handlers">Event handler</span>
+ </th>
+ <th>
+ <span>Event handler event type</span>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <dfn id="dom-networkservices-onserviceavailable" title="dom-NetworkServices-onserviceavailable">
+ <code>onserviceavailable</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-serviceavailable">serviceavailable</code>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <dfn id="dom-networkservices-onserviceunavailable" title="dom-NetworkServices-onserviceunavailable">
+ <code>onserviceunavailable</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-serviceunavailable">serviceunavailable</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ Events with an event type of <code>serviceavailable</code> or <code>serviceunavailable</code> defined in this specification are simple <code>Event</code> objects.
+ </p>
+
+ </section>
+
+ </div>
+ <div id="communicating-with-a-networked-service" about="#communicating-with-a-networked-service" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">6. </span>Communicating with a networked service</h2>
+
+<p>
+ The <a href="#networkservice"><code>NetworkService</code></a> interface is used to provide a set of connection information for an <acronym title="Hypertext Transfer Protocol">HTTP</acronym> service endpoint and if available, service events, running on a networked device.
+</p>
+
+<pre class="widl">[NoInterfaceObject]
+interface <dfn id="networkservice">NetworkService</dfn> {
+ readonly attribute DOMString <a href="#dom-networkservice-id">id</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-name">name</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-type">type</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-url">url</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-config">config</a>;
+
+ const unsigned short <a href="#dom-networkservice-AVAILABLE">AVAILABLE</a> = 1;
+ const unsigned short <a href="#dom-networkservice-UNAVAILABLE">UNAVAILABLE</a> = 2;
+ readonly attribute unsigned short <a href="#dom-networkservice-readystate">readyState</a>;
+
+ // event handler attributes
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservice-onreadystatechange">onreadystatechange</a>;
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservice-onmessage">onmessage</a>;
+};
+
+<a href="#networkservice">NetworkService</a> implements <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-eventtarget" class="externalDFN">EventTarget</a>;
+</pre>
+
+<section id="attributes-1" about="#attributes-1" typeof="bibo:Chapter">
+ <h3><span class="secno">6.1 </span>Attributes</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-id">
+ <a href="#dom-networkservice-id">id</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ A unique identifier for the given user-selected service instance.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-name">
+ <a href="#dom-networkservice-name">name</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The name of the user-selected service.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-type">
+ <a href="#dom-networkservice-type">type</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> token value of the user-selected service.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-url">
+ <a href="#dom-networkservice-url">url</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The control <acronym title="Uniform Resource Locator">URL</acronym> endpoint (including any required port information) of the user-selected control service that has been added to the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a>.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-config">
+ <a href="#dom-networkservice-config">config</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The configuration information associated with the service depending on the requested service type.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ The <dfn id="dom-networkservice-id"><code>id</code></dfn> attribute is a unique identifier for the service. Two services provided at different times or on different objects <em class="rfc2119" title="must">must</em> have the same <a href="#dom-networkservice-id"><code>id</code></a> value.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-name"><code>name</code></dfn> attribute represents a human-readable title for the service.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-type"><code>type</code></dfn> attribute reflects the value of the <a href="#dfn-valid-service-type" class="internalDFN">valid service type</a> of the service.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-url"><code>url</code></dfn> attribute is an <a href="http://www.w3.org/TR/html5/urls.html#absolute-url" class="externalDFN">absolute <acronym title="Uniform Resource Locator">URL</acronym></a> pointing to the root <acronym title="Hypertext Transfer Protocol">HTTP</acronym>
+ endpoint for the service that has been added to the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a>. Web pages can subsequently use this value for implicit cross-document messaging via various existing mechanisms (e.g. Web Sockets, Server-Sent Events, Web Messaging, XMLHttpRequest).
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-config"><code>config</code></dfn> attribute provides the raw configuration information extracted from the given network service.
+ </p>
+
+ </section>
+
+ <section id="states" about="#states" typeof="bibo:Chapter">
+ <h3><span class="secno">6.2 </span>States</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-readystate">
+ <a href="#dom-networkservice-readystate">readyState</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current state.
+ </p>
+ </dd>
+ </dl>
+
+ A <a href="#networkservice"><code>NetworkService</code></a> object can be in several states. The <dfn id="dom-networkservice-readystate"><code>readyState</code></dfn> attribute <em class="rfc2119" title="must">must</em> return the current state of the networked service,
+ which <em class="rfc2119" title="must">must</em> be one of the following values:
+
+ <dl>
+ <dt>
+ <dfn id="dom-networkservice-AVAILABLE" title="dom-networkservice-AVAILABLE">
+ <code>AVAILABLE</code>
+ </dfn>
+ (numeric value
+ 1)
+
+
+ </dt>
+ <dd>
+ <p>The object is connected to its service endpoint.
+
+ </p>
+ </dd>
+ <dt>
+ <dfn id="dom-networkservice-UNAVAILABLE" title="dom-networkservice-UNAVAILABLE">
+ <code>UNAVAILABLE</code>
+ </dfn>
+ (numeric value
+ 2)
+ </dt>
+ <dd>
+ <p>The object is not connected to its service endpoint.
+ </p>
+ </dd>
+ </dl>
+
+ </section>
+
+ <section id="events-1" about="#events-1" typeof="bibo:Chapter">
+ <h3><span class="secno">6.3 </span>Events</h3>
+
+ <p>
+ The following are the event handlers (and their corresponding event handler event types) that must be supported, as IDL attributes, by all objects implementing the
+ <a href="#networkservice"><code>NetworkService</code></a> interface:
+ </p>
+
+ <table border="1">
+ <thead>
+ <tr>
+ <th>
+ <span title="event handlers">Event handler</span>
+ </th>
+ <th>
+ <span>Event handler event type</span>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <dfn id="dom-networkservice-onmessage" title="dom-NetworkService-onmessage">
+ <code>onmessage</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-message">message</code>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <dfn id="dom-networkservice-onreadystatechange" title="dom-NetworkService-onreadystatechange">
+ <code>onreadystatechange</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-onreadystatechange">readystatechange</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ Events with an event type of <code>message</code> defined in this specification are <a href="http://dev.w3.org/html5/postmsg/#messageevent" class="externalDFN"><code>MessageEvent</code></a> objects as defined in [<cite><a class="bibref" rel="biblioentry" href="#bib-WEBMESSAGING">WEBMESSAGING</a></cite>].
+ </p>
+
+ <p>
+ Events with an event type of <code>readystatechange</code> defined in this specification are simple <code>Event</code> objects.
+ </p>
+
+ </section>
+ </div>
+
+ <div id="service-discovery" about="#service-discovery" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">7. </span>Service Discovery</h2>
+
+ <p>
+ A <a href="#dfn-user-agent" class="internalDFN">user agent</a> conforming to this specification <em class="rfc2119" title="may">may</em> implement <acronym title="Simple Service Discovery Protocol"><acronym title="Simple Service Discovery Protocol">SSDP</acronym></acronym> [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP">UPNP</a></cite>] and Zeroconf [<cite><a class="bibref" rel="biblioentry" href="#bib-ZEROCONF">ZEROCONF</a></cite>] service discovery mechanisms
+ to enable Web pages to request and connect with <acronym title="Hypertext Transfer Protocol">HTTP</acronym> services running on networked devices, discovered via either mechanism, through this <acronym title="Application Programming Interface">API</acronym>. When a <a href="#dfn-user-agent" class="internalDFN">user agent</a> implements either of these service discovery mechanisms, then it <em class="rfc2119" title="must">must</em> conform to the corresponding algorithms provided in this section of the specification.
+ </p>
+ <p>
+ This section presents how the results of these two service discovery
+ mechanisms will be matched to requested service types and how their properties will be applied to any resulting <a href="#networkservice"><code>NetworkService</code></a> objects.
+ </p>
+
+ <p>
+ It is expected that user agents will perform these service discovery mechansisms asynchronously and periodically update the <a>list of networked devices</a> as required. The timing of any
+ service discovery mechanisms is an implementation detail left to the discretion of the implementer (e.g. once on user agent start-up, every X seconds during user agent execution or on
+ invocation of this <acronym title="Application Programming Interface">API</acronym> from a Web page).
+ </p>
+
+ <p>
+ The <dfn id="dfn-list-of-available-service-records">list of available service records</dfn> is a single dynamic internal lookup table within user agents that is used to track the current services available in the network at any given time.
+ At any point during the running of either of the two service discovery mechanisms then existing entries within this table can be updated, entries can be added and entries can be removed as the status of networked
+ services changes. Each record contained within this table contains the attributes: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code> and <code>config</code>.
+ </p>
+
+ <section id="zeroconf--mdns---dns-sd" about="#zeroconf--mdns---dns-sd" typeof="bibo:Chapter">
+ <h3><span class="secno">7.1 </span>Zeroconf (<acronym title="Multicast DNS"><acronym title="Multicast DNS">mDNS</acronym></acronym> + <acronym title="Domain Name System"><acronym title="Domain Name System">DNS</acronym></acronym>-<acronym title="Service Discovery"><acronym title="Service Discovery">SD</acronym></acronym>)</h3>
+
+ <p>
+ For each <acronym title="Domain Name System">DNS</acronym> response received from a user-agent-initiated Multicast <acronym title="Domain Name System">DNS</acronym> Browse for <acronym title="DNS Pointer Record"><acronym title="DNS Pointer Record">PTR</acronym></acronym> records with the name <code>_services._dns-sd._udp</code> on the resolved recommended automatic browsing
+ domain [<cite><a class="bibref" rel="biblioentry" href="#bib-MDNS">MDNS</a></cite>], the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> run the following steps:
+ </p>
+
+ <ol class="rule">
+
+ <li>Let <var>service <acronym title="Multicast DNS">mDNS</acronym> responses</var> be an array of <acronym title="DNS Pointer Record">PTR</acronym> records received by issuing a Multicast <acronym title="Domain Name System">DNS</acronym> Browse for <acronym title="DNS Pointer Record">PTR</acronym> records with the name of the current discovered service type.</li>
+
+ <li>For each Object <var>service <acronym title="Multicast DNS">mDNS</acronym> response</var> in <var>service <acronym title="Multicast DNS">mDNS</acronym> responses</var>, run the following steps:
+ <ol>
+
+ <li>
+ Let <var>network service record</var> be an Object consisting of the following empty properties: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code>, <code>config</code>.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>id</code> property to the value of the full <acronym title="DNS Pointer Record">PTR</acronym> Service Instance Name [<cite><a class="bibref" rel="biblioentry" href="#bib-MDNS">MDNS</a></cite>].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>name</code> property to the value of the <acronym title="DNS Pointer Record">PTR</acronym> Service Instance Name's <var>Instance</var> component [<cite><a class="bibref" rel="biblioentry" href="#bib-MDNS">MDNS</a></cite>].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>type</code> property to the concatenation of the string <code>zeroconf:</code> followed by the value of the <acronym title="DNS Pointer Record">PTR</acronym> Service Instance Name's <var>Service</var> component [<cite><a class="bibref" rel="biblioentry" href="#bib-MDNS">MDNS</a></cite>].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>url</code> property to the resolvable Service <acronym title="Uniform Resource Locator">URL</acronym> obtained from performing an <acronym title="Domain Name System">DNS</acronym>-<acronym title="Service Discovery">SD</acronym> Lookup [<cite><a class="bibref" rel="biblioentry" href="#bib-DNS-SD">DNS-SD</a></cite>] of the current service from the <acronym title="DNS Pointer Record">PTR</acronym> record provided [<cite><a class="bibref" rel="biblioentry" href="#bib-MDNS">MDNS</a></cite>].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>config</code> property to the string value of the contents of the first <acronym title="Domain Name System">DNS</acronym>-<acronym title="Service Discovery">SD</acronym> TXT record associated with the <var>service <acronym title="Multicast DNS">mDNS</acronym> response</var> as defined in [<cite><a class="bibref" rel="biblioentry" href="#bib-DNS-SD">DNS-SD</a></cite>].
+ </li>
+
+ <li>
+ For each Object <var>existing service record</var> in the current <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a>, run the following sub-steps:
+ <ol class="rule">
+
+ <li>
+ If the <var>existing service record</var>'s <code>id</code> property matches the value of the <var>network service record</var>'s <code>id</code>, then set the
+ value of <var>existing service record</var> in the current <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a> to the value of the
+ <var>network service record</var> and skip the next step.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Add <var>network service record</var> to the <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a>.
+ </li>
+
+ <li>
+ For each non-garbage collected <a href="#networkservice"><code>NetworkService</code></a> object run the following steps:
+
+ <ol class="rule">
+ <li>
+ If the <a href="#networkservice"><code>NetworkService</code></a> object's <code>type</code> attribute does not equal the
+ current <a>network service record</a>'s <code>type</code> property then continue at the next available active
+ <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ <li>
+ Increment the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a> object by <code>1</code>.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ </section>
+
+ <section id="universal-plug-and-play--upnp" about="#universal-plug-and-play--upnp" typeof="bibo:Chapter">
+ <h3><span class="secno">7.2 </span>Universal Plug-and-Play (<acronym title="Universal Plug-and-Play"><acronym title="Universal Plug-and-Play">UPnP</acronym></acronym>)</h3>
+
+ <p>
+ For each <acronym title="Simple Service Discovery Protocol">SSDP</acronym> Presence Announcement [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP">UPNP</a></cite>] - a <acronym title="Hypertext Transfer Protocol">HTTP</acronym> NOTIFY request - received from a user-agent-initiated <acronym title="Simple Service Discovery Protocol">SSDP</acronym> Discovery Request [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP">UPNP</a></cite>], the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Let <var>ssdp device</var> be an Object with a property for each <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header received in the received <acronym title="Simple Service Discovery Protocol">SSDP</acronym> Presence Announcement, with each key being the name of a <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header and its
+ value being that <acronym title="Hypertext Transfer Protocol">HTTP</acronym> header's accompanying value.
+ </li>
+
+ <li>
+ If <var>ssdp device</var> does not contain at least one <var>NTS</var>, <var>USN</var> and <var>Location</var> parameter, then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+
+ <li>
+ If the first occurrence of <var>NTS</var> has a value other than <code>ssdp:alive</code>, then continue to the step labeled <var>update service monitor</var> below.
+ </li>
+
+ <li>
+ Let <var>root device descriptor file</var> contain the contents of the file located at the <acronym title="Uniform Resource Locator">URL</acronym> provided in the first occurrence of <var>Location</var> obtained according to the rules
+ defined in the section 'Retrieving a description using <acronym title="Hypertext Transfer Protocol">HTTP</acronym>' [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP">UPNP</a></cite>].
+ </li>
+
+ <li>
+ If <var>root device descriptor file</var> is empty, then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+
+ <li>
+ Let <var>advertised services</var> be a <a>list of all advertised services</a> obtained from the <var>root device descriptor file</var> containing all sub-nodes of the <code>serviceList</code> node as described in
+ the section 'Device Description' [<cite><a class="bibref" rel="biblioentry" href="#bib-UPNP">UPNP</a></cite>].
+ </li>
+
+ <li>
+ For each Object <var>advertised service</var> in <var>advertised services</var> run the following steps:
+ <ol class="rule">
+
+ <li>
+ Let <var>network service record</var> be an Object consisting of the following empty properties: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code>, <code>eventsUrl</code>, <code>config</code>.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>id</code> property to the string value of the first occurrence of <var>ssdp device</var>'s <var>USN</var> parameter.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>name</code> property to the string value of the first occurrence of the <var>service</var>'s <code>serviceId</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>type</code> property to the concatenation of the string <code>upnp:</code> followed by the string value of the first occurrence of the <var>service</var>'s <code>serviceType</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>url</code> property to the string value of the first occurrence of the <var>service</var>'s <code>controlURL</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>config</code> property to the string value of the first occurrence of the <var>device</var> property.
+ </li>
+
+ <li>
+ If <var>service</var>'s <code>eventSubURL</code> property is empty, then continue to the step labeled <em>register</em> below.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>eventsUrl</code> property to the string value of the first occurrence of the <var>service</var>'s <code>eventSubURL</code> property.
+ </li>
+
+ <li>
+ <em>Register</em>: For each Object <var>existing service record</var> in the current <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a>, run the following sub-steps:
+ <ol class="rule">
+
+ <li>
+ If the <var>existing service record</var>'s <var>id</var> property matches the value of the first occurrence of <var>USN</var> and the
+ <var>existing service record</var>'s <code>type</code> property matches the value of <var>network service record</var>'s <code>type</code>, then set the
+ value of <var>existing service record</var> in the current <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a> to the value of the
+ <var>network service record</var> and skip the next step.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Add <var>network service record</var> to the <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a>.
+ </li>
+
+ </ol>
+ </li>
+ <li>
+ <em>Update Service Monitor</em>: For each non-garbage collected <a href="#networkservice"><code>NetworkService</code></a> object run the following steps:
+
+ <ol class="rule">
+ <li>
+ If this <a href="#networkservice"><code>NetworkService</code></a> object's <code>type</code> attribute does not equal the
+ current <a>network service record</a>'s <code>type</code> property then continue at the next available active
+ <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ <li>
+ If the <var>announcement type</var> equals <code>ssdp:alive</code> then Increment the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a>
+ object by <code>1</code>. Otherwise, decrement the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a>
+ object by <code>1</code>.
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ <p>
+ A <dfn id="dfn-user-agent-generated-callback-url">user-agent generated callback url</dfn> is a Local-network accessible <acronym title="Uniform Resource Locator">URL</acronym> endpoint that a <a href="#dfn-user-agent" class="internalDFN">user agent</a> must generate and maintain for receiving <acronym title="Hypertext Transfer Protocol">HTTP</acronym> NOTIFY requests from <acronym title="Universal Plug-and-Play">UPnP</acronym> Event sources.
+ </p>
+
+ <p>When the <a href="#dfn-user-agent" class="internalDFN">user agent</a> is to <dfn id="dfn-setup-a-upnp-events-subscription">setup a <acronym title="Universal Plug-and-Play">UPnP</acronym> Events Subscription</dfn>, it is to run the following steps with the current <var>network service record</var> object:</p>
+
+ <ol class="rule">
+ <li>
+ If <var>network service record</var>'s <code>eventsUrl</code> property is empty then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+
+ <li>
+ Let <var>callback <acronym title="Uniform Resource Locator">URL</acronym></var> be the value of creating a new <a href="#dfn-user-agent-generated-callback-url" class="internalDFN">user-agent generated callback url</a>.
+ </li>
+
+ <li>
+ Send a <acronym title="Hypertext Transfer Protocol">HTTP</acronym> SUBSCRIBE request with a <em>NT</em> header with a string value of <code>upnp:event</code>, a <em>TIMEOUT</em> header with an integer value of
+ <code>86400</code> and a <em>CALLBACK</em> header
+ with a string value of <var>callback <acronym title="Uniform Resource Locator">URL</acronym></var> towards the <var>network service record</var>'s <code>eventsUrl</code> property.
+ </li>
+
+ <li>
+ If a non-200 OK response is received from the <acronym title="Hypertext Transfer Protocol">HTTP</acronym> SUBSCRIBE request then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+
+ <li>
+ On receiving a valid 200 OK response, run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>callback ID</var> equal the string value of the first included <em>SID</em> header, if it exists.
+ </li>
+ <li>
+ Let <var>timeout date</var> equal the sum of the current UTC date value plus the integer value of the first included <em>TIMEOUT</em> header, if it exists.
+ </li>
+ <li>
+ Run the following steps aynchronously and continue to the step labeled <em>listen</em> below.
+ </li>
+ <li>
+ <em>Refresh Subscription</em>: Run the following steps at a set interval (X) within the <a href="#dfn-user-agent" class="internalDFN">user agent</a>:
+
+ <ol class="rule">
+ <li>
+ Let <var>current date</var> equal the current UTC date.
+ </li>
+ <li>
+ If <var>current date</var> is less than the <var>timeout date</var> then continue to the step labeled <em>refresh subscription</em> above.
+ </li>
+ <li>
+ Send a <acronym title="Hypertext Transfer Protocol">HTTP</acronym> SUBSCRIBE request with a <em>SID</em> header with the string value of <var>callback ID</var> and a <em>TIMEOUT</em> header
+ with an integer value of <code>86400</code> towards the <var>network service record</var>'s <code>eventsUrl</code> property.
+ </li>
+ <li>
+ On receiving a valid 200 OK, update <var>callback ID</var> with the string value of the first included <em>SID</em> header, if it exists. All other <acronym title="Hypertext Transfer Protocol">HTTP</acronym>
+ responses should cause the <a href="#dfn-user-agent" class="internalDFN">user agent</a> to continue from the step labeled <em>refresh subscription</em> above.
+ </li>
+ </ol>
+
+ </li>
+
+ <li>
+ <em>Listen</em>: For each <acronym title="Hypertext Transfer Protocol">HTTP</acronym> NOTIFY request received at the <var>callback <acronym title="Uniform Resource Locator">URL</acronym></var> the <a href="#dfn-user-agent" class="internalDFN">user agent</a> is to run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>content clone</var> be the result of obtaining the message body of the <acronym title="Hypertext Transfer Protocol">HTTP</acronym> NOTIFY request. If <var>content clone</var> is empty, then the <a href="#dfn-user-agent" class="internalDFN">user agent</a> <em class="rfc2119" title="must">must</em> abort these steps.
+ </li>
+ <li>
+ Create a new <code>message</code> event that uses the <a href="http://dev.w3.org/html5/postmsg/#messageevent" class="externalDFN"><code>MessageEvent</code></a> interface [<cite><a class="bibref" rel="biblioentry" href="#bib-WEBMESSAGING">WEBMESSAGING</a></cite>], with the name <code>message</code>,
+ which does not bubble, is not cancelable, and has no default action.
+ </li>
+ <li>
+ Let the <code>data</code> attribute of the event have the DOMString value of <var>content clone</var>.
+ </li>
+ <li>
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">Queue a task</a> to
+ dispatch the newly created event at the current <a href="#networkservice" class="internalDFN"><code>NetworkService</code></a> object.
+ </li>
+ </ol>
+ </li>
+
+ </ol>
+
+ </li>
+ </ol>
+
+ </section>
+
+ <section id="network-topology-monitoring" about="#network-topology-monitoring" typeof="bibo:Chapter">
+ <h3><span class="secno">7.3 </span>Network Topology Monitoring</h3>
+
+ <div>
+ <p>
+ When the <a href="#dfn-user-agent" class="internalDFN">user agent</a> detects that the user has dropped from their connected network, then it <em class="rfc2119" title="must">must</em> run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Flush all entries from the <a href="#dfn-list-of-available-service-records" class="internalDFN">list of available service records</a>.
+ </li>
+ <li>
+ For each <a href="#networkservice"><code>NetworkService</code></a> object currently active in the <a href="#dfn-user-agent" class="internalDFN">user agent</a> perform the following steps:
+
+ <ol class="rule">
+ <li>
+ Set the <a href="#dom-networkservice-readystate"><code>readyState</code></a> attribute to <code>2</code> (<a href="#dom-networkservice-UNAVAILABLE"><code>UNAVAILABLE</code></a>).
+ </li>
+ <li>
+ Create a new <code>readystatechange</code> event that uses the <code>Event</code> interface which does not bubble, is not cancelable, and has no default action.
+ </li>
+ <li>
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">Queue a task</a> to
+ dispatch the newly created event at the <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ <p>
+ When the <a href="#dfn-user-agent" class="internalDFN">user agent</a> detects that the user has connected to a new network, then it <em class="rfc2119" title="should">should</em> run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Re-issue an <acronym title="Multicast DNS">mDNS</acronym> search and <acronym title="Simple Service Discovery Protocol">SSDP</acronym> discovery search and handle the responses according to the processing defined in <a href="#service-discovery" class="sec-ref">Section 6: Service Discovery</a>.
+ </li>
+ </ol>
+ </div>
+ </section>
+ </div>
+
+ <div id="garbage-collection" about="#garbage-collection" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">8. </span>Garbage collection</h2>
+
+ <p>
+ A <a href="#networkservice" class="internalDFN"><code>NetworkService</code></a> object containing a <code>url</code> parameter currently in the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a> <em class="rfc2119" title="must not">must not</em> be garbage collected.
+ </p>
+
+ <p>
+ Only when the user navigates away from the current browsing context can <a href="#networkservice" class="internalDFN"><code>NetworkService</code></a> objects be garbage-collected and records in the <a href="#dfn-entry-script-origin-s-url-whitelist" class="internalDFN">entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a> be removed.
+ </p>
+
+ </div>
+
+
+ <div id="use-cases-and-requirements" about="#use-cases-and-requirements" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">9. </span>Use Cases and Requirements</h2>
+
+ <p>This section covers what the requirements are for this <acronym title="Application Programming Interface">API</acronym>, as well as illustrates some use cases.</p>
+
+ <ul class="rule">
+ <li>
+ Once a user has given permission, user agents should provide the ability for Web pages to communicate directly with a Local-networked Service.
+ <ul class="rule">
+ <li>
+ Example: A web-based TV remote control. A Web page wants to control the current user's TV, changing the programming shown or increasing/decreasing/muting the
+ volume of the Local-networked Device. The Web page requests a service type that is known to be implemented by television sets to which it has the
+ application logic to communicate. Local devices providing the request service types are discovered and presented to the user for authorization. The user selects one
+ or more of the discovered television sets to be accessible to the current Web page and then clicks 'Share'. The Web page can now communicate directly with
+ the user-authorized Local-networked services.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should be able to communicate with Local-networked Services using the messaging channel supported by those Devices.
+ <ul class="rule">
+ <li>
+ Example: A Web page advertises that it is capable of controlling multiple Home Media Servers. The user can select their Home Media Server type from a drop-down list, at which point the
+ Web page sends a request to the user agent to connect with the associated service type of the Home Media Server. The Media Server selected implements a Web Socket channel for
+ bi-directional service communication and so the Web page opens a web socket to the requested Media Server and can communicate as required via that appropriate channel.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should be able to communicate with Local-networked Services using the messaging format supported by those Devices.
+ <ul class="rule">
+ <li>
+ Example: A Web page advertises that it is capable of interacting with and controlling multiple types of Home Media Server. The user can select their Home Media Server type from a drop-down list or known Media Servers, at which point the
+ Web page sends a request to the user agent to connect with the associated service type (and, optionally, the associated event type) of the Home Media Server. The communiciation protocols supported by Home Media Servers typically vary
+ between <acronym title="Universal Plug-and-Play">UPnP</acronym>, JSON-RPC, Protocol Buffers or other messaging formats depending on the Home Media Server requested. The Web page is able to communicate with the user-selected Home Media
+ Server in the messaging format supported by that Device, which, in this example is a simple key/value pair text format.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should not be able to communicate with Local-networked Services that have not been authorized by the user thereby maintaining the user's privacy.
+ <ul class="rule">
+ <li>
+ Example: A Web page requests access to one type of Local-networked service. The user authorizes access to that particular service. Other services running on that same device, and on other devices
+ within the network, should not be accessible to the current Web page.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ A user should be able to share one or more Local-networked Services based on a particular service type request from a Web page.
+ <ul class="rule">
+ <li>
+ Example: A Web page is capable of interacting with a specific profile of Local-networked Service. As such, it makes a request to the user agent to access those services, of which multiple matches
+ are found. The user is capable of selecting one or more of the discovered services to share with the Web page. The Web page can then implement a drag-and-drop interface for the user to drag specific
+ actions on to one or more of the authorized Local-networked Services.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ User agents should provide an <acronym title="Application Programming Interface">API</acronym> exposed to script that exposes the features above. The user is notified by UI anytime interaction with Local-networked Services is requested, giving the user
+ full ability to cancel or abort the transaction. The user selects the Local-networked Services to be connected to the current Web page, and can cancel these at any time. No invocations to
+ these APIs occur silently without user intervention.
+ </li>
+ </ul>
+ </div>
+
+ <div class="informative appendix section" id="examples" about="#examples" typeof="bibo:Chapter">
+ <!--OddPage--><h2><span class="secno">A. </span>Examples</h2><em>This section is non-normative.</em>
+
+ <div class="example">
+ <p>This sample code exposes a button. When clicked, this button is disabled and the user is prompted to offer a network service. The user may also select multiple network services. When the user has authorized a network service to be connected to the web page then the web page issues a simple command to get a list of all the albums stored on the connected media player service.
+ </p><p>The button is re-enabled only when the connected network service disconnects for whatever reason (the service becomes unavailable on the network, the user disconnects from their current network or the user revokes access to the service from the current web page). At this point the user can re-click the button to select a new network service to connect to the web page and the above steps are repeated.</p>
+ <p>The provided service type identifier and service interaction used in this example is based on the well-defined service type and messaging format supported by the <a href="http://xbmc.org/about/">XBMC Media Server</a>. </p>
+ <hr>
+ <div><div id="highlighter_169377" class="syntaxhighlighter nogutter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain"><input type=</code><code class="js string">"button"</code> <code class="js plain">value=</code><code class="js string">"Start"</code> <code class="js plain">onclick=</code><code class="js string">"start()"</code> <code class="js plain">id=</code><code class="js string">"startBtn"</code><code class="js plain">/></code></div><div class="line number2 index1 alt1"><code class="js plain"><div id=</code><code class="js string">"debugconsole"</code><code class="js plain">></div></code></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><code class="js plain"><script></code></div><div class="line number5 index4 alt2"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">startBtn = document.getElementById(</code><code class="js string">'startBtn'</code><code class="js plain">),</code></div><div class="line number6 index5 alt1"><code class="js spaces"> </code><code class="js plain">debug = document.getElementById(</code><code class="js string">'debugconsole'</code><code class="js plain">);</code></div><div class="line number7 index6 alt2"> </div><div class="line number8 index7 alt1"><code class="js spaces"> </code><code class="js keyword">function</code> <code class="js plain">start() {</code></div><div class="line number9 index8 alt2"><code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">(navigator.getNetworkServices) {</code></div><div class="line number10 index9 alt1"><code class="js spaces"> </code><code class="js plain">navigator.getNetworkServices(</code><code class="js string">'zeroconf:_xbmc-jsonrpc._tcp'</code><code class="js plain">, gotXBMCService, error);</code></div><div class="line number11 index10 alt2"><code class="js spaces"> </code><code class="js plain">startBtn.disabled = </code><code class="js keyword">true</code><code class="js plain">;</code></div><div class="line number12 index11 alt1"><code class="js spaces"> </code><code class="js plain">} </code><code class="js keyword">else</code> <code class="js plain">{</code></div><div class="line number13 index12 alt2"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>Service Discovery <acronym title="</code><code class="js plain">Application Programming Interface</code><code class="js string">">API</acronym> not supported!"</code><code class="js plain">;</code></div><div class="line number14 index13 alt1"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number15 index14 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number16 index15 alt1"> </div><div class="line number17 index16 alt2"><code class="js spaces"> </code><code class="js keyword">function</code> <code class="js plain">gotXBMCService(services) {</code></div><div class="line number18 index17 alt1"> </div><div class="line number19 index18 alt2"><code class="js comments">// Listen for service disconnect messages</code></div><div class="line number20 index19 alt1"> </div><div class="line number21 index20 alt2"><code class="js spaces"> </code><code class="js plain">services[0].addEventListener(</code><code class="js string">'readystatechange'</code><code class="js plain">, </code><code class="js keyword">function</code> <code class="js plain">( e ) {</code></div><div class="line number22 index21 alt1"><code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">(services[0].readyState === services[0].UNAVAILABLE) {</code></div><div class="line number23 index22 alt2"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" disconnected."</code><code class="js plain">;</code></div><div class="line number24 index23 alt1"><code class="js spaces"> </code><code class="js plain">startBtn.disabled = </code><code class="js keyword">false</code><code class="js plain">;</code></div><div class="line number25 index24 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number26 index25 alt1"><code class="js spaces"> </code><code class="js plain">}, </code><code class="js keyword">false</code><code class="js plain">);</code></div><div class="line number27 index26 alt2"> </div><div class="line number28 index27 alt1"><code class="js comments">// Send a service message to get albums list (and process the service response)</code></div><div class="line number29 index28 alt2"> </div><div class="line number30 index29 alt1"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">svcXhr = </code><code class="js keyword">new</code> <code class="js plain">XMLHttpRequest();</code></div><div class="line number31 index30 alt2"><code class="js spaces"> </code><code class="js plain">svcXhr.open(</code><code class="js string">"POST"</code><code class="js plain">, services[0].url + </code><code class="js string">"/getAlbums"</code><code class="js plain">); </code><code class="js comments">// services[0].url and its subresources have been</code></div><div class="line number32 index31 alt1"><code class="js spaces"> </code><code class="js comments">// whitelisted for cross-site XHR use in this</code></div><div class="line number33 index32 alt2"><code class="js spaces"> </code><code class="js comments">// current browsing context.</code></div><div class="line number34 index33 alt1"> </div><div class="line number35 index34 alt2"><code class="js spaces"> </code><code class="js plain">svcXhr.setRequestHeader(</code><code class="js string">'Content-Type'</code><code class="js plain">, </code><code class="js string">'application/json-rpc'</code><code class="js plain">);</code></div><div class="line number36 index35 alt1"> </div><div class="line number37 index36 alt2"><code class="js spaces"> </code><code class="js plain">svcXhr.addEventListener(</code><code class="js string">'readystatechange'</code><code class="js plain">, </code><code class="js keyword">function</code> <code class="js plain">( response ) {</code></div><div class="line number38 index37 alt1"><code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">( response.readyState != 4 || response.status != 200 )</code></div><div class="line number39 index38 alt2"><code class="js spaces"> </code><code class="js keyword">return</code><code class="js plain">;</code></div><div class="line number40 index39 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" response received: "</code><code class="js plain">;</code></div><div class="line number41 index40 alt2"><code class="js spaces"> </code><code class="js plain">debug.textContent += JSON.parse(response.responseText);</code></div><div class="line number42 index41 alt1"><code class="js spaces"> </code><code class="js plain">}, </code><code class="js keyword">false</code><code class="js plain">);</code></div><div class="line number43 index42 alt2"> </div><div class="line number44 index43 alt1"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">svcMsg = [</code></div><div class="line number45 index44 alt2"><code class="js spaces"> </code><code class="js plain">{ </code><code class="js string">"jsonrpc"</code><code class="js plain">: </code><code class="js string">"2.0"</code><code class="js plain">, </code><code class="js string">"method"</code><code class="js plain">: </code><code class="js string">"AudioLibrary.GetAlbums"</code><code class="js plain">, </code><code class="js string">"params"</code><code class="js plain">: { </code><code class="js string">"genreid"</code><code class="js plain">: -1,</code></div><div class="line number46 index45 alt1"><code class="js spaces"> </code><code class="js string">"artistid"</code><code class="js plain">: -1, </code><code class="js string">"start"</code><code class="js plain">: -1, </code><code class="js string">"end"</code><code class="js plain">: -1 }, </code><code class="js string">"id"</code><code class="js plain">: </code><code class="js string">"1"</code> <code class="js plain">}</code></div><div class="line number47 index46 alt2"><code class="js spaces"> </code><code class="js plain">];</code></div><div class="line number48 index47 alt1"> </div><div class="line number49 index48 alt2"><code class="js spaces"> </code><code class="js plain">svcXhr.send(JSON.stringify(svcMsg));</code></div><div class="line number50 index49 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" request sent: "</code><code class="js plain">;</code></div><div class="line number51 index50 alt2"><code class="js spaces"> </code><code class="js plain">debug.textContent += JSON.stringify(svcMsg);</code></div><div class="line number52 index51 alt1"> </div><div class="line number53 index52 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number54 index53 alt1"> </div><div class="line number55 index54 alt2"><code class="js spaces"> </code><code class="js keyword">function</code> <code class="js plain">error( err ) {</code></div><div class="line number56 index55 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>An error occurred obtaining a local network service."</code><code class="js plain">;</code></div><div class="line number57 index56 alt2"><code class="js spaces"> </code><code class="js plain">startBtn.disabled = </code><code class="js keyword">false</code><code class="js plain">;</code></div><div class="line number58 index57 alt1"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number59 index58 alt2"><code class="js plain"></script></code></div></div></td></tr></tbody></table></div></div>
+ </div>
+
+ <div class="example">
+ <p>
+ This sample exposes a drop-down list containing a number of common Home-based audio devices. When the user selects an audio device from the list provided, they are prompted to authorize a network service
+ based on the service type requested. The user may also select multiple network services matching the selected service type.
+ In this example, the user selects their make as being <var>Sony</var> and their model as being <var>Bravia S1000</var> from which the Web page can derive a service type
+ (<var>urn:schemas-upnp-org:service:RenderingControl:1</var>).
+ <br><br>Once the user has authorized the device, the web page sends a simple mute command according to the messaging format supported by the device.
+ </p>
+ <hr>
+ <div><div id="highlighter_978421" class="syntaxhighlighter nogutter js"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="js plain"><select name=</code><code class="js string">"make"</code> <code class="js plain">id=</code><code class="js string">"make"</code><code class="js plain">></code></div><div class="line number2 index1 alt1"><code class="js spaces"> </code><code class="js plain"><option selected=</code><code class="js string">"selected"</code> <code class="js plain">disabled=</code><code class="js string">"disabled"</code><code class="js plain">>Select make</option></code></div><div class="line number3 index2 alt2"><code class="js spaces"> </code><code class="js plain"><option>Sony</option></code></div><div class="line number4 index3 alt1"><code class="js spaces"> </code><code class="js plain"><option>Philips</option></code></div><div class="line number5 index4 alt2"><code class="js spaces"> </code><code class="js plain"><option>Alba</option></code></div><div class="line number6 index5 alt1"><code class="js plain"></select></code></div><div class="line number7 index6 alt2"><code class="js plain"><select name=</code><code class="js string">"model"</code> <code class="js plain">id=</code><code class="js string">"model"</code><code class="js plain">></select></code></div><div class="line number8 index7 alt1"><code class="js plain"><div id=</code><code class="js string">"debugconsole"</code><code class="js plain">></div></code></div><div class="line number9 index8 alt2"> </div><div class="line number10 index9 alt1"><code class="js plain"><script></code></div><div class="line number11 index10 alt2"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">debug = document.getElementById(</code><code class="js string">'debugconsole'</code><code class="js plain">);</code></div><div class="line number12 index11 alt1"> </div><div class="line number13 index12 alt2"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">models = {</code></div><div class="line number14 index13 alt1"><code class="js spaces"> </code><code class="js string">"Sony"</code><code class="js plain">: [</code></div><div class="line number15 index14 alt2"><code class="js spaces"> </code><code class="js plain">{</code><code class="js string">"name"</code><code class="js plain">: </code><code class="js string">"Bravia TV S1000"</code><code class="js plain">, </code><code class="js string">"type"</code><code class="js plain">: </code><code class="js string">"upnp"</code><code class="js plain">, </code><code class="js string">"service"</code><code class="js plain">: </code><code class="js string">"urn:schemas-upnp-org:service:RenderingControl:1"</code> <code class="js plain">},</code></div><div class="line number16 index15 alt1"><code class="js spaces"> </code><code class="js plain">{</code><code class="js string">"name"</code><code class="js plain">: </code><code class="js string">"Bravia TV S2000"</code><code class="js plain">, </code><code class="js string">"type"</code><code class="js plain">: </code><code class="js string">"zeroconf"</code><code class="js plain">, </code><code class="js string">"service"</code><code class="js plain">: </code><code class="js string">"_mediarenderer._http._tcp"</code> <code class="js plain">},</code></div><div class="line number17 index16 alt2"><code class="js spaces"> </code><code class="js plain">{</code><code class="js string">"name"</code><code class="js plain">: </code><code class="js string">"HiFi WD10"</code><code class="js plain">, </code><code class="js string">"type"</code><code class="js plain">: </code><code class="js string">"upnp"</code><code class="js plain">, </code><code class="js string">"service"</code><code class="js plain">: </code><code class="js string">"urn:schemas-upnp-org:service:RenderingControl:1"</code> <code class="js plain">}</code></div><div class="line number18 index17 alt1"><code class="js spaces"> </code><code class="js plain">],</code></div><div class="line number19 index18 alt2"><code class="js spaces"> </code><code class="js string">"Philips"</code><code class="js plain">: [ </code><code class="js comments">/* ... */</code> <code class="js plain">],</code></div><div class="line number20 index19 alt1"><code class="js spaces"> </code><code class="js string">"Alba"</code><code class="js plain">: [ </code><code class="js comments">/* ... */</code> <code class="js plain">]</code></div><div class="line number21 index20 alt2"><code class="js spaces"> </code><code class="js plain">};</code></div><div class="line number22 index21 alt1"> </div><div class="line number23 index22 alt2"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">makeEl = document.getElementById(</code><code class="js string">"make"</code><code class="js plain">),</code></div><div class="line number24 index23 alt1"><code class="js spaces"> </code><code class="js plain">modelEl = document.getElementById(</code><code class="js string">"model"</code><code class="js plain">);</code></div><div class="line number25 index24 alt2"> </div><div class="line number26 index25 alt1"><code class="js spaces"> </code><code class="js plain">makeEl.addEventListener(</code><code class="js string">'change'</code><code class="js plain">, </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number27 index26 alt2"><code class="js spaces"> </code><code class="js plain">modelEl.innerHTML = </code><code class="js string">""</code><code class="js plain">; </code><code class="js comments">// reset</code></div><div class="line number28 index27 alt1"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">defaultOption = document.createElement(</code><code class="js string">"option"</code><code class="js plain">);</code></div><div class="line number29 index28 alt2"><code class="js spaces"> </code><code class="js plain">defaultOption.textContent = </code><code class="js string">"Select model"</code><code class="js plain">;</code></div><div class="line number30 index29 alt1"><code class="js spaces"> </code><code class="js plain">defaultOption.setAttribute(</code><code class="js string">"disabled"</code><code class="js plain">, </code><code class="js string">"disabled"</code><code class="js plain">);</code></div><div class="line number31 index30 alt2"><code class="js spaces"> </code><code class="js plain">defaultOption.setAttribute(</code><code class="js string">"selected"</code><code class="js plain">, </code><code class="js string">"selected"</code><code class="js plain">);</code></div><div class="line number32 index31 alt1"><code class="js spaces"> </code><code class="js plain">modelEl.appendChild(defaultOption);</code></div><div class="line number33 index32 alt2"><code class="js spaces"> </code><code class="js keyword">for</code><code class="js plain">(</code><code class="js keyword">var</code> <code class="js plain">i = 0, l = models[makeEl.value].length; i < l; i++) {</code></div><div class="line number34 index33 alt1"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">option = document.createElement(</code><code class="js string">"option"</code><code class="js plain">);</code></div><div class="line number35 index34 alt2"><code class="js spaces"> </code><code class="js plain">option.textContent = models[makeEl.value][i][</code><code class="js string">"name"</code><code class="js plain">];</code></div><div class="line number36 index35 alt1"><code class="js spaces"> </code><code class="js plain">option.setAttribute(</code><code class="js string">"value"</code><code class="js plain">, models[makeEl.value][i][</code><code class="js string">"type"</code><code class="js plain">] + </code><code class="js string">":"</code> <code class="js plain">+ models[makeEl.value][i][</code><code class="js string">"service"</code><code class="js plain">]);</code></div><div class="line number37 index36 alt2"><code class="js spaces"> </code><code class="js plain">modelEl.appendChild(option);</code></div><div class="line number38 index37 alt1"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number39 index38 alt2"><code class="js spaces"> </code><code class="js plain">}, </code><code class="js keyword">false</code><code class="js plain">);</code></div><div class="line number40 index39 alt1"> </div><div class="line number41 index40 alt2"><code class="js spaces"> </code><code class="js plain">modelEl.addEventListener(</code><code class="js string">'change'</code><code class="js plain">, </code><code class="js keyword">function</code><code class="js plain">() {</code></div><div class="line number42 index41 alt1"><code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">(navigator.getNetworkServices &&</code></div><div class="line number43 index42 alt2"><code class="js spaces"> </code><code class="js plain">modelEl.value == </code><code class="js string">"upnp:urn:schemas-upnp-org:service:RenderingControl:1"</code><code class="js plain">) {</code></div><div class="line number44 index43 alt1"><code class="js spaces"> </code><code class="js plain">navigator.getNetworkServices(modelEl.value, successCallback, errorCallback);</code></div><div class="line number45 index44 alt2"><code class="js spaces"> </code><code class="js plain">} </code><code class="js keyword">else</code> <code class="js keyword">if</code> <code class="js plain">(modelEl.value == </code><code class="js string">"zeroconf:_mediarenderer._http._tcp"</code><code class="js plain">) {</code></div><div class="line number46 index45 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>Service type is not implemented by this application."</code><code class="js plain">;</code></div><div class="line number47 index46 alt2"><code class="js spaces"> </code><code class="js plain">} </code><code class="js keyword">else</code> <code class="js plain">{</code></div><div class="line number48 index47 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>Service Discovery is not supported!"</code><code class="js plain">;</code></div><div class="line number49 index48 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number50 index49 alt1"><code class="js spaces"> </code><code class="js plain">}, </code><code class="js keyword">false</code><code class="js plain">);</code></div><div class="line number51 index50 alt2"><code class="js plain"></script></code></div><div class="line number52 index51 alt1"> </div><div class="line number53 index52 alt2"><code class="js plain"><script></code></div><div class="line number54 index53 alt1"><code class="js spaces"> </code><code class="js keyword">function</code> <code class="js plain">successCallback( services ) {</code></div><div class="line number55 index54 alt2"> </div><div class="line number56 index55 alt1"><code class="js spaces"> </code><code class="js comments">// Listen for service push messages</code></div><div class="line number57 index56 alt2"> </div><div class="line number58 index57 alt1"><code class="js spaces"> </code><code class="js plain">services[0].addEventListener(</code><code class="js string">'message'</code><code class="js plain">, </code><code class="js keyword">function</code> <code class="js plain">( msg ) {</code></div><div class="line number59 index58 alt2"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" event received: "</code><code class="js plain">;</code></div><div class="line number60 index59 alt1"><code class="js spaces"> </code><code class="js plain">debug.textContent += msg.data;</code></div><div class="line number61 index60 alt2"><code class="js spaces"> </code><code class="js plain">}, </code><code class="js keyword">false</code><code class="js plain">);</code></div><div class="line number62 index61 alt1"> </div><div class="line number63 index62 alt2"><code class="js spaces"> </code><code class="js comments">// Send a control signal to mute the service audio</code></div><div class="line number64 index63 alt1"> </div><div class="line number65 index64 alt2"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">svcXhr = </code><code class="js keyword">new</code> <code class="js plain">XMLHttpRequest();</code></div><div class="line number66 index65 alt1"><code class="js spaces"> </code><code class="js plain">svcXhr.open(</code><code class="js string">"POST"</code><code class="js plain">, services[0].url); </code><code class="js comments">// services[0].url and its</code></div><div class="line number67 index66 alt2"><code class="js spaces"> </code><code class="js comments">// subresources have been whitelisted for</code></div><div class="line number68 index67 alt1"><code class="js spaces"> </code><code class="js comments">// cross-site XHR use in this current</code></div><div class="line number69 index68 alt2"><code class="js spaces"> </code><code class="js comments">// browsing context.</code></div><div class="line number70 index69 alt1"> </div><div class="line number71 index70 alt2"><code class="js spaces"> </code><code class="js plain">svcXhr.setRequestHeader(</code><code class="js string">'SOAPAction'</code><code class="js plain">, </code><code class="js string">'urn:schemas-upnp-org:service:RenderingControl:1#SetMute'</code><code class="js plain">);</code></div><div class="line number72 index71 alt1"><code class="js spaces"> </code><code class="js plain">svcXhr.setRequestHeader(</code><code class="js string">'Content-Type'</code><code class="js plain">, </code><code class="js string">'text/xml; charset="utf-8";'</code><code class="js plain">);</code></div><div class="line number73 index72 alt2"> </div><div class="line number74 index73 alt1"><code class="js spaces"> </code><code class="js plain">svcXhr.onreadystatechange = </code><code class="js keyword">function</code> <code class="js plain">( response ) {</code></div><div class="line number75 index74 alt2"><code class="js spaces"> </code><code class="js keyword">if</code><code class="js plain">( response.readyState != 4 || response.status != 200 )</code></div><div class="line number76 index75 alt1"><code class="js spaces"> </code><code class="js keyword">return</code><code class="js plain">;</code></div><div class="line number77 index76 alt2"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" response received: "</code><code class="js plain">;</code></div><div class="line number78 index77 alt1"><code class="js spaces"> </code><code class="js plain">debug.textContent += response.responseXML;</code></div><div class="line number79 index78 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number80 index79 alt1"> </div><div class="line number81 index80 alt2"><code class="js spaces"> </code><code class="js comments">// Service messaging to mute the provided service</code></div><div class="line number82 index81 alt1"><code class="js spaces"> </code><code class="js keyword">var</code> <code class="js plain">svcMsg = </code><code class="js string">'<?xml version="1.0" encoding="utf-8"?>'</code> <code class="js plain">+</code></div><div class="line number83 index82 alt2"><code class="js spaces"> </code><code class="js string">'<s:Envelope s:encodingStyle="<a href="http://schemas.xmlsoap.org/soap/encoding/">http://schemas.xmlsoap.org/soap/encoding/</a>" '</code> <code class="js plain">+</code></div><div class="line number84 index83 alt1"><code class="js spaces"> </code><code class="js string">'xmlns:s="<a href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>">'</code> <code class="js plain">+</code></div><div class="line number85 index84 alt2"><code class="js spaces"> </code><code class="js string">'<s:Body>'</code> <code class="js plain">+</code></div><div class="line number86 index85 alt1"><code class="js spaces"> </code><code class="js string">'<u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">'</code> <code class="js plain">+</code></div><div class="line number87 index86 alt2"><code class="js spaces"> </code><code class="js string">'<InstanceID>0</InstanceID>'</code> <code class="js plain">+</code></div><div class="line number88 index87 alt1"><code class="js spaces"> </code><code class="js string">'<Channel>Master</Channel>'</code> <code class="js plain">+</code></div><div class="line number89 index88 alt2"><code class="js spaces"> </code><code class="js string">'<DesiredMute>true</DesiredMute>'</code> <code class="js plain">+</code></div><div class="line number90 index89 alt1"><code class="js spaces"> </code><code class="js string">'</u:SetMute>'</code> <code class="js plain">+</code></div><div class="line number91 index90 alt2"><code class="js spaces"> </code><code class="js string">'</s:Body>'</code> <code class="js plain">+</code></div><div class="line number92 index91 alt1"><code class="js spaces"> </code><code class="js string">'</s:Envelope>'</code><code class="js plain">;</code></div><div class="line number93 index92 alt2"> </div><div class="line number94 index93 alt1"><code class="js spaces"> </code><code class="js plain">svcXhr.send(svcMsg);</code></div><div class="line number95 index94 alt2"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>"</code> <code class="js plain">+ services[0].name + </code><code class="js string">" request sent: "</code><code class="js plain">;</code></div><div class="line number96 index95 alt1"><code class="js spaces"> </code><code class="js plain">debug.textContent += svcMsg;</code></div><div class="line number97 index96 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number98 index97 alt1"> </div><div class="line number99 index98 alt2"><code class="js spaces"> </code><code class="js keyword">function</code> <code class="js plain">errorCallback( error ) {</code></div><div class="line number100 index99 alt1"><code class="js spaces"> </code><code class="js plain">debug.innerHTML += </code><code class="js string">"<br>An error occurred: "</code> <code class="js plain">+ error.code;</code></div><div class="line number101 index100 alt2"><code class="js spaces"> </code><code class="js plain">}</code></div><div class="line number102 index101 alt1"><code class="js plain"></script></code></div></div></td></tr></tbody></table></div></div>
+ </div>
+
+ </div>
+
+ <div id="acknowledgements" about="#acknowledgements" typeof="bibo:Chapter" class="section">
+ <!--OddPage--><h2><span class="secno">B. </span>Acknowledgements</h2>
+
+ <p>Thanks are expressed by the editor to the following individuals for their feedback on this specification to date (in alphabetical order):
+ <br><br>
+ Gar Bergstedt, Lars-Erik Bolstad, Hari G Kumar, Bob Lund, Giuseppe Pascale, Marcin Simonides, Clarke Stevens, Christian Söderström, Mark Vickers, ...</p>
+
+ <p>Thanks are also expressed by the editor to the following organizations and groups for their support in producing this specification to date (in alphabetical order):
+ <br><br>
+ CableLabs, Opera Software ASA, W3C Device APIs Working Group, W3C Web and TV Interest Group, ...</p>
+ </div>
+
+
+
+
+
+<div id="references" class="appendix section" about="#references" typeof="bibo:Chapter"><!--OddPage--><h2><span class="secno">C. </span>References</h2><section id="normative-references" about="#normative-references" typeof="bibo:Chapter"><h3><span class="secno">C.1 </span>Normative references</h3><dl class="bibliography" about=""><dt id="bib-DNS-SD">[DNS-SD]</dt><dd rel="dc:requires">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></dd><dt id="bib-DOM-CORE">[DOM-CORE]</dt><dd rel="dc:requires">Anne van Kesteren; et al. <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html/"><cite>Web DOM Core</cite></a>. W3C Working Draft. (Work in progress.) 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> </dd><dt id="bib-HTML5">[HTML5]</dt><dd rel="dc:requires">Ian Hickson; David Hyatt. <a href="http://www.w3.org/TR/2010/WD-html5-20100304/"><cite>HTML 5.</cite></a> 4 March 2010. W3C Working Draft. (Work in progress.) URL: <a href="http://www.w3.org/TR/2010/WD-html5-20100304/">http://www.w3.org/TR/2010/WD-html5-20100304/</a> </dd><dt id="bib-MDNS">[MDNS]</dt><dd rel="dc:requires">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></dd><dt id="bib-RFC2119">[RFC2119]</dt><dd rel="dc:requires">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> </dd><dt id="bib-UPNP">[UPNP]</dt><dd rel="dc:requires">UPnP Forum. <a href="http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf"><cite>UPnP Device Architecture. Version 1.1.</cite></a>. 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></dd><dt id="bib-WEBIDL">[WEBIDL]</dt><dd rel="dc:requires">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> </dd><dt id="bib-WEBMESSAGING">[WEBMESSAGING]</dt><dd rel="dc:requires">Ian Hickson. <cite><a href="http://dev.w3.org/html5/postmsg/">HTML5 Web Messaging</a></cite>. W3C Working Draft. (Work in progress.) URL: <a href="http://dev.w3.org/html5/postmsg/">http://dev.w3.org/html5/postmsg/</a> </dd><dt id="bib-ZEROCONF">[ZEROCONF]</dt><dd rel="dc:requires">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></dd></dl></section></div></body></html>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/Overview.src.html Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,1900 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Networked Service Discovery and Messaging</title>
+ <meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
+ <!-- This spec has been compiled with ReSpec v2 -->
+ <script type="text/javascript" class='remove'>
+ var respecConfig = {
+ specStatus: "unofficial",
+ shortName: "discovery",
+ edDraftURI: "http://dev.w3.org/2009/dap/discovery/",
+ editors: [
+ { name: "Rich Tibbett",
+ //url: "http://richt.me/",
+ company: "Opera Software ASA",
+ companyURL: "http://opera.com/" },
+ { name: "Clarke Stevens",
+ //url: "",
+ company: "CableLabs",
+ companyURL: "http://cablelabs.com/"
+ }
+ ],
+ //extraCSS: ["./css/respec2.css"],
+ noIDLIn: true,
+
+ wg: "Device APIs and Policy Working Group",
+ wgURI: "http://www.w3.org/2009/dap/",
+ wgPublicList: "public-device-apis",
+ wgPatentURI: "http://www.w3.org/2004/01/pp-impl/43696/status",
+ };
+ </script>
+
+ <style type="text/css">
+ /**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+ .syntaxhighlighter a,
+ .syntaxhighlighter div,
+ .syntaxhighlighter code,
+ .syntaxhighlighter table,
+ .syntaxhighlighter table td,
+ .syntaxhighlighter table tr,
+ .syntaxhighlighter table tbody,
+ .syntaxhighlighter table thead,
+ .syntaxhighlighter table caption,
+ .syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+ }
+
+ .syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 0.8em !important;
+ }
+ .syntaxhighlighter.source {
+ overflow: hidden !important;
+ }
+ .syntaxhighlighter .bold {
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter .italic {
+ font-style: italic !important;
+ }
+ .syntaxhighlighter .line {
+ white-space: pre !important;
+ }
+ .syntaxhighlighter table {
+ width: 100% !important;
+ }
+ .syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+ }
+ .syntaxhighlighter table td.code {
+ width: 100% !important;
+ }
+ .syntaxhighlighter table td.code .container {
+ position: relative !important;
+ }
+ .syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+ }
+ .syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+ }
+ .syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+ }
+ .syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+ }
+ .syntaxhighlighter.show {
+ display: block !important;
+ }
+ .syntaxhighlighter.collapsed table {
+ display: none !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+ }
+ .syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+ }
+ .syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+ }
+ .syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+ }
+ .syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+ }
+ .syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+ }
+ .syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+ }
+ .syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+ }
+ .syntaxhighlighter.printing .line.alt1 .content,
+ .syntaxhighlighter.printing .line.alt2 .content,
+ .syntaxhighlighter.printing .line.highlighted .number,
+ .syntaxhighlighter.printing .line.highlighted.alt1 .content,
+ .syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+ }
+ .syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+ }
+ .syntaxhighlighter.printing .line .content {
+ color: black !important;
+ }
+ .syntaxhighlighter.printing .toolbar {
+ display: none !important;
+ }
+ .syntaxhighlighter.printing a {
+ text-decoration: none !important;
+ }
+ .syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+ }
+ .syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+ }
+ .syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+ }
+ .syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+ }
+ .syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+ }
+ .syntaxhighlighter.printing .value {
+ color: #009900 !important;
+ }
+ .syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+ }
+ .syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+ }
+ .syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+ }
+ .syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+ }
+ .syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+ }
+ </style>
+ <style type="text/css">
+ /**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+ .syntaxhighlighter {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.alt1 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.alt2 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: none !important;
+ }
+ .syntaxhighlighter .line.highlighted.number {
+ color: black !important;
+ }
+ .syntaxhighlighter table caption {
+ color: black !important;
+ }
+ .syntaxhighlighter .gutter {
+ color: #afafaf !important;
+ }
+ .syntaxhighlighter .gutter .line {
+ border-right: 3px solid #6ce26c !important;
+ }
+ .syntaxhighlighter .gutter .line.highlighted {
+ background-color: #6ce26c !important;
+ color: white !important;
+ }
+ .syntaxhighlighter.printing .line .content {
+ border: none !important;
+ }
+ .syntaxhighlighter.collapsed {
+ overflow: visible !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar {
+ color: blue !important;
+ background: none !important;
+ border: 1px solid #6ce26c !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar a {
+ color: blue !important;
+ }
+ .syntaxhighlighter.collapsed .toolbar a:hover {
+ color: red !important;
+ }
+ .syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #6ce26c !important;
+ border: none !important;
+ }
+ .syntaxhighlighter .toolbar a {
+ color: white !important;
+ }
+ .syntaxhighlighter .toolbar a:hover {
+ color: black !important;
+ }
+ .syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+ }
+ .syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #008200 !important;
+ }
+ .syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: blue !important;
+ }
+ .syntaxhighlighter .keyword {
+ color: #006699 !important;
+ }
+ .syntaxhighlighter .preprocessor {
+ color: gray !important;
+ }
+ .syntaxhighlighter .variable {
+ color: #aa7700 !important;
+ }
+ .syntaxhighlighter .value {
+ color: #009900 !important;
+ }
+ .syntaxhighlighter .functions {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter .constants {
+ color: #0066cc !important;
+ }
+ .syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #006699 !important;
+ background-color: none !important;
+ }
+ .syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+ }
+ .syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+ }
+ .syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+ }
+
+ .syntaxhighlighter .keyword {
+ font-weight: bold !important;
+ }
+ </style>
+ <script src="tools/syntaxhighlighter/js/shCore.js" type="text/javascript" class='remove'></script>
+ <script src="tools/syntaxhighlighter/js/shAutoloader.js" type="text/javascript" class='remove'></script>
+ <script src="tools/syntaxhighlighter/js/shBrushXml.js" type="text/javascript" class='remove'></script>
+ <script src="tools/syntaxhighlighter/js/shBrushJScript.js" type="text/javascript" class='remove'></script>
+
+ <script src='./js/profiles/w3c-common-loader.js' type="text/javascript" class='remove'></script>
+ <style type="text/css">
+ /* Custom CSS optimizations (Richard Tibbett) */
+
+ /* Add better spacing to sections */
+ section, .section { margin-bottom: 2em; }
+
+ /* Reduce note & issue render size */
+ .note, .issue { font-size:0.8em; }
+
+ /* Add addition spacing to <ol> and <ul> for rule definition */
+ ol.rule li, ul.rule li { padding:0.6em; }
+
+ pre.widl { border: solid thin; background: #EEEEEE; color: black; padding: 0.5em 1em; position: relative; }
+ pre.widl :link, pre.widl :visited { color: #000; background: transparent; }
+ pre.widl:before { content: "IDL"; font: bold small sans-serif; padding: 0.5em; background: white; position: absolute; top: 0; margin: -1px 0 0 -4em; width: 1.5em; border: thin solid; border-radius: 0 0 0 0.5em }
+
+ div.example { border: solid thin red; background: #F7DFE5; color: black; padding: 0.5em 1em; position: relative; margin: 1em 0 1em 4.6em; width: auto; }
+ div.example:before { content: "EXAMPLE"; font: bold small sans-serif; padding: 0.5em; background: red; color: white; position: absolute; top: 0; margin: -1px 0 0 -7.6em; width: 5em; border: thin solid red; border-radius: 0 0 0 0.5em }
+
+ 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.domintro code {font-size: inherit; font-style: italic; }
+ dl.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: red; border: solid 2px; background: white; padding: 0 0.25em; }
+ </style>
+ </head>
+
+ <body>
+ <section id='abstract'>
+ <p>
+ This specification defines a mechanism for an HTML document to discover and subsequently communicate with <acronym title="Hypertext Transfer Protocol">HTTP</acronym>-based services
+ advertised via common discovery protocols within a user's network.
+ </p>
+ </section>
+
+ <section id='sotd'>
+ <p>
+ This document represents the early consensus of the group on the scope and features of the proposed
+ API.
+ </p>
+ </section>
+
+ <section class="informative">
+ <h3>Introduction</h3>
+
+ <p>To enable Web pages to connect and communicate with Local-networked Services provided over HTTP, this specification introduces the
+ <a href="#navigatornetworkservice"><code>NavigatorNetworkService</code></a> interface.</p>
+
+ <p>
+ Using this <acronym title="Application Programming Interface">API</acronym> consists of requesting a well-known service type, known by developers and advertised by Local-networked Devices. User authorization, where the user connects the web page to one or more discovered services,
+ is expected before the web page is able to interact with any Local-networked Services.
+ </p>
+
+ <p>
+ A web page creates a request to obtain connectivity to services running in the network by specifying a well-known discovery service type that it wishes to interact with.
+ </p>
+
+ <p>
+ The user agent, having captured all advertised services on the network from the Service Discovery mechanisms included in this recommendation, attempts to match
+ the requested service type to a discovered service according to the processing described herein.
+ </p>
+
+ <p>
+ If a service connectivity request is successful then the Web page is provided with the necessary information to communicate with the authorized Local-networked Service.
+ If the request fails then the Web page will receive an error callback containing an error code describing the cause of Local-networked Service connectivity failure.
+ </p>
+
+ <p>
+ Once connected to a Local-networked Service the Web page can send requests and receive responses to the Local-networked Service via the messaging format and appropriate channel inferred from the service type
+ authorized via the provided API.
+ The Web page, once connected, can also receive service-pushed events, in the messaging format supported by the Local-networked Device, if such event subscription functionality is provided by the
+ connected Local-networked Service.
+ </p>
+
+ <div class="example">
+ <p>Example of requesting a DNS-SD advertised service:</p>
+ <hr />
+ <pre class="brush:js">function showServices( services ) {
+ // Show a list of all the services provided to the web page
+ for(var i = 0, l = services.length; i < l; i++) console.log( services[i].name );
+}
+
+navigator.getNetworkServices('zeroconf:_boxee-jsonrpc._tcp', showServices);</pre>
+ </div>
+
+ <div class="example">
+ <p>Example of requesting a UPnP advertised service, also handling error conditions:</p>
+ <hr />
+ <pre class="brush:js">function showServices( services ) {
+ // Show a list of all the services provided to the web page
+ for(var i = 0, l = services.length; i < l; i++) console.log( services[i].name );
+}
+
+function error( e ) {
+ console.log( "Error occurred: " + e.code );
+}
+
+navigator.getNetworkServices('upnp:urn:schemas-upnp-org:service:ContentDirectory:1', showServices, error);</pre>
+ </div>
+
+ <div class="example">
+ <p>Example of requesting either a DNS-SD or UPnP advertised service:</p>
+ <hr />
+ <pre class="brush:js">function showServices( services ) {
+ // Show a list of all the services provided to the web page (+ service type)
+ for(var i = 0, l = services.length; i < l; i++)
+ console.log( services[i].name + '(' + services[i].type + ')' );
+}
+
+navigator.getNetworkServices([
+ 'zeroconf:_boxee-jsonrpc._tcp',
+ 'upnp:urn:schemas-upnp-org:service:ContentDirectory:1'
+], showServices);</pre>
+ </div>
+
+ <p>For more detailed examples see the <a href="#examples">Examples</a> section.
+ </section>
+
+ <section
+ id='conformance'>
+
+ <p>Requirements phrased in the imperative as part of algorithms (such as "strip any leading space characters" or "return false and abort these steps") are to be interpreted with the
+ meaning of the key word ("must", "should", "may", etc) used in introducing the algorithm.</p>
+
+ <p>
+ Some conformance requirements are phrased as requirements on attributes, methods or objects. Such requirements are to be interpreted as requirements on user agents.
+ </p>
+
+ <p>
+ Conformance requirements phrased as algorithms or specific steps may be implemented in any manner, so long as the end result is equivalent. (In particular, the algorithms defined in
+ this specification are intended to be easy to follow, and not intended to be performant.)
+ </p>
+
+ <p>
+ The only conformance class defined by this specification is a <dfn>user agent</dfn>.
+ </p>
+
+ <p>
+ User agents may impose implementation-specific limits on otherwise unconstrained inputs, e.g. to prevent denial of service attacks, to guard against running out of memory, or to work
+ around platform-specific limitations.
+ </p>
+
+ <p>
+ When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid in development, or for performance reasons), user agents must act as if
+ they had no support for the feature whatsoever, and as if the feature was not mentioned in this specification. For example, if a particular feature is accessed via an attribute in a Web
+ IDL interface, the attribute itself would be omitted from the objects that implement that interface - leaving the attribute on the object but making it return null or throw an exception
+ is insufficient.
+ </p>
+
+ <section>
+ <h3>Dependencies</h3>
+
+ This specification relies on several other underlying specifications.
+
+ <dl>
+ <dt>HTML</dt>
+ <dd>Many fundamental concepts from HTML are used by this specification. [[!HTML5]]</dd>
+ <dt>WebIDL</dt>
+ <dd>The IDL blocks in this specification use the semantics of the WebIDL specification. [[!WEBIDL]]</dd>
+ </dl>
+ </section>
+ </section>
+
+ <section>
+ <h3>Terminology</h3>
+
+ <p>
+ The construction "a <code>Foo</code> object", where <code>Foo</code> is actually an interface, is sometimes used instead of the more accurate "an object implementing the interface <code>Foo</code>".
+ </p>
+
+ <p>
+ The term DOM is used to refer to the API set made available to scripts in Web applications, and does not necessarily imply the existence of an actual <code>Document</code> object or of any
+ other <code>Node</code> objects as defined in the DOM Core specifications. [[!DOM-CORE]]
+ </p>
+
+ <p>
+ An IDL attribute is said to be <em>getting</em> when its value is being retrieved (e.g. by author script), and is said to be <em>setting</em> when a new value is assigned to it.
+ </p>
+
+ <p>
+ A <dfn>valid service type</dfn> is a string that begins with <code>upnp:</code> or <code>zeroconf:</code> followed by one or more characters in the ranges U+0021, U+0023 to U+0027, U+002A to U+002B, U+002D to U+002E, U+0030 to U+0039, U+0041 to U+005A, U+005E to U+007E.
+ </p>
+
+ <p>
+ A <a>valid service type</a> provided in the <code>type</code> attribute of the <code>getNetworkServices()</code> method will be matched against the services currently contained in the <a>list of available service records</a> according to the algorithms defined in this specification.
+ </p>
+ </section>
+
+ <section>
+ <h2>Requesting networked services</h2>
+
+
+<pre class="widl">[Supplemental, NoInterfaceObject]
+interface <dfn id="navigatornetworkservice">NavigatorNetworkService</dfn> {
+ // Obtain a Local-networked Service
+ void <a href="#dom-navigator-getnetworkservices">getNetworkServices</a>( in any type,
+ in <a href="#navigatornetworkservicesuccesscallback">NavigatorNetworkServiceSuccessCallback</a> successCallback,
+ in optional <a href="#navigatornetworkserviceerrorcallback">NavigatorNetworkServiceErrorCallback</a> errorCallback );
+};
+<a class="externalDFN" href="http://www.whatwg.org/specs/web-apps/current-work/complete/timers.html#navigator">Navigator</a> implements <a href="#navigatornetworkservice">NavigatorNetworkService</a>;
+
+[Callback=FunctionOnly, NoInterfaceObject]
+interface <dfn id="navigatornetworkservicesuccesscallback">NavigatorNetworkServiceSuccessCallback</dfn> {
+ void handleEvent( in <a href="#networkservices">NetworkServices</a> services );
+};
+
+[NoInterfaceObject]
+interface <dfn id="navigatornetworkserviceerror">NavigatorNetworkServiceError</dfn> {
+ const unsigned short <a href="#dom-navigatornetworkserviceerror-permission_denied">PERMISSION_DENIED_ERR</a> = 1;
+ const unsigned short <a href="#dom-navigatornetworkserviceerror-unknown_type_prefix">UNKNOWN_TYPE_PREFIX_ERR</a> = 2;
+ readonly attribute unsigned short <a href="#dom-navigatornetworkserviceerror-code">code</a>;
+};
+
+[Callback=FunctionOnly, NoInterfaceObject]
+interface <dfn id="navigatornetworkserviceerrorcallback">NavigatorNetworkServiceErrorCallback</dfn> {
+ void handleEvent( in <a href="#navigatornetworkserviceerror">NavigatorNetworkServiceError</a> error );
+};
+</pre>
+
+ <section>
+ <h2>Methods</h2>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">window</var>
+ .
+ <code title="dom-navigator">
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/timers.html#navigator">navigator</a>
+ </code>
+ .
+ <code title="dom-navigator-getNetworkServices">
+ <a href="#dom-navigator-getnetworkservices">getNetworkServices</a>
+ </code>
+ (
+ <var title="">type</var>
+ ,
+ <var title="">successCallback</var>
+ [,
+ <var title="">errorCallback</var>
+ ] )
+ </dt>
+ <dd>
+ <p>Prompts the user to select one or more discovered network services that have advertised support for the requested service type.</p>
+ <p>
+ The
+ <var title="">type</var>
+ argument contains one or more <a>valid service type</a> tokens that the web page would like to interact with.
+ </p>
+ <p>
+ If the user accepts, the
+ <var title="">successCallback</var>
+ is
+ invoked, with one or more
+ <code>
+ <a href="#networkservice"><code>NetworkService</code></a>
+ </code>
+ objects as
+ its argument.
+ </p>
+ <p>
+ If the user declines, the
+ <var title="">errorCallback</var>
+ (if
+ any) is invoked.
+ </p>
+ </dd>
+ </dl>
+
+ <div>
+ <p>
+ When the <dfn id="dom-navigator-getnetworkservices" title="dom-navigator-getnetworkservices"><code>getNetworkServices(type, successCallback[, errorCallback])</code></dfn> method is called, the <a>user agent</a> MUST run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ If <var>successCallback</var> is empty or is not an object of type <code>Function</code> then the <a>user agent</a> MUST abort these steps.
+ </li>
+
+ <li>
+ Let <var>requested control types</var> be initially set to an empty array.
+ </li>
+
+ <li>
+ If <var>type</var> is an array consisting of one or more <a>valid service type</a> tokens, then let <var>requested control types</var> by the value of <var>type</var>, removing any non-<a>valid service type</a> tokens from the resulting array.
+ </li>
+
+ <li>
+ If <var>type</var> is a string consisting of one <a>valid service type</a> token, then let <var>requested control types</var> be an array containing one item with a value of <var>type</var>.
+ </li>
+
+ <li>
+ If <var>requested control types</var> is an array that contains at least one or more <a title="valid service type">valid service type</a> tokens then continue to the step labeled <em>process</em> below. Otherwise, the <a>user agent</a> MUST <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 2
+ (<a href="#dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></a>) as its argument,
+ abort any remaining steps and return.
+ </li>
+
+ <li>
+ <em>Process</em>: Let <var>services found</var> be an empty array.
+ </li>
+
+ <li>
+ For each <var>available service</var> in the <a>list of available service records</a> run the following steps:
+ <ol class="rule">
+ <li>
+ For each <var>requested control type</var> in <var>requested control types</var>: If <var>available service</var>'s <code>type</code> attribute equals the <var>requested control type</var> then let <var>matched service</var> equal the value of <var>available service</var> and continue at the step labeled <var>attach</var> below.
+ </li>
+ <li>
+ Continue at the next <var>available service</var>.
+ </li>
+ <li>
+ <em>Attach</em>: If <var>matched service</var> is not empty then run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>new service object</var> be a new <a href="#networkservice"><code>NetworkService</code></a> object, mapping the parameters of
+ <var>matched service</var> to this new object where possible.
+ </li>
+ <li>
+ Append <var>new service object</var> to the <var>services found</var> array.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ If <var>services found</var> is an empty array, then the <a>user agent</a> MUST <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </li>
+
+ <li>
+ Return, and run the remaining steps asynchronously.
+ </li>
+
+ <li>
+ Optionally, e.g. based on a previously-established user preference, for security reasons, or due to platform limitations, the <a>user agent</a> MAY <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </li>
+
+ <li>
+ The <a>user agent</a> MUST prompt the user in a user-agent-specific manner for permission to provide the
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script" class="externalDFN">entry script</a>'s
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin" class="externalDFN">origin</a> with an array of
+ <a href="#networkservice"><code>NetworkService</code></a> objects representing the user-authorized subset of <var>services found</var>.
+
+ <p>
+ If the user grants permission to access one or more networked services then the <a>user agent</a> SHOULD include an
+ "ongoing local-network communication" indicator.
+ </p>
+
+ <p>If the user denies permission, then the <a>user agent</a> MUST <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>errorCallback</var>, if it is provided and is an object of type <code>Function</code>, with a new <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object whose
+ <a href="#dom-navigatornetworkserviceerror-code"><code>code</code></a> attribute has the numeric value 1
+ (<a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a>) as its argument, abort any remaining steps and return.
+ </p>
+
+ <p>
+ If the user never responds, this algorithm stalls on this step.
+ </p>
+
+ </li>
+
+ <li>
+ Let <var>services</var> be the array of one or more <a href="#networkservice"><code>NetworkService</code></a> objects for which the user granted permission.
+ </li>
+
+ <li>
+ For each Object <var>service</var> in <var>services</var>, run the following substeps:
+
+ <ol class="rule">
+ <li>
+ Add the <var>service</var>'s <code>url</code> parameter to the <a>entry script origin's <acronym title="Uniform Resource Locator">URL</acronym> whitelist</a>.
+ </li>
+ <li>
+ If <var>service</var> was originally created from a UPnP discovery process and the <var>service</var>'s <code>eventsUrl</code> parameter is not empty then <a>setup a UPnP Events Subscription</a> for <var>service</var>.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Let <var>services manager</var> be a new <a href="#networkservices"><code>NetworkServices</code></a> object.
+ </li>
+
+ <li>
+ Set <var>services manager</var>'s <code>servicesAvailable</code> attribute to the length of <var>services</var>.
+ </li>
+
+ <li>
+ Store the set of <var>services</var> as <dfn id="current_authorized_services">current authorized services</dfn> internally against the newly created <var>services manager</var> object.
+ </li>
+
+ <li>
+ The <a>user agent</a> MUST <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">queue a task</a> to invoke <var>successCallback</var> with
+ <var>services manager</var> as its argument.
+ </li>
+
+ </ol>
+
+ <p>
+ The <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#task-source" class="externalDFN">task source</a> for these
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#concept-task" class="externalDFN">tasks</a> is the
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#user-interaction-task-source" class="externalDFN">user interaction task source</a>.
+ </p>
+
+ <p>
+ When a <a href="#networkservice"><code>NetworkService</code></a> object is provided to a Web page, the <a>user agent</a> MUST add the <code>url</code> property
+ to the <dfn>entry script origin's URL whitelist</dfn>. This list enables the
+ Web page to override and initiate cross-site resource requests towards these URLs, and any sub-resources of these URLs, within the current
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/browsers.html#entry-script" class="externalDFN">entry script</a>'s
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/origin-0.html#origin" class="externalDFN">origin</a> via various existing mechanisms (e.g. Web Sockets, Server-Sent Events,
+ Web Messaging, XMLHttpRequest).
+ </p>
+
+ <p>
+ If the user navigates away from the current browsing context, the <a>user agent</a> MUST remove all previously whitelisted urls from the <a>entry script origin's URL whitelist</a>.
+ There is no persistence to network service selections provided to a web page. It is not possible to access a previously white-listed networked service without the necessary user authorization in all of the following cases:
+ <ul>
+ <li>If the current script is reloaded at any point in the same or different window.</li>
+ <li>if the current script reinvokes the <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> method at any point in its execution.</li>
+ <li>If the user navigates forward or back in their history to reload the current page.</li>
+ <li>If a script is running in a different origin.</li>
+ </ul>
+ </p>
+
+ </div>
+ </section>
+
+ <section>
+ <h3>Error Handling</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">error</var>
+ .
+ <code title="dom-NavigatorNetworkServiceError-code">
+ <a href="#dom-navigatornetworkserviceerror-code">code</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current error's error code. At the current time, this may be <code>1</code> or <code>2</code>, for which the
+ corresponding error constants
+ <a href="#dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></a> and
+ <a href="#dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></a> are defined.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ The <dfn id="dom-navigatornetworkserviceerror-code" title="dom-navigatornetworkserviceerror-code"><code>code</code></dfn> attribute of a
+ <a href="#navigatornetworkserviceerror"><code>NavigatorNetworkServiceError</code></a> object MUST return the code for the error, which will be one of the following:
+ </p>
+
+ <dl>
+ <dt>
+ <dfn id="dom-navigatornetworkserviceerror-permission_denied" title="dom-navigatornetworkserviceerror-permission_denied"><code>PERMISSION_DENIED_ERR</code></dfn> (numeric value 1)
+ </dt>
+ <dd>
+ The user denied the page permission to access any services.
+ </dd>
+ <dt>
+ <dfn id="dom-navigatornetworkserviceerror-unknown_type_prefix" title="dom-navigatornetworkserviceerror-unknown_type_prefix"><code>UNKNOWN_TYPE_PREFIX_ERR</code></dfn> (numeric value 2)
+ </dt>
+ <dd>
+ No <a>valid service type</a> tokens were provided in the method invocation.
+ </dd>
+ </dl>
+
+ </section>
+
+ </section>
+ <section>
+ <h2>Obtaining networked services</h2>
+
+ <p>
+ The <a href="#networkservices"><code>NetworkServices</code></a> interface is the top-level response object from a call to <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> and provides access to a set of user-authorized <a href="#networkservice"><code>NetworkService</code></a> objects for the given request.
+ </p>
+
+<pre class="widl">
+[NoInterfaceObject]
+interface <dfn id="networkservices">NetworkServices</dfn> {
+ readonly attribute unsigned long <a href="#dom-networkservices-length">length</a>;
+ getter <a href="#networkservice">NetworkService</a> (unsigned long index);
+ <a href="#networkservice">NetworkService</a>? <a href="#dom-networkservices-getservicebyid">getServiceById</a>(DOMString id);
+
+ readonly attribute unsigned long <a href="#dom-networkservices-servicesavailable">servicesAvailable</a>;
+
+ // event handler attributes
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservices-onserviceavailable">onserviceavailable</a>;
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservices-onserviceunavailable">onserviceunavailable</a>;
+
+};
+
+<a href="#networkservices">NetworkServices</a> implements <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-eventtarget" class="externalDFN">EventTarget</a>;
+</pre>
+
+ <section>
+ <h2>Attributes</h2>
+
+ <dl class="domintro">
+ <dt>
+ <code title="dom-networkservices-length">
+ <a href="#dom-networkservices-length">length</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current number of services in the respective object's <a>current authorized services</a>.
+ </p>
+ </dd>
+ <dt>
+ <code title="dom-networkservices-servicesavailable">
+ <a href="#dom-networkservices-servicesavailable">servicesAvailable</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current number of services matching one of the app-requested <a>valid service type</a> tokens that are actively available within the user's current network.
+ </p>
+ </dd>
+ </dl>
+
+ <div>
+ <p>
+ The <dfn id="dom-networkservices-length"><code>length</code></dfn> attribute MUST return the number of services represented in the object's corresponding <a>current authorized services</a> list at the time of getting.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservices-servicesavailable"><code>servicesAvailable</code></dfn> attribute MUST return the number of services available in the
+ user's network that match the <a>valid service type</a> that was initially used to create the current <a href="#networkservices"><code>NetworkServices</code></a> object.
+ By default, <a href="#dom-networkservices-servicesavailable"><code>servicesAvailable</code></a> MUST be set to <code>1</code>.
+ </p>
+
+ <p>
+ When a previously unknown instance of a networked service matching one or the requested <a href="#dfn-valid-service-type">valid service types</a> becomes available on the user's current network, the <a>user agent</a> MUST fire a new simple
+ event at the <a href="#dom-networkservices-onserviceavailable"><code>onserviceavailable</code></a> event handler.
+ </p>
+
+ <p>
+ When a previously known instance of a networked service matching one or the requested <a href="#dfn-valid-service-type">valid service types</a> becomes unavailable on the user's current network, the <a>user agent</a> MUST fire a new simple
+ event at the <a href="#dom-networkservices-onserviceunavailable"><code>onserviceunavailable</code></a> event handler.
+ </p>
+ </div>
+
+ </section>
+
+ <section>
+ <h2>Methods</h2>
+ <dl class="domintro">
+ <dt>
+ <code title="networkservices-getter">
+ <a href="#networkservices">services</a>
+ </code>
+ [
+ <var title="">index</var>
+ ]
+ </dt>
+ <dd>
+ <p>
+ Returns the specified <a href="#networkservice"><code>NetworkService</code></a> object.
+ </p>
+ </dd>
+ <dt>
+ <code title="networkservices-getter">
+ <a href="#networkservices">services</a>
+ </code>
+ .
+ <code title="dom-networkservices-getservicebyid">
+ <a href="#dom-networkservices-getservicebyid">getServiceById</a>
+ </code>
+ (
+ <var title="">id</var>
+ )
+ </dt>
+ <dd>
+ <p>
+ Returns the <a href="#networkservice"><code>NetworkService</code></a> object with the given identifier, or null if no
+ service has that identifier.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ A <a href="#networkservices"><code>NetworkServices</code></a> object represents the current list of zero or more <a>current authorized services</a>, of which zero or more can be available at a time. Each item in <a>current authorized services</a> is represented by a <a href="#networkservice"><code>NetworkService</code></a> object.
+ </p>
+
+ <p class="note">
+ Each service in a <a href="#networkservices"><code>NetworkServices</code></a> object thus has an index; the first has the index 0, and each subsequent service is numbered one higher than the previous one. If the <a>user agent</a> dynamically adds or removes network services for any reason, then the indices of the services in <a>current authorized services</a> will change dynamically. If the set of network services changes entirely, then all the previous services will be removed from <a>current authorized services</a> and replaced with new services.
+ </p>
+
+ <p>
+ The <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#supported-property-indices" class="externalDFN">supported property indices</a> of <a href="#networkservices"><code>NetworkServices</code></a> objects at any instant are the numbers from zero to the number of items in <a>current authorized services</a> represented by the respective object minus one, if any services are represented in <a>current authorized services</a>. If a <a href="#networkservices"><code>NetworkServices</code></a> object represents no <a>current authorized services</a>, it has no <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#supported-property-indices" class="externalDFN">supported property indices</a>.
+ </p>
+
+ <p>
+ To <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#determine-the-value-of-an-indexed-property" class="externalDFN">determine the value of an indexed property</a> for a given index <var>index</var> in a <a href="#networkservices"><code>NetworkServices</code></a> object's <a>current authorized services</a>, the user agent MUST return the <a href="#networkservice"><code>NetworkService</code></a> object that represents the <var>index</var>th service in <a>current authorized services</a>.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservices-getservicebyid"><code>getServiceById(id)</code></dfn> method MUST return the first <a href="#networkservice"><code>NetworkService</code></a> object in <a>current authorized services</a> represented by the respective object whose <a href="#dom-networkservice-id"><code>id</code></a> attribute is equal to the value of the <var>id</var> argument.
+ When no services in <a>current authorized services</a> match the given argument, the method MUST return null.
+ </p>
+
+ <p>
+ Services available within the local network can connect and disconnect at different times during the execution of a web page. A <a>user agent</a> can
+ inform a web page when the state of networked services matching the requested <a>valid service type</a> change. Web pages can use this information to enable in-page experiences for communicating the state of networked services
+ with the ability to change the particular service or set of services the page is connected to by re-invoking the <a href="#dom-navigator-getnetworkservices"><code>getNetworkServices()</code></a> method.
+ </p>
+
+ </section>
+
+ <section>
+ <h2>Events</h2>
+
+ <p>
+ The following are the event handlers (and their corresponding event handler event types) that must be supported, as IDL attributes, by all objects implementing the <a href="#networkservices"><code>NetworkServices</code></a> interface:
+ </p>
+
+ <table border="1">
+ <thead>
+ <tr>
+ <th>
+ <span title="event handlers">Event handler</span>
+ </th>
+ <th>
+ <span>Event handler event type</span>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <dfn id="dom-networkservices-onserviceavailable" title="dom-NetworkServices-onserviceavailable">
+ <code>onserviceavailable</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-serviceavailable">serviceavailable</code>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <dfn id="dom-networkservices-onserviceunavailable" title="dom-NetworkServices-onserviceunavailable">
+ <code>onserviceunavailable</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-serviceunavailable">serviceunavailable</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ Events with an event type of <code>serviceavailable</code> or <code>serviceunavailable</code> defined in this specification are simple <code>Event</code> objects.
+ </p>
+
+ </section>
+
+ </section>
+ <section>
+ <h2>Communicating with a networked service</h3>
+
+<p>
+ The <a href="#networkservice"><code>NetworkService</code></a> interface is used to provide a set of connection information for an HTTP service endpoint and if available, service events, running on a networked device.
+</p>
+
+<pre class="widl">
+[NoInterfaceObject]
+interface <dfn id="networkservice">NetworkService</dfn> {
+ readonly attribute DOMString <a href="#dom-networkservice-id">id</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-name">name</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-type">type</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-url">url</a>;
+ readonly attribute DOMString <a href="#dom-networkservice-config">config</a>;
+
+ const unsigned short <a href="#dom-networkservice-AVAILABLE">AVAILABLE</a> = 1;
+ const unsigned short <a href="#dom-networkservice-UNAVAILABLE">UNAVAILABLE</a> = 2;
+ readonly attribute unsigned short <a href="#dom-networkservice-readystate">readyState</a>;
+
+ // event handler attributes
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservice-onreadystatechange">onreadystatechange</a>;
+ attribute <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#eventhandler" class="externalDFN">EventHandler</a> <a href="#dom-networkservice-onmessage">onmessage</a>;
+};
+
+<a href="#networkservice">NetworkService</a> implements <a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-eventtarget" class="externalDFN">EventTarget</a>;
+</pre>
+
+<section>
+ <h2>Attributes</h2>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-id">
+ <a href="#dom-networkservice-id">id</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ A unique identifier for the given user-selected service instance.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-name">
+ <a href="#dom-networkservice-name">name</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The name of the user-selected service.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-type">
+ <a href="#dom-networkservice-type">type</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The <a>valid service type</a> token value of the user-selected service.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-url">
+ <a href="#dom-networkservice-url">url</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The control URL endpoint (including any required port information) of the user-selected control service that has been added to the <a>entry script origin's URL whitelist</a>.
+ </p>
+ </dd>
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-config">
+ <a href="#dom-networkservice-config">config</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ The configuration information associated with the service depending on the requested service type.
+ </p>
+ </dd>
+ </dl>
+
+ <p>
+ The <dfn id="dom-networkservice-id"><code>id</code></dfn> attribute is a unique identifier for the service. Two services provided at different times or on different objects MUST have the same <a href="#dom-networkservice-id"><code>id</code></a> value.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-name"><code>name</code></dfn> attribute represents a human-readable title for the service.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-type"><code>type</code></dfn> attribute reflects the value of the <a>valid service type</a> of the service.
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-url"><code>url</code></dfn> attribute is an <a href="http://www.w3.org/TR/html5/urls.html#absolute-url" class="externalDFN">absolute URL</a> pointing to the root HTTP
+ endpoint for the service that has been added to the <a>entry script origin's URL whitelist</a>. Web pages can subsequently use this value for implicit cross-document messaging via various existing mechanisms (e.g. Web Sockets, Server-Sent Events, Web Messaging, XMLHttpRequest).
+ </p>
+
+ <p>
+ The <dfn id="dom-networkservice-config"><code>config</code></dfn> attribute provides the raw configuration information extracted from the given network service.
+ </p>
+
+ </section>
+
+ <section>
+ <h3>States</h3>
+
+ <dl class="domintro">
+ <dt>
+ <var title="">service</var>
+ .
+ <code title="dom-networkservice-readystate">
+ <a href="#dom-networkservice-readystate">readyState</a>
+ </code>
+ </dt>
+ <dd>
+ <p>
+ Returns the current state.
+ </p>
+ </dd>
+ </dl>
+
+ A <a href="#networkservice"><code>NetworkService</code></a> object can be in several states. The <dfn id="dom-networkservice-readystate"><code>readyState</code></dfn> attribute MUST return the current state of the networked service,
+ which MUST be one of the following values:
+
+ <dl>
+ <dt>
+ <dfn id="dom-networkservice-AVAILABLE" title="dom-networkservice-AVAILABLE">
+ <code>AVAILABLE</code>
+ </dfn>
+ (numeric value
+ 1)
+
+
+ </dt>
+ <dd>
+ <p>The object is connected to its service endpoint.
+
+ </p>
+ </dd>
+ <dt>
+ <dfn id="dom-networkservice-UNAVAILABLE" title="dom-networkservice-UNAVAILABLE">
+ <code>UNAVAILABLE</code>
+ </dfn>
+ (numeric value
+ 2)
+ </dt>
+ <dd>
+ <p>The object is not connected to its service endpoint.
+ </p>
+ </dd>
+ </dl>
+
+ </section>
+
+ <section>
+ <h3>Events</h3>
+
+ <p>
+ The following are the event handlers (and their corresponding event handler event types) that must be supported, as IDL attributes, by all objects implementing the
+ <a href="#networkservice"><code>NetworkService</code></a> interface:
+ </p>
+
+ <table border="1">
+ <thead>
+ <tr>
+ <th>
+ <span title="event handlers">Event handler</span>
+ </th>
+ <th>
+ <span>Event handler event type</span>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <dfn id="dom-networkservice-onmessage" title="dom-NetworkService-onmessage">
+ <code>onmessage</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-message">message</code>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <dfn id="dom-networkservice-onreadystatechange" title="dom-NetworkService-onreadystatechange">
+ <code>onreadystatechange</code>
+ </dfn>
+ </td>
+ <td>
+ <code title="event-onreadystatechange">readystatechange</code>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ Events with an event type of <code>message</code> defined in this specification are <a href="http://dev.w3.org/html5/postmsg/#messageevent" class="externalDFN"><code>MessageEvent</code></a> objects as defined in [[!WEBMESSAGING]].
+ </p>
+
+ <p>
+ Events with an event type of <code>readystatechange</code> defined in this specification are simple <code>Event</code> objects.
+ </p>
+
+ </section>
+ </section>
+
+ <section>
+ <h2>Service Discovery</h2>
+
+ <p>
+ A <a>user agent</a> conforming to this specification MAY implement <acronym title="Simple Service Discovery Protocol">SSDP</acronym> [[!UPNP]] and Zeroconf [[!ZEROCONF]] service discovery mechanisms
+ to enable Web pages to request and connect with HTTP services running on networked devices, discovered via either mechanism, through this API. When a <a>user agent</a> implements either of these service discovery mechanisms, then it MUST conform to the corresponding algorithms provided in this section of the specification.
+ </p>
+ <p>
+ This section presents how the results of these two service discovery
+ mechanisms will be matched to requested service types and how their properties will be applied to any resulting <a href="#networkservice"><code>NetworkService</code></a> objects.
+ </p>
+
+ <p>
+ It is expected that user agents will perform these service discovery mechansisms asynchronously and periodically update the <a>list of networked devices</a> as required. The timing of any
+ service discovery mechanisms is an implementation detail left to the discretion of the implementer (e.g. once on user agent start-up, every X seconds during user agent execution or on
+ invocation of this API from a Web page).
+ </p>
+
+ <p>
+ The <dfn>list of available service records</dfn> is a single dynamic internal lookup table within user agents that is used to track the current services available in the network at any given time.
+ At any point during the running of either of the two service discovery mechanisms then existing entries within this table can be updated, entries can be added and entries can be removed as the status of networked
+ services changes. Each record contained within this table contains the attributes: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code> and <code>config</code>.
+ </p>
+
+ <section>
+ <h4>Zeroconf (<acronym title="Multicast DNS">mDNS</acronym> + <acronym title="Domain Name System">DNS</acronym>-<acronym title="Service Discovery">SD</acronym>)</h4>
+
+ <p>
+ For each DNS response received from a user-agent-initiated Multicast DNS Browse for <acronym title="DNS Pointer Record">PTR</acronym> records with the name <code>_services._dns-sd._udp</code> on the resolved recommended automatic browsing
+ domain [[!MDNS]], the <a>user agent</a> MUST run the following steps:
+ </p>
+
+ <ol class="rule">
+
+ <li>Let <var>service mDNS responses</var> be an array of PTR records received by issuing a Multicast DNS Browse for PTR records with the name of the current discovered service type.</li>
+
+ <li>For each Object <var>service mDNS response</var> in <var>service mDNS responses</var>, run the following steps:
+ <ol>
+
+ <li>
+ Let <var>network service record</var> be an Object consisting of the following empty properties: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code>, <code>config</code>.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>id</code> property to the value of the full PTR Service Instance Name [[!MDNS]].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>name</code> property to the value of the PTR Service Instance Name's <var>Instance</var> component [[!MDNS]].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>type</code> property to the concatenation of the string <code>zeroconf:</code> followed by the value of the PTR Service Instance Name's <var>Service</var> component [[!MDNS]].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>url</code> property to the resolvable Service URL obtained from performing an DNS-SD Lookup [[!DNS-SD]] of the current service from the PTR record provided [[!MDNS]].
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>config</code> property to the string value of the contents of the first DNS-SD TXT record associated with the <var>service mDNS response</var> as defined in [[!DNS-SD]].
+ </li>
+
+ <li>
+ For each Object <var>existing service record</var> in the current <a>list of available service records</a>, run the following sub-steps:
+ <ol class="rule">
+
+ <li>
+ If the <var>existing service record</var>'s <code>id</code> property matches the value of the <var>network service record</var>'s <code>id</code>, then set the
+ value of <var>existing service record</var> in the current <a>list of available service records</a> to the value of the
+ <var>network service record</var> and skip the next step.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Add <var>network service record</var> to the <a>list of available service records</a>.
+ </li>
+
+ <li>
+ For each non-garbage collected <a href="#networkservice"><code>NetworkService</code></a> object run the following steps:
+
+ <ol class="rule">
+ <li>
+ If the <a href="#networkservice"><code>NetworkService</code></a> object's <code>type</code> attribute does not equal the
+ current <a>network service record</a>'s <code>type</code> property then continue at the next available active
+ <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ <li>
+ Increment the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a> object by <code>1</code>.
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ </section>
+
+ <section>
+ <h5>Universal Plug-and-Play (<acronym title="Universal Plug-and-Play">UPnP</acronym>)</h5>
+
+ <p>
+ For each SSDP Presence Announcement [[!UPNP]] - a HTTP NOTIFY request - received from a user-agent-initiated SSDP Discovery Request [[!UPNP]], the <a>user agent</a> MUST run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Let <var>ssdp device</var> be an Object with a property for each HTTP header received in the received SSDP Presence Announcement, with each key being the name of a HTTP header and its
+ value being that HTTP header's accompanying value.
+ </li>
+
+ <li>
+ If <var>ssdp device</var> does not contain at least one <var>NTS</var>, <var>USN</var> and <var>Location</var> parameter, then the <a>user agent</a> MUST abort these steps.
+ </li>
+
+ <li>
+ If the first occurrence of <var>NTS</var> has a value other than <code>ssdp:alive</code>, then continue to the step labeled <var>update service monitor</var> below.
+ </li>
+
+ <li>
+ Let <var>root device descriptor file</var> contain the contents of the file located at the URL provided in the first occurrence of <var>Location</var> obtained according to the rules
+ defined in the section 'Retrieving a description using HTTP' [[!UPNP]].
+ </li>
+
+ <li>
+ If <var>root device descriptor file</var> is empty, then the <a>user agent</a> MUST abort these steps.
+ </li>
+
+ <li>
+ Let <var>advertised services</var> be a <a>list of all advertised services</a> obtained from the <var>root device descriptor file</var> containing all sub-nodes of the <code>serviceList</code> node as described in
+ the section 'Device Description' [[!UPNP]].
+ </li>
+
+ <li>
+ For each Object <var>advertised service</var> in <var>advertised services</var> run the following steps:
+ <ol class="rule">
+
+ <li>
+ Let <var>network service record</var> be an Object consisting of the following empty properties: <code>id</code>, <code>name</code>, <code>type</code>, <code>url</code>, <code>eventsUrl</code>, <code>config</code>.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>id</code> property to the string value of the first occurrence of <var>ssdp device</var>'s <var>USN</var> parameter.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>name</code> property to the string value of the first occurrence of the <var>service</var>'s <code>serviceId</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>type</code> property to the concatenation of the string <code>upnp:</code> followed by the string value of the first occurrence of the <var>service</var>'s <code>serviceType</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>url</code> property to the string value of the first occurrence of the <var>service</var>'s <code>controlURL</code> property.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>config</code> property to the string value of the first occurrence of the <var>device</var> property.
+ </li>
+
+ <li>
+ If <var>service</var>'s <code>eventSubURL</code> property is empty, then continue to the step labeled <em>register</em> below.
+ </li>
+
+ <li>
+ Set <var>network service record</var>'s <code>eventsUrl</code> property to the string value of the first occurrence of the <var>service</var>'s <code>eventSubURL</code> property.
+ </li>
+
+ <li>
+ <em>Register</em>: For each Object <var>existing service record</var> in the current <a>list of available service records</a>, run the following sub-steps:
+ <ol class="rule">
+
+ <li>
+ If the <var>existing service record</var>'s <var>id</var> property matches the value of the first occurrence of <var>USN</var> and the
+ <var>existing service record</var>'s <code>type</code> property matches the value of <var>network service record</var>'s <code>type</code>, then set the
+ value of <var>existing service record</var> in the current <a>list of available service records</a> to the value of the
+ <var>network service record</var> and skip the next step.
+ </li>
+ </ol>
+ </li>
+
+ <li>
+ Add <var>network service record</var> to the <a>list of available service records</a>.
+ </li>
+
+ </ol>
+ </li>
+ <li>
+ <em>Update Service Monitor</em>: For each non-garbage collected <a href="#networkservice"><code>NetworkService</code></a> object run the following steps:
+
+ <ol class="rule">
+ <li>
+ If this <a href="#networkservice"><code>NetworkService</code></a> object's <code>type</code> attribute does not equal the
+ current <a>network service record</a>'s <code>type</code> property then continue at the next available active
+ <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ <li>
+ If the <var>announcement type</var> equals <code>ssdp:alive</code> then Increment the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a>
+ object by <code>1</code>. Otherwise, decrement the <code>servicesAvailable</code> attribute of the <a href="#networkservices"><code>NetworkServices</code></a>
+ object by <code>1</code>.
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ <p>
+ A <dfn>user-agent generated callback url</dfn> is a Local-network accessible URL endpoint that a <a>user agent</a> must generate and maintain for receiving HTTP NOTIFY requests from UPnP Event sources.
+ </p>
+
+ <p>When the <a>user agent</a> is to <dfn>setup a UPnP Events Subscription</dfn>, it is to run the following steps with the current <var>network service record</var> object:</p>
+
+ <ol class="rule">
+ <li>
+ If <var>network service record</var>'s <code>eventsUrl</code> property is empty then the <a>user agent</a> MUST abort these steps.
+ </li>
+
+ <li>
+ Let <var>callback URL</var> be the value of creating a new <a>user-agent generated callback url</a>.
+ </li>
+
+ <li>
+ Send a HTTP SUBSCRIBE request with a <em>NT</em> header with a string value of <code>upnp:event</code>, a <em>TIMEOUT</em> header with an integer value of
+ <code>86400</code> and a <em>CALLBACK</em> header
+ with a string value of <var>callback URL</var> towards the <var>network service record</var>'s <code>eventsUrl</code> property.
+ </li>
+
+ <li>
+ If a non-200 OK response is received from the HTTP SUBSCRIBE request then the <a>user agent</a> MUST abort these steps.
+ </li>
+
+ <li>
+ On receiving a valid 200 OK response, run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>callback ID</var> equal the string value of the first included <em>SID</em> header, if it exists.
+ </li>
+ <li>
+ Let <var>timeout date</var> equal the sum of the current UTC date value plus the integer value of the first included <em>TIMEOUT</em> header, if it exists.
+ </li>
+ <li>
+ Run the following steps aynchronously and continue to the step labeled <em>listen</em> below.
+ </li>
+ <li>
+ <em>Refresh Subscription</em>: Run the following steps at a set interval (X) within the <a>user agent</a>:
+
+ <ol class="rule">
+ <li>
+ Let <var>current date</var> equal the current UTC date.
+ </li>
+ <li>
+ If <var>current date</var> is less than the <var>timeout date</var> then continue to the step labeled <em>refresh subscription</em> above.
+ </li>
+ <li>
+ Send a HTTP SUBSCRIBE request with a <em>SID</em> header with the string value of <var>callback ID</var> and a <em>TIMEOUT</em> header
+ with an integer value of <code>86400</code> towards the <var>network service record</var>'s <code>eventsUrl</code> property.
+ </li>
+ <li>
+ On receiving a valid 200 OK, update <var>callback ID</var> with the string value of the first included <em>SID</em> header, if it exists. All other HTTP
+ responses should cause the <a>user agent</a> to continue from the step labeled <em>refresh subscription</em> above.
+ </li>
+ </ol>
+
+ </li>
+
+ <li>
+ <em>Listen</em>: For each HTTP NOTIFY request received at the <var>callback URL</var> the <a>user agent</a> is to run the following steps:
+
+ <ol class="rule">
+ <li>
+ Let <var>content clone</var> be the result of obtaining the message body of the HTTP NOTIFY request. If <var>content clone</var> is empty, then the <a>user agent</a> MUST abort these steps.
+ </li>
+ <li>
+ Create a new <code>message</code> event that uses the <a href="http://dev.w3.org/html5/postmsg/#messageevent" class="externalDFN"><code>MessageEvent</code></a> interface [[!WEBMESSAGING]], with the name <code>message</code>,
+ which does not bubble, is not cancelable, and has no default action.
+ </li>
+ <li>
+ Let the <code>data</code> attribute of the event have the DOMString value of <var>content clone</var>.
+ </li>
+ <li>
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">Queue a task</a> to
+ dispatch the newly created event at the current <a><code>NetworkService</code></a> object.
+ </li>
+ </ol>
+ </li>
+
+ </ol>
+
+ </li>
+ </ol>
+
+ </section>
+
+ <section>
+ <h3>Network Topology Monitoring</h3>
+
+ <div>
+ <p>
+ When the <a>user agent</a> detects that the user has dropped from their connected network, then it MUST run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Flush all entries from the <a>list of available service records</a>.
+ </li>
+ <li>
+ For each <a href="#networkservice"><code>NetworkService</code></a> object currently active in the <a>user agent</a> perform the following steps:
+
+ <ol class="rule">
+ <li>
+ Set the <a href="#dom-networkservice-readystate"><code>readyState</code></a> attribute to <code>2</code> (<a href="#dom-networkservice-UNAVAILABLE"><code>UNAVAILABLE</code></a>).
+ </li>
+ <li>
+ Create a new <code>readystatechange</code> event that uses the <code>Event</code> interface which does not bubble, is not cancelable, and has no default action.
+ </li>
+ <li>
+ <a href="http://www.whatwg.org/specs/web-apps/current-work/complete/webappapis.html#queue-a-task" class="externalDFN">Queue a task</a> to
+ dispatch the newly created event at the <a href="#networkservice"><code>NetworkService</code></a> object.
+ </li>
+ </ol>
+ </li>
+ </ol>
+
+ <p>
+ When the <a>user agent</a> detects that the user has connected to a new network, then it SHOULD run the following steps:
+ </p>
+
+ <ol class="rule">
+ <li>
+ Re-issue an mDNS search and SSDP discovery search and handle the responses according to the processing defined in <a href="#service-discovery">Section 6: Service Discovery</a>.
+ </li>
+ </ol>
+ </div>
+ </section>
+ </section>
+
+ <section>
+ <h3>Garbage collection</h3>
+
+ <p>
+ A <a><code>NetworkService</code></a> object containing a <code>url</code> parameter currently in the <a>entry script origin's URL whitelist</a> MUST NOT be garbage collected.
+ </p>
+
+ <p>
+ Only when the user navigates away from the current browsing context can <a><code>NetworkService</code></a> objects be garbage-collected and records in the <a>entry script origin's URL whitelist</a> be removed.
+ </p>
+
+ </section>
+
+
+ <section>
+ <h3>Use Cases and Requirements</h3>
+
+ <p>This section covers what the requirements are for this API, as well as illustrates some use cases.</p>
+
+ <ul class="rule">
+ <li>
+ Once a user has given permission, user agents should provide the ability for Web pages to communicate directly with a Local-networked Service.
+ <ul class="rule">
+ <li>
+ Example: A web-based TV remote control. A Web page wants to control the current user's TV, changing the programming shown or increasing/decreasing/muting the
+ volume of the Local-networked Device. The Web page requests a service type that is known to be implemented by television sets to which it has the
+ application logic to communicate. Local devices providing the request service types are discovered and presented to the user for authorization. The user selects one
+ or more of the discovered television sets to be accessible to the current Web page and then clicks 'Share'. The Web page can now communicate directly with
+ the user-authorized Local-networked services.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should be able to communicate with Local-networked Services using the messaging channel supported by those Devices.
+ <ul class="rule">
+ <li>
+ Example: A Web page advertises that it is capable of controlling multiple Home Media Servers. The user can select their Home Media Server type from a drop-down list, at which point the
+ Web page sends a request to the user agent to connect with the associated service type of the Home Media Server. The Media Server selected implements a Web Socket channel for
+ bi-directional service communication and so the Web page opens a web socket to the requested Media Server and can communicate as required via that appropriate channel.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should be able to communicate with Local-networked Services using the messaging format supported by those Devices.
+ <ul class="rule">
+ <li>
+ Example: A Web page advertises that it is capable of interacting with and controlling multiple types of Home Media Server. The user can select their Home Media Server type from a drop-down list or known Media Servers, at which point the
+ Web page sends a request to the user agent to connect with the associated service type (and, optionally, the associated event type) of the Home Media Server. The communiciation protocols supported by Home Media Servers typically vary
+ between UPnP, JSON-RPC, Protocol Buffers or other messaging formats depending on the Home Media Server requested. The Web page is able to communicate with the user-selected Home Media
+ Server in the messaging format supported by that Device, which, in this example is a simple key/value pair text format.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ Web pages should not be able to communicate with Local-networked Services that have not been authorized by the user thereby maintaining the user's privacy.
+ <ul class="rule">
+ <li>
+ Example: A Web page requests access to one type of Local-networked service. The user authorizes access to that particular service. Other services running on that same device, and on other devices
+ within the network, should not be accessible to the current Web page.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ A user should be able to share one or more Local-networked Services based on a particular service type request from a Web page.
+ <ul class="rule">
+ <li>
+ Example: A Web page is capable of interacting with a specific profile of Local-networked Service. As such, it makes a request to the user agent to access those services, of which multiple matches
+ are found. The user is capable of selecting one or more of the discovered services to share with the Web page. The Web page can then implement a drag-and-drop interface for the user to drag specific
+ actions on to one or more of the authorized Local-networked Services.
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ User agents should provide an API exposed to script that exposes the features above. The user is notified by UI anytime interaction with Local-networked Services is requested, giving the user
+ full ability to cancel or abort the transaction. The user selects the Local-networked Services to be connected to the current Web page, and can cancel these at any time. No invocations to
+ these APIs occur silently without user intervention.
+ </li>
+ </ul>
+ </section>
+
+ <section class="informative appendix">
+ <h3>Examples</h3>
+
+ <div class="example">
+ <p>This sample code exposes a button. When clicked, this button is disabled and the user is prompted to offer a network service. The user may also select multiple network services. When the user has authorized a network service to be connected to the web page then the web page issues a simple command to get a list of all the albums stored on the connected media player service.
+ <p>The button is re-enabled only when the connected network service disconnects for whatever reason (the service becomes unavailable on the network, the user disconnects from their current network or the user revokes access to the service from the current web page). At this point the user can re-click the button to select a new network service to connect to the web page and the above steps are repeated.</p>
+ <p>The provided service type identifier and service interaction used in this example is based on the well-defined service type and messaging format supported by the <a href="http://xbmc.org/about/">XBMC Media Server</a>. </p>
+ <hr />
+ <pre class="brush:js"><input type="button" value="Start" onclick="start()" id="startBtn"/>
+<div id="debugconsole"></div>
+
+<script>
+ var startBtn = document.getElementById('startBtn'),
+ debug = document.getElementById('debugconsole');
+
+ function start() {
+ if(navigator.getNetworkServices) {
+ navigator.getNetworkServices('zeroconf:_xbmc-jsonrpc._tcp', gotXBMCService, error);
+ startBtn.disabled = true;
+ } else {
+ debug.innerHTML += "<br>Service Discovery API not supported!";
+ }
+ }
+
+ function gotXBMCService(services) {
+
+// Listen for service disconnect messages
+
+ services[0].addEventListener('readystatechange', function ( e ) {
+ if(services[0].readyState === services[0].UNAVAILABLE) {
+ debug.innerHTML += "<br>" + services[0].name + " disconnected.";
+ startBtn.disabled = false;
+ }
+ }, false);
+
+// Send a service message to get albums list (and process the service response)
+
+ var svcXhr = new XMLHttpRequest();
+ svcXhr.open("POST", services[0].url + "/getAlbums"); // services[0].url and its subresources have been
+ // whitelisted for cross-site XHR use in this
+ // current browsing context.
+
+ svcXhr.setRequestHeader('Content-Type', 'application/json-rpc');
+
+ svcXhr.addEventListener('readystatechange', function ( response ) {
+ if( response.readyState != 4 || response.status != 200 )
+ return;
+ debug.innerHTML += "<br>" + services[0].name + " response received: ";
+ debug.textContent += JSON.parse(response.responseText);
+ }, false);
+
+ var svcMsg = [
+ { "jsonrpc": "2.0", "method": "AudioLibrary.GetAlbums", "params": { "genreid": -1,
+ "artistid": -1, "start": -1, "end": -1 }, "id": "1" }
+ ];
+
+ svcXhr.send(JSON.stringify(svcMsg));
+ debug.innerHTML += "<br>" + services[0].name + " request sent: ";
+ debug.textContent += JSON.stringify(svcMsg);
+
+ }
+
+ function error( err ) {
+ debug.innerHTML += "<br>An error occurred obtaining a local network service.";
+ startBtn.disabled = false;
+ }
+</script></pre>
+ </div>
+
+ <div class="example">
+ <p>
+ This sample exposes a drop-down list containing a number of common Home-based audio devices. When the user selects an audio device from the list provided, they are prompted to authorize a network service
+ based on the service type requested. The user may also select multiple network services matching the selected service type.
+ In this example, the user selects their make as being <var>Sony</var> and their model as being <var>Bravia S1000</var> from which the Web page can derive a service type
+ (<var>urn:schemas-upnp-org:service:RenderingControl:1</var>).
+ <br /><br />Once the user has authorized the device, the web page sends a simple mute command according to the messaging format supported by the device.
+ </p>
+ <hr />
+ <pre class="brush:js"><select name="make" id="make">
+ <option selected="selected" disabled="disabled">Select make</option>
+ <option>Sony</option>
+ <option>Philips</option>
+ <option>Alba</option>
+</select>
+<select name="model" id="model"></select>
+<div id="debugconsole"></div>
+
+<script>
+ var debug = document.getElementById('debugconsole');
+
+ var models = {
+ "Sony": [
+ {"name": "Bravia TV S1000", "type": "upnp", "service": "urn:schemas-upnp-org:service:RenderingControl:1" },
+ {"name": "Bravia TV S2000", "type": "zeroconf", "service": "_mediarenderer._http._tcp" },
+ {"name": "HiFi WD10", "type": "upnp", "service": "urn:schemas-upnp-org:service:RenderingControl:1" }
+ ],
+ "Philips": [ /* ... */ ],
+ "Alba": [ /* ... */ ]
+ };
+
+ var makeEl = document.getElementById("make"),
+ modelEl = document.getElementById("model");
+
+ makeEl.addEventListener('change', function() {
+ modelEl.innerHTML = ""; // reset
+ var defaultOption = document.createElement("option");
+ defaultOption.textContent = "Select model";
+ defaultOption.setAttribute("disabled", "disabled");
+ defaultOption.setAttribute("selected", "selected");
+ modelEl.appendChild(defaultOption);
+ for(var i = 0, l = models[makeEl.value].length; i < l; i++) {
+ var option = document.createElement("option");
+ option.textContent = models[makeEl.value][i]["name"];
+ option.setAttribute("value", models[makeEl.value][i]["type"] + ":" + models[makeEl.value][i]["service"]);
+ modelEl.appendChild(option);
+ }
+ }, false);
+
+ modelEl.addEventListener('change', function() {
+ if(navigator.getNetworkServices &&
+ modelEl.value == "upnp:urn:schemas-upnp-org:service:RenderingControl:1") {
+ navigator.getNetworkServices(modelEl.value, successCallback, errorCallback);
+ } else if (modelEl.value == "zeroconf:_mediarenderer._http._tcp") {
+ debug.innerHTML += "<br>Service type is not implemented by this application.";
+ } else {
+ debug.innerHTML += "<br>Service Discovery is not supported!";
+ }
+ }, false);
+</script>
+
+<script>
+ function successCallback( services ) {
+
+ // Listen for service push messages
+
+ services[0].addEventListener('message', function ( msg ) {
+ debug.innerHTML += "<br>" + services[0].name + " event received: ";
+ debug.textContent += msg.data;
+ }, false);
+
+ // Send a control signal to mute the service audio
+
+ var svcXhr = new XMLHttpRequest();
+ svcXhr.open("POST", services[0].url); // services[0].url and its
+ // subresources have been whitelisted for
+ // cross-site XHR use in this current
+ // browsing context.
+
+ svcXhr.setRequestHeader('SOAPAction', 'urn:schemas-upnp-org:service:RenderingControl:1#SetMute');
+ svcXhr.setRequestHeader('Content-Type', 'text/xml; charset="utf-8";');
+
+ svcXhr.onreadystatechange = function ( response ) {
+ if( response.readyState != 4 || response.status != 200 )
+ return;
+ debug.innerHTML += "<br>" + services[0].name + " response received: ";
+ debug.textContent += response.responseXML;
+ }
+
+ // Service messaging to mute the provided service
+ var svcMsg = '<?xml version="1.0" encoding="utf-8"?>' +
+ '<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" ' +
+ 'xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' +
+ '<s:Body>' +
+ '<u:SetMute xmlns:u="urn:schemas-upnp-org:service:RenderingControl:1">' +
+ '<InstanceID>0</InstanceID>' +
+ '<Channel>Master</Channel>' +
+ '<DesiredMute>true</DesiredMute>' +
+ '</u:SetMute>' +
+ '</s:Body>' +
+ '</s:Envelope>';
+
+ svcXhr.send(svcMsg);
+ debug.innerHTML += "<br>" + services[0].name + " request sent: ";
+ debug.textContent += svcMsg;
+ }
+
+ function errorCallback( error ) {
+ debug.innerHTML += "<br>An error occurred: " + error.code;
+ }
+</script></pre>
+ </div>
+
+ </section>
+
+ <section>
+ <h3>Acknowledgements</h3>
+
+ <p>Thanks are expressed by the editor to the following individuals for their feedback on this specification to date (in alphabetical order):
+ <br /><br />
+ Gar Bergstedt, Lars-Erik Bolstad, Hari G Kumar, Bob Lund, Giuseppe Pascale, Marcin Simonides, Clarke Stevens, Christian Söderström, Mark Vickers, ...</p>
+
+ <p>Thanks are also expressed by the editor to the following organizations and groups for their support in producing this specification to date (in alphabetical order):
+ <br /></br />
+ CableLabs, Opera Software ASA, W3C Device APIs Working Group, W3C Web and TV Interest Group, ...</p>
+ </section>
+
+ <script class='remove'>
+ if(SyntaxHighlighter) {
+ SyntaxHighlighter.defaults['gutter'] = false;
+ SyntaxHighlighter.defaults['toolbar'] = false;
+ SyntaxHighlighter.all()
+ }
+ </script>
+
+</body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/base-runner.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,7465 @@
+
+// XXX
+// This is very rough, it needs more useful stuff
+
+if (!window.console) {
+ var fallback = window.opera ? window.opera.postError : function (str) {};
+ window.console = { log: fallback, warn: fallback, error: fallback };
+}
+
+(function (GLOBAL) {
+ GLOBAL.warn = function (str) {
+ console.warn("W: " + str);
+ };
+
+ GLOBAL.error = function (str) {
+ console.error("E: " + str);
+ };
+
+ GLOBAL.progress = function (str) {
+ if (console) console.log("P: " + str);
+ };
+})(this);
+
+
+define(
+ [],
+ function () {
+ return {
+ runAll: function (plugs) {
+ // the first in the plugs is going to be us
+ plugs.shift();
+ if (!respecConfig) respecConfig = {};
+
+ // the base URL is used by some modules
+ var $scripts = $("script"),
+ baseUrl = "";
+ $scripts.each(function (i, s) {
+ var src = s.getAttribute("src");
+ if (!src || !$(s).hasClass("remove")) return;
+ if (/\/js\//.test(src)) baseUrl = src.replace(/\/js\/.*/, "\/js\/")
+ });
+ respecConfig.respecBase = baseUrl;
+
+ var pipeline;
+ pipeline = function () {
+ if (!plugs.length) return;
+ var plug = plugs.shift();
+ if (plug.run) plug.run.call(plug, respecConfig, document, pipeline);
+ else pipeline();
+ };
+ pipeline();
+ if (respecConfig.afterEnd) respecConfig.afterEnd.apply(GLOBAL, Array.prototype.slice.call(arguments));
+ },
+ ieDummy: 1
+ };
+ }
+);
+
+
+/*!
+ * jQuery JavaScript Library v1.4.4
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Nov 11 19:04:53 2010 -0500
+ */
+(function( window, undefined ) {
+
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document;
+var jQuery = (function() {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+ rwhite = /\s/,
+
+ // Used for trimming whitespace
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for non-word characters
+ rnonword = /\W/,
+
+ // Check for digits
+ rdigit = /\d/,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwn = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context && document.body ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && !rnonword.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.4",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Handle when the DOM is ready
+ ready: function( wait ) {
+ // A third-party is pushing the ready event forwards
+ if ( wait === true ) {
+ jQuery.readyWait--;
+ }
+
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.readyWait || (wait !== true && !jQuery.isReady) ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
+ }
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn,
+ i = 0,
+ ready = readyList;
+
+ // Reset the list of functions
+ readyList = null;
+
+ while ( (fn = ready[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
+ }
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return jQuery.type(obj) === "function";
+ },
+
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwn.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( rvalidchars.test(data.replace(rvalidescape, "@")
+ .replace(rvalidtokens, "]")
+ .replace(rvalidbraces, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type(array);
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length,
+ j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [], retVal;
+ inv = !!inv;
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can be optionally by executed if its a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// Verify that \s matches non-breaking spaces
+// (IE fails on this test)
+if ( !rwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch(e) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+// Expose jQuery to the global object
+return (window.jQuery = window.$ = jQuery);
+
+})();
+
+
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + jQuery.now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0],
+ select = document.createElement("select"),
+ opt = select.appendChild( document.createElement("option") );
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: opt.selected,
+
+ // Will be defined later
+ deleteExpando: true,
+ optDisabled: false,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null,
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableHiddenOffsets: true
+ };
+
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as diabled)
+ select.disabled = true;
+ jQuery.support.optDisabled = !opt.disabled;
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete script.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ jQuery.support.shrinkWrapBlocks = div.offsetWidth !== 2;
+ }
+
+ div.innerHTML = "<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";
+ var tds = div.getElementsByTagName("td");
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ jQuery.support.reliableHiddenOffsets = tds[0].offsetHeight === 0;
+
+ tds[0].style.display = "";
+ tds[1].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ jQuery.support.reliableHiddenOffsets = jQuery.support.reliableHiddenOffsets && tds[0].offsetHeight === 0;
+ div.innerHTML = "";
+
+ document.body.removeChild( div ).style.display = "none";
+ div = tds = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+
+
+var windowData = {},
+ rbrace = /^(?:\{.*\}|\[.*\])$/;
+
+jQuery.extend({
+ cache: {},
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ expando: "jQuery" + jQuery.now(),
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
+ "applet": true
+ },
+
+ data: function( elem, name, data ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : null,
+ cache = jQuery.cache, thisCache;
+
+ if ( isNode && !id && typeof name === "string" && data === undefined ) {
+ return;
+ }
+
+ // Get the data from the object directly
+ if ( !isNode ) {
+ cache = elem;
+
+ // Compute a unique ID for the element
+ } else if ( !id ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ }
+
+ // Avoid generating a new cache unless none exists and we
+ // want to manipulate it.
+ if ( typeof name === "object" ) {
+ if ( isNode ) {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+
+ } else {
+ jQuery.extend( cache, name );
+ }
+
+ } else if ( isNode && !cache[ id ] ) {
+ cache[ id ] = {};
+ }
+
+ thisCache = isNode ? cache[ id ] : cache;
+
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined ) {
+ thisCache[ name ] = data;
+ }
+
+ return typeof name === "string" ? thisCache[ name ] : thisCache;
+ },
+
+ removeData: function( elem, name ) {
+ if ( !jQuery.acceptData( elem ) ) {
+ return;
+ }
+
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var isNode = elem.nodeType,
+ id = isNode ? elem[ jQuery.expando ] : elem,
+ cache = jQuery.cache,
+ thisCache = isNode ? cache[ id ] : id;
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( thisCache ) {
+ // Remove the section of cache data
+ delete thisCache[ name ];
+
+ // If we've removed all the data, remove the element's cache
+ if ( isNode && jQuery.isEmptyObject(thisCache) ) {
+ jQuery.removeData( elem );
+ }
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ if ( isNode && jQuery.support.deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+
+ // Completely remove the data cache
+ } else if ( isNode ) {
+ delete cache[ id ];
+
+ // Remove all fields from the object
+ } else {
+ for ( var n in elem ) {
+ delete elem[ n ];
+ }
+ }
+ }
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
+ }
+
+ return true;
+ }
+});
+
+jQuery.fn.extend({
+ data: function( key, value ) {
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ var attr = this[0].attributes, name;
+ data = jQuery.data( this[0] );
+
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = name.substr( 5 );
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+
+ return data;
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
+ });
+ }
+
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
+
+ if ( value === undefined ) {
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ // Try to fetch any internally stored data first
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
+ }
+
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+
+ } else {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
+ jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
+ });
+ }
+ },
+
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+ data = elem.getAttribute( "data-" + key );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
+ }
+ }
+
+ return data;
+}
+
+
+
+
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
+ }
+
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type );
+
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
+ },
+
+ dequeue: function( elem, type ) {
+ type = type || "fx";
+
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift();
+
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
+
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
+ }
+
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+ }
+});
+
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
+ }
+
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i ) {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
+
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
+
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+
+
+
+
+var rclass = /[\n\t]/g,
+ rspaces = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /^(?:href|src|style)$/,
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rradiocheck = /^(?:radio|checkbox)$/i;
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.attr );
+ },
+
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
+
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
+
+ } else {
+ var className = " " + elem.className + " ",
+ setClass = elem.className;
+
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ setClass += " " + classNames[c];
+ }
+ }
+ elem.className = jQuery.trim( setClass );
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
+ });
+ }
+
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split( rspaces );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
+
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = jQuery.trim( className );
+
+ } else {
+ elem.className = "";
+ }
+ }
+ }
+ }
+
+ return this;
+ },
+
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
+ }
+
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className,
+ i = 0,
+ self = jQuery( this ),
+ state = stateVal,
+ classNames = value.split( rspaces );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
+
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery.data( this, "__className__", this.className );
+ }
+
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ }
+ });
+ },
+
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ val: function( value ) {
+ if ( !arguments.length ) {
+ var elem = this[0];
+
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
+ }
+
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery(option).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ return values;
+ }
+
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
+
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
+
+ }
+
+ return undefined;
+ }
+
+ var isFunction = jQuery.isFunction(value);
+
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
+
+ if ( this.nodeType !== 1 ) {
+ return;
+ }
+
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
+
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
+ val += "";
+ } else if ( jQuery.isArray(val) ) {
+ val = jQuery.map(val, function (value) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
+ }
+
+ } else {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
+ },
+
+ attr: function( elem, name, value, pass ) {
+ // don't set attributes on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
+
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
+ // Whether we are setting (or getting)
+ set = value !== undefined;
+
+ // Try to normalize/fix the name
+ name = notxml && jQuery.props[ name ] || name;
+
+ // These attributes require special treatment
+ var special = rspecialurl.test( name );
+
+ // Safari mis-reports the default selected property of an option
+ // Accessing the parent's selectedIndex property fixes it
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
+
+ // If applicable, access the attribute via the DOM 0 way
+ // 'in' checks fail in Blackberry 4.7 #6931
+ if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
+ if ( set ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
+
+ if ( value === null ) {
+ if ( elem.nodeType === 1 ) {
+ elem.removeAttribute( name );
+ }
+
+ } else {
+ elem[ name ] = value;
+ }
+ }
+
+ // browsers index elements by id/name on forms, give priority to attributes.
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
+ return elem.getAttributeNode( name ).nodeValue;
+ }
+
+ // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
+ // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+ if ( name === "tabIndex" ) {
+ var attributeNode = elem.getAttributeNode( "tabIndex" );
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+
+ return elem[ name ];
+ }
+
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
+
+ if ( set ) {
+ // convert the value to a string (all browsers do this but IE) see #1070
+ elem.setAttribute( name, "" + value );
+ }
+
+ // Ensure that missing attributes return undefined
+ // Blackberry 4.7 returns "" from getAttribute #6938
+ if ( !elem.attributes[ name ] && (elem.hasAttribute && !elem.hasAttribute( name )) ) {
+ return undefined;
+ }
+
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
+ // Some attributes require a special call on IE
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return attr === null ? undefined : attr;
+ }
+});
+
+
+
+
+var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspace = / /g,
+ rescape = /[^\w\s.|`]/g,
+ fcleanup = function( nm ) {
+ return nm.replace(rescape, "\\$&");
+ },
+ focusCounts = { focusin: 0, focusout: 0 };
+
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
+
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( jQuery.isWindow( elem ) && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
+ }
+
+ var handleObjIn, handleObj;
+
+ if ( handler.handler ) {
+ handleObjIn = handler;
+ handler = handleObjIn.handler;
+ }
+
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
+
+ // Init the element's event structure
+ var elemData = jQuery.data( elem );
+
+ // If no elemData is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !elemData ) {
+ return;
+ }
+
+ // Use a key less likely to result in collisions for plain JS objects.
+ // Fixes bug #7150.
+ var eventKey = elem.nodeType ? "events" : "__events__",
+ events = elemData[ eventKey ],
+ eventHandle = elemData.handle;
+
+ if ( typeof events === "function" ) {
+ // On plain objects events is a fn that holds the the data
+ // which prevents this data from being JSON serialized
+ // the function does not need to be called, it just contains the data
+ eventHandle = events.handle;
+ events = events.events;
+
+ } else if ( !events ) {
+ if ( !elem.nodeType ) {
+ // On plain objects, create a fn that acts as the holder
+ // of the values to avoid JSON serialization of event data
+ elemData[ eventKey ] = elemData = function(){};
+ }
+
+ elemData.events = events = {};
+ }
+
+ if ( !eventHandle ) {
+ elemData.handle = eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+ }
+
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native events in IE.
+ eventHandle.elem = elem;
+
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ var type, i = 0, namespaces;
+
+ while ( (type = types[ i++ ]) ) {
+ handleObj = handleObjIn ?
+ jQuery.extend({}, handleObjIn) :
+ { handler: handler, data: data };
+
+ // Namespaced event handlers
+ if ( type.indexOf(".") > -1 ) {
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ handleObj.namespace = namespaces.slice(0).sort().join(".");
+
+ } else {
+ namespaces = [];
+ handleObj.namespace = "";
+ }
+
+ handleObj.type = type;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = jQuery.event.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = [];
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, eventHandle, false );
+
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, eventHandle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
+
+ if ( !handleObj.handler.guid ) {
+ handleObj.handler.guid = handler.guid;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers.push( handleObj );
+
+ // Keep track of which events have been used, for global triggering
+ jQuery.event.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
+ },
+
+ global: {},
+
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler, pos ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ eventKey = elem.nodeType ? "events" : "__events__",
+ elemData = jQuery.data( elem ),
+ events = elemData && elemData[ eventKey ];
+
+ if ( !elemData || !events ) {
+ return;
+ }
+
+ if ( typeof events === "function" ) {
+ elemData = events;
+ events = events.events;
+ }
+
+ // types is actually an event object here
+ if ( types && types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Unbind all events for the element
+ if ( !types || typeof types === "string" && types.charAt(0) === "." ) {
+ types = types || "";
+
+ for ( type in events ) {
+ jQuery.event.remove( elem, type + types );
+ }
+
+ return;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(" ");
+
+ while ( (type = types[ i++ ]) ) {
+ origType = type;
+ handleObj = null;
+ all = type.indexOf(".") < 0;
+ namespaces = [];
+
+ if ( !all ) {
+ // Namespaced event handlers
+ namespaces = type.split(".");
+ type = namespaces.shift();
+
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ eventType = events[ type ];
+
+ if ( !eventType ) {
+ continue;
+ }
+
+ if ( !handler ) {
+ for ( j = 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ jQuery.event.remove( elem, origType, handleObj.handler, j );
+ eventType.splice( j--, 1 );
+ }
+ }
+
+ continue;
+ }
+
+ special = jQuery.event.special[ type ] || {};
+
+ for ( j = pos || 0; j < eventType.length; j++ ) {
+ handleObj = eventType[ j ];
+
+ if ( handler.guid === handleObj.guid ) {
+ // remove the given handler for the given type
+ if ( all || namespace.test( handleObj.namespace ) ) {
+ if ( pos == null ) {
+ eventType.splice( j--, 1 );
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, handleObj );
+ }
+ }
+
+ if ( pos != null ) {
+ break;
+ }
+ }
+ }
+
+ // remove generic event handler if no more handlers exist
+ if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ jQuery.removeEvent( elem, type, elemData.handle );
+ }
+
+ ret = null;
+ delete events[ type ];
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ if ( jQuery.isEmptyObject( events ) ) {
+ var handle = elemData.handle;
+ if ( handle ) {
+ handle.elem = null;
+ }
+
+ delete elemData.events;
+ delete elemData.handle;
+
+ if ( typeof elemData === "function" ) {
+ jQuery.removeData( elem, eventKey );
+
+ } else if ( jQuery.isEmptyObject( elemData ) ) {
+ jQuery.removeData( elem );
+ }
+ }
+ },
+
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( jQuery.event.global[ type ] ) {
+ jQuery.each( jQuery.cache, function() {
+ if ( this.events && this.events[type] ) {
+ jQuery.event.trigger( event, data, this.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = elem.nodeType ?
+ jQuery.data( elem, "handle" ) :
+ (jQuery.data( elem, "__events__" ) || {}).handle;
+
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+
+ // Trigger an inline bound script
+ try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (inlineError) {}
+
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
+
+ } else if ( !event.isDefaultPrevented() ) {
+ var old,
+ target = event.target,
+ targetType = type.replace( rnamespaces, "" ),
+ isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
+ special = jQuery.event.special[ targetType ] || {};
+
+ if ( (!special._default || special._default.call( elem, event ) === false) &&
+ !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+
+ try {
+ if ( target[ targetType ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + targetType ];
+
+ if ( old ) {
+ target[ "on" + targetType ] = null;
+ }
+
+ jQuery.event.triggered = true;
+ target[ targetType ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (triggerError) {}
+
+ if ( old ) {
+ target[ "on" + targetType ] = old;
+ }
+
+ jQuery.event.triggered = false;
+ }
+ }
+ },
+
+ handle: function( event ) {
+ var all, handlers, namespaces, namespace_re, events,
+ namespace_sort = [],
+ args = jQuery.makeArray( arguments );
+
+ event = args[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ all = event.type.indexOf(".") < 0 && !event.exclusive;
+
+ if ( !all ) {
+ namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+ namespace_sort = namespaces.slice(0).sort();
+ namespace_re = new RegExp("(^|\\.)" + namespace_sort.join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.namespace = event.namespace || namespace_sort.join(".");
+
+ events = jQuery.data(this, this.nodeType ? "events" : "__events__");
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ handlers = (events || {})[ event.type ];
+
+ if ( events && handlers ) {
+ // Clone the handlers to prevent manipulation
+ handlers = handlers.slice(0);
+
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
+
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+ }
+
+ return event.result;
+ },
+
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+
+ fix: function( event ) {
+ if ( event[ jQuery.expando ] ) {
+ return event;
+ }
+
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement,
+ body = document.body;
+
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
+ },
+
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
+
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
+
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( handleObj ) {
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
+ },
+
+ remove: function( handleObj ) {
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
+ }
+ },
+
+ beforeunload: {
+ setup: function( data, namespaces, eventHandle ) {
+ // We only want to do this special case on windows
+ if ( jQuery.isWindow( this ) ) {
+ this.onbeforeunload = eventHandle;
+ }
+ },
+
+ teardown: function( namespaces, eventHandle ) {
+ if ( this.onbeforeunload === eventHandle ) {
+ this.onbeforeunload = null;
+ }
+ }
+ }
+ }
+};
+
+jQuery.removeEvent = document.removeEventListener ?
+ function( elem, type, handle ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
+ function( elem, type, handle ) {
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
+ };
+
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
+ }
+
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else {
+ this.type = src;
+ }
+
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = jQuery.now();
+
+ // Mark it as fixed
+ this[ jQuery.expando ] = true;
+};
+
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+
+ // otherwise set the returnValue property of the original event to false (IE)
+ } else {
+ e.returnValue = false;
+ }
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
+
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
+
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ parent = parent.parentNode;
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) { }
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
+
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
+ };
+});
+
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
+
+ jQuery.event.special.submit = {
+ setup: function( data, namespaces ) {
+ if ( this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
+ var elem = e.target,
+ type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ e.liveFired = undefined;
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialSubmit" );
+ }
+ };
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+ var changeFilters,
+
+ getVal = function( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+ },
+
+ testChange = function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery.data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery.data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ e.liveFired = undefined;
+ return jQuery.event.trigger( e, arguments[1], elem );
+ }
+ };
+
+ jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ beforedeactivate: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information
+ beforeactivate: function( e ) {
+ var elem = e.target;
+ jQuery.data( elem, "_change_data", getVal(elem) );
+ }
+ },
+
+ setup: function( data, namespaces ) {
+ if ( this.type === "file" ) {
+ return false;
+ }
+
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
+ }
+
+ return rformElems.test( this.nodeName );
+ },
+
+ teardown: function( namespaces ) {
+ jQuery.event.remove( this, ".specialChange" );
+
+ return rformElems.test( this.nodeName );
+ }
+ };
+
+ changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
+}
+
+function trigger( type, elem, args ) {
+ args[0].type = type;
+ return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ if ( focusCounts[fix]++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --focusCounts[fix] === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.trigger( e, null, e.target );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) || data === false ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ if ( type === "unload" && name !== "one" ) {
+ this.one( type, data, fn );
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.add( this[i], type, handler, data );
+ }
+ }
+
+ return this;
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+
+ } else {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ jQuery.event.remove( this[i], type, fn );
+ }
+ }
+
+ return this;
+ },
+
+ delegate: function( selector, types, data, fn ) {
+ return this.live( types, data, fn, selector );
+ },
+
+ undelegate: function( selector, types, fn ) {
+ if ( arguments.length === 0 ) {
+ return this.unbind( "live" );
+
+ } else {
+ return this.die( types, null, fn, selector );
+ }
+ },
+
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
+ }
+ },
+
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ i = 1;
+
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+ }
+});
+
+var liveMap = {
+ focus: "focusin",
+ blur: "focusout",
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+};
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) {
+ var type, i = 0, match, namespaces, preType,
+ selector = origSelector || this.selector,
+ context = origSelector ? this : jQuery( this.context );
+
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split(" ");
+
+ while ( (type = types[ i++ ]) != null ) {
+ match = rnamespaces.exec( type );
+ namespaces = "";
+
+ if ( match ) {
+ namespaces = match[0];
+ type = type.replace( rnamespaces, "" );
+ }
+
+ if ( type === "hover" ) {
+ types.push( "mouseenter" + namespaces, "mouseleave" + namespaces );
+ continue;
+ }
+
+ preType = type;
+
+ if ( type === "focus" || type === "blur" ) {
+ types.push( liveMap[ type ] + namespaces );
+ type = type + namespaces;
+
+ } else {
+ type = (liveMap[ type ] || type) + namespaces;
+ }
+
+ if ( name === "live" ) {
+ // bind live handler
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
+ { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
+ }
+
+ } else {
+ // unbind live handler
+ context.unbind( "live." + liveConvert( type, selector ), fn );
+ }
+ }
+
+ return this;
+ };
+});
+
+function liveHandler( event ) {
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery.data( this, this.nodeType ? "events" : "__events__" );
+
+ if ( typeof events === "function" ) {
+ events = events.events;
+ }
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+ if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+ return;
+ }
+
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
+ event.liveFired = this;
+
+ var live = events.live.slice(0);
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) {
+ selectors.push( handleObj.selector );
+
+ } else {
+ live.splice( j--, 1 );
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
+ for ( j = 0; j < live.length; j++ ) {
+ handleObj = live[j];
+
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) ) {
+ elem = close.elem;
+ related = null;
+
+ // Those two events require additional checking
+ if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
+ related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
+ event.currentTarget = match.elem;
+ event.data = match.handleObj.data;
+ event.handleObj = match.handleObj;
+
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspace, "&");
+}
+
+jQuery.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").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
+ };
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
+});
+
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+ jQuery(window).bind("unload", function() {
+ for ( var id in jQuery.cache ) {
+ if ( jQuery.cache[ id ].handle ) {
+ // Try/Catch is to handle iframes being unloaded, see #4280
+ try {
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+ } catch(e) {}
+ }
+ }
+ });
+}
+
+
+/*!
+ * Sizzle CSS Selector Engine - v1.0
+ * Copyright 2009, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ * More information: http://sizzlejs.com/
+ */
+(function(){
+
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+ done = 0,
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function() {
+ baseHasDuplicate = false;
+ return 0;
+});
+
+var Sizzle = function( selector, context, results, seed ) {
+ results = results || [];
+ context = context || document;
+
+ var origContext = context;
+
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
+ return [];
+ }
+
+ if ( !selector || typeof selector !== "string" ) {
+ return results;
+ }
+
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
+ soFar = selector;
+
+ // Reset the position of the chunker regexp (start from head)
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
+
+ parts.push( m[1] );
+
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
+ }
+ } while ( m );
+
+ if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
+ if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
+ set = posProcess( parts[0] + parts[1], context );
+
+ } else {
+ set = Expr.relative[ parts[0] ] ?
+ [ context ] :
+ Sizzle( parts.shift(), context );
+
+ while ( parts.length ) {
+ selector = parts.shift();
+
+ if ( Expr.relative[ selector ] ) {
+ selector += parts.shift();
+ }
+
+ set = posProcess( selector, set );
+ }
+ }
+
+ } else {
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
+ }
+
+ if ( context ) {
+ ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
+
+ if ( parts.length > 0 ) {
+ checkSet = makeArray( set );
+
+ } else {
+ prune = false;
+ }
+
+ while ( parts.length ) {
+ cur = parts.pop();
+ pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
+
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+
+ } else {
+ checkSet = parts = [];
+ }
+ }
+
+ if ( !checkSet ) {
+ checkSet = set;
+ }
+
+ if ( !checkSet ) {
+ Sizzle.error( cur || selector );
+ }
+
+ if ( toString.call(checkSet) === "[object Array]" ) {
+ if ( !prune ) {
+ results.push.apply( results, checkSet );
+
+ } else if ( context && context.nodeType === 1 ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+ results.push( set[i] );
+ }
+ }
+
+ } else {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
+ results.push( set[i] );
+ }
+ }
+ }
+
+ } else {
+ makeArray( checkSet, results );
+ }
+
+ if ( extra ) {
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
+
+ return results;
+};
+
+Sizzle.uniqueSort = function( results ) {
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort( sortOrder );
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
+ }
+ }
+ }
+ }
+
+ return results;
+};
+
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
+};
+
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
+
+ if ( !expr ) {
+ return [];
+ }
+
+ for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
+ var match,
+ type = Expr.order[i];
+
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice( 1, 1 );
+
+ if ( left.substr( left.length - 1 ) !== "\\" ) {
+ match[1] = (match[1] || "").replace(/\\/g, "");
+ set = Expr.find[ type ]( match, context, isXML );
+
+ if ( set != null ) {
+ expr = expr.replace( Expr.match[ type ], "" );
+ break;
+ }
+ }
+ }
+ }
+
+ if ( !set ) {
+ set = context.getElementsByTagName( "*" );
+ }
+
+ return { set: set, expr: expr };
+};
+
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
+
+ while ( expr && set.length ) {
+ for ( var type in Expr.filter ) {
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
+ anyFound = false;
+
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
+ result = [];
+ }
+
+ if ( Expr.preFilter[ type ] ) {
+ match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
+
+ if ( !match ) {
+ anyFound = found = true;
+
+ } else if ( match === true ) {
+ continue;
+ }
+ }
+
+ if ( match ) {
+ for ( var i = 0; (item = curLoop[i]) != null; i++ ) {
+ if ( item ) {
+ found = filter( item, match, i, curLoop );
+ var pass = not ^ !!found;
+
+ if ( inplace && found != null ) {
+ if ( pass ) {
+ anyFound = true;
+
+ } else {
+ curLoop[i] = false;
+ }
+
+ } else if ( pass ) {
+ result.push( item );
+ anyFound = true;
+ }
+ }
+ }
+ }
+
+ if ( found !== undefined ) {
+ if ( !inplace ) {
+ curLoop = result;
+ }
+
+ expr = expr.replace( Expr.match[ type ], "" );
+
+ if ( !anyFound ) {
+ return [];
+ }
+
+ break;
+ }
+ }
+ }
+
+ // Improper expression
+ if ( expr === old ) {
+ if ( anyFound == null ) {
+ Sizzle.error( expr );
+
+ } else {
+ break;
+ }
+ }
+
+ old = expr;
+ }
+
+ return curLoop;
+};
+
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
+var Expr = Sizzle.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|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ },
+
+ leftMatch: {},
+
+ attrMap: {
+ "class": "className",
+ "for": "htmlFor"
+ },
+
+ attrHandle: {
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ }
+ },
+
+ relative: {
+ "+": function(checkSet, part){
+ var isPartStr = typeof part === "string",
+ isTag = isPartStr && !/\W/.test( part ),
+ isPartStrNotTag = isPartStr && !isTag;
+
+ if ( isTag ) {
+ part = part.toLowerCase();
+ }
+
+ for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
+ if ( (elem = checkSet[i]) ) {
+ while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
+
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
+ elem || false :
+ elem === part;
+ }
+ }
+
+ if ( isPartStrNotTag ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ },
+
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !/\W/.test( part ) ) {
+ part = part.toLowerCase();
+
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ var parent = elem.parentNode;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
+ }
+ }
+
+ } else {
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
+ if ( elem ) {
+ checkSet[i] = isPartStr ?
+ elem.parentNode :
+ elem.parentNode === part;
+ }
+ }
+
+ if ( isPartStr ) {
+ Sizzle.filter( part, checkSet, true );
+ }
+ }
+ },
+
+ "": function(checkSet, part, isXML){
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
+ },
+
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !/\W/.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
+ checkFn = dirNodeCheck;
+ }
+
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
+ }
+ },
+
+ find: {
+ ID: function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
+ }
+ },
+
+ NAME: function( match, context ) {
+ if ( typeof context.getElementsByName !== "undefined" ) {
+ var ret = [],
+ results = context.getElementsByName( match[1] );
+
+ for ( var i = 0, l = results.length; i < l; i++ ) {
+ if ( results[i].getAttribute("name") === match[1] ) {
+ ret.push( results[i] );
+ }
+ }
+
+ return ret.length === 0 ? null : ret;
+ }
+ },
+
+ TAG: function( match, context ) {
+ return context.getElementsByTagName( match[1] );
+ }
+ },
+ preFilter: {
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace(/\\/g, "") + " ";
+
+ if ( isXML ) {
+ return match;
+ }
+
+ for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
+ if ( elem ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
+ result.push( elem );
+ }
+
+ } else if ( inplace ) {
+ curLoop[i] = false;
+ }
+ }
+ }
+
+ return false;
+ },
+
+ ID: function( match ) {
+ return match[1].replace(/\\/g, "");
+ },
+
+ TAG: function( match, curLoop ) {
+ return match[1].toLowerCase();
+ },
+
+ CHILD: function( match ) {
+ if ( match[1] === "nth" ) {
+ // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
+ var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
+ !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
+
+ // calculate the numbers (first)n+(last) including if they are negative
+ match[2] = (test[1] + (test[2] || 1)) - 0;
+ match[3] = test[3] - 0;
+ }
+
+ // TODO: Move to normal caching system
+ match[0] = done++;
+
+ return match;
+ },
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1].replace(/\\/g, "");
+
+ if ( !isXML && Expr.attrMap[name] ) {
+ match[1] = Expr.attrMap[name];
+ }
+
+ if ( match[2] === "~=" ) {
+ match[4] = " " + match[4] + " ";
+ }
+
+ return match;
+ },
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
+ if ( match[1] === "not" ) {
+ // If we're dealing with a complex expression, or a simple one
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
+ match[3] = Sizzle(match[3], null, null, curLoop);
+
+ } else {
+ var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
+ if ( !inplace ) {
+ result.push.apply( result, ret );
+ }
+
+ return false;
+ }
+
+ } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
+ return true;
+ }
+
+ return match;
+ },
+
+ POS: function( match ) {
+ match.unshift( true );
+
+ return match;
+ }
+ },
+
+ filters: {
+ enabled: function( elem ) {
+ return elem.disabled === false && elem.type !== "hidden";
+ },
+
+ disabled: function( elem ) {
+ return elem.disabled === true;
+ },
+
+ checked: function( elem ) {
+ return elem.checked === true;
+ },
+
+ selected: function( elem ) {
+ // Accessing this property makes selected-by-default
+ // options in Safari work properly
+ elem.parentNode.selectedIndex;
+
+ return elem.selected === true;
+ },
+
+ parent: function( elem ) {
+ return !!elem.firstChild;
+ },
+
+ empty: function( elem ) {
+ return !elem.firstChild;
+ },
+
+ has: function( elem, i, match ) {
+ return !!Sizzle( match[3], elem ).length;
+ },
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
+ },
+
+ text: function( elem ) {
+ return "text" === elem.type;
+ },
+ radio: function( elem ) {
+ return "radio" === elem.type;
+ },
+
+ checkbox: function( elem ) {
+ return "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return "file" === elem.type;
+ },
+ password: function( elem ) {
+ return "password" === elem.type;
+ },
+
+ submit: function( elem ) {
+ return "submit" === elem.type;
+ },
+
+ image: function( elem ) {
+ return "image" === elem.type;
+ },
+
+ reset: function( elem ) {
+ return "reset" === elem.type;
+ },
+
+ button: function( elem ) {
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+ },
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
+ }
+ },
+ setFilters: {
+ first: function( elem, i ) {
+ return i === 0;
+ },
+
+ last: function( elem, i, match, array ) {
+ return i === array.length - 1;
+ },
+
+ even: function( elem, i ) {
+ return i % 2 === 0;
+ },
+
+ odd: function( elem, i ) {
+ return i % 2 === 1;
+ },
+
+ lt: function( elem, i, match ) {
+ return i < match[3] - 0;
+ },
+
+ gt: function( elem, i, match ) {
+ return i > match[3] - 0;
+ },
+
+ nth: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ },
+
+ eq: function( elem, i, match ) {
+ return match[3] - 0 === i;
+ }
+ },
+ filter: {
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+
+ } else if ( name === "contains" ) {
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
+ } else if ( name === "not" ) {
+ var not = match[3];
+
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ } else {
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ }
+ },
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ if ( type === "first" ) {
+ return true;
+ }
+
+ node = elem;
+
+ case "last":
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+
+ return true;
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
+
+ if ( first === 1 && last === 0 ) {
+ return true;
+ }
+
+ var doneName = match[0],
+ parent = elem.parentNode;
+
+ if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
+ var count = 0;
+
+ for ( node = parent.firstChild; node; node = node.nextSibling ) {
+ if ( node.nodeType === 1 ) {
+ node.nodeIndex = ++count;
+ }
+ }
+
+ parent.sizcache = doneName;
+ }
+
+ var diff = elem.nodeIndex - last;
+
+ if ( first === 0 ) {
+ return diff === 0;
+
+ } else {
+ return ( diff % first === 0 && diff / first >= 0 );
+ }
+ }
+ },
+
+ ID: function( elem, match ) {
+ return elem.nodeType === 1 && elem.getAttribute("id") === match;
+ },
+
+ TAG: function( elem, match ) {
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
+ },
+
+ CLASS: function( elem, match ) {
+ return (" " + (elem.className || elem.getAttribute("class")) + " ")
+ .indexOf( match ) > -1;
+ },
+
+ ATTR: function( elem, match ) {
+ var name = match[1],
+ result = Expr.attrHandle[ name ] ?
+ Expr.attrHandle[ name ]( elem ) :
+ elem[ name ] != null ?
+ elem[ name ] :
+ elem.getAttribute( name ),
+ value = result + "",
+ type = match[2],
+ check = match[4];
+
+ return result == null ?
+ type === "!=" :
+ type === "=" ?
+ value === check :
+ type === "*=" ?
+ value.indexOf(check) >= 0 :
+ type === "~=" ?
+ (" " + value + " ").indexOf(check) >= 0 :
+ !check ?
+ value && result !== false :
+ type === "!=" ?
+ value !== check :
+ type === "^=" ?
+ value.indexOf(check) === 0 :
+ type === "$=" ?
+ value.substr(value.length - check.length) === check :
+ type === "|=" ?
+ value === check || value.substr(0, check.length + 1) === check + "-" :
+ false;
+ },
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
+
+ if ( filter ) {
+ return filter( elem, i, match, array );
+ }
+ }
+ }
+};
+
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
+
+for ( var type in Expr.match ) {
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
+}
+
+var makeArray = function( array, results ) {
+ array = Array.prototype.slice.call( array, 0 );
+
+ if ( results ) {
+ results.push.apply( results, array );
+ return results;
+ }
+
+ return array;
+};
+
+// Perform a simple check to determine if the browser is capable of
+// converting a NodeList to an array using builtin methods.
+// Also verifies that the returned array holds DOM nodes
+// (which is not the case in the Blackberry browser)
+try {
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
+
+// Provide a fallback method if it does not work
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
+
+ if ( toString.call(array) === "[object Array]" ) {
+ Array.prototype.push.apply( ret, array );
+
+ } else {
+ if ( typeof array.length === "number" ) {
+ for ( var l = array.length; i < l; i++ ) {
+ ret.push( array[i] );
+ }
+
+ } else {
+ for ( ; array[i]; i++ ) {
+ ret.push( array[i] );
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var sortOrder, siblingCheck;
+
+if ( document.documentElement.compareDocumentPosition ) {
+ sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
+ };
+
+} else {
+ sortOrder = function( a, b ) {
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ } else if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
+ }
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
+ }
+ }
+
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
+ }
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
+ };
+}
+
+// Utility function for retreiving the text value of an array of DOM nodes
+Sizzle.getText = function( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += Sizzle.getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+// Check to see if the browser returns elements by name when
+// querying by getElementById (and provide a workaround)
+(function(){
+ // We're going to inject a fake input element with a specified name
+ var form = document.createElement("div"),
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
+ form.innerHTML = "<a name='" + id + "'/>";
+
+ // Inject it into the root element, check its status, and remove it quickly
+ root.insertBefore( form, root.firstChild );
+
+ // The workaround has to do additional checks after a getElementById
+ // Which slows things down for other browsers (hence the branching)
+ if ( document.getElementById( id ) ) {
+ Expr.find.ID = function( match, context, isXML ) {
+ if ( typeof context.getElementById !== "undefined" && !isXML ) {
+ var m = context.getElementById(match[1]);
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
+ }
+ };
+
+ Expr.filter.ID = function( elem, match ) {
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
+ return elem.nodeType === 1 && node && node.nodeValue === match;
+ };
+ }
+
+ root.removeChild( form );
+
+ // release memory in IE
+ root = form = null;
+})();
+
+(function(){
+ // Check to see if the browser returns only elements
+ // when doing getElementsByTagName("*")
+
+ // Create a fake element
+ var div = document.createElement("div");
+ div.appendChild( document.createComment("") );
+
+ // Make sure no comments are found
+ if ( div.getElementsByTagName("*").length > 0 ) {
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
+
+ // Filter out possible comments
+ if ( match[1] === "*" ) {
+ var tmp = [];
+
+ for ( var i = 0; results[i]; i++ ) {
+ if ( results[i].nodeType === 1 ) {
+ tmp.push( results[i] );
+ }
+ }
+
+ results = tmp;
+ }
+
+ return results;
+ };
+ }
+
+ // Check to see if an attribute returns normalized href attributes
+ div.innerHTML = "<a href='#'></a>";
+
+ if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
+ div.firstChild.getAttribute("href") !== "#" ) {
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
+ };
+ }
+
+ // release memory in IE
+ div = null;
+})();
+
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
+ div.innerHTML = "<p class='TEST'></p>";
+
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
+
+ Sizzle = function( query, context, extra, seed ) {
+ context = context || document;
+
+ // Make sure that attribute selectors are quoted
+ query = query.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && !Sizzle.isXML(context) ) {
+ if ( context.nodeType === 9 ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var old = context.getAttribute( "id" ),
+ nid = old || id;
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ }
+
+ try {
+ return makeArray( context.querySelectorAll( "#" + nid + " " + query ), extra );
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ context.removeAttribute( "id" );
+ }
+ }
+ }
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
+
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
+ }
+
+ // release memory in IE
+ div = null;
+ })();
+}
+
+(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector,
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ if ( matches ) {
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ return matches.call( node, expr );
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
+ var div = document.createElement("div");
+
+ div.innerHTML = "<div class='test e'></div><div class='test'></div>";
+
+ // Opera can't find a second classname (in 9.6)
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
+ return;
+ }
+
+ // Safari caches class attributes, doesn't catch changes (in 3.2)
+ div.lastChild.className = "e";
+
+ if ( div.getElementsByClassName("e").length === 1 ) {
+ return;
+ }
+
+ Expr.order.splice(1, 0, "CLASS");
+ Expr.find.CLASS = function( match, context, isXML ) {
+ if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
+ return context.getElementsByClassName(match[1]);
+ }
+ };
+
+ // release memory in IE
+ div = null;
+})();
+
+function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 && !isXML ){
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( elem.nodeName.toLowerCase() === cur ) {
+ match = elem;
+ break;
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
+ for ( var i = 0, l = checkSet.length; i < l; i++ ) {
+ var elem = checkSet[i];
+
+ if ( elem ) {
+ var match = false;
+
+ elem = elem[dir];
+
+ while ( elem ) {
+ if ( elem.sizcache === doneName ) {
+ match = checkSet[elem.sizset];
+ break;
+ }
+
+ if ( elem.nodeType === 1 ) {
+ if ( !isXML ) {
+ elem.sizcache = doneName;
+ elem.sizset = i;
+ }
+
+ if ( typeof cur !== "string" ) {
+ if ( elem === cur ) {
+ match = true;
+ break;
+ }
+
+ } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
+ match = elem;
+ break;
+ }
+ }
+
+ elem = elem[dir];
+ }
+
+ checkSet[i] = match;
+ }
+ }
+}
+
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
+
+Sizzle.isXML = function( elem ) {
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
+ root = context.nodeType ? [context] : context;
+
+ // Position selectors must be done after the filter
+ // And so must :not(positional) so we move all PSEUDOs to the end
+ while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
+ later += match[0];
+ selector = selector.replace( Expr.match.PSEUDO, "" );
+ }
+
+ selector = Expr.relative[selector] ? selector + "*" : selector;
+
+ for ( var i = 0, l = root.length; i < l; i++ ) {
+ Sizzle( selector, root[i], tmpSet );
+ }
+
+ return Sizzle.filter( later, tmpSet );
+};
+
+// EXPOSE
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+
+
+})();
+
+
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS;
+
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ),
+ length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
+
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
+
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
+
+ closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ if ( jQuery.isArray( selectors ) ) {
+ var match, selector,
+ matches = {},
+ level = 1;
+
+ if ( cur && selectors.length ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
+
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
+
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
+
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
+ }
+ }
+
+ cur = cur.parentNode;
+ level++;
+ }
+ }
+
+ return ret;
+ }
+
+ var pos = POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
+
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context ) {
+ break;
+ }
+ }
+ }
+ }
+
+ ret = ret.length > 1 ? jQuery.unique(ret) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
+
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context || this.context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
+
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
+ }
+
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
+
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
+
+ return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ };
+});
+
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [],
+ cur = elem[ dir ];
+
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
+ }
+ cur = cur[dir];
+ }
+ return matched;
+ },
+
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
+
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
+
+ return cur;
+ },
+
+ sibling: function( n, elem ) {
+ var r = [];
+
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
+
+ return r;
+ }
+});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&#?\w+;/,
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked (html5)
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ raction = /\=([^="'>\s]+\/)>/g,
+ wrapMap = {
+ 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, "", "" ]
+ };
+
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
+
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery( this );
+
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
+
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
+
+ return jQuery.text( this );
+ },
+
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
+ }
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
+ }
+
+ return this;
+ },
+
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
+
+ return this.each(function() {
+ var self = jQuery( this ),
+ contents = self.contents();
+
+ if ( contents.length ) {
+ contents.wrapAll( html );
+
+ } else {
+ self.append( html );
+ }
+ });
+ },
+
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
+
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
+
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
+
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
+
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
+ }
+ },
+
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
+ }
+ },
+
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
+ if ( !keepData && elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ jQuery.cleanData( [ elem ] );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+ }
+
+ return this;
+ },
+
+ empty: function() {
+ for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName("*") );
+ }
+
+ // Remove any remaining nodes
+ while ( elem.firstChild ) {
+ elem.removeChild( elem.firstChild );
+ }
+ }
+
+ return this;
+ },
+
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function() {
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML,
+ ownerDocument = this.ownerDocument;
+
+ if ( !html ) {
+ var div = ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
+
+ return jQuery.clean([html.replace(rinlinejQuery, "")
+ // Handle the case in IE 8 where action=/test/> self-closes a tag
+ .replace(raction, '="$1">')
+ .replace(rleadingWhitespace, "")], ownerDocument)[0];
+ } else {
+ return this.cloneNode(true);
+ }
+ });
+
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ cloneCopyEvent( this, ret );
+ cloneCopyEvent( this.find("*"), ret.find("*") );
+ }
+
+ // Return the cloned set
+ return ret;
+ },
+
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
+
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !rnocache.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+
+ value = value.replace(rxhtmlTag, "<$1></$2>");
+
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
+ }
+ }
+
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
+ }
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
+ });
+
+ } else {
+ this.empty().append( value );
+ }
+
+ return this;
+ },
+
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
+
+ if ( typeof value !== "string" ) {
+ value = jQuery( value ).detach();
+ }
+
+ return this.each(function() {
+ var next = this.nextSibling,
+ parent = this.parentNode;
+
+ jQuery( this ).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ }
+ },
+
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
+
+ domManip: function( args, table, callback ) {
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
+
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
+
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
+ }
+
+ if ( this[0] ) {
+ parent = value && value.parentNode;
+
+ // If we're in a fragment, just use that instead of building a new one
+ if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
+ results = { fragment: parent };
+
+ } else {
+ results = jQuery.buildFragment( args, this, scripts );
+ }
+
+ fragment = results.fragment;
+
+ if ( fragment.childNodes.length === 1 ) {
+ first = fragment = fragment.firstChild;
+ } else {
+ first = fragment.firstChild;
+ }
+
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ i > 0 || results.cacheable || this.length > 1 ?
+ fragment.cloneNode(true) :
+ fragment
+ );
+ }
+ }
+
+ if ( scripts.length ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
+
+ return this;
+ }
+});
+
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
+
+function cloneCopyEvent(orig, ret) {
+ var i = 0;
+
+ ret.each(function() {
+ if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+ return;
+ }
+
+ var oldData = jQuery.data( orig[i++] ),
+ curData = jQuery.data( this, oldData ),
+ events = oldData && oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ }
+ }
+ }
+ });
+}
+
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults,
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+
+ // Only cache "small" (1/2 KB) strings that are associated with the main document
+ // Cloning options loses the selected state, so don't cache them
+ // IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
+ // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
+ !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
+ }
+
+ if ( !fragment ) {
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
+
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
+
+ return { fragment: fragment, cacheable: cacheable };
+};
+
+jQuery.fragments = {};
+
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [],
+ insert = jQuery( selector ),
+ parent = this.length === 1 && this[0].parentNode;
+
+ if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
+ insert[ original ]( this[0] );
+ return this;
+
+ } else {
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery( insert[i] )[ original ]( elems );
+ ret = ret.concat( elems );
+ }
+
+ return this.pushStack( ret, name, insert.selector );
+ }
+ };
+});
+
+jQuery.extend({
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
+
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
+
+ var ret = [];
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
+
+ if ( !elem ) {
+ continue;
+ }
+
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
+
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
+
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
+
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
+
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
+
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
+
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = div.childNodes;
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+ }
+
+ if ( fragment ) {
+ for ( i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
+ },
+
+ cleanData: function( elems ) {
+ var data, id, cache = jQuery.cache,
+ special = jQuery.event.special,
+ deleteExpando = jQuery.support.deleteExpando;
+
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
+ id = elem[ jQuery.expando ];
+
+ if ( id ) {
+ data = cache[ id ];
+
+ if ( data && data.events ) {
+ for ( var type in data.events ) {
+ if ( special[ type ] ) {
+ jQuery.event.remove( elem, type );
+
+ } else {
+ jQuery.removeEvent( elem, type, data.handle );
+ }
+ }
+ }
+
+ if ( deleteExpando ) {
+ delete elem[ jQuery.expando ];
+
+ } else if ( elem.removeAttribute ) {
+ elem.removeAttribute( jQuery.expando );
+ }
+
+ delete cache[ id ];
+ }
+ }
+ }
+});
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
+ ropacity = /opacity=([^)]*)/,
+ rdashAlpha = /-([a-z])/ig,
+ rupper = /([A-Z])/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+ curCSS,
+
+ getComputedStyle,
+ currentStyle,
+
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
+
+jQuery.fn.css = function( name, value ) {
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
+
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
+ });
+};
+
+jQuery.extend({
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
+ }
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "zIndex": true,
+ "fontWeight": true,
+ "opacity": true,
+ "zoom": true,
+ "lineHeight": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
+
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
+ }
+
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( typeof value === "number" && isNaN( value ) || value == null ) {
+ return;
+ }
+
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( typeof value === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
+
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
+
+ // Otherwise just get the value from the style object
+ return style[ name ];
+ }
+ },
+
+ css: function( elem, name, extra ) {
+ // Make sure that we're working with the right name
+ var ret, origName = jQuery.camelCase( name ),
+ hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
+
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
+
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name, origName );
+ }
+ },
+
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
+
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ },
+
+ camelCase: function( string ) {
+ return string.replace( rdashAlpha, fcamelCase );
+ }
+});
+
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
+
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
+
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ val = getWH( elem, name, extra );
+
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ if ( val <= 0 ) {
+ val = curCSS( elem, name, name );
+
+ if ( val === "0px" && currentStyle ) {
+ val = currentStyle( elem, name, name );
+ }
+
+ if ( val != null ) {
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+ }
+
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ];
+
+ // Should return "auto" instead of 0, use 0 for
+ // temporary backwards-compat
+ return val === "" || val === "auto" ? "0px" : val;
+ }
+
+ return typeof val === "string" ? val : val + "px";
+ }
+ },
+
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat(value);
+
+ if ( value >= 0 ) {
+ return value + "px";
+ }
+
+ } else {
+ return value;
+ }
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test((computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style;
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // Set the alpha filter to set the opacity
+ var opacity = jQuery.isNaN(value) ?
+ "" :
+ "alpha(opacity=" + value * 100 + ")",
+ filter = style.filter || "";
+
+ style.filter = ralpha.test(filter) ?
+ filter.replace(ralpha, opacity) :
+ style.filter + ' ' + opacity;
+ }
+ };
+}
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, newName, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
+
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
+ }
+ }
+
+ return ret;
+ };
+}
+
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left, rsLeft,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ style = elem.style;
+
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
+ rsLeft = elem.runtimeStyle.left;
+
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
+
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+
+ return ret === "" ? "auto" : ret;
+ };
+}
+
+curCSS = getComputedStyle || currentStyle;
+
+function getWH( elem, name, extra ) {
+ var which = name === "width" ? cssWidth : cssHeight,
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return val;
+ }
+
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.css( elem, "padding" + this )) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.css( elem, "margin" + this )) || 0;
+
+ } else {
+ val -= parseFloat(jQuery.css( elem, "border" + this + "Width" )) || 0;
+ }
+ });
+
+ return val;
+}
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
+ };
+
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+
+
+
+
+var jsc = jQuery.now(),
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rinput = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rbracket = /\[\]$/,
+ jsre = /\=\?(&|$)/,
+ rquery = /\?/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ r20 = /%20/g,
+ rhash = /#.*$/,
+
+ // Keep a copy of the old load method
+ _load = jQuery.fn.load;
+
+jQuery.fn.extend({
+ load: function( url, params, callback ) {
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
+
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
+ var off = url.indexOf(" ");
+ if ( off >= 0 ) {
+ var selector = url.slice(off, url.length);
+ url = url.slice(0, off);
+ }
+
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params ) {
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
+ type = "POST";
+ }
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ dataType: "html",
+ data: params,
+ complete: function( res, status ) {
+ // If successful, inject the HTML into all the matched elements
+ if ( status === "success" || status === "notmodified" ) {
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(rscript, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+ }
+
+ if ( callback ) {
+ self.each( callback, [res.responseText, status, res] );
+ }
+ }
+ });
+
+ return this;
+ },
+
+ serialize: function() {
+ return jQuery.param(this.serializeArray());
+ },
+
+ serializeArray: function() {
+ return this.map(function() {
+ return this.elements ? jQuery.makeArray(this.elements) : this;
+ })
+ .filter(function() {
+ return this.name && !this.disabled &&
+ (this.checked || rselectTextarea.test(this.nodeName) ||
+ rinput.test(this.type));
+ })
+ .map(function( i, elem ) {
+ var val = jQuery(this).val();
+
+ return val == null ?
+ null :
+ jQuery.isArray(val) ?
+ jQuery.map( val, function( val, i ) {
+ return { name: elem.name, value: val };
+ }) :
+ { name: elem.name, value: val };
+ }).get();
+ }
+});
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+ jQuery.fn[o] = function( f ) {
+ return this.bind(o, f);
+ };
+});
+
+jQuery.extend({
+ get: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = null;
+ }
+
+ return jQuery.ajax({
+ type: "GET",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ getScript: function( url, callback ) {
+ return jQuery.get(url, null, callback, "script");
+ },
+
+ getJSON: function( url, data, callback ) {
+ return jQuery.get(url, data, callback, "json");
+ },
+
+ post: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
+ if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
+ callback = data;
+ data = {};
+ }
+
+ return jQuery.ajax({
+ type: "POST",
+ url: url,
+ data: data,
+ success: callback,
+ dataType: type
+ });
+ },
+
+ ajaxSetup: function( settings ) {
+ jQuery.extend( jQuery.ajaxSettings, settings );
+ },
+
+ ajaxSettings: {
+ url: location.href,
+ global: true,
+ type: "GET",
+ contentType: "application/x-www-form-urlencoded",
+ processData: true,
+ async: true,
+ /*
+ timeout: 0,
+ data: null,
+ username: null,
+ password: null,
+ traditional: false,
+ */
+ // This function can be overriden by calling jQuery.ajaxSetup
+ xhr: function() {
+ return new window.XMLHttpRequest();
+ },
+ accepts: {
+ xml: "application/xml, text/xml",
+ html: "text/html",
+ script: "text/javascript, application/javascript",
+ json: "application/json, text/javascript",
+ text: "text/plain",
+ _default: "*/*"
+ }
+ },
+
+ ajax: function( origSettings ) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings),
+ jsonp, status, data, type = s.type.toUpperCase(), noContent = rnoContent.test(type);
+
+ s.url = s.url.replace( rhash, "" );
+
+ // Use original (not extended) context object if it was provided
+ s.context = origSettings && origSettings.context != null ? origSettings.context : s;
+
+ // convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
+
+ // Handle JSONP Parameter Callbacks
+ if ( s.dataType === "jsonp" ) {
+ if ( type === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
+ s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
+ s.dataType = "json";
+ }
+
+ // Build temporary JSONP function
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+
+ // Replace the =? sequence both in the query string and the data
+ if ( s.data ) {
+ s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
+ s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+
+ // We need to make sure
+ // that a JSONP style response is executed properly
+ s.dataType = "script";
+
+ // Handle JSONP-style loading
+ var customJsonp = window[ jsonp ];
+
+ window[ jsonp ] = function( tmp ) {
+ if ( jQuery.isFunction( customJsonp ) ) {
+ customJsonp( tmp );
+
+ } else {
+ // Garbage collect
+ window[ jsonp ] = undefined;
+
+ try {
+ delete window[ jsonp ];
+ } catch( jsonpError ) {}
+ }
+
+ data = tmp;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ if ( head ) {
+ head.removeChild( script );
+ }
+ };
+ }
+
+ if ( s.dataType === "script" && s.cache === null ) {
+ s.cache = false;
+ }
+
+ if ( s.cache === false && noContent ) {
+ var ts = jQuery.now();
+
+ // try replacing _= if it is there
+ var ret = s.url.replace(rts, "$1_=" + ts);
+
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
+ }
+
+ // If data is available, append data to url for GET/HEAD requests
+ if ( s.data && noContent ) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
+ }
+
+ // Watch for a new set of requests
+ if ( s.global && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
+ }
+
+ // Matches an absolute URL, and saves the domain
+ var parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1].toLowerCase() !== location.protocol || parts[2].toLowerCase() !== location.host);
+
+ // If we're requesting a remote document
+ // and trying to load JSON or Script with a GET
+ if ( s.dataType === "script" && type === "GET" && remote ) {
+ var head = document.getElementsByTagName("head")[0] || document.documentElement;
+ var script = document.createElement("script");
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+ script.src = s.url;
+
+ // Handle Script loading
+ if ( !jsonp ) {
+ var done = false;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function() {
+ if ( !done && (!this.readyState ||
+ this.readyState === "loaded" || this.readyState === "complete") ) {
+ done = true;
+ jQuery.handleSuccess( s, xhr, status, data );
+ jQuery.handleComplete( s, xhr, status, data );
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+ }
+ };
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+
+ // We handle everything using the script element injection
+ return undefined;
+ }
+
+ var requestDone = false;
+
+ // Create the request object
+ var xhr = s.xhr();
+
+ if ( !xhr ) {
+ return;
+ }
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open(type, s.url, s.async, s.username, s.password);
+ } else {
+ xhr.open(type, s.url, s.async);
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ // Set content-type if data specified and content-body is valid for this type
+ if ( (s.data != null && !noContent) || (origSettings && origSettings.contentType) ) {
+ xhr.setRequestHeader("Content-Type", s.contentType);
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[s.url] ) {
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }
+ }
+
+ // Set header so the called script knows that it's an XMLHttpRequest
+ // Only send the header if it's not a remote XHR
+ if ( !remote ) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
+
+ // Set the Accepts header for the server, depending on the dataType
+ xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
+ s.accepts[ s.dataType ] + ", */*; q=0.01" :
+ s.accepts._default );
+ } catch( headerError ) {}
+
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false ) {
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+
+ // close opended socket
+ xhr.abort();
+ return false;
+ }
+
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSend", [xhr, s] );
+ }
+
+ // Wait for a response to come back
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+ // The request was aborted
+ if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
+ }
+
+ // The transfer is complete and the data is available, or the request timed out
+ } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
+ requestDone = true;
+ xhr.onreadystatechange = jQuery.noop;
+
+ status = isTimeout === "timeout" ?
+ "timeout" :
+ !jQuery.httpSuccess( xhr ) ?
+ "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+ "notmodified" :
+ "success";
+
+ var errMsg;
+
+ if ( status === "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
+ // process the data (runs the xml through httpData regardless of callback)
+ data = jQuery.httpData( xhr, s.dataType, s );
+ } catch( parserError ) {
+ status = "parsererror";
+ errMsg = parserError;
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status === "success" || status === "notmodified" ) {
+ // JSONP handles its own success callback
+ if ( !jsonp ) {
+ jQuery.handleSuccess( s, xhr, status, data );
+ }
+ } else {
+ jQuery.handleError( s, xhr, status, errMsg );
+ }
+
+ // Fire the complete handlers
+ if ( !jsonp ) {
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ if ( isTimeout === "timeout" ) {
+ xhr.abort();
+ }
+
+ // Stop memory leaks
+ if ( s.async ) {
+ xhr = null;
+ }
+ }
+ };
+
+ // Override the abort handler, if we can (IE 6 doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ if ( xhr ) {
+ // oldAbort has no call property in IE7 so
+ // just do it this way, which works in all
+ // browsers
+ Function.prototype.call.call( oldAbort, xhr );
+ }
+
+ onreadystatechange( "abort" );
+ };
+ } catch( abortError ) {}
+
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
+ }
+
+ // Send the data
+ try {
+ xhr.send( noContent || s.data == null ? null : s.data );
+
+ } catch( sendError ) {
+ jQuery.handleError( s, xhr, null, sendError );
+
+ // Fire the complete handlers
+ jQuery.handleComplete( s, xhr, status, data );
+ }
+
+ // firefox 1.5 doesn't fire statechange for sync requests
+ if ( !s.async ) {
+ onreadystatechange();
+ }
+
+ // return XMLHttpRequest to allow aborting the request etc.
+ return xhr;
+ },
+
+ // Serialize an array of form elements or a set of
+ // key/values into a query string
+ param: function( a, traditional ) {
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction(value) ? value() : value;
+ s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ };
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray(a) || a.jquery ) {
+ // Serialize the form elements
+ jQuery.each( a, function() {
+ add( this.name, this.value );
+ });
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[prefix], traditional, add );
+ }
+ }
+
+ // Return the resulting serialization
+ return s.join("&").replace(r20, "+");
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray(obj) && obj.length ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ if ( jQuery.isEmptyObject( obj ) ) {
+ add( prefix, "" );
+
+ // Serialize object item.
+ } else {
+ jQuery.each( obj, function( k, v ) {
+ buildParams( prefix + "[" + k + "]", v, traditional, add );
+ });
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {},
+
+ handleError: function( s, xhr, status, e ) {
+ // If a local callback was specified, fire it
+ if ( s.error ) {
+ s.error.call( s.context, xhr, status, e );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxError", [xhr, s, e] );
+ }
+ },
+
+ handleSuccess: function( s, xhr, status, data ) {
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success ) {
+ s.success.call( s.context, data, status, xhr );
+ }
+
+ // Fire the global callback
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxSuccess", [xhr, s] );
+ }
+ },
+
+ handleComplete: function( s, xhr, status ) {
+ // Process result
+ if ( s.complete ) {
+ s.complete.call( s.context, xhr, status );
+ }
+
+ // The request was completed
+ if ( s.global ) {
+ jQuery.triggerGlobal( s, "ajaxComplete", [xhr, s] );
+ }
+
+ // Handle the global AJAX counter
+ if ( s.global && jQuery.active-- === 1 ) {
+ jQuery.event.trigger( "ajaxStop" );
+ }
+ },
+
+ triggerGlobal: function( s, type, args ) {
+ (s.context && s.context.url == null ? jQuery(s.context) : jQuery.event).trigger(type, args);
+ },
+
+ // Determines if an XMLHttpRequest was successful or not
+ httpSuccess: function( xhr ) {
+ try {
+ // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
+ return !xhr.status && location.protocol === "file:" ||
+ xhr.status >= 200 && xhr.status < 300 ||
+ xhr.status === 304 || xhr.status === 1223;
+ } catch(e) {}
+
+ return false;
+ },
+
+ // Determines if an XMLHttpRequest returns NotModified
+ httpNotModified: function( xhr, url ) {
+ var lastModified = xhr.getResponseHeader("Last-Modified"),
+ etag = xhr.getResponseHeader("Etag");
+
+ if ( lastModified ) {
+ jQuery.lastModified[url] = lastModified;
+ }
+
+ if ( etag ) {
+ jQuery.etag[url] = etag;
+ }
+
+ return xhr.status === 304;
+ },
+
+ httpData: function( xhr, type, s ) {
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
+ data = xml ? xhr.responseXML : xhr.responseText;
+
+ if ( xml && data.documentElement.nodeName === "parsererror" ) {
+ jQuery.error( "parsererror" );
+ }
+
+ // Allow a pre-filtering function to sanitize the response
+ // s is checked to keep backwards compatibility
+ if ( s && s.dataFilter ) {
+ data = s.dataFilter( data, type );
+ }
+
+ // The filter can actually parse the response
+ if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
+
+ // If the type is "script", eval it in global context
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
+ jQuery.globalEval( data );
+ }
+ }
+
+ return data;
+ }
+
+});
+
+/*
+ * Create the request object; Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+if ( window.ActiveXObject ) {
+ jQuery.ajaxSettings.xhr = function() {
+ if ( window.location.protocol !== "file:" ) {
+ try {
+ return new window.XMLHttpRequest();
+ } catch(xhrError) {}
+ }
+
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch(activeError) {}
+ };
+}
+
+// Does this browser support XHR requests?
+jQuery.support.ajax = !!jQuery.ajaxSettings.xhr();
+
+
+
+
+var elemdisplay = {},
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)(.*)$/,
+ timerId,
+ fxAttrs = [
+ // height animations
+ [ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
+ // width animations
+ [ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
+ // opacity animations
+ [ "opacity" ]
+ ];
+
+jQuery.fn.extend({
+ show: function( speed, easing, callback ) {
+ var elem, display;
+
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery.data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
+ }
+
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery.data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
+ }
+
+ // Set the display of most of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery.data(elem, "olddisplay") || "";
+ }
+ }
+
+ return this;
+ }
+ },
+
+ hide: function( speed, easing, callback ) {
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("hide", 3), speed, easing, callback);
+
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" ) {
+ jQuery.data( this[i], "olddisplay", display );
+ }
+ }
+
+ // Set the display of the elements in a second loop
+ // to avoid the constant reflow
+ for ( i = 0; i < j; i++ ) {
+ this[i].style.display = "none";
+ }
+
+ return this;
+ }
+ },
+
+ // Save the old toggle function
+ _toggle: jQuery.fn.toggle,
+
+ toggle: function( fn, fn2, callback ) {
+ var bool = typeof fn === "boolean";
+
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
+ }
+
+ return this;
+ },
+
+ fadeTo: function( speed, to, easing, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, easing, callback);
+ },
+
+ animate: function( prop, speed, easing, callback ) {
+ var optall = jQuery.speed(speed, easing, callback);
+
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ var opt = jQuery.extend({}, optall), p,
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ self = this;
+
+ for ( p in prop ) {
+ var name = jQuery.camelCase( p );
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
+ return opt.complete.call(this);
+ }
+
+ if ( isElement && ( p === "height" || p === "width" ) ) {
+ // Make sure that nothing sneaks out
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ var display = defaultDisplay(this.nodeName);
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
+
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
+ }
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
+ }
+
+ if ( opt.overflow != null ) {
+ this.style.overflow = "hidden";
+ }
+
+ opt.curAnim = jQuery.extend({}, prop);
+
+ jQuery.each( prop, function( name, val ) {
+ var e = new jQuery.fx( self, opt, name );
+
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
+ start = e.cur() || 0;
+
+ if ( parts ) {
+ var end = parseFloat( parts[2] ),
+ unit = parts[3] || "px";
+
+ // We need to compute starting value
+ if ( unit !== "px" ) {
+ jQuery.style( self, name, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( self, name, start + unit);
+ }
+
+ // If a +=/-= token was provided, we're doing a relative animation
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
+
+ e.custom( start, end, unit );
+
+ } else {
+ e.custom( start, val, "" );
+ }
+ }
+ });
+
+ // For JS strict compliance
+ return true;
+ });
+ },
+
+ stop: function( clearQueue, gotoEnd ) {
+ var timers = jQuery.timers;
+
+ if ( clearQueue ) {
+ this.queue([]);
+ }
+
+ this.each(function() {
+ // go in reverse order so anything added to the queue during the loop is ignored
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
+ // force the next step to be the last
+ timers[i](true);
+ }
+
+ timers.splice(i, 1);
+ }
+ }
+ });
+
+ // start the next in the queue if the last step wasn't forced
+ if ( !gotoEnd ) {
+ this.dequeue();
+ }
+
+ return this;
+ }
+
+});
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
+// Generate shortcuts for custom animations
+jQuery.each({
+ slideDown: genFx("show", 1),
+ slideUp: genFx("hide", 1),
+ slideToggle: genFx("toggle", 1),
+ fadeIn: { opacity: "show" },
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
+ };
+});
+
+jQuery.extend({
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
+ complete: fn || !fn && easing ||
+ jQuery.isFunction( speed ) && speed,
+ duration: speed,
+ easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
+ };
+
+ opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
+
+ // Queueing
+ opt.old = opt.complete;
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
+ jQuery(this).dequeue();
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
+ opt.old.call( this );
+ }
+ };
+
+ return opt;
+ },
+
+ easing: {
+ linear: function( p, n, firstNum, diff ) {
+ return firstNum + diff * p;
+ },
+ swing: function( p, n, firstNum, diff ) {
+ return ((-Math.cos(p*Math.PI)/2) + 0.5) * diff + firstNum;
+ }
+ },
+
+ timers: [],
+
+ fx: function( elem, options, prop ) {
+ this.options = options;
+ this.elem = elem;
+ this.prop = prop;
+
+ if ( !options.orig ) {
+ options.orig = {};
+ }
+ }
+
+});
+
+jQuery.fx.prototype = {
+ // Simple function for setting a style value
+ update: function() {
+ if ( this.options.step ) {
+ this.options.step.call( this.elem, this.now, this );
+ }
+
+ (jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
+ },
+
+ // Get the current size
+ cur: function() {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
+ return this.elem[ this.prop ];
+ }
+
+ var r = parseFloat( jQuery.css( this.elem, this.prop ) );
+ return r && r > -10000 ? r : 0;
+ },
+
+ // Start an animation from one number to another
+ custom: function( from, to, unit ) {
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = jQuery.now();
+ this.start = from;
+ this.end = to;
+ this.unit = unit || this.unit || "px";
+ this.now = this.start;
+ this.pos = this.state = 0;
+
+ function t( gotoEnd ) {
+ return self.step(gotoEnd);
+ }
+
+ t.elem = this.elem;
+
+ if ( t() && jQuery.timers.push(t) && !timerId ) {
+ timerId = setInterval(fx.tick, fx.interval);
+ }
+ },
+
+ // Simple 'show' function
+ show: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.show = true;
+
+ // Begin the animation
+ // Make sure that we start at a small width/height to avoid any
+ // flash of content
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
+
+ // Start by showing the element
+ jQuery( this.elem ).show();
+ },
+
+ // Simple 'hide' function
+ hide: function() {
+ // Remember where we started, so that we can go back to it later
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
+ this.options.hide = true;
+
+ // Begin the animation
+ this.custom(this.cur(), 0);
+ },
+
+ // Each step of an animation
+ step: function( gotoEnd ) {
+ var t = jQuery.now(), done = true;
+
+ if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ this.now = this.end;
+ this.pos = this.state = 1;
+ this.update();
+
+ this.options.curAnim[ this.prop ] = true;
+
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
+ done = false;
+ }
+ }
+
+ if ( done ) {
+ // Reset the overflow
+ if ( this.options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
+ var elem = this.elem,
+ options = this.options;
+
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ } );
+ }
+
+ // Hide the element if the "hide" operation was done
+ if ( this.options.hide ) {
+ jQuery(this.elem).hide();
+ }
+
+ // Reset the properties, if the item has been hidden or shown
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style( this.elem, p, this.options.orig[p] );
+ }
+ }
+
+ // Execute the complete function
+ this.options.complete.call( this.elem );
+ }
+
+ return false;
+
+ } else {
+ var n = t - this.startTime;
+ this.state = n / this.options.duration;
+
+ // Perform the easing function, defaults to swing
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
+ this.now = this.start + ((this.end - this.start) * this.pos);
+
+ // Perform the next step of the animation
+ this.update();
+ }
+
+ return true;
+ }
+};
+
+jQuery.extend( jQuery.fx, {
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ interval: 13,
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
+ slow: 600,
+ fast: 200,
+ // Default speed
+ _default: 400
+ },
+
+ step: {
+ opacity: function( fx ) {
+ jQuery.style( fx.elem, "opacity", fx.now );
+ },
+
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
+ fx.elem[ fx.prop ] = fx.now;
+ }
+ }
+ }
+});
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function defaultDisplay( nodeName ) {
+ if ( !elemdisplay[ nodeName ] ) {
+ var elem = jQuery("<" + nodeName + ">").appendTo("body"),
+ display = elem.css("display");
+
+ elem.remove();
+
+ if ( display === "none" || display === "" ) {
+ display = "block";
+ }
+
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
+}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0], box;
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box || { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = (win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ),
+ scrollLeft = (win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft),
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
+
+ return { top: top, left: left };
+ };
+
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
+
+ while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
+ if ( elem === offsetParent ) {
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
+ }
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
+ prevComputedStyle = computedStyle;
+ }
+
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
+ left += body.offsetLeft;
+ }
+
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
+
+ return { top: top, left: left };
+ };
+}
+
+jQuery.offset = {
+ initialize: function() {
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
+
+ container.innerHTML = html;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
+
+ this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
+ this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
+
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
+ this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
+
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
+
+ body.removeChild( container );
+ body = container = innerDiv = checkDiv = table = td = null;
+ jQuery.offset.initialize = jQuery.noop;
+ },
+
+ bodyOffset: function( body ) {
+ var top = body.offsetTop,
+ left = body.offsetLeft;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
+ }
+
+ return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
+ // set position first, in-case top/left are set even on static elem
+ if ( position === "static" ) {
+ elem.style.position = "relative";
+ }
+
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" && jQuery.inArray('auto', [curCSSTop, curCSSLeft]) > -1),
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is absolute
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ }
+
+ curTop = calculatePosition ? curPosition.top : parseInt( curCSSTop, 10 ) || 0;
+ curLeft = calculatePosition ? curPosition.left : parseInt( curCSSLeft, 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
+ }
+};
+
+
+jQuery.fn.extend({
+ position: function() {
+ if ( !this[0] ) {
+ return null;
+ }
+
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
+ },
+
+ offsetParent: function() {
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
+ }
+});
+
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
+
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+
+ if ( val !== undefined ) {
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
+ } else {
+ win = getWindow( elem );
+
+ // Return the scroll offset
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
+ };
+});
+
+function getWindow( elem ) {
+ return jQuery.isWindow( elem ) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
+
+
+
+
+// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+jQuery.each([ "Height", "Width" ], function( i, name ) {
+
+ var type = name.toLowerCase();
+
+ // innerHeight and innerWidth
+ jQuery.fn["inner" + name] = function() {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, "padding" ) ) :
+ null;
+ };
+
+ // outerHeight and outerWidth
+ jQuery.fn["outer" + name] = function( margin ) {
+ return this[0] ?
+ parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) :
+ null;
+ };
+
+ jQuery.fn[ type ] = function( size ) {
+ // Get window width or height
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ if ( jQuery.isWindow( elem ) ) {
+ // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
+ return elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+ elem.document.body[ "client" + name ];
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
+ };
+
+});
+
+
+})(window);
+
+// shortcut
+(function (GLOBAL) {
+ /**
+ * http://www.openjs.com/scripts/events/keyboard_shortcuts/
+ * Version : 2.01.B
+ * By Binny V A
+ * License : BSD
+ */
+ GLOBAL.shortcut = {
+ 'all_shortcuts':{},//All the shortcuts are stored in this array
+ 'add': function(shortcut_combination,callback,opt) {
+ //Provide a set of default options
+ var default_options = {
+ 'type':'keydown',
+ 'propagate':false,
+ 'disable_in_input':false,
+ 'target':document,
+ 'keycode':false
+ }
+ if(!opt) opt = default_options;
+ else {
+ for(var dfo in default_options) {
+ if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
+ }
+ }
+
+ var ele = opt.target;
+ if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
+ var ths = this;
+ shortcut_combination = shortcut_combination.toLowerCase();
+
+ //The function to be called at keypress
+ var func = function(e) {
+ e = e || window.event;
+
+ if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
+ var element;
+ if(e.target) element=e.target;
+ else if(e.srcElement) element=e.srcElement;
+ if(element.nodeType==3) element=element.parentNode;
+
+ if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
+ }
+
+ //Find Which key is pressed
+ if (e.keyCode) code = e.keyCode;
+ else if (e.which) code = e.which;
+ var character = String.fromCharCode(code).toLowerCase();
+
+ if(code == 188) character=","; //If the user presses , when the type is onkeydown
+ if(code == 190) character="."; //If the user presses , when the type is onkeydown
+
+ var keys = shortcut_combination.split("+");
+ //Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
+ var kp = 0;
+
+ //Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
+ var shift_nums = {
+ "`":"~",
+ "1":"!",
+ "2":"@",
+ "3":"#",
+ "4":"$",
+ "5":"%",
+ "6":"^",
+ "7":"&",
+ "8":"*",
+ "9":"(",
+ "0":")",
+ "-":"_",
+ "=":"+",
+ ";":":",
+ "'":"\"",
+ ",":"<",
+ ".":">",
+ "/":"?",
+ "\\":"|"
+ }
+ //Special Keys - and their codes
+ var special_keys = {
+ '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
+ }
+
+ var modifiers = {
+ shift: { wanted:false, pressed:false},
+ ctrl : { wanted:false, pressed:false},
+ alt : { wanted:false, pressed:false},
+ meta : { wanted:false, pressed:false} //Meta is Mac specific
+ };
+
+ if(e.ctrlKey) modifiers.ctrl.pressed = true;
+ if(e.shiftKey) modifiers.shift.pressed = true;
+ if(e.altKey) modifiers.alt.pressed = true;
+ if(e.metaKey) modifiers.meta.pressed = true;
+
+ for(var i=0; k=keys[i],i<keys.length; i++) {
+ //Modifiers
+ if(k == 'ctrl' || k == 'control') {
+ kp++;
+ modifiers.ctrl.wanted = true;
+
+ } else if(k == 'shift') {
+ kp++;
+ modifiers.shift.wanted = true;
+
+ } else if(k == 'alt') {
+ kp++;
+ modifiers.alt.wanted = true;
+ } else if(k == 'meta') {
+ kp++;
+ modifiers.meta.wanted = true;
+ } else if(k.length > 1) { //If it is a special key
+ if(special_keys[k] == code) kp++;
+
+ } else if(opt['keycode']) {
+ if(opt['keycode'] == code) kp++;
+
+ } else { //The special keys did not match
+ if(character == k) kp++;
+ else {
+ if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
+ character = shift_nums[character];
+ if(character == k) kp++;
+ }
+ }
+ }
+ }
+
+ if(kp == keys.length &&
+ modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
+ modifiers.shift.pressed == modifiers.shift.wanted &&
+ modifiers.alt.pressed == modifiers.alt.wanted &&
+ modifiers.meta.pressed == modifiers.meta.wanted) {
+ callback(e);
+
+ if(!opt['propagate']) { //Stop the event
+ //e.cancelBubble is supported by IE - this will kill the bubbling process.
+ e.cancelBubble = true;
+ e.returnValue = false;
+
+ //e.stopPropagation works in Firefox.
+ if (e.stopPropagation) {
+ e.stopPropagation();
+ e.preventDefault();
+ }
+ return false;
+ }
+ }
+ }
+ this.all_shortcuts[shortcut_combination] = {
+ 'callback':func,
+ 'target':ele,
+ 'event': opt['type']
+ };
+ //Attach the function with the event
+ if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
+ else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
+ else ele['on'+opt['type']] = func;
+ },
+
+ //Remove the shortcut - just specify the shortcut and I will remove the binding
+ 'remove':function(shortcut_combination) {
+ shortcut_combination = shortcut_combination.toLowerCase();
+ var binding = this.all_shortcuts[shortcut_combination];
+ delete(this.all_shortcuts[shortcut_combination])
+ if(!binding) return;
+ var type = binding['event'];
+ var ele = binding['target'];
+ var callback = binding['callback'];
+
+ if(ele.detachEvent) ele.detachEvent('on'+type, callback);
+ else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
+ else ele['on'+type] = false;
+ }
+ };
+})(this);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/css/respec2.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,401 @@
+
+/*
+ XXX this is not up to date with the needs of various other parts, it will require
+ to be synched up with the latest developments
+ It may be that this will be split up so that only the parts that are acually used
+ by the document get to be included (e.g. WebIDL).
+*/
+
+/*****************************************************************
+ * ReSpec 2 CSS
+ * Robin Berjon, 2010-01-04
+ *****************************************************************/
+
+/* --- INLINES --- */
+em.rfc2119 {
+ text-transform: lowercase;
+ font-variant: small-caps;
+ font-style: normal;
+ color: #900;
+}
+
+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: medium solid #99c;
+ text-decoration: none;
+}
+
+a.externalDFN {
+ color: inherit;
+ border-bottom: medium dotted #ccc;
+ text-decoration: none;
+}
+
+a.bibref {
+ text-decoration: none;
+}
+
+code {
+ color: #ff4500;
+}
+
+
+/* --- 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 {
+ font-weight: bold;
+ color: #005a9c;
+}
+
+.idlSuperclass {
+ font-style: italic;
+ color: #005a9c;
+}
+
+/*.idlAttribute*/
+.idlAttrType {
+ color: #005a9c;
+}
+.idlAttrName {
+ color: #ff4500;
+}
+.idlAttrName a {
+ color: #ff4500;
+ border-bottom: 1px dotted #ff4500;
+ text-decoration: none;
+}
+
+/*.idlMethod*/
+.idlMethType {
+ 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 {
+ margin-left: 2em;
+}
+
+.attributes dt, .methods dt, .constants dt {
+ font-weight: normal;
+}
+
+.attributes dt code, .methods dt code, .constants dt code {
+ font-weight: bold;
+ color: #000;
+ font-family: monospace;
+}
+
+.attributes dt code {
+ background: #ffffd2;
+}
+
+.attributes dt .idlAttrType 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 {
+ 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%;
+}
+
+/* --- TOC --- */
+.toc a {
+ text-decoration: none;
+}
+
+a .secno {
+ color: #000;
+}
+
+/* --- 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;
+}
+
+/* --- EXAMPLES --- */
+pre.example {
+ border-top: 1px solid #ff4500;
+ border-bottom: 1px solid #ff4500;
+ padding: 1em;
+ margin: 2em 0;
+}
+
+pre.example::before {
+ content: "Example";
+ display: block;
+ width: 150px;
+ background: #ff4500;
+ color: #fff;
+ font-family: initial;
+ padding: 3px;
+ font-weight: bold;
+ margin: -1em 0 1em -1em;
+}
+
+/* --- EDITORIAL NOTES --- */
+.issue {
+ padding: 1em;
+ border: 1px solid #f00;
+ background: #ffc;
+}
+
+.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;
+}
+
+.note {
+ padding: 1em;
+ border: 2px solid #cff6d9;
+ background: #e2fff0;
+}
+
+.note::before {
+ content: "Note";
+ display: block;
+ width: 150px;
+ margin: -1.5em 0 0.5em 0;
+ font-weight: bold;
+ border: 1px solid #cff6d9;
+ background: #fff;
+ padding: 3px 1em;
+}
+
+
+/* --- SYNTAX HIGHLIGHTING --- */
+/* Pretty printing styles. Used with prettify.js. */
+.str { color: #080; }
+.kwd { color: #008; }
+.com { color: #800; }
+.typ { color: #606; }
+.lit { color: #066; }
+.pun { color: #660; }
+.pln { color: #000; }
+.tag { color: #008; }
+.atn { color: #606; }
+.atv { color: #080; }
+.dec { color: #606; }
+/*pre.prettyprint { padding: 2px; border: 1px solid #888 }*/
+
+/* Specify class=linenums on a pre to get line numbering */
+ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */
+li.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { list-style-type: none }
+/* Alternate shading for lines */
+li.L1, li.L3, li.L5, li.L7, li.L9 { background: #eee }
+
+@media print {
+ .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 { color: #440; }
+ .pln { color: #000; }
+ .tag { color: #006; font-weight: bold; }
+ .atn { color: #404; }
+ .atv { color: #060; }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/data-include.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,71 @@
+
+// WARNING
+// This uses proxyLoad. It will attempt to work from the local drive, but you are
+// advised that it is likely to fail. It is recommended that if you wish to use this
+// feature, while writing your document, you view it using a local web server.
+
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("running data include");
+ this.doc = doc;
+ this.cb = cb;
+
+ // Process each, in turn.
+ // Invoke callback on last node.
+ this.processNodes();
+ },
+ // Process the first found node. When no nodes found
+ // invoke callback. This ensure that included data
+ // may itself include data, and that no further processing
+ // occurs until data inclusion is complete.
+ processNodes: function () {
+ var root = $(this.doc.documentElement);
+ var nodeList = root.find("[data-include]");
+ if (nodeList.length == 0) {
+ progress("done with data includes");
+ this.cb();
+ } else {
+ var node = nodeList.get(0);
+ var uri = node.getAttribute('data-include');
+
+ // Remove data-include attribute so that it is not processed
+ // a second time.
+ node.removeAttribute('data-include');
+ progress("process data include: " + uri);
+ this.proxyLoad(uri, this.updateNode(uri, node));
+ }
+ },
+
+ cb: null,
+ doc: null,
+
+ // Define internal proxyLoad to support QUnit mocking
+ proxyLoad: function(src, cb) {
+ utils.proxyLoad(src, cb);
+ },
+
+ // Update the node with the returned data and call
+ // the next node in the list, or the callback when done.
+ updateNode: function (uri, node) {
+ var self = this;
+ return function (data) {
+ //alert("uri: " + uri + ", node: " + node + ", data: " + data)
+ if (data) {
+ var flist = node.getAttribute('data-oninclude');
+ node.removeAttribute('data-oninclude') ;
+ data = utils.runTransforms(data, flist);
+ $(node).html(data);
+ }
+ progress("data include (" + uri + "): done");
+
+ // Find next node to process.
+ self.processNodes();
+ };
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/data-transform.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,22 @@
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("running data transforms");
+ var root = $(doc.documentElement);
+ root.find("[data-transform]").each(function (i, node) {
+ var content = node.innerHTML;
+ var flist = node.getAttribute('data-transform');
+ node.removeAttribute('data-transform') ;
+ var content = utils.runTransforms(content, flist);
+ if (content) {
+ node.innerHTML = content ;
+ }
+ });
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/default-root-attr.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,15 @@
+
+define(
+ [],
+ function () {
+ return {
+ run: function (config, doc, cb) {
+ progress("defaulting root attributes");
+ var root = $(doc.documentElement);
+ if (!root.attr("lang")) root.attr({ lang: "en", dir: "ltr" });
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/dfn.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,30 @@
+// XXX untested
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("handling dfn");
+
+ doc.normalize();
+ var dfnMap = {};
+ $("dfn").each(function (i, dfn) {
+ var title = $(dfn).dfnTitle();
+ dfnMap[title] = $(dfn).makeID("dfn", title);
+ });
+
+ $("a:not([href])").each(function (i, ant) {
+ var $ant = $(ant);
+ if ($ant.hasClass("externalDFN")) return;
+ var title = $ant.dfnTitle();
+ if (dfnMap[title] && !(dfnMap[title] instanceof Function)) {
+ $ant.attr("href", "#" + dfnMap[title]).addClass("internalDFN");
+ }
+ });
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/difftool.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,48 @@
+// XXX untested
+// Shane's diff marking
+// @@ CONFIG
+// - diffTool
+// - previousDiffURI
+// - previousURI
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("Diff tool");
+ var self = this;
+
+ conf.diffTool = conf.diffTool || "http://www.aptest.com/standards/htmldiff/htmldiff.pl";
+ var diffURI = conf.previousDiffURI || conf.prevVersion;
+ if (diffURI) {
+ utils.registerSaveAction("Diffmark", function () {
+ utils.hideSaveOptions(); self.toDiffHTML(conf, diffURI);
+ })
+ }
+ cb();
+ },
+ toDiffHTML: function(conf, diffURI) {
+ // create a diff marked version against the previousURI
+ // strategy - open a window in which there is a form with the
+ // data needed for diff marking - submit the form so that the response populates
+ // page with the diff marked version
+ var base = window.location.href;
+ base = base.replace(/\/[^\/]*$/, "/");
+
+ var str = "";
+ str += "<body><form name='form' method='POST' action='" + conf.diffTool + "'>\n";
+ str += "<input type='hidden' name='base' value='" + base + "'>\n";
+ str += "<input type='hidden' name='oldfile' value='" + diffURI + "'>\n";
+ str += '<input type="hidden" name="newcontent" value="' + utils.esc(utils.stringifyHTML()) + '">\n';
+ str += '<p>Please wait...</p>';
+ str += "</form>\n";
+
+ var x = window.open() ;
+ x.document.write(str) ;
+ x.document.close() ;
+ x.document.form.submit() ;
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/examples.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,1548 @@
+// XXX untested
+// @@ CONFIG
+// - noReSpecCSS
+// IMPORTANT NOTE
+// This uses a different highlighter from the one in v1.
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ // XXX still need to handle examples here (add little header without CSS generated content)
+
+ // reindent
+ $("pre.example").each(function (i, ex) {
+ var $ex = $(ex);
+ var lines = $ex.html().split("\n");
+ while (lines.length && /^\s*$/.test(lines[0])) lines.shift();
+ while (lines.length && /^\s*$/.test(lines[lines.length - 1])) lines.pop();
+ var matches = /^(\s+)/.exec(lines[0]);
+ if (matches) {
+ var rep = new RegExp("^" + matches[1]);
+ for (var j = 0; j < lines.length; j++) {
+ lines[j] = lines[j].replace(rep, "");
+ }
+ }
+ $ex.html(lines.join("\n"));
+ });
+
+ // highlighting
+ progress("processing syntax highlighting");
+ var $highs = $("pre.highlight, code.highlight");
+ $highs.addClass("prettyprint");
+ if ($highs.length) prettyPrint();
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
+
+// Copyright (C) 2006 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/**
+ * @fileoverview
+ * some functions for browser-side pretty printing of code contained in html.
+ * <p>
+ *
+ * For a fairly comprehensive set of languages see the
+ * <a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html#langs">README</a>
+ * file that came with this source. At a minimum, the lexer should work on a
+ * number of languages including C and friends, Java, Python, Bash, SQL, HTML,
+ * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk
+ * and a subset of Perl, but, because of commenting conventions, doesn't work on
+ * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class.
+ * <p>
+ * Usage: <ol>
+ * <li> include this source file in an html page via
+ * {@code <script type="text/javascript" src="/path/to/prettify.js"></script>}
+ * <li> define style rules. See the example page for examples.
+ * <li> mark the {@code <pre>} and {@code <code>} tags in your source with
+ * {@code class=prettyprint.}
+ * You can also use the (html deprecated) {@code <xmp>} tag, but the pretty
+ * printer needs to do more substantial DOM manipulations to support that, so
+ * some css styles may not be preserved.
+ * </ol>
+ * That's it. I wanted to keep the API as simple as possible, so there's no
+ * need to specify which language the code is in, but if you wish, you can add
+ * another class to the {@code <pre>} or {@code <code>} element to specify the
+ * language, as in {@code <pre class="prettyprint lang-java">}. Any class that
+ * starts with "lang-" followed by a file extension, specifies the file type.
+ * See the "lang-*.js" files in this directory for code that implements
+ * per-language file handlers.
+ * <p>
+ * Change log:<br>
+ * cbeust, 2006/08/22
+ * <blockquote>
+ * Java annotations (start with "@") are now captured as literals ("lit")
+ * </blockquote>
+ * @requires console
+ */
+
+// JSLint declarations
+/*global console, document, navigator, setTimeout, window */
+
+/**
+ * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
+ * UI events.
+ * If set to {@code false}, {@code prettyPrint()} is synchronous.
+ */
+window['PR_SHOULD_USE_CONTINUATION'] = true;
+
+/** the number of characters between tab columns */
+window['PR_TAB_WIDTH'] = 8;
+
+/** Walks the DOM returning a properly escaped version of innerHTML.
+ * @param {Node} node
+ * @param {Array.<string>} out output buffer that receives chunks of HTML.
+ */
+window['PR_normalizedHtml']
+
+/** Contains functions for creating and registering new language handlers.
+ * @type {Object}
+ */
+ = window['PR']
+
+/** Pretty print a chunk of code.
+ *
+ * @param {string} sourceCodeHtml code as html
+ * @return {string} code as html, but prettier
+ */
+ = window['prettyPrintOne']
+/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
+ * {@code class=prettyprint} and prettify them.
+ * @param {Function?} opt_whenDone if specified, called when the last entry
+ * has been finished.
+ */
+ = window['prettyPrint'] = void 0;
+
+/** browser detection. @extern @returns false if not IE, otherwise the major version. */
+window['_pr_isIE6'] = function () {
+ var ieVersion = navigator && navigator.userAgent &&
+ navigator.userAgent.match(/\bMSIE ([678])\./);
+ ieVersion = ieVersion ? +ieVersion[1] : false;
+ window['_pr_isIE6'] = function () { return ieVersion; };
+ return ieVersion;
+};
+
+
+(function () {
+ // Keyword lists for various languages.
+ var FLOW_CONTROL_KEYWORDS =
+ "break continue do else for if return while ";
+ var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
+ "double enum extern float goto int long register short signed sizeof " +
+ "static struct switch typedef union unsigned void volatile ";
+ var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
+ "new operator private protected public this throw true try typeof ";
+ var CPP_KEYWORDS = COMMON_KEYWORDS + "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 wchar_t where ";
+ var JAVA_KEYWORDS = COMMON_KEYWORDS +
+ "abstract boolean byte extends final finally implements import " +
+ "instanceof null native package strictfp super synchronized throws " +
+ "transient ";
+ var CSHARP_KEYWORDS = JAVA_KEYWORDS +
+ "as base by checked decimal delegate descending 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 ";
+ var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
+ "debugger eval export function get null set undefined var with " +
+ "Infinity NaN ";
+ var PERL_KEYWORDS = "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 ";
+ var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "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 ";
+ var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "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 ";
+ var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
+ "function in local set then until ";
+ var ALL_KEYWORDS = (
+ CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
+ PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
+
+ // token style names. correspond to css classes
+ /** token style for a string literal */
+ var PR_STRING = 'str';
+ /** token style for a keyword */
+ var PR_KEYWORD = 'kwd';
+ /** token style for a comment */
+ var PR_COMMENT = 'com';
+ /** token style for a type */
+ var PR_TYPE = 'typ';
+ /** token style for a literal value. e.g. 1, null, true. */
+ var PR_LITERAL = 'lit';
+ /** token style for a punctuation string. */
+ var PR_PUNCTUATION = 'pun';
+ /** token style for a punctuation string. */
+ var PR_PLAIN = 'pln';
+
+ /** token style for an sgml tag. */
+ var PR_TAG = 'tag';
+ /** token style for a markup declaration such as a DOCTYPE. */
+ var PR_DECLARATION = 'dec';
+ /** token style for embedded source. */
+ var PR_SOURCE = 'src';
+ /** token style for an sgml attribute name. */
+ var PR_ATTRIB_NAME = 'atn';
+ /** token style for an sgml attribute value. */
+ var PR_ATTRIB_VALUE = 'atv';
+
+ /**
+ * A class that indicates a section of markup that is not code, e.g. to allow
+ * embedding of line numbers within code listings.
+ */
+ var PR_NOCODE = 'nocode';
+
+ /** A set of tokens that can precede a regular expression literal in
+ * javascript.
+ * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
+ * list, but I've removed ones that might be problematic when seen in
+ * languages that don't support regular expression literals.
+ *
+ * <p>Specifically, I've removed any keywords that can't precede a regexp
+ * literal in a syntactically legal javascript program, and I've removed the
+ * "in" keyword since it's not a keyword in many languages, and might be used
+ * as a count of inches.
+ *
+ * <p>The link a above does not accurately describe EcmaScript rules since
+ * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
+ * very well in practice.
+ *
+ * @private
+ */
+ var REGEXP_PRECEDER_PATTERN = function () {
+ var preceders = [
+ "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
+ "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
+ "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
+ "<", "<<", "<<=", "<=", "=", "==", "===", ">",
+ ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
+ "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
+ "||=", "~" /* handles =~ and !~ */,
+ "break", "case", "continue", "delete",
+ "do", "else", "finally", "instanceof",
+ "return", "throw", "try", "typeof"
+ ];
+ var pattern = '(?:^^|[+-]';
+ for (var i = 0; i < preceders.length; ++i) {
+ pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
+ }
+ pattern += ')\\s*'; // matches at end, and matches empty string
+ return pattern;
+ // CAVEAT: this does not properly handle the case where a regular
+ // expression immediately follows another since a regular expression may
+ // have flags for case-sensitivity and the like. Having regexp tokens
+ // adjacent is not valid in any language I'm aware of, so I'm punting.
+ // TODO: maybe style special characters inside a regexp as punctuation.
+ }();
+
+ // Define regexps here so that the interpreter doesn't have to create an
+ // object each time the function containing them is called.
+ // The language spec requires a new object created even if you don't access
+ // the $1 members.
+ var pr_amp = /&/g;
+ var pr_lt = /</g;
+ var pr_gt = />/g;
+ var pr_quot = /\"/g;
+ /** like textToHtml but escapes double quotes to be attribute safe. */
+ function attribToHtml(str) {
+ return str.replace(pr_amp, '&')
+ .replace(pr_lt, '<')
+ .replace(pr_gt, '>')
+ .replace(pr_quot, '"');
+ }
+
+ /** escapest html special characters to html. */
+ function textToHtml(str) {
+ return str.replace(pr_amp, '&')
+ .replace(pr_lt, '<')
+ .replace(pr_gt, '>');
+ }
+
+
+ var pr_ltEnt = /</g;
+ var pr_gtEnt = />/g;
+ var pr_aposEnt = /'/g;
+ var pr_quotEnt = /"/g;
+ var pr_ampEnt = /&/g;
+ var pr_nbspEnt = / /g;
+ /** unescapes html to plain text. */
+ function htmlToText(html) {
+ var pos = html.indexOf('&');
+ if (pos < 0) { return html; }
+ // Handle numeric entities specially. We can't use functional substitution
+ // since that doesn't work in older versions of Safari.
+ // These should be rare since most browsers convert them to normal chars.
+ for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
+ var end = html.indexOf(';', pos);
+ if (end >= 0) {
+ var num = html.substring(pos + 3, end);
+ var radix = 10;
+ if (num && num.charAt(0) === 'x') {
+ num = num.substring(1);
+ radix = 16;
+ }
+ var codePoint = parseInt(num, radix);
+ if (!isNaN(codePoint)) {
+ html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
+ html.substring(end + 1));
+ }
+ }
+ }
+
+ return html.replace(pr_ltEnt, '<')
+ .replace(pr_gtEnt, '>')
+ .replace(pr_aposEnt, "'")
+ .replace(pr_quotEnt, '"')
+ .replace(pr_nbspEnt, ' ')
+ .replace(pr_ampEnt, '&');
+ }
+
+ /** is the given node's innerHTML normally unescaped? */
+ function isRawContent(node) {
+ return 'XMP' === node.tagName;
+ }
+
+ var newlineRe = /[\r\n]/g;
+ /**
+ * Are newlines and adjacent spaces significant in the given node's innerHTML?
+ */
+ function isPreformatted(node, content) {
+ // PRE means preformatted, and is a very common case, so don't create
+ // unnecessary computed style objects.
+ if ('PRE' === node.tagName) { return true; }
+ if (!newlineRe.test(content)) { return true; } // Don't care
+ var whitespace = '';
+ // For disconnected nodes, IE has no currentStyle.
+ if (node.currentStyle) {
+ whitespace = node.currentStyle.whiteSpace;
+ } else if (window.getComputedStyle) {
+ // Firefox makes a best guess if node is disconnected whereas Safari
+ // returns the empty string.
+ whitespace = window.getComputedStyle(node, null).whiteSpace;
+ }
+ return !whitespace || whitespace === 'pre';
+ }
+
+ function normalizedHtml(node, out, opt_sortAttrs) {
+ switch (node.nodeType) {
+ case 1: // an element
+ var name = node.tagName.toLowerCase();
+
+ out.push('<', name);
+ var attrs = node.attributes;
+ var n = attrs.length;
+ if (n) {
+ if (opt_sortAttrs) {
+ var sortedAttrs = [];
+ for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
+ sortedAttrs.sort(function (a, b) {
+ return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
+ });
+ attrs = sortedAttrs;
+ }
+ for (var i = 0; i < n; ++i) {
+ var attr = attrs[i];
+ if (!attr.specified) { continue; }
+ out.push(' ', attr.name.toLowerCase(),
+ '="', attribToHtml(attr.value), '"');
+ }
+ }
+ out.push('>');
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ normalizedHtml(child, out, opt_sortAttrs);
+ }
+ if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
+ out.push('<\/', name, '>');
+ }
+ break;
+ case 3: case 4: // text
+ out.push(textToHtml(node.nodeValue));
+ break;
+ }
+ }
+
+ /**
+ * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
+ * matches the union o the sets o strings matched d by the input RegExp.
+ * Since it matches globally, if the input strings have a start-of-input
+ * anchor (/^.../), it is ignored for the purposes of unioning.
+ * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
+ * @return {RegExp} a global regex.
+ */
+ function combinePrefixPatterns(regexs) {
+ var capturedGroupIndex = 0;
+
+ var needToFoldCase = false;
+ var ignoreCase = false;
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.ignoreCase) {
+ ignoreCase = true;
+ } else if (/[a-z]/i.test(regex.source.replace(
+ /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
+ needToFoldCase = true;
+ ignoreCase = false;
+ break;
+ }
+ }
+
+ function decodeEscape(charsetPart) {
+ if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
+ switch (charsetPart.charAt(1)) {
+ case 'b': return 8;
+ case 't': return 9;
+ case 'n': return 0xa;
+ case 'v': return 0xb;
+ case 'f': return 0xc;
+ case 'r': return 0xd;
+ case 'u': case 'x':
+ return parseInt(charsetPart.substring(2), 16)
+ || charsetPart.charCodeAt(1);
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7':
+ return parseInt(charsetPart.substring(1), 8);
+ default: return charsetPart.charCodeAt(1);
+ }
+ }
+
+ function encodeEscape(charCode) {
+ if (charCode < 0x20) {
+ return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
+ }
+ var ch = String.fromCharCode(charCode);
+ if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
+ ch = '\\' + ch;
+ }
+ return ch;
+ }
+
+ function caseFoldCharset(charSet) {
+ var charsetParts = charSet.substring(1, charSet.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'));
+ var groups = [];
+ var ranges = [];
+ var inverse = charsetParts[0] === '^';
+ for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
+ var p = charsetParts[i];
+ switch (p) {
+ case '\\B': case '\\b':
+ case '\\D': case '\\d':
+ case '\\S': case '\\s':
+ case '\\W': case '\\w':
+ groups.push(p);
+ continue;
+ }
+ var start = decodeEscape(p);
+ var end;
+ if (i + 2 < n && '-' === charsetParts[i + 1]) {
+ end = decodeEscape(charsetParts[i + 2]);
+ i += 2;
+ } else {
+ end = start;
+ }
+ ranges.push([start, end]);
+ // If the range might intersect letters, then expand it.
+ if (!(end < 65 || start > 122)) {
+ if (!(end < 65 || start > 90)) {
+ ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
+ }
+ if (!(end < 97 || start > 122)) {
+ ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
+ }
+ }
+ }
+
+ // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
+ // -> [[1, 12], [14, 14], [16, 17]]
+ ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1] - a[1]); });
+ var consolidatedRanges = [];
+ var lastRange = [NaN, NaN];
+ for (var i = 0; i < ranges.length; ++i) {
+ var range = ranges[i];
+ if (range[0] <= lastRange[1] + 1) {
+ lastRange[1] = Math.max(lastRange[1], range[1]);
+ } else {
+ consolidatedRanges.push(lastRange = range);
+ }
+ }
+
+ var out = ['['];
+ if (inverse) { out.push('^'); }
+ out.push.apply(out, groups);
+ for (var i = 0; i < consolidatedRanges.length; ++i) {
+ var range = consolidatedRanges[i];
+ out.push(encodeEscape(range[0]));
+ if (range[1] > range[0]) {
+ if (range[1] + 1 > range[0]) { out.push('-'); }
+ out.push(encodeEscape(range[1]));
+ }
+ }
+ out.push(']');
+ return out.join('');
+ }
+
+ function allowAnywhereFoldCaseAndRenumberGroups(regex) {
+ // Split into character sets, escape sequences, punctuation strings
+ // like ('(', '(?:', ')', '^'), and runs of characters that do not
+ // include any of the above.
+ var parts = regex.source.match(
+ new RegExp(
+ '(?:'
+ + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]' // a character set
+ + '|\\\\u[A-Fa-f0-9]{4}' // a unicode escape
+ + '|\\\\x[A-Fa-f0-9]{2}' // a hex escape
+ + '|\\\\[0-9]+' // a back-reference or octal escape
+ + '|\\\\[^ux0-9]' // other escape sequence
+ + '|\\(\\?[:!=]' // start of a non-capturing group
+ + '|[\\(\\)\\^]' // start/emd of a group, or line start
+ + '|[^\\x5B\\x5C\\(\\)\\^]+' // run of other characters
+ + ')',
+ 'g'));
+ var n = parts.length;
+
+ // Maps captured group numbers to the number they will occupy in
+ // the output or to -1 if that has not been determined, or to
+ // undefined if they need not be capturing in the output.
+ var capturedGroups = [];
+
+ // Walk over and identify back references to build the capturedGroups
+ // mapping.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ // groups are 1-indexed, so max group index is count of '('
+ ++groupIndex;
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ capturedGroups[decimalValue] = -1;
+ }
+ }
+ }
+
+ // Renumber groups and reduce capturing groups to non-capturing groups
+ // where possible.
+ for (var i = 1; i < capturedGroups.length; ++i) {
+ if (-1 === capturedGroups[i]) {
+ capturedGroups[i] = ++capturedGroupIndex;
+ }
+ }
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ var p = parts[i];
+ if (p === '(') {
+ ++groupIndex;
+ if (capturedGroups[groupIndex] === undefined) {
+ parts[i] = '(?:';
+ }
+ } else if ('\\' === p.charAt(0)) {
+ var decimalValue = +p.substring(1);
+ if (decimalValue && decimalValue <= groupIndex) {
+ parts[i] = '\\' + capturedGroups[groupIndex];
+ }
+ }
+ }
+
+ // Remove any prefix anchors so that the output will match anywhere.
+ // ^^ really does mean an anchored match though.
+ for (var i = 0, groupIndex = 0; i < n; ++i) {
+ if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
+ }
+
+ // Expand letters to groupts to handle mixing of case-sensitive and
+ // case-insensitive patterns if necessary.
+ if (regex.ignoreCase && needToFoldCase) {
+ for (var i = 0; i < n; ++i) {
+ var p = parts[i];
+ var ch0 = p.charAt(0);
+ if (p.length >= 2 && ch0 === '[') {
+ parts[i] = caseFoldCharset(p);
+ } else if (ch0 !== '\\') {
+ // TODO: handle letters in numeric escapes.
+ parts[i] = p.replace(
+ /[a-zA-Z]/g,
+ function (ch) {
+ var cc = ch.charCodeAt(0);
+ return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
+ });
+ }
+ }
+ }
+
+ return parts.join('');
+ }
+
+ var rewritten = [];
+ for (var i = 0, n = regexs.length; i < n; ++i) {
+ var regex = regexs[i];
+ if (regex.global || regex.multiline) { throw new Error('' + regex); }
+ rewritten.push(
+ '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
+ }
+
+ return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
+ }
+
+ var PR_innerHtmlWorks = null;
+ function getInnerHtml(node) {
+ // inner html is hopelessly broken in Safari 2.0.4 when the content is
+ // an html description of well formed XML and the containing tag is a PRE
+ // tag, so we detect that case and emulate innerHTML.
+ if (null === PR_innerHtmlWorks) {
+ var testNode = document.createElement('PRE');
+ testNode.appendChild(
+ document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
+ PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
+ }
+
+ if (PR_innerHtmlWorks) {
+ var content = node.innerHTML;
+ // XMP tags contain unescaped entities so require special handling.
+ if (isRawContent(node)) {
+ content = textToHtml(content);
+ } else if (!isPreformatted(node, content)) {
+ content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
+ .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
+ }
+ return content;
+ }
+
+ var out = [];
+ for (var child = node.firstChild; child; child = child.nextSibling) {
+ normalizedHtml(child, out);
+ }
+ return out.join('');
+ }
+
+ /** returns a function that expand tabs to spaces. This function can be fed
+ * successive chunks of text, and will maintain its own internal state to
+ * keep track of how tabs are expanded.
+ * @return {function (string) : string} a function that takes
+ * plain text and return the text with tabs expanded.
+ * @private
+ */
+ function makeTabExpander(tabWidth) {
+ var SPACES = ' ';
+ var charInLine = 0;
+
+ return function (plainText) {
+ // walk over each character looking for tabs and newlines.
+ // On tabs, expand them. On newlines, reset charInLine.
+ // Otherwise increment charInLine
+ var out = null;
+ var pos = 0;
+ for (var i = 0, n = plainText.length; i < n; ++i) {
+ var ch = plainText.charAt(i);
+
+ switch (ch) {
+ case '\t':
+ if (!out) { out = []; }
+ out.push(plainText.substring(pos, i));
+ // calculate how much space we need in front of this part
+ // nSpaces is the amount of padding -- the number of spaces needed
+ // to move us to the next column, where columns occur at factors of
+ // tabWidth.
+ var nSpaces = tabWidth - (charInLine % tabWidth);
+ charInLine += nSpaces;
+ for (; nSpaces >= 0; nSpaces -= SPACES.length) {
+ out.push(SPACES.substring(0, nSpaces));
+ }
+ pos = i + 1;
+ break;
+ case '\n':
+ charInLine = 0;
+ break;
+ default:
+ ++charInLine;
+ }
+ }
+ if (!out) { return plainText; }
+ out.push(plainText.substring(pos));
+ return out.join('');
+ };
+ }
+
+ var pr_chunkPattern = new RegExp(
+ '[^<]+' // A run of characters other than '<'
+ + '|<\!--[\\s\\S]*?--\>' // an HTML comment
+ + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>' // a CDATA section
+ // a probable tag that should not be highlighted
+ + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
+ + '|<', // A '<' that does not begin a larger chunk
+ 'g');
+ var pr_commentPrefix = /^<\!--/;
+ var pr_cdataPrefix = /^<!\[CDATA\[/;
+ var pr_brPrefix = /^<br\b/i;
+ var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
+
+ /** split markup into chunks of html tags (style null) and
+ * plain text (style {@link #PR_PLAIN}), converting tags which are
+ * significant for tokenization (<br>) into their textual equivalent.
+ *
+ * @param {string} s html where whitespace is considered significant.
+ * @return {Object} source code and extracted tags.
+ * @private
+ */
+ function extractTags(s) {
+ // since the pattern has the 'g' modifier and defines no capturing groups,
+ // this will return a list of all chunks which we then classify and wrap as
+ // PR_Tokens
+ var matches = s.match(pr_chunkPattern);
+ var sourceBuf = [];
+ var sourceBufLen = 0;
+ var extractedTags = [];
+ if (matches) {
+ for (var i = 0, n = matches.length; i < n; ++i) {
+ var match = matches[i];
+ if (match.length > 1 && match.charAt(0) === '<') {
+ if (pr_commentPrefix.test(match)) { continue; }
+ if (pr_cdataPrefix.test(match)) {
+ // strip CDATA prefix and suffix. Don't unescape since it's CDATA
+ sourceBuf.push(match.substring(9, match.length - 3));
+ sourceBufLen += match.length - 12;
+ } else if (pr_brPrefix.test(match)) {
+ // <br> tags are lexically significant so convert them to text.
+ // This is undone later.
+ sourceBuf.push('\n');
+ ++sourceBufLen;
+ } else {
+ if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
+ // A <span class="nocode"> will start a section that should be
+ // ignored. Continue walking the list until we see a matching end
+ // tag.
+ var name = match.match(pr_tagNameRe)[2];
+ var depth = 1;
+ var j;
+ end_tag_loop:
+ for (j = i + 1; j < n; ++j) {
+ var name2 = matches[j].match(pr_tagNameRe);
+ if (name2 && name2[2] === name) {
+ if (name2[1] === '/') {
+ if (--depth === 0) { break end_tag_loop; }
+ } else {
+ ++depth;
+ }
+ }
+ }
+ if (j < n) {
+ extractedTags.push(
+ sourceBufLen, matches.slice(i, j + 1).join(''));
+ i = j;
+ } else { // Ignore unclosed sections.
+ extractedTags.push(sourceBufLen, match);
+ }
+ } else {
+ extractedTags.push(sourceBufLen, match);
+ }
+ }
+ } else {
+ var literalText = htmlToText(match);
+ sourceBuf.push(literalText);
+ sourceBufLen += literalText.length;
+ }
+ }
+ }
+ return { source: sourceBuf.join(''), tags: extractedTags };
+ }
+
+ /** True if the given tag contains a class attribute with the nocode class. */
+ function isNoCodeTag(tag) {
+ return !!tag
+ // First canonicalize the representation of attributes
+ .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
+ ' $1="$2$3$4"')
+ // Then look for the attribute we want.
+ .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
+ }
+
+ /**
+ * Apply the given language handler to sourceCode and add the resulting
+ * decorations to out.
+ * @param {number} basePos the index of sourceCode within the chunk of source
+ * whose decorations are already present on out.
+ */
+ function appendDecorations(basePos, sourceCode, langHandler, out) {
+ if (!sourceCode) { return; }
+ var job = {
+ source: sourceCode,
+ basePos: basePos
+ };
+ langHandler(job);
+ out.push.apply(out, job.decorations);
+ }
+
+ /** Given triples of [style, pattern, context] returns a lexing function,
+ * The lexing function interprets the patterns to find token boundaries and
+ * returns a decoration list of the form
+ * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
+ * where index_n is an index into the sourceCode, and style_n is a style
+ * constant like PR_PLAIN. index_n-1 <= index_n, and style_n-1 applies to
+ * all characters in sourceCode[index_n-1:index_n].
+ *
+ * The stylePatterns is a list whose elements have the form
+ * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
+ *
+ * Style is a style constant like PR_PLAIN, or can be a string of the
+ * form 'lang-FOO', where FOO is a language extension describing the
+ * language of the portion of the token in $1 after pattern executes.
+ * E.g., if style is 'lang-lisp', and group 1 contains the text
+ * '(hello (world))', then that portion of the token will be passed to the
+ * registered lisp handler for formatting.
+ * The text before and after group 1 will be restyled using this decorator
+ * so decorators should take care that this doesn't result in infinite
+ * recursion. For example, the HTML lexer rule for SCRIPT elements looks
+ * something like ['lang-js', /<[s]cript>(.+?)<\/script>/]. This may match
+ * '<script>foo()<\/script>', which would cause the current decorator to
+ * be called with '<script>' which would not match the same rule since
+ * group 1 must not be empty, so it would be instead styled as PR_TAG by
+ * the generic tag rule. The handler registered for the 'js' extension would
+ * then be called with 'foo()', and finally, the current decorator would
+ * be called with '<\/script>' which would not match the original rule and
+ * so the generic tag rule would identify it as a tag.
+ *
+ * Pattern must only match prefixes, and if it matches a prefix, then that
+ * match is considered a token with the same style.
+ *
+ * Context is applied to the last non-whitespace, non-comment token
+ * recognized.
+ *
+ * Shortcut is an optional string of characters, any of which, if the first
+ * character, gurantee that this pattern and only this pattern matches.
+ *
+ * @param {Array} shortcutStylePatterns patterns that always start with
+ * a known character. Must have a shortcut string.
+ * @param {Array} fallthroughStylePatterns patterns that will be tried in
+ * order if the shortcut ones fail. May have shortcuts.
+ *
+ * @return {function (Object)} a
+ * function that takes source code and returns a list of decorations.
+ */
+ function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
+ var shortcuts = {};
+ var tokenizer;
+ (function () {
+ var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
+ var allRegexs = [];
+ var regexKeys = {};
+ for (var i = 0, n = allPatterns.length; i < n; ++i) {
+ var patternParts = allPatterns[i];
+ var shortcutChars = patternParts[3];
+ if (shortcutChars) {
+ for (var c = shortcutChars.length; --c >= 0;) {
+ shortcuts[shortcutChars.charAt(c)] = patternParts;
+ }
+ }
+ var regex = patternParts[1];
+ var k = '' + regex;
+ if (!regexKeys.hasOwnProperty(k)) {
+ allRegexs.push(regex);
+ regexKeys[k] = null;
+ }
+ }
+ allRegexs.push(/[\0-\uffff]/);
+ tokenizer = combinePrefixPatterns(allRegexs);
+ })();
+
+ var nPatterns = fallthroughStylePatterns.length;
+ var notWs = /\S/;
+
+ /**
+ * Lexes job.source and produces an output array job.decorations of style
+ * classes preceded by the position at which they start in job.source in
+ * order.
+ *
+ * @param {Object} job an object like {@code
+ * source: {string} sourceText plain text,
+ * basePos: {int} position of job.source in the larger chunk of
+ * sourceCode.
+ * }
+ */
+ var decorate = function (job) {
+ var sourceCode = job.source, basePos = job.basePos;
+ /** Even entries are positions in source in ascending order. Odd enties
+ * are style markers (e.g., PR_COMMENT) that run from that position until
+ * the end.
+ * @type {Array.<number|string>}
+ */
+ var decorations = [basePos, PR_PLAIN];
+ var pos = 0; // index into sourceCode
+ var tokens = sourceCode.match(tokenizer) || [];
+ var styleCache = {};
+
+ for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
+ var token = tokens[ti];
+ var style = styleCache[token];
+ var match = void 0;
+
+ var isEmbedded;
+ if (typeof style === 'string') {
+ isEmbedded = false;
+ } else {
+ var patternParts = shortcuts[token.charAt(0)];
+ if (patternParts) {
+ match = token.match(patternParts[1]);
+ style = patternParts[0];
+ } else {
+ for (var i = 0; i < nPatterns; ++i) {
+ patternParts = fallthroughStylePatterns[i];
+ match = token.match(patternParts[1]);
+ if (match) {
+ style = patternParts[0];
+ break;
+ }
+ }
+
+ if (!match) { // make sure that we make progress
+ style = PR_PLAIN;
+ }
+ }
+
+ isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
+ if (isEmbedded && !(match && typeof match[1] === 'string')) {
+ isEmbedded = false;
+ style = PR_SOURCE;
+ }
+
+ if (!isEmbedded) { styleCache[token] = style; }
+ }
+
+ var tokenStart = pos;
+ pos += token.length;
+
+ if (!isEmbedded) {
+ decorations.push(basePos + tokenStart, style);
+ } else { // Treat group 1 as an embedded block of source code.
+ var embeddedSource = match[1];
+ var embeddedSourceStart = token.indexOf(embeddedSource);
+ var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
+ if (match[2]) {
+ // If embeddedSource can be blank, then it would match at the
+ // beginning which would cause us to infinitely recurse on the
+ // entire token, so we catch the right context in match[2].
+ embeddedSourceEnd = token.length - match[2].length;
+ embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
+ }
+ var lang = style.substring(5);
+ // Decorate the left of the embedded source
+ appendDecorations(
+ basePos + tokenStart,
+ token.substring(0, embeddedSourceStart),
+ decorate, decorations);
+ // Decorate the embedded source
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceStart,
+ embeddedSource,
+ langHandlerForExtension(lang, embeddedSource),
+ decorations);
+ // Decorate the right of the embedded section
+ appendDecorations(
+ basePos + tokenStart + embeddedSourceEnd,
+ token.substring(embeddedSourceEnd),
+ decorate, decorations);
+ }
+ }
+ job.decorations = decorations;
+ };
+ return decorate;
+ }
+
+ /** returns a function that produces a list of decorations from source text.
+ *
+ * This code treats ", ', and ` as string delimiters, and \ as a string
+ * escape. It does not recognize perl's qq() style strings.
+ * It has no special handling for double delimiter escapes as in basic, or
+ * the tripled delimiters used in python, but should work on those regardless
+ * although in those cases a single string literal may be broken up into
+ * multiple adjacent string literals.
+ *
+ * It recognizes C, C++, and shell style comments.
+ *
+ * @param {Object} options a set of optional parameters.
+ * @return {function (Object)} a function that examines the source code
+ * in the input job and builds the decoration list.
+ */
+ function sourceDecorator(options) {
+ var shortcutStylePatterns = [], fallthroughStylePatterns = [];
+ if (options['tripleQuotedStrings']) {
+ // '''multi-line-string''', 'single-line-string', and double-quoted
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
+ null, '\'"']);
+ } else if (options['multiLineStrings']) {
+ // 'multi-line-string', "multi-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING, /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+ null, '\'"`']);
+ } else {
+ // 'single-line-string', "single-line-string"
+ shortcutStylePatterns.push(
+ [PR_STRING,
+ /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
+ null, '"\'']);
+ }
+ if (options['verbatimStrings']) {
+ // verbatim-string-literal production from the C# grammar. See issue 93.
+ fallthroughStylePatterns.push(
+ [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
+ }
+ if (options['hashComments']) {
+ if (options['cStyleComments']) {
+ // Stop C preprocessor declarations at an unclosed open comment
+ shortcutStylePatterns.push(
+ [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
+ null, '#']);
+ fallthroughStylePatterns.push(
+ [PR_STRING,
+ /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
+ null]);
+ } else {
+ shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
+ }
+ }
+ if (options['cStyleComments']) {
+ fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
+ fallthroughStylePatterns.push(
+ [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
+ }
+ if (options['regexLiterals']) {
+ var REGEX_LITERAL = (
+ // A regular expression literal starts with a slash that is
+ // not followed by * or / so that it is not confused with
+ // comments.
+ '/(?=[^/*])'
+ // and then contains any number of raw characters,
+ + '(?:[^/\\x5B\\x5C]'
+ // escape sequences (\x5C),
+ + '|\\x5C[\\s\\S]'
+ // or non-nesting character sets (\x5B\x5D);
+ + '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
+ // finally closed by a /.
+ + '/');
+ fallthroughStylePatterns.push(
+ ['lang-regex',
+ new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
+ ]);
+ }
+
+ var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
+ if (keywords.length) {
+ fallthroughStylePatterns.push(
+ [PR_KEYWORD,
+ new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
+ }
+
+ shortcutStylePatterns.push([PR_PLAIN, /^\s+/, null, ' \r\n\t\xA0']);
+ fallthroughStylePatterns.push(
+ // TODO(mikesamuel): recognize non-latin letters and numerals in idents
+ [PR_LITERAL, /^@[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_TYPE, /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
+ [PR_PLAIN, /^[a-z_$][a-z_$@0-9]*/i, null],
+ [PR_LITERAL,
+ new RegExp(
+ '^(?:'
+ // A hex number
+ + '0x[a-f0-9]+'
+ // or an octal or decimal number,
+ + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
+ // possibly in scientific notation
+ + '(?:e[+\\-]?\\d+)?'
+ + ')'
+ // with an optional modifier like UL for unsigned long
+ + '[a-z]*', 'i'),
+ null, '0123456789'],
+ [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
+
+ return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
+ }
+
+ var decorateSource = sourceDecorator({
+ 'keywords': ALL_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ });
+
+ /** Breaks {@code job.source} around style boundaries in
+ * {@code job.decorations} while re-interleaving {@code job.extractedTags},
+ * and leaves the result in {@code job.prettyPrintedHtml}.
+ * @param {Object} job like {
+ * source: {string} source as plain text,
+ * extractedTags: {Array.<number|string>} extractedTags chunks of raw
+ * html preceded by their position in {@code job.source}
+ * in order
+ * decorations: {Array.<number|string} an array of style classes preceded
+ * by the position at which they start in job.source in order
+ * }
+ * @private
+ */
+ function recombineTagsAndDecorations(job) {
+ var sourceText = job.source;
+ var extractedTags = job.extractedTags;
+ var decorations = job.decorations;
+
+ var html = [];
+ // index past the last char in sourceText written to html
+ var outputIdx = 0;
+
+ var openDecoration = null;
+ var currentDecoration = null;
+ var tagPos = 0; // index into extractedTags
+ var decPos = 0; // index into decorations
+ var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
+
+ var adjacentSpaceRe = /([\r\n ]) /g;
+ var startOrSpaceRe = /(^| ) /gm;
+ var newlineRe = /\r\n?|\n/g;
+ var trailingSpaceRe = /[ \r\n]$/;
+ var lastWasSpace = true; // the last text chunk emitted ended with a space.
+
+ // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
+ var isIE678 = window['_pr_isIE6']();
+ var lineBreakHtml = (
+ isIE678
+ ? (job.sourceNode.tagName === 'PRE'
+ // Use line feeds instead of <br>s so that copying and pasting works
+ // on IE.
+ // Doing this on other browsers breaks lots of stuff since \r\n is
+ // treated as two newlines on Firefox.
+ ? (isIE678 === 6 ? ' \r\n' :
+ isIE678 === 7 ? ' <br>\r' : ' \r')
+ // IE collapses multiple adjacent <br>s into 1 line break.
+ // Prefix every newline with ' ' to prevent such behavior.
+ // is the same as   but works in XML as well as HTML.
+ : ' <br />')
+ : '<br />');
+
+ // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
+ // number of the first line.
+ var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
+ var lineBreaker;
+ if (numberLines) {
+ var lineBreaks = [];
+ for (var i = 0; i < 10; ++i) {
+ lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
+ }
+ var lineNum = numberLines[1] && numberLines[1].length
+ ? numberLines[1] - 1 : 0; // Lines are 1-indexed
+ html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
+ if (lineNum) {
+ html.push(' value="', lineNum + 1, '"');
+ }
+ html.push('>');
+ lineBreaker = function () {
+ var lb = lineBreaks[++lineNum % 10];
+ // If a decoration is open, we need to close it before closing a list-item
+ // and reopen it on the other side of the list item.
+ return openDecoration
+ ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
+ };
+ } else {
+ lineBreaker = lineBreakHtml;
+ }
+
+ // A helper function that is responsible for opening sections of decoration
+ // and outputing properly escaped chunks of source
+ function emitTextUpTo(sourceIdx) {
+ if (sourceIdx > outputIdx) {
+ if (openDecoration && openDecoration !== currentDecoration) {
+ // Close the current decoration
+ html.push('</span>');
+ openDecoration = null;
+ }
+ if (!openDecoration && currentDecoration) {
+ openDecoration = currentDecoration;
+ html.push('<span class="', openDecoration, '">');
+ }
+ // This interacts badly with some wikis which introduces paragraph tags
+ // into pre blocks for some strange reason.
+ // It's necessary for IE though which seems to lose the preformattedness
+ // of <pre> tags when their innerHTML is assigned.
+ // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
+ // and it serves to undo the conversion of <br>s to newlines done in
+ // chunkify.
+ var htmlChunk = textToHtml(
+ tabExpander(sourceText.substring(outputIdx, sourceIdx)))
+ .replace(lastWasSpace
+ ? startOrSpaceRe
+ : adjacentSpaceRe, '$1 ');
+ // Keep track of whether we need to escape space at the beginning of the
+ // next chunk.
+ lastWasSpace = trailingSpaceRe.test(htmlChunk);
+ html.push(htmlChunk.replace(newlineRe, lineBreaker));
+ outputIdx = sourceIdx;
+ }
+ }
+
+ while (true) {
+ // Determine if we're going to consume a tag this time around. Otherwise
+ // we consume a decoration or exit.
+ var outputTag;
+ if (tagPos < extractedTags.length) {
+ if (decPos < decorations.length) {
+ // Pick one giving preference to extractedTags since we shouldn't open
+ // a new style that we're going to have to immediately close in order
+ // to output a tag.
+ outputTag = extractedTags[tagPos] <= decorations[decPos];
+ } else {
+ outputTag = true;
+ }
+ } else {
+ outputTag = false;
+ }
+ // Consume either a decoration or a tag or exit.
+ if (outputTag) {
+ emitTextUpTo(extractedTags[tagPos]);
+ if (openDecoration) {
+ // Close the current decoration
+ html.push('</span>');
+ openDecoration = null;
+ }
+ html.push(extractedTags[tagPos + 1]);
+ tagPos += 2;
+ } else if (decPos < decorations.length) {
+ emitTextUpTo(decorations[decPos]);
+ currentDecoration = decorations[decPos + 1];
+ decPos += 2;
+ } else {
+ break;
+ }
+ }
+ emitTextUpTo(sourceText.length);
+ if (openDecoration) {
+ html.push('</span>');
+ }
+ if (numberLines) { html.push('</li></ol>'); }
+ job.prettyPrintedHtml = html.join('');
+ }
+
+ /** Maps language-specific file extensions to handlers. */
+ var langHandlerRegistry = {};
+ /** Register a language handler for the given file extensions.
+ * @param {function (Object)} handler a function from source code to a list
+ * of decorations. Takes a single argument job which describes the
+ * state of the computation. The single parameter has the form
+ * {@code {
+ * source: {string} as plain text.
+ * decorations: {Array.<number|string>} an array of style classes
+ * preceded by the position at which they start in
+ * job.source in order.
+ * The language handler should assigned this field.
+ * basePos: {int} the position of source in the larger source chunk.
+ * All positions in the output decorations array are relative
+ * to the larger source chunk.
+ * } }
+ * @param {Array.<string>} fileExtensions
+ */
+ function registerLangHandler(handler, fileExtensions) {
+ for (var i = fileExtensions.length; --i >= 0;) {
+ var ext = fileExtensions[i];
+ if (!langHandlerRegistry.hasOwnProperty(ext)) {
+ langHandlerRegistry[ext] = handler;
+ } else if ('console' in window) {
+ console['warn']('cannot override language handler %s', ext);
+ }
+ }
+ }
+ function langHandlerForExtension(extension, source) {
+ if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
+ // Treat it as markup if the first non whitespace character is a < and
+ // the last non-whitespace character is a >.
+ extension = /^\s*</.test(source)
+ ? 'default-markup'
+ : 'default-code';
+ }
+ return langHandlerRegistry[extension];
+ }
+ registerLangHandler(decorateSource, ['default-code']);
+ registerLangHandler(
+ createSimpleLexer(
+ [],
+ [
+ [PR_PLAIN, /^[^<?]+/],
+ [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
+ [PR_COMMENT, /^<\!--[\s\S]*?(?:-\->|$)/],
+ // Unescaped content in an unknown language
+ ['lang-', /^<\?([\s\S]+?)(?:\?>|$)/],
+ ['lang-', /^<%([\s\S]+?)(?:%>|$)/],
+ [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
+ ['lang-', /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
+ // Unescaped content in javascript. (Or possibly vbscript).
+ ['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
+ // Contains unescaped stylesheet content
+ ['lang-css', /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
+ ['lang-in.tag', /^(<\/?[a-z][^<>]*>)/i]
+ ]),
+ ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
+ registerLangHandler(
+ createSimpleLexer(
+ [
+ [PR_PLAIN, /^[\s]+/, null, ' \t\r\n'],
+ [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
+ ],
+ [
+ [PR_TAG, /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
+ [PR_ATTRIB_NAME, /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
+ ['lang-uq.val', /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
+ [PR_PUNCTUATION, /^[=<>\/]+/],
+ ['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']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CPP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true
+ }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': 'null true false'
+ }), ['json']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': CSHARP_KEYWORDS,
+ 'hashComments': true,
+ 'cStyleComments': true,
+ 'verbatimStrings': true
+ }), ['cs']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JAVA_KEYWORDS,
+ 'cStyleComments': true
+ }), ['java']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': SH_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true
+ }), ['bsh', 'csh', 'sh']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PYTHON_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'tripleQuotedStrings': true
+ }), ['cv', 'py']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': PERL_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['perl', 'pl', 'pm']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': RUBY_KEYWORDS,
+ 'hashComments': true,
+ 'multiLineStrings': true,
+ 'regexLiterals': true
+ }), ['rb']);
+ registerLangHandler(sourceDecorator({
+ 'keywords': JSCRIPT_KEYWORDS,
+ 'cStyleComments': true,
+ 'regexLiterals': true
+ }), ['js']);
+ registerLangHandler(
+ createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
+
+ function applyDecorator(job) {
+ var sourceCodeHtml = job.sourceCodeHtml;
+ var opt_langExtension = job.langExtension;
+
+ // Prepopulate output in case processing fails with an exception.
+ job.prettyPrintedHtml = sourceCodeHtml;
+
+ try {
+ // Extract tags, and convert the source code to plain text.
+ var sourceAndExtractedTags = extractTags(sourceCodeHtml);
+ /** Plain text. @type {string} */
+ var source = sourceAndExtractedTags.source;
+ job.source = source;
+ job.basePos = 0;
+
+ /** Even entries are positions in source in ascending order. Odd entries
+ * are tags that were extracted at that position.
+ * @type {Array.<number|string>}
+ */
+ job.extractedTags = sourceAndExtractedTags.tags;
+
+ // Apply the appropriate language handler
+ langHandlerForExtension(opt_langExtension, source)(job);
+ // Integrate the decorations and tags back into the source code to produce
+ // a decorated html string which is left in job.prettyPrintedHtml.
+ recombineTagsAndDecorations(job);
+ } catch (e) {
+ if ('console' in window) {
+ console['log'](e && e['stack'] ? e['stack'] : e);
+ }
+ }
+ }
+
+ function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
+ var job = {
+ sourceCodeHtml: sourceCodeHtml,
+ langExtension: opt_langExtension
+ };
+ applyDecorator(job);
+ return job.prettyPrintedHtml;
+ }
+
+ function prettyPrint(opt_whenDone) {
+ function byTagName(tn) { return document.getElementsByTagName(tn); }
+ // fetch a list of nodes to rewrite
+ var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
+ var elements = [];
+ for (var i = 0; i < codeSegments.length; ++i) {
+ for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
+ elements.push(codeSegments[i][j]);
+ }
+ }
+ codeSegments = null;
+
+ var clock = Date;
+ if (!clock['now']) {
+ clock = { 'now': function () { return (new Date).getTime(); } };
+ }
+
+ // The loop is broken into a series of continuations to make sure that we
+ // don't make the browser unresponsive when rewriting a large page.
+ var k = 0;
+ var prettyPrintingJob;
+
+ function doWork() {
+ var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
+ clock.now() + 250 /* ms */ :
+ Infinity);
+ for (; k < elements.length && clock.now() < endTime; k++) {
+ var cs = elements[k];
+ if (cs.className && cs.className.indexOf('prettyprint') >= 0) {
+ // If the classes includes a language extensions, use it.
+ // Language extensions can be specified like
+ // <pre class="prettyprint lang-cpp">
+ // the language extension "cpp" is used to find a language handler as
+ // passed to PR_registerLangHandler.
+ var langExtension = cs.className.match(/\blang-(\w+)\b/);
+ if (langExtension) { langExtension = langExtension[1]; }
+
+ // make sure this is not nested in an already prettified element
+ var nested = false;
+ for (var p = cs.parentNode; p; p = p.parentNode) {
+ if ((p.tagName === 'pre' || p.tagName === 'code' ||
+ p.tagName === 'xmp') &&
+ p.className && p.className.indexOf('prettyprint') >= 0) {
+ nested = true;
+ break;
+ }
+ }
+ if (!nested) {
+ // fetch the content as a snippet of properly escaped HTML.
+ // Firefox adds newlines at the end.
+ var content = getInnerHtml(cs);
+ content = content.replace(/(?:\r\n?|\n)$/, '');
+
+ // do the pretty printing
+ prettyPrintingJob = {
+ sourceCodeHtml: content,
+ langExtension: langExtension,
+ sourceNode: cs
+ };
+ applyDecorator(prettyPrintingJob);
+ replaceWithPrettyPrintedHtml();
+ }
+ }
+ }
+ if (k < elements.length) {
+ // finish up in a continuation
+ setTimeout(doWork, 250);
+ } else if (opt_whenDone) {
+ opt_whenDone();
+ }
+ }
+
+ function replaceWithPrettyPrintedHtml() {
+ var newContent = prettyPrintingJob.prettyPrintedHtml;
+ if (!newContent) { return; }
+ var cs = prettyPrintingJob.sourceNode;
+
+ // push the prettified html back into the tag.
+ if (!isRawContent(cs)) {
+ // just replace the old html with the new
+ cs.innerHTML = newContent;
+ } else {
+ // we need to change the tag to a <pre> since <xmp>s do not allow
+ // embedded tags such as the span tags used to attach styles to
+ // sections of source code.
+ var pre = document.createElement('PRE');
+ for (var i = 0; i < cs.attributes.length; ++i) {
+ var a = cs.attributes[i];
+ if (a.specified) {
+ var aname = a.name.toLowerCase();
+ if (aname === 'class') {
+ pre.className = a.value; // For IE 6
+ } else {
+ pre.setAttribute(a.name, a.value);
+ }
+ }
+ }
+ pre.innerHTML = newContent;
+
+ // remove the old
+ cs.parentNode.replaceChild(pre, cs);
+ cs = pre;
+ }
+ }
+
+ doWork();
+ }
+
+ window['PR_normalizedHtml'] = normalizedHtml;
+ window['prettyPrintOne'] = prettyPrintOne;
+ window['prettyPrint'] = prettyPrint;
+ window['PR'] = {
+ 'combinePrefixPatterns': combinePrefixPatterns,
+ 'createSimpleLexer': createSimpleLexer,
+ 'registerLangHandler': registerLangHandler,
+ 'sourceDecorator': sourceDecorator,
+ 'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
+ 'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
+ 'PR_COMMENT': PR_COMMENT,
+ 'PR_DECLARATION': PR_DECLARATION,
+ 'PR_KEYWORD': PR_KEYWORD,
+ 'PR_LITERAL': PR_LITERAL,
+ 'PR_NOCODE': PR_NOCODE,
+ 'PR_PLAIN': PR_PLAIN,
+ 'PR_PUNCTUATION': PR_PUNCTUATION,
+ 'PR_SOURCE': PR_SOURCE,
+ 'PR_STRING': PR_STRING,
+ 'PR_TAG': PR_TAG,
+ 'PR_TYPE': PR_TYPE
+ };
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/figure.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,71 @@
+// XXX untested
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("handling figures");
+
+ doc.normalize();
+ var figMap = {};
+ var tof = [];
+ // Find figures and assign titles
+ $(".figure", doc).each(function (i, figure) {
+ var title = $(figure).attr("title") ||
+ $(figure).find("[title]").attr("title") ||
+ $(figure).attr("alt") ||
+ $(figure).find("[alt]").attr("alt");
+ if (!title) error("Figure must have a self or child with a @title or @alt");
+ var id = $(figure).makeID("fig", title)
+ figMap[id] = $("<span class='figno'>" + (i + 1) + "</span>" +
+ "<span class='fig-title'>" + title + "</span>");
+ var capt = $("<p class='caption'><span class='figno'>" +
+ (i + 1) + "</span>" + title +
+ "</p>");
+ tof[i] = $("<li class='tofline'><a class='tocxref' href='#" + id + "'><span class='figno'>" + (i + 1) + "</span>" + title + "</a></li>");
+ if ($(figure).is("div")) {
+ // If figure is a div, presume it encloses an image of some form.
+ // append the caption to the figure
+ $(figure).append(capt);
+ } else if ($(figure).is("img")) {
+ // If the figure is an image, wrap it in a div and add the
+ // caption to the end of the div
+ $(figure).wrap($("<div class='figure'></div>")).append(capt);
+ } else {
+ // Otherwise, just add the caption after the figure
+ $(figure).after(capt);
+ }
+ });
+
+ // Update all anchors with empty content that reference a figure ID
+ $("a[href]", doc).each(function (i, anchor) {
+ var id = $(anchor).attr("href").slice(1); // remove '#' from '#fig-title'
+ if (figMap[id]) {
+ progress("fig reference to " + anchor);
+ $(anchor).addClass('fig-ref');
+
+ if ($(anchor).html() == '') {
+ progress("append " + figMap[id]);
+ $(anchor).append(figMap[id].clone());
+ }
+ }
+ });
+
+ // Create a Table of Figures if a section with id 'tof' exists.
+ if (!tof.empty) {
+ $("section#tof", doc).each(function (i, sec) {
+ $(sec).append($("<h2 class='introductory'>Table of Figures</h2>"));
+ $(sec).append($("<ol class='tof'/>"));
+ var $ul = $(sec).children("ol");
+ for (var i = 0; i < tof.length; i++) {
+ $ul.append(tof[i]);
+ }
+ });
+ }
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/inlines.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,91 @@
+// XXX untested
+// @@@ CONF
+// - normativeReferences
+// - informativeReferences
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("inlines");
+ doc.normalize();
+ if (!conf.normativeReferences) conf.normativeReferences = [];
+ if (!conf.informativeReferences) conf.informativeReferences = [];
+
+ // PRE-PROCESSING
+ var abbrMap = {}, acroMap = {}, badrefs = {};
+ var badrefcount = 0;
+ $("abbr[title]").each(function (i, abbr) { abbrMap[$(abbr).text()] = $(abbr).attr("title") });
+ $("acronym[title]").each(function (i, acro) { acroMap[$(acro).text()] = $(acro).attr("title") });
+ var aKeys = [];
+ for (var k in abbrMap) aKeys.push(k);
+ for (var k in acroMap) aKeys.push(k);
+ aKeys.sort(function (a, b) {
+ if (b.length < a.length) return -1;
+ if (a.length < b.length) return 1;
+ return 0;
+ });
+ var abbrRx = "(?:\\b" + aKeys.join("\\b)|(?:\\b") + "\\b)";
+
+ // PROCESSING
+ var txts = utils.findNodes(".//text()", $("body", doc)[0], doc);
+ for (var i = 0; i < txts.length; i++) {
+ var txt = txts[i];
+ var rx = 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-]+\\]\\])|" +
+ abbrRx + ")");
+ var subtxt = txt.data.split(rx);
+
+ // XXX not sure that docFrags work everywhere, but it's hard to do otherwise here
+ var df = doc.createDocumentFragment();
+ while (subtxt.length) {
+ var t = subtxt.shift();
+ var matched = null;
+ if (subtxt.length) matched = subtxt.shift();
+ df.appendChild(doc.createTextNode(t));
+ if (matched) {
+ // RFC 2129
+ if (/MUST(?:\s+NOT)?|SHOULD(?:\s+NOT)?|SHALL(?:\s+NOT)?|MAY|(?:NOT\s+)?REQUIRED|(?:NOT\s+)?RECOMMENDED|OPTIONAL/.test(matched)) {
+ matched = matched.toLowerCase();
+ df.appendChild($("<em/>").attr({ "class": "rfc2119", title: matched }).text(matched)[0]);
+ }
+ // BIBREF
+ else if (/^\[\[/.test(matched)) {
+ var ref = matched;
+ ref = ref.replace(/^\[\[/, "");
+ ref = ref.replace(/]]$/, "");
+ var norm = false;
+ if (ref.indexOf("!") == 0) {
+ norm = true;
+ ref = ref.replace(/^!/, "");
+ }
+ // contrary to before, we always insert the link
+ if (norm) conf.normativeReferences.push(ref);
+ else conf.informativeReferences.push(ref);
+ df.appendChild(doc.createTextNode("["));
+ df.appendChild($("<cite/>").wrapInner($("<a/>").attr({"class": "bibref", rel: "biblioentry", href: "#bib-" + ref}).text(ref))[0]);
+ df.appendChild(doc.createTextNode("]"));
+ }
+ // ABBR
+ else if (abbrMap[matched]) {
+ df.appendChild($("<abbr/>").attr({ title: abbrMap[matched] }).text(matched)[0]);
+ }
+ // ACRO
+ else if (acroMap[matched]) {
+ df.appendChild($("<acronym/>").attr({ title: acroMap[matched] }).text(matched)[0]);
+ }
+ // FAIL -- not sure that this can really happen
+ else {
+ error("Found token '" + matched + "' but it does not correspond to anything");
+ }
+ }
+ }
+ txt.parentNode.replaceChild(df, txt);
+ }
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/rdfa.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,88 @@
+// XXX untested
+// Shane's RDFa markup
+// @@ CONFIG
+// - diffTool
+// - previousDiffURI
+// - previousURI
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("RDFa");
+
+ $("#abstract", doc).each(function(i, abs) {
+ $(abs).attrAppend('property', 'dcterms:absract') ;
+ $(abs).attr('datatype', '') ;
+ })
+
+ // annotate sections with Section data
+ $("section", doc).each(function(i, sec) {
+ // Note section should already have an ID, if this is run after core/structure
+ if (!$(sec).attr('about')) {$(sec).attr('about', '#' + $(sec).attr('id'))}
+
+ $(sec).attrAppend('typeof', 'bibo:Chapter') ;
+ })
+
+ // Root attr
+ // Add prefix attributes to define namespaces
+ var prefix = "dc: 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#";
+ $("html", doc)
+ .attr("about", "")
+ .attr("property", "dc:language")
+ .attr("content", "en") ;
+
+ // Can't write prefix using "attr" on body, as it sets the prefix of the element!
+ doc.documentElement.setAttribute("prefix", prefix)
+
+ // Update Author and Editor information (must be done after w3c/headers or equivalent)
+ $("dd.Editor", doc).each(function(i, dd) {
+ $(dd).attrAppend('rel', 'bibo:editor');
+
+ // Name with homepage
+ $(dd).children('a.name').each(function(j, a) {
+ $(a).attr('rel', 'foaf:homepage');
+ $(a).attr('property', 'foaf:name');
+ $(a).attr('content', $(a).text());
+ })
+
+ // Name without homepage
+ $(dd).children('span.name').attr('property', 'foaf:name');
+
+ // Workplace with homepage
+ $(dd).children('a.company').attr('rel', 'foaf:workplaceHomepage');
+
+ // Mailbox
+ $(dd).children('a.email').attr('rel', 'foaf:mbox');
+
+ // Wrap the lot in type
+ $(dd).wrapInner("<span typeof='foaf:Person'>") ;
+ })
+
+ // Previous Version
+ $('dt:contains("Previous version") + dd a', doc).attr('rel', 'dc:replaces');
+
+ // Title and such
+ $('h1.title', doc).attrAppend('rel', 'dc:title');
+ $('h2.subtitle', doc).attrAppend('rel', 'bibo:subtitle');
+ $('p.copyright a.license', doc).attr('rel', 'license');
+ $('p.copyright a.publisher', doc).each(function(i, a) {
+ var title = $(a).text();
+ $(a).attr('rel', 'foaf:homepage')
+ .attr('property', 'foaf:name')
+ .attr('content', title)
+ .wrap("<span rel='dcterms:publisher'><span typeof='foaf:Organization/></span>");
+ })
+
+ // Bibliography references
+ $('dl.bibliography').attr('about', '');
+
+ $('#normative-references dl.bibliography dd', doc).attr('rel', 'dc:requires')
+ $('#informative-references dl.bibliography dd', doc).attr('rel', 'dc:references')
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/remove-respec.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,17 @@
+// XXX untested
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("removing ReSpec markup");
+ // $(".remove, script[data-requiremodule]", $(doc)).remove();
+ // this is a hack that knows that bibrefs are loaded async and thus can't be killed here
+ // but I couldn't think of a better way
+ $(".remove, script[data-requiremodule]:not([data-requiremodule*=\"/bibref/\"])", $(doc)).remove();
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/structure.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,105 @@
+// XXX untested
+// - needs a configuration to say where to attach the ToC if there is no #sotd or #abstract
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("fixing headers");
+ var $secs = $("section", doc)
+ .find("h1:first, h2:first, h3:first, h4:first, h5:first, h6:first");
+ if (!$secs.length) { cb(); return; }
+ $secs.each(function () {
+ var depth = $(this).parents("section").length + 1;
+ if (depth > 6) depth = 6;
+ var h = "h" + depth;
+ if (this.localName.toLowerCase() != h) {
+ $(this).renameElement(h);
+ }
+ });
+
+ // makeTOC
+ var $ul = this.makeTOCAtLevel($("body", doc), doc, [0], 1);
+ if (!$ul) return;
+ var $sec = $("<section id='toc'/>").append("<h2 class='introductory'>Table of Contents</h2>")
+ .append($ul);
+ var $ref = $("#sotd");
+ if (!$ref.length) $ref = $("#abstract", doc);
+ $ref.after($sec);
+
+ // Update all anchors with empty content that reference a section ID
+ var secMap = this.secMap;
+ $("a[href]:not(.tocxref)", doc).each(function (i, anchor) {
+ var $a = $(anchor, doc)
+ var id = $a.attr("href").slice(1); // remove '#' from '#id'
+ if (secMap[id]) {
+ $a.addClass('sec-ref');
+
+ if ($a.html() == '') $a.html(secMap[id]);
+ }
+ });
+
+ cb();
+ },
+
+ secMap: {},
+ appendixMode: false,
+ lastNonAppendix: 0,
+ alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+ makeTOCAtLevel: function ($parent, doc, current, level) {
+ // var $secs = $("section:not(.introductory)");
+ var $secs = $parent.children("section:not(.introductory)");
+
+ if ($secs.length == 0) return null;
+ var $ul = $("<ul class='toc'></ul>");
+ for (var i = 0; i < $secs.length; i++) {
+ var $sec = $($secs[i], doc);
+ if (!$sec.contents().length) continue;
+ var h = $sec.children()[0];
+ var ln = h.localName.toLowerCase();
+ if (ln != "h2" && ln != "h3" && ln != "h4" && ln != "h5" && ln != "h6") continue;
+ var title = h.textContent;
+ var $hKids = $(h, doc).contents().clone();
+ $hKids.find("a").renameElement("span").attr("class", "formerLink").removeAttr("href");
+ $hKids.find("dfn").renameElement("span").removeAttr("id");
+ var id = $sec.makeID(null, title);
+
+ current[current.length-1]++;
+ var secnos = current.slice();
+ if ($sec.hasClass("appendix") && current.length == 1 && !this.appendixMode) {
+ this.lastNonAppendix = current[0];
+ this.appendixMode = true;
+ }
+ if (this.appendixMode) secnos[0] = this.alphabet.charAt(current[0] - this.lastNonAppendix);
+ var secno = secnos.join(".");
+ var isTopLevel = secnos.length == 1;
+ if (isTopLevel) {
+ secno = secno + ".";
+ // if this is a top level item, insert
+ // an OddPage comment so html2ps will correctly
+ // paginate the output
+ $(h, doc).before(document.createComment('OddPage'));
+ }
+ var $span = $("<span class='secno'></span>").text(secno + " ");
+ $(h, doc).prepend($span);
+
+ this.secMap[id] = "<span class='secno'>" + secno + "</span>" +
+ "<span class='sec-title'>" + title + "</span>";
+
+ var $a = $("<a/>").attr({ href: "#" + id, 'class' : 'tocxref' })
+ .append($span.clone())
+ .append($hKids);
+ var $item = $("<li class='tocline'/>").append($a);
+ $ul.append($item);
+ if (this.maxTocLevel && level >= this.maxTocLevel) continue;
+ current.push(0);
+ var $sub = this.makeTOCAtLevel($sec, doc, current, level + 1);
+ if ($sub) $item.append($sub);
+ current.pop();
+ }
+ return $ul;
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/style.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,26 @@
+// XXX untested
+// @@ CONFIG
+// - noReSpecCSS
+// IMPORTANT NOTE
+// The extraCSS configuration option is now deprecated. People rarely use it, and it
+// does not work well with the growing restrictions that browsers impose on loading
+// local content. You can still add your own styles: for that you will have to create
+// a plugin that declares the css as a dependency and create a build of your new
+// ReSpec profile. It's rather easy, really.
+define(
+ ["core/utils", "text!core/css/respec2.css"],
+ function (utils, css) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("inserting ReSpec CSS");
+ if (!conf.noReSpecCSS) {
+ $("<style/>").appendTo($("head", $(doc)))
+ .attr("type", "text/css")
+ .text(css);
+ }
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/templates/webidl.html Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,167 @@
+<script type='application/x-tt' id='webidl-attribute'><![CDATA[
+<dt id="widl-[% parentId %]-[% refId %]">
+ <code>[% name %]</code>
+ of type
+ [% IF idlType.array %]array of[% END %]
+ <span class="idlAttrType">[% htmlType %]</span>[% IF readonly %], readonly[% END %][% IF idlType.nullable %], nullable[% END %]
+</dt>
+<dd>
+ [% description %]
+ [% IF raises.length == 0 %]
+ <div><em>No exceptions.</em></div>
+ [% ELSE %]
+ <table class='exceptions'>
+ <tr><th>Exception</th><th>On Get</th><th>On Set</th><th>Description</th></tr>
+ [% FOREACH exc IN raises %]
+ <tr>
+ <td class="excName">[% exc.name %]</td>
+ [% IF exc.onGet %]
+ <td class="excGetSetTrue">✔</td>
+ [% ELSE %]
+ <td class="excGetSetFalse">✘</td>
+ [% END %]
+ [% IF exc.onSet %]
+ <td class="excGetSetTrue">✔</td>
+ [% ELSE %]
+ <td class="excGetSetFalse">✘</td>
+ [% END %]
+ <td class="excDesc">
+ [% IF exc.type == 'simple' %]
+ [% exc.description %]
+ [% ELSE %]
+ <table class='exceptionCodes'>
+ [% FOREACH code IN exc.description %]
+ <tr>
+ <td class='excCodeName'><code>[% code.name %]</code></td>
+ <td class='excCodeDesc'>[% code.description %]</td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+</dd>
+]]></script>
+
+<script type='application/x-tt' id='webidl-const'><![CDATA[
+<dt id="widl-[% parentId %]-[% refId %]">
+ <code>[% name %]</code>
+ of type
+ <span class="idlConstType">[% htmlType %]</span>
+</dt>
+<dd>
+ [% description %]
+</dd>
+]]></script>
+
+<script type='application/x-tt' id='webidl-exception'><![CDATA[
+ <p>Template webidl-exception called</p>
+]]></script>
+
+<script type='application/x-tt' id='webidl-field'><![CDATA[
+<dt id="widl-[% parentId %]-[% refId %]">
+ <code>[% name %]</code>
+ of type
+ <span class="idlFieldType">[% htmlType %]</span>[% IF idlType.nullable %], nullable[% END %]
+</dt>
+<dd>
+ [% description %]
+</dd>
+]]></script>
+
+<script type='application/x-tt' id='webidl-operation'><![CDATA[
+<dt id="widl-[% parentId %]-[% refId %]">
+ <code>[% name %]</code>
+</dt>
+<dd>
+ [% description %]
+ [% IF arguments.length == 0 %]
+ <div><em>No Parameters.</em></div>
+ [% ELSE %]
+ <table class="parameters">
+ <tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></th>
+ [% FOREACH param IN arguments %]
+ <tr>
+ <td class="prmName">[% param.name %]</td>
+ <td class="prmType"><code>[% param.htmlType %]</code></td>
+ [% IF param.type.nullable %]
+ <td class="prmNullTrue">✔</td>
+ [% ELSE %]
+ <td class="prmNullFalse">✘</td>
+ [% END %]
+ [% IF param.optional %]
+ <td class="prmOptTrue">✔</td>
+ [% ELSE %]
+ <td class="prmOptFalse">✘</td>
+ [% END %]
+ <td class="prmDesc">[% param.description %]</td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+ [% IF raises.length == 0 %]
+ <div><em>No exceptions.</em></div>
+ [% ELSE %]
+ <table class='exceptions'>
+ <tr><th>Exception</th><th>Description</th></tr>
+ [% FOREACH exc IN raises %]
+ <tr>
+ <td class="excName">[% exc.name %]</td>
+ <td class="excDesc">
+ [% IF exc.type == 'simple' %]
+ [% exc.description %]
+ [% ELSE %]
+ <table class='exceptionCodes'>
+ [% FOREACH code IN exc.description %]
+ <tr>
+ <td class='excCodeName'><code>[% code.name %]</code></td>
+ <td class='excCodeDesc'>[% code.description %]</td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+ </td>
+ </tr>
+ [% END %]
+ </table>
+ [% END %]
+ <div>
+ <em>Return type:</em> <code>[% htmlType %]</code>
+ </div>
+</dd>
+]]></script>
+
+<script type='application/x-tt' id='webidl-implements'><![CDATA[
+<div class='idlImplementsDesc'>
+ [% IF description.length > 0 %]
+ [% description %]
+ [% ELSE %]
+ <p>
+ All instances of the
+ <code><a>[% target %]</a></code>
+ type are defined to also implement the
+ <a class='idlType'>[% htmlType %]</a>
+ interface.
+ </p>
+ [% END %]
+</div>
+]]></script>
+
+<script type='application/x-tt' id='webidl-typedef'><![CDATA[
+ <div class='idlTypedefDesc'>
+ [% IF description.length > 0 %]
+ [% description %]
+ [% ELSE %]
+ Throughout this specification, the identifier
+ <span class='idlTypedefID'>[% name %]</span>
+ is used to refer to the
+ [% IF idlType.array %] array of [% END %]
+ <span class='idlTypedefType'>[% htmlType %]</span>
+ [% IF idlType.nullable %](nullable)[% END %]
+ type.
+ [% END %]
+ </div>
+]]></script>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/tt.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,2961 @@
+// XXX untested
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ tt: new Template(),
+ cache: {},
+
+ // looks for all templates in the current document, and loads them
+ loadAllTemplates: function (doc) {
+ if (!doc) doc = document;
+ var self = this;
+ $('script', doc).each(function (i, s) {
+ var $s = $(s);
+ if ($s.attr('type') != 'application/x-tt' || ! $s.attr('id')) return;
+ // XXX we could also handle src
+ // eliminate comment/CDATA if it's used
+ var tpl = $s.html();
+ // XXX urgh! do feature testing instead (or drop support for this UA)
+ if (/(NetFront|PlayStation)/i.test(navigator.userAgent)) {
+ tpl = tpl.replace(/</g, '<');
+ tpl = tpl.replace(/>/g, '>');
+ tpl = tpl.replace(/"/g, '"');
+ tpl = tpl.replace(/'/g, "'");
+ tpl = tpl.replace(/&/g, '&');
+ }
+ tpl = tpl.replace(/^\s*<!--/, '');
+ tpl = tpl.replace(/-->\s*$/, '');
+ tpl = tpl.replace(/^\s*<!\[CDATA\[/, '');
+ tpl = tpl.replace(/]]>\s*$/, '');
+ self.cache[$s.attr('id')] = tpl;
+ });
+ },
+
+ // loads templates off the web
+ loadRemote: function (uri, doc, cb) {
+ alert("core/tt#loadRemote is deprecated, please update your code not to use it");
+ var self = this;
+ utils.proxyLoad(uri, function (data) {
+ if (!data) error("Failed to load templates from " + uri);
+ self.loadFromHTML(data, doc);
+ cb();
+ });
+ },
+
+ // loads templates as parsed HTML given a string
+ loadFromHTML: function (str, doc) {
+ var $ifr = $("<iframe/>").css({display: "none"}).attr("src", "about:blank").appendTo($("body", doc));
+ // ifr.className = "remove";
+ var iDoc = $ifr[0].contentWindow.document;
+ iDoc.documentElement.innerHTML = str;
+ this.loadAllTemplates(iDoc);
+ $ifr.remove();
+ },
+
+ // runs a template by name, with a given set of vars
+ // if output is specified, it's the ID of an element to fill
+ exec: function (uri, vars, output) {
+ progress("TT called with " + uri);
+ if (!this.cache[uri]) return null;
+ // alert("code: " + this.cache[uri]);
+ var out;
+ try {
+ progress("before process");
+ out = this.tt.process(this.cache[uri], vars);
+ progress("after process");
+ }
+ catch (e) {
+ warn("ERROR: " + e);
+ progress("CODE: " + this.tt.interpreterOutput);
+ }
+ if (output) $("#" + output).html(out);
+ return out;
+ },
+
+ ieDummy: 1
+ };
+ }
+);
+
+/*
+* Copyright (c) 2007, Ashley Berlin
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions are met:
+* * Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* * Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+* * Neither the name of the <organization> nor the
+* names of its contributors may be used to endorse or promote products
+* derived from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/**
+ * == Module ==
+ *
+ * Module exports from the `Template` module.
+**/
+
+/**
+ * == Template ==
+ *
+ * Template toolkit classes and what-nots.
+ **/
+
+/** section: Module
+ * exports
+ **/
+
+/** related_to: Template#parse
+ * exports.render() -> String
+ *
+ * Renders the template
+ **/
+if (!this.exports) this.exports = {};
+
+/** section: Module
+ * class exports.Template
+ *
+ * Port of perl's Template Toolkit to javascript
+**/
+
+/**
+ * new exports.Template(config)
+ * - config (Object): dictionary containing config properties
+ *
+ * Create a new Template parser/context/run-time stack. `config` currently
+ * understands the following keys:
+ *
+ * - BLOCKS (`Object`): foobar
+ * - TRIM (`boolean`): trim leading and trailing whitespace from output.
+ * - FILTERS (`Object`): extra filter to define on this render.
+ * - POST_COMP: whitespace chomp setting for after `%]` blocks
+ * - PRE_COMP: whitespace chomp setting for before `[%` blocks
+ **/
+var Template = exports.Template = function Template(config) {
+ config = config || {};
+ for (var param in config) {
+ this[param] = config[param];
+ }
+
+ this.blocks = {}
+
+ var blocks = config.BLOCKS || {};
+ for (var b in blocks) {
+ if (blocks.hasOwnProperty(b) == false)
+ continue;
+
+ var block = blocks[b];
+
+ if (block instanceof Function) {
+ this.blocks[b] = block;
+ continue;
+ }
+
+ // Else stringify it then parse it
+ var parser = new Template.Parser(this);
+ parser.parse(block.toString());
+ var ti = new Template.Interpreter(parser.chunks(), this);
+ this.blocks[b] = eval('('+ti.output+')');
+ }
+
+};
+
+
+Template.Constants = {
+ CHOMP_NONE: 0,
+ CHOMP_ONE: 1,
+ CHOMP_COLLAPSE: 2,
+ CHOMP_GREEDY: 3
+
+};
+
+Template.Exception = function(code, message) {
+ this.type = code;
+ this.info = message;
+}
+Template.Exception.prototype.__proto__ = Error.prototype;
+Template.Exception.prototype.name = "Template.Exception";
+Template.Exception.prototype.toString = function() {
+ return this.type + " error - " + this.info;
+}
+
+// Just a place for constants
+Template.Stash = {
+ 'PRIVATE': /^[._]/
+}
+
+/** section: Template
+ * VMethods
+ *
+ * Template toolkit has the notion of 'virtual methods' - which are methods
+ * defined on `Template.VMethods.<TYPE>_OPS` (where `<TYPE>` is the object
+ * type; one of `ARRAY` for Arrays, `HASH` for other objects and `SCALAR` for
+ * everything else (primitive values such as strings or numbers).
+ *
+ * For instance, to define a rot13 virtual method on strings, such that the
+ * following example works:
+ *
+ * lang: templatetoolkit
+ * [% SET str = "ABC";
+ * str.rot13;
+ * %]
+ *
+ * You would do:
+ *
+ * require('Template').Template.VMethods.SCALAR_OPS.rot13 = function() {
+ * // `this` is the string the vmethod is called upon
+ * }
+ *
+ **/
+Template.VMethods = {
+ ROOT_OPS: {
+ inc: function(x) {
+ return ++x;
+ },
+ dec: function(x) {
+ return --x;
+ }
+ },
+ SCALAR_OPS: {},
+
+ /**
+ * VMethods.HASH_OPS
+ *
+ * Virtual methods that can be called on hashes/objects in TT
+ **/
+ HASH_OPS: {
+
+ /**
+ * VMethods.HASH_OPS#keys() -> Array
+ *
+ * Return a list of keys on this object
+ **/
+ keys: function() {
+ // A generator would be nice here.
+ // return [i for (ver i in obj)]
+ var k = [];
+ for (var key in this)
+ k.push(key);
+ return k;
+ },
+
+ /**
+ * VMethods.HASH_OPS#import(hash2) -> Object
+ * - hash2 (Object): object to copy from
+ *
+ * Copy every value from hash2 into the current hash
+ **/
+ 'import': function(hash2) {
+ for (var key in hash2) {
+ this[key] = hash2[key];
+ }
+ return '';
+ }
+ },
+
+ /**
+ * VMethods.LIST_OPS
+ *
+ * Virtual methods that can be called on lists/arrays in TT.
+ *
+ * All instance methods are called with an Array as the `this` object.
+ **/
+ LIST_OPS: {
+ /**
+ * VMethods.LIST_OPS#sort([key]) -> Array
+ * - key (String): optional key name to sort on.
+ *
+ * Sort the array. If `key` is not provided, the array is sorted
+ * (case-insensitively) based on the values. If `key` is provided, then
+ * the array is assumed to contain objects.
+ *
+ * ##### Example #####
+ *
+ * lang: templatetoolkit
+ * [% SET a = [4,3,2];
+ * a = a.sort;
+ * # -> a == [2,3,4]
+ * SET a = [ { foo: 2 }, { foo: 1} ]
+ * a = a.sort('foo')
+ * # -> a == [ { foo: 1}, { foo: 2} ]
+ * %]
+ **/
+ sort: function sort(key) {
+ if (key !== undefined) {
+ return this.sort(function(a,b) {
+ a = a[key]; b = b[key];
+ return a < b ? -1 : a > b ? 1 : 0;
+ });
+ }
+ return this.sort(function(a,b) {
+ a = a.toLowerCase(); b = b.toLowerCase();
+ return a < b ? -1 : a > b ? 1 : 0;
+ });
+ },
+ /**
+ * VMethods.LIST_OPS#push(val) -> undefined
+ * - val (Any): new element.
+ *
+ * Push `val` onto the end of the array.
+ **/
+ push: function push(x) { this.push(x); },
+
+ /**
+ * VMethods.LIST_OPS#join([sep]) -> String
+ * - sep (String): separator character; default ","
+ *
+ * Join all elements into a single string separated by `sep`.
+ **/
+ join: Array.prototype.join,
+
+ /**
+ * VMethods.LIST_OPS#reverse() -> Array
+ *
+ * Return an array with the elements in the reverse order
+ **/
+ reverse: Array.prototype.reverse,
+
+ /**
+ * VMethods.LIST_OPS#size() -> Number
+ *
+ * Number of elements in this arrray
+ **/
+ size: function size() { return this.length }
+ }
+}
+
+Template.prototype = {
+ constructor: Template,
+
+ /** section: Module
+ * exports.Template#process(input, params) -> String
+ * - input (String): the template toolkit string (not file) to parse
+ * - params (Object): params/stash/context for the template
+ *
+ * Parse the TT string using the given variables and return the processed
+ * output.
+ **/
+ process: function Template$prototype$process(input, params) {
+ // Reset.
+ this.parserOutput = [];
+
+ var parser = new Template.Parser(this);
+ var ctx = new Template.Context(this);
+
+ parser.parse(input);
+ this.parserTokens = [].concat(parser._tokenBuffer);
+ if (this.DBG_OUTPUT_TOKENS)
+ require('system').stderr.print('# Tokens: ' + this.parserTokens.toSource());
+ var chunks = parser.chunks();
+
+ this.parserOutput = [].concat(chunks);
+
+ if (this.DBG_OUTPUT_CHUNKS)
+ require('system').stderr.print('# Chunks: ' + chunks.toSource());
+
+ var ti = new Template.Interpreter(chunks, this);
+
+ this.interpreterOutput = ti.output;
+
+ if (this.DBG_OUTPUT_FUNC)
+ require('system').stderr.print(ti.output);
+
+ var func = eval('('+ti.output+')');
+
+ if (!params.global)
+ params.global = {};
+
+ var Stash = function () { };
+ Stash.prototype = params;
+ Stash.global = params.global;
+
+ ctx.stash = new Stash();
+
+ var ret = func(ctx);
+ if (!this.TRIM)
+ return ret;
+
+ return ret.replace(/^\s*([\s\S]*?)\s*$/, '$1');
+
+ }
+
+};
+
+Template.escapeString = function (str) {
+ var hexDigits = "0123456789ABCDEF";
+ var hex = function (d) { return hexDigits[d >> 8] + hexDigits[d & 0x0F]; }
+ var esc = function (string) {
+ return string.replace(/[\x00-\x1F'\\]/g,
+ function (x) {
+ if (x === "'" || x === "\\") return "\\" + x;
+ return "\\x" + hex(x.charCodeAt(0));
+ });
+ }
+ if (typeof str === "string") return "'" + esc(str) + "'";
+ else throw new Template.Exception("escape", "Called escapeString on a non-string: " + str);
+};
+
+/** section: Template
+ * Filters
+ **/
+Template.Filters = {
+ /**
+ * Filters.html(text) -> String
+ * - text (String): string to html escape
+ *
+ **/
+ html: function(text) {
+ return text.replace(/&/g, '&')
+ .replace(/</g, '<')
+ .replace(/>/g, '>')
+ .replace(/"/g, '"');
+ }
+};
+
+Template.Context = function (config) {
+ this.config = config || {};
+ this.global = {};
+ this.blocks = this.config.blocks || {};
+ this.filters = [ this.config.FILTERS || {}, Template.Filters ];
+
+ // default include path
+ this.config.INCLUDE_PATH = this.config.INCLUDE_PATH || [ "." ];
+};
+
+Template.Context.prototype = {
+
+ clone: function clone(obj, deep) {
+ // A clone of an object is an empty object
+ // with a prototype reference to the original.
+
+ // a private constructor, used only by this one clone.
+ function Clone() { }
+ Clone.prototype = obj;
+
+ if (!deep)
+ return new Clone()
+
+ var c = new Clone();
+
+ for (var i in obj) {
+ if (obj.hasOwnProperty(i) && typeof obj[i] == 'object')
+ c[i] = clone(obj[i], true);
+ }
+ return c;
+ },
+
+ parse_file: function(file) {
+ if ("config" in this == false)
+ throw new Template.Exception("NO_CONFIG", "No config");
+
+ var contents;
+ for (var i in this.config.INCLUDE_PATH) {
+ try {
+ var f = this.config.INCLUDE_PATH[i] + '/' + file;
+ contents = this.load_file(f);
+ break;
+ }
+ // TODO: Handle the error better would be nice
+ catch (e) { }
+ }
+ if (contents === undefined)
+ return contents;
+
+ var parser = new Template.Parser(this.config);
+ parser.parse(contents);
+ var ti = new Template.Interpreter(parser.chunks(), this.config);
+ return eval('('+ti.output+')');
+ },
+
+ include_block: function include_block(block, args) {
+ var blocks = this.blocks;
+ var stash = this.stash;
+
+ this.blocks = this.clone(blocks);
+ this.stash = this.clone(stash, true);
+
+ try {
+ return this.process_block(block, args);
+ }
+ finally {
+ this.blocks = blocks;
+ this.stash = stash;
+ }
+ },
+
+ process_block: function(block,args) {
+ var trim;
+ if (block instanceof Function == false) {
+ // Only trim defined blocks, not wrapper/anon-blocks
+ trim = this.config.TRIM;
+ block = block.toString();
+ if (block in this.blocks == false) {
+ // If its not a block, it must be a file
+ var func = this.parse_file(block);
+
+ if (func === undefined)
+ throw new Template.Exception("file", block + ": not found");
+
+ this.blocks[block] = func;
+ }
+ block = this.blocks[block];
+ }
+
+ args = args || [];
+ for (var i in args) {
+ var arg = args[i];
+
+ this.dot_op(this.stash, [arg[0]], {assign: arg[1]});
+ }
+
+ var ret = block(this);
+
+ if (trim) {
+ ret = ret.replace(/^\s*([\s\S]*?)\s*$/, '$1');
+ }
+
+ return ret;
+ },
+
+ nullObj: { toString: function() { return ''; } },
+
+ dot_op: function Template$Context$dot_op(stash, segments, args) {
+ var s = stash;
+
+ if (!args) args = { };
+
+ // We are assigning, so create dict objects as needed...
+ if ('assign' in args) {
+ var last_seg = segments.pop();
+ if (Template.Stash.PRIVATE && Template.Stash.PRIVATE.exec(last_seg))
+ return undefined;
+
+ for (var i in segments) {
+ var segment = segments[i];
+ if (Template.Stash.PRIVATE && Template.Stash.PRIVATE.exec(segment))
+ return undefined;
+
+ if (s[segment] === undefined) {
+ s[segment] = {};
+ }
+ s = s[segment];
+ }
+
+ var ret = s[last_seg];
+ if (!args['default'] || !ret)
+ ret = s[last_seg] = args.assign;
+
+ return ret;
+ }
+
+ for (var i in segments) {
+ var segment = segments[i];
+ if (Template.Stash.PRIVATE && Template.Stash.PRIVATE.exec(segment))
+ return this.nullObj;
+
+ var op_args = [];
+ if (i == segments.length - 1)
+ op_args = args.args || [];
+
+ // Check vmeths - whats the priority of them?
+ if (s[segment] === undefined || s[segment] == null)
+ break ;//this.nullObj;
+ else if (s instanceof Array && Template.VMethods.LIST_OPS[segment])
+ s = Template.VMethods.LIST_OPS[segment].apply(s, op_args);
+ else if (s instanceof Object && Template.VMethods.HASH_OPS[segment])
+ s = Template.VMethods.HASH_OPS[segment].apply(s, op_args);
+ else if (Template.VMethods.SCALAR_OPS[segment])
+ s = Template.VMethods.SCALAR_OPS.apply(s, op_args);
+ else if (s[segment] instanceof Function)
+ s = s[segment].apply(s, op_args);
+ else
+ s = s[segment];
+ }
+
+ // 4.140000000000001 -> 4.14 fix
+ if (typeof s == 'number' && /\.[0-9]*00000[1-9]+$/.exec(s)) {
+ return s.toPrecision(12).replace(/0+$/, '');
+ }
+
+ // ROOT_OPS
+ if (s === undefined && segments.length == 1 &&
+ this.stash === stash &&
+ segments[0] in Template.VMethods.ROOT_OPS) {
+ s = Template.VMethods.ROOT_OPS[segments[0]].apply(stash, args.args || [] );
+ }
+ return s === undefined ? this.nullObj : s;
+ },
+
+ $setLoop: function(idx, size) {
+ this.dot_op(this.stash, ["loop"], {
+ assign: {
+ index: idx,
+ first: idx == 0,
+ count: ++idx,
+ 'number': idx,
+ size: size,
+ last: idx == size
+ }
+ } )
+ },
+
+ $forEachGenerator: function(a, func, novar) {
+ function next_val() {
+ try {
+ return a.next();
+ } catch (e) { if (e !== StopIteration) throw e }
+ return undefined;
+ }
+
+ var idx = 0;
+ var curr = next_val(), next = next_val();
+ while (curr !== undefined) {
+ if (novar && typeof a[curr] == 'object') {
+ for (var key in a[curr]) {
+ this.stash[key] = a[curr][key];
+ }
+ }
+ this.$setLoop(idx++, next !== undefined ? next+1 : undefined);
+ if ( func(a[curr]) == this.StopIteration)
+ break;
+ curr = next;
+ next = next_val();
+ }
+ },
+
+ // Loop over (sorted) keys of object
+ $forEachObject: function(a, func, novar) {
+ var keys = [];
+ if (Object.keys)
+ keys = Object.keys(a);
+ else {
+ for (var i in a)
+ keys.push(i);
+ }
+ keys = keys.sort();
+
+ for (var i =0; i < keys.length; i++) {
+ this.$setLoop(i, a.length || 0);
+ if (func({key: keys[i], value: a[keys[i]] }) == this.StopIteration)
+ break;
+ }
+ },
+
+ /*
+ * For each wrapper that promotes var to an array
+ */
+ forEach: function(a, func, novar) {
+ if (a === undefined || a === this.nullObj)
+ return undefined;
+
+ var stash = this.stash;
+ var old_loop = this.stash.loop;
+ try {
+ if (novar) {
+ this.stash = this.clone(stash);
+ }
+
+ // Generator - SM1.8+ism
+ if (a.__iterator__ && a.__iterator__() === a) {
+ return this.$forEachGenerator(a, func, novar);
+ }
+ else if (a instanceof Array == false) {
+ if (!novar && typeof a == "object") {
+ return this.$forEachObject(a, func, novar);
+ }
+ a = [a];
+ }
+
+ for (var i =0; i < a.length; i++) {
+ if (novar && typeof a[i] == 'object') {
+ for (var key in a[i]) {
+ this.stash[key] = a[i][key];
+ }
+ }
+ this.$setLoop(i, a.length);
+ if (func(a[i] || undefined) == this.StopIteration)
+ break;
+ }
+ }
+ finally {
+ this.stash = stash;
+ if (!novar && old_loop)
+ this.stash.loop = old_loop;
+ }
+ return undefined;
+ },
+
+ // Default implementation if no file IO.
+ load_file: function load_file(file) {
+ throw new Template.Exception("file", Template.escapeString(file) + ": not found");
+ },
+
+ $catch: function $catch(err) {
+ var errType = typeof err == "object" &&
+ err.constructor &&
+ err.constructor.name
+ ? err.constructor.name
+ : 'undef';
+ if (!(err instanceof Template.Exception) ) {
+ err = new Template.Exception('undef', err);
+ }
+ this.dot_op(this.stash, ["error"], { assign: err } );
+ this.dot_op(this.stash, ["e"], { assign: err } );
+ return err;
+ },
+
+ $error_matches: function $error_matches(err, type) {
+ if (err.type == type)
+ return true;
+ type += '.';
+ return err.type.substr(0,type.length) == type;
+ },
+
+ filter: function filter(name, args) {
+ var flt;
+
+ for (var i in this.filters) {
+ if (name in this.filters[i] == false)
+ continue;
+ flt = this.filters[i][name];
+
+ if (typeof flt != "function") {
+ throw new Template.Exception( "filter",
+ "invalid FILTER entry for '" + name + "' (not a function)"
+ );
+ }
+ }
+
+ if (!flt) {
+ throw new Template.Exception("filter",
+ Template.escapeString(name) + ": not found");
+ }
+
+ return flt;
+
+ }
+};
+
+try {
+ var fs = require('fs-base');
+
+ if (typeof fs != 'undefined' && 'rawOpen' in fs) {
+ Template.Context.prototype.load_file = function load_file(file) {
+
+ var f;
+ try {
+ f = new fs.rawOpen(file, 'r');
+ }
+ catch (e) {
+ throw new Template.Exception("file", Template.escapeString(file) + ": not found");
+ }
+
+ return f.readWhole();
+ }
+ }
+} catch (e) {}
+
+Template.Parser = function (config) {
+ this.end_tag = this.default_end_tag;
+ this.start_tag = this.default_start_tag;
+ this.min_precedence = 0;
+ this._tokenWatermark = 0;
+ this._tokenBuffer = [];
+
+ if (!config)
+ config = {};
+
+ this.config = config;
+
+ if (config.DEBUG) {
+ var self = this;
+ // DEBUG logging of calls!
+ this._tracedFunctions.split(/\s+/).forEach(function(name) {
+ var func = self.__proto__[name];
+ self[name] = function Template$Parser$prototype$logCall() {
+ try {
+ if (name == 'consumeToken') {
+ self._logCall(name + '(' + Template.escapeString(this.token.literal || this.token.type) + ')');
+
+ } else if (name == 'assertToken') {
+ self._logCall(name + '(' + arguments[0].toSource() + ')');
+ } else if (name == 'binary_expr') {
+ self._logCall(name + '(' + (arguments[1] || 0) + ')');
+ } else {
+ self._logCall(name);
+ }
+ var ret = func.apply(self, arguments);
+ self._exitCall(name);
+ return ret;
+ } catch (e) {
+ self._exitCall(name, 1);
+ throw e;
+ }
+ };
+ self[name].origFunc = func;
+ });
+
+ this._callIndent = "";
+ }
+};
+
+Template.Parser.prototype = {
+
+ _logCall: function(name) {
+ /*if (confirm(name) == false)
+ throw new Error('cancalled at user request');*/
+ this.log('* ' + this._callIndent + name);
+ this._callIndent += ' ';
+ },
+ _exitCall: function(name, errorHappened) {
+ this._callIndent = this._callIndent.substr(0, this._callIndent.length - 2);
+ if (name != "consumeToken")
+ this.log('* ' + this._callIndent + (errorHappened ? 'died in ' : 'end ' ) + name);
+ },
+
+ // These must be 'regexp-escaped'
+ default_start_tag: '\\[%',
+ default_end_tag: '%\\]',
+
+
+ _getToken: function Template$Parser$prototype$_getToken() {
+ if (this._tokenBuffer.length > this._tokenWatermark) {
+ return this._tokenBuffer[this._tokenWatermark];
+ }
+ return {type: "NUL"};
+
+ },
+
+ consumeToken: function Template$Parser$prototype$consumeToken() {
+ if (this._tokenWatermark >= this._tokenBuffer.length)
+ this.parseError(new Error("Tried to consume token when none were in the buffer!"));
+
+ var ret = this.token;
+
+ this._tokenWatermark++;
+ this.token = this._getToken();
+ return ret;
+ },
+
+ unconsumeToken: function() {
+ if (this._tokenWatermark < 1)
+ this.parseError(new Error("Tried to unconsume token when the buffer was already at start-of-block!"));
+
+ this._tokenWatermark--;
+ this.token = this._getToken();
+ },
+
+ parseError: function Template$parseError(msg) {
+ // TODO: Sort out line number
+ var substr = this.origInput.substr(this.token.position, 10).replace(/\n/g, '\\n');
+ if (this.token.position + 10 < this.origInput.length)
+ substr += '...';
+ throw new Error(msg + " at '" + substr + "' " + Template.escapeString(this.token));
+ },
+
+ log: function(str) {
+ if ( typeof window != "undefined" && window.console) {
+ this.log = function(str) {
+ return console.log.call(console.log, str.replace(/%([a-z])/g, '%%$1'))
+ };
+ return this.log(str);
+ }
+ else if (typeof print != "undefined") {
+ this.log = function(str) { print(str) };
+ return this.log(str);
+ }
+ else {
+ if (!this._log)
+ this._log = [];
+ this.log = function (str) {
+ this._log.push(str);
+ }
+ return this.log(str);
+ }
+ },
+
+ assertToken: function assertToken(token, msg) {
+ if (typeof token == "string") {
+ if (this.token.type != token) {
+ this.parseError(msg ? msg : token + ' expected');
+ }
+ }
+ else if (token.type != this.token.type) {
+ this.parseError(msg ? msg : token.type + ' expected');
+ }
+ else if (token.literal && token.literal != this.token.literal) {
+ this.parseError(msg ? msg : "'" + token.type + "' expected");
+ }
+ return this.consumeToken();
+ },
+
+ assertRule: function Template$Parser$prototype$assertRule(ruleFunc, args) {
+ var ret = ruleFunc.apply(this, args);
+
+ if (ruleFunc.origFunc) {
+ // DEBUG call logging enabled
+ ruleFunc = ruleFunc.origFunc;
+ }
+
+ var msg;
+ if (ret === undefined) {
+ // No message passed, search prototype for function name
+ for (var name in this.__proto__) {
+ if (this.__proto__[name] === ruleFunc) {
+ msg = name + ' expected';
+ break;
+ }
+ }
+ if (!msg)
+ msg = ruleFunc.name || ruleFunc.toSource();
+
+ this.parseError(msg);
+ }
+ return ret;
+ },
+
+ /* this cant be a regexp object, since we need to anchor it to different places... */
+ chompFlags: "[-=~+]",
+
+ /* Chomp chars to integer values */
+ chompValues : {
+ '+': Template.Constants.CHOMP_NONE,
+ '-': Template.Constants.CHOMP_ONE,
+ '=': Template.Constants.CHOMP_COLLAPSE,
+ '~': Template.Constants.CHOMP_GREEDY
+ },
+
+ precedence: {
+ '?' : 0,
+ ':' : 0,
+
+ '==': 2,
+ '!=': 2,
+ '<' : 2,
+ '>' : 2,
+ '>=': 2,
+ '<=': 2,
+
+ OR : 5,
+ AND : 5,
+
+ CAT : 10,
+
+ '-' : 20,
+ '+' : 20,
+
+ '%' : 30,
+
+ '*' : 40,
+ '/' : 40,
+ DIV : 40
+ },
+
+ /*
+ * Examine str and split into a list of tokens representing the entire string
+ * (including blocks and chunks of text)
+ */
+ parse: function Template$Parser$prototype$parse(str) {
+ // First work out where the start_tag is
+ var self = this;
+
+ // ^ doesn't anchor to beging of string only in multi-line mode, it also
+ // anchors to start of line This is not what we want, so use .|\n and no /m
+ // flag
+ var re = new RegExp('^((?:.|\\n)*?)(?:(' + this.start_tag +
+ ')((?:.|\\n)*?)(' + this.end_tag + '))');
+ this.origInput = str;
+
+ var pos=0;
+ var post = str;
+
+ var match,pre,dir;
+
+ this._tokenBuffer = [];
+
+ while (1) {
+ var postchomp = this.config.POST_CHOMP;
+ var left = post.replace(re, function(entire, pre, start,dir,end) {
+
+ if (dir) {
+ if(dir[0] == '#') {
+ // Comment out entire directive bar any end chomp flag
+ dir = dir.match(new RegExp( self.chompFlags + '$' ) ) || '';
+ } else {
+ var chomp = self.config.PRE_CHOMP;
+ dir = dir.replace(new RegExp('^(' + self.chompFlags + ')'),
+ function(entire, flag) {
+ chomp = self.chompValues[flag];
+ return '';
+ }
+ );
+
+
+ if (chomp && pre) {
+ switch (chomp) {
+ case Template.Constants.CHOMP_NONE:
+ break;
+ case Template.Constants.CHOMP_ONE:
+ pre = pre.replace(/\n?[^\S\n]*$/, '');
+ break;
+ case Template.Constants.CHOMP_COLLAPSE:
+ pre = pre.replace(/\s*$/, ' ');
+ break;
+ case Template.Constants.CHOMP_GREEDY:
+ pre = pre.replace(/\s*$/, '');
+ break;
+ default:
+ throw new Error('unhandled prechomp flag ' + chomp);
+ }
+ }
+
+ dir = dir.replace(new RegExp('(' + self.chompFlags + ')\s*$'),
+ function(entire, flag) {
+ postchomp = self.chompValues[flag];
+ return '';
+ }
+ );
+
+
+ } // else not commented whole dir
+ } // If (directive)
+
+ if (pre.length) {
+ if (self.config.INTERPOLATE)
+ self._tokenBuffer = self._tokenBuffer.concat(self.interpolate_text(pre, pos));
+ else
+ self._tokenBuffer.push({type: 'TEXT', literal: pre, position: pos});
+
+ pos += pre.length;
+ }
+
+ pos += start.length;
+
+ // Append tokens from this directive to buffer
+ self._tokenBuffer = self._tokenBuffer.concat(self.tokenise(dir, pos));
+
+ pos += dir.length;
+ self._tokenBuffer.push({type: ';', position: pos, automatic: 1})
+
+ // move pos past end tag
+ pos += end.length;
+
+ return "";
+ });
+
+ if (postchomp && left) {
+ switch (postchomp) {
+ case Template.Constants.CHOMP_NONE:
+ break;
+ case Template.Constants.CHOMP_ONE:
+ left = left.replace(/^(?:[^\S\n]*\n)/, '');
+ break;
+ case Template.Constants.CHOMP_COLLAPSE:
+ left = left.replace(/^\s*/, ' ');
+ break;
+ case Template.Constants.CHOMP_GREEDY:
+ left = left.replace(/^\s*/, '');
+ break;
+ default:
+ throw new Error('unhandled postchomp flag ' + postchomp);
+ }
+ }
+
+
+ if (post.length == left.length)
+ break;
+ post = left;
+ }
+
+ // done with this now
+ self = undefined;
+
+ if (post.length) {
+ // Anything after the last directive
+ if (this.config.INTERPOLATE)
+ this._tokenBuffer = this._tokenBuffer.concat(this.interpolate_text(post, pos));
+ else
+ this._tokenBuffer.push({type: 'TEXT', literal: post, position: pos});
+ }
+
+ this.token = this._getToken();
+
+ },
+
+ // This monster would be so much nicer if JS had the /x flag for regexps
+ // Taken from Template::Parser
+ tokenise_regexp: /(#[^\n]*)|(["'])((?:\\\\|\\\2|.|\n)*?)\2|(-?\d+(?:\.\d+)?)|(\/?\w+(?:(?:\/|::?)\w*)+|\/\w+)|(\w+)|([(){}\[\]:;,\/\\]|\->|[+\-*]|\$\{?|=>|[=!<>]?=|[!<>]|&&?|\|\|?|\.\.?|\S+)/mg,
+
+ tokenise: function Template$Parser$prototype$tokenise(text, pos) {
+
+ // if you use the /foobar/ constructor, you get a SINGLETON OBJECT - GRRRR
+ var re = new RegExp(this.tokenise_regexp.source, 'mg');
+
+ var type, match, token;
+ var tokens = [];
+
+ var initPos = pos;
+
+ while ( (match = re.exec(text) ) ) {
+
+ pos = initPos + re.lastIndex - match[0].length;
+ // Comment in $1
+ if (match[1])
+ continue;
+
+ // Quoted pharse in $3 (and quote char in $2)
+ if ( (token = match[3]) ) {
+ if (match[2] == '"') {
+ if (token.match("[\$\\\\]") ) {
+ type = 'QUOTED';
+ /* unescape " and \ but leave \$ escaped so that
+ * interpolate_text doesn't incorrectly treat it
+ * as a variable reference
+ */
+ token = token.replace(/\\([^\$nrt])/g, "$1");
+ token = token.replace(/\\([nrt])/g, function(str) { return eval('"' + str + '"'); });
+
+ tokens.push({type: '"', literal: '"', position: pos});
+ pos++;
+ var segments = this.interpolate_text(token, pos);
+
+ tokens = tokens.concat(segments);
+
+ pos += match[2].length;
+ tokens.push({type: '"', literal: '"', position: pos});
+ pos++;
+
+ continue;
+ }
+ else {
+ type = 'LITERAL';
+ //TODO token =~ s['][\\']g;
+ token = "'" + token + "'";
+ }
+ }
+ else {
+ type = 'LITERAL';
+ token = "'" + token + "'";
+ }
+ }
+ else if (match[2]) {
+ // Empty string
+ type = 'LITERAL';
+ token = "''";
+ }
+
+ // number
+ else if ( (token = match[4]) !== undefined) {
+ type ='NUMBER';
+ }
+ else if ( (token = match[5]) !== undefined) {
+ type = 'FILENAME';
+ }
+ else if ( (token = match[6]) !== undefined) {
+ // TODO: anycase support
+ var uctoken = this.config.ANYCASE ? token.toUpperCase() : token;
+
+ type = this.LEXTABLE[uctoken];
+ if (type !== undefined) {
+ token = uctoken;
+ }
+ else {
+ type = 'IDENT';
+ }
+ }
+
+ else if ( (token = match[7]) !== undefined) {
+ // TODO: anycase support
+ var uctoken = token;
+
+ if (this.LEXTABLE[uctoken] === undefined) {
+ type = 'UNQUOTED';
+ }
+ else {
+ type = this.LEXTABLE[uctoken];
+ }
+ }
+ else {
+ throw new Error('Something went wrong in the tokeniser, and it matched nothing');
+ }
+
+ tokens.push({type: type, literal: token, position: pos });
+ }
+
+ return tokens;
+ },
+
+ /*
+ * Examines text looking for any variable references embedded like $this or
+ * like ${ this }.
+ *
+ */
+
+ interpolate_text: function Template$Parser$prototype$interpolate_text(text, pos) {
+ var re = /((?:\\.|[^\$]){1,3000})|(\$(?:(?:\{([^\}]*)\})|([\w\.]+)))/g;
+
+ var match, pre, v, dir;
+ var tokens = [];
+ while ( (match = re.exec(text)) ) {
+ pre = match[1];
+ dir = match[2];
+ if (match[3])
+ v = match[3];
+ else
+ v = match[4];
+
+ if (pre && pre.length) {
+ pos += pre.length;
+ pre = pre.replace(/\\\$/, "$");
+ tokens.push({type: 'TEXT', literal: pre, position: pos})
+ }
+
+ // $var reference
+ if (v) {
+ tokens = tokens.concat( this.tokenise(v, pos) );
+ pos += v.length;
+ tokens.push({type: ';', literal: ';', position: pos, automatic: 1});
+ }
+ else if (dir) {
+ throw new Error('interpolate dir');
+ tokens.push({type: 'TEXT', literal: dir, position: pos});
+ }
+ }
+ return tokens;
+ },
+
+ LEXTABLE: {
+ 'FOREACH' : 'FOR',
+ 'BREAK' : 'LAST',
+ '&&' : 'AND',
+ '||' : 'OR',
+ '!' : 'NOT',
+ '|' : 'FILTER',
+ '.' : 'DOT',
+ '_' : 'CAT',
+ '..' : 'TO',
+// ':' : 'MACRO',
+ '=' : 'ASSIGN',
+ '=>' : 'ASSIGN',
+// '->' : 'ARROW',
+ ',' : 'COMMA',
+ '\\' : 'REF',
+ 'and' : 'AND', // explicitly specified so that qw( and or
+ 'or' : 'OR', // not ) can always be used in lower case,
+ 'not' : 'NOT', // regardless of ANYCASE flag
+ 'mod' : '%',
+ 'MOD' : '%',
+ 'div' : 'DIV',
+
+ // Reserved words
+ GET: 'GET',
+ CALL: 'CALL',
+ SET: 'SET',
+ DEFAULT: 'DEFAULT',
+ INSERT: 'INSERT',
+ INCLUDE: 'INCLUDE',
+ PROCESS: 'PROCESS',
+ WRAPPER: 'WRAPPER',
+ BLOCK: 'BLOCK',
+ END: 'END',
+ USE: 'USE',
+ PLUGIN: 'PLUGIN',
+ FILTER: 'FILTER',
+ MACRO: 'MACRO',
+ PERL: 'PERL',
+ RAWPERL: 'RAWPERL',
+ TO: 'TO',
+ STEP: 'STEP',
+ AND: 'AND',
+ OR: 'OR',
+ NOT: 'NOT',
+ DIV: 'DIV',
+ //MOD: 'MOD',
+ IF: 'IF',
+ UNLESS: 'UNLESS',
+ ELSE: 'ELSE',
+ ELSIF: 'ELSIF',
+ FOR: 'FOR',
+ NEXT: 'NEXT',
+ WHILE: 'WHILE',
+ SWITCH: 'SWITCH',
+ CASE: 'CASE',
+ META: 'META',
+ IN: 'IN',
+ TRY: 'TRY',
+ THROW: 'THROW',
+ CATCH: 'CATCH',
+ FINAL: 'FINAL',
+ LAST: 'LAST',
+ RETURN: 'RETURN',
+ STOP: 'STOP',
+ CLEAR: 'CLEAR',
+ VIEW: 'VIEW',
+ DEBUG: 'DEBUG',
+
+ // cmp ops
+ '!=': 'CMPOP',
+ '==': 'CMPOP',
+ '<' : 'CMPOP',
+ '>' : 'CMPOP',
+ '>=': 'CMPOP',
+ '<=': 'CMPOP',
+
+ // other bin ops
+ '-': 'BINOP',
+ '*': 'BINOP',
+ '%': 'BINOP',
+
+ // other tokens
+ '(':'(',
+ ')':')',
+ '[':'[',
+ ']':']',
+ '{':'{',
+ '}':'}',
+ '${':'${',
+ '$':'$',
+ '+':'+',
+ '/':'/',
+ ';':';',
+ ':':':',
+ '?':'?'
+ },
+
+
+ // grammar rules
+ expr: function Template$Parser$prototype$expr() {
+ if (this.token.type === '(') {
+ // '(' assign | expr ')'
+ this.consumeToken();
+ switch (this.token.type) {
+ case 'IDENT':
+ case '${':
+ case '$':
+ case 'LIERAL':
+ break;
+ default:
+ var expr = this.assertRule(this.expr);
+ this.assertToken(')')
+ return expr;
+ }
+
+ // Could be and expr, or could be a assing
+ var sterm = this.sterm();
+ var ret;
+ if (this.token.type == 'ASSIGN') {
+ // assign
+ this.consumeToken;
+ ret = { type: 'ASSIGN', lhs: sterm, rhs: this.assertRule(this.expr) };
+ } else {
+ // expr
+ ret = this.expr_tail(sterm);
+ }
+ this.assertToken(')');
+ return ret;
+ }
+
+ var term = this.term();
+ if (term === undefined)
+ return term;
+ return this.expr_tail(term);
+ },
+
+ expr_tail: function Template$Parser$prototype$expr_tail(term) {
+
+ switch (this.token.type) {
+
+ case '?':
+ case 'CMPOP':
+ case 'BINOP':
+ // binary ops
+ case '+':
+ case '/':
+ case '%':
+ case 'DIV':
+ case 'CAT':
+ case 'AND':
+ case 'OR':
+ return this.binary_expr(term, this.min_precedence);
+
+ }
+ // end switch
+
+ return term;
+ },
+
+ token_precedence: function(token) {
+ token = token || this.token;
+ if (token.type == 'CMPOP' || token.type == 'BINOP')
+ token = token.literal;
+ else
+ token = token.type;
+
+ return token in this.precedence ? this.precedence[token]
+ : -1;
+ },
+
+ binary_expr: function Template$Parser$binary_expr(lhs, min_precedence) {
+ var op, rhs, new_precedence;
+ while ( this.token_precedence() >= min_precedence) {
+ var watermark = this._tokenWatermark;
+ op = this.consumeToken();
+ new_precedence = this.token_precedence(op);
+ if (op.type == 'CMPOP' || op.type == 'BINOP')
+ op = op.literal;
+ else
+ op = op.type;
+
+ //this.min_precedence = new_precedence;
+ rhs = this.assertRule(this.term);
+ while ( this.token_precedence() >= new_precedence) {
+ rhs = this.binary_expr(rhs, this.token_precedence());
+ }
+
+ if (op == '?' && rhs.type != ':') {
+ this._tokenWatermark = watermark;
+ this._getToken();
+ this.parseError(": expected after ?");
+ } else {
+ lhs = { type: op, lhs: lhs, rhs: rhs };
+ }
+ }
+ return lhs;
+ },
+
+ term: function Template$Parser$prototype$term() {
+
+ // Is this too low priority? sohuld it be NOT expr() instead of term() ?
+ if (this.token.type == 'NOT') {
+ // NOT expr
+ this.consumeToken();
+ return { type: 'NOT', child: this.term() };
+ }
+
+ // todo: do this properly
+ var term = this.lterm();
+ if (term) {
+ return term;
+ }
+
+ return this.sterm();
+ },
+
+ sterm: function Template$Parser$prototype$sterm() {
+ switch (this.token.type) {
+ case 'LITERAL':
+ case 'NUMBER':
+ return this.consumeToken();
+ case 'REF':
+ this.consumeToken();
+ var ident = this.assertRule(this.ident);
+ return { type: 'REF', ident: ident };
+ case '"':
+ this.consumeToken();
+ var quoted = this.quoted();
+ this.assertToken('"');
+ return quoted;
+ default:
+ // might be an ident;
+ return this.ident();
+ }
+ },
+
+ quoted: function Template$Parser$prototype$quoted() {
+ var segs = [];
+ var loop = true;
+ while (loop) {
+ switch (this.token.type) {
+ case ';':
+ this.consumeToken();
+ break;
+ case 'TEXT':
+ segs.push(this.consumeToken());
+ break;
+ default:
+ var ident = this.ident();
+ if (ident === undefined)
+ loop = false;
+ else
+ segs.push(ident);
+ break;
+ }
+ }
+
+ if (segs.length)
+ return {type: 'QUOTED', segments: segs };
+ return undefined;
+ },
+
+ ident: function Template$Parser$prototype$ident() {
+ // DOT separeted list of nodes, followed by an optional DOT number
+
+ var segments = [this.node()];
+ if (segments[0] === undefined)
+ return undefined;
+
+ while (this.token.type == 'DOT') {
+ this.consumeToken();
+
+ if (this.token.type == 'NUMBER') {
+ segments.push(this.consumeToken());
+ break;
+ }
+ segments.push(this.assertRule(this.node));
+ }
+
+ if (segments.length == 1)
+ return segments[0];
+
+ return {type: 'ident', segments: segments };
+ },
+
+ node: function Template$Parser$prototype$node() {
+ var item = this.item();
+
+ if (item !== undefined && this.token.type == '(') {
+ this.consumeToken();
+ // args
+ var ret = {type: 'function_call', func: item };
+ ret.args = this.assertRule(this.args);
+ this.assertToken(')');
+ return ret;
+ }
+ return item;
+ },
+
+ args: function Template$Parser$prototype$args() {
+ // named params are stored in ret[0]
+ var ret = [ [] ];
+
+ while (1) {
+ var ident;
+
+ // due to the way ident is written, it will return an ident or item rules
+ // so just handle the LITERAL case of param here
+ if (this.token.type == 'LITERAL')
+ ident = this.consumeToken();
+ else
+ ident = this.ident();
+
+ if (ident !== undefined) {
+ // an expr could be an ident or a LITERAL, so make sure we have an `=' afterwards
+ if (this.token.type != 'ASSIGN') {
+ ret.push(ident);
+ }
+ else {
+ // we have a named param
+ this.assertToken('ASSIGN');
+ ret[0].push(ident);
+ ret[0].push(this.assertRule(this.expr));
+ }
+ } else {
+ // else we have a position param
+ var expr = this.expr();
+
+ if (expr === undefined)
+ break;
+
+ ret.push(expr);
+ }
+
+ // Its hard to detect a expr here. It can start with:
+ // + / DIV MOD CAT AND OR BINOP CMPOP ? (
+ switch (this.token.type) {
+ case 'COMMA':
+ this.consumeToken();
+ break;
+ case '(':
+ case '?':
+ case 'CMPOP':
+ case 'BINOP':
+ case '+':
+ case '/':
+ case 'DIV':
+ case '%':
+ case 'CAT':
+ case 'AND':
+ case 'OR':
+ ident = ret.pop();
+ ret.push(this.assertRule(this.expr_tail, [ident]));
+ break;
+ }
+
+ // Gah - comma is optional
+ if (this.token.type == 'COMMA')
+ this.consumeToken();
+ }
+
+ return ret;
+ },
+
+ item: function Template$Parser$prototype$item() {
+ var ret;
+ switch (this.token.type) {
+ case 'IDENT':
+ return this.consumeToken();
+ case '${':
+ this.consumeToken();
+ ret = { type: 'interpret', term: this.assertRule(this.sterm) };
+ this.consumeToken('}');
+ return ret;
+ case '$':
+ this.consumeToken();
+ var ident = this.assertToken('IDENT');
+ if (this.config.V1DOLLAR)
+ ret = ident;
+ else
+ ret = { type: 'interpret', term: ident };
+ return ret;
+ default:
+ return undefined;
+ }
+
+ },
+
+ lterm: function Template$Parser$prototype$lterm() {
+ if (this.token.type == '[') {
+ // list, range or empty
+ this.consumeToken();
+
+ if (this.token.type == ']') {
+ // empty list
+ this.consumeToken();
+ return {type: 'array', items: [] };
+ }
+ // range starts with an sterm, list with a term
+ var term = this.sterm();
+
+ // could be a range - see if next char is TO '..'
+ if (term !== undefined) {
+ if (this.token.type == 'TO') {
+ this.consumeToken();
+ var ret = { type: 'range', from: term, to: this.assertRule(this.sterm) };
+ this.assertToken(']');
+ return ret;
+ }
+ // Not followed by a TO, therefore must be a list - just drop out
+
+ } else {
+ // No sterm, must be an lterm then
+ term = this.assertRule(this.lterm);
+ }
+
+ // If we get here, we know we have a list
+ var ret = { type: 'array', items: [term] };
+
+ while (this.token.type != ']' && this.token.type != 'NUL') {
+ if (this.token.type == 'COMMA') {
+ this.consumeToken();
+ continue;
+ }
+ ret.items.push(this.assertRule(this.term));
+ }
+
+ this.assertToken(']');
+ return ret;
+
+ } else if (this.token.type == '{') {
+ // hash
+
+ this.consumeToken();
+
+ // cant store data as a dict since it might need interpreting
+ var ret = {type: 'hash', data: this.assertRule(this.params) };
+
+ this.assertToken('}');
+
+ return ret;
+ }
+ return undefined;
+ },
+
+ params: function Template$Parser$prototype$params() {
+ var items = [this.assertRule(this.param)];
+
+ while (this.token.type != 'NUL') {
+ if (this.token.type == 'COMMA') {
+ this.consumeToken();
+ continue;
+ }
+
+ var item = this.param();
+
+ if (item === undefined)
+ break;
+ items.push(item);
+ }
+
+ return items;
+ },
+
+ param: function Template$Parser$prototype$param() {
+ var ret = { type: 'assign' };
+
+ if (this.token.type == 'LITERAL') {
+ ret.to = this.consumeToken();
+ } else {
+ ret.to = this.item();
+ if (ret.to === undefined)
+ return undefined;
+ }
+
+ this.assertToken('ASSIGN');
+
+ ret.value = this.assertRule(this.expr);
+
+ return ret;
+ },
+
+ /*
+ * capture, expr, condition (post-fixed only) and setlist all start with
+ * ambigious things - so this rule embodies this
+ */
+ complex_statement: function Template$Parser$prototype$complex_statement() {
+
+ var expr;
+
+ if (this.token.type == 'LITERAL') {
+ // only setlist or expr can start with a LITERAL
+ var lit = this.consumeToken();
+
+ // If we have an ASSIGN next, we _must_ be a setlist
+ if (this.token.type == 'ASSIGN') {
+
+ this.consumeToken();
+ return this.setlist_tail(lit);
+
+ } else {
+
+ // expr
+ expr = this.expr_tail(lit);
+ }
+ } else {
+
+ var ident = this.ident();
+
+ if (ident !== undefined) {
+
+ // At this point, we can be an expr, a setlist or a capture
+
+ if (this.token.type == 'ASSIGN') {
+ // A capture or a setlist
+ this.consumeToken();
+
+ if (this.token.type == 'BLOCK') {
+ // mdir
+ throw new Error('mdir');
+ }
+
+ //throw new Error('WTF do i do here' + ident.toSource());
+ // TODO: Capture;
+
+
+ return this.setlist_tail(ident);
+ } else {
+ expr = this.expr_tail(ident);
+ }
+ }
+ else {
+ // Not an expression that starts with an ident (probably quoted)
+ expr = this.expr();
+ if (!expr)
+ return undefined;
+ }
+
+ }
+
+ if (expr) {
+ return this.postfixed_condition(expr);
+ }
+ return undefined;
+ },
+
+ // called with an ident or a LITERAL, and the first ASSIGN already consumed
+ setlist_tail: function Template$Parser$prototype$setlist_tail(ident) {
+
+ var as = [{ type: 'ASSIGN', lhs: ident }];
+ if (this.token.type == 'LITERAL')
+ as[0].rhs = this.consumeToken();
+ else
+ as[0].rhs = this.assertRule(this.expr);
+
+ while (this.token.type != ';') {
+ if (this.token.type == 'NUL')
+ break;
+
+ // comma seperators are optional
+ if (this.token.type == 'COMMA') {
+ this.consumeToken();
+ continue;
+ }
+
+ var i;
+ if (this.token.type == 'LITERAL')
+ i = this.consumeToken();
+ else
+ i = this.assertRule(this.ident);
+
+ this.assertToken('ASSIGN');
+ as.push( { type: 'ASSIGN', lhs: i, rhs: this.assertRule(this.expr) } );
+ }
+ return {type: 'setlist', chunks: as};
+ },
+
+
+ postfixed_condition: function Template$Parser$prototype$postfixed_condition(expr) {
+ if (this.token.type == 'IF' || this.token.type =='UNLESS') {
+ var ret = {type: this.consumeToken().type, body: [expr] };
+ ret.condition = this.assertRule(this.expr);
+ return this.postfixed_condition(ret);
+ }
+ if (this.token.type == 'WRAPPER') {
+ this.consumeToken();
+ var nameargs = this.assertRule(this.nameargs);
+ nameargs.type = 'WRAPPER';
+ nameargs.chunks = [expr];
+
+ return this.postfixed_condition(nameargs);
+ }
+ if (this.token.type == 'FOR' || this.token.type == 'WHILE') {
+ var token = this.consumeToken();
+ var ret = {
+ type: token.type,
+ loopvar: this.assertRule(token.type == 'FOR' ? this.loopvar : this.expr),
+ chunks: [expr]
+ };
+ return this.postfixed_condition(ret);
+ }
+
+ if (this.token.type == 'FILTER') {
+ var ret = {
+ type: this.consumeToken().type,
+ chunks: [expr],
+ filter: this.assertRule(this.lnameargs)
+ };
+ return ret;
+ }
+
+ return expr;
+ },
+
+
+ atomexpr: function Template$Parser$prototype$atomexpr() {
+ return this.expr();
+ },
+
+ atomdir: function Template$Parser$prototype$atomdir() {
+ switch (this.token.type) {
+ case 'GET':
+ case 'CALL':
+ return { type: this.consumeToken().type,
+ expr: this.assertRule(this.expr)
+ };
+
+ case 'SET':
+ this.consumeToken();
+ return this.assertRule(this.setlist);
+ case 'DEFAULT':
+ return { type: this.consumeToken().type, expr:
+ this.assertRule(this.setlist)
+ };
+ case 'INSERT':
+ case 'INCLUDE':
+ case 'PROCESS':
+ case 'THROW':
+ var type = this.consumeToken().type;
+ var nameargs = this.assertRule(this.nameargs);
+ nameargs.type = type;
+ return nameargs;
+ case 'NEXT':
+ case 'LAST':
+ case 'CLEAR':
+ return this.consumeToken();
+ default:
+ return undefined;
+ }
+ },
+
+ loop: function Template$Parser$prototype$loop() {
+ if (this.token.type == 'FOR' || this.token.type == 'WHILE') {
+ var token = this.consumeToken();
+ var ret = { type: token.type,
+ loopvar: this.assertRule(token.type == 'FOR' ? this.loopvar : this.expr),
+ chunks: []
+ };
+ this.assertToken(';');
+ while (this.token.type != 'END') {
+ if (this.token.type == 'NUL') // EOF
+ break;
+ ret.chunks.push(this.chunk());
+ }
+ this.assertToken('END');
+ return ret;
+ }
+ return undefined;
+ },
+
+ loopvar: function Template$Parser$prototype$loopvar() {
+ var ident;
+ if (this.token.type == 'IDENT') {
+ ident = this.consumeToken();
+ if (this.token.type == 'ASSIGN')
+ this.consumeToken();
+ else if (this.token.type == 'IN')
+ this.consumeToken();
+ else {
+ ident = undefined;
+ this.unconsumeToken();
+ }
+ }
+ var ret = { term: this.assertRule(this.term), args: this.args() };
+ if (ident)
+ ret.ident = ident;
+
+ return ret;
+ },
+
+ // `Top level' gramar rules
+ chunks: function Template$Parser$prototype$chunks() {
+ var chunks = [];
+ while (this.token.type != 'NUL') {
+ chunks.push(this.chunk());
+ }
+ return chunks;
+ },
+
+ chunk: function Template$Parser$prototype$chunk() {
+ if (this.token.type == 'TEXT') {
+ return this.consumeToken();
+ } else if (this.token.type == ';') {
+ this.consumeToken();
+ return undefined;
+ } else {
+ var ret = this.assertRule(this.statement);
+ this.assertToken(';');
+ return ret;
+ }
+ },
+
+ statement: function Template$Parser$prototype$statment() {
+ return this.complex_statement() || this.directive() ||
+ this.block() || this.wrapper_like() || this.filter() ||
+ this.expr();
+ },
+
+ directive: function Template$Parser$prototype$directive() {
+ var atom = this.atomdir();
+
+ if (atom)
+ return this.postfixed_condition(atom);
+
+ return this.condition() || this.switchBlock() ||
+ this.loop() || this.tryCatch();
+ },
+
+ condition: function Template$Parser$prototype$condition() {
+ if (this.token.type == 'IF' || this.token.type == 'UNLESS') {
+ var ret = {type: this.consumeToken().type };
+ ret.condition = this.assertRule(this.expr);
+ this.assertToken(';');
+ ret.body = [];
+ while (['END', 'ELSE', 'ELSIF'].indexOf(this.token.type) == -1) {
+ if (this.token.type == 'NUL') // EOF
+ break;
+ ret.body.push(this.chunk());
+ }
+
+ this.conditionElse(ret);
+
+ // TODO make this error say where the block started
+ this.assertToken('END');
+
+ return ret;
+ }
+ return undefined;
+ },
+
+ conditionElse: function Template$Parser$prototype$conditionElse(cond) {
+ var elseifs = [];
+ while (this.token.type == 'ELSIF') {
+ this.consumeToken();
+ var elseif = { condition: this.assertRule(this.expr) };
+ this.assertToken(';');
+ elseif.body = [];
+ while (['END','ELSE', 'ELSIF'].indexOf(this.token.type) == -1) {
+ if (this.token.type == 'NUL') // EOF
+ break;
+ elseif.body.push(this.chunk());
+ }
+
+ elseifs.push(elseif);
+ }
+
+ if (elseifs.length) {
+ cond.elseifs = elseifs;
+ }
+
+ if (this.token.type == 'ELSE') {
+ this.consumeToken();
+ this.assertToken(';');
+ cond['else'] = [];
+ while (['END','ELSE', 'ELSIF'].indexOf(this.token.type) == -1) {
+ if (this.token.type == 'NUL') // EOF
+ break;
+ cond['else'].push(this.chunk());
+ }
+ }
+
+ return cond;
+ },
+
+ setlist: function Template$Parser$prototype$setlist() {
+ var ident;
+
+ if (this.token.type == 'LITERAL')
+ ident = this.consumeToken();
+ else
+ ident = this.ident();
+
+ if (ident === undefined)
+ return ident;
+
+ this.assertToken('ASSIGN');
+ return this.setlist_tail(ident);
+ },
+
+ block: function Template$Parser$prototype$block() {
+ if (this.token.type != 'BLOCK')
+ return undefined;
+
+ this.consumeToken();
+
+ var blockname;
+ if (this.token.type == 'LITERAL')
+ blockname = this.consumeToken();
+ else
+ blockname = this.assertRule(this.filename);
+
+ var block = {
+ type: 'BLOCK',
+ name: blockname,
+ args: this.metadata(),
+ chunks: []
+ };
+
+ this.assertToken(';');
+ while (this.token.type != 'END') {
+ block.chunks.push(this.assertRule(this.chunk));
+ }
+ this.assertToken('END');
+
+ return block;
+ },
+
+ filename: function Template$Parser$prototype$filename() {
+ var fn = this.filepart();
+ if (fn === undefined)
+ return fn;
+
+ while (this.token.type == 'DOT') {
+ this.consumeToken();
+ var c = this.filepart();
+ fn.literal += '.' + c.literal;
+ }
+ return fn;
+ },
+
+ filepart: function Template$Parser$prototype$filepart() {
+ if (this.token.type == 'FILENAME' ||
+ this.token.type == 'IDENT' ||
+ this.token.type == 'NUMBER')
+ {
+ return this.consumeToken();
+ }
+ return undefined;
+ },
+
+ metadata: function Template$Parser$prototype$metadata() {
+ var meta = [];
+ while (this.token.type == 'IDENT') {
+ var i = this.consumeToken();
+ this.assertToken('ASSIGN');
+
+ var rhs;
+ if (this.token.type == 'LITERAL' ||
+ this.token.type == 'NUMBER')
+ rhs = this.consumeToken();
+ else if (this.token.type == '"') {
+ this.consumeToken();
+ rhs = this.assertToken('TEXT');
+ this.assertToken('"');
+ } else {
+ this.assertToken('LITERAL'); // will fail
+ }
+
+ meta.push({ type: 'META', lhs: i, rhs: rhs });
+
+ if (this.token.type == 'COMMA')
+ this.consumeToken();
+ }
+
+ if (meta.length)
+ return meta;
+ return undefined;
+ },
+
+ lnameargs: function Template$Parser$prototype$lnameargs() {
+ // Savepoint. This is far easier to do via backtracking
+ var watermark = this._tokenWatermark;
+
+ var lvalue;
+ if (this.token.type == 'LITERAL') {
+ lvalue = this.consumeToken();
+ } else if (this.token.type == '"') {
+ this.consumeToken();
+ lvalue = this.assertRule(this.quoted);
+ this.assertToken('"');
+ } else {
+ lvalue = this.item();
+ }
+
+ if (lvalue && this.token.type == 'ASSIGN') {
+ this.consumeToken();
+ return {
+ lvalue: lvalue,
+ nameargs: this.assertRule(this.nameargs)
+ };
+ } else {
+ // Just a normal nameargs production.
+ this._tokenWatermark = watermark;
+ this.token = this._getToken();
+ return this.nameargs();
+ }
+
+ },
+
+ nameargs : function Template$Parser$protoyep$nameargs() {
+ if (this.token.type == '$') {
+ // TODO: See if this works as a node instead
+ this.consumeToken();
+ return { type: 'nameargs',
+ names: [ { type: 'interpret', term: this.assertRule(this.ident) } ],
+ args: this.args() };
+ }
+
+ var names = this.assertRule(this.names);
+ var args;
+
+ if (this.token.type == '(') {
+ this.consumeToken();
+ args = this.assertRule(this.args);
+ this.assertToken(')');
+ }
+ else
+ args = this.assertRule(this.args);
+
+ return { type: 'nameargs', names: names, args: args };
+ },
+
+ names: function Template$Parser$prototype$names() {
+ var names = [];
+
+ while (true) {
+ var n = this.name();
+
+ if (n === undefined)
+ break;
+
+ names.push(n);
+ if (this.token.type != '+')
+ break;
+ this.consumeToken();
+ }
+
+ if (names.length)
+ return names;
+ return undefined;
+ },
+
+ name: function Template$Parser$prototype$name() {
+ if (this.token.type == '"') {
+ this.consumeToken();
+ var ret = this.assertRule(this.quoted);
+ this.assertToken('"');
+ return ret;
+ }
+ else if (this.token.type == 'LITERAL')
+ return this.consumeToken();
+ else
+ return this.filename();
+ },
+
+ wrapper_like: function Template$Parser$wrapper_like() {
+ var valid = ['WRAPPER'
+ ].indexOf(this.token.type) != -1;
+ if (!valid)
+ return undefined;
+
+ var type = this.consumeToken().type;
+ var block = this.assertRule(this.nameargs);
+ block.type = type;
+ block.chunks = [];
+
+ this.assertToken(';');
+ while (this.token.type != 'END') {
+ block.chunks.push(this.assertRule(this.chunk));
+ }
+ this.assertToken('END');
+
+ return block;
+ },
+
+ filter: function Template$Parser$filter() {
+ if (this.token.type != 'FILTER')
+ return undefined;
+
+ var ret = this.consumeToken();
+
+ ret.filter = this.assertRule(this.lnameargs);
+ ret.chunks = [];
+
+ this.assertToken(';');
+ while (this.token.type != 'END') {
+ if (this.token.type == 'NUL')
+ break;
+ ret.chunks.push(this.assertRule(this.chunk));
+ }
+ this.assertToken('END');
+
+ return ret;
+ },
+
+ switchBlock: function Template$Parser$switchBlock() {
+ if (this.token.type != 'SWITCH')
+ return undefined;
+
+ var ret = this.consumeToken();
+
+ var expr = this.assertRule(this.expr);
+ this.assertToken(';');
+
+ ret.expr = expr;
+ ret.cases = [];
+
+ // The original grammar has a block production here before the cases. not
+ // sure why
+
+ while (this.token.type == 'CASE') {
+ var c = this.consumeToken();
+ if (this.token.type == ';') {
+ this.consumeToken();
+ c['default'] = true;
+ }
+ else if (this.token.type == 'DEFAULT') {
+ c['default'] = true;
+ this.consumeToken();
+ this.assertToken(';');
+ }
+ else {
+ c['case'] = this.assertRule(this.term);
+ this.assertToken(';');
+ }
+
+ c.chunks = [];
+ while (['CASE', 'END', 'NUL'].indexOf(this.token.type) == -1) {
+ c.chunks.push(this.chunk());
+ }
+ ret.cases.push(c);
+ }
+
+ this.assertToken('END');
+ return ret;
+ },
+
+ tryCatch: function Template$Parser$tryCatch() {
+ if (this.token.type != 'TRY')
+ return undefined;
+
+ this.consumeToken();
+
+ var block = {
+ type: 'TRY',
+ tryBlock: [],
+ catches: [],
+ 'final': []
+ };
+
+ this.assertToken(';');
+ while (['CATCH', 'FINAL'].indexOf(this.token.type) == -1) {
+ if (this.token.type == 'NUL')
+ this.assertToken('END');
+
+ block.tryBlock.push(this.assertRule(this.chunk));
+ }
+
+ while (this.token.type == 'CATCH') {
+ var c = this.consumeToken();
+ switch (this.token.type) {
+ case ';':
+ c.signature = false;
+ break;
+ case 'DEFAULT':
+ c.signature = this.consumeToken();
+ break;
+ default:
+ c.signature = this.assertRule(this.filename);
+ break;
+ }
+ this.assertToken(';');
+ c.block = [];
+ while (['CATCH', 'FINAL', 'END'].indexOf(this.token.type) == -1) {
+ if (this.token.type == 'NUL')
+ this.assertToken('END');
+
+ c.block.push(this.assertRule(this.chunk));
+ }
+ block.catches.push(c);
+ }
+
+ if (this.token.type == 'FINAL') {
+ this.consumeToken();
+ this.assertToken(';');
+ while (this.token.type != 'END') {
+ block['final'].push(this.assertRule(this.chunk));
+ }
+ }
+
+ this.assertToken('END');
+ return block;
+ },
+
+ _tracedFunctions: "consumeToken node ident sterm term expr expr_tail item \
+ lterm params param chunks condition conditionElse statement tokenise \
+ interpolate_text assign setlist directive loop loopvar binary_expr args \
+ block metadata filename nameargs names wrapper_like complex_statement \
+ tryCatch lnameargs filter atomdir"
+
+};
+/*
+ * END OF Template.Parser
+ */
+
+/*
+ * Template.Interpreter - walks the AST generated by Template.Parser and
+ * returns function that when executed will produce the template output
+ */
+Template.Interpreter = function Template$Interpreter(chunks, config) {
+ this.blocks = {};
+ this.config = config || {}
+ this.output = this.prelude;
+ this.inFor = 0;
+ this.inWhile = 0;
+
+ var body = this.walk(chunks);
+
+ for (var i in this.blocks) {
+ this.output += ' ctx.blocks[' + i + '] = ' + this.blocks[i] + ';\n';
+ }
+
+ this.output += body
+ + this.postlude;
+}
+
+Template.Interpreter.prototype = {
+ prelude: "function(ctx) {\n\
+ var out_arr = []; ctx.StopIteration = (typeof StopIteration === 'undefined') ? 'StopIteration' : StopIteration; \
+ function __perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? val : '' };\
+ function __not_perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? '' : 1 };\
+ try {\n",
+
+ postlude: "\n\
+ }\n\
+ catch (e) { if (!(e instanceof Template.Exception && e.type == 'stop')) throw e; } \n\
+ return out_arr.join('');\n\
+}",
+
+ walk: function Template$Interpreter$prototype$walk(chunks) {
+ var output = '';
+ var prev = { type: 'NUL' };
+ for (var i in chunks) {
+ var chunk = chunks[i]
+ if (chunk === undefined || i == "unique") {
+ continue;
+ }
+
+ // check for things like GET, SET or CALL
+ // Not everything writes directly.
+ var write = ['IF', 'FOR', 'CALL', 'setlist', 'DEFAULT', 'UNLESS', 'BLOCK',
+ 'NEXT', 'LAST', 'WHILE', 'SWITCH', 'TRY', 'THROW', 'CATCH',
+ 'CLEAR', 'FILTER'
+ ].indexOf(chunk.type) == -1;
+ var add_semicolon = write || ['THROW', 'FILTER'].indexOf(chunk.type) != -1;
+
+ if (chunk.toSource)
+ output += '// ' + chunk.toSource() + '\n';
+ if (write) {
+ output += 'out_arr.push(';
+ }
+ output += this.$get_term(chunk);
+
+ if (write)
+ output += ')';
+ if (add_semicolon)
+ output += ';\n';
+ prev = chunk;
+
+ }
+ return output;
+ },
+
+ $get_term: function Template$Interpreter$prototype$$get_term(term) {
+ if (this["build" + term.type])
+ return this["build" + term.type](term);
+
+ switch (term.type) {
+
+ case 'TEXT':
+ return Template.escapeString(term.literal);
+ case 'ident':
+ return 'ctx.dot_op(' + this.handle_ident_segments(term.segments) + ')';
+
+ case 'IDENT':
+ return "ctx.dot_op(ctx.stash, [" + Template.escapeString(term.literal) + "])";
+ case 'NUMBER':
+ return parseFloat(term.literal);
+ case 'LITERAL':
+ return term.literal;
+ case 'IF':
+ case 'UNLESS':
+ var condition = this.$get_term(term.condition);
+ if (term.type == 'UNLESS')
+ condition = '__not_perl_truth(' + condition + ')';
+ else if (['<','<=','>','>=','==','!='].indexOf(term.condition.type) == -1)
+ condition = '__perl_truth(' + condition + ')';
+
+ var body = this.walk(term.body);
+ var ret = "if (" + condition+ ") {\n" + body.replace(/^/gm, ' ') + "\n}";
+
+ if ('elseifs' in term) {
+ for (var i in term.elseifs) {
+ var elseif = term.elseifs[i];
+ ret += ' else if (__perl_truth(' + this.$get_term(elseif.condition)
+ + ')) {\n'
+ + this.walk(elseif.body).replace(/^/gm, ' ') + '\n}';
+ }
+ }
+ if (term['else']) {
+ ret += ' else {\n' + this.walk(term['else']).replace(/^/gm, ' ') + '\n}';
+ }
+ return ret;
+ case '+':
+ case '/':
+ case '*':
+ case '%':
+ case '-':
+ case 'DIV':
+ return this.math_op(term);
+ case 'interpret':
+ var out = [];
+ out.push(this.$get_term(term.term));
+ if (term.literal) {
+ out.push(term.literal);
+ }
+ return 'ctx.dot_op(ctx.stash, [ ' + out.join(' + ') + '])';
+ case 'GET':
+ case 'CALL':
+ // GET is default action - return value of the expr
+ return this.$get_term(term.expr);
+
+ case 'QUOTED':
+
+ var out = [];
+ for (var i in term.segments) {
+ var seg = term.segments[i];
+ if (seg.type == ';')
+ continue;
+ out.push(this.$get_term(seg));
+ }
+ return out.join(' + ');
+ case 'function_call':
+ // an item followed by some args
+ var t = this.handle_ident_segments([term.func]);
+ var stash = t[0],
+ segs = t[1];
+
+ var args = this.handle_function_args(term.args);
+
+ return 'ctx.dot_op(' + stash + ', [' + segs + '], { args: ' + args + ' } )';
+
+ case 'DEFAULT':
+ var defaults = true;
+ term = term.expr;
+ // Drop thru
+ case 'setlist':
+
+ var ret = [];
+ for (var i in term.chunks) {
+ var assign = term.chunks[i];
+ var t = this.handle_ident_segments([assign.lhs]);
+ var stash = t[0],
+ segs = t[1];
+
+ var prefix = 'ctx.dot_op(' + stash + ', ' + segs + ', { '+ (defaults ? 'default:1, ':'') +'assign: ';
+ if (assign.rhs.type == 'interpret') {
+ ret.push(prefix + 'ctx.dot_op(ctx.stash, [' + this.$get_term(assign.rhs.term) + '] ) } )');
+ } else {
+ ret.push(prefix + this.$get_term(assign.rhs) + ' } )');
+ }
+ }
+ return ret.join(', ') + ';';
+
+ case 'FOR':
+ var loopvar = term.loopvar.ident
+ ? this.handle_ident_segments([term.loopvar.ident])
+ : undefined;
+
+ var loopcond = this.$get_term(term.loopvar.term);
+
+ var ret = 'ctx.forEach(' + loopcond +
+ ', function(value) {\n ';
+
+ if (loopvar) {
+ ret += '\n ctx.dot_op(' + loopvar + ', { assign: value } );\n';
+ }
+
+ this.inFor++;
+ var chunks = this.walk(term.chunks);
+ this.inFor--;
+ ret += chunks.replace(/^/mg, ' ');
+
+ ret += '\n}';
+ if (loopvar === undefined)
+ ret += ', true';
+ ret += ');';
+
+ return ret;
+
+ case 'WHILE':
+ var cond = this.$get_term(term.loopvar);
+ if (!cond.match(/^__(?:not_)?perl_truth\(/))
+ cond = '__perl_truth(' + cond + ')'
+ var ret = 'while(' + cond +
+ ') {\n';
+
+ this.inWhile++;
+ var chunks = this.walk(term.chunks);
+ this.inWhile--;
+ ret += chunks.replace(/^/mg, ' ');
+
+ ret += '\n}';
+ return ret;
+
+
+ case 'array':
+ // TODO: Might not work with Safari
+ return '[' + term.items.map(this.$get_term, this).join(', ') + ']';
+
+ case 'hash':
+ var pairs = [ ];
+
+ for (var i in term.data) {
+ var pair = term.data[i];
+ if (pair.to.type != 'IDENT') {
+ throw new Error('Cant handle ' + pair.to.type + ' in hash key!');
+ }
+ pairs.push( pair.to.literal + ': ' + this.$get_term(pair.value) ) ;
+ }
+
+ return '{ ' + pairs.join(', ') + ' }';
+
+ case 'OR':
+ return '( __perl_truth(' + this.$get_term(term.lhs) + ') || __perl_truth(' + this.$get_term(term.rhs) + ') )';
+ case 'AND':
+ return '__perl_truth(' + this.$get_term(term.lhs) + ') && __perl_truth(' + this.$get_term(term.rhs) + ')';
+ case 'NOT':
+ // Use a ternary operator to emulate perl's true/false sematics
+ return '__not_perl_truth(' + this.$get_term(term.child) + ')';
+
+ case 'CAT':
+ return '('+this.$get_term(term.lhs) + ').toString()+' +
+ '('+this.$get_term(term.rhs) + ').toString()';
+
+ case '==':
+ case '!=':
+ case '>=':
+ case '<=':
+ case '<':
+ case '>':
+ return '__perl_truth((' + this.$get_term(term.lhs) + ') '
+ + term.type
+ + ' (' + this.$get_term(term.rhs) + '))';
+
+ case '?':
+ return '( __perl_truth(' + this.$get_term(term.lhs) + ') ?' +
+ this.$get_term(term.rhs) + ')';
+ case ':':
+ return '(' + this.$get_term(term.lhs) + '):(' +
+ this.$get_term(term.rhs) + ')';
+
+ case 'BLOCK':
+ var block_name;
+ if (term.name.type == 'IDENT' || term.name.type == 'FILENAME')
+ block_name = Template.escapeString(term.name.literal);
+ else if (term.name.type == 'LITERAL')
+ block_name = term.name.literal;
+ else
+ throw new Error('Handle ' + Template.escapeString(term.name));
+
+ // Blocks can be defined after the are referenced
+ this.blocks[block_name] = (new Template.Interpreter(term.chunks)).output;
+ return '';
+
+ case 'PROCESS':
+ return 'ctx.process_block(' + this.handle_nameargs(term) + ')';
+ case 'INCLUDE':
+ return 'ctx.include_block(' + this.handle_nameargs(term) + ')';
+
+ case 'WRAPPER':
+ // add content to named args
+ term.args[0].push({type:'IDENT', literal:"content"});
+ term.args[0].push({type:'LITERAL', literal:'ctx.process_block(' +
+ (new Template.Interpreter(term.chunks)).output + ')' }
+ );
+
+ if (term.names.length == 1)
+ // TODO: this should maybe clone and reset content?
+ return 'ctx.include_block(' + this.handle_nameargs(term) + ')';
+
+ // [% WRAPPER a + b + c %]foo[% END %]
+ var ret = '', prev = '';
+ for (var i = term.names.length-1; i >=0; i--) {
+ var name = term.names[i];
+ var ret = 'ctx.include_block(';
+ if (i == term.names.length -1)
+ ret += this.handle_nameargs({names: [name], args: term.args });
+ else {
+ ret += this.handle_nameargs({names: [name], args: [[]] });
+ ret += ', [["content", ' + prev + ']]'
+ }
+ ret += ')';
+ prev = ret;
+ }
+
+ return ret;
+
+ case 'range':
+ if (typeof Range != 'undefined') {
+ return 'Range(' + this.$get_term(term.from) + ', '
+ + this.$get_term(term.to) + '+1)';
+ } else {
+ var range = [];
+ for (var i = parseInt(term.from.literal);
+ i <= parseInt(term.to.literal);
+ i++)
+ {
+ range.push(i);
+ }
+ return Template.escapeString(range);
+ }
+ case 'NEXT':
+ // This will need fixing for nested loops
+ if (this.inWhile)
+ return 'continue;';
+ else if (this.inFor)
+ return 'return;';
+ else
+ throw new Template.Exception("SYNTAX_ERROR",
+ "NEXT used outside of loop");
+
+ case 'LAST':
+ if (this.inWhile)
+ return 'break;';
+ else if (this.inFor)
+ return 'return ctx.StopIteration;';
+ else
+ throw new Template.Exception("SYNTAX_ERROR",
+ term.literal + " used outside of loop");
+
+ case 'SWITCH':
+ var ret = 'switch ('+this.$get_term(term.expr)+') {\n';
+
+ for (var i in term.cases) {
+ var c = term.cases[i];
+
+ if (c['default']) {
+ ret += ' default:\n';
+ } else {
+ ret += ' case ' + this.$get_term(c['case']) + ':\n';
+ }
+ var body = this.walk(c.chunks);
+ ret += body.replace(/^/gm, ' ');
+
+ ret += '\n break;\n';
+ }
+ ret += '}\n';
+ return ret;
+
+ case 'THROW':
+ if (term.names.length && term.args.length > 1) {
+ if (term.names.length > 1 ) throw new Error("Dont know how to handle this");
+
+ // THROW barf 'Feeling sick'
+ var ret = "throw new Template.Exception(";
+
+ ret += this.handle_nameargs(term);
+
+ return ret + ")";
+ }
+ return "throw " + this.handle_nameargs(term);
+ default:
+ throw new Error('Unhandled ' + term.toSource());
+ }
+ },
+
+ buildTRY: function buildTRY(term) {
+ var ret = "(function(out){ var out_arr = []; try {\n",
+ has_final = term['final'].length,
+ body = this.walk(term.tryBlock);
+
+ ret += body.replace(/^/gm, ' ');
+
+ ret += "}\n";
+
+ if (term.catches.length) {
+ ret += 'catch ($e) { $e = ctx.$catch($e); \n';
+
+ var if_count = 0;
+ var catchall = false;
+
+ for (var i in term.catches) {
+ var c = term.catches[i];
+ if(!c.signature || c.signature.type == "DEFAULT"){
+ // We've got something that does a catchall
+ catchall = true;
+ if (if_count) ret += " else {\n";
+ var body = this.walk(c.block);
+ ret += body.replace(/^/gm, ' ');
+ if (if_count) ret += "\n }\n";
+ // We've got a default catch-all, no need to carry on
+ break;
+ }
+ else if (c.signature) {
+ ret += " ";
+ if (if_count) { ret += "else " }
+ ret += "if (ctx.$error_matches($e, " + Template.escapeString(c.signature.literal) + ") ) {\n";
+ ret += this.walk(c.block).replace(/^/gm, ' ');
+ ret += "\n }\n";
+ if_count++;
+ }
+ }
+
+ // if nothing caught all, rethrow the error
+ if (!catchall) {
+ if (if_count) ret += "else ";
+ ret += "throw $e\n";
+ }
+
+ ret += '\n}\n';
+ }
+ ret += 'finally {\n';
+ if (term['final'].length) {
+ ret += this.walk(term['final']).replace(/^/gm, ' ');
+ }
+ ret += "out.push.apply(out, out_arr); }})(out_arr)"
+
+
+ return ret;
+ },
+
+ buildCLEAR: function buildCLEAR() {
+ return "out_arr=[];";
+ },
+
+ buildFILTER: function buildFILTER(term) {
+ var ret = "(function(out){ var out_arr = [];";
+
+ ret += "var $filter = ctx.filter(" + this.handle_nameargs(term.filter) + ");\n",
+
+ ret += this.walk(term.chunks).replace(/^/gm, ' ');
+ ret += "\n out.push($filter(out_arr.join('')));";
+
+ return ret + "\n})(out_arr)";
+ },
+
+ handle_nameargs: function Template$Interpreter$handle_nameargs(term) {
+ var str;
+ if (term.names.length == 1) {
+ if (term.names[0].type == 'IDENT' || term.names[0].type == 'FILENAME')
+ str = Template.escapeString(term.names[0].literal);
+ else if (term.names[0].type == 'LITERAL')
+ str = term.names[0].literal;
+ else if (term.names[0].type == 'interpret')
+ str = this.$get_term(term.names[0].term);
+ else if (term.names[0].type == 'QUOTED') {
+ str = this.$get_term(term.names[0]);
+ }
+ }
+ if (str === undefined)
+ throw new Error("handle " + Template.escapeString(term.names));
+
+ if (term.args.length > 1 || term.args[0].length) {
+ str += ", " + this.make_namearg_dict(term.args);
+ }
+
+ return str;
+ },
+
+ make_namearg_dict: function Template$Interpreter$make_namearg_dict(args) {
+ var named = args.shift();
+
+ var ret = "";
+ if (named.length) {
+ if (named.length % 2)
+ throw new Error("Named args off odd length");
+
+ var a = [];
+ while (named.length) {
+ var arg = [named.shift(), named.shift()];
+ var name, value;
+ if (arg[0].type == 'IDENT')
+ name = Template.escapeString(arg[0].literal);
+ else
+ throw new Error("handle");
+
+ if (arg[1].type == 'LITERAL' || arg[1].type == 'NUMBER')
+ value = arg[1].literal;
+ else if (arg[1].type == 'IDENT' || arg[1].type == 'function_call')
+ value = this.$get_term(arg[1]);
+ else
+ throw new Error("handle " + arg[1].toSource());
+
+ a.push( '[' + name + ', ' + value + ']' );
+ }
+ ret = '[' + a.join(', ') + ']';
+ }
+
+ for (var i in args) {
+ if (ret) ret += ", ";
+ ret += this.$get_term(args[i]);
+ }
+
+ return ret;
+ },
+
+ handle_function_args: function Template$Interpreter$prototype$handle_function_args(args) {
+ var named = args.shift();
+ var argsOut = [];
+ var out = ''
+ for (var i in args) {
+ argsOut.push(this.$get_term(args[i]));
+ }
+
+ if (argsOut.length)
+ out += argsOut.join(', ');
+
+ return '[' + out + ']';
+ },
+
+ handle_ident_segments: function Template$Interpreter$prototype$handle_ident_segments(segs) {
+ var stash = 'ctx.stash';
+ var var_name = [];
+ for (var i in segs) {
+ var seg = segs[i];
+ if (seg.type == 'IDENT') {
+ var_name.push(Template.escapeString(seg.literal));
+ }
+ else if (seg.type == 'interpret') {
+ if (seg.term.type == 'LITERAL') {
+ var_name.push(seg.term.literal);
+ } else {
+ var_name.push(this.$get_term(seg.term));
+ }
+ continue;
+ }
+ else if (seg.type == 'function_call') {
+ if (seg.args[0] instanceof Array == false)
+ throw new Error('args[0] is not an array!');
+ // This is more difficult - since we could have something like
+ // [% foo.bar(1,2,3).baz.fish
+ // in which case we want output something like:
+ // ctx.dot_op(ctx.dot_op(stash, ['foo','bar'],[1,2,3]), ['baz,'fish'])
+ var funcName;
+ if (seg.func.type == 'IDENT')
+ var_name.push(Template.escapeString(seg.func.literal));
+ else if (seg.func.type == 'interpret') {
+ var_name.push(this.$get_term(seg.func));
+ }
+ else
+ throw new Error('Unknown function type name ' + seg.func.type + '\n' + seg.toSource());
+
+ stash = 'ctx.dot_op(' + stash + ', [' + var_name + '], { args: '+this.handle_function_args(seg.args)+' } )';
+ var_name = [];
+ }
+ else if (seg.type == 'LITERAL' || seg.type == 'NUMBER') {
+ var_name.push(seg.literal);
+ }
+ else if (seg.type == 'ident') {
+ // TODO: this is prolly wrong
+ return this.handle_ident_segments(seg.segments);
+ }
+ else
+ throw new Error('Unknown segment type in ident clause: ' + seg.type + '\n' + seg.toSource());
+ }
+ if (var_name.length == 0)
+ return stash;
+ return [stash, '[' + var_name + ']'];
+ },
+
+
+ math_op: function(expr) {
+ var ret = '( ';
+ if (expr.lhs.type != 'NUMBER')
+ ret += 'Number( ' + this.$get_term(expr.lhs) + ')';
+ else
+ ret += this.$get_term(expr.lhs);
+
+ var type = expr.type == 'DIV' ? '/' : expr.type;
+ ret += ' ' + type + ' ';
+
+ if (expr.rhs.type != 'NUMBER')
+ ret += 'parseInt( ' + this.$get_term(expr.rhs) + ' )';
+ else
+ ret += this.$get_term(expr.rhs);
+ ret += ')';
+
+ if (expr.type == 'DIV')
+ return 'parseInt'+ret;
+ else
+ return ret;
+ }
+
+};
+/*
+ * END OF Template.Interpreter
+ */
+
+
+var log = [];
+
+if (exports) {
+ exports.render = function(template, stash) {
+ var tt = new Template();
+ return tt.process(template, stash);
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/utils.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,325 @@
+
+define(
+ [],
+ function () {
+ var proxyCache = {};
+ window.addEventListener("message", function (ev) {
+ var id = ev.data.substring(0, ev.data.indexOf(","));
+ var data = ev.data.substring(ev.data.indexOf(",") + 1);
+ if (data) proxyCache[id](data);
+ else proxyCache[id](null);
+ $("#rs-ifr-" + id).remove();
+ }, false);
+
+ var utils = {
+ // --- SET UP
+ run: function (conf, doc, cb) {
+ // set up some configuration
+ this.conf = conf;
+ this.doc = doc;
+
+ // shortcuts
+ var self = this;
+ shortcut.add("Ctrl+Shift+Alt+S", function () { self.showSaveOptions(); });
+ shortcut.add("Esc", function () { self.hideSaveOptions(); });
+
+ // jquery extras
+ // XXX untested
+ $.fn.renameElement = function (name) {
+ return this.each(function () {
+ var $newEl = $(this.ownerDocument.createElement(name));
+ // $newEl.attr($(this).attr());
+ for (var i = 0, n = this.attributes.length; i < n; i++) {
+ var at = this.attributes[i];
+ $newEl[0].setAttributeNS(at.namespaceURI, at.name, at.value);
+ }
+ $(this).contents().clone().appendTo($newEl);
+ $(this).replaceWith($newEl);
+ });
+ };
+
+ // XXX untested
+ $.fn.makeID = function (pfx, txt) {
+ // doesn't work like a real jq plugin
+ var $el = $(this);
+ if ($el.attr("id")) return $el.attr("id");
+ var id = "";
+ if (!txt) {
+ if ($el.attr("title")) txt = $el.attr("title");
+ else txt = $el.text();
+ }
+
+ txt = txt.replace(/^\s+/, "").replace(/\s+$/, "");
+ id += txt;
+ id = id.toLowerCase();
+ id = id.split(/[^-.0-9a-z_]/).join("-").replace(/^-+/, "").replace(/-+$/, "");
+ if (id.length > 0 && /^[^a-z]/.test(id)) id = "x" + id;
+ if (id.length == 0) id = "generatedID";
+ if (pfx) id = pfx + "-" + id;
+ var inc = 1;
+ var doc = $el[0].ownerDocument;
+ if (doc.getElementById(id)) {
+ while (doc.getElementById(id + "-" + inc)) inc++;
+ id = id + "-" + inc;
+ }
+ $el.attr("id", id);
+ return id;
+ };
+
+ // XXX untested
+ $.fn.dfnTitle = function () {
+ // doesn't work like a real jq plugin
+ var $dfn = $(this);
+ var title;
+ if ($dfn.attr("title")) title = $dfn.attr("title");
+ else if ($dfn.contents().length == 1 && $dfn.children("abbr, acronym").length == 1 &&
+ $dfn.find(":first-child").attr("title")) title = $dfn.find(":first-child").attr("title");
+ else title = $dfn.text();
+ title = utils.norm(title);
+ return title;
+ };
+
+ // XXX untested
+ // Either append v in a space-separated-list style to attribute a, or create a new attribute
+ $.fn.attrAppend = function (a, v) {
+ var val = $(this).attr(a);
+ val = val ? (val + ' ' + v) : v;
+ $(this).attr(a, val);
+ return this
+ };
+
+ cb()
+ },
+
+ // --- DATE MANIPULATION --------------------------------------------------------------------------
+ humanMonths: ["January", "February", "March", "April", "May", "June", "July",
+ "August", "September", "October", "November", "December"],
+
+ parseSimpleDate: function (str) {
+ return new Date(str.substr(0, 4), (str.substr(5, 2) - 1), str.substr(8, 2));
+ },
+
+ parseLastModified: function (str) {
+ if (!str) return new Date();
+ return new Date(Date.parse(str));
+ // return new Date(str.substr(6, 4), (str.substr(0, 2) - 1), str.substr(3, 2));
+ },
+
+ humanDate: function (date) {
+ return this.lead0(date.getDate()) + " " + this.humanMonths[date.getMonth()] + " " + date.getFullYear();
+ },
+
+ concatDate: function (date, sep) {
+ if (!sep) sep = "";
+ return "" + date.getFullYear() + sep + this.lead0(date.getMonth() + 1) + sep + this.lead0(date.getDate());
+ },
+
+ lead0: function (str) {
+ str = "" + str;
+ return (str.length == 1) ? "0" + str : str;
+ },
+
+ // --- STYLE HELPERS ------------------------------------------------------------------------------
+ // XXX untested
+ // vendorise: function (obj, k, v) {
+ // obj.k = v;
+ // $.each(["moz", "o", "webkit"], function (i, ven) {
+ // obj["-" + ven + "-" + k] = v;
+ // });
+ // },
+
+ linkCSS: function (doc, styles) {
+ if (styles.constructor != Array) styles = [styles];
+ $.each(styles, function (i, css) {
+ $('head', doc).append($("<link/>").attr({
+ rel: 'stylesheet', href: css, type: 'text/css', media: "all", charset: 'utf-8'
+ }));
+ });
+ },
+
+
+ // --- XPATH -------------------------------------------------------------------------------------
+ // XXX untested
+ // I'm not sure how portable this is, but it might be workable
+ findNodes: function (xpath, ctx, doc) {
+ if (!ctx) ctx = doc;
+ var ns = {};
+ var snap = doc.evaluate(xpath,
+ ctx,
+ function (pfx) { return ns[pfx] || null; },
+ XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
+ null);
+ var res = [];
+ for (var i = 0; i < snap.snapshotLength; i++) res.push(snap.snapshotItem(i));
+ return res;
+ },
+
+
+ // --- PROXY LOADING ------------------------------------------------------------------------------
+ // XXX untested
+ proxyCount: 0,
+ proxyLoad: function (src, cb) {
+ if (document.location.href.indexOf("file:") == 0) {
+ var proxyID = "prox-" + this.proxyCount;
+ this.proxyCount++;
+ proxyCache[proxyID] = cb;
+ var $ifr = $("<iframe/>").attr({
+ src: src.replace(/[^\/]+$/, "local-proxy.html"),
+ id: "rs-ifr-" + proxyID
+ })
+ .css("display", "none");
+ $ifr.load(function () {
+ try {
+ $ifr[0].contentWindow.postMessage(proxyID + "," + src, "*");
+ }
+ catch (e) {
+ error("Could not load through proxy: " + e);
+ }
+ });
+ $ifr.appendTo($("body", document));
+ }
+ else {
+ $.get(src, cb);
+ }
+ },
+ // XXX untested
+ proxyLoadMany: function (srcs, cb) {
+ if (srcs.length == 0) cb([]);
+ var loaded = 0;
+ var things = [];
+ var self = this;
+ $.each(srcs, function (i, it) {
+ self.proxyLoad(it, function (data) {
+ loaded++;
+ things.push(data);
+ if (loaded == srcs.length) cb(things);
+ });
+ });
+ },
+
+ // --- RESPEC UI ------------------------------------------------------------------------------
+ // XXX untested
+ $saveMenu: null,
+ showSaveOptions: function () {
+ var self = this;
+ this.$saveMenu = $("<div/>")
+ .css({
+ position: "fixed", width: "400px", top: "10px", padding: "1em",
+ border: "5px solid #90b8de", background: "#fff"
+ })
+ .appendTo($("body"))
+ .append("<h4>ReSpec Actions Console</h4>")
+ .end();
+
+ for (var i = 0; i < this.saveActions.length; i++) {
+ this.$saveMenu.append(this.saveActions[i]);
+ }
+ },
+
+ // XXX untested
+ // Register an action within save menu
+ saveActions: [],
+ registerSaveAction: function(label, cb) {
+ var self = this;
+ this.saveActions.push($("<button>" + label + "</button>")
+ .click(function () {self.hideSaveOptions; cb()}));
+ },
+
+ // XXX untested
+ hideSaveOptions: function () {
+ if (!this.$saveMenu) return;
+ this.$saveMenu.remove();
+ },
+
+ // --- HTML SERIALISATION ------------------------------------------------------------------------------
+ // XXX untested
+ toHTMLSource: function () {
+ var doc = window.open().document;
+ doc.write("<pre>" + this.esc(this.stringifyHTML()) + "</pre>");
+ doc.close();
+ // for some reason no variant on this seems to work, too tired to investigate
+ // $("body", doc).append("<pre/>")
+ // .find("pre")
+ // .text(this.stringifyHTML());
+ // doc.close();
+ },
+
+ // XXX untested
+ stringifyHTML: function () {
+ var str = "<!DOCTYPE html";
+ var dt = document.doctype;
+ if (dt && dt.publicId) {
+ str += " PUBLIC '" + dt.publicId + "' '" + dt.systemId + "'";
+ }
+ else { // when HTML5 is allowed we can remove this
+ str += " PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'";
+ }
+ str += ">\n";
+ str += "<html";
+ var ats = document.documentElement.attributes;
+ for (var i = 0; i < ats.length; i++) {
+ var an = ats[i].name;
+ //if (an == "xmlns" || an == "xml:lang") continue;
+ str += " " + an + "=\"" + this.esc(ats[i].value) + "\"";
+ }
+ str += ">\n";
+ str += document.documentElement.innerHTML;
+ str += "</html>";
+ return str;
+ },
+
+ // --- BASIC ARRAY ------------------------------------------------------------------------------
+ // XXX untested
+ unique: function (arr) {
+ var ret = [];
+ var l = arr.length;
+ for (var i = 0; i < l; i++) {
+ for (var j = i+1; j < l; j++) {
+ // If arr[i] is found later in the array
+ if (arr[i] === arr[j]) j = ++i;
+ }
+ ret.push(arr[i]);
+ }
+ return ret;
+ },
+
+ // --- BASIC STRING ------------------------------------------------------------------------------
+ esc: function (s) {
+ return s.replace(/&/g,'&')
+ .replace(/>/g,'>')
+ .replace(/"/g,'"')
+ .replace(/</g,'<');
+ },
+
+ norm: function (str) {
+ str = str.replace(/^\s+/, "").replace(/\s+$/, "");
+ return str.split(/\s+/).join(" ");
+ },
+
+ // --- TRANSFORMATIONS ------------------------------------------------------------------------------
+ // Run list of transforms over content and return result.
+ runTransforms: function (content, flist) {
+ if (flist) {
+ var methods = flist.split(/\s+/) ;
+ for (var j = 0; j < methods.length; j++) {
+ var call = 'content = ' + methods[j] + '(this,content)' ;
+ try {
+ eval(call) ;
+ } catch (e) {
+ warning('call to ' + call + ' failed with ' + e) ;
+ }
+ }
+ }
+ return content;
+ },
+ ieDummy: 1
+ };
+
+ // Register default save option
+ utils.registerSaveAction("Save as HTML Source", function () {
+ utils.hideSaveOptions(); utils.toHTMLSource();
+ });
+
+ return utils;
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/core/webidl.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5288 @@
+// XXX untested
+define(
+ ["core/tt", "core/utils", "text!core/templates/webidl.html"],
+ function (tt, utils, template) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("processing WebIDL");
+
+ // --- RUN THE TEMPLATES
+ progress("loading TT for webIDL");
+ tt.loadFromHTML(template, doc);
+ var infNames = [];
+
+ $(".idl", doc).each(function (i, idl) {
+ var w = new WebIDLProcessor({
+ noIDLSorting: conf.noIDLSorting,
+ noIDLIn: conf.noIDLIn,
+ tt: tt,
+ infNames: infNames,
+ doc: doc
+ });
+
+ var inf = w.definition($(idl));
+ var $pre = $("<pre class='idl'/>");
+
+ $pre.append(w.writeAsWebIDL(inf));
+ $(idl).replaceWith($pre);
+
+ var sections = w.writeAsHTML(inf);
+ for (var i = sections.length - 1; i >= 0; i--) {
+ $pre.after(sections[i]);
+ }
+ });
+
+ doc.normalize();
+ $("a:not([href])", doc).each(function (i, ant) {
+ var $ant = $(ant);
+ if ($ant.hasClass("externalDFN")) return;
+ var name = $ant.text();
+ if ($.inArray(name, infNames) >= 0) {
+ $ant.attr("href", "#idl-def-" + name)
+ .addClass("idlType")
+ .html($("<code/>").text(name));
+ }
+ });
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
+
+function WebIDLProcessor (cfg) {
+ this.parent = { type: "module", name: "outermost", refId: "outermost", members: [] };
+ if (!cfg) cfg = {};
+ for (var k in cfg) this[k] = cfg[k];
+};
+
+WebIDLProcessor.prototype = {
+ definition: function ($idl) {
+ var str = $idl.attr("title");
+ var matched = /(typedef|implements)/.exec(str);
+ str += matched ? ";" : "{};";
+ progress("idl definition: " + str);
+ try {
+ var def = window.WebIDLParser.parse(str, "definition");
+ if (!def.members) def.members = [];
+ def.refId = this._id(def.name || def.target);
+ def.parentId = this.parent.refId;
+ if (def.refId == undefined) warn("definition has no refId");
+ if ($.inArray(def.refId, this.infNames) >= 0) warn('duplicate definition of WebIDL ID: ' + def.refId);
+ this.infNames.push(def.refId);
+ this.parent.members.push(def); // this should be done at the caller level
+ this.processMembers(def, $idl);
+
+ // Extract a description, unless it's a <dl>
+ if (!$idl.is("dl")) def.description = $idl.html();
+ return def;
+ } catch (e) {
+ warn("ERROR: " + e);
+ return {};
+ }
+ },
+
+ processMembers: function (obj, $el) {
+ var exParent = this.parent;
+ this.parent = obj;
+ var wip = this;
+ $el.children("dt").each(function (i, dt) {
+ var $dd = $(dt).next("dd"); // we take a simple road
+ var str = $(dt).text();
+ progress("idl member of " + obj.type + ": " + str);
+ var mem;
+ switch (obj.type) {
+ case "module":
+ wip.moduleMember($(dt), $dd);
+ return;
+ case "interface":
+ mem = wip.interfaceMember($(dt), $dd);
+ break;
+ case "exception":
+ mem = wip.exceptionMember($(dt), $dd);
+ break;
+ default:
+ error("Unexpected " + obj.type + ": " + str);
+ break;
+ }
+ if (!mem.refId) mem.refId = wip._id(mem.name);
+ if (!mem.refId) warn("member has no refId");
+ if ($.inArray(mem.refId, this.infNames) >= 0) warn('duplicate definition of WebIDL ID: ' + mem.refId);
+ mem.parentId = obj.refId;
+ wip.infNames.push(mem.refId);
+ if (!mem.description) mem.description = $dd.html();
+ wip.parent.members.push(mem);
+ });
+ this.parent = exParent;
+ },
+
+ moduleMember: function ($dt, $dd) {
+ var wip = this;
+ $dd.children("[title]").each(function (i, el){
+ wip.definition($(el));
+ });
+ this.parent.description = $dt.text();
+ },
+
+ exceptionMember: function ($dt, $dd) {
+ var str = $dt.text() + ";";
+ var mem = window.WebIDLParser.parse(str, "exMember");
+ if (!mem.members) mem.members = [];
+
+ return mem;
+ },
+
+ interfaceMember: function ($dt, $dd) {
+ var str = $dt.text() + ";";
+ var mem = window.WebIDLParser.parse(str, "ifMember");
+ if (!mem.members) mem.members = [];
+
+ var $extPrm = $dd.find("dl.parameters:first").remove();
+ var $excepts = $dd.find(".exception").remove();
+ var $sgrs = $dd.find(".getraises, .setraises").remove();
+
+ switch (mem.type) {
+ case "const":
+ break;
+ case "stringifier":
+ break;
+ case "attribute":
+ if (!mem.setraises) mem.setraises = [];
+ if (!mem.getraises) mem.getraises = [];
+ if (!mem.raises) mem.raises = [];
+ $sgrs.each(function (i, el) {
+ var $el = $(el);
+ var exc = {
+ name: $el.attr("title")
+ };
+
+ // Descriptions go into mem.raises array
+ if (el.localName.toLowerCase() == "dl") {
+ exc.type = "codelist";
+ exc.description = [];
+ $el.children("dt").each(function (i, dt) {
+ var $dd = $(dt).next("dd");
+ var c = { name: $(dt).text() };
+ c.description = $dd.html();
+ exc.description.push(c);
+ });
+ }
+ else if (el.localName.toLowerCase() == "div") {
+ exc.type = "simple";
+ exc.description = $el.html();
+ }
+ else {
+ error("Do not know what to do with exceptions being raised defined outside of a div or dl.");
+ }
+ $el.remove();
+ exc.onSet = $el.hasClass("setraises");
+ exc.onGet = $el.hasClass("getraises");
+ if (exc.onSet) mem.setraises.push(exc);
+ if (exc.onGet) mem.setraises.push(exc);
+ mem.raises.push(exc);
+ });
+ break;
+ case "operation":
+ // Exceptions
+ if (!mem.raises) mem.raises = [];
+ $excepts.each(function (i, el) {
+ var $el = $(el);
+ var exc = { name: $el.attr("title") };
+ if (el.localName.toLowerCase() == "dl") {
+ exc.type = "codelist";
+ exc.description = [];
+ $el.children("dt").each(function (i, dt) {
+ var $dd = $(dt).next("dd");
+ var c = { name: $(dt).text() };
+ c.description = $dd.html();
+ exc.description.push(c);
+ });
+ }
+ else if (el.localName.toLowerCase() == "div") {
+ exc.type = "simple";
+ exc.description = $el.html();
+ }
+ else {
+ error("Do not know what to do with exceptions being raised defined outside of a div or dl.");
+ }
+ $el.remove();
+ mem.raises.push(exc);
+ });
+
+ // Parameters
+ if (!mem.arguments) mem.arguments = [];
+ for (var i = 0; i < mem.arguments.length; i++) {
+ if (mem.arguments[i].description == null) mem.arguments[i].description = "";
+ }
+
+ $extPrm.children("dt").each(function (i, dt) {
+ var $dt = $(dt);
+ var $dd = $dt.next("dd"); // we take a simple road
+ var prm = $dt.text();
+ p = window.WebIDLParser.parse(prm, "Argument");
+ p.description = $dd.html();
+ mem.arguments.push(p);
+ });
+ $extPrm.remove();
+ break;
+ default:
+ // NOTHING MATCHED
+ error("Expected interface member, got: " + str);
+ break;
+ }
+ return mem;
+ },
+
+ writeAsHTML: function (obj) {
+ var results = []; // Array of elements
+ switch (obj.type) {
+ case "exception":
+ case "interface":
+ var types = ["const", "operation", "attribute", "field"];
+
+ // Display sections in a specific order, and potentially sort the contents
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i];
+ var things = obj.members.filter(function (it) { return it.type == type; });
+ if (things.length == 0) continue;
+
+ var secTitle;
+ switch (type) {
+ case 'attribute': secTitle = 'Attributes'; break;
+ case 'operation': secTitle = 'Methods'; break;
+ case 'const': secTitle = 'Constants'; break;
+ case 'field': secTitle = 'Fields'; break;
+ }
+ var $dl = $("<dl/>");
+ if (!this.noIDLSorting) {
+ things.sort(function (a, b) {
+ if (a.name < b.name) return -1;
+ if (a.name > b.name) return 1;
+ return 0;
+ });
+ }
+
+ for (var j = 0; j < things.length; j++) {
+ // Normalize types
+ var el = things[j];
+ if (el.idlType) el.htmlType = this.writeHtmlType(el.idlType);
+
+ if (el.arguments) {
+ for (var a = 0; a < el.arguments.length; a++) {
+ var arg = el.arguments[a];
+ if (arg.type) arg.htmlType = this.writeHtmlType(arg.type);
+ }
+ }
+ var src = this.tt.exec("webidl-" + type, things[j]);
+ $dl.append($(src));
+ }
+ var $section = $("<section/>")
+ .append($("<h2/>").text(secTitle))
+ .append($dl);
+ results.push($section);
+ }
+ break;
+
+ case "implements":
+ obj.htmlType = this.writeHtmlType(obj['implements']);
+ var src = this.tt.exec("webidl-implements", obj);
+ results.push($(src));
+ break;
+
+ case "module":
+ var $df = $(this.doc.createDocumentFragment());
+
+ if (obj.description) results.push($("<div>" + obj.description + "</div>"));
+
+ for (idx = 0; idx < obj.members.length; idx++) {
+ var it = obj.members[idx];
+ var $sec = $("<section/>")
+ .append($("<h2/>").text(it.type + ' ' + (it.name || it.target)));
+ var idlHtml = this.writeAsHTML(it);
+ for (var i = 0; i < idlHtml.length; i++) {
+ $sec.append(idlHtml[i]);
+ }
+ results.push($sec);
+ }
+ break;
+
+ case "typedef":
+ obj.htmlType = this.writeHtmlType(obj.idlType);
+ var src = this.tt.exec("webidl-typedef", obj);
+ results.push($(src));
+ break;
+
+ default:
+ warn("Unexpected type " + obj.type + ": " + obj.refId);
+ break;
+ }
+
+ return results;
+ },
+
+ writeHtmlType: function (idlType) {
+ if (typeof(idlType) == "string") {
+ return idlType;
+ } else if (idlType.sequence) {
+ return "sequence<" + idlType.idlType.idlType + ">";
+ } else {
+ return idlType.idlType;
+ }
+ },
+
+ writeAsWebIDL: function (obj, indent) {
+ if (!indent) indent = 0;
+
+ switch (obj.type) {
+ case "exception":
+ var $span = $("<span class='idlInterface'/>").attr("id", 'idl-def-' + obj.refId)
+ .append(this.writeExtAttrs(obj.extAttrs, indent))
+ .append(this._idn(indent) + "exception ")
+ .append($("<span class='idlExceptionID'/>").text(obj.name))
+ .append(" {\n");
+
+ // we process attributes and methods in place
+ var maxAttr = 0, maxOp = 0, maxConst = 0;
+ for (var idx = 0; idx < obj.members.length; idx++) {
+ var it = obj.members[idx];
+ var len = this.idlTypeLength(it.idlType);
+ if (it.type == "field") maxAttr = (len > maxAttr) ? len : maxAttr;
+ else if (it.type == "const") maxConst = (len > maxConst) ? len : maxConst;
+ else error("Unknown exception member" + it.type + ": " + it.name + inspect(it));
+ }
+ var curLnk = "widl-" + obj.refId + "-";
+ for (var i = 0; i < obj.members.length; i++) {
+ var ch = obj.members[i];
+ if (ch.type == "field") $span.append(this.writeField(ch, maxAttr + 1, indent + 1, curLnk));
+ else if (ch.type == "const") $span.append(this.writeConst(ch, maxConst + 1, indent + 1, curLnk));
+ }
+ $span.append(this._idn(indent) + "};\n");
+ return $span;
+
+ case "implements":
+ return $("<span class='idlImplements'/>")
+ .attr("id", "idl-def-" + obj.refId)
+ .append(this._idn(indent))
+ .append($("<a/>").text(obj.target))
+ .append(" implements ")
+ .append($("<a class='idlType'/>").append($("<code/>").append(this.writeDatatype(obj['implements']))))
+ .append(";\n");
+
+ case "interface":
+ var $span = $("<span class='idlInterface'/>").attr("id", 'idl-def-' + obj.refId)
+ .append(this.writeExtAttrs(obj.extAttrs, indent))
+ .append(this._idn(indent) + "interface ")
+ .append($("<span class='idlInterfaceID'/>").text(obj.name));
+
+ if (obj.inheritance && obj.inheritance.length) {
+ var classes =
+ obj.inheritance.map(function (it) {
+ return "<span class='idlSuperclass'><a>" + it + "</a></span>";
+ });
+ $span.append(" : " + classes.join(", "));
+ }
+ $span.append(" {\n");
+
+ // we process attributes and methods in place
+ var maxAttr = 0, maxOp = 0, maxConst = 0, hasRO = false;
+ for (var idx = 0; idx < obj.members.length; idx++) {
+ var it = obj.members[idx];
+ var len = this.idlTypeLength(it.idlType);
+ if (it.type == "attribute") maxAttr = (len > maxAttr) ? len : maxAttr;
+ else if (it.type == "operation") maxOp = (len > maxOp) ? len : maxOp;
+ else if (it.type == "const") maxConst = (len > maxConst) ? len : maxConst;
+ else error("Unknown interface member" + it.type + ": " + it.name + inspect(it));
+ if (it.type == "attribute" && it.readonly) hasRO = true;
+ }
+ var curLnk = "widl-" + obj.refId + "-";
+ for (var i = 0; i < obj.members.length; i++) {
+ var ch = obj.members[i];
+ if (ch.type == "attribute") $span.append(this.writeAttribute(ch, maxAttr + 1, indent + 1, curLnk, hasRO));
+ else if (ch.type == "operation") $span.append(this.writeMethod(ch, maxOp + 1, indent + 1, curLnk));
+ else if (ch.type == "const") $span.append(this.writeConst(ch, maxConst + 1, indent + 1, curLnk));
+ }
+ $span.append(this._idn(indent) + "};\n");
+ return $span;
+
+ case "module":
+ var $span = $("<span class='idlModule'/>")
+ .attr("id", "idl-def-" + obj.refId)
+ .append(this.writeExtAttrs(obj.extAttrs, indent))
+ .append(this._idn(indent) + "module ")
+ .append($("<span class='idModuleId'/>").text(obj.name))
+ .append(" {\n");
+ for (var idx = 0; idx < obj.members.length; idx++) {
+ var it = obj.members[idx];
+ $span.append(this.writeAsWebIDL(it, indent + 1));
+ }
+ $span.append(this._idn(indent) + "};\n");
+ return $span;
+
+ case "typedef":
+ return $("<span class='idlTypedef'/>")
+ .attr("id", "idl-def-" + obj.refId)
+ .append(this._idn(indent) + "typedef")
+ .append(" ")
+ .append($("<span class='idlTypedefType'/>").append(this.writeDatatype(obj.idlType)))
+ .append(" ")
+ .append($("<span class='idlTypedefID'/>").text(obj.name))
+ .append(";\n");
+
+ default:
+ $("<p>").text("IDL for " + obj.type + ": " + obj.name).after(inspect(obj, 3));
+ }
+ },
+
+ writeField: function (attr, max, indent, curLnk) {
+ var $span = $("<span class='idlField'>");
+ $span.append(this.writeExtAttrs(attr.extAttrs, indent))
+ .append(this._idn(indent));
+
+ var pad = max - this.idlTypeLength(attr.idlType);
+ var padStr = "";
+ for (var i = 0; i < pad; i++) padStr += " ";
+
+ $span.append($("<span class='idlFieldType'/>").append(this.writeDatatype(attr.idlType)))
+ .append(padStr)
+ .append($("<span class='idlFieldName'/>")
+ .append($("<a/>")
+ .attr("href", "#" + curLnk + attr.refId)
+ .text(attr.name)))
+ .append(";\n");
+ return $span;
+ },
+
+ writeAttribute: function (attr, max, indent, curLnk, hasRO) {
+ var pad = max - this.idlTypeLength(attr.idlType);
+ var padStr = "";
+ for (var i = 0; i < pad; i++) padStr += " ";
+ var $idlAttrType = this.writeDatatype(attr.idlType);
+
+ var $span = $("<span class='idlAttribute'>")
+ .append(this.writeExtAttrs(attr.extAttrs, indent))
+ .append(this._idn(indent));
+
+ if (hasRO) {
+ if (attr.readonly) $span.append("readonly ");
+ else $span.append(" ");
+ }
+ $span.append("attribute ")
+ .append($("<span class='idlAttrType'/>").append($idlAttrType))
+ .append(padStr)
+ .append($("<span class='idlAttrName'/>")
+ .append($("<a/>")
+ .attr("href", "#" + curLnk + attr.refId)
+ .text(attr.name)));
+
+ if (attr.getraises.length) {
+ raises = " getraises ("
+ + attr.getraises.map(function (it) {
+ return "<span class='idlRaises'><a>" + it.name + "</a></span>";
+ }).join(", ")
+ + ")";
+ $span.append(raises);
+ }
+
+ if (attr.setraises.length) {
+ raises = " setraises ("
+ + attr.setraises.map(function (it) {
+ return "<span class='idlRaises'><a>" + it.name + "</a></span>";
+ }).join(", ")
+ + ")";
+ $span.append(raises);
+ }
+
+ $span.append(";\n");
+ return $span;
+ },
+
+ writeMethod: function (meth, max, indent, curLnk) {
+ var pad = max - this.idlTypeLength(meth.idlType);
+ var padStr = "";
+ for (var i = 0; i < pad; i++) padStr += " ";
+
+ var $span = $("<span class='idlMethod'>")
+ .append(this.writeExtAttrs(meth.extAttrs, indent))
+ .append(this._idn(indent))
+ .append($("<span class='idlMethType'/>").append(this.writeDatatype(meth.idlType)))
+ .append(padStr)
+ .append($("<span class='idlMethName'/>")
+ .append(
+ $("<a/>")
+ .attr("href", "#" + curLnk + meth.refId)
+ .text(meth.name)))
+ .append(" (");
+ var self = this;
+ for (var i = 0; i < meth.arguments.length; i++) {
+ var it = meth.arguments[i];
+ var optional = it.optional ? "optional " : "";
+ var inp = this.noIDLIn ? "" : " in ";
+ var $prm = $("<span class='idlParam'>")
+ .append(this.writeExtAttrs(it.extAttrs, null))
+ .append(inp + optional);
+ var $ptype = $("<span class='idlParamType'/>").append(this.writeDatatype(it.type));
+ $prm.append($ptype)
+ .append(" ")
+ .append($("<span class='idlParamName'/>").text(it.name));
+ $span.append($prm);
+ if (i < meth.arguments.length - 1) $span.append(", ");
+ }
+ $span.append(")");
+ if (meth.raises.length) {
+ raises = " raises ("
+ + meth.raises.map(function (it) {
+ return "<span class='idlRaises'><a>" + it.name + "</a></span>";
+ }).join(", ")
+ + ")";
+ $span.append(raises);
+ }
+
+ $span.append(";\n");
+
+ return $span;
+ },
+
+ writeConst: function (cons, max, indent, curLnk) {
+ var pad = max - this.idlTypeLength(cons.idlType);
+ var padStr = "";
+ for (var i = 0; i < pad; i++) padStr += " ";
+ var $idlConstType = this.writeDatatype(cons.idlType);
+ var $ctype = $("<span class='idlConstType'/>").append($idlConstType);
+ var $cname = $("<span class='idlConstName'/>")
+ .append($("<a/>").attr("href", "#" + curLnk + cons.refId).text(cons.name));
+ var $span = $("<span class='idlConst'/>")
+ .append(this._idn(indent))
+ .append("const ")
+ .append($ctype)
+ .append(padStr)
+ .append($cname)
+ .append(" = ")
+ .append($("<span class='idlConstValue'/>").text(cons.value))
+ .append(";\n");
+ return $span;
+ },
+
+ writeDatatype: function (idlType) {
+ if (idlType.sequence) {
+ return $("<span/>").append("sequence<")
+ .append(this.writeDatatype(idlType.idlType))
+ .append(">");
+ }
+ else {
+ var nullable = idlType.nullable ? "?" : "";
+ var arr = idlType.array ? "[]" : "";
+ var name = idlType.idlType || idlType;
+ return $("<span/>")
+ .append($("<a/>").text(name))
+ .append("" + arr + nullable);
+ }
+ },
+
+ idlTypeLength: function (idlType) {
+ if (idlType.sequence) {
+ return this.idlTypeLength(idlType.idlType) + 10;
+ } else if (idlType.idlType) {
+ var len = idlType.idlType.length;
+ if (idlType.nullable) len = len + 1;
+ if (idlType.array) len = len + 2;
+ return len;
+ } else {
+ return idlType.length;
+ }
+ },
+
+ writeExtAttrs: function(extAttrs, indent) {
+ if (!extAttrs) return "";
+ var attrs = this._idn(indent) + "[";
+ attrs += extAttrs.map(function (a) {
+ return "<span class='extAttr'>" + a.name + "</span>";
+ }).join(", ");
+ attrs += "]";
+ if (indent != null) attrs += "\n";
+ return attrs;
+ },
+
+ _idn: function (lvl) {
+ var str = "";
+ for (var i = 0; i < lvl; i++) str += " ";
+ return str;
+ },
+
+ // An ID must be an xsd:ID
+ _id: function (id) {
+ return id.replace(/[^a-zA-Z0-9_-]/g, "");
+ }
+};
+
+function inspect(obj, maxLevels, level)
+{
+ var str = '', type, msg;
+
+ // Start Input Validations
+ // Don't touch, we start iterating at level zero
+ if(level == null) level = 0;
+
+ // At least you want to show the first level
+ if(maxLevels == null) maxLevels = 1;
+ if(maxLevels < 1)
+ return '<font color="red">Error: Levels number must be > 0</font>';
+
+ // We start with a non null object
+ if(obj == null)
+ return '<font color="red">Error: Object <b>NULL</b></font>';
+ // End Input Validations
+
+ // Each Iteration must be indented
+ str += '<ul>';
+
+ // Start iterations for all objects in obj
+ for(property in obj)
+ {
+ try
+ {
+ // Show "property" and "type property"
+ type = typeof(obj[property]);
+ str += '<li>(' + type + ') ' + property +
+ ( (obj[property]==null)?(': <b>null</b>'):('"' + obj[property] +'"')) + '</li>';
+
+ // We keep iterating if this property is an Object, non null
+ // and we are inside the required number of levels
+ if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))
+ str += inspect(obj[property], maxLevels, level+1);
+ }
+ catch(err)
+ {
+ // Is there some properties in obj we can't access? Print it red.
+ if(typeof(err) == 'string') msg = err;
+ else if(err.message) msg = err.message;
+ else if(err.description) msg = err.description;
+ else msg = 'Unknown';
+
+ str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';
+ }
+ }
+
+ // Close indent
+ str += '</ul>';
+
+ return str;
+}
+
+
+window.WebIDLParser = (function(){
+ /* Generated by PEG.js (http://pegjs.majda.cz/). */
+
+ var result = {
+ killComments: function (str) {
+ return str.replace(/\/\/.*$/gm, '')
+ .replace(/\/\*[\s\S]*?\*\//g, '');
+ },
+
+ /*
+ * Parses the input with a generated parser. If the parsing is successfull,
+ * returns a value explicitly or implicitly specified by the grammar from
+ * which the parser was generated (see |PEG.buildParser|). If the parsing is
+ * unsuccessful, throws |PEG.grammarParser.SyntaxError| describing the error.
+ */
+ parse: function(input, start) {
+ input = this.killComments(input);
+ if (!start) start = 'definitions';
+ var funcs = {};
+
+ var pos = 0;
+ var rightmostMatchFailuresPos = 0;
+ var rightmostMatchFailuresExpected = [];
+ var cache = {};
+
+ function quoteString(s) {
+ /*
+ * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a
+ * string literal except for the closing quote character, backslash,
+ * carriage return, line separator, paragraph separator, and line feed.
+ * Any character may appear in the form of an escape sequence.
+ */
+ return '"' + s
+ .replace(/\\/g, '\\\\') // backslash
+ .replace(/"/g, '\\"') // closing quote character
+ .replace(/\r/g, '\\r') // carriage return
+ .replace(/\u2028/g, '\\u2028') // line separator
+ .replace(/\u2029/g, '\\u2029') // paragraph separator
+ .replace(/\n/g, '\\n') // line feed
+ + '"';
+ }
+
+ function arrayContains(array, value) {
+ /*
+ * Stupid IE does not have Array.prototype.indexOf, otherwise this
+ * function would be a one-liner.
+ */
+ var length = array.length;
+ for (var i = 0; i < length; i++) {
+ if (array[i] === value) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function matchFailed(failure) {
+ if (pos < rightmostMatchFailuresPos) {
+ return;
+ }
+
+ if (pos > rightmostMatchFailuresPos) {
+ rightmostMatchFailuresPos = pos;
+ rightmostMatchFailuresExpected = [];
+ }
+
+ if (!arrayContains(rightmostMatchFailuresExpected, failure)) {
+ rightmostMatchFailuresExpected.push(failure);
+ }
+ }
+
+ var parse_s = funcs['s'] = function parse_s(context) {
+ var cacheKey = "s" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos).match(/^[ \r\n]/) !== null) {
+ var result1 = input.charAt(pos);
+ pos++;
+ } else {
+ var result1 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[ \\r\\n]");
+ }
+ }
+ if (result1 !== null) {
+ var result0 = [];
+ while (result1 !== null) {
+ result0.push(result1);
+ if (input.substr(pos).match(/^[ \r\n]/) !== null) {
+ var result1 = input.charAt(pos);
+ pos++;
+ } else {
+ var result1 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[ \\r\\n]");
+ }
+ }
+ }
+ } else {
+ var result0 = null;
+ }
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_w = funcs['w'] = function parse_w(context) {
+ var cacheKey = "w" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result1 = parse_s(context);
+ var result0 = result1 !== null ? result1 : '';
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_identifier = funcs['identifier'] = function parse_identifier(context) {
+ var cacheKey = "identifier" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos).match(/^[A-Z_a-z]/) !== null) {
+ var result2 = input.charAt(pos);
+ pos++;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[A-Z_a-z]");
+ }
+ }
+ if (result2 !== null) {
+ var result3 = [];
+ if (input.substr(pos).match(/^[0-9A-Z_a-z]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9A-Z_a-z]");
+ }
+ }
+ while (result4 !== null) {
+ result3.push(result4);
+ if (input.substr(pos).match(/^[0-9A-Z_a-z]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9A-Z_a-z]");
+ }
+ }
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(nmstart, nmchars) { return nmstart + nmchars.join(""); })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_octal = funcs['octal'] = function parse_octal(context) {
+ var cacheKey = "octal" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === "0") {
+ var result2 = "0";
+ pos += 1;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("0"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = [];
+ if (input.substr(pos).match(/^[0-7]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-7]");
+ }
+ }
+ while (result4 !== null) {
+ result3.push(result4);
+ if (input.substr(pos).match(/^[0-7]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-7]");
+ }
+ }
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(value) { return "0" + value.join(""); })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_hex = funcs['hex'] = function parse_hex(context) {
+ var cacheKey = "hex" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === "0") {
+ var result2 = "0";
+ pos += 1;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("0"));
+ }
+ }
+ if (result2 !== null) {
+ if (input.substr(pos).match(/^[Xx]/) !== null) {
+ var result3 = input.charAt(pos);
+ pos++;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[Xx]");
+ }
+ }
+ if (result3 !== null) {
+ if (input.substr(pos).match(/^[0-9A-Fa-f]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9A-Fa-f]");
+ }
+ }
+ if (result5 !== null) {
+ var result4 = [];
+ while (result5 !== null) {
+ result4.push(result5);
+ if (input.substr(pos).match(/^[0-9A-Fa-f]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9A-Fa-f]");
+ }
+ }
+ }
+ } else {
+ var result4 = null;
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(x, value) { return "0" + x + value.join(""); })(result1[1], result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_decimal = funcs['decimal'] = function parse_decimal(context) {
+ var cacheKey = "decimal" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result2 = input.charAt(pos);
+ pos++;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ if (result2 !== null) {
+ var result3 = [];
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ while (result4 !== null) {
+ result3.push(result4);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(numStart, numRest) { return numStart + numRest.join(""); })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_integer = funcs['integer'] = function parse_integer(context) {
+ var cacheKey = "integer" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === "-") {
+ var result7 = "-";
+ pos += 1;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("-"));
+ }
+ }
+ var result2 = result7 !== null ? result7 : '';
+ if (result2 !== null) {
+ var result6 = parse_hex(context);
+ if (result6 !== null) {
+ var result3 = result6;
+ } else {
+ var result5 = parse_octal(context);
+ if (result5 !== null) {
+ var result3 = result5;
+ } else {
+ var result4 = parse_decimal(context);
+ if (result4 !== null) {
+ var result3 = result4;
+ } else {
+ var result3 = null;;
+ };
+ };
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(neg, num) { return neg + num; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_floatEe = funcs['floatEe'] = function parse_floatEe(context) {
+ var cacheKey = "floatEe" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos).match(/^[Ee]/) !== null) {
+ var result2 = input.charAt(pos);
+ pos++;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[Ee]");
+ }
+ }
+ if (result2 !== null) {
+ if (input.substr(pos).match(/^[+\-]/) !== null) {
+ var result6 = input.charAt(pos);
+ pos++;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[+\\-]");
+ }
+ }
+ var result3 = result6 !== null ? result6 : '';
+ if (result3 !== null) {
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ if (result5 !== null) {
+ var result4 = [];
+ while (result5 !== null) {
+ result4.push(result5);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ } else {
+ var result4 = null;
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(e, sign, exp) { return e + sign + exp.join(""); })(result1[0], result1[1], result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_expFloat = funcs['expFloat'] = function parse_expFloat(context) {
+ var cacheKey = "expFloat" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ if (result4 !== null) {
+ var result2 = [];
+ while (result4 !== null) {
+ result2.push(result4);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result4 = input.charAt(pos);
+ pos++;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ } else {
+ var result2 = null;
+ }
+ if (result2 !== null) {
+ var result3 = parse_floatEe(context);
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(num, fee) { return num.join("") + fee; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_leadFloat = funcs['leadFloat'] = function parse_leadFloat(context) {
+ var cacheKey = "leadFloat" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result8 = input.charAt(pos);
+ pos++;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ if (result8 !== null) {
+ var result2 = [];
+ while (result8 !== null) {
+ result2.push(result8);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result8 = input.charAt(pos);
+ pos++;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ } else {
+ var result2 = null;
+ }
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === ".") {
+ var result3 = ".";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("."));
+ }
+ }
+ if (result3 !== null) {
+ var result4 = [];
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result7 = input.charAt(pos);
+ pos++;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ while (result7 !== null) {
+ result4.push(result7);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result7 = input.charAt(pos);
+ pos++;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ if (result4 !== null) {
+ var result6 = parse_floatEe(context);
+ var result5 = result6 !== null ? result6 : '';
+ if (result5 !== null) {
+ var result1 = [result2, result3, result4, result5];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(num, dec, fee) { return num.join("") + "." + dec.join("") + fee; })(result1[0], result1[2], result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_dotFloat = funcs['dotFloat'] = function parse_dotFloat(context) {
+ var cacheKey = "dotFloat" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = [];
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result8 = input.charAt(pos);
+ pos++;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ while (result8 !== null) {
+ result2.push(result8);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result8 = input.charAt(pos);
+ pos++;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === ".") {
+ var result3 = ".";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("."));
+ }
+ }
+ if (result3 !== null) {
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result7 = input.charAt(pos);
+ pos++;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ if (result7 !== null) {
+ var result4 = [];
+ while (result7 !== null) {
+ result4.push(result7);
+ if (input.substr(pos).match(/^[0-9]/) !== null) {
+ var result7 = input.charAt(pos);
+ pos++;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[0-9]");
+ }
+ }
+ }
+ } else {
+ var result4 = null;
+ }
+ if (result4 !== null) {
+ var result6 = parse_floatEe(context);
+ var result5 = result6 !== null ? result6 : '';
+ if (result5 !== null) {
+ var result1 = [result2, result3, result4, result5];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(num, dec, fee) { return num.join("") + "." + dec.join("") + fee; })(result1[0], result1[2], result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_float = funcs['float'] = function parse_float(context) {
+ var cacheKey = "float" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === "-") {
+ var result7 = "-";
+ pos += 1;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("-"));
+ }
+ }
+ var result2 = result7 !== null ? result7 : '';
+ if (result2 !== null) {
+ var result6 = parse_leadFloat(context);
+ if (result6 !== null) {
+ var result3 = result6;
+ } else {
+ var result5 = parse_dotFloat(context);
+ if (result5 !== null) {
+ var result3 = result5;
+ } else {
+ var result4 = parse_expFloat(context);
+ if (result4 !== null) {
+ var result3 = result4;
+ } else {
+ var result3 = null;;
+ };
+ };
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(neg, num) { return neg + num; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_string = funcs['string'] = function parse_string(context) {
+ var cacheKey = "string" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === "\"") {
+ var result2 = "\"";
+ pos += 1;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("\""));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = [];
+ if (input.substr(pos).match(/^[^""]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[^\"\"]");
+ }
+ }
+ while (result5 !== null) {
+ result3.push(result5);
+ if (input.substr(pos).match(/^[^""]/) !== null) {
+ var result5 = input.charAt(pos);
+ pos++;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[^\"\"]");
+ }
+ }
+ }
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "\"") {
+ var result4 = "\"";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("\""));
+ }
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(str) { return str.join(""); })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_other = funcs['other'] = function parse_other(context) {
+ var cacheKey = "other" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos).match(/^[^ \n\r 0-9A-Z_a-z]/) !== null) {
+ var result2 = input.charAt(pos);
+ pos++;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[^ \\n\\r 0-9A-Z_a-z]");
+ }
+ }
+ if (result2 !== null) {
+ var result1 = [];
+ while (result2 !== null) {
+ result1.push(result2);
+ if (input.substr(pos).match(/^[^ \n\r 0-9A-Z_a-z]/) !== null) {
+ var result2 = input.charAt(pos);
+ pos++;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed("[^ \\n\\r 0-9A-Z_a-z]");
+ }
+ }
+ }
+ } else {
+ var result1 = null;
+ }
+ var result0 = result1 !== null
+ ? (function(other) { return other.join(""); })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_type = funcs['type'] = function parse_type(context) {
+ var cacheKey = "type" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_TypeDesc(context);
+ if (result2 !== null) {
+ var result3 = parse_Nullable(context);
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(type, nullable) {
+ if (!type.sequence) type.sequence = false;
+ type.nullable = nullable;
+ return type; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_TypeDesc = funcs['TypeDesc'] = function parse_TypeDesc(context) {
+ var cacheKey = "TypeDesc" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result4 = parse_Sequence(context);
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_ArrayType(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_SimpleType(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(type) { return type; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Sequence = funcs['Sequence'] = function parse_Sequence(context) {
+ var cacheKey = "Sequence" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 9) === "sequence<") {
+ var result2 = "sequence<";
+ pos += 9;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("sequence<"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_type(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === ">") {
+ var result4 = ">";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(">"));
+ }
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(type) { return { sequence: true, array: false, idlType: type }; })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ArrayType = funcs['ArrayType'] = function parse_ArrayType(context) {
+ var cacheKey = "ArrayType" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_SimpleType(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 2) === "[]") {
+ var result3 = "[]";
+ pos += 2;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("[]"));
+ }
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(type) {
+ type.array = true;
+ return type;
+ })(result1[0])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_SimpleType = funcs['SimpleType'] = function parse_SimpleType(context) {
+ var cacheKey = "SimpleType" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos, 3) === "any") {
+ var result10 = "any";
+ pos += 3;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("any"));
+ }
+ }
+ if (result10 !== null) {
+ var result1 = result10;
+ } else {
+ if (input.substr(pos, 6) === "object") {
+ var result9 = "object";
+ pos += 6;
+ } else {
+ var result9 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("object"));
+ }
+ }
+ if (result9 !== null) {
+ var result1 = result9;
+ } else {
+ if (input.substr(pos, 7) === "boolean") {
+ var result8 = "boolean";
+ pos += 7;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("boolean"));
+ }
+ }
+ if (result8 !== null) {
+ var result1 = result8;
+ } else {
+ if (input.substr(pos, 5) === "octet") {
+ var result7 = "octet";
+ pos += 5;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("octet"));
+ }
+ }
+ if (result7 !== null) {
+ var result1 = result7;
+ } else {
+ if (input.substr(pos, 5) === "float") {
+ var result6 = "float";
+ pos += 5;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("float"));
+ }
+ }
+ if (result6 !== null) {
+ var result1 = result6;
+ } else {
+ if (input.substr(pos, 6) === "double") {
+ var result5 = "double";
+ pos += 6;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("double"));
+ }
+ }
+ if (result5 !== null) {
+ var result1 = result5;
+ } else {
+ if (input.substr(pos, 9) === "DOMString") {
+ var result4 = "DOMString";
+ pos += 9;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("DOMString"));
+ }
+ }
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_UnsignedIntegerType(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_ScopedName(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(type) { return { sequence: false, array: false, idlType: type }; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_UnsignedIntegerType = funcs['UnsignedIntegerType'] = function parse_UnsignedIntegerType(context) {
+ var cacheKey = "UnsignedIntegerType" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 8) === "unsigned") {
+ var result11 = "unsigned";
+ pos += 8;
+ } else {
+ var result11 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("unsigned"));
+ }
+ }
+ var result2 = result11 !== null ? result11 : '';
+ if (result2 !== null) {
+ var result3 = parse_s(context);
+ if (result3 !== null) {
+ var savedPos1 = pos;
+ if (input.substr(pos, 4) === "long") {
+ var result8 = "long";
+ pos += 4;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("long"));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_s(context);
+ if (result9 !== null) {
+ if (input.substr(pos, 4) === "long") {
+ var result10 = "long";
+ pos += 4;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("long"));
+ }
+ }
+ if (result10 !== null) {
+ var result7 = [result8, result9, result10];
+ } else {
+ var result7 = null;
+ pos = savedPos1;
+ }
+ } else {
+ var result7 = null;
+ pos = savedPos1;
+ }
+ } else {
+ var result7 = null;
+ pos = savedPos1;
+ }
+ if (result7 !== null) {
+ var result4 = result7;
+ } else {
+ if (input.substr(pos, 4) === "long") {
+ var result6 = "long";
+ pos += 4;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("long"));
+ }
+ }
+ if (result6 !== null) {
+ var result4 = result6;
+ } else {
+ if (input.substr(pos, 5) === "short") {
+ var result5 = "short";
+ pos += 5;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("short"));
+ }
+ }
+ if (result5 !== null) {
+ var result4 = result5;
+ } else {
+ var result4 = null;;
+ };
+ };
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(uns, kind) { return (uns ? "unsigned " : "") + (kind.join ? kind.join("") : kind); })(result1[0], result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ScopedNameList = funcs['ScopedNameList'] = function parse_ScopedNameList(context) {
+ var cacheKey = "ScopedNameList" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_ScopedName(context);
+ if (result2 !== null) {
+ var result3 = [];
+ var result4 = parse_ScopedNameListRest(context);
+ while (result4 !== null) {
+ result3.push(result4);
+ var result4 = parse_ScopedNameListRest(context);
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(first, others) { var ret = [first];
+ for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); }
+ return ret; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ScopedNameListRest = funcs['ScopedNameListRest'] = function parse_ScopedNameListRest(context) {
+ var cacheKey = "ScopedNameListRest" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === ",") {
+ var result3 = ",";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(","));
+ }
+ }
+ if (result3 !== null) {
+ var result4 = parse_w(context);
+ if (result4 !== null) {
+ var result5 = parse_ScopedName(context);
+ if (result5 !== null) {
+ var result1 = [result2, result3, result4, result5];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(rest) { return rest; })(result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ScopedName = funcs['ScopedName'] = function parse_ScopedName(context) {
+ var cacheKey = "ScopedName" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result3 = parse_AbsoluteScopedName(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_RelativeScopedName(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(name) { return name; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_AbsoluteScopedName = funcs['AbsoluteScopedName'] = function parse_AbsoluteScopedName(context) {
+ var cacheKey = "AbsoluteScopedName" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 2) === "::") {
+ var result2 = "::";
+ pos += 2;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("::"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_RelativeScopedName(context);
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(rel) { return "::" + rel; })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_RelativeScopedName = funcs['RelativeScopedName'] = function parse_RelativeScopedName(context) {
+ var cacheKey = "RelativeScopedName" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_identifier(context);
+ if (result2 !== null) {
+ var result3 = [];
+ var result4 = parse_ScopedNameRest(context);
+ while (result4 !== null) {
+ result3.push(result4);
+ var result4 = parse_ScopedNameRest(context);
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(name, rest) { return name + rest.join(""); })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ScopedNameRest = funcs['ScopedNameRest'] = function parse_ScopedNameRest(context) {
+ var cacheKey = "ScopedNameRest" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 2) === "::") {
+ var result2 = "::";
+ pos += 2;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("::"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_identifier(context);
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(name) { return name.join(""); })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_BooleanLiteral = funcs['BooleanLiteral'] = function parse_BooleanLiteral(context) {
+ var cacheKey = "BooleanLiteral" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos, 4) === "true") {
+ var result3 = "true";
+ pos += 4;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("true"));
+ }
+ }
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ if (input.substr(pos, 5) === "false") {
+ var result2 = "false";
+ pos += 5;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("false"));
+ }
+ }
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(value) { return value; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Nullable = funcs['Nullable'] = function parse_Nullable(context) {
+ var cacheKey = "Nullable" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos, 1) === "?") {
+ var result2 = "?";
+ pos += 1;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("?"));
+ }
+ }
+ var result1 = result2 !== null ? result2 : '';
+ var result0 = result1 !== null
+ ? (function(nullable) { return nullable ? true : false; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ReturnType = funcs['ReturnType'] = function parse_ReturnType(context) {
+ var cacheKey = "ReturnType" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ if (input.substr(pos, 4) === "void") {
+ var result3 = "void";
+ pos += 4;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("void"));
+ }
+ }
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_type(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(ret) { return ret; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_definitions = funcs['definitions'] = function parse_definitions(context) {
+ var cacheKey = "definitions" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ var result3 = [];
+ var result4 = parse_definition(context);
+ while (result4 !== null) {
+ result3.push(result4);
+ var result4 = parse_definition(context);
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(defs) { return defs; })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_definition = funcs['definition'] = function parse_definition(context) {
+ var cacheKey = "definition" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result6 = parse_module(context);
+ if (result6 !== null) {
+ var result1 = result6;
+ } else {
+ var result5 = parse_interface(context);
+ if (result5 !== null) {
+ var result1 = result5;
+ } else {
+ var result4 = parse_typedef(context);
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_exception(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_implements(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(def) { return def; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_module = funcs['module'] = function parse_module(context) {
+ var cacheKey = "module" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result17 = parse_extendedAttributeList(context);
+ var result2 = result17 !== null ? result17 : '';
+ if (result2 !== null) {
+ var result16 = parse_s(context);
+ var result3 = result16 !== null ? result16 : '';
+ if (result3 !== null) {
+ if (input.substr(pos, 6) === "module") {
+ var result4 = "module";
+ pos += 6;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("module"));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === "{") {
+ var result8 = "{";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("{"));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ var result10 = parse_definitions(context);
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ if (input.substr(pos, 1) === "}") {
+ var result12 = "}";
+ pos += 1;
+ } else {
+ var result12 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("}"));
+ }
+ }
+ if (result12 !== null) {
+ var result13 = parse_w(context);
+ if (result13 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result14 = ";";
+ pos += 1;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result14 !== null) {
+ var result15 = parse_w(context);
+ if (result15 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, name, defs) { return { type: "module", name: name, definitions: defs, extAttrs: extAttrs }; })(result1[0], result1[4], result1[8])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_implements = funcs['implements'] = function parse_implements(context) {
+ var cacheKey = "implements" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result13 = parse_extendedAttributeList(context);
+ var result2 = result13 !== null ? result13 : '';
+ if (result2 !== null) {
+ var result12 = parse_s(context);
+ var result3 = result12 !== null ? result12 : '';
+ if (result3 !== null) {
+ var result4 = parse_ScopedName(context);
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ if (input.substr(pos, 10) === "implements") {
+ var result6 = "implements";
+ pos += 10;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("implements"));
+ }
+ }
+ if (result6 !== null) {
+ var result7 = parse_s(context);
+ if (result7 !== null) {
+ var result8 = parse_ScopedName(context);
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result10 = ";";
+ pos += 1;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, target, impl) { return { type: 'implements', target: target, 'implements': impl, extAttrs: extAttrs }; })(result1[0], result1[2], result1[6])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_interface = funcs['interface'] = function parse_interface(context) {
+ var cacheKey = "interface" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result21 = parse_extendedAttributeList(context);
+ var result2 = result21 !== null ? result21 : '';
+ if (result2 !== null) {
+ var result20 = parse_s(context);
+ var result3 = result20 !== null ? result20 : '';
+ if (result3 !== null) {
+ if (input.substr(pos, 9) === "interface") {
+ var result4 = "interface";
+ pos += 9;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("interface"));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ var result19 = parse_ifInheritance(context);
+ var result8 = result19 !== null ? result19 : '';
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ if (input.substr(pos, 1) === "{") {
+ var result10 = "{";
+ pos += 1;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("{"));
+ }
+ }
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ var result12 = [];
+ var result18 = parse_ifMember(context);
+ while (result18 !== null) {
+ result12.push(result18);
+ var result18 = parse_ifMember(context);
+ }
+ if (result12 !== null) {
+ var result13 = parse_w(context);
+ if (result13 !== null) {
+ if (input.substr(pos, 1) === "}") {
+ var result14 = "}";
+ pos += 1;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("}"));
+ }
+ }
+ if (result14 !== null) {
+ var result15 = parse_w(context);
+ if (result15 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result16 = ";";
+ pos += 1;
+ } else {
+ var result16 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result16 !== null) {
+ var result17 = parse_w(context);
+ if (result17 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15, result16, result17];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, name, herit, mem) { return { type: "interface", name: name, inheritance: herit, members: mem, extAttrs: extAttrs }; })(result1[0], result1[4], result1[6], result1[10])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ifInheritance = funcs['ifInheritance'] = function parse_ifInheritance(context) {
+ var cacheKey = "ifInheritance" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 1) === ":") {
+ var result2 = ":";
+ pos += 1;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(":"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ var result4 = parse_ScopedNameList(context);
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(herit) { return herit; })(result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ifMember = funcs['ifMember'] = function parse_ifMember(context) {
+ var cacheKey = "ifMember" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result3 = parse_const(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_attrOrOp(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(mem) { return mem; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_const = funcs['const'] = function parse_const(context) {
+ var cacheKey = "const" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result17 = parse_extendedAttributeList(context);
+ var result2 = result17 !== null ? result17 : '';
+ if (result2 !== null) {
+ var result16 = parse_s(context);
+ var result3 = result16 !== null ? result16 : '';
+ if (result3 !== null) {
+ if (input.substr(pos, 5) === "const") {
+ var result4 = "const";
+ pos += 5;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("const"));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_type(context);
+ if (result6 !== null) {
+ var result7 = parse_s(context);
+ if (result7 !== null) {
+ var result8 = parse_identifier(context);
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ if (input.substr(pos, 1) === "=") {
+ var result10 = "=";
+ pos += 1;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("="));
+ }
+ }
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ var result12 = parse_constExpr(context);
+ if (result12 !== null) {
+ var result13 = parse_w(context);
+ if (result13 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result14 = ";";
+ pos += 1;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result14 !== null) {
+ var result15 = parse_w(context);
+ if (result15 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, type, name, value) { return { type: "const", extAttrs: extAttrs, idlType: type, name: name, value: value }; })(result1[0], result1[4], result1[6], result1[10])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_constExpr = funcs['constExpr'] = function parse_constExpr(context) {
+ var cacheKey = "constExpr" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result4 = parse_BooleanLiteral(context);
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_float(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_integer(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(value) { return value; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_attrOrOp = funcs['attrOrOp'] = function parse_attrOrOp(context) {
+ var cacheKey = "attrOrOp" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result4 = parse_Stringifier(context);
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_Attribute(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_Operation(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(ao) { return ao; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Stringifier = funcs['Stringifier'] = function parse_Stringifier(context) {
+ var cacheKey = "Stringifier" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 11) === "stringifier") {
+ var result2 = "stringifier";
+ pos += 11;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("stringifier"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ var result7 = parse_Attribute(context);
+ if (result7 !== null) {
+ var result4 = result7;
+ } else {
+ var result6 = parse_OperationRest(context);
+ if (result6 !== null) {
+ var result4 = result6;
+ } else {
+ if (input.substr(pos, 1) === ";") {
+ var result5 = ";";
+ pos += 1;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result5 !== null) {
+ var result4 = result5;
+ } else {
+ var result4 = null;;
+ };
+ };
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(rest) {
+ if (rest === ";") return { type: "stringifier" };
+ else {
+ rest.stringifier = true;
+ return rest;
+ }
+ })(result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Attribute = funcs['Attribute'] = function parse_Attribute(context) {
+ var cacheKey = "Attribute" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result22 = parse_extendedAttributeList(context);
+ var result2 = result22 !== null ? result22 : '';
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ var savedPos1 = pos;
+ if (input.substr(pos, 8) === "readonly") {
+ var result20 = "readonly";
+ pos += 8;
+ } else {
+ var result20 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("readonly"));
+ }
+ }
+ if (result20 !== null) {
+ var result21 = parse_s(context);
+ if (result21 !== null) {
+ var result19 = [result20, result21];
+ } else {
+ var result19 = null;
+ pos = savedPos1;
+ }
+ } else {
+ var result19 = null;
+ pos = savedPos1;
+ }
+ var result4 = result19 !== null ? result19 : '';
+ if (result4 !== null) {
+ if (input.substr(pos, 9) === "attribute") {
+ var result5 = "attribute";
+ pos += 9;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("attribute"));
+ }
+ }
+ if (result5 !== null) {
+ var result6 = parse_s(context);
+ if (result6 !== null) {
+ var result7 = parse_type(context);
+ if (result7 !== null) {
+ var result8 = parse_s(context);
+ if (result8 !== null) {
+ var result9 = parse_identifier(context);
+ if (result9 !== null) {
+ var result10 = parse_w(context);
+ if (result10 !== null) {
+ var result18 = parse_GetRaises(context);
+ var result11 = result18 !== null ? result18 : '';
+ if (result11 !== null) {
+ var result12 = parse_w(context);
+ if (result12 !== null) {
+ var result17 = parse_SetRaises(context);
+ var result13 = result17 !== null ? result17 : '';
+ if (result13 !== null) {
+ var result14 = parse_w(context);
+ if (result14 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result15 = ";";
+ pos += 1;
+ } else {
+ var result15 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result15 !== null) {
+ var result16 = parse_w(context);
+ if (result16 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15, result16];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, ro, type, name, gr, sr) { return { type: "attribute", extAttrs: extAttrs, idlType: type, name: name, readonly: (ro ? true : false), getraises: gr, setraises: sr }; })(result1[0], result1[2], result1[5], result1[7], result1[9], result1[11])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_GetRaises = funcs['GetRaises'] = function parse_GetRaises(context) {
+ var cacheKey = "GetRaises" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 9) === "getraises") {
+ var result2 = "getraises";
+ pos += 9;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("getraises"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result4 = "(";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_ScopedNameList(context);
+ if (result5 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result6 = ")";
+ pos += 1;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result6 !== null) {
+ var result1 = [result2, result3, result4, result5, result6];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(list) { return list; })(result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_SetRaises = funcs['SetRaises'] = function parse_SetRaises(context) {
+ var cacheKey = "SetRaises" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 9) === "setraises") {
+ var result2 = "setraises";
+ pos += 9;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("setraises"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result4 = "(";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_ScopedNameList(context);
+ if (result5 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result6 = ")";
+ pos += 1;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result6 !== null) {
+ var result1 = [result2, result3, result4, result5, result6];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(list) { return list; })(result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Operation = funcs['Operation'] = function parse_Operation(context) {
+ var cacheKey = "Operation" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result7 = parse_extendedAttributeList(context);
+ var result2 = result7 !== null ? result7 : '';
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ var result4 = parse_OmittableSpecials(context);
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ var result6 = parse_OperationRest(context);
+ if (result6 !== null) {
+ var result1 = [result2, result3, result4, result5, result6];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, oms, rest) {
+ for (var k in oms) rest[k] = oms[k];
+ if (extAttrs) rest.extAttrs = extAttrs;
+ return rest;
+ })(result1[0], result1[2], result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_OmittableSpecials = funcs['OmittableSpecials'] = function parse_OmittableSpecials(context) {
+ var cacheKey = "OmittableSpecials" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 9) === "omittable") {
+ var result6 = "omittable";
+ pos += 9;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("omittable"));
+ }
+ }
+ var result2 = result6 !== null ? result6 : '';
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ var result4 = [];
+ var result5 = parse_Specials(context);
+ while (result5 !== null) {
+ result4.push(result5);
+ var result5 = parse_Specials(context);
+ }
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(om, spe) {
+ var ret = {};
+ for (var i = 0, n = spe.length; i < n; i++) { ret[spe[i]] = true; }
+ ret.omittable = (om ? true : false);
+ return ret;
+ })(result1[0], result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Specials = funcs['Specials'] = function parse_Specials(context) {
+ var cacheKey = "Specials" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 6) === "getter") {
+ var result9 = "getter";
+ pos += 6;
+ } else {
+ var result9 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("getter"));
+ }
+ }
+ if (result9 !== null) {
+ var result3 = result9;
+ } else {
+ if (input.substr(pos, 6) === "setter") {
+ var result8 = "setter";
+ pos += 6;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("setter"));
+ }
+ }
+ if (result8 !== null) {
+ var result3 = result8;
+ } else {
+ if (input.substr(pos, 7) === "creator") {
+ var result7 = "creator";
+ pos += 7;
+ } else {
+ var result7 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("creator"));
+ }
+ }
+ if (result7 !== null) {
+ var result3 = result7;
+ } else {
+ if (input.substr(pos, 7) === "deleter") {
+ var result6 = "deleter";
+ pos += 7;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("deleter"));
+ }
+ }
+ if (result6 !== null) {
+ var result3 = result6;
+ } else {
+ if (input.substr(pos, 6) === "caller") {
+ var result5 = "caller";
+ pos += 6;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("caller"));
+ }
+ }
+ if (result5 !== null) {
+ var result3 = result5;
+ } else {
+ var result3 = null;;
+ };
+ };
+ };
+ };
+ }
+ if (result3 !== null) {
+ var result4 = parse_w(context);
+ if (result4 !== null) {
+ var result1 = [result2, result3, result4];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(spe) {
+ return spe;
+ })(result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_OperationRest = funcs['OperationRest'] = function parse_OperationRest(context) {
+ var cacheKey = "OperationRest" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_ReturnType(context);
+ if (result2 !== null) {
+ var result3 = parse_s(context);
+ if (result3 !== null) {
+ var result18 = parse_identifier(context);
+ var result4 = result18 !== null ? result18 : '';
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result6 = "(";
+ pos += 1;
+ } else {
+ var result6 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ var result17 = parse_Arguments(context);
+ var result8 = result17 !== null ? result17 : '';
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result10 = ")";
+ pos += 1;
+ } else {
+ var result10 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ var result16 = parse_Raises(context);
+ var result12 = result16 !== null ? result16 : '';
+ if (result12 !== null) {
+ var result13 = parse_w(context);
+ if (result13 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result14 = ";";
+ pos += 1;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result14 !== null) {
+ var result15 = parse_w(context);
+ if (result15 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(ret, name, args, exc) { return { type: "operation", idlType: ret, name: name, arguments: (args ? args : []), raises: exc }; })(result1[0], result1[2], result1[6], result1[10])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Arguments = funcs['Arguments'] = function parse_Arguments(context) {
+ var cacheKey = "Arguments" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_Argument(context);
+ if (result2 !== null) {
+ var result3 = [];
+ var result4 = parse_ArgumentsRest(context);
+ while (result4 !== null) {
+ result3.push(result4);
+ var result4 = parse_ArgumentsRest(context);
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(first, others) { var ret = [first];
+ for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); }
+ return ret; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ArgumentsRest = funcs['ArgumentsRest'] = function parse_ArgumentsRest(context) {
+ var cacheKey = "ArgumentsRest" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === ",") {
+ var result3 = ",";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(","));
+ }
+ }
+ if (result3 !== null) {
+ var result4 = parse_w(context);
+ if (result4 !== null) {
+ var result5 = parse_Argument(context);
+ if (result5 !== null) {
+ var result1 = [result2, result3, result4, result5];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(rest) { return rest; })(result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Argument = funcs['Argument'] = function parse_Argument(context) {
+ var cacheKey = "Argument" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result15 = parse_extendedAttributeList(context);
+ var result2 = result15 !== null ? result15 : '';
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 2) === "in") {
+ var result14 = "in";
+ pos += 2;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("in"));
+ }
+ }
+ var result4 = result14 !== null ? result14 : '';
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ if (input.substr(pos, 8) === "optional") {
+ var result13 = "optional";
+ pos += 8;
+ } else {
+ var result13 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("optional"));
+ }
+ }
+ var result6 = result13 !== null ? result13 : '';
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ var result8 = parse_type(context);
+ if (result8 !== null) {
+ if (input.substr(pos, 3) === "...") {
+ var result12 = "...";
+ pos += 3;
+ } else {
+ var result12 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("..."));
+ }
+ }
+ var result9 = result12 !== null ? result12 : '';
+ if (result9 !== null) {
+ var result10 = parse_s(context);
+ if (result10 !== null) {
+ var result11 = parse_identifier(context);
+ if (result11 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, opt, type, ell, name) { return { name: name, type: type, variadic: (ell ? true : false), optional: (opt ? true : false), extAttrs: extAttrs }; })(result1[0], result1[4], result1[6], result1[7], result1[9])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_Raises = funcs['Raises'] = function parse_Raises(context) {
+ var cacheKey = "Raises" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 6) === "raises") {
+ var result2 = "raises";
+ pos += 6;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("raises"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_s(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result4 = "(";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ var result6 = parse_ScopedNameList(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result8 = ")";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result8 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(list) { return list; })(result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_typedef = funcs['typedef'] = function parse_typedef(context) {
+ var cacheKey = "typedef" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ if (input.substr(pos, 7) === "typedef") {
+ var result2 = "typedef";
+ pos += 7;
+ } else {
+ var result2 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("typedef"));
+ }
+ }
+ if (result2 !== null) {
+ var result3 = parse_s(context);
+ if (result3 !== null) {
+ var result4 = parse_type(context);
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result8 = ";";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(type, name) { return { type: 'typedef', name: name, idlType: type }; })(result1[2], result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_exception = funcs['exception'] = function parse_exception(context) {
+ var cacheKey = "exception" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result17 = parse_extendedAttributeList(context);
+ var result2 = result17 !== null ? result17 : '';
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 9) === "exception") {
+ var result4 = "exception";
+ pos += 9;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("exception"));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === "{") {
+ var result8 = "{";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("{"));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ var result10 = [];
+ var result16 = parse_exMember(context);
+ while (result16 !== null) {
+ result10.push(result16);
+ var result16 = parse_exMember(context);
+ }
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ if (input.substr(pos, 1) === "}") {
+ var result12 = "}";
+ pos += 1;
+ } else {
+ var result12 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("}"));
+ }
+ }
+ if (result12 !== null) {
+ var result13 = parse_w(context);
+ if (result13 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result14 = ";";
+ pos += 1;
+ } else {
+ var result14 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result14 !== null) {
+ var result15 = parse_w(context);
+ if (result15 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12, result13, result14, result15];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, name, mem) { return { type: 'exception', name: name, members: mem, extAttrs: extAttrs }; })(result1[0], result1[4], result1[8])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_exMember = funcs['exMember'] = function parse_exMember(context) {
+ var cacheKey = "exMember" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result3 = parse_const(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_field(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(mem) { return mem; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_field = funcs['field'] = function parse_field(context) {
+ var cacheKey = "field" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result11 = parse_extendedAttributeList(context);
+ var result2 = result11 !== null ? result11 : '';
+ if (result2 !== null) {
+ var result10 = parse_s(context);
+ var result3 = result10 !== null ? result10 : '';
+ if (result3 !== null) {
+ var result4 = parse_type(context);
+ if (result4 !== null) {
+ var result5 = parse_s(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === ";") {
+ var result8 = ";";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(";"));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(extAttrs, type, name) { return { type: "field", extAttrs: extAttrs, idlType: type, name: name }; })(result1[0], result1[2], result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_extendedAttributeList = funcs['extendedAttributeList'] = function parse_extendedAttributeList(context) {
+ var cacheKey = "extendedAttributeList" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === "[") {
+ var result3 = "[";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("["));
+ }
+ }
+ if (result3 !== null) {
+ var result4 = parse_ExtAttrs(context);
+ if (result4 !== null) {
+ if (input.substr(pos, 1) === "]") {
+ var result5 = "]";
+ pos += 1;
+ } else {
+ var result5 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("]"));
+ }
+ }
+ if (result5 !== null) {
+ var result6 = parse_w(context);
+ if (result6 !== null) {
+ var result1 = [result2, result3, result4, result5, result6];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(ea) { return ea; })(result1[2])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrs = funcs['ExtAttrs'] = function parse_ExtAttrs(context) {
+ var cacheKey = "ExtAttrs" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_ExtAttr(context);
+ if (result2 !== null) {
+ var result3 = [];
+ var result4 = parse_ExtAttrsRest(context);
+ while (result4 !== null) {
+ result3.push(result4);
+ var result4 = parse_ExtAttrsRest(context);
+ }
+ if (result3 !== null) {
+ var result1 = [result2, result3];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(first, others) { var ret = [first];
+ for (var i = 0, n = others.length; i < n; i++) { ret.push(others[i]); }
+ return ret; })(result1[0], result1[1])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrsRest = funcs['ExtAttrsRest'] = function parse_ExtAttrsRest(context) {
+ var cacheKey = "ExtAttrsRest" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_w(context);
+ if (result2 !== null) {
+ if (input.substr(pos, 1) === ",") {
+ var result3 = ",";
+ pos += 1;
+ } else {
+ var result3 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(","));
+ }
+ }
+ if (result3 !== null) {
+ var result4 = parse_w(context);
+ if (result4 !== null) {
+ var result5 = parse_ExtAttr(context);
+ if (result5 !== null) {
+ var result1 = [result2, result3, result4, result5];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(rest) { return rest; })(result1[3])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttr = funcs['ExtAttr'] = function parse_ExtAttr(context) {
+ var cacheKey = "ExtAttr" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result5 = parse_ExtAttrArgList(context);
+ if (result5 !== null) {
+ var result1 = result5;
+ } else {
+ var result4 = parse_ExtAttrNamedArgList(context);
+ if (result4 !== null) {
+ var result1 = result4;
+ } else {
+ var result3 = parse_ExtAttrNameValue(context);
+ if (result3 !== null) {
+ var result1 = result3;
+ } else {
+ var result2 = parse_ExtAttrNoArg(context);
+ if (result2 !== null) {
+ var result1 = result2;
+ } else {
+ var result1 = null;;
+ };
+ };
+ };
+ }
+ var result0 = result1 !== null
+ ? (function(ea) { return ea; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrNoArg = funcs['ExtAttrNoArg'] = function parse_ExtAttrNoArg(context) {
+ var cacheKey = "ExtAttrNoArg" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var result1 = parse_identifier(context);
+ var result0 = result1 !== null
+ ? (function(name) {return { name: name }; })(result1)
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrNameValue = funcs['ExtAttrNameValue'] = function parse_ExtAttrNameValue(context) {
+ var cacheKey = "ExtAttrNameValue" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_identifier(context);
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "=") {
+ var result4 = "=";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("="));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ var result6 = parse_ScopedName(context);
+ if (result6 !== null) {
+ var result1 = [result2, result3, result4, result5, result6];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(name, value) {return { name: name, value: value }; })(result1[0], result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrNamedArgList = funcs['ExtAttrNamedArgList'] = function parse_ExtAttrNamedArgList(context) {
+ var cacheKey = "ExtAttrNamedArgList" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_identifier(context);
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "=") {
+ var result4 = "=";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("="));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ var result6 = parse_identifier(context);
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result8 = "(";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result8 !== null) {
+ var result9 = parse_w(context);
+ if (result9 !== null) {
+ var result13 = parse_Arguments(context);
+ var result10 = result13 !== null ? result13 : '';
+ if (result10 !== null) {
+ var result11 = parse_w(context);
+ if (result11 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result12 = ")";
+ pos += 1;
+ } else {
+ var result12 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result12 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(name, value, args) {return { name: name, value: value, arguments: args }; })(result1[0], result1[4], result1[8])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ var parse_ExtAttrArgList = funcs['ExtAttrArgList'] = function parse_ExtAttrArgList(context) {
+ var cacheKey = "ExtAttrArgList" + '@' + pos;
+ var cachedResult = cache[cacheKey];
+ if (cachedResult) {
+ pos = cachedResult.nextPos;
+ return cachedResult.result;
+ }
+
+
+ var savedPos0 = pos;
+ var result2 = parse_identifier(context);
+ if (result2 !== null) {
+ var result3 = parse_w(context);
+ if (result3 !== null) {
+ if (input.substr(pos, 1) === "(") {
+ var result4 = "(";
+ pos += 1;
+ } else {
+ var result4 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString("("));
+ }
+ }
+ if (result4 !== null) {
+ var result5 = parse_w(context);
+ if (result5 !== null) {
+ var result9 = parse_Arguments(context);
+ var result6 = result9 !== null ? result9 : '';
+ if (result6 !== null) {
+ var result7 = parse_w(context);
+ if (result7 !== null) {
+ if (input.substr(pos, 1) === ")") {
+ var result8 = ")";
+ pos += 1;
+ } else {
+ var result8 = null;
+ if (context.reportMatchFailures) {
+ matchFailed(quoteString(")"));
+ }
+ }
+ if (result8 !== null) {
+ var result1 = [result2, result3, result4, result5, result6, result7, result8];
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ } else {
+ var result1 = null;
+ pos = savedPos0;
+ }
+ var result0 = result1 !== null
+ ? (function(name, args) {return { name: name, arguments: args }; })(result1[0], result1[4])
+ : null;
+
+
+
+ cache[cacheKey] = {
+ nextPos: pos,
+ result: result0
+ };
+ return result0;
+ }
+
+ function buildErrorMessage() {
+ function buildExpected(failuresExpected) {
+ switch (failuresExpected.length) {
+ case 0:
+ return 'end of input';
+ case 1:
+ return failuresExpected[0];
+ default:
+ failuresExpected.sort();
+ return failuresExpected.slice(0, failuresExpected.length - 1).join(', ')
+ + ' or '
+ + failuresExpected[failuresExpected.length - 1];
+ }
+ }
+
+ var expected = buildExpected(rightmostMatchFailuresExpected);
+ var actualPos = Math.max(pos, rightmostMatchFailuresPos);
+ var actual = actualPos < input.length
+ ? quoteString(input.charAt(actualPos))
+ : 'end of input';
+
+ return 'Expected ' + expected + ' but ' + actual + ' found.';
+ }
+
+ function computeErrorPosition() {
+ /*
+ * The first idea was to use |String.split| to break the input up to the
+ * error position along newlines and derive the line and column from
+ * there. However IE's |split| implementation is so broken that it was
+ * enough to prevent it.
+ */
+
+ var line = 1;
+ var column = 1;
+ var seenCR = false;
+
+ for (var i = 0; i < rightmostMatchFailuresPos; i++) {
+ var ch = input.charAt(i);
+ if (ch === '\n') {
+ if (!seenCR) { line++; }
+ column = 1;
+ seenCR = false;
+ } else if (ch === '\r' | ch === '\u2028' || ch === '\u2029') {
+ line++;
+ column = 1;
+ seenCR = true;
+ } else {
+ column++;
+ seenCR = false;
+ }
+ }
+
+ return { line: line, column: column };
+ }
+
+
+
+ var result = funcs[start]({ reportMatchFailures: true });
+
+ /*
+ * The parser is now in one of the following three states:
+ *
+ * 1. The parser successfully parsed the whole input.
+ *
+ * - |result !== null|
+ * - |pos === input.length|
+ * - |rightmostMatchFailuresExpected| may or may not contain something
+ *
+ * 2. The parser successfully parsed only a part of the input.
+ *
+ * - |result !== null|
+ * - |pos < input.length|
+ * - |rightmostMatchFailuresExpected| may or may not contain something
+ *
+ * 3. The parser did not successfully parse any part of the input.
+ *
+ * - |result === null|
+ * - |pos === 0|
+ * - |rightmostMatchFailuresExpected| contains at least one failure
+ *
+ * All code following this comment (including called functions) must
+ * handle these states.
+ */
+ if (result === null || pos !== input.length) {
+ var errorPosition = computeErrorPosition();
+ throw new this.SyntaxError(
+ buildErrorMessage(),
+ errorPosition.line,
+ errorPosition.column
+ );
+ }
+
+ return result;
+ },
+
+ /* Returns the parser source code. */
+ toSource: function() { return this._source; }
+ };
+
+ /* Thrown when a parser encounters a syntax error. */
+
+ result.SyntaxError = function(message, line, column) {
+ this.name = 'SyntaxError';
+ this.message = message;
+ this.line = line;
+ this.column = column;
+ };
+
+ result.SyntaxError.prototype = Error.prototype;
+
+ return result;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/local-proxy.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,22 @@
+// script used by local proxy documents so that resources may be loaded from the local
+// disk when working offline
+window.addEventListener("message", function dataRequested (ev) {
+ try {
+ var id = ev.data.substring(0, ev.data.indexOf(","));
+ var data = ev.data.substring(ev.data.indexOf(",") + 1);
+ var src = data.replace(/^.*\//, "");
+ var back = ev.source;
+ $.ajax({
+ async: true,
+ url: src,
+ dataType: "text",
+ complete: function (xhr) {
+ if (xhr.responseText) back.postMessage(id + "," + xhr.responseText, "*");
+ else back.postMessage(id + ",", "*");
+ }
+ });
+ }
+ catch (e) {
+ alert("EX: " + e);
+ }
+}, false);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/profiles/w3c-common-loader.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,31 @@
+// use this instead of w3c-common if you are a ReSpec developer and want to move
+// between using ReSpec locally or from a Web server
+
+(function () {
+ var scs = document.getElementsByTagName("script"),
+ baseURL = "";
+ for (var i = 0, n = scs.length; i < n; i++) {
+ var s = scs[i],
+ src = s.getAttribute("src");
+ if (!src) continue;
+ if (src.indexOf("w3c-common-loader.js") > -1) {
+ baseURL = src.replace("profiles/w3c-common-loader.js", "");
+ break;
+ }
+ }
+
+ var script = document.createElement("script"),
+ head = document.getElementsByTagName("head")[0];
+ script.setAttribute("class", "remove");
+ if (document.location.href.indexOf("file:") === 0) {
+ // load proper profile version
+ script.src = baseURL + "profiles/w3c-common.js";
+ }
+ else {
+ // load development version
+ script.src = baseURL + "require.js";
+ script.setAttribute("data-main", "w3c/profile-common");
+ }
+ head.appendChild(script);
+})();
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/profiles/w3c-common.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,463 @@
+/*
+ RequireJS 0.22.0 Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+ RequireJS text Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+*/
+var require,define;
+(function(){function g(Y){return c.call(Y)==="[object Function]"}function e(Y){return c.call(Y)==="[object Array]"}function l(Y,G,L){for(var O in G)if(!(O in Ya)&&(!(O in Y)||L))Y[O]=G[O];return ha}function h(Y,G,L){var O,da,U;for(O=0;U=G[O];O++){U=typeof U==="string"?{name:U}:U;da=U.location;if(L&&(!da||da.indexOf("/")!==0&&da.indexOf(":")===-1))U.location=L+"/"+(U.location||U.name);U.location=U.location||U.name;U.lib=U.lib||"lib";U.main=(U.main||"lib/main").replace(A,"");Y[U.name]=U}}function o(Y){function G(C){var I,
+a;for(I=0;a=C[I];I++)if(a==="."){C.splice(I,1);I-=1}else if(a==="..")if(I===1&&(C[2]===".."||C[0]===".."))break;else if(I>0){C.splice(I-1,2);I-=2}}function L(C,I){var a;if(C.charAt(0)===".")if(I){if(ya.packages[I])I=[I];else{I=I.split("/");I=I.slice(0,I.length-1)}C=I.concat(C.split("/"));G(C);a=ya.packages[I=C[0]];C=C.join("/");if(a&&C===I+"/"+a.main)C=I}return C}function O(C,I){var a=C?C.indexOf("!"):-1,v=null,d=I?I.name:null,q=C,u,x;if(a!==-1){v=C.substring(0,a);C=C.substring(a+1,C.length)}if(v){v=
+L(v,d);v=sb[v]||v}if(C){if(v)u=(a=Ga[v])?a.normalize?a.normalize(C,function(H){return L(H,d)}):L(C,d):"__$p"+d+"@"+C;else u=L(C,d);x=lb[u];if(!x){x=ha.toModuleUrl?ha.toModuleUrl(R,C,I):R.nameToUrl(C,null,I);lb[u]=x}}return{prefix:v,name:u,parentMap:I,url:x,originalName:q,fullName:v?v+"!"+u:u}}function da(){var C=true,I=ya.priorityWait,a,v;if(I){for(v=0;a=I[v];v++)if(!Ta[a]){C=false;break}C&&delete ya.priorityWait}return C}function U(C){return function(I){C.exports=I}}function qa(C,I,a){return function(){var v=
+[].concat(ta.call(arguments,0)),d;if(a&&g(d=v[v.length-1]))d.__requireJsBuild=true;v.push(I);return C.apply(null,v)}}function na(C,I){I=qa(R.require,C,I);l(I,{nameToUrl:qa(R.nameToUrl,C),toUrl:qa(R.toUrl,C),isDefined:qa(R.isDefined,C),ready:ha.ready,isBrowser:ha.isBrowser});if(ha.paths)I.paths=ha.paths;return I}function wa(C){var I,a,v,d,q,u,x,H=yb[C];if(H)for(d=0;a=H[d];d++){I=a.fullName;a=O(a.originalName,a.parentMap);a=a.fullName;v=Qa[I];if(a!==I){Qa[a]=v;delete Qa[I];for(q=0;q<v.length;q++){x=
+v[q].depArray;for(u=0;u<x.length;u++)if(x[u]===I)x[u]=a}}}delete yb[C]}function Ca(C){var I=C.prefix,a=C.fullName;if(!(Va[a]||a in Ga)){if(I&&!mb[I]){mb[I]=undefined;(yb[I]||(yb[I]=[])).push(C);(Qa[I]||(Qa[I]=[])).push({onDep:function(v){v===I&&wa(I)}});Ca(O(I))}R.paused.push(C)}}function Aa(C){var I,a,v;I=C.callback;var d=C.fullName;v=[];var q=C.depArray;if(I&&g(I)){if(q)for(I=0;I<q.length;I++)v.push(C.deps[q[I]]);a=ha.execCb(d,C.callback,v);if(d)if(C.usingExports&&a===undefined&&(!C.cjsModule||
+!("exports"in C.cjsModule)))a=Ga[d];else if(C.cjsModule&&"exports"in C.cjsModule)a=Ga[d]=C.cjsModule.exports;else{if(d in Ga&&!C.usingExports)return ha.onError(new Error(d+" has already been defined"));Ga[d]=a}}else if(d)a=Ga[d]=I;if(d)if(v=Qa[d]){for(I=0;I<v.length;I++)v[I].onDep(d,a);delete Qa[d]}if(pb[C.waitId]){delete pb[C.waitId];C.isDone=true;R.waitCount-=1;if(R.waitCount===0)Za=[]}}function Ba(C,I,a,v){C=O(C,v);var d=C.name,q=C.fullName,u={waitId:d||xb+Bb++,depCount:0,depMax:0,prefix:C.prefix,
+name:d,fullName:q,deps:{},depArray:I,callback:a,onDep:function(S,Z){if(!(S in u.deps)){u.deps[S]=Z;u.depCount+=1;u.depCount===u.depMax&&Aa(u)}}},x,H;if(q){if(q in Ga||Ta[q]===true)return;Va[q]=true;Ta[q]=true;R.jQueryDef=q==="jquery"}for(a=0;a<I.length;a++)if(x=I[a]){x=O(x,d?C:v);H=x.fullName;I[a]=H;if(H==="require")u.deps[H]=na(C);else if(H==="exports"){u.deps[H]=Ga[q]={};u.usingExports=true}else if(H==="module"){u.cjsModule=x=u.deps[H]={id:d,uri:d?R.nameToUrl(d,null,v):undefined};x.setExports=U(x)}else if(H in
+Ga&&!(H in pb))u.deps[H]=Ga[H];else{u.depMax+=1;Ca(x);(Qa[H]||(Qa[H]=[])).push(u)}}if(u.depCount===u.depMax)Aa(u);else{pb[u.waitId]=u;Za.push(u);R.waitCount+=1}}function Ia(C){Ba.apply(null,C);Ta[C[0]]=true}function ja(C){if(!R.jQuery)if((C=C||(typeof jQuery!=="undefined"?jQuery:null))&&"readyWait"in C){R.jQuery=C;Ia(["jquery",[],function(){return jQuery}]);if(R.scriptCount){C.readyWait+=1;R.jQueryIncremented=true}}}function ra(C,I){if(!C.isDone){var a=C.fullName,v=C.depArray,d,q;if(a){if(I[a])return Ga[a];
+I[a]=true}for(q=0;q<v.length;q++)(d=v[q])&&!C.deps[d]&&pb[d]&&C.onDep(d,ra(pb[d],I));return a?Ga[a]:undefined}}function pa(){var C=ya.waitSeconds*1E3,I=C&&R.startTime+C<(new Date).getTime();C="";var a=false,v=false,d;if(ya.priorityWait)if(da())ba();else return;for(d in Ta)if(!(d in Ya)){a=true;if(!Ta[d])if(I)C+=d+" ";else{v=true;break}}if(a||R.waitCount){if(I&&C){d=new Error("require.js load timeout for modules: "+C);d.requireType="timeout";d.requireModules=C;return ha.onError(d)}if(v||R.scriptCount){if(X||
+W)setTimeout(pa,50)}else if(R.waitCount){for(ab=0;C=Za[ab];ab++)ra(C,{});pa()}else ha.checkReadyState()}}function za(C,I){var a=I.name,v=I.fullName;if(!(v in Ga)){mb[C]||(mb[C]=Ga[C]);Ta[v]||(Ta[v]=false);mb[C].load(a,na(I.parentMap,true),function(d){require.onPluginLoad&&require.onPluginLoad(R,C,a,d);Aa({prefix:I.prefix,name:I.name,fullName:I.fullName,callback:d});Ta[v]=true},ya)}}function aa(C){if(C.prefix&&C.name.indexOf("__$p")===0&&Ga[C.prefix])C=O(C.originalName,C.parentMap);var I=C.prefix,
+a=C.fullName;if(!(Va[a]||a in Ga)){Va[a]=true;if(I)if(Ga[I])za(I,C);else{if(!nb[I]){nb[I]=[];(Qa[I]||(Qa[I]=[])).push({onDep:function(v){if(v===I){var d,q=nb[I];for(v=0;v<q.length;v++){d=q[v];za(I,O(d.originalName,d.parentMap))}delete nb[I]}}})}nb[I].push(C)}else ha.load(R,a,C.url)}}var R,ba,ya={waitSeconds:7,baseUrl:La.baseUrl||"./",paths:{},packages:{}},Ra=[],Va={require:true,exports:true,module:true},lb={},Ga={},Ta={},pb={},Za=[],Bb=0,Qa={},mb={},nb={},yb={};ba=function(){var C,I,a;if(R.scriptCount<=
+0)R.scriptCount=0;for(;Ra.length;){C=Ra.shift();if(C[0]===null)return ha.onError(new Error("Mismatched anonymous require.def modules"));else Ia(C)}if(!(ya.priorityWait&&!da())){for(;R.paused.length;){a=R.paused;R.paused=[];for(I=0;C=a[I];I++)aa(C);R.startTime=(new Date).getTime()}pa()}};R={contextName:Y,config:ya,defQueue:Ra,waiting:pb,waitCount:0,specified:Va,loaded:Ta,urlMap:lb,scriptCount:0,urlFetched:{},defined:Ga,paused:[],plugins:mb,managerCallbacks:Qa,makeModuleMap:O,normalize:L,configure:function(C){var I,
+a,v;if(C.baseUrl)if(C.baseUrl.charAt(C.baseUrl.length-1)!=="/")C.baseUrl+="/";I=ya.paths;a=ya.packages;l(ya,C,true);if(C.paths){for(v in C.paths)v in Ya||(I[v]=C.paths[v]);ya.paths=I}if((I=C.packagePaths)||C.packages){if(I)for(v in I)v in Ya||h(a,I[v],v);C.packages&&h(a,C.packages);ya.packages=a}if(C.priority){a=R.requireWait;R.requireWait=false;R.require(C.priority);R.requireWait=a;ya.priorityWait=C.priority}if(C.deps||C.callback)R.require(C.deps||[],C.callback);C.ready&&ha.ready(C.ready)},isDefined:function(C,
+I){return O(C,I).fullName in Ga},require:function(C,I,a){if(typeof C==="string"){if(ha.get)return ha.get(R,C,I);a=I;I=O(C,a);C=Ga[I.fullName];if(C===undefined)return ha.onError(new Error("require: module name '"+I.fullName+"' has not been loaded yet for context: "+Y));return C}Ba(null,C,I,a);if(!R.requireWait)for(;!R.scriptCount&&R.paused.length;)ba()},takeGlobalQueue:function(){if(i.length){B.apply(R.defQueue,[R.defQueue.length-1,0].concat(i));i=[]}},completeLoad:function(C){var I;for(R.takeGlobalQueue();Ra.length;){I=
+Ra.shift();if(I[0]===null){I[0]=C;break}else if(I[0]===C)break;else{Ia(I);I=null}}I?Ia(I):Ia([C,[],C==="jquery"&&typeof jQuery!=="undefined"?function(){return jQuery}:null]);Ta[C]=true;ja();if(ha.isAsync)R.scriptCount-=1;ba();ha.isAsync||(R.scriptCount-=1)},toUrl:function(C,I){var a=C.lastIndexOf("."),v=null;if(a!==-1){v=C.substring(a,C.length);C=C.substring(0,a)}return R.nameToUrl(C,v,I)},nameToUrl:function(C,I,a){var v,d,q,u,x=R.config;if(C.indexOf("./")===0||C.indexOf("../")===0){a=a&&a.url?a.url.split("/"):
+[];a.length&&a.pop();a=a.concat(C.split("/"));G(a);I=a.join("/")+(I?I:ha.jsExtRegExp.test(C)?"":".js")}else{C=L(C,a);if(ha.jsExtRegExp.test(C))I=C+(I?I:"");else{v=x.paths;d=x.packages;a=C.split("/");for(u=a.length;u>0;u--){q=a.slice(0,u).join("/");if(v[q]){a.splice(0,u,v[q]);break}else if(q=d[q]){C=C===q.name?q.location+"/"+q.main:q.location+"/"+q.lib;a.splice(0,u,C);break}}I=a.join("/")+(I||".js");I=(I.charAt(0)==="/"||I.match(/^\w+:/)?"":x.baseUrl)+I}}return x.urlArgs?I+((I.indexOf("?")===-1?"?":
+"&")+x.urlArgs):I}};R.jQueryCheck=ja;R.resume=ba;return R}function m(){var Y,G,L;if(bb&&bb.readyState==="interactive")return bb;Y=document.getElementsByTagName("script");for(G=Y.length-1;G>-1&&(L=Y[G]);G--)if(L.readyState==="interactive")return bb=L;return null}var w=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,F=/require\(["']([^'"\s]+)["']\)/g,A=/^\.\//,c=Object.prototype.toString,ma=Array.prototype,ta=ma.slice,B=ma.splice,X=!!(typeof window!=="undefined"&&navigator&&document),W=!X&&typeof importScripts!==
+"undefined",sa=X&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,xb="_r@@",Ya={},V={},i=[],bb=null,zb=false,tb=false,sb={text:"require/text",i18n:"require/i18n",order:"require/order"},ha;ma={};var $a,La,fb,ub,qb,cb,gb,Ua,hb,vb,ab,rb,wb,db;if(typeof require!=="undefined")if(g(require))return;else ma=require;ha=require=function(Y,G,L){var O="_",da;if(!e(Y)&&typeof Y!=="string"){da=Y;if(e(G)){Y=G;G=L}else Y=[]}if(da&&da.context)O=da.context;L=V[O]||(V[O]=o(O));da&&L.configure(da);
+return L.require(Y,G)};ha.version="0.22.0";ha.isArray=e;ha.isFunction=g;ha.mixin=l;ha.jsExtRegExp=/^\/|:|\?|\.js$/;La=ha.s={contexts:V,skipAsync:{},isPageLoaded:!X,readyCalls:[]};if(ha.isAsync=ha.isBrowser=X){fb=La.head=document.getElementsByTagName("head")[0];if(ub=document.getElementsByTagName("base")[0])fb=La.head=ub.parentNode}ha.onError=function(Y){throw Y;};ha.load=function(Y,G,L){var O=Y.contextName,da=Y.urlFetched,U=Y.loaded;zb=false;U[G]||(U[G]=false);if(!da[L]){Y.scriptCount+=1;ha.attach(L,
+O,G);da[L]=true;if(Y.jQuery&&!Y.jQueryIncremented){Y.jQuery.readyWait+=1;Y.jQueryIncremented=true}}};define=ha.def=function(Y,G,L){var O;if(typeof Y!=="string"){L=G;G=Y;Y=null}if(!ha.isArray(G)){L=G;G=[]}if(!Y&&!G.length&&ha.isFunction(L))if(L.length){L.toString().replace(w,"").replace(F,function(da,U){G.push(U)});G=["require","exports","module"].concat(G)}if(tb){O=$a||m();if(!O)return ha.onError(new Error("ERROR: No matching script interactive for "+L));Y||(Y=O.getAttribute("data-requiremodule"));
+O=V[O.getAttribute("data-requirecontext")]}(O?O.defQueue:i).push([Y,G,L])};ha.execCb=function(Y,G,L){return G.apply(null,L)};ha.onScriptLoad=function(Y){var G=Y.currentTarget||Y.srcElement,L;if(Y.type==="load"||sa.test(G.readyState)){bb=null;Y=G.getAttribute("data-requirecontext");L=G.getAttribute("data-requiremodule");V[Y].completeLoad(L);G.removeEventListener?G.removeEventListener("load",ha.onScriptLoad,false):G.detachEvent("onreadystatechange",ha.onScriptLoad)}};ha.attach=function(Y,G,L,O,da){var U;
+if(X){O=O||ha.onScriptLoad;U=document.createElement("script");U.type=da||"text/javascript";U.charset="utf-8";U.async=!La.skipAsync[Y];U.setAttribute("data-requirecontext",G);U.setAttribute("data-requiremodule",L);if(U.addEventListener)U.addEventListener("load",O,false);else{tb=true;U.attachEvent("onreadystatechange",O)}U.src=Y;$a=U;ub?fb.insertBefore(U,ub):fb.appendChild(U);$a=null;return U}else if(W){O=V[G];G=O.loaded;G[L]=false;importScripts(Y);O.completeLoad(L)}return null};La.baseUrl=ma.baseUrl;
+if(X&&(!La.baseUrl||!fb)){qb=document.getElementsByTagName("script");gb=ma.baseUrlMatch?ma.baseUrlMatch:/(allplugins-)?require\.js(\W|$)/i;for(ab=qb.length-1;ab>-1&&(cb=qb[ab]);ab--){if(!fb)fb=cb.parentNode;if(!vb&&(vb=cb.getAttribute("data-main"))){ma.deps=ma.deps?ma.deps.concat(vb):[vb];if(!ma.baseUrl&&(Ua=cb.src)){Ua=Ua.split("/");Ua.pop();La.baseUrl=ma.baseUrl=Ua.length?Ua.join("/"):"./"}}if(!La.baseUrl&&(Ua=cb.src))if(hb=Ua.match(gb)){La.baseUrl=Ua.substring(0,hb.index);break}}}ha.pageLoaded=
+function(){if(!La.isPageLoaded){La.isPageLoaded=true;rb&&clearInterval(rb);if(wb)document.readyState="complete";ha.callReady()}};ha.checkReadyState=function(){var Y=La.contexts,G;for(G in Y)if(!(G in Ya))if(Y[G].waitCount)return;La.isDone=true;ha.callReady()};ha.callReady=function(){var Y=La.readyCalls,G,L,O;if(La.isPageLoaded&&La.isDone){if(Y.length){La.readyCalls=[];for(G=0;L=Y[G];G++)L()}Y=La.contexts;for(O in Y)if(!(O in Ya)){G=Y[O];if(G.jQueryIncremented){G.jQuery.readyWait-=1;G.jQueryIncremented=
+false}}}};ha.ready=function(Y){La.isPageLoaded&&La.isDone?Y():La.readyCalls.push(Y);return ha};if(X){if(document.addEventListener){document.addEventListener("DOMContentLoaded",ha.pageLoaded,false);window.addEventListener("load",ha.pageLoaded,false);if(!document.readyState){wb=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload",ha.pageLoaded);if(self===self.top)rb=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");ha.pageLoaded()}}catch(Y){}},
+30)}document.readyState==="complete"&&ha.pageLoaded()}ha(ma);if(typeof setTimeout!=="undefined"){db=La.contexts[ma.context||"_"];db.requireWait=true;setTimeout(function(){db.requireWait=false;db.takeGlobalQueue();db.jQueryCheck();db.scriptCount||db.resume();ha.checkReadyState()},0)}})();if(!window.console){var fallback=window.opera?window.opera.postError:function(){};window.console={log:fallback,warn:fallback,error:fallback}}
+(function(g){g.warn=function(e){console.warn("W: "+e)};g.error=function(e){console.error("E: "+e)};g.progress=function(e){console&&console.log("P: "+e)}})(this);
+define("core/base-runner",[],function(){return{runAll:function(g){g.shift();respecConfig||(respecConfig={});var e="";$("script").each(function(h,o){if((h=o.getAttribute("src"))&&$(o).hasClass("remove"))if(/\/js\//.test(h))e=h.replace(/\/js\/.*/,"/js/")});respecConfig.respecBase=e;var l;l=function(){if(g.length){var h=g.shift();h.run?h.run.call(h,respecConfig,document,l):l()}};l();respecConfig.afterEnd&&respecConfig.afterEnd.apply(GLOBAL,Array.prototype.slice.call(arguments))},ieDummy:1}});
+(function(g,e){function l(b,f,j){if(j===e&&b.nodeType===1){j=b.getAttribute("data-"+f);if(typeof j==="string"){try{j=j==="true"?true:j==="false"?false:j==="null"?null:!i.isNaN(j)?parseFloat(j):zb.test(j)?i.parseJSON(j):j}catch(n){}i.data(b,f,j)}else j=e}return j}function h(){return false}function o(){return true}function m(b,f,j){j[0].type=b;return i.event.handle.apply(f,j)}function w(b){var f,j,n,r,t,E,D,K,fa,T,ka,va=[];r=[];t=i.data(this,this.nodeType?"events":"__events__");if(typeof t==="function")t=
+t.events;if(!(b.liveFired===this||!t||!t.live||b.button&&b.type==="click")){if(b.namespace)ka=new RegExp("(^|\\.)"+b.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");b.liveFired=this;var Oa=t.live.slice(0);for(D=0;D<Oa.length;D++){t=Oa[D];t.origType.replace(cb,"")===b.type?r.push(t.selector):Oa.splice(D--,1)}r=i(b.target).closest(r,b.currentTarget);K=0;for(fa=r.length;K<fa;K++){T=r[K];for(D=0;D<Oa.length;D++){t=Oa[D];if(T.selector===t.selector&&(!ka||ka.test(t.namespace))){E=T.elem;n=null;if(t.preType===
+"mouseenter"||t.preType==="mouseleave"){b.type=t.preType;n=i(b.relatedTarget).closest(t.selector)[0]}if(!n||n!==E)va.push({elem:E,handleObj:t,level:T.level})}}}K=0;for(fa=va.length;K<fa;K++){r=va[K];if(j&&r.level>j)break;b.currentTarget=r.elem;b.data=r.handleObj.data;b.handleObj=r.handleObj;ka=r.handleObj.origHandler.apply(r.elem,arguments);if(ka===false||b.isPropagationStopped()){j=r.level;if(ka===false)f=false;if(b.isImmediatePropagationStopped())break}}return f}}function F(b,f){return(b&&b!=="*"?
+b+".":"")+f.replace(Ua,"`").replace(hb,"&")}function A(b){return!b||!b.parentNode||b.parentNode.nodeType===11}function c(b,f,j){if(i.isFunction(f))return i.grep(b,function(r,t){return!!f.call(r,t,r)===j});else if(f.nodeType)return i.grep(b,function(r){return r===f===j});else if(typeof f==="string"){var n=i.grep(b,function(r){return r.nodeType===1});if(na.test(f))return i.filter(f,n,!j);else f=i.filter(f,n)}return i.grep(b,function(r){return i.inArray(r,f)>=0===j})}function ma(b){return i.nodeName(b,
+"table")?b.getElementsByTagName("tbody")[0]||b.appendChild(b.ownerDocument.createElement("tbody")):b}function ta(b,f){var j=0;f.each(function(){if(this.nodeName===(b[j]&&b[j].nodeName)){var n=i.data(b[j++]),r=i.data(this,n);if(n=n&&n.events){delete r.handle;r.events={};for(var t in n)for(var E in n[t])i.event.add(this,t,n[t][E],n[t][E].data)}}})}function B(b,f){f.src?i.ajax({url:f.src,async:false,dataType:"script"}):i.globalEval(f.text||f.textContent||f.innerHTML||"");f.parentNode&&f.parentNode.removeChild(f)}
+function X(b,f,j){var n=f==="width"?b.offsetWidth:b.offsetHeight;if(j==="border")return n;i.each(f==="width"?Za:Bb,function(){j||(n-=parseFloat(i.css(b,"padding"+this))||0);if(j==="margin")n+=parseFloat(i.css(b,"margin"+this))||0;else n-=parseFloat(i.css(b,"border"+this+"Width"))||0});return n}function W(b,f,j,n){if(i.isArray(f)&&f.length)i.each(f,function(r,t){j||q.test(b)?n(b,t):W(b+"["+(typeof t==="object"||i.isArray(t)?r:"")+"]",t,j,n)});else if(!j&&f!=null&&typeof f==="object")i.isEmptyObject(f)?
+n(b,""):i.each(f,function(r,t){W(b+"["+r+"]",t,j,n)});else n(b,f)}function sa(b,f){var j={};i.each(Ma.concat.apply([],Ma.slice(0,f)),function(){j[this]=b});return j}function xb(b){if(!xa[b]){var f=i("<"+b+">").appendTo("body"),j=f.css("display");f.remove();if(j==="none"||j==="")j="block";xa[b]=j}return xa[b]}function Ya(b){return i.isWindow(b)?b:b.nodeType===9?b.defaultView||b.parentWindow:false}var V=g.document,i=function(){function b(){if(!f.isReady){try{V.documentElement.doScroll("left")}catch(z){setTimeout(b,
+1);return}f.ready()}}var f=function(z,P){return new f.fn.init(z,P)},j=g.jQuery,n=g.$,r,t=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,E=/\S/,D=/^\s+/,K=/\s+$/,fa=/\W/,T=/\d/,ka=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,va=/^[\],:{}\s]*$/,Oa=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,ga=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,Na=/(?:^|:|,)(?:\s*\[)+/g,ib=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,y=/(msie) ([\w.]+)/,J=/(mozilla)(?:.*? rv:([\w.]+))?/,M=navigator.userAgent,
+N=false,Q=[],ia,la=Object.prototype.toString,Ja=Object.prototype.hasOwnProperty,eb=Array.prototype.push,jb=Array.prototype.slice,kb=String.prototype.trim,Da=Array.prototype.indexOf,Ab={};f.fn=f.prototype={init:function(z,P){var ea,ua;if(!z)return this;if(z.nodeType){this.context=this[0]=z;this.length=1;return this}if(z==="body"&&!P&&V.body){this.context=V;this[0]=V.body;this.selector="body";this.length=1;return this}if(typeof z==="string")if((ea=t.exec(z))&&(ea[1]||!P))if(ea[1]){ua=P?P.ownerDocument||
+P:V;if(z=ka.exec(z))if(f.isPlainObject(P)){z=[V.createElement(z[1])];f.fn.attr.call(z,P,true)}else z=[ua.createElement(z[1])];else{z=f.buildFragment([ea[1]],[ua]);z=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return f.merge(this,z)}else{if((P=V.getElementById(ea[2]))&&P.parentNode){if(P.id!==ea[2])return r.find(z);this.length=1;this[0]=P}this.context=V;this.selector=z;return this}else if(!P&&!fa.test(z)){this.selector=z;this.context=V;z=V.getElementsByTagName(z);return f.merge(this,
+z)}else return!P||P.jquery?(P||r).find(z):f(P).find(z);else if(f.isFunction(z))return r.ready(z);if(z.selector!==e){this.selector=z.selector;this.context=z.context}return f.makeArray(z,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},toArray:function(){return jb.call(this,0)},get:function(z){return z==null?this.toArray():z<0?this.slice(z)[0]:this[z]},pushStack:function(z,P,ea){var ua=f();f.isArray(z)?eb.apply(ua,z):f.merge(ua,z);ua.prevObject=this;ua.context=this.context;
+if(P==="find")ua.selector=this.selector+(this.selector?" ":"")+ea;else if(P)ua.selector=this.selector+"."+P+"("+ea+")";return ua},each:function(z,P){return f.each(this,z,P)},ready:function(z){f.bindReady();if(f.isReady)z.call(V,f);else Q&&Q.push(z);return this},eq:function(z){return z===-1?this.slice(z):this.slice(z,+z+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(jb.apply(this,arguments),"slice",jb.call(arguments).join(","))},map:function(z){return this.pushStack(f.map(this,
+function(P,ea){return z.call(P,ea,P)}))},end:function(){return this.prevObject||f(null)},push:eb,sort:[].sort,splice:[].splice};f.fn.init.prototype=f.fn;f.extend=f.fn.extend=function(){var z,P,ea,ua,Pa,Ka=arguments[0]||{},Wa=1,ob=arguments.length,Cb=false;if(typeof Ka==="boolean"){Cb=Ka;Ka=arguments[1]||{};Wa=2}if(typeof Ka!=="object"&&!f.isFunction(Ka))Ka={};if(ob===Wa){Ka=this;--Wa}for(;Wa<ob;Wa++)if((z=arguments[Wa])!=null)for(P in z){ea=Ka[P];ua=z[P];if(Ka!==ua)if(Cb&&ua&&(f.isPlainObject(ua)||
+(Pa=f.isArray(ua)))){if(Pa){Pa=false;ea=ea&&f.isArray(ea)?ea:[]}else ea=ea&&f.isPlainObject(ea)?ea:{};Ka[P]=f.extend(Cb,ea,ua)}else if(ua!==e)Ka[P]=ua}return Ka};f.extend({noConflict:function(z){g.$=n;if(z)g.jQuery=j;return f},isReady:false,readyWait:1,ready:function(z){z===true&&f.readyWait--;if(!f.readyWait||z!==true&&!f.isReady){if(!V.body)return setTimeout(f.ready,1);f.isReady=true;if(!(z!==true&&--f.readyWait>0))if(Q){var P=0,ea=Q;for(Q=null;z=ea[P++];)z.call(V,f);f.fn.trigger&&f(V).trigger("ready").unbind("ready")}}},
+bindReady:function(){if(!N){N=true;if(V.readyState==="complete")return setTimeout(f.ready,1);if(V.addEventListener){V.addEventListener("DOMContentLoaded",ia,false);g.addEventListener("load",f.ready,false)}else if(V.attachEvent){V.attachEvent("onreadystatechange",ia);g.attachEvent("onload",f.ready);var z=false;try{z=g.frameElement==null}catch(P){}V.documentElement.doScroll&&z&&b()}}},isFunction:function(z){return f.type(z)==="function"},isArray:Array.isArray||function(z){return f.type(z)==="array"},
+isWindow:function(z){return z&&typeof z==="object"&&"setInterval"in z},isNaN:function(z){return z==null||!T.test(z)||isNaN(z)},type:function(z){return z==null?String(z):Ab[la.call(z)]||"object"},isPlainObject:function(z){if(!z||f.type(z)!=="object"||z.nodeType||f.isWindow(z))return false;if(z.constructor&&!Ja.call(z,"constructor")&&!Ja.call(z.constructor.prototype,"isPrototypeOf"))return false;var P;for(P in z);return P===e||Ja.call(z,P)},isEmptyObject:function(z){for(var P in z)return false;return true},
+error:function(z){throw z;},parseJSON:function(z){if(typeof z!=="string"||!z)return null;z=f.trim(z);if(va.test(z.replace(Oa,"@").replace(ga,"]").replace(Na,"")))return g.JSON&&g.JSON.parse?g.JSON.parse(z):(new Function("return "+z))();else f.error("Invalid JSON: "+z)},noop:function(){},globalEval:function(z){if(z&&E.test(z)){var P=V.getElementsByTagName("head")[0]||V.documentElement,ea=V.createElement("script");ea.type="text/javascript";if(f.support.scriptEval)ea.appendChild(V.createTextNode(z));
+else ea.text=z;P.insertBefore(ea,P.firstChild);P.removeChild(ea)}},nodeName:function(z,P){return z.nodeName&&z.nodeName.toUpperCase()===P.toUpperCase()},each:function(z,P,ea){var ua,Pa=0,Ka=z.length,Wa=Ka===e||f.isFunction(z);if(ea)if(Wa)for(ua in z){if(P.apply(z[ua],ea)===false)break}else for(;Pa<Ka;){if(P.apply(z[Pa++],ea)===false)break}else if(Wa)for(ua in z){if(P.call(z[ua],ua,z[ua])===false)break}else for(ea=z[0];Pa<Ka&&P.call(ea,Pa,ea)!==false;ea=z[++Pa]);return z},trim:kb?function(z){return z==
+null?"":kb.call(z)}:function(z){return z==null?"":z.toString().replace(D,"").replace(K,"")},makeArray:function(z,P){P=P||[];if(z!=null){var ea=f.type(z);z.length==null||ea==="string"||ea==="function"||ea==="regexp"||f.isWindow(z)?eb.call(P,z):f.merge(P,z)}return P},inArray:function(z,P){if(P.indexOf)return P.indexOf(z);for(var ea=0,ua=P.length;ea<ua;ea++)if(P[ea]===z)return ea;return-1},merge:function(z,P){var ea=z.length,ua=0;if(typeof P.length==="number")for(var Pa=P.length;ua<Pa;ua++)z[ea++]=P[ua];
+else for(;P[ua]!==e;)z[ea++]=P[ua++];z.length=ea;return z},grep:function(z,P,ea){var ua=[],Pa;ea=!!ea;for(var Ka=0,Wa=z.length;Ka<Wa;Ka++){Pa=!!P(z[Ka],Ka);ea!==Pa&&ua.push(z[Ka])}return ua},map:function(z,P,ea){for(var ua=[],Pa,Ka=0,Wa=z.length;Ka<Wa;Ka++){Pa=P(z[Ka],Ka,ea);if(Pa!=null)ua[ua.length]=Pa}return ua.concat.apply([],ua)},guid:1,proxy:function(z,P,ea){if(arguments.length===2)if(typeof P==="string"){ea=z;z=ea[P];P=e}else if(P&&!f.isFunction(P)){ea=P;P=e}if(!P&&z)P=function(){return z.apply(ea||
+this,arguments)};if(z)P.guid=z.guid=z.guid||P.guid||f.guid++;return P},access:function(z,P,ea,ua,Pa,Ka){var Wa=z.length;if(typeof P==="object"){for(var ob in P)f.access(z,ob,P[ob],ua,Pa,ea);return z}if(ea!==e){ua=!Ka&&ua&&f.isFunction(ea);for(ob=0;ob<Wa;ob++)Pa(z[ob],P,ua?ea.call(z[ob],ob,Pa(z[ob],P)):ea,Ka);return z}return Wa?Pa(z[0],P):e},now:function(){return(new Date).getTime()},uaMatch:function(z){z=z.toLowerCase();z=ib.exec(z)||s.exec(z)||y.exec(z)||z.indexOf("compatible")<0&&J.exec(z)||[];
+return{browser:z[1]||"",version:z[2]||"0"}},browser:{}});f.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(z,P){Ab["[object "+P+"]"]=P.toLowerCase()});M=f.uaMatch(M);if(M.browser){f.browser[M.browser]=true;f.browser.version=M.version}if(f.browser.webkit)f.browser.safari=true;if(Da)f.inArray=function(z,P){return Da.call(P,z)};if(!/\s/.test("\u00a0")){D=/^[\s\xA0]+/;K=/[\s\xA0]+$/}r=f(V);if(V.addEventListener)ia=function(){V.removeEventListener("DOMContentLoaded",
+ia,false);f.ready()};else if(V.attachEvent)ia=function(){if(V.readyState==="complete"){V.detachEvent("onreadystatechange",ia);f.ready()}};return g.jQuery=g.$=f}();(function(){i.support={};var b=V.documentElement,f=V.createElement("script"),j=V.createElement("div"),n="script"+i.now();j.style.display="none";j.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var r=j.getElementsByTagName("*"),t=j.getElementsByTagName("a")[0],E=V.createElement("select"),
+D=E.appendChild(V.createElement("option"));if(!(!r||!r.length||!t)){i.support={leadingWhitespace:j.firstChild.nodeType===3,tbody:!j.getElementsByTagName("tbody").length,htmlSerialize:!!j.getElementsByTagName("link").length,style:/red/.test(t.getAttribute("style")),hrefNormalized:t.getAttribute("href")==="/a",opacity:/^0.55$/.test(t.style.opacity),cssFloat:!!t.style.cssFloat,checkOn:j.getElementsByTagName("input")[0].value==="on",optSelected:D.selected,deleteExpando:true,optDisabled:false,checkClone:false,
+scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};E.disabled=true;i.support.optDisabled=!D.disabled;f.type="text/javascript";try{f.appendChild(V.createTextNode("window."+n+"=1;"))}catch(K){}b.insertBefore(f,b.firstChild);if(g[n]){i.support.scriptEval=true;delete g[n]}try{delete f.test}catch(fa){i.support.deleteExpando=false}b.removeChild(f);if(j.attachEvent&&j.fireEvent){j.attachEvent("onclick",function T(){i.support.noCloneEvent=
+false;j.detachEvent("onclick",T)});j.cloneNode(true).fireEvent("onclick")}j=V.createElement("div");j.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";b=V.createDocumentFragment();b.appendChild(j.firstChild);i.support.checkClone=b.cloneNode(true).cloneNode(true).lastChild.checked;i(function(){var T=V.createElement("div");T.style.width=T.style.paddingLeft="1px";V.body.appendChild(T);i.boxModel=i.support.boxModel=T.offsetWidth===2;if("zoom"in T.style){T.style.display="inline";T.style.zoom=
+1;i.support.inlineBlockNeedsLayout=T.offsetWidth===2;T.style.display="";T.innerHTML="<div style='width:4px;'></div>";i.support.shrinkWrapBlocks=T.offsetWidth!==2}T.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var ka=T.getElementsByTagName("td");i.support.reliableHiddenOffsets=ka[0].offsetHeight===0;ka[0].style.display="";ka[1].style.display="none";i.support.reliableHiddenOffsets=i.support.reliableHiddenOffsets&&ka[0].offsetHeight===0;T.innerHTML="";V.body.removeChild(T).style.display=
+"none"});b=function(T){var ka=V.createElement("div");T="on"+T;var va=T in ka;if(!va){ka.setAttribute(T,"return;");va=typeof ka[T]==="function"}return va};i.support.submitBubbles=b("submit");i.support.changeBubbles=b("change");b=f=j=r=t=null}})();var bb={},zb=/^(?:\{.*\}|\[.*\])$/;i.extend({cache:{},uuid:0,expando:"jQuery"+i.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(b,f,j){if(i.acceptData(b)){b=b==g?bb:b;var n=b.nodeType,r=n?b[i.expando]:
+null,t=i.cache;if(!(n&&!r&&typeof f==="string"&&j===e)){if(n)r||(b[i.expando]=r=++i.uuid);else t=b;if(typeof f==="object")if(n)t[r]=i.extend(t[r],f);else i.extend(t,f);else if(n&&!t[r])t[r]={};b=n?t[r]:t;if(j!==e)b[f]=j;return typeof f==="string"?b[f]:b}}},removeData:function(b,f){if(i.acceptData(b)){b=b==g?bb:b;var j=b.nodeType,n=j?b[i.expando]:b,r=i.cache,t=j?r[n]:n;if(f){if(t){delete t[f];j&&i.isEmptyObject(t)&&i.removeData(b)}}else if(j&&i.support.deleteExpando)delete b[i.expando];else if(b.removeAttribute)b.removeAttribute(i.expando);
+else if(j)delete r[n];else for(var E in b)delete b[E]}},acceptData:function(b){if(b.nodeName){var f=i.noData[b.nodeName.toLowerCase()];if(f)return!(f===true||b.getAttribute("classid")!==f)}return true}});i.fn.extend({data:function(b,f){var j=null;if(typeof b==="undefined"){if(this.length){var n=this[0].attributes,r;j=i.data(this[0]);for(var t=0,E=n.length;t<E;t++){r=n[t].name;if(r.indexOf("data-")===0){r=r.substr(5);l(this[0],r,j[r])}}}return j}else if(typeof b==="object")return this.each(function(){i.data(this,
+b)});var D=b.split(".");D[1]=D[1]?"."+D[1]:"";if(f===e){j=this.triggerHandler("getData"+D[1]+"!",[D[0]]);if(j===e&&this.length){j=i.data(this[0],b);j=l(this[0],b,j)}return j===e&&D[1]?this.data(D[0]):j}else return this.each(function(){var K=i(this),fa=[D[0],f];K.triggerHandler("setData"+D[1]+"!",fa);i.data(this,b,f);K.triggerHandler("changeData"+D[1]+"!",fa)})},removeData:function(b){return this.each(function(){i.removeData(this,b)})}});i.extend({queue:function(b,f,j){if(b){f=(f||"fx")+"queue";var n=
+i.data(b,f);if(!j)return n||[];if(!n||i.isArray(j))n=i.data(b,f,i.makeArray(j));else n.push(j);return n}},dequeue:function(b,f){f=f||"fx";var j=i.queue(b,f),n=j.shift();if(n==="inprogress")n=j.shift();if(n){f==="fx"&&j.unshift("inprogress");n.call(b,function(){i.dequeue(b,f)})}}});i.fn.extend({queue:function(b,f){if(typeof b!=="string"){f=b;b="fx"}if(f===e)return i.queue(this[0],b);return this.each(function(){var j=i.queue(this,b,f);b==="fx"&&j[0]!=="inprogress"&&i.dequeue(this,b)})},dequeue:function(b){return this.each(function(){i.dequeue(this,
+b)})},delay:function(b,f){b=i.fx?i.fx.speeds[b]||b:b;f=f||"fx";return this.queue(f,function(){var j=this;setTimeout(function(){i.dequeue(j,f)},b)})},clearQueue:function(b){return this.queue(b||"fx",[])}});var tb=/[\n\t]/g,sb=/\s+/,ha=/\r/g,$a=/^(?:href|src|style)$/,La=/^(?:button|input)$/i,fb=/^(?:button|input|object|select|textarea)$/i,ub=/^a(?:rea)?$/i,qb=/^(?:radio|checkbox)$/i;i.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
+colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};i.fn.extend({attr:function(b,f){return i.access(this,b,f,true,i.attr)},removeAttr:function(b){return this.each(function(){i.attr(this,b,"");this.nodeType===1&&this.removeAttribute(b)})},addClass:function(b){if(i.isFunction(b))return this.each(function(fa){var T=i(this);T.addClass(b.call(this,fa,T.attr("class")))});if(b&&typeof b==="string")for(var f=(b||"").split(sb),j=0,n=this.length;j<n;j++){var r=this[j];if(r.nodeType===
+1)if(r.className){for(var t=" "+r.className+" ",E=r.className,D=0,K=f.length;D<K;D++)if(t.indexOf(" "+f[D]+" ")<0)E+=" "+f[D];r.className=i.trim(E)}else r.className=b}return this},removeClass:function(b){if(i.isFunction(b))return this.each(function(K){var fa=i(this);fa.removeClass(b.call(this,K,fa.attr("class")))});if(b&&typeof b==="string"||b===e)for(var f=(b||"").split(sb),j=0,n=this.length;j<n;j++){var r=this[j];if(r.nodeType===1&&r.className)if(b){for(var t=(" "+r.className+" ").replace(tb," "),
+E=0,D=f.length;E<D;E++)t=t.replace(" "+f[E]+" "," ");r.className=i.trim(t)}else r.className=""}return this},toggleClass:function(b,f){var j=typeof b,n=typeof f==="boolean";if(i.isFunction(b))return this.each(function(r){var t=i(this);t.toggleClass(b.call(this,r,t.attr("class"),f),f)});return this.each(function(){if(j==="string")for(var r,t=0,E=i(this),D=f,K=b.split(sb);r=K[t++];){D=n?D:!E.hasClass(r);E[D?"addClass":"removeClass"](r)}else if(j==="undefined"||j==="boolean"){this.className&&i.data(this,
+"__className__",this.className);this.className=this.className||b===false?"":i.data(this,"__className__")||""}})},hasClass:function(b){b=" "+b+" ";for(var f=0,j=this.length;f<j;f++)if((" "+this[f].className+" ").replace(tb," ").indexOf(b)>-1)return true;return false},val:function(b){if(!arguments.length){var f=this[0];if(f){if(i.nodeName(f,"option")){var j=f.attributes.value;return!j||j.specified?f.value:f.text}if(i.nodeName(f,"select")){var n=f.selectedIndex;j=[];var r=f.options;f=f.type==="select-one";
+if(n<0)return null;var t=f?n:0;for(n=f?n+1:r.length;t<n;t++){var E=r[t];if(E.selected&&(i.support.optDisabled?!E.disabled:E.getAttribute("disabled")===null)&&(!E.parentNode.disabled||!i.nodeName(E.parentNode,"optgroup"))){b=i(E).val();if(f)return b;j.push(b)}}return j}if(qb.test(f.type)&&!i.support.checkOn)return f.getAttribute("value")===null?"on":f.value;return(f.value||"").replace(ha,"")}return e}var D=i.isFunction(b);return this.each(function(K){var fa=i(this),T=b;if(this.nodeType===1){if(D)T=
+b.call(this,K,fa.val());if(T==null)T="";else if(typeof T==="number")T+="";else if(i.isArray(T))T=i.map(T,function(va){return va==null?"":va+""});if(i.isArray(T)&&qb.test(this.type))this.checked=i.inArray(fa.val(),T)>=0;else if(i.nodeName(this,"select")){var ka=i.makeArray(T);i("option",this).each(function(){this.selected=i.inArray(i(this).val(),ka)>=0});if(!ka.length)this.selectedIndex=-1}else this.value=T}})}});i.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,
+offset:true},attr:function(b,f,j,n){if(!b||b.nodeType===3||b.nodeType===8)return e;if(n&&f in i.attrFn)return i(b)[f](j);n=b.nodeType!==1||!i.isXMLDoc(b);var r=j!==e;f=n&&i.props[f]||f;var t=$a.test(f);if((f in b||b[f]!==e)&&n&&!t){if(r){f==="type"&&La.test(b.nodeName)&&b.parentNode&&i.error("type property can't be changed");if(j===null)b.nodeType===1&&b.removeAttribute(f);else b[f]=j}if(i.nodeName(b,"form")&&b.getAttributeNode(f))return b.getAttributeNode(f).nodeValue;if(f==="tabIndex")return(f=
+b.getAttributeNode("tabIndex"))&&f.specified?f.value:fb.test(b.nodeName)||ub.test(b.nodeName)&&b.href?0:e;return b[f]}if(!i.support.style&&n&&f==="style"){if(r)b.style.cssText=""+j;return b.style.cssText}r&&b.setAttribute(f,""+j);if(!b.attributes[f]&&b.hasAttribute&&!b.hasAttribute(f))return e;b=!i.support.hrefNormalized&&n&&t?b.getAttribute(f,2):b.getAttribute(f);return b===null?e:b}});var cb=/\.(.*)$/,gb=/^(?:textarea|input|select)$/i,Ua=/\./g,hb=/ /g,vb=/[^\w\s.|`]/g,ab=function(b){return b.replace(vb,
+"\\$&")},rb={focusin:0,focusout:0};i.event={add:function(b,f,j,n){if(!(b.nodeType===3||b.nodeType===8)){if(i.isWindow(b)&&b!==g&&!b.frameElement)b=g;if(j===false)j=h;else if(!j)return;var r,t;if(j.handler){r=j;j=r.handler}if(!j.guid)j.guid=i.guid++;if(t=i.data(b)){var E=b.nodeType?"events":"__events__",D=t[E],K=t.handle;if(typeof D==="function"){K=D.handle;D=D.events}else if(!D){b.nodeType||(t[E]=t=function(){});t.events=D={}}if(!K)t.handle=K=function(){return typeof i!=="undefined"&&!i.event.triggered?
+i.event.handle.apply(K.elem,arguments):e};K.elem=b;f=f.split(" ");for(var fa=0,T;E=f[fa++];){t=r?i.extend({},r):{handler:j,data:n};if(E.indexOf(".")>-1){T=E.split(".");E=T.shift();t.namespace=T.slice(0).sort().join(".")}else{T=[];t.namespace=""}t.type=E;if(!t.guid)t.guid=j.guid;var ka=D[E],va=i.event.special[E]||{};if(!ka){ka=D[E]=[];if(!va.setup||va.setup.call(b,n,T,K)===false)if(b.addEventListener)b.addEventListener(E,K,false);else b.attachEvent&&b.attachEvent("on"+E,K)}if(va.add){va.add.call(b,
+t);if(!t.handler.guid)t.handler.guid=j.guid}ka.push(t);i.event.global[E]=true}b=null}}},global:{},remove:function(b,f,j,n){if(!(b.nodeType===3||b.nodeType===8)){if(j===false)j=h;var r,t,E=0,D,K,fa,T,ka,va,Oa=b.nodeType?"events":"__events__",ga=i.data(b),Na=ga&&ga[Oa];if(ga&&Na){if(typeof Na==="function"){ga=Na;Na=Na.events}if(f&&f.type){j=f.handler;f=f.type}if(!f||typeof f==="string"&&f.charAt(0)==="."){f=f||"";for(r in Na)i.event.remove(b,r+f)}else{for(f=f.split(" ");r=f[E++];){T=r;D=r.indexOf(".")<
+0;K=[];if(!D){K=r.split(".");r=K.shift();fa=new RegExp("(^|\\.)"+i.map(K.slice(0).sort(),ab).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(ka=Na[r])if(j){T=i.event.special[r]||{};for(t=n||0;t<ka.length;t++){va=ka[t];if(j.guid===va.guid){if(D||fa.test(va.namespace)){n==null&&ka.splice(t--,1);T.remove&&T.remove.call(b,va)}if(n!=null)break}}if(ka.length===0||n!=null&&ka.length===1){if(!T.teardown||T.teardown.call(b,K)===false)i.removeEvent(b,r,ga.handle);delete Na[r]}}else for(t=0;t<ka.length;t++){va=ka[t];if(D||
+fa.test(va.namespace)){i.event.remove(b,T,va.handler,t);ka.splice(t--,1)}}}if(i.isEmptyObject(Na)){if(f=ga.handle)f.elem=null;delete ga.events;delete ga.handle;if(typeof ga==="function")i.removeData(b,Oa);else i.isEmptyObject(ga)&&i.removeData(b)}}}}},trigger:function(b,f,j,n){var r=b.type||b;if(!n){b=typeof b==="object"?b[i.expando]?b:i.extend(i.Event(r),b):i.Event(r);if(r.indexOf("!")>=0){b.type=r=r.slice(0,-1);b.exclusive=true}if(!j){b.stopPropagation();i.event.global[r]&&i.each(i.cache,function(){this.events&&
+this.events[r]&&i.event.trigger(b,f,this.handle.elem)})}if(!j||j.nodeType===3||j.nodeType===8)return e;b.result=e;b.target=j;f=i.makeArray(f);f.unshift(b)}b.currentTarget=j;(n=j.nodeType?i.data(j,"handle"):(i.data(j,"__events__")||{}).handle)&&n.apply(j,f);n=j.parentNode||j.ownerDocument;try{if(!(j&&j.nodeName&&i.noData[j.nodeName.toLowerCase()]))if(j["on"+r]&&j["on"+r].apply(j,f)===false){b.result=false;b.preventDefault()}}catch(t){}if(!b.isPropagationStopped()&&n)i.event.trigger(b,f,n,true);else if(!b.isDefaultPrevented()){var E;
+n=b.target;var D=r.replace(cb,""),K=i.nodeName(n,"a")&&D==="click",fa=i.event.special[D]||{};if((!fa._default||fa._default.call(j,b)===false)&&!K&&!(n&&n.nodeName&&i.noData[n.nodeName.toLowerCase()])){try{if(n[D]){if(E=n["on"+D])n["on"+D]=null;i.event.triggered=true;n[D]()}}catch(T){}if(E)n["on"+D]=E;i.event.triggered=false}}},handle:function(b){var f,j,n,r;j=[];var t=i.makeArray(arguments);b=t[0]=i.event.fix(b||g.event);b.currentTarget=this;f=b.type.indexOf(".")<0&&!b.exclusive;if(!f){n=b.type.split(".");
+b.type=n.shift();j=n.slice(0).sort();n=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")}b.namespace=b.namespace||j.join(".");r=i.data(this,this.nodeType?"events":"__events__");if(typeof r==="function")r=r.events;j=(r||{})[b.type];if(r&&j){j=j.slice(0);r=0;for(var E=j.length;r<E;r++){var D=j[r];if(f||n.test(D.namespace)){b.handler=D.handler;b.data=D.data;b.handleObj=D;D=D.handler.apply(this,t);if(D!==e){b.result=D;if(D===false){b.preventDefault();b.stopPropagation()}}if(b.isImmediatePropagationStopped())break}}}return b.result},
+props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(b){if(b[i.expando])return b;var f=b;b=i.Event(f);for(var j=this.props.length,n;j;){n=this.props[--j];b[n]=f[n]}if(!b.target)b.target=b.srcElement||V;
+if(b.target.nodeType===3)b.target=b.target.parentNode;if(!b.relatedTarget&&b.fromElement)b.relatedTarget=b.fromElement===b.target?b.toElement:b.fromElement;if(b.pageX==null&&b.clientX!=null){f=V.documentElement;j=V.body;b.pageX=b.clientX+(f&&f.scrollLeft||j&&j.scrollLeft||0)-(f&&f.clientLeft||j&&j.clientLeft||0);b.pageY=b.clientY+(f&&f.scrollTop||j&&j.scrollTop||0)-(f&&f.clientTop||j&&j.clientTop||0)}if(b.which==null&&(b.charCode!=null||b.keyCode!=null))b.which=b.charCode!=null?b.charCode:b.keyCode;
+if(!b.metaKey&&b.ctrlKey)b.metaKey=b.ctrlKey;if(!b.which&&b.button!==e)b.which=b.button&1?1:b.button&2?3:b.button&4?2:0;return b},guid:1E8,proxy:i.proxy,special:{ready:{setup:i.bindReady,teardown:i.noop},live:{add:function(b){i.event.add(this,F(b.origType,b.selector),i.extend({},b,{handler:w,guid:b.handler.guid}))},remove:function(b){i.event.remove(this,F(b.origType,b.selector),b)}},beforeunload:{setup:function(b,f,j){if(i.isWindow(this))this.onbeforeunload=j},teardown:function(b,f){if(this.onbeforeunload===
+f)this.onbeforeunload=null}}}};i.removeEvent=V.removeEventListener?function(b,f,j){b.removeEventListener&&b.removeEventListener(f,j,false)}:function(b,f,j){b.detachEvent&&b.detachEvent("on"+f,j)};i.Event=function(b){if(!this.preventDefault)return new i.Event(b);if(b&&b.type){this.originalEvent=b;this.type=b.type}else this.type=b;this.timeStamp=i.now();this[i.expando]=true};i.Event.prototype={preventDefault:function(){this.isDefaultPrevented=o;var b=this.originalEvent;if(b)if(b.preventDefault)b.preventDefault();
+else b.returnValue=false},stopPropagation:function(){this.isPropagationStopped=o;var b=this.originalEvent;if(b){b.stopPropagation&&b.stopPropagation();b.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=o;this.stopPropagation()},isDefaultPrevented:h,isPropagationStopped:h,isImmediatePropagationStopped:h};var wb=function(b){var f=b.relatedTarget;try{for(;f&&f!==this;)f=f.parentNode;if(f!==this){b.type=b.data;i.event.handle.apply(this,arguments)}}catch(j){}},
+db=function(b){b.type=b.data;i.event.handle.apply(this,arguments)};i.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(b,f){i.event.special[b]={setup:function(j){i.event.add(this,f,j&&j.selector?db:wb,b)},teardown:function(j){i.event.remove(this,f,j&&j.selector?db:wb)}}});if(!i.support.submitBubbles)i.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!=="form"){i.event.add(this,"click.specialSubmit",function(b){var f=b.target,j=f.type;if((j==="submit"||j==="image")&&
+i(f).closest("form").length){b.liveFired=e;return m("submit",this,arguments)}});i.event.add(this,"keypress.specialSubmit",function(b){var f=b.target,j=f.type;if((j==="text"||j==="password")&&i(f).closest("form").length&&b.keyCode===13){b.liveFired=e;return m("submit",this,arguments)}})}else return false},teardown:function(){i.event.remove(this,".specialSubmit")}};if(!i.support.changeBubbles){var Y,G=function(b){var f=b.type,j=b.value;if(f==="radio"||f==="checkbox")j=b.checked;else if(f==="select-multiple")j=
+b.selectedIndex>-1?i.map(b.options,function(n){return n.selected}).join("-"):"";else if(b.nodeName.toLowerCase()==="select")j=b.selectedIndex;return j},L=function(b,f){var j=b.target,n,r;if(!(!gb.test(j.nodeName)||j.readOnly)){n=i.data(j,"_change_data");r=G(j);if(b.type!=="focusout"||j.type!=="radio")i.data(j,"_change_data",r);if(!(n===e||r===n))if(n!=null||r){b.type="change";b.liveFired=e;return i.event.trigger(b,f,j)}}};i.event.special.change={filters:{focusout:L,beforedeactivate:L,click:function(b){var f=
+b.target,j=f.type;if(j==="radio"||j==="checkbox"||f.nodeName.toLowerCase()==="select")return L.call(this,b)},keydown:function(b){var f=b.target,j=f.type;if(b.keyCode===13&&f.nodeName.toLowerCase()!=="textarea"||b.keyCode===32&&(j==="checkbox"||j==="radio")||j==="select-multiple")return L.call(this,b)},beforeactivate:function(b){b=b.target;i.data(b,"_change_data",G(b))}},setup:function(){if(this.type==="file")return false;for(var b in Y)i.event.add(this,b+".specialChange",Y[b]);return gb.test(this.nodeName)},
+teardown:function(){i.event.remove(this,".specialChange");return gb.test(this.nodeName)}};Y=i.event.special.change.filters;Y.focus=Y.beforeactivate}V.addEventListener&&i.each({focus:"focusin",blur:"focusout"},function(b,f){function j(n){n=i.event.fix(n);n.type=f;return i.event.trigger(n,null,n.target)}i.event.special[f]={setup:function(){rb[f]++===0&&V.addEventListener(b,j,true)},teardown:function(){--rb[f]===0&&V.removeEventListener(b,j,true)}}});i.each(["bind","one"],function(b,f){i.fn[f]=function(j,
+n,r){if(typeof j==="object"){for(var t in j)this[f](t,n,j[t],r);return this}if(i.isFunction(n)||n===false){r=n;n=e}var E=f==="one"?i.proxy(r,function(K){i(this).unbind(K,E);return r.apply(this,arguments)}):r;if(j==="unload"&&f!=="one")this.one(j,n,r);else{t=0;for(var D=this.length;t<D;t++)i.event.add(this[t],j,E,n)}return this}});i.fn.extend({unbind:function(b,f){if(typeof b==="object"&&!b.preventDefault)for(var j in b)this.unbind(j,b[j]);else{j=0;for(var n=this.length;j<n;j++)i.event.remove(this[j],
+b,f)}return this},delegate:function(b,f,j,n){return this.live(f,j,n,b)},undelegate:function(b,f,j){return arguments.length===0?this.unbind("live"):this.die(f,null,j,b)},trigger:function(b,f){return this.each(function(){i.event.trigger(b,f,this)})},triggerHandler:function(b,f){if(this[0]){b=i.Event(b);b.preventDefault();b.stopPropagation();i.event.trigger(b,f,this[0]);return b.result}},toggle:function(b){for(var f=arguments,j=1;j<f.length;)i.proxy(b,f[j++]);return this.click(i.proxy(b,function(n){var r=
+(i.data(this,"lastToggle"+b.guid)||0)%j;i.data(this,"lastToggle"+b.guid,r+1);n.preventDefault();return f[r].apply(this,arguments)||false}))},hover:function(b,f){return this.mouseenter(b).mouseleave(f||b)}});var O={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};i.each(["live","die"],function(b,f){i.fn[f]=function(j,n,r,t){var E,D=0,K,fa,T=t||this.selector;t=t?this:i(this.context);if(typeof j==="object"&&!j.preventDefault){for(E in j)t[f](E,n,j[E],T);return this}if(i.isFunction(n)){r=
+n;n=e}for(j=(j||"").split(" ");(E=j[D++])!=null;){K=cb.exec(E);fa="";if(K){fa=K[0];E=E.replace(cb,"")}if(E==="hover")j.push("mouseenter"+fa,"mouseleave"+fa);else{K=E;if(E==="focus"||E==="blur"){j.push(O[E]+fa);E+=fa}else E=(O[E]||E)+fa;if(f==="live"){fa=0;for(var ka=t.length;fa<ka;fa++)i.event.add(t[fa],"live."+F(E,T),{data:n,selector:T,handler:r,origType:E,origHandler:r,preType:K})}else t.unbind("live."+F(E,T),r)}}return this}});i.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".split(" "),
+function(b,f){i.fn[f]=function(j,n){if(n==null){n=j;j=null}return arguments.length>0?this.bind(f,j,n):this.trigger(f)};if(i.attrFn)i.attrFn[f]=true});g.attachEvent&&!g.addEventListener&&i(g).bind("unload",function(){for(var b in i.cache)if(i.cache[b].handle)try{i.event.remove(i.cache[b].handle.elem)}catch(f){}});(function(){function b(s,y,J,M,N,Q){N=0;for(var ia=M.length;N<ia;N++){var la=M[N];if(la){var Ja=false;for(la=la[s];la;){if(la.sizcache===J){Ja=M[la.sizset];break}if(la.nodeType===1&&!Q){la.sizcache=
+J;la.sizset=N}if(la.nodeName.toLowerCase()===y){Ja=la;break}la=la[s]}M[N]=Ja}}}function f(s,y,J,M,N,Q){N=0;for(var ia=M.length;N<ia;N++){var la=M[N];if(la){var Ja=false;for(la=la[s];la;){if(la.sizcache===J){Ja=M[la.sizset];break}if(la.nodeType===1){if(!Q){la.sizcache=J;la.sizset=N}if(typeof y!=="string"){if(la===y){Ja=true;break}}else if(D.filter(y,[la]).length>0){Ja=la;break}}la=la[s]}M[N]=Ja}}}var j=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+n=0,r=Object.prototype.toString,t=false,E=true;[0,0].sort(function(){E=false;return 0});var D=function(s,y,J,M){J=J||[];var N=y=y||V;if(y.nodeType!==1&&y.nodeType!==9)return[];if(!s||typeof s!=="string")return J;var Q,ia,la,Ja,eb,jb=true,kb=D.isXML(y),Da=[],Ab=s;do{j.exec("");if(Q=j.exec(Ab)){Ab=Q[3];Da.push(Q[1]);if(Q[2]){Ja=Q[3];break}}}while(Q);if(Da.length>1&&fa.exec(s))if(Da.length===2&&K.relative[Da[0]])ia=ib(Da[0]+Da[1],y);else for(ia=K.relative[Da[0]]?[y]:D(Da.shift(),y);Da.length;){s=Da.shift();
+if(K.relative[s])s+=Da.shift();ia=ib(s,ia)}else{if(!M&&Da.length>1&&y.nodeType===9&&!kb&&K.match.ID.test(Da[0])&&!K.match.ID.test(Da[Da.length-1])){Q=D.find(Da.shift(),y,kb);y=Q.expr?D.filter(Q.expr,Q.set)[0]:Q.set[0]}if(y){Q=M?{expr:Da.pop(),set:va(M)}:D.find(Da.pop(),Da.length===1&&(Da[0]==="~"||Da[0]==="+")&&y.parentNode?y.parentNode:y,kb);ia=Q.expr?D.filter(Q.expr,Q.set):Q.set;if(Da.length>0)la=va(ia);else jb=false;for(;Da.length;){Q=eb=Da.pop();if(K.relative[eb])Q=Da.pop();else eb="";if(Q==null)Q=
+y;K.relative[eb](la,Q,kb)}}else la=[]}la||(la=ia);la||D.error(eb||s);if(r.call(la)==="[object Array]")if(jb)if(y&&y.nodeType===1)for(s=0;la[s]!=null;s++){if(la[s]&&(la[s]===true||la[s].nodeType===1&&D.contains(y,la[s])))J.push(ia[s])}else for(s=0;la[s]!=null;s++)la[s]&&la[s].nodeType===1&&J.push(ia[s]);else J.push.apply(J,la);else va(la,J);if(Ja){D(Ja,N,J,M);D.uniqueSort(J)}return J};D.uniqueSort=function(s){if(ga){t=E;s.sort(ga);if(t)for(var y=1;y<s.length;y++)s[y]===s[y-1]&&s.splice(y--,1)}return s};
+D.matches=function(s,y){return D(s,null,null,y)};D.matchesSelector=function(s,y){return D(y,null,null,[s]).length>0};D.find=function(s,y,J){var M;if(!s)return[];for(var N=0,Q=K.order.length;N<Q;N++){var ia,la=K.order[N];if(ia=K.leftMatch[la].exec(s)){var Ja=ia[1];ia.splice(1,1);if(Ja.substr(Ja.length-1)!=="\\"){ia[1]=(ia[1]||"").replace(/\\/g,"");M=K.find[la](ia,y,J);if(M!=null){s=s.replace(K.match[la],"");break}}}}M||(M=y.getElementsByTagName("*"));return{set:M,expr:s}};D.filter=function(s,y,J,M){for(var N,
+Q,ia=s,la=[],Ja=y,eb=y&&y[0]&&D.isXML(y[0]);s&&y.length;){for(var jb in K.filter)if((N=K.leftMatch[jb].exec(s))!=null&&N[2]){var kb,Da,Ab=K.filter[jb];Da=N[1];Q=false;N.splice(1,1);if(Da.substr(Da.length-1)!=="\\"){if(Ja===la)la=[];if(K.preFilter[jb])if(N=K.preFilter[jb](N,Ja,J,la,M,eb)){if(N===true)continue}else Q=kb=true;if(N)for(var z=0;(Da=Ja[z])!=null;z++)if(Da){kb=Ab(Da,N,z,Ja);var P=M^!!kb;if(J&&kb!=null)if(P)Q=true;else Ja[z]=false;else if(P){la.push(Da);Q=true}}if(kb!==e){J||(Ja=la);s=s.replace(K.match[jb],
+"");if(!Q)return[];break}}}if(s===ia)if(Q==null)D.error(s);else break;ia=s}return Ja};D.error=function(s){throw"Syntax error, unrecognized expression: "+s;};var K=D.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|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
+POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(s){return s.getAttribute("href")}},relative:{"+":function(s,y){var J=typeof y==="string",M=J&&!/\W/.test(y);J=J&&!M;if(M)y=y.toLowerCase();M=0;for(var N=s.length,Q;M<N;M++)if(Q=s[M]){for(;(Q=Q.previousSibling)&&Q.nodeType!==1;);s[M]=J||Q&&Q.nodeName.toLowerCase()===
+y?Q||false:Q===y}J&&D.filter(y,s,true)},">":function(s,y){var J,M=typeof y==="string",N=0,Q=s.length;if(M&&!/\W/.test(y))for(y=y.toLowerCase();N<Q;N++){if(J=s[N]){J=J.parentNode;s[N]=J.nodeName.toLowerCase()===y?J:false}}else{for(;N<Q;N++)if(J=s[N])s[N]=M?J.parentNode:J.parentNode===y;M&&D.filter(y,s,true)}},"":function(s,y,J){var M,N=n++,Q=f;if(typeof y==="string"&&!/\W/.test(y)){M=y=y.toLowerCase();Q=b}Q("parentNode",y,N,s,M,J)},"~":function(s,y,J){var M,N=n++,Q=f;if(typeof y==="string"&&!/\W/.test(y)){M=
+y=y.toLowerCase();Q=b}Q("previousSibling",y,N,s,M,J)}},find:{ID:function(s,y,J){if(typeof y.getElementById!=="undefined"&&!J)return(s=y.getElementById(s[1]))&&s.parentNode?[s]:[]},NAME:function(s,y){if(typeof y.getElementsByName!=="undefined"){var J=[];y=y.getElementsByName(s[1]);for(var M=0,N=y.length;M<N;M++)y[M].getAttribute("name")===s[1]&&J.push(y[M]);return J.length===0?null:J}},TAG:function(s,y){return y.getElementsByTagName(s[1])}},preFilter:{CLASS:function(s,y,J,M,N,Q){s=" "+s[1].replace(/\\/g,
+"")+" ";if(Q)return s;Q=0;for(var ia;(ia=y[Q])!=null;Q++)if(ia)if(N^(ia.className&&(" "+ia.className+" ").replace(/[\t\n]/g," ").indexOf(s)>=0))J||M.push(ia);else if(J)y[Q]=false;return false},ID:function(s){return s[1].replace(/\\/g,"")},TAG:function(s){return s[1].toLowerCase()},CHILD:function(s){if(s[1]==="nth"){var y=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(s[2]==="even"&&"2n"||s[2]==="odd"&&"2n+1"||!/\D/.test(s[2])&&"0n+"+s[2]||s[2]);s[2]=y[1]+(y[2]||1)-0;s[3]=y[3]-0}s[0]=n++;return s},ATTR:function(s,
+y,J,M,N,Q){y=s[1].replace(/\\/g,"");if(!Q&&K.attrMap[y])s[1]=K.attrMap[y];if(s[2]==="~=")s[4]=" "+s[4]+" ";return s},PSEUDO:function(s,y,J,M,N){if(s[1]==="not")if((j.exec(s[3])||"").length>1||/^\w/.test(s[3]))s[3]=D(s[3],null,null,y);else{s=D.filter(s[3],y,J,true^N);J||M.push.apply(M,s);return false}else if(K.match.POS.test(s[0])||K.match.CHILD.test(s[0]))return true;return s},POS:function(s){s.unshift(true);return s}},filters:{enabled:function(s){return s.disabled===false&&s.type!=="hidden"},disabled:function(s){return s.disabled===
+true},checked:function(s){return s.checked===true},selected:function(s){return s.selected===true},parent:function(s){return!!s.firstChild},empty:function(s){return!s.firstChild},has:function(s,y,J){return!!D(J[3],s).length},header:function(s){return/h\d/i.test(s.nodeName)},text:function(s){return"text"===s.type},radio:function(s){return"radio"===s.type},checkbox:function(s){return"checkbox"===s.type},file:function(s){return"file"===s.type},password:function(s){return"password"===s.type},submit:function(s){return"submit"===
+s.type},image:function(s){return"image"===s.type},reset:function(s){return"reset"===s.type},button:function(s){return"button"===s.type||s.nodeName.toLowerCase()==="button"},input:function(s){return/input|select|textarea|button/i.test(s.nodeName)}},setFilters:{first:function(s,y){return y===0},last:function(s,y,J,M){return y===M.length-1},even:function(s,y){return y%2===0},odd:function(s,y){return y%2===1},lt:function(s,y,J){return y<J[3]-0},gt:function(s,y,J){return y>J[3]-0},nth:function(s,y,J){return J[3]-
+0===y},eq:function(s,y,J){return J[3]-0===y}},filter:{PSEUDO:function(s,y,J,M){var N=y[1],Q=K.filters[N];if(Q)return Q(s,J,y,M);else if(N==="contains")return(s.textContent||s.innerText||D.getText([s])||"").indexOf(y[3])>=0;else if(N==="not"){y=y[3];J=0;for(M=y.length;J<M;J++)if(y[J]===s)return false;return true}else D.error("Syntax error, unrecognized expression: "+N)},CHILD:function(s,y){var J=y[1],M=s;switch(J){case "only":case "first":for(;M=M.previousSibling;)if(M.nodeType===1)return false;if(J===
+"first")return true;M=s;case "last":for(;M=M.nextSibling;)if(M.nodeType===1)return false;return true;case "nth":J=y[2];var N=y[3];if(J===1&&N===0)return true;y=y[0];var Q=s.parentNode;if(Q&&(Q.sizcache!==y||!s.nodeIndex)){var ia=0;for(M=Q.firstChild;M;M=M.nextSibling)if(M.nodeType===1)M.nodeIndex=++ia;Q.sizcache=y}s=s.nodeIndex-N;return J===0?s===0:s%J===0&&s/J>=0}},ID:function(s,y){return s.nodeType===1&&s.getAttribute("id")===y},TAG:function(s,y){return y==="*"&&s.nodeType===1||s.nodeName.toLowerCase()===
+y},CLASS:function(s,y){return(" "+(s.className||s.getAttribute("class"))+" ").indexOf(y)>-1},ATTR:function(s,y){var J=y[1];s=K.attrHandle[J]?K.attrHandle[J](s):s[J]!=null?s[J]:s.getAttribute(J);J=s+"";var M=y[2];y=y[4];return s==null?M==="!=":M==="="?J===y:M==="*="?J.indexOf(y)>=0:M==="~="?(" "+J+" ").indexOf(y)>=0:!y?J&&s!==false:M==="!="?J!==y:M==="^="?J.indexOf(y)===0:M==="$="?J.substr(J.length-y.length)===y:M==="|="?J===y||J.substr(0,y.length+1)===y+"-":false},POS:function(s,y,J,M){var N=K.setFilters[y[2]];
+if(N)return N(s,J,y,M)}}},fa=K.match.POS,T=function(s,y){return"\\"+(y-0+1)};for(var ka in K.match){K.match[ka]=new RegExp(K.match[ka].source+/(?![^\[]*\])(?![^\(]*\))/.source);K.leftMatch[ka]=new RegExp(/(^(?:.|\r|\n)*?)/.source+K.match[ka].source.replace(/\\(\d+)/g,T))}var va=function(s,y){s=Array.prototype.slice.call(s,0);if(y){y.push.apply(y,s);return y}return s};try{Array.prototype.slice.call(V.documentElement.childNodes,0)}catch(Oa){va=function(s,y){var J=0;y=y||[];if(r.call(s)==="[object Array]")Array.prototype.push.apply(y,
+s);else if(typeof s.length==="number")for(var M=s.length;J<M;J++)y.push(s[J]);else for(;s[J];J++)y.push(s[J]);return y}}var ga,Na;if(V.documentElement.compareDocumentPosition)ga=function(s,y){if(s===y){t=true;return 0}if(!s.compareDocumentPosition||!y.compareDocumentPosition)return s.compareDocumentPosition?-1:1;return s.compareDocumentPosition(y)&4?-1:1};else{ga=function(s,y){var J,M,N=[],Q=[];J=s.parentNode;M=y.parentNode;var ia=J;if(s===y){t=true;return 0}else if(J===M)return Na(s,y);else if(J){if(!M)return 1}else return-1;
+for(;ia;){N.unshift(ia);ia=ia.parentNode}for(ia=M;ia;){Q.unshift(ia);ia=ia.parentNode}J=N.length;M=Q.length;for(ia=0;ia<J&&ia<M;ia++)if(N[ia]!==Q[ia])return Na(N[ia],Q[ia]);return ia===J?Na(s,Q[ia],-1):Na(N[ia],y,1)};Na=function(s,y,J){if(s===y)return J;for(s=s.nextSibling;s;){if(s===y)return-1;s=s.nextSibling}return 1}}D.getText=function(s){for(var y="",J,M=0;s[M];M++){J=s[M];if(J.nodeType===3||J.nodeType===4)y+=J.nodeValue;else if(J.nodeType!==8)y+=D.getText(J.childNodes)}return y};(function(){var s=
+V.createElement("div"),y="script"+(new Date).getTime(),J=V.documentElement;s.innerHTML="<a name='"+y+"'/>";J.insertBefore(s,J.firstChild);if(V.getElementById(y)){K.find.ID=function(M,N,Q){if(typeof N.getElementById!=="undefined"&&!Q)return(N=N.getElementById(M[1]))?N.id===M[1]||typeof N.getAttributeNode!=="undefined"&&N.getAttributeNode("id").nodeValue===M[1]?[N]:e:[]};K.filter.ID=function(M,N){var Q=typeof M.getAttributeNode!=="undefined"&&M.getAttributeNode("id");return M.nodeType===1&&Q&&Q.nodeValue===
+N}}J.removeChild(s);J=s=null})();(function(){var s=V.createElement("div");s.appendChild(V.createComment(""));if(s.getElementsByTagName("*").length>0)K.find.TAG=function(y,J){J=J.getElementsByTagName(y[1]);if(y[1]==="*"){y=[];for(var M=0;J[M];M++)J[M].nodeType===1&&y.push(J[M]);J=y}return J};s.innerHTML="<a href='#'></a>";if(s.firstChild&&typeof s.firstChild.getAttribute!=="undefined"&&s.firstChild.getAttribute("href")!=="#")K.attrHandle.href=function(y){return y.getAttribute("href",2)};s=null})();
+V.querySelectorAll&&function(){var s=D,y=V.createElement("div");y.innerHTML="<p class='TEST'></p>";if(!(y.querySelectorAll&&y.querySelectorAll(".TEST").length===0)){D=function(M,N,Q,ia){N=N||V;M=M.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!ia&&!D.isXML(N))if(N.nodeType===9)try{return va(N.querySelectorAll(M),Q)}catch(la){}else if(N.nodeType===1&&N.nodeName.toLowerCase()!=="object"){var Ja=N.getAttribute("id"),eb=Ja||"__sizzle__";Ja||N.setAttribute("id",eb);try{return va(N.querySelectorAll("#"+
+eb+" "+M),Q)}catch(jb){}finally{Ja||N.removeAttribute("id")}}return s(M,N,Q,ia)};for(var J in s)D[J]=s[J];y=null}}();(function(){var s=V.documentElement,y=s.matchesSelector||s.mozMatchesSelector||s.webkitMatchesSelector||s.msMatchesSelector,J=false;try{y.call(V.documentElement,"[test!='']:sizzle")}catch(M){J=true}if(y)D.matchesSelector=function(N,Q){Q=Q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!D.isXML(N))try{if(J||!K.match.PSEUDO.test(Q)&&!/!=/.test(Q))return y.call(N,Q)}catch(ia){}return D(Q,
+null,null,[N]).length>0}})();(function(){var s=V.createElement("div");s.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!s.getElementsByClassName||s.getElementsByClassName("e").length===0)){s.lastChild.className="e";if(s.getElementsByClassName("e").length!==1){K.order.splice(1,0,"CLASS");K.find.CLASS=function(y,J,M){if(typeof J.getElementsByClassName!=="undefined"&&!M)return J.getElementsByClassName(y[1])};s=null}}})();D.contains=V.documentElement.contains?function(s,y){return s!==
+y&&(s.contains?s.contains(y):true)}:V.documentElement.compareDocumentPosition?function(s,y){return!!(s.compareDocumentPosition(y)&16)}:function(){return false};D.isXML=function(s){return(s=(s?s.ownerDocument||s:0).documentElement)?s.nodeName!=="HTML":false};var ib=function(s,y){var J,M=[],N="";for(y=y.nodeType?[y]:y;J=K.match.PSEUDO.exec(s);){N+=J[0];s=s.replace(K.match.PSEUDO,"")}s=K.relative[s]?s+"*":s;J=0;for(var Q=y.length;J<Q;J++)D(s,y[J],M);return D.filter(N,M)};i.find=D;i.expr=D.selectors;
+i.expr[":"]=i.expr.filters;i.unique=D.uniqueSort;i.text=D.getText;i.isXMLDoc=D.isXML;i.contains=D.contains})();var da=/Until$/,U=/^(?:parents|prevUntil|prevAll)/,qa=/,/,na=/^.[^:#\[\.,]*$/,wa=Array.prototype.slice,Ca=i.expr.match.POS;i.fn.extend({find:function(b){for(var f=this.pushStack("","find",b),j=0,n=0,r=this.length;n<r;n++){j=f.length;i.find(b,this[n],f);if(n>0)for(var t=j;t<f.length;t++)for(var E=0;E<j;E++)if(f[E]===f[t]){f.splice(t--,1);break}}return f},has:function(b){var f=i(b);return this.filter(function(){for(var j=
+0,n=f.length;j<n;j++)if(i.contains(this,f[j]))return true})},not:function(b){return this.pushStack(c(this,b,false),"not",b)},filter:function(b){return this.pushStack(c(this,b,true),"filter",b)},is:function(b){return!!b&&i.filter(b,this).length>0},closest:function(b,f){var j=[],n,r,t=this[0];if(i.isArray(b)){var E,D={},K=1;if(t&&b.length){n=0;for(r=b.length;n<r;n++){E=b[n];D[E]||(D[E]=i.expr.match.POS.test(E)?i(E,f||this.context):E)}for(;t&&t.ownerDocument&&t!==f;){for(E in D){b=D[E];if(b.jquery?b.index(t)>
+-1:i(t).is(b))j.push({selector:E,elem:t,level:K})}t=t.parentNode;K++}}return j}E=Ca.test(b)?i(b,f||this.context):null;n=0;for(r=this.length;n<r;n++)for(t=this[n];t;)if(E?E.index(t)>-1:i.find.matchesSelector(t,b)){j.push(t);break}else{t=t.parentNode;if(!t||!t.ownerDocument||t===f)break}j=j.length>1?i.unique(j):j;return this.pushStack(j,"closest",b)},index:function(b){if(!b||typeof b==="string")return i.inArray(this[0],b?i(b):this.parent().children());return i.inArray(b.jquery?b[0]:b,this)},add:function(b,
+f){b=typeof b==="string"?i(b,f||this.context):i.makeArray(b);f=i.merge(this.get(),b);return this.pushStack(A(b[0])||A(f[0])?f:i.unique(f))},andSelf:function(){return this.add(this.prevObject)}});i.each({parent:function(b){return(b=b.parentNode)&&b.nodeType!==11?b:null},parents:function(b){return i.dir(b,"parentNode")},parentsUntil:function(b,f,j){return i.dir(b,"parentNode",j)},next:function(b){return i.nth(b,2,"nextSibling")},prev:function(b){return i.nth(b,2,"previousSibling")},nextAll:function(b){return i.dir(b,
+"nextSibling")},prevAll:function(b){return i.dir(b,"previousSibling")},nextUntil:function(b,f,j){return i.dir(b,"nextSibling",j)},prevUntil:function(b,f,j){return i.dir(b,"previousSibling",j)},siblings:function(b){return i.sibling(b.parentNode.firstChild,b)},children:function(b){return i.sibling(b.firstChild)},contents:function(b){return i.nodeName(b,"iframe")?b.contentDocument||b.contentWindow.document:i.makeArray(b.childNodes)}},function(b,f){i.fn[b]=function(j,n){var r=i.map(this,f,j);da.test(b)||
+(n=j);if(n&&typeof n==="string")r=i.filter(n,r);r=this.length>1?i.unique(r):r;if((this.length>1||qa.test(n))&&U.test(b))r=r.reverse();return this.pushStack(r,b,wa.call(arguments).join(","))}});i.extend({filter:function(b,f,j){if(j)b=":not("+b+")";return f.length===1?i.find.matchesSelector(f[0],b)?[f[0]]:[]:i.find.matches(b,f)},dir:function(b,f,j){var n=[];for(b=b[f];b&&b.nodeType!==9&&(j===e||b.nodeType!==1||!i(b).is(j));){b.nodeType===1&&n.push(b);b=b[f]}return n},nth:function(b,f,j){f=f||1;for(var n=
+0;b;b=b[j])if(b.nodeType===1&&++n===f)break;return b},sibling:function(b,f){for(var j=[];b;b=b.nextSibling)b.nodeType===1&&b!==f&&j.push(b);return j}});var Aa=/ jQuery\d+="(?:\d+|null)"/g,Ba=/^\s+/,Ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ja=/<([\w:]+)/,ra=/<tbody/i,pa=/<|&#?\w+;/,za=/<(?:script|object|embed|option|style)/i,aa=/checked\s*(?:[^=]|=\s*.checked.)/i,R=/\=([^="'>\s]+\/)>/g,ba={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,"",""]};ba.optgroup=ba.option;ba.tbody=ba.tfoot=ba.colgroup=ba.caption=ba.thead;ba.th=ba.td;if(!i.support.htmlSerialize)ba._default=[1,"div<div>","</div>"];i.fn.extend({text:function(b){if(i.isFunction(b))return this.each(function(f){var j=i(this);j.text(b.call(this,
+f,j.text()))});if(typeof b!=="object"&&b!==e)return this.empty().append((this[0]&&this[0].ownerDocument||V).createTextNode(b));return i.text(this)},wrapAll:function(b){if(i.isFunction(b))return this.each(function(j){i(this).wrapAll(b.call(this,j))});if(this[0]){var f=i(b,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&f.insertBefore(this[0]);f.map(function(){for(var j=this;j.firstChild&&j.firstChild.nodeType===1;)j=j.firstChild;return j}).append(this)}return this},wrapInner:function(b){if(i.isFunction(b))return this.each(function(f){i(this).wrapInner(b.call(this,
+f))});return this.each(function(){var f=i(this),j=f.contents();j.length?j.wrapAll(b):f.append(b)})},wrap:function(b){return this.each(function(){i(this).wrapAll(b)})},unwrap:function(){return this.parent().each(function(){i.nodeName(this,"body")||i(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(b){this.nodeType===1&&this.appendChild(b)})},prepend:function(){return this.domManip(arguments,true,function(b){this.nodeType===1&&this.insertBefore(b,
+this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(f){this.parentNode.insertBefore(f,this)});else if(arguments.length){var b=i(arguments[0]);b.push.apply(b,this.toArray());return this.pushStack(b,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(f){this.parentNode.insertBefore(f,this.nextSibling)});else if(arguments.length){var b=this.pushStack(this,"after",arguments);
+b.push.apply(b,i(arguments[0]).toArray());return b}},remove:function(b,f){for(var j=0,n;(n=this[j])!=null;j++)if(!b||i.filter(b,[n]).length){if(!f&&n.nodeType===1){i.cleanData(n.getElementsByTagName("*"));i.cleanData([n])}n.parentNode&&n.parentNode.removeChild(n)}return this},empty:function(){for(var b=0,f;(f=this[b])!=null;b++)for(f.nodeType===1&&i.cleanData(f.getElementsByTagName("*"));f.firstChild;)f.removeChild(f.firstChild);return this},clone:function(b){var f=this.map(function(){if(!i.support.noCloneEvent&&
+!i.isXMLDoc(this)){var j=this.outerHTML,n=this.ownerDocument;if(!j){j=n.createElement("div");j.appendChild(this.cloneNode(true));j=j.innerHTML}return i.clean([j.replace(Aa,"").replace(R,'="$1">').replace(Ba,"")],n)[0]}else return this.cloneNode(true)});if(b===true){ta(this,f);ta(this.find("*"),f.find("*"))}return f},html:function(b){if(b===e)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Aa,""):null;else if(typeof b==="string"&&!za.test(b)&&(i.support.leadingWhitespace||!Ba.test(b))&&
+!ba[(ja.exec(b)||["",""])[1].toLowerCase()]){b=b.replace(Ia,"<$1></$2>");try{for(var f=0,j=this.length;f<j;f++)if(this[f].nodeType===1){i.cleanData(this[f].getElementsByTagName("*"));this[f].innerHTML=b}}catch(n){this.empty().append(b)}}else i.isFunction(b)?this.each(function(r){var t=i(this);t.html(b.call(this,r,t.html()))}):this.empty().append(b);return this},replaceWith:function(b){if(this[0]&&this[0].parentNode){if(i.isFunction(b))return this.each(function(f){var j=i(this),n=j.html();j.replaceWith(b.call(this,
+f,n))});if(typeof b!=="string")b=i(b).detach();return this.each(function(){var f=this.nextSibling,j=this.parentNode;i(this).remove();f?i(f).before(b):i(j).append(b)})}else return this.pushStack(i(i.isFunction(b)?b():b),"replaceWith",b)},detach:function(b){return this.remove(b,true)},domManip:function(b,f,j){var n,r,t,E=b[0],D=[];if(!i.support.checkClone&&arguments.length===3&&typeof E==="string"&&aa.test(E))return this.each(function(){i(this).domManip(b,f,j,true)});if(i.isFunction(E))return this.each(function(T){var ka=
+i(this);b[0]=E.call(this,T,f?ka.html():e);ka.domManip(b,f,j)});if(this[0]){n=E&&E.parentNode;n=i.support.parentNode&&n&&n.nodeType===11&&n.childNodes.length===this.length?{fragment:n}:i.buildFragment(b,this,D);t=n.fragment;if(r=t.childNodes.length===1?(t=t.firstChild):t.firstChild){f=f&&i.nodeName(r,"tr");for(var K=0,fa=this.length;K<fa;K++)j.call(f?ma(this[K],r):this[K],K>0||n.cacheable||this.length>1?t.cloneNode(true):t)}D.length&&i.each(D,B)}return this}});i.buildFragment=function(b,f,j){var n,
+r,t;f=f&&f[0]?f[0].ownerDocument||f[0]:V;if(b.length===1&&typeof b[0]==="string"&&b[0].length<512&&f===V&&!za.test(b[0])&&(i.support.checkClone||!aa.test(b[0]))){r=true;if(t=i.fragments[b[0]])if(t!==1)n=t}if(!n){n=f.createDocumentFragment();i.clean(b,f,n,j)}if(r)i.fragments[b[0]]=t?n:1;return{fragment:n,cacheable:r}};i.fragments={};i.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(b,f){i.fn[b]=function(j){var n=[];j=i(j);var r=
+this.length===1&&this[0].parentNode;if(r&&r.nodeType===11&&r.childNodes.length===1&&j.length===1){j[f](this[0]);return this}else{r=0;for(var t=j.length;r<t;r++){var E=(r>0?this.clone(true):this).get();i(j[r])[f](E);n=n.concat(E)}return this.pushStack(n,b,j.selector)}}});i.extend({clean:function(b,f,j,n){f=f||V;if(typeof f.createElement==="undefined")f=f.ownerDocument||f[0]&&f[0].ownerDocument||V;for(var r=[],t=0,E;(E=b[t])!=null;t++){if(typeof E==="number")E+="";if(E){if(typeof E==="string"&&!pa.test(E))E=
+f.createTextNode(E);else if(typeof E==="string"){E=E.replace(Ia,"<$1></$2>");var D=(ja.exec(E)||["",""])[1].toLowerCase(),K=ba[D]||ba._default,fa=K[0],T=f.createElement("div");for(T.innerHTML=K[1]+E+K[2];fa--;)T=T.lastChild;if(!i.support.tbody){fa=ra.test(E);D=D==="table"&&!fa?T.firstChild&&T.firstChild.childNodes:K[1]==="<table>"&&!fa?T.childNodes:[];for(K=D.length-1;K>=0;--K)i.nodeName(D[K],"tbody")&&!D[K].childNodes.length&&D[K].parentNode.removeChild(D[K])}!i.support.leadingWhitespace&&Ba.test(E)&&
+T.insertBefore(f.createTextNode(Ba.exec(E)[0]),T.firstChild);E=T.childNodes}if(E.nodeType)r.push(E);else r=i.merge(r,E)}}if(j)for(t=0;r[t];t++)if(n&&i.nodeName(r[t],"script")&&(!r[t].type||r[t].type.toLowerCase()==="text/javascript"))n.push(r[t].parentNode?r[t].parentNode.removeChild(r[t]):r[t]);else{r[t].nodeType===1&&r.splice.apply(r,[t+1,0].concat(i.makeArray(r[t].getElementsByTagName("script"))));j.appendChild(r[t])}return r},cleanData:function(b){for(var f,j,n=i.cache,r=i.event.special,t=i.support.deleteExpando,
+E=0,D;(D=b[E])!=null;E++)if(!(D.nodeName&&i.noData[D.nodeName.toLowerCase()]))if(j=D[i.expando]){if((f=n[j])&&f.events)for(var K in f.events)r[K]?i.event.remove(D,K):i.removeEvent(D,K,f.handle);if(t)delete D[i.expando];else D.removeAttribute&&D.removeAttribute(i.expando);delete n[j]}}});var ya=/alpha\([^)]*\)/i,Ra=/opacity=([^)]*)/,Va=/-([a-z])/ig,lb=/([A-Z])/g,Ga=/^-?\d+(?:px)?$/i,Ta=/^-?\d/,pb={position:"absolute",visibility:"hidden",display:"block"},Za=["Left","Right"],Bb=["Top","Bottom"],Qa,mb,
+nb,yb=function(b,f){return f.toUpperCase()};i.fn.css=function(b,f){if(arguments.length===2&&f===e)return this;return i.access(this,b,f,true,function(j,n,r){return r!==e?i.style(j,n,r):i.css(j,n)})};i.extend({cssHooks:{opacity:{get:function(b,f){if(f){b=Qa(b,"opacity","opacity");return b===""?"1":b}else return b.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":i.support.cssFloat?"cssFloat":"styleFloat"},style:function(b,f,j,n){if(!(!b||
+b.nodeType===3||b.nodeType===8||!b.style)){var r,t=i.camelCase(f),E=b.style,D=i.cssHooks[t];f=i.cssProps[t]||t;if(j!==e){if(!(typeof j==="number"&&isNaN(j)||j==null)){if(typeof j==="number"&&!i.cssNumber[t])j+="px";if(!D||!("set"in D)||(j=D.set(b,j))!==e)try{E[f]=j}catch(K){}}}else{if(D&&"get"in D&&(r=D.get(b,false,n))!==e)return r;return E[f]}}},css:function(b,f,j){var n,r=i.camelCase(f),t=i.cssHooks[r];f=i.cssProps[r]||r;if(t&&"get"in t&&(n=t.get(b,true,j))!==e)return n;else if(Qa)return Qa(b,f,
+r)},swap:function(b,f,j){var n={};for(var r in f){n[r]=b.style[r];b.style[r]=f[r]}j.call(b);for(r in f)b.style[r]=n[r]},camelCase:function(b){return b.replace(Va,yb)}});i.curCSS=i.css;i.each(["height","width"],function(b,f){i.cssHooks[f]={get:function(j,n,r){var t;if(n){if(j.offsetWidth!==0)t=X(j,f,r);else i.swap(j,pb,function(){t=X(j,f,r)});if(t<=0){t=Qa(j,f,f);if(t==="0px"&&nb)t=nb(j,f,f);if(t!=null)return t===""||t==="auto"?"0px":t}if(t<0||t==null){t=j.style[f];return t===""||t==="auto"?"0px":
+t}return typeof t==="string"?t:t+"px"}},set:function(j,n){if(Ga.test(n)){n=parseFloat(n);if(n>=0)return n+"px"}else return n}}});if(!i.support.opacity)i.cssHooks.opacity={get:function(b,f){return Ra.test((f&&b.currentStyle?b.currentStyle.filter:b.style.filter)||"")?parseFloat(RegExp.$1)/100+"":f?"1":""},set:function(b,f){b=b.style;b.zoom=1;f=i.isNaN(f)?"":"alpha(opacity="+f*100+")";var j=b.filter||"";b.filter=ya.test(j)?j.replace(ya,f):b.filter+" "+f}};if(V.defaultView&&V.defaultView.getComputedStyle)mb=
+function(b,f,j){var n;j=j.replace(lb,"-$1").toLowerCase();if(!(f=b.ownerDocument.defaultView))return e;if(f=f.getComputedStyle(b,null)){n=f.getPropertyValue(j);if(n===""&&!i.contains(b.ownerDocument.documentElement,b))n=i.style(b,j)}return n};if(V.documentElement.currentStyle)nb=function(b,f){var j,n,r=b.currentStyle&&b.currentStyle[f],t=b.style;if(!Ga.test(r)&&Ta.test(r)){j=t.left;n=b.runtimeStyle.left;b.runtimeStyle.left=b.currentStyle.left;t.left=f==="fontSize"?"1em":r||0;r=t.pixelLeft+"px";t.left=
+j;b.runtimeStyle.left=n}return r===""?"auto":r};Qa=mb||nb;if(i.expr&&i.expr.filters){i.expr.filters.hidden=function(b){var f=b.offsetHeight;return b.offsetWidth===0&&f===0||!i.support.reliableHiddenOffsets&&(b.style.display||i.css(b,"display"))==="none"};i.expr.filters.visible=function(b){return!i.expr.filters.hidden(b)}}var C=i.now(),I=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,a=/^(?:select|textarea)/i,v=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+d=/^(?:GET|HEAD)$/,q=/\[\]$/,u=/\=\?(&|$)/,x=/\?/,H=/([?&])_=[^&]*/,S=/^(\w+:)?\/\/([^\/?#]+)/,Z=/%20/g,ca=/#.*$/,oa=i.fn.load;i.fn.extend({load:function(b,f,j){if(typeof b!=="string"&&oa)return oa.apply(this,arguments);else if(!this.length)return this;var n=b.indexOf(" ");if(n>=0){var r=b.slice(n,b.length);b=b.slice(0,n)}n="GET";if(f)if(i.isFunction(f)){j=f;f=null}else if(typeof f==="object"){f=i.param(f,i.ajaxSettings.traditional);n="POST"}var t=this;i.ajax({url:b,type:n,dataType:"html",data:f,
+complete:function(E,D){if(D==="success"||D==="notmodified")t.html(r?i("<div>").append(E.responseText.replace(I,"")).find(r):E.responseText);j&&t.each(j,[E.responseText,D,E])}});return this},serialize:function(){return i.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?i.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||a.test(this.nodeName)||v.test(this.type))}).map(function(b,f){b=i(this).val();
+return b==null?null:i.isArray(b)?i.map(b,function(j){return{name:f.name,value:j}}):{name:f.name,value:b}}).get()}});i.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(b,f){i.fn[f]=function(j){return this.bind(f,j)}});i.extend({get:function(b,f,j,n){if(i.isFunction(f)){n=n||j;j=f;f=null}return i.ajax({type:"GET",url:b,data:f,success:j,dataType:n})},getScript:function(b,f){return i.get(b,null,f,"script")},getJSON:function(b,f,j){return i.get(b,f,j,"json")},post:function(b,
+f,j,n){if(i.isFunction(f)){n=n||j;j=f;f={}}return i.ajax({type:"POST",url:b,data:f,success:j,dataType:n})},ajaxSetup:function(b){i.extend(i.ajaxSettings,b)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new g.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},
+ajax:function(b){var f=i.extend(true,{},i.ajaxSettings,b),j,n,r,t=f.type.toUpperCase(),E=d.test(t);f.url=f.url.replace(ca,"");f.context=b&&b.context!=null?b.context:f;if(f.data&&f.processData&&typeof f.data!=="string")f.data=i.param(f.data,f.traditional);if(f.dataType==="jsonp"){if(t==="GET")u.test(f.url)||(f.url+=(x.test(f.url)?"&":"?")+(f.jsonp||"callback")+"=?");else if(!f.data||!u.test(f.data))f.data=(f.data?f.data+"&":"")+(f.jsonp||"callback")+"=?";f.dataType="json"}if(f.dataType==="json"&&(f.data&&
+u.test(f.data)||u.test(f.url))){j=f.jsonpCallback||"jsonp"+C++;if(f.data)f.data=(f.data+"").replace(u,"="+j+"$1");f.url=f.url.replace(u,"="+j+"$1");f.dataType="script";var D=g[j];g[j]=function(M){if(i.isFunction(D))D(M);else{g[j]=e;try{delete g[j]}catch(N){}}r=M;i.handleSuccess(f,ga,n,r);i.handleComplete(f,ga,n,r);T&&T.removeChild(ka)}}if(f.dataType==="script"&&f.cache===null)f.cache=false;if(f.cache===false&&E){var K=i.now(),fa=f.url.replace(H,"$1_="+K);f.url=fa+(fa===f.url?(x.test(f.url)?"&":"?")+
+"_="+K:"")}if(f.data&&E)f.url+=(x.test(f.url)?"&":"?")+f.data;f.global&&i.active++===0&&i.event.trigger("ajaxStart");K=(K=S.exec(f.url))&&(K[1]&&K[1].toLowerCase()!==location.protocol||K[2].toLowerCase()!==location.host);if(f.dataType==="script"&&t==="GET"&&K){var T=V.getElementsByTagName("head")[0]||V.documentElement,ka=V.createElement("script");if(f.scriptCharset)ka.charset=f.scriptCharset;ka.src=f.url;if(!j){var va=false;ka.onload=ka.onreadystatechange=function(){if(!va&&(!this.readyState||this.readyState===
+"loaded"||this.readyState==="complete")){va=true;i.handleSuccess(f,ga,n,r);i.handleComplete(f,ga,n,r);ka.onload=ka.onreadystatechange=null;T&&ka.parentNode&&T.removeChild(ka)}}}T.insertBefore(ka,T.firstChild);return e}var Oa=false,ga=f.xhr();if(ga){f.username?ga.open(t,f.url,f.async,f.username,f.password):ga.open(t,f.url,f.async);try{if(f.data!=null&&!E||b&&b.contentType)ga.setRequestHeader("Content-Type",f.contentType);if(f.ifModified){i.lastModified[f.url]&&ga.setRequestHeader("If-Modified-Since",
+i.lastModified[f.url]);i.etag[f.url]&&ga.setRequestHeader("If-None-Match",i.etag[f.url])}K||ga.setRequestHeader("X-Requested-With","XMLHttpRequest");ga.setRequestHeader("Accept",f.dataType&&f.accepts[f.dataType]?f.accepts[f.dataType]+", */*; q=0.01":f.accepts._default)}catch(Na){}if(f.beforeSend&&f.beforeSend.call(f.context,ga,f)===false){f.global&&i.active--===1&&i.event.trigger("ajaxStop");ga.abort();return false}f.global&&i.triggerGlobal(f,"ajaxSend",[ga,f]);var ib=ga.onreadystatechange=function(M){if(!ga||
+ga.readyState===0||M==="abort"){Oa||i.handleComplete(f,ga,n,r);Oa=true;if(ga)ga.onreadystatechange=i.noop}else if(!Oa&&ga&&(ga.readyState===4||M==="timeout")){Oa=true;ga.onreadystatechange=i.noop;n=M==="timeout"?"timeout":!i.httpSuccess(ga)?"error":f.ifModified&&i.httpNotModified(ga,f.url)?"notmodified":"success";var N;if(n==="success")try{r=i.httpData(ga,f.dataType,f)}catch(Q){n="parsererror";N=Q}if(n==="success"||n==="notmodified")j||i.handleSuccess(f,ga,n,r);else i.handleError(f,ga,n,N);j||i.handleComplete(f,
+ga,n,r);M==="timeout"&&ga.abort();if(f.async)ga=null}};try{var s=ga.abort;ga.abort=function(){ga&&Function.prototype.call.call(s,ga);ib("abort")}}catch(y){}f.async&&f.timeout>0&&setTimeout(function(){ga&&!Oa&&ib("timeout")},f.timeout);try{ga.send(E||f.data==null?null:f.data)}catch(J){i.handleError(f,ga,null,J);i.handleComplete(f,ga,n,r)}f.async||ib();return ga}},param:function(b,f){var j=[],n=function(t,E){E=i.isFunction(E)?E():E;j[j.length]=encodeURIComponent(t)+"="+encodeURIComponent(E)};if(f===
+e)f=i.ajaxSettings.traditional;if(i.isArray(b)||b.jquery)i.each(b,function(){n(this.name,this.value)});else for(var r in b)W(r,b[r],f,n);return j.join("&").replace(Z,"+")}});i.extend({active:0,lastModified:{},etag:{},handleError:function(b,f,j,n){b.error&&b.error.call(b.context,f,j,n);b.global&&i.triggerGlobal(b,"ajaxError",[f,b,n])},handleSuccess:function(b,f,j,n){b.success&&b.success.call(b.context,n,j,f);b.global&&i.triggerGlobal(b,"ajaxSuccess",[f,b])},handleComplete:function(b,f,j){b.complete&&
+b.complete.call(b.context,f,j);b.global&&i.triggerGlobal(b,"ajaxComplete",[f,b]);b.global&&i.active--===1&&i.event.trigger("ajaxStop")},triggerGlobal:function(b,f,j){(b.context&&b.context.url==null?i(b.context):i.event).trigger(f,j)},httpSuccess:function(b){try{return!b.status&&location.protocol==="file:"||b.status>=200&&b.status<300||b.status===304||b.status===1223}catch(f){}return false},httpNotModified:function(b,f){var j=b.getResponseHeader("Last-Modified"),n=b.getResponseHeader("Etag");if(j)i.lastModified[f]=
+j;if(n)i.etag[f]=n;return b.status===304},httpData:function(b,f,j){var n=b.getResponseHeader("content-type")||"",r=f==="xml"||!f&&n.indexOf("xml")>=0;b=r?b.responseXML:b.responseText;r&&b.documentElement.nodeName==="parsererror"&&i.error("parsererror");if(j&&j.dataFilter)b=j.dataFilter(b,f);if(typeof b==="string")if(f==="json"||!f&&n.indexOf("json")>=0)b=i.parseJSON(b);else if(f==="script"||!f&&n.indexOf("javascript")>=0)i.globalEval(b);return b}});if(g.ActiveXObject)i.ajaxSettings.xhr=function(){if(g.location.protocol!==
+"file:")try{return new g.XMLHttpRequest}catch(b){}try{return new g.ActiveXObject("Microsoft.XMLHTTP")}catch(f){}};i.support.ajax=!!i.ajaxSettings.xhr();var xa={},Ea=/^(?:toggle|show|hide)$/,Ha=/^([+\-]=)?([\d+.\-]+)(.*)$/,Fa,Ma=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];i.fn.extend({show:function(b,f,j){if(b||b===0)return this.animate(sa("show",3),b,f,j);else{j=0;for(var n=this.length;j<n;j++){b=
+this[j];f=b.style.display;if(!i.data(b,"olddisplay")&&f==="none")f=b.style.display="";f===""&&i.css(b,"display")==="none"&&i.data(b,"olddisplay",xb(b.nodeName))}for(j=0;j<n;j++){b=this[j];f=b.style.display;if(f===""||f==="none")b.style.display=i.data(b,"olddisplay")||""}return this}},hide:function(b,f,j){if(b||b===0)return this.animate(sa("hide",3),b,f,j);else{b=0;for(f=this.length;b<f;b++){j=i.css(this[b],"display");j!=="none"&&i.data(this[b],"olddisplay",j)}for(b=0;b<f;b++)this[b].style.display=
+"none";return this}},_toggle:i.fn.toggle,toggle:function(b,f,j){var n=typeof b==="boolean";if(i.isFunction(b)&&i.isFunction(f))this._toggle.apply(this,arguments);else b==null||n?this.each(function(){var r=n?b:i(this).is(":hidden");i(this)[r?"show":"hide"]()}):this.animate(sa("toggle",3),b,f,j);return this},fadeTo:function(b,f,j,n){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:f},b,j,n)},animate:function(b,f,j,n){var r=i.speed(f,j,n);if(i.isEmptyObject(b))return this.each(r.complete);
+return this[r.queue===false?"each":"queue"](function(){var t=i.extend({},r),E,D=this.nodeType===1,K=D&&i(this).is(":hidden"),fa=this;for(E in b){var T=i.camelCase(E);if(E!==T){b[T]=b[E];delete b[E];E=T}if(b[E]==="hide"&&K||b[E]==="show"&&!K)return t.complete.call(this);if(D&&(E==="height"||E==="width")){t.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(i.css(this,"display")==="inline"&&i.css(this,"float")==="none")if(i.support.inlineBlockNeedsLayout)if(xb(this.nodeName)===
+"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(i.isArray(b[E])){(t.specialEasing=t.specialEasing||{})[E]=b[E][1];b[E]=b[E][0]}}if(t.overflow!=null)this.style.overflow="hidden";t.curAnim=i.extend({},b);i.each(b,function(ka,va){var Oa=new i.fx(fa,t,ka);if(Ea.test(va))Oa[va==="toggle"?K?"show":"hide":va](b);else{var ga=Ha.exec(va),Na=Oa.cur()||0;if(ga){va=parseFloat(ga[2]);var ib=ga[3]||"px";if(ib!=="px"){i.style(fa,
+ka,(va||1)+ib);Na=(va||1)/Oa.cur()*Na;i.style(fa,ka,Na+ib)}if(ga[1])va=(ga[1]==="-="?-1:1)*va+Na;Oa.custom(Na,va,ib)}else Oa.custom(Na,va,"")}});return true})},stop:function(b,f){var j=i.timers;b&&this.queue([]);this.each(function(){for(var n=j.length-1;n>=0;n--)if(j[n].elem===this){f&&j[n](true);j.splice(n,1)}});f||this.dequeue();return this}});i.each({slideDown:sa("show",1),slideUp:sa("hide",1),slideToggle:sa("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},
+function(b,f){i.fn[b]=function(j,n,r){return this.animate(f,j,n,r)}});i.extend({speed:function(b,f,j){var n=b&&typeof b==="object"?i.extend({},b):{complete:j||!j&&f||i.isFunction(b)&&b,duration:b,easing:j&&f||f&&!i.isFunction(f)&&f};n.duration=i.fx.off?0:typeof n.duration==="number"?n.duration:n.duration in i.fx.speeds?i.fx.speeds[n.duration]:i.fx.speeds._default;n.old=n.complete;n.complete=function(){n.queue!==false&&i(this).dequeue();i.isFunction(n.old)&&n.old.call(this)};return n},easing:{linear:function(b,
+f,j,n){return j+n*b},swing:function(b,f,j,n){return(-Math.cos(b*Math.PI)/2+0.5)*n+j}},timers:[],fx:function(b,f,j){this.options=f;this.elem=b;this.prop=j;if(!f.orig)f.orig={}}});i.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(i.fx.step[this.prop]||i.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var b=parseFloat(i.css(this.elem,this.prop));
+return b&&b>-10000?b:0},custom:function(b,f,j){function n(E){return r.step(E)}var r=this,t=i.fx;this.startTime=i.now();this.start=b;this.end=f;this.unit=j||this.unit||"px";this.now=this.start;this.pos=this.state=0;n.elem=this.elem;if(n()&&i.timers.push(n)&&!Fa)Fa=setInterval(t.tick,t.interval)},show:function(){this.options.orig[this.prop]=i.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());i(this.elem).show()},hide:function(){this.options.orig[this.prop]=
+i.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(b){var f=i.now(),j=true;if(b||f>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var n in this.options.curAnim)if(this.options.curAnim[n]!==true)j=false;if(j){if(this.options.overflow!=null&&!i.support.shrinkWrapBlocks){var r=this.elem,t=this.options;i.each(["","X","Y"],function(D,K){r.style["overflow"+K]=t.overflow[D]})}this.options.hide&&
+i(this.elem).hide();if(this.options.hide||this.options.show)for(var E in this.options.curAnim)i.style(this.elem,E,this.options.orig[E]);this.options.complete.call(this.elem)}return false}else{b=f-this.startTime;this.state=b/this.options.duration;f=this.options.easing||(i.easing.swing?"swing":"linear");this.pos=i.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||f](this.state,b,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};
+i.extend(i.fx,{tick:function(){for(var b=i.timers,f=0;f<b.length;f++)b[f]()||b.splice(f--,1);b.length||i.fx.stop()},interval:13,stop:function(){clearInterval(Fa);Fa=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(b){i.style(b.elem,"opacity",b.now)},_default:function(b){if(b.elem.style&&b.elem.style[b.prop]!=null)b.elem.style[b.prop]=(b.prop==="width"||b.prop==="height"?Math.max(0,b.now):b.now)+b.unit;else b.elem[b.prop]=b.now}}});if(i.expr&&i.expr.filters)i.expr.filters.animated=
+function(b){return i.grep(i.timers,function(f){return b===f.elem}).length};var Sa=/^t(?:able|d|h)$/i,Xa=/^(?:body|html)$/i;i.fn.offset="getBoundingClientRect"in V.documentElement?function(b){var f=this[0],j;if(b)return this.each(function(E){i.offset.setOffset(this,b,E)});if(!f||!f.ownerDocument)return null;if(f===f.ownerDocument.body)return i.offset.bodyOffset(f);try{j=f.getBoundingClientRect()}catch(n){}var r=f.ownerDocument,t=r.documentElement;if(!j||!i.contains(t,f))return j||{top:0,left:0};f=
+r.body;r=Ya(r);return{top:j.top+(r.pageYOffset||i.support.boxModel&&t.scrollTop||f.scrollTop)-(t.clientTop||f.clientTop||0),left:j.left+(r.pageXOffset||i.support.boxModel&&t.scrollLeft||f.scrollLeft)-(t.clientLeft||f.clientLeft||0)}}:function(b){var f=this[0];if(b)return this.each(function(T){i.offset.setOffset(this,b,T)});if(!f||!f.ownerDocument)return null;if(f===f.ownerDocument.body)return i.offset.bodyOffset(f);i.offset.initialize();var j,n=f.offsetParent,r=f,t=f.ownerDocument,E=t.documentElement,
+D=t.body;j=(t=t.defaultView)?t.getComputedStyle(f,null):f.currentStyle;for(var K=f.offsetTop,fa=f.offsetLeft;(f=f.parentNode)&&f!==D&&f!==E;){if(i.offset.supportsFixedPosition&&j.position==="fixed")break;j=t?t.getComputedStyle(f,null):f.currentStyle;K-=f.scrollTop;fa-=f.scrollLeft;if(f===n){K+=f.offsetTop;fa+=f.offsetLeft;if(i.offset.doesNotAddBorder&&!(i.offset.doesAddBorderForTableAndCells&&Sa.test(f.nodeName))){K+=parseFloat(j.borderTopWidth)||0;fa+=parseFloat(j.borderLeftWidth)||0}r=n;n=f.offsetParent}if(i.offset.subtractsBorderForOverflowNotVisible&&
+j.overflow!=="visible"){K+=parseFloat(j.borderTopWidth)||0;fa+=parseFloat(j.borderLeftWidth)||0}j=j}if(j.position==="relative"||j.position==="static"){K+=D.offsetTop;fa+=D.offsetLeft}if(i.offset.supportsFixedPosition&&j.position==="fixed"){K+=Math.max(E.scrollTop,D.scrollTop);fa+=Math.max(E.scrollLeft,D.scrollLeft)}return{top:K,left:fa}};i.offset={initialize:function(){var b=V.body,f=V.createElement("div"),j,n,r,t=parseFloat(i.css(b,"marginTop"))||0;i.extend(f.style,{position:"absolute",top:0,left:0,
+margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});f.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";b.insertBefore(f,b.firstChild);j=f.firstChild;n=j.firstChild;r=j.nextSibling.firstChild.firstChild;this.doesNotAddBorder=n.offsetTop!==
+5;this.doesAddBorderForTableAndCells=r.offsetTop===5;n.style.position="fixed";n.style.top="20px";this.supportsFixedPosition=n.offsetTop===20||n.offsetTop===15;n.style.position=n.style.top="";j.style.overflow="hidden";j.style.position="relative";this.subtractsBorderForOverflowNotVisible=n.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=b.offsetTop!==t;b.removeChild(f);i.offset.initialize=i.noop},bodyOffset:function(b){var f=b.offsetTop,j=b.offsetLeft;i.offset.initialize();if(i.offset.doesNotIncludeMarginInBodyOffset){f+=
+parseFloat(i.css(b,"marginTop"))||0;j+=parseFloat(i.css(b,"marginLeft"))||0}return{top:f,left:j}},setOffset:function(b,f,j){var n=i.css(b,"position");if(n==="static")b.style.position="relative";var r=i(b),t=r.offset(),E=i.css(b,"top"),D=i.css(b,"left"),K=n==="absolute"&&i.inArray("auto",[E,D])>-1;n={};var fa={};if(K)fa=r.position();E=K?fa.top:parseInt(E,10)||0;D=K?fa.left:parseInt(D,10)||0;if(i.isFunction(f))f=f.call(b,j,t);if(f.top!=null)n.top=f.top-t.top+E;if(f.left!=null)n.left=f.left-t.left+D;
+"using"in f?f.using.call(b,n):r.css(n)}};i.fn.extend({position:function(){if(!this[0])return null;var b=this[0],f=this.offsetParent(),j=this.offset(),n=Xa.test(f[0].nodeName)?{top:0,left:0}:f.offset();j.top-=parseFloat(i.css(b,"marginTop"))||0;j.left-=parseFloat(i.css(b,"marginLeft"))||0;n.top+=parseFloat(i.css(f[0],"borderTopWidth"))||0;n.left+=parseFloat(i.css(f[0],"borderLeftWidth"))||0;return{top:j.top-n.top,left:j.left-n.left}},offsetParent:function(){return this.map(function(){for(var b=this.offsetParent||
+V.body;b&&!Xa.test(b.nodeName)&&i.css(b,"position")==="static";)b=b.offsetParent;return b})}});i.each(["Left","Top"],function(b,f){var j="scroll"+f;i.fn[j]=function(n){var r=this[0],t;if(!r)return null;if(n!==e)return this.each(function(){if(t=Ya(this))t.scrollTo(!b?n:i(t).scrollLeft(),b?n:i(t).scrollTop());else this[j]=n});else return(t=Ya(r))?"pageXOffset"in t?t[b?"pageYOffset":"pageXOffset"]:i.support.boxModel&&t.document.documentElement[j]||t.document.body[j]:r[j]}});i.each(["Height","Width"],
+function(b,f){var j=f.toLowerCase();i.fn["inner"+f]=function(){return this[0]?parseFloat(i.css(this[0],j,"padding")):null};i.fn["outer"+f]=function(n){return this[0]?parseFloat(i.css(this[0],j,n?"margin":"border")):null};i.fn[j]=function(n){var r=this[0];if(!r)return n==null?null:this;if(i.isFunction(n))return this.each(function(E){var D=i(this);D[j](n.call(this,E,D[j]()))});if(i.isWindow(r))return r.document.compatMode==="CSS1Compat"&&r.document.documentElement["client"+f]||r.document.body["client"+
+f];else if(r.nodeType===9)return Math.max(r.documentElement["client"+f],r.body["scroll"+f],r.documentElement["scroll"+f],r.body["offset"+f],r.documentElement["offset"+f]);else if(n===e){r=i.css(r,j);var t=parseFloat(r);return i.isNaN(t)?r:t}else return this.css(j,typeof n==="string"?n:n+"px")}})})(window);
+(function(g){g.shortcut={all_shortcuts:{},add:function(e,l,h){var o={type:"keydown",propagate:false,disable_in_input:false,target:document,keycode:false};if(h)for(var m in o){if(typeof h[m]=="undefined")h[m]=o[m]}else h=o;o=h.target;if(typeof h.target=="string")o=document.getElementById(h.target);e=e.toLowerCase();m=function(w){w=w||window.event;if(h.disable_in_input){var F;if(w.target)F=w.target;else if(w.srcElement)F=w.srcElement;if(F.nodeType==3)F=F.parentNode;if(F.tagName=="INPUT"||F.tagName==
+"TEXTAREA")return}if(w.keyCode)code=w.keyCode;else if(w.which)code=w.which;F=String.fromCharCode(code).toLowerCase();if(code==188)F=",";if(code==190)F=".";var A=e.split("+"),c=0,ma={"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":":","'":'"',",":"<",".":">","/":"?","\\":"|"},ta={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},B={shift:{wanted:false,pressed:false},ctrl:{wanted:false,pressed:false},alt:{wanted:false,pressed:false},meta:{wanted:false,pressed:false}};if(w.ctrlKey)B.ctrl.pressed=true;if(w.shiftKey)B.shift.pressed=true;if(w.altKey)B.alt.pressed=true;if(w.metaKey)B.meta.pressed=
+true;for(var X=0;k=A[X],X<A.length;X++)if(k=="ctrl"||k=="control"){c++;B.ctrl.wanted=true}else if(k=="shift"){c++;B.shift.wanted=true}else if(k=="alt"){c++;B.alt.wanted=true}else if(k=="meta"){c++;B.meta.wanted=true}else if(k.length>1)ta[k]==code&&c++;else if(h.keycode)h.keycode==code&&c++;else if(F==k)c++;else if(ma[F]&&w.shiftKey){F=ma[F];F==k&&c++}if(c==A.length&&B.ctrl.pressed==B.ctrl.wanted&&B.shift.pressed==B.shift.wanted&&B.alt.pressed==B.alt.wanted&&B.meta.pressed==B.meta.wanted){l(w);if(!h.propagate){w.cancelBubble=
+true;w.returnValue=false;if(w.stopPropagation){w.stopPropagation();w.preventDefault()}return false}}};this.all_shortcuts[e]={callback:m,target:o,event:h.type};if(o.addEventListener)o.addEventListener(h.type,m,false);else if(o.attachEvent)o.attachEvent("on"+h.type,m);else o["on"+h.type]=m},remove:function(e){e=e.toLowerCase();var l=this.all_shortcuts[e];delete this.all_shortcuts[e];if(l){e=l.event;var h=l.target;l=l.callback;if(h.detachEvent)h.detachEvent("on"+e,l);else if(h.removeEventListener)h.removeEventListener(e,
+l,false);else h["on"+e]=false}}}})(this);
+define("core/utils",[],function(){var g={};window.addEventListener("message",function(l){var h=l.data.substring(0,l.data.indexOf(","));(l=l.data.substring(l.data.indexOf(",")+1))?g[h](l):g[h](null);$("#rs-ifr-"+h).remove()},false);var e={run:function(l,h,o){this.conf=l;this.doc=h;var m=this;shortcut.add("Ctrl+Shift+Alt+S",function(){m.showSaveOptions()});shortcut.add("Esc",function(){m.hideSaveOptions()});$.fn.renameElement=function(w){return this.each(function(){for(var F=$(this.ownerDocument.createElement(w)),
+A=0,c=this.attributes.length;A<c;A++){var ma=this.attributes[A];F[0].setAttributeNS(ma.namespaceURI,ma.name,ma.value)}$(this).contents().clone().appendTo(F);$(this).replaceWith(F)})};$.fn.makeID=function(w,F){var A=$(this);if(A.attr("id"))return A.attr("id");var c="";F||(F=A.attr("title")?A.attr("title"):A.text());F=F.replace(/^\s+/,"").replace(/\s+$/,"");c+=F;c=c.toLowerCase();c=c.split(/[^-.0-9a-z_]/).join("-").replace(/^-+/,"").replace(/-+$/,"");if(c.length>0&&/^[^a-z]/.test(c))c="x"+c;if(c.length==
+0)c="generatedID";if(w)c=w+"-"+c;w=1;F=A[0].ownerDocument;if(F.getElementById(c)){for(;F.getElementById(c+"-"+w);)w++;c=c+"-"+w}A.attr("id",c);return c};$.fn.dfnTitle=function(){var w=$(this);w=w.attr("title")?w.attr("title"):w.contents().length==1&&w.children("abbr, acronym").length==1&&w.find(":first-child").attr("title")?w.find(":first-child").attr("title"):w.text();return w=e.norm(w)};$.fn.attrAppend=function(w,F){var A=$(this).attr(w);A=A?A+" "+F:F;$(this).attr(w,A);return this};o()},humanMonths:["January",
+"February","March","April","May","June","July","August","September","October","November","December"],parseSimpleDate:function(l){return new Date(l.substr(0,4),l.substr(5,2)-1,l.substr(8,2))},parseLastModified:function(l){if(!l)return new Date;return new Date(Date.parse(l))},humanDate:function(l){return this.lead0(l.getDate())+" "+this.humanMonths[l.getMonth()]+" "+l.getFullYear()},concatDate:function(l,h){h||(h="");return""+l.getFullYear()+h+this.lead0(l.getMonth()+1)+h+this.lead0(l.getDate())},lead0:function(l){l=
+""+l;return l.length==1?"0"+l:l},linkCSS:function(l,h){if(h.constructor!=Array)h=[h];$.each(h,function(o,m){$("head",l).append($("<link/>").attr({rel:"stylesheet",href:m,type:"text/css",media:"all",charset:"utf-8"}))})},findNodes:function(l,h,o){h||(h=o);var m={};l=o.evaluate(l,h,function(w){return m[w]||null},XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);h=[];for(o=0;o<l.snapshotLength;o++)h.push(l.snapshotItem(o));return h},proxyCount:0,proxyLoad:function(l,h){if(document.location.href.indexOf("file:")==
+0){var o="prox-"+this.proxyCount;this.proxyCount++;g[o]=h;var m=$("<iframe/>").attr({src:l.replace(/[^\/]+$/,"local-proxy.html"),id:"rs-ifr-"+o}).css("display","none");m.load(function(){try{m[0].contentWindow.postMessage(o+","+l,"*")}catch(w){error("Could not load through proxy: "+w)}});m.appendTo($("body",document))}else $.get(l,h)},proxyLoadMany:function(l,h){l.length==0&&h([]);var o=0,m=[],w=this;$.each(l,function(F,A){w.proxyLoad(A,function(c){o++;m.push(c);o==l.length&&h(m)})})},$saveMenu:null,
+showSaveOptions:function(){this.$saveMenu=$("<div/>").css({position:"fixed",width:"400px",top:"10px",padding:"1em",border:"5px solid #90b8de",background:"#fff"}).appendTo($("body")).append("<h4>ReSpec Actions Console</h4>").end();for(var l=0;l<this.saveActions.length;l++)this.$saveMenu.append(this.saveActions[l])},saveActions:[],registerSaveAction:function(l,h){this.saveActions.push($("<button>"+l+"</button>").click(function(){h()}))},hideSaveOptions:function(){this.$saveMenu&&this.$saveMenu.remove()},
+toHTMLSource:function(){var l=window.open().document;l.write("<pre>"+this.esc(this.stringifyHTML())+"</pre>");l.close()},stringifyHTML:function(){var l="<!DOCTYPE html",h=document.doctype;l+=h&&h.publicId?" PUBLIC '"+h.publicId+"' '"+h.systemId+"'":" PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'";l+=">\n";l+="<html";h=document.documentElement.attributes;for(var o=0;o<h.length;o++)l+=" "+h[o].name+'="'+this.esc(h[o].value)+'"';l+=">\n";l+=document.documentElement.innerHTML;
+l+="</html>";return l},unique:function(l){for(var h=[],o=l.length,m=0;m<o;m++){for(var w=m+1;w<o;w++)if(l[m]===l[w])w=++m;h.push(l[m])}return h},esc:function(l){return l.replace(/&/g,"&").replace(/>/g,">").replace(/"/g,""").replace(/</g,"<")},norm:function(l){l=l.replace(/^\s+/,"").replace(/\s+$/,"");return l.split(/\s+/).join(" ")},runTransforms:function(l,h){if(h){h=h.split(/\s+/);for(var o=0;o<h.length;o++){var m="content = "+h[o]+"(this,content)";try{eval(m)}catch(w){warning("call to "+
+m+" failed with "+w)}}}return l},ieDummy:1};e.registerSaveAction("Save as HTML Source",function(){e.hideSaveOptions();e.toHTMLSource()});return e});define("core/default-root-attr",[],function(){return{run:function(g,e,l){progress("defaulting root attributes");g=$(e.documentElement);g.attr("lang")||g.attr({lang:"en",dir:"ltr"});l()},ieDummy:1}});
+(function(){var g=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],e=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,l=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,h=[];if(!require.textStrip)require.textStrip=function(o){if(o){o=o.replace(e,"");var m=o.match(l);if(m)o=m[1]}else o="";return o};if(!require.jsEscape)require.jsEscape=function(o){return o.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,
+"\\r")};if(!require.getXhr)require.getXhr=function(){var o,m,w;if(typeof XMLHttpRequest!=="undefined")return new XMLHttpRequest;else for(m=0;m<3;m++){w=g[m];try{o=new ActiveXObject(w)}catch(F){}if(o){g=[w];break}}if(!o)throw new Error("require.getXhr(): XMLHttpRequest not available");return o};if(!require.fetchText)require.fetchText=function(o,m){var w=require.getXhr();w.open("GET",o,true);w.onreadystatechange=function(){w.readyState===4&&m(w.responseText)};w.send(null)};define("require/text",{load:function(o,
+m,w,F){var A=false,c=o.indexOf("."),ma=o.substring(0,c),ta=o.substring(c+1,o.length);c=ta.indexOf("!");if(c!==-1){A=ta.substring(c+1,ta.length);A=A==="strip";ta=ta.substring(0,c)}m=m.nameToUrl(ma,"."+ta);require.fetchText(m,function(B){B=A?require.textStrip(B):B;if(F.isBuild&&F.inlineText)h[o]=B;w(B)})},write:function(o,m,w){if(m in h){var F=require.jsEscape(h[m]);w("define('"+o+"!"+m+"', function () { return '"+F+"';});\n")}}})})();define("require/text!core/css/respec2.css",function(){return'\n/*\n XXX this is not up to date with the needs of various other parts, it will require\n to be synched up with the latest developments\n It may be that this will be split up so that only the parts that are acually used\n by the document get to be included (e.g. WebIDL).\n*/\n\n/*****************************************************************\n * ReSpec 2 CSS\n * Robin Berjon, 2010-01-04\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: medium solid #99c;\n text-decoration: none;\n}\n\na.externalDFN {\n color: inherit;\n border-bottom: medium dotted #ccc;\n text-decoration: none;\n}\n\na.bibref {\n text-decoration: none;\n}\n\ncode {\n color: #ff4500;\n}\n\n\n/* --- 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 {\n font-weight: bold;\n color: #005a9c;\n}\n\n.idlSuperclass {\n font-style: italic;\n color: #005a9c;\n}\n\n/*.idlAttribute*/\n.idlAttrType {\n color: #005a9c;\n}\n.idlAttrName {\n color: #ff4500;\n}\n.idlAttrName a {\n color: #ff4500;\n border-bottom: 1px dotted #ff4500;\n text-decoration: none;\n}\n\n/*.idlMethod*/\n.idlMethType {\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 {\n margin-left: 2em;\n}\n\n.attributes dt, .methods dt, .constants dt {\n font-weight: normal;\n}\n\n.attributes dt code, .methods dt code, .constants dt code {\n font-weight: bold;\n color: #000;\n font-family: monospace;\n}\n\n.attributes dt code {\n background: #ffffd2;\n}\n\n.attributes dt .idlAttrType 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 {\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\n/* --- TOC --- */\n.toc a {\n text-decoration: none;\n}\n\na .secno {\n color: #000;\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\n/* --- EXAMPLES --- */\npre.example {\n border-top: 1px solid #ff4500;\n border-bottom: 1px solid #ff4500;\n padding: 1em;\n margin: 2em 0;\n}\n\npre.example::before {\n content: "Example";\n display: block;\n width: 150px;\n background: #ff4500;\n color: #fff;\n font-family: initial;\n padding: 3px;\n font-weight: bold;\n margin: -1em 0 1em -1em;\n}\n\n/* --- EDITORIAL NOTES --- */\n.issue {\n padding: 1em;\n border: 1px solid #f00;\n background: #ffc;\n}\n\n.issue::before {\n content: "Issue";\n display: block;\n width: 150px;\n margin: -1.5em 0 0.5em 0;\n font-weight: bold;\n border: 1px solid #f00;\n background: #fff;\n padding: 3px 1em;\n}\n\n.note {\n padding: 1em;\n border: 2px solid #cff6d9;\n background: #e2fff0;\n}\n\n.note::before {\n content: "Note";\n display: block;\n width: 150px;\n margin: -1.5em 0 0.5em 0;\n font-weight: bold;\n border: 1px solid #cff6d9;\n background: #fff;\n padding: 3px 1em;\n}\n\n\n/* --- SYNTAX HIGHLIGHTING --- */\n/* Pretty printing styles. Used with prettify.js. */\n.str { color: #080; }\n.kwd { color: #008; }\n.com { color: #800; }\n.typ { color: #606; }\n.lit { color: #066; }\n.pun { color: #660; }\n.pln { color: #000; }\n.tag { color: #008; }\n.atn { color: #606; }\n.atv { color: #080; }\n.dec { color: #606; }\n/*pre.prettyprint { padding: 2px; border: 1px solid #888 }*/\n\n/* Specify class=linenums on a pre to get line numbering */\nol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */\nli.L0, li.L1, li.L2, li.L3, li.L5, li.L6, li.L7, li.L8 { list-style-type: none }\n/* Alternate shading for lines */\nli.L1, li.L3, li.L5, li.L7, li.L9 { background: #eee }\n\n@media print {\n .str { color: #060; }\n .kwd { color: #006; font-weight: bold; }\n .com { color: #600; font-style: italic; }\n .typ { color: #404; font-weight: bold; }\n .lit { color: #044; }\n .pun { color: #440; }\n .pln { color: #000; }\n .tag { color: #006; font-weight: bold; }\n .atn { color: #404; }\n .atv { color: #060; }\n}\n'});
+define("core/style",["core/utils","text!core/css/respec2.css"],function(g,e){return{run:function(l,h,o){progress("inserting ReSpec CSS");l.noReSpecCSS||$("<style/>").appendTo($("head",$(h))).attr("type","text/css").text(e);o()},ieDummy:1}});
+define("w3c/style",["core/utils"],function(g){return{run:function(e,l,h){progress("inserting W3C CSS");e.specStatus||error("Configuration specStatus is not set, required for w3c/style");e=e.specStatus;if(e=="FPWD"||e=="LC")e="WD";g.linkCSS(l,e=="unofficial"?"http://www.w3.org/StyleSheets/TR/w3c-unofficial":e=="base"?"http://www.w3.org/StyleSheets/TR/base":"http://www.w3.org/StyleSheets/TR/W3C-"+e+".css");h()},ieDummy:1}});
+define("core/tt",["core/utils"],function(g){return{tt:new Template,cache:{},loadAllTemplates:function(e){e||(e=document);var l=this;$("script",e).each(function(h,o){h=$(o);if(!(h.attr("type")!="application/x-tt"||!h.attr("id"))){o=h.html();if(/(NetFront|PlayStation)/i.test(navigator.userAgent)){o=o.replace(/</g,"<");o=o.replace(/>/g,">");o=o.replace(/"/g,'"');o=o.replace(/'/g,"'");o=o.replace(/&/g,"&")}o=o.replace(/^\s*<!--/,"");o=o.replace(/--\>\s*$/,"");o=o.replace(/^\s*<!\[CDATA\[/,
+"");o=o.replace(/]]\>\s*$/,"");l.cache[h.attr("id")]=o}})},loadRemote:function(e,l,h){alert("core/tt#loadRemote is deprecated, please update your code not to use it");var o=this;g.proxyLoad(e,function(m){m||error("Failed to load templates from "+e);o.loadFromHTML(m,l);h()})},loadFromHTML:function(e,l){l=$("<iframe/>").css({display:"none"}).attr("src","about:blank").appendTo($("body",l));var h=l[0].contentWindow.document;h.documentElement.innerHTML=e;this.loadAllTemplates(h);l.remove()},exec:function(e,
+l,h){progress("TT called with "+e);if(!this.cache[e])return null;var o;try{progress("before process");o=this.tt.process(this.cache[e],l);progress("after process")}catch(m){warn("ERROR: "+m);progress("CODE: "+this.tt.interpreterOutput)}h&&$("#"+h).html(o);return o},ieDummy:1}});if(!this.exports)this.exports={};
+var Template=exports.Template=function g(e){e=e||{};for(var l in e)this[l]=e[l];this.blocks={};e=e.BLOCKS||{};for(var h in e)if(e.hasOwnProperty(h)!=false){l=e[h];if(l instanceof Function)this.blocks[h]=l;else{var o=new g.Parser(this);o.parse(l.toString());l=new g.Interpreter(o.chunks(),this);this.blocks[h]=eval("("+l.output+")")}}};Template.Constants={CHOMP_NONE:0,CHOMP_ONE:1,CHOMP_COLLAPSE:2,CHOMP_GREEDY:3};Template.Exception=function(g,e){this.type=g;this.info=e};
+Template.Exception.prototype.__proto__=Error.prototype;Template.Exception.prototype.name="Template.Exception";Template.Exception.prototype.toString=function(){return this.type+" error - "+this.info};Template.Stash={PRIVATE:/^[._]/};
+Template.VMethods={ROOT_OPS:{inc:function(g){return++g},dec:function(g){return--g}},SCALAR_OPS:{},HASH_OPS:{keys:function(){var g=[];for(var e in this)g.push(e);return g},"import":function(g){for(var e in g)this[e]=g[e];return""}},LIST_OPS:{sort:function(g){if(g!==undefined)return this.sort(function(e,l){e=e[g];l=l[g];return e<l?-1:e>l?1:0});return this.sort(function(e,l){e=e.toLowerCase();l=l.toLowerCase();return e<l?-1:e>l?1:0})},push:function(g){this.push(g)},join:Array.prototype.join,reverse:Array.prototype.reverse,
+size:function(){return this.length}}};
+Template.prototype={constructor:Template,process:function(g,e){this.parserOutput=[];var l=new Template.Parser(this),h=new Template.Context(this);l.parse(g);this.parserTokens=[].concat(l._tokenBuffer);this.DBG_OUTPUT_TOKENS&&require("system").stderr.print("# Tokens: "+this.parserTokens.toSource());g=l.chunks();this.parserOutput=[].concat(g);this.DBG_OUTPUT_CHUNKS&&require("system").stderr.print("# Chunks: "+g.toSource());g=new Template.Interpreter(g,this);this.interpreterOutput=g.output;this.DBG_OUTPUT_FUNC&&
+require("system").stderr.print(g.output);g=eval("("+g.output+")");if(!e.global)e.global={};l=function(){};l.prototype=e;l.global=e.global;h.stash=new l;e=g(h);if(!this.TRIM)return e;return e.replace(/^\s*([\s\S]*?)\s*$/,"$1")}};
+Template.escapeString=function(g){var e=function(h){return"0123456789ABCDEF"[h>>8]+"0123456789ABCDEF"[h&15]},l=function(h){return h.replace(/[\x00-\x1F'\\]/g,function(o){if(o==="'"||o==="\\")return"\\"+o;return"\\x"+e(o.charCodeAt(0))})};if(typeof g==="string")return"'"+l(g)+"'";else throw new Template.Exception("escape","Called escapeString on a non-string: "+g);};Template.Filters={html:function(g){return g.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}};
+Template.Context=function(g){this.config=g||{};this.global={};this.blocks=this.config.blocks||{};this.filters=[this.config.FILTERS||{},Template.Filters];this.config.INCLUDE_PATH=this.config.INCLUDE_PATH||["."]};
+Template.Context.prototype={clone:function g(e,l){function h(){}h.prototype=e;if(!l)return new h;l=new h;for(var o in e)if(e.hasOwnProperty(o)&&typeof e[o]=="object")l[o]=g(e[o],true);return l},parse_file:function(g){if("config"in this==false)throw new Template.Exception("NO_CONFIG","No config");var e;for(var l in this.config.INCLUDE_PATH)try{e=this.load_file(this.config.INCLUDE_PATH[l]+"/"+g);break}catch(h){}if(e===undefined)return e;g=new Template.Parser(this.config);g.parse(e);e=new Template.Interpreter(g.chunks(),
+this.config);return eval("("+e.output+")")},include_block:function(g,e){var l=this.blocks,h=this.stash;this.blocks=this.clone(l);this.stash=this.clone(h,true);try{return this.process_block(g,e)}finally{this.blocks=l;this.stash=h}},process_block:function(g,e){var l;if(g instanceof Function==false){l=this.config.TRIM;g=g.toString();if(g in this.blocks==false){var h=this.parse_file(g);if(h===undefined)throw new Template.Exception("file",g+": not found");this.blocks[g]=h}g=this.blocks[g]}e=e||[];for(var o in e){h=
+e[o];this.dot_op(this.stash,[h[0]],{assign:h[1]})}g=g(this);if(l)g=g.replace(/^\s*([\s\S]*?)\s*$/,"$1");return g},nullObj:{toString:function(){return""}},dot_op:function(g,e,l){var h=g;l||(l={});if("assign"in l){g=e.pop();if(Template.Stash.PRIVATE&&Template.Stash.PRIVATE.exec(g))return;for(var o in e){var m=e[o];if(Template.Stash.PRIVATE&&Template.Stash.PRIVATE.exec(m))return;if(h[m]===undefined)h[m]={};h=h[m]}e=h[g];if(!l["default"]||!e)e=h[g]=l.assign;return e}for(o in e){m=e[o];if(Template.Stash.PRIVATE&&
+Template.Stash.PRIVATE.exec(m))return this.nullObj;var w=[];if(o==e.length-1)w=l.args||[];if(h[m]===undefined||h[m]==null)break;else h=h instanceof Array&&Template.VMethods.LIST_OPS[m]?Template.VMethods.LIST_OPS[m].apply(h,w):h instanceof Object&&Template.VMethods.HASH_OPS[m]?Template.VMethods.HASH_OPS[m].apply(h,w):Template.VMethods.SCALAR_OPS[m]?Template.VMethods.SCALAR_OPS.apply(h,w):h[m]instanceof Function?h[m].apply(h,w):h[m]}if(typeof h=="number"&&/\.[0-9]*00000[1-9]+$/.exec(h))return h.toPrecision(12).replace(/0+$/,
+"");if(h===undefined&&e.length==1&&this.stash===g&&e[0]in Template.VMethods.ROOT_OPS)h=Template.VMethods.ROOT_OPS[e[0]].apply(g,l.args||[]);return h===undefined?this.nullObj:h},$setLoop:function(g,e){this.dot_op(this.stash,["loop"],{assign:{index:g,first:g==0,count:++g,number:g,size:e,last:g==e}})},$forEachGenerator:function(g,e,l){function h(){try{return g.next()}catch(A){if(A!==StopIteration)throw A;}}for(var o=0,m=h(),w=h();m!==undefined;){if(l&&typeof g[m]=="object")for(var F in g[m])this.stash[F]=
+g[m][F];this.$setLoop(o++,w!==undefined?w+1:undefined);if(e(g[m])==this.StopIteration)break;m=w;w=h()}},$forEachObject:function(g,e){var l=[];if(Object.keys)l=Object.keys(g);else for(var h in g)l.push(h);l=l.sort();for(h=0;h<l.length;h++){this.$setLoop(h,g.length||0);if(e({key:l[h],value:g[l[h]]})==this.StopIteration)break}},forEach:function(g,e,l){if(!(g===undefined||g===this.nullObj)){var h=this.stash,o=this.stash.loop;try{if(l)this.stash=this.clone(h);if(g.__iterator__&&g.__iterator__()===g)return this.$forEachGenerator(g,
+e,l);else if(g instanceof Array==false){if(!l&&typeof g=="object")return this.$forEachObject(g,e,l);g=[g]}for(var m=0;m<g.length;m++){if(l&&typeof g[m]=="object")for(var w in g[m])this.stash[w]=g[m][w];this.$setLoop(m,g.length);if(e(g[m]||undefined)==this.StopIteration)break}}finally{this.stash=h;if(!l&&o)this.stash.loop=o}}},load_file:function(g){throw new Template.Exception("file",Template.escapeString(g)+": not found");},$catch:function(g){g instanceof Template.Exception||(g=new Template.Exception("undef",
+g));this.dot_op(this.stash,["error"],{assign:g});this.dot_op(this.stash,["e"],{assign:g});return g},$error_matches:function(g,e){if(g.type==e)return true;e+=".";return g.type.substr(0,e.length)==e},filter:function(g){var e;for(var l in this.filters)if(g in this.filters[l]!=false){e=this.filters[l][g];if(typeof e!="function")throw new Template.Exception("filter","invalid FILTER entry for '"+g+"' (not a function)");}if(!e)throw new Template.Exception("filter",Template.escapeString(g)+": not found");
+return e}};try{var fs=require("fs-base");if(typeof fs!="undefined"&&"rawOpen"in fs)Template.Context.prototype.load_file=function(g){var e;try{e=new fs.rawOpen(g,"r")}catch(l){throw new Template.Exception("file",Template.escapeString(g)+": not found");}return e.readWhole()}}catch(e$$33){}
+Template.Parser=function(g){this.end_tag=this.default_end_tag;this.start_tag=this.default_start_tag;this._tokenWatermark=this.min_precedence=0;this._tokenBuffer=[];g||(g={});this.config=g;if(g.DEBUG){var e=this;this._tracedFunctions.split(/\s+/).forEach(function(l){var h=e.__proto__[l];e[l]=function(){try{if(l=="consumeToken")e._logCall(l+"("+Template.escapeString(this.token.literal||this.token.type)+")");else if(l=="assertToken")e._logCall(l+"("+arguments[0].toSource()+")");else l=="binary_expr"?
+e._logCall(l+"("+(arguments[1]||0)+")"):e._logCall(l);var o=h.apply(e,arguments);e._exitCall(l);return o}catch(m){e._exitCall(l,1);throw m;}};e[l].origFunc=h});this._callIndent=""}};
+Template.Parser.prototype={_logCall:function(g){this.log("* "+this._callIndent+g);this._callIndent+=" "},_exitCall:function(g,e){this._callIndent=this._callIndent.substr(0,this._callIndent.length-2);if(g!="consumeToken")this.log("* "+this._callIndent+(e?"died in ":"end ")+g)},default_start_tag:"\\[%",default_end_tag:"%\\]",_getToken:function(){if(this._tokenBuffer.length>this._tokenWatermark)return this._tokenBuffer[this._tokenWatermark];return{type:"NUL"}},consumeToken:function(){this._tokenWatermark>=
+this._tokenBuffer.length&&this.parseError(new Error("Tried to consume token when none were in the buffer!"));var g=this.token;this._tokenWatermark++;this.token=this._getToken();return g},unconsumeToken:function(){this._tokenWatermark<1&&this.parseError(new Error("Tried to unconsume token when the buffer was already at start-of-block!"));this._tokenWatermark--;this.token=this._getToken()},parseError:function(g){var e=this.origInput.substr(this.token.position,10).replace(/\n/g,"\\n");if(this.token.position+
+10<this.origInput.length)e+="...";throw new Error(g+" at '"+e+"' "+Template.escapeString(this.token));},log:function(g){if(typeof window!="undefined"&&window.console)this.log=function(e){return console.log.call(console.log,e.replace(/%([a-z])/g,"%%$1"))};else if(typeof print!="undefined")this.log=function(e){print(e)};else{if(!this._log)this._log=[];this.log=function(e){this._log.push(e)}}return this.log(g)},assertToken:function(g,e){if(typeof g=="string"){if(this.token.type!=g)this.parseError(e?
+e:g+" expected")}else if(g.type!=this.token.type)this.parseError(e?e:g.type+" expected");else if(g.literal&&g.literal!=this.token.literal)this.parseError(e?e:"'"+g.type+"' expected");return this.consumeToken()},assertRule:function(g,e){e=g.apply(this,e);if(g.origFunc)g=g.origFunc;var l;if(e===undefined){for(var h in this.__proto__)if(this.__proto__[h]===g){l=h+" expected";break}l||(l=g.name||g.toSource());this.parseError(l)}return e},chompFlags:"[-=~+]",chompValues:{"+":Template.Constants.CHOMP_NONE,
+"-":Template.Constants.CHOMP_ONE,"=":Template.Constants.CHOMP_COLLAPSE,"~":Template.Constants.CHOMP_GREEDY},precedence:{"?":0,":":0,"==":2,"!=":2,"<":2,">":2,">=":2,"<=":2,OR:5,AND:5,CAT:10,"-":20,"+":20,"%":30,"*":40,"/":40,DIV:40},parse:function(g){var e=this,l=new RegExp("^((?:.|\\n)*?)(?:("+this.start_tag+")((?:.|\\n)*?)("+this.end_tag+"))");this.origInput=g;var h=0;g=g;for(this._tokenBuffer=[];;){var o=this.config.POST_CHOMP,m=g.replace(l,function(w,F,A,c,ma){if(c)if(c[0]=="#")c=c.match(new RegExp(e.chompFlags+
+"$"))||"";else{var ta=e.config.PRE_CHOMP;c=c.replace(new RegExp("^("+e.chompFlags+")"),function(B,X){ta=e.chompValues[X];return""});if(ta&&F)switch(ta){case Template.Constants.CHOMP_NONE:break;case Template.Constants.CHOMP_ONE:F=F.replace(/\n?[^\S\n]*$/,"");break;case Template.Constants.CHOMP_COLLAPSE:F=F.replace(/\s*$/," ");break;case Template.Constants.CHOMP_GREEDY:F=F.replace(/\s*$/,"");break;default:throw new Error("unhandled prechomp flag "+ta);}c=c.replace(new RegExp("("+e.chompFlags+")s*$"),
+function(B,X){o=e.chompValues[X];return""})}if(F.length){if(e.config.INTERPOLATE)e._tokenBuffer=e._tokenBuffer.concat(e.interpolate_text(F,h));else e._tokenBuffer.push({type:"TEXT",literal:F,position:h});h+=F.length}h+=A.length;e._tokenBuffer=e._tokenBuffer.concat(e.tokenise(c,h));h+=c.length;e._tokenBuffer.push({type:";",position:h,automatic:1});h+=ma.length;return""});if(o&&m)switch(o){case Template.Constants.CHOMP_NONE:break;case Template.Constants.CHOMP_ONE:m=m.replace(/^(?:[^\S\n]*\n)/,"");break;
+case Template.Constants.CHOMP_COLLAPSE:m=m.replace(/^\s*/," ");break;case Template.Constants.CHOMP_GREEDY:m=m.replace(/^\s*/,"");break;default:throw new Error("unhandled postchomp flag "+o);}if(g.length==m.length)break;g=m}e=undefined;if(g.length)if(this.config.INTERPOLATE)this._tokenBuffer=this._tokenBuffer.concat(this.interpolate_text(g,h));else this._tokenBuffer.push({type:"TEXT",literal:g,position:h});this.token=this._getToken()},tokenise_regexp:/(#[^\n]*)|(["'])((?:\\\\|\\\2|.|\n)*?)\2|(-?\d+(?:\.\d+)?)|(\/?\w+(?:(?:\/|::?)\w*)+|\/\w+)|(\w+)|([(){}\[\]:;,\/\\]|\->|[+\-*]|\$\{?|=>|[=!<>]?=|[!<>]|&&?|\|\|?|\.\.?|\S+)/mg,
+tokenise:function(g,e){for(var l=new RegExp(this.tokenise_regexp.source,"mg"),h,o,m,w=[],F=e;o=l.exec(g);){e=F+l.lastIndex-o[0].length;if(!o[1]){if(m=o[3])if(o[2]=='"')if(m.match("[$\\\\]")){h="QUOTED";m=m.replace(/\\([^\$nrt])/g,"$1");m=m.replace(/\\([nrt])/g,function(A){return eval('"'+A+'"')});w.push({type:'"',literal:'"',position:e});e++;h=this.interpolate_text(m,e);w=w.concat(h);e+=o[2].length;w.push({type:'"',literal:'"',position:e});e++;continue}else{h="LITERAL";m="'"+m+"'"}else{h="LITERAL";
+m="'"+m+"'"}else if(o[2]){h="LITERAL";m="''"}else if((m=o[4])!==undefined)h="NUMBER";else if((m=o[5])!==undefined)h="FILENAME";else if((m=o[6])!==undefined){o=this.config.ANYCASE?m.toUpperCase():m;h=this.LEXTABLE[o];if(h!==undefined)m=o;else h="IDENT"}else if((m=o[7])!==undefined){o=m;h=this.LEXTABLE[o]===undefined?"UNQUOTED":this.LEXTABLE[o]}else throw new Error("Something went wrong in the tokeniser, and it matched nothing");w.push({type:h,literal:m,position:e})}}return w},interpolate_text:function(g,
+e){for(var l=/((?:\\.|[^\$]){1,3000})|(\$(?:(?:\{([^\}]*)\})|([\w\.]+)))/g,h,o,m,w=[];h=l.exec(g);){o=h[1];m=h[2];h=h[3]?h[3]:h[4];if(o&&o.length){e+=o.length;o=o.replace(/\\\$/,"$");w.push({type:"TEXT",literal:o,position:e})}if(h){w=w.concat(this.tokenise(h,e));e+=h.length;w.push({type:";",literal:";",position:e,automatic:1})}else if(m)throw new Error("interpolate dir");}return w},LEXTABLE:{FOREACH:"FOR",BREAK:"LAST","&&":"AND","||":"OR","!":"NOT","|":"FILTER",".":"DOT",_:"CAT","..":"TO","=":"ASSIGN",
+"=>":"ASSIGN",",":"COMMA","\\":"REF",and:"AND",or:"OR",not:"NOT",mod:"%",MOD:"%",div:"DIV",GET:"GET",CALL:"CALL",SET:"SET",DEFAULT:"DEFAULT",INSERT:"INSERT",INCLUDE:"INCLUDE",PROCESS:"PROCESS",WRAPPER:"WRAPPER",BLOCK:"BLOCK",END:"END",USE:"USE",PLUGIN:"PLUGIN",FILTER:"FILTER",MACRO:"MACRO",PERL:"PERL",RAWPERL:"RAWPERL",TO:"TO",STEP:"STEP",AND:"AND",OR:"OR",NOT:"NOT",DIV:"DIV",IF:"IF",UNLESS:"UNLESS",ELSE:"ELSE",ELSIF:"ELSIF",FOR:"FOR",NEXT:"NEXT",WHILE:"WHILE",SWITCH:"SWITCH",CASE:"CASE",META:"META",
+IN:"IN",TRY:"TRY",THROW:"THROW",CATCH:"CATCH",FINAL:"FINAL",LAST:"LAST",RETURN:"RETURN",STOP:"STOP",CLEAR:"CLEAR",VIEW:"VIEW",DEBUG:"DEBUG","!=":"CMPOP","==":"CMPOP","<":"CMPOP",">":"CMPOP",">=":"CMPOP","<=":"CMPOP","-":"BINOP","*":"BINOP","%":"BINOP","(":"(",")":")","[":"[","]":"]","{":"{","}":"}","${":"${",$:"$","+":"+","/":"/",";":";",":":":","?":"?"},expr:function(){if(this.token.type==="("){this.consumeToken();switch(this.token.type){case "IDENT":case "${":case "$":case "LIERAL":break;default:var g=
+this.assertRule(this.expr);this.assertToken(")");return g}g=this.sterm();g=this.token.type=="ASSIGN"?{type:"ASSIGN",lhs:g,rhs:this.assertRule(this.expr)}:this.expr_tail(g);this.assertToken(")");return g}g=this.term();if(g===undefined)return g;return this.expr_tail(g)},expr_tail:function(g){switch(this.token.type){case "?":case "CMPOP":case "BINOP":case "+":case "/":case "%":case "DIV":case "CAT":case "AND":case "OR":return this.binary_expr(g,this.min_precedence)}return g},token_precedence:function(g){g=
+g||this.token;g=g.type=="CMPOP"||g.type=="BINOP"?g.literal:g.type;return g in this.precedence?this.precedence[g]:-1},binary_expr:function(g,e){for(var l,h,o;this.token_precedence()>=e;){var m=this._tokenWatermark;l=this.consumeToken();o=this.token_precedence(l);l=l.type=="CMPOP"||l.type=="BINOP"?l.literal:l.type;for(h=this.assertRule(this.term);this.token_precedence()>=o;)h=this.binary_expr(h,this.token_precedence());if(l=="?"&&h.type!=":"){this._tokenWatermark=m;this._getToken();this.parseError(": expected after ?")}else g=
+{type:l,lhs:g,rhs:h}}return g},term:function(){if(this.token.type=="NOT"){this.consumeToken();return{type:"NOT",child:this.term()}}var g=this.lterm();if(g)return g;return this.sterm()},sterm:function(){switch(this.token.type){case "LITERAL":case "NUMBER":return this.consumeToken();case "REF":this.consumeToken();return{type:"REF",ident:this.assertRule(this.ident)};case '"':this.consumeToken();var g=this.quoted();this.assertToken('"');return g;default:return this.ident()}},quoted:function(){for(var g=
+[],e=true;e;)switch(this.token.type){case ";":this.consumeToken();break;case "TEXT":g.push(this.consumeToken());break;default:var l=this.ident();if(l===undefined)e=false;else g.push(l);break}if(g.length)return{type:"QUOTED",segments:g}},ident:function(){var g=[this.node()];if(g[0]!==undefined){for(;this.token.type=="DOT";){this.consumeToken();if(this.token.type=="NUMBER"){g.push(this.consumeToken());break}g.push(this.assertRule(this.node))}if(g.length==1)return g[0];return{type:"ident",segments:g}}},
+node:function(){var g=this.item();if(g!==undefined&&this.token.type=="("){this.consumeToken();g={type:"function_call",func:g};g.args=this.assertRule(this.args);this.assertToken(")");return g}return g},args:function(){for(var g=[[]];;){var e;e=this.token.type=="LITERAL"?this.consumeToken():this.ident();if(e!==undefined)if(this.token.type!="ASSIGN")g.push(e);else{this.assertToken("ASSIGN");g[0].push(e);g[0].push(this.assertRule(this.expr))}else{e=this.expr();if(e===undefined)break;g.push(e)}switch(this.token.type){case "COMMA":this.consumeToken();
+break;case "(":case "?":case "CMPOP":case "BINOP":case "+":case "/":case "DIV":case "%":case "CAT":case "AND":case "OR":e=g.pop();g.push(this.assertRule(this.expr_tail,[e]));break}this.token.type=="COMMA"&&this.consumeToken()}return g},item:function(){var g;switch(this.token.type){case "IDENT":return this.consumeToken();case "${":this.consumeToken();g={type:"interpret",term:this.assertRule(this.sterm)};this.consumeToken("}");return g;case "$":this.consumeToken();g=this.assertToken("IDENT");return g=
+this.config.V1DOLLAR?g:{type:"interpret",term:g};default:return}},lterm:function(){if(this.token.type=="["){this.consumeToken();if(this.token.type=="]"){this.consumeToken();return{type:"array",items:[]}}var g=this.sterm();if(g!==undefined){if(this.token.type=="TO"){this.consumeToken();g={type:"range",from:g,to:this.assertRule(this.sterm)};this.assertToken("]");return g}}else g=this.assertRule(this.lterm);for(g={type:"array",items:[g]};this.token.type!="]"&&this.token.type!="NUL";)this.token.type==
+"COMMA"?this.consumeToken():g.items.push(this.assertRule(this.term));this.assertToken("]");return g}else if(this.token.type=="{"){this.consumeToken();g={type:"hash",data:this.assertRule(this.params)};this.assertToken("}");return g}},params:function(){for(var g=[this.assertRule(this.param)];this.token.type!="NUL";)if(this.token.type=="COMMA")this.consumeToken();else{var e=this.param();if(e===undefined)break;g.push(e)}return g},param:function(){var g={type:"assign"};if(this.token.type=="LITERAL")g.to=
+this.consumeToken();else{g.to=this.item();if(g.to===undefined)return}this.assertToken("ASSIGN");g.value=this.assertRule(this.expr);return g},complex_statement:function(){var g;if(this.token.type=="LITERAL"){g=this.consumeToken();if(this.token.type=="ASSIGN"){this.consumeToken();return this.setlist_tail(g)}else g=this.expr_tail(g)}else{g=this.ident();if(g!==undefined)if(this.token.type=="ASSIGN"){this.consumeToken();if(this.token.type=="BLOCK")throw new Error("mdir");return this.setlist_tail(g)}else g=
+this.expr_tail(g);else{g=this.expr();if(!g)return}}if(g)return this.postfixed_condition(g)},setlist_tail:function(g){g=[{type:"ASSIGN",lhs:g}];for(g[0].rhs=this.token.type=="LITERAL"?this.consumeToken():this.assertRule(this.expr);this.token.type!=";";){if(this.token.type=="NUL")break;if(this.token.type=="COMMA")this.consumeToken();else{var e;e=this.token.type=="LITERAL"?this.consumeToken():this.assertRule(this.ident);this.assertToken("ASSIGN");g.push({type:"ASSIGN",lhs:e,rhs:this.assertRule(this.expr)})}}return{type:"setlist",
+chunks:g}},postfixed_condition:function(g){if(this.token.type=="IF"||this.token.type=="UNLESS"){g={type:this.consumeToken().type,body:[g]};g.condition=this.assertRule(this.expr);return this.postfixed_condition(g)}if(this.token.type=="WRAPPER"){this.consumeToken();var e=this.assertRule(this.nameargs);e.type="WRAPPER";e.chunks=[g];return this.postfixed_condition(e)}if(this.token.type=="FOR"||this.token.type=="WHILE"){e=this.consumeToken();g={type:e.type,loopvar:this.assertRule(e.type=="FOR"?this.loopvar:
+this.expr),chunks:[g]};return this.postfixed_condition(g)}if(this.token.type=="FILTER")return g={type:this.consumeToken().type,chunks:[g],filter:this.assertRule(this.lnameargs)};return g},atomexpr:function(){return this.expr()},atomdir:function(){switch(this.token.type){case "GET":case "CALL":return{type:this.consumeToken().type,expr:this.assertRule(this.expr)};case "SET":this.consumeToken();return this.assertRule(this.setlist);case "DEFAULT":return{type:this.consumeToken().type,expr:this.assertRule(this.setlist)};
+case "INSERT":case "INCLUDE":case "PROCESS":case "THROW":var g=this.consumeToken().type,e=this.assertRule(this.nameargs);e.type=g;return e;case "NEXT":case "LAST":case "CLEAR":return this.consumeToken();default:return}},loop:function(){if(this.token.type=="FOR"||this.token.type=="WHILE"){var g=this.consumeToken();g={type:g.type,loopvar:this.assertRule(g.type=="FOR"?this.loopvar:this.expr),chunks:[]};for(this.assertToken(";");this.token.type!="END";){if(this.token.type=="NUL")break;g.chunks.push(this.chunk())}this.assertToken("END");
+return g}},loopvar:function(){var g;if(this.token.type=="IDENT"){g=this.consumeToken();if(this.token.type=="ASSIGN")this.consumeToken();else if(this.token.type=="IN")this.consumeToken();else{g=undefined;this.unconsumeToken()}}var e={term:this.assertRule(this.term),args:this.args()};if(g)e.ident=g;return e},chunks:function(){for(var g=[];this.token.type!="NUL";)g.push(this.chunk());return g},chunk:function(){if(this.token.type=="TEXT")return this.consumeToken();else if(this.token.type==";")this.consumeToken();
+else{var g=this.assertRule(this.statement);this.assertToken(";");return g}},statement:function(){return this.complex_statement()||this.directive()||this.block()||this.wrapper_like()||this.filter()||this.expr()},directive:function(){var g=this.atomdir();if(g)return this.postfixed_condition(g);return this.condition()||this.switchBlock()||this.loop()||this.tryCatch()},condition:function(){if(this.token.type=="IF"||this.token.type=="UNLESS"){var g={type:this.consumeToken().type};g.condition=this.assertRule(this.expr);
+this.assertToken(";");for(g.body=[];["END","ELSE","ELSIF"].indexOf(this.token.type)==-1;){if(this.token.type=="NUL")break;g.body.push(this.chunk())}this.conditionElse(g);this.assertToken("END");return g}},conditionElse:function(g){for(var e=[];this.token.type=="ELSIF";){this.consumeToken();var l={condition:this.assertRule(this.expr)};this.assertToken(";");for(l.body=[];["END","ELSE","ELSIF"].indexOf(this.token.type)==-1;){if(this.token.type=="NUL")break;l.body.push(this.chunk())}e.push(l)}if(e.length)g.elseifs=
+e;if(this.token.type=="ELSE"){this.consumeToken();this.assertToken(";");for(g["else"]=[];["END","ELSE","ELSIF"].indexOf(this.token.type)==-1;){if(this.token.type=="NUL")break;g["else"].push(this.chunk())}}return g},setlist:function(){var g;g=this.token.type=="LITERAL"?this.consumeToken():this.ident();if(g===undefined)return g;this.assertToken("ASSIGN");return this.setlist_tail(g)},block:function(){if(this.token.type=="BLOCK"){this.consumeToken();var g={type:"BLOCK",name:this.token.type=="LITERAL"?
+this.consumeToken():this.assertRule(this.filename),args:this.metadata(),chunks:[]};for(this.assertToken(";");this.token.type!="END";)g.chunks.push(this.assertRule(this.chunk));this.assertToken("END");return g}},filename:function(){var g=this.filepart();if(g===undefined)return g;for(;this.token.type=="DOT";){this.consumeToken();var e=this.filepart();g.literal+="."+e.literal}return g},filepart:function(){if(this.token.type=="FILENAME"||this.token.type=="IDENT"||this.token.type=="NUMBER")return this.consumeToken()},
+metadata:function(){for(var g=[];this.token.type=="IDENT";){var e=this.consumeToken();this.assertToken("ASSIGN");var l;if(this.token.type=="LITERAL"||this.token.type=="NUMBER")l=this.consumeToken();else if(this.token.type=='"'){this.consumeToken();l=this.assertToken("TEXT");this.assertToken('"')}else this.assertToken("LITERAL");g.push({type:"META",lhs:e,rhs:l});this.token.type=="COMMA"&&this.consumeToken()}if(g.length)return g},lnameargs:function(){var g=this._tokenWatermark,e;if(this.token.type==
+"LITERAL")e=this.consumeToken();else if(this.token.type=='"'){this.consumeToken();e=this.assertRule(this.quoted);this.assertToken('"')}else e=this.item();if(e&&this.token.type=="ASSIGN"){this.consumeToken();return{lvalue:e,nameargs:this.assertRule(this.nameargs)}}else{this._tokenWatermark=g;this.token=this._getToken();return this.nameargs()}},nameargs:function(){if(this.token.type=="$"){this.consumeToken();return{type:"nameargs",names:[{type:"interpret",term:this.assertRule(this.ident)}],args:this.args()}}var g=
+this.assertRule(this.names),e;if(this.token.type=="("){this.consumeToken();e=this.assertRule(this.args);this.assertToken(")")}else e=this.assertRule(this.args);return{type:"nameargs",names:g,args:e}},names:function(){for(var g=[];;){var e=this.name();if(e===undefined)break;g.push(e);if(this.token.type!="+")break;this.consumeToken()}if(g.length)return g},name:function(){if(this.token.type=='"'){this.consumeToken();var g=this.assertRule(this.quoted);this.assertToken('"');return g}else return this.token.type==
+"LITERAL"?this.consumeToken():this.filename()},wrapper_like:function(){if(["WRAPPER"].indexOf(this.token.type)!=-1){var g=this.consumeToken().type,e=this.assertRule(this.nameargs);e.type=g;e.chunks=[];for(this.assertToken(";");this.token.type!="END";)e.chunks.push(this.assertRule(this.chunk));this.assertToken("END");return e}},filter:function(){if(this.token.type=="FILTER"){var g=this.consumeToken();g.filter=this.assertRule(this.lnameargs);g.chunks=[];for(this.assertToken(";");this.token.type!="END";){if(this.token.type==
+"NUL")break;g.chunks.push(this.assertRule(this.chunk))}this.assertToken("END");return g}},switchBlock:function(){if(this.token.type=="SWITCH"){var g=this.consumeToken(),e=this.assertRule(this.expr);this.assertToken(";");g.expr=e;for(g.cases=[];this.token.type=="CASE";){e=this.consumeToken();if(this.token.type==";"){this.consumeToken();e["default"]=true}else{if(this.token.type=="DEFAULT"){e["default"]=true;this.consumeToken()}else e["case"]=this.assertRule(this.term);this.assertToken(";")}for(e.chunks=
+[];["CASE","END","NUL"].indexOf(this.token.type)==-1;)e.chunks.push(this.chunk());g.cases.push(e)}this.assertToken("END");return g}},tryCatch:function(){if(this.token.type=="TRY"){this.consumeToken();var g={type:"TRY",tryBlock:[],catches:[],"final":[]};for(this.assertToken(";");["CATCH","FINAL"].indexOf(this.token.type)==-1;){this.token.type=="NUL"&&this.assertToken("END");g.tryBlock.push(this.assertRule(this.chunk))}for(;this.token.type=="CATCH";){var e=this.consumeToken();switch(this.token.type){case ";":e.signature=
+false;break;case "DEFAULT":e.signature=this.consumeToken();break;default:e.signature=this.assertRule(this.filename);break}this.assertToken(";");for(e.block=[];["CATCH","FINAL","END"].indexOf(this.token.type)==-1;){this.token.type=="NUL"&&this.assertToken("END");e.block.push(this.assertRule(this.chunk))}g.catches.push(e)}if(this.token.type=="FINAL"){this.consumeToken();for(this.assertToken(";");this.token.type!="END";)g["final"].push(this.assertRule(this.chunk))}this.assertToken("END");return g}},
+_tracedFunctions:"consumeToken node ident sterm term expr expr_tail item lterm params param chunks condition conditionElse statement tokenise interpolate_text assign setlist directive loop loopvar binary_expr args block metadata filename nameargs names wrapper_like complex_statement tryCatch lnameargs filter atomdir"};
+Template.Interpreter=function(g,e){this.blocks={};this.config=e||{};this.output=this.prelude;this.inWhile=this.inFor=0;g=this.walk(g);for(var l in this.blocks)this.output+=" ctx.blocks["+l+"] = "+this.blocks[l]+";\n";this.output+=g+this.postlude};
+Template.Interpreter.prototype={prelude:"function(ctx) {\n var out_arr = []; ctx.StopIteration = (typeof StopIteration === 'undefined') ? 'StopIteration' : StopIteration; function __perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? val : '' }; function __not_perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? '' : 1 }; try {\n",postlude:"\n }\n catch (e) { if (!(e instanceof Template.Exception && e.type == 'stop')) throw e; } \n return out_arr.join('');\n}",
+walk:function(g){var e="";for(var l in g){var h=g[l];if(!(h===undefined||l=="unique")){var o=["IF","FOR","CALL","setlist","DEFAULT","UNLESS","BLOCK","NEXT","LAST","WHILE","SWITCH","TRY","THROW","CATCH","CLEAR","FILTER"].indexOf(h.type)==-1,m=o||["THROW","FILTER"].indexOf(h.type)!=-1;if(h.toSource)e+="// "+h.toSource()+"\n";if(o)e+="out_arr.push(";e+=this.$get_term(h);if(o)e+=")";if(m)e+=";\n"}}return e},$get_term:function(g){if(this["build"+g.type])return this["build"+g.type](g);switch(g.type){case "TEXT":return Template.escapeString(g.literal);
+case "ident":return"ctx.dot_op("+this.handle_ident_segments(g.segments)+")";case "IDENT":return"ctx.dot_op(ctx.stash, ["+Template.escapeString(g.literal)+"])";case "NUMBER":return parseFloat(g.literal);case "LITERAL":return g.literal;case "IF":case "UNLESS":var e=this.$get_term(g.condition);if(g.type=="UNLESS")e="__not_perl_truth("+e+")";else if(["<","<=",">",">=","==","!="].indexOf(g.condition.type)==-1)e="__perl_truth("+e+")";var l=this.walk(g.body);e="if ("+e+") {\n"+l.replace(/^/gm," ")+"\n}";
+if("elseifs"in g)for(var h in g.elseifs){l=g.elseifs[h];e+=" else if (__perl_truth("+this.$get_term(l.condition)+")) {\n"+this.walk(l.body).replace(/^/gm," ")+"\n}"}if(g["else"])e+=" else {\n"+this.walk(g["else"]).replace(/^/gm," ")+"\n}";return e;case "+":case "/":case "*":case "%":case "-":case "DIV":return this.math_op(g);case "interpret":e=[];e.push(this.$get_term(g.term));g.literal&&e.push(g.literal);return"ctx.dot_op(ctx.stash, [ "+e.join(" + ")+"])";case "GET":case "CALL":return this.$get_term(g.expr);
+case "QUOTED":e=[];for(h in g.segments){l=g.segments[h];l.type!=";"&&e.push(this.$get_term(l))}return e.join(" + ");case "function_call":var o=this.handle_ident_segments([g.func]);l=o[0];o=o[1];g=this.handle_function_args(g.args);return"ctx.dot_op("+l+", ["+o+"], { args: "+g+" } )";case "DEFAULT":var m=true;g=g.expr;case "setlist":e=[];for(h in g.chunks){var w=g.chunks[h];o=this.handle_ident_segments([w.lhs]);l=o[0];o=o[1];l="ctx.dot_op("+l+", "+o+", { "+(m?"default:1, ":"")+"assign: ";w.rhs.type==
+"interpret"?e.push(l+"ctx.dot_op(ctx.stash, ["+this.$get_term(w.rhs.term)+"] ) } )"):e.push(l+this.$get_term(w.rhs)+" } )")}return e.join(", ")+";";case "FOR":h=g.loopvar.ident?this.handle_ident_segments([g.loopvar.ident]):undefined;e="ctx.forEach("+this.$get_term(g.loopvar.term)+", function(value) {\n ";if(h)e+="\n ctx.dot_op("+h+", { assign: value } );\n";this.inFor++;g=this.walk(g.chunks);this.inFor--;e+=g.replace(/^/mg," ");e+="\n}";if(h===undefined)e+=", true";e+=");";return e;case "WHILE":h=
+this.$get_term(g.loopvar);h.match(/^__(?:not_)?perl_truth\(/)||(h="__perl_truth("+h+")");e="while("+h+") {\n";this.inWhile++;g=this.walk(g.chunks);this.inWhile--;e+=g.replace(/^/mg," ");e+="\n}";return e;case "array":return"["+g.items.map(this.$get_term,this).join(", ")+"]";case "hash":e=[];for(h in g.data){l=g.data[h];if(l.to.type!="IDENT")throw new Error("Cant handle "+l.to.type+" in hash key!");e.push(l.to.literal+": "+this.$get_term(l.value))}return"{ "+e.join(", ")+" }";case "OR":return"( __perl_truth("+
+this.$get_term(g.lhs)+") || __perl_truth("+this.$get_term(g.rhs)+") )";case "AND":return"__perl_truth("+this.$get_term(g.lhs)+") && __perl_truth("+this.$get_term(g.rhs)+")";case "NOT":return"__not_perl_truth("+this.$get_term(g.child)+")";case "CAT":return"("+this.$get_term(g.lhs)+").toString()+("+this.$get_term(g.rhs)+").toString()";case "==":case "!=":case ">=":case "<=":case "<":case ">":return"__perl_truth(("+this.$get_term(g.lhs)+") "+g.type+" ("+this.$get_term(g.rhs)+"))";case "?":return"( __perl_truth("+
+this.$get_term(g.lhs)+") ?"+this.$get_term(g.rhs)+")";case ":":return"("+this.$get_term(g.lhs)+"):("+this.$get_term(g.rhs)+")";case "BLOCK":if(g.name.type=="IDENT"||g.name.type=="FILENAME")h=Template.escapeString(g.name.literal);else if(g.name.type=="LITERAL")h=g.name.literal;else throw new Error("Handle "+Template.escapeString(g.name));this.blocks[h]=(new Template.Interpreter(g.chunks)).output;return"";case "PROCESS":return"ctx.process_block("+this.handle_nameargs(g)+")";case "INCLUDE":return"ctx.include_block("+
+this.handle_nameargs(g)+")";case "WRAPPER":g.args[0].push({type:"IDENT",literal:"content"});g.args[0].push({type:"LITERAL",literal:"ctx.process_block("+(new Template.Interpreter(g.chunks)).output+")"});if(g.names.length==1)return"ctx.include_block("+this.handle_nameargs(g)+")";l=e="";for(h=g.names.length-1;h>=0;h--){m=g.names[h];e="ctx.include_block(";if(h==g.names.length-1)e+=this.handle_nameargs({names:[m],args:g.args});else{e+=this.handle_nameargs({names:[m],args:[[]]});e+=', [["content", '+l+
+"]]"}e+=")";l=e}return e;case "range":if(typeof Range!="undefined")return"Range("+this.$get_term(g.from)+", "+this.$get_term(g.to)+"+1)";else{e=[];for(h=parseInt(g.from.literal);h<=parseInt(g.to.literal);h++)e.push(h);return Template.escapeString(e)}case "NEXT":if(this.inWhile)return"continue;";else if(this.inFor)return"return;";else throw new Template.Exception("SYNTAX_ERROR","NEXT used outside of loop");case "LAST":if(this.inWhile)return"break;";else if(this.inFor)return"return ctx.StopIteration;";
+else throw new Template.Exception("SYNTAX_ERROR",g.literal+" used outside of loop");case "SWITCH":e="switch ("+this.$get_term(g.expr)+") {\n";for(h in g.cases){l=g.cases[h];e+=l["default"]?" default:\n":" case "+this.$get_term(l["case"])+":\n";l=this.walk(l.chunks);e+=l.replace(/^/gm," ");e+="\n break;\n"}e+="}\n";return e;case "THROW":if(g.names.length&&g.args.length>1){if(g.names.length>1)throw new Error("Dont know how to handle this");e="throw new Template.Exception(";e+=this.handle_nameargs(g);
+return e+")"}return"throw "+this.handle_nameargs(g);default:throw new Error("Unhandled "+g.toSource());}},buildTRY:function(g){var e="(function(out){ var out_arr = []; try {\n",l=this.walk(g.tryBlock);e+=l.replace(/^/gm," ");e+="}\n";if(g.catches.length){e+="catch ($e) { $e = ctx.$catch($e); \n";var h=0,o=false;for(var m in g.catches){l=g.catches[m];if(!l.signature||l.signature.type=="DEFAULT"){o=true;if(h)e+=" else {\n";l=this.walk(l.block);e+=l.replace(/^/gm," ");if(h)e+="\n }\n";break}else if(l.signature){e+=
+" ";if(h)e+="else ";e+="if (ctx.$error_matches($e, "+Template.escapeString(l.signature.literal)+") ) {\n";e+=this.walk(l.block).replace(/^/gm," ");e+="\n }\n";h++}}if(!o){if(h)e+="else ";e+="throw $e\n"}e+="\n}\n"}e+="finally {\n";if(g["final"].length)e+=this.walk(g["final"]).replace(/^/gm," ");e+="out.push.apply(out, out_arr); }})(out_arr)";return e},buildCLEAR:function(){return"out_arr=[];"},buildFILTER:function(g){var e="(function(out){ var out_arr = [];";e+="var $filter = ctx.filter("+this.handle_nameargs(g.filter)+
+");\n";e+=this.walk(g.chunks).replace(/^/gm," ");e+="\n out.push($filter(out_arr.join('')));";return e+"\n})(out_arr)"},handle_nameargs:function(g){var e;if(g.names.length==1)if(g.names[0].type=="IDENT"||g.names[0].type=="FILENAME")e=Template.escapeString(g.names[0].literal);else if(g.names[0].type=="LITERAL")e=g.names[0].literal;else if(g.names[0].type=="interpret")e=this.$get_term(g.names[0].term);else if(g.names[0].type=="QUOTED")e=this.$get_term(g.names[0]);if(e===undefined)throw new Error("handle "+
+Template.escapeString(g.names));if(g.args.length>1||g.args[0].length)e+=", "+this.make_namearg_dict(g.args);return e},make_namearg_dict:function(g){var e=g.shift(),l="";if(e.length){if(e.length%2)throw new Error("Named args off odd length");for(l=[];e.length;){var h=[e.shift(),e.shift()],o;if(h[0].type=="IDENT")o=Template.escapeString(h[0].literal);else throw new Error("handle");if(h[1].type=="LITERAL"||h[1].type=="NUMBER")h=h[1].literal;else if(h[1].type=="IDENT"||h[1].type=="function_call")h=this.$get_term(h[1]);
+else throw new Error("handle "+h[1].toSource());l.push("["+o+", "+h+"]")}l="["+l.join(", ")+"]"}for(var m in g){if(l)l+=", ";l+=this.$get_term(g[m])}return l},handle_function_args:function(g){g.shift();var e=[],l="";for(var h in g)e.push(this.$get_term(g[h]));if(e.length)l+=e.join(", ");return"["+l+"]"},handle_ident_segments:function(g){var e="ctx.stash",l=[];for(var h in g){var o=g[h];if(o.type=="IDENT")l.push(Template.escapeString(o.literal));else if(o.type=="interpret")o.term.type=="LITERAL"?l.push(o.term.literal):
+l.push(this.$get_term(o.term));else if(o.type=="function_call"){if(o.args[0]instanceof Array==false)throw new Error("args[0] is not an array!");if(o.func.type=="IDENT")l.push(Template.escapeString(o.func.literal));else if(o.func.type=="interpret")l.push(this.$get_term(o.func));else throw new Error("Unknown function type name "+o.func.type+"\n"+o.toSource());e="ctx.dot_op("+e+", ["+l+"], { args: "+this.handle_function_args(o.args)+" } )";l=[]}else if(o.type=="LITERAL"||o.type=="NUMBER")l.push(o.literal);
+else if(o.type=="ident")return this.handle_ident_segments(o.segments);else throw new Error("Unknown segment type in ident clause: "+o.type+"\n"+o.toSource());}if(l.length==0)return e;return[e,"["+l+"]"]},math_op:function(g){var e="( ";e+=g.lhs.type!="NUMBER"?"Number( "+this.$get_term(g.lhs)+")":this.$get_term(g.lhs);e+=" "+(g.type=="DIV"?"/":g.type)+" ";e+=g.rhs.type!="NUMBER"?"parseInt( "+this.$get_term(g.rhs)+" )":this.$get_term(g.rhs);e+=")";return g.type=="DIV"?"parseInt"+e:e}};var log=[];
+if(exports)exports.render=function(g,e){return(new Template).process(g,e)};define("require/text!w3c/templates/headers.html",function(){return"\n<script type='application/x-tt' id='w3c-headers'><![CDATA[\n <div class='head'>\n <p>\n [% IF specStatus != \"unofficial\" %]\n <a href='http://www.w3.org/'><img width='72' height='48' src='http://www.w3.org/Icons/w3c_home' alt='W3C'/></a>\n [% END %]\n [% IF specStatus == \"XGR\" %]\n <a href='http://www.w3.org/2005/Incubator/XGR/'><img alt='W3C Incubator Report' \n src='http://www.w3.org/2005/Incubator/images/XGR' height='48' width='160'/></a>\n [% END %]\n </p>\n <h1 class='title' id='title'>[% title %]</h1>\n [% IF subtitle %]<h2 id='subtitle'>[% subtitle %]</h2>[% END %]\n <h2>[% specStatus == \"unofficial\" ? \"\" : \"W3C \" %][% specStatusText %] [% publishHumanDate %]</h2>\n <dl>\n [% IF !isNoTrack %]\n <dt>This Version:</dt><dd>[% INCLUDE \"link-uri\" uri = thisVersion %]</dd>\n <dt>Latest Published Version:</dt><dd>[% INCLUDE \"link-uri\" uri = latestVersion %]</dd>\n [% IF edDraftURI %]\n <dt>Latest Editor's Draft:</dt><dd>[% INCLUDE \"link-uri\" uri = edDraftURI %]</dd>\n [% END %]\n [% END %]\n [% IF specStatus != \"FPWD\" and specStatus != \"ED\" and !isNoTrack %]\n [% IF prevED %]\n <dt>Previous editor's draft:</dt><dd>[% INCLUDE \"link-uri\" uri = prevED %]</dd>\n [% ELSE %]\n <dt>Previous version:</dt><dd>[% INCLUDE \"link-uri\" uri = prevVersion %]</dd>\n [% END %]\n [% END %]\n [% IF prevRecShortname %]\n <dt>Latest Recommendation:</dt><dd>[% INCLUDE \"link-uri\" uri = prevRecURI %]</dd>\n [% END %]\n [% INCLUDE \"show-people\" name = \"Editor\" people = editors %]\n [% INCLUDE \"show-people\" name = \"Author\" people = authors %]\n </dl>\n [% IF errata %]\n <p>Please refer to the <a href='[% errata %]'>errata</a> for this document, which may include \n some normative corrections.</p>\n [% END %]\n [% INCLUDE \"alternate-formats\" formats = alternateFormats %]\n [% IF specStatus == \"REC\" %]\n <p>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.</p>\n [% END %]\n <p class='copyright'>\n [% IF specStatus == \"unofficial\" %]\n [% IF additionalCopyrightHolders %]\n [% additionalCopyrightHolders %]\n [% ELSE %]\n This document is licensed under a <a class='subfoot' href='http://creativecommons.org/licenses/by/3.0/' rel='license'>Creative\n Commons Attribution 3.0 License</a>.\n [% END %]\n [% ELSE %]\n <a class='license' href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> © \n [% IF copyrightStart %][% copyrightStart %]-[% END %][% publishYear %]\n [% IF additionalCopyrightHolders %] [% additionalCopyrightHolders %] &[% END %]\n <a class='publisher' href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C</acronym></a><sup>®</sup>\n (<a href='http://www.csail.mit.edu/'><acronym title='Massachusetts Institute of Technology'>MIT</acronym></a>,\n <a href='http://www.ercim.eu/'><acronym title='European Research Consortium for Informatics and Mathematics'>ERCIM</acronym></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 [% END %]\n </p><hr/></div>\n[% BLOCK \"link-uri\" -%]\n <a href='[% uri %]'>[% uri %]</a>\n[%- END %]\n[% BLOCK \"show-people\" %]\n [% IF people.length %]\n <dt>[% name %][% people.length > 1 ? \"s\" : \"\" %]:</dt>\n [% FOREACH p IN people %]\n <dd class='[% name %]'>\n [%- IF p.url.length > 0 %]<a class='name' href='[% p.url %]'>[% p.name %]</a>[% ELSE %]<span class='name'>[% p.name %]</span>[% END -%]\n [%- IF p.company %], \n [% IF p.companyURL %]\n <a class='company' href='[% p.companyURL %]'>[% p.company %]</a>\n [% ELSE %]\n <span class='company'>[% p.company %]</span>\n [% END %]\n [% END %]\n [% IF p.mailto %] <a class='email' href='mailto:[% p.mailto %]'>[% p.mailto %]</a>[% END %]\n [% IF p.note %] ([% p.note %])[% END %]\n </dd>\n [% END %]\n [% END %]\n[% END %]\n[% BLOCK \"alternate-formats\" %]\n [% IF formats and formats.length %]\n <p>\n This document is also available in [% formats.length == 1 ? \"this\" : \"these\" %] non-normative \n format[% formats.length > 1 ? \"s\" : \"\" %]:\n [% FOREACH fmt IN formats %]\n [% IF loop.index %][% loop.size == 2 ? \" \" : \", \" %][% loop.index == loop.max ? \"and \" : \"\" %][% END %]\n <a href='[% fmt.uri %]'>[% fmt.label %]</a>\n [% END -%]\n .</p>\n [% END %]\n[% END %]\n]]\><\/script>\n\n<script type='application/x-tt' id='w3c-sotd'><![CDATA[\n [% IF specStatus == \"unofficial\" %]\n <section id='sotd' class='introductory'><h2>Status of This Document</h2>\n <p>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.</p></section>\n [% ELSIF isNoTrack %]\n <section id='sotd' class='introductory'><h2>Status of This Document</h2>\n <p>This document is merely a W3C-internal[% specStatus == \"MO\" ? \"member-confidential \" : \"\" %] document. It has no \n official standing of any kind and does not represent consensus of the W3C Membership.</p></section>\n [% ELSE %]\n <section id='sotd' class='introductory'>\n <h2>Status of This Document</h2>\n <p><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></p>\n [% custom %]\n <p>\n This document was published by the <a href='[% wgURI %]'>[% wg %]</a> as \n [% specStatus == \"ED\" or specStatus == \"XGR\" or specStatus == \"IG-NOTE\" ? \"an\" : \"a\" %]\n [% longStatus %].\n [% IF isRecTrack and specStatus != \"REC\" %] This document is intended to become a W3C Recommendation.[% END %]\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 specStatus == \"LC\" %]The Last Call period ends [% humanLCEnd %].[% END %]\n [% IF specStatus == \"CR\" %]\n W3C publishes a Candidate Recommendation to indicate that the document is believed to be stable and \n to encourage implementation by the developer community. This Candidate Recommendation is expected to \n advance to Proposed Recommendation on [% humanCREnd %].\n [% END %]\n All feedback is welcome.\n </p>\n [% IF specStatus != \"REC\" %]\n <p>\n Publication as a [% longStatus %] does not imply endorsement by the W3C Membership. This is a draft \n document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate\n to cite this document as other than work in progress.\n </p>\n [% END %]\n [% IF specStatus == \"LC\" %]\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 [% END %]\n <p>\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 [% IF !isRecTrack and maturity == \"WD\" %]The group does not expect this document to become a W3C Recommendation.[% END %]\n W3C maintains a <a href='[% wgPatentURI %]' rel='disclosure'>public list of any patent disclosures</a> \n made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An\n 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 </p>\n </section>\n [% END %]\n]]\><\/script>\n\n<script type='application/x-tt' id='w3c-conformance'><![CDATA[\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]]\><\/script>\n\n"});
+define("w3c/headers",["core/tt","core/utils","text!w3c/templates/headers.html"],function(g,e,l){return{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",XGR:"Incubator Group Report",MO:"Member-Only Document",ED:"Editor's Draft",FPWD:"Working Draft",WD:"Working Draft","FPWD-NOTE":"Working Draft","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"},status2maturity:{FPWD:"WD",LC:"WD","FPWD-NOTE":"WD","WD-NOTE":"WD","LC-NOTE":"LC","WG-NOTE":"NOTE"},status2long:{FPWD:"First Public Working Draft","FPWD-NOTE":"First Public Working Draft",LC:"Last Call Working Draft","LC-NOTE":"Last Call Working Draft"},recTrackStatus:["FPWD","WD","LC","CR","PR","PER","REC"],
+noTrackStatus:["MO","unofficial","base"],run:function(h,o,m){progress("adding document headers");for(var w in this.status2text)this.status2long[w]||(this.status2long[w]=this.status2text[w]);h.specStatus||error("Missing required configuration: specStatus");h.specStatusText=this.status2text[h.specStatus];h.title=o.title?o.title:"No Title";if(!h.subtitle)h.subtitle="";if(h.publishDate){if(!(h.publishDate instanceof Date))h.publishDate=e.parseSimpleDate(h.publishDate)}else h.publishDate=e.parseLastModified(o.lastModified);
+h.publishYear=h.publishDate.getFullYear();h.publishHumanDate=e.humanDate(h.publishDate);h.shortName||error("Missing required configuration: shortName");if(!h.edDraftURI){h.edDraftURI="";h.specStatus==="ED"&&warn("Editor's Drafts should set edDraftURI.")}h.maturity=this.status2maturity[h.specStatus]?this.status2maturity[h.specStatus]:h.specStatus;h.thisVersion="http://www.w3.org/TR/"+h.publishDate.getFullYear()+"/"+h.maturity+"-"+h.shortName+"-"+e.concatDate(h.publishDate)+"/";if(h.specStatus=="ED")h.thisVersion=
+h.edDraftURI;h.latestVersion="http://www.w3.org/TR/"+h.shortName+"/";if(h.previousPublishDate){h.previousMaturity||error("previousPublishDate is set, but not previousMaturity");if(!(h.previousPublishDate instanceof Date))h.previousPublishDate=e.parseSimpleDate(h.previousPublishDate);w=this.status2maturity[h.previousMaturity]?this.status2maturity[h.previousMaturity]:h.previousMaturity;h.prevVersion="http://www.w3.org/TR/"+h.previousPublishDate.getFullYear()+"/"+w+"-"+h.shortName+"-"+e.concatDate(h.previousPublishDate)+
+"/"}else{h.specStatus!="FPWD"&&h.specStatus!="ED"&&!h.isNoTrack&&error("Document on track but no previous version.");h.prevVersion=""}h.isRecTrack=h.noRecTrack?false:$.inArray(h.specStatus,this.recTrackStatus)>=0;h.isNoTrack=$.inArray(h.specStatus,this.noTrackStatus)>=0;if(!h.prevED)h.prevED="";if(!h.prevRecShortname)h.prevRecShortname="";if(!h.prevRecURI)h.prevRecURI="";if(!h.editors||h.editors.length===0)error("At least one editor is required");if(!h.authors)h.authors=[];w=function(F,A){A.name||
+error("All authors and editors must have a name.");if(!A.uri)A.uri="";if(!A.company)A.company="";if(!A.companyURL)A.companyURL="";if(!A.mailto)A.mailto="";if(!A.note)A.note=""};$.each(h.editors,w);$.each(h.authors,w);if(!h.errata)h.errata="";if(h.alternateFormats)$.each(h.alternateFormats,function(F,A){if(!A.uri||!A.label)error("All alternate formats must have a uri and a label.")});else h.alternateFormats="";if(!h.additionalCopyrightHolders)h.additionalCopyrightHolders="";if(!h.copyrightStart)h.copyrightStart=
+"";w=$("#sotd");if(w.length){h.custom=w.html();w.remove()}else{h.isRecTrack&&warn("Rec-track documents should have a custom SotD paragraph.");h.custom=""}if(h.specStatus!="unofficial"&&!h.isNoTrack)if(!h.wgURI||!h.wg||!h.wgPublicList||!h.wgPatentURI)error("All of the following must be configured: wgURI, wg, wgPublicList, wgPatentURI");if(h.specStatus==="LC"){h.lcEnd||error("LC drafts must have lcEnd set.");h.humanLCEnd=e.humanDate(h.lcEnd)}if(h.specStatus==="CR"){h.crEnd||error("CR drafts must have crEnd set.");
+h.humanCREnd=e.humanDate(h.crEnd)}h.longStatus=this.status2long[h.specStatus];progress("headers configuration done");g.loadFromHTML(l,o);progress("running TT for headers");$("body",o).prepend($(g.exec("w3c-headers",h)));progress("handling abstract");(o=$("#abstract"))||error("Document must have one element with ID 'abstract'");o.prepend("<h2>Abstract</h2>");o.addClass("introductory");progress("running template for sotd");o.after($(g.exec("w3c-sotd",h)));progress("handling conformance");if(o=$("#conformance")){o.prepend($(g.exec("w3c-conformance",
+h)));o.prepend("<h2>Conformance</h2>")}progress("done adding document headers");m()},ieDummy:1}});define("core/data-transform",["core/utils"],function(g){return{run:function(e,l,h){progress("running data transforms");$(l.documentElement).find("[data-transform]").each(function(o,m){o=m.innerHTML;var w=m.getAttribute("data-transform");m.removeAttribute("data-transform");if(o=g.runTransforms(o,w))m.innerHTML=o});h()},ieDummy:1}});
+define("core/data-include",["core/utils"],function(g){return{run:function(e,l,h){progress("running data include");this.doc=l;this.cb=h;this.processNodes()},processNodes:function(){var e=$(this.doc.documentElement).find("[data-include]");if(e.length==0){progress("done with data includes");this.cb()}else{e=e.get(0);var l=e.getAttribute("data-include");e.removeAttribute("data-include");progress("process data include: "+l);this.proxyLoad(l,this.updateNode(l,e))}},cb:null,doc:null,proxyLoad:function(e,
+l){g.proxyLoad(e,l)},updateNode:function(e,l){var h=this;return function(o){if(o){var m=l.getAttribute("data-oninclude");l.removeAttribute("data-oninclude");o=g.runTransforms(o,m);$(l).html(o)}progress("data include ("+e+"): done");h.processNodes()}},ieDummy:1}});
+define("core/inlines",["core/utils"],function(g){return{run:function(e,l,h){progress("inlines");l.normalize();if(!e.normativeReferences)e.normativeReferences=[];if(!e.informativeReferences)e.informativeReferences=[];var o={},m={};$("abbr[title]").each(function(W,sa){o[$(sa).text()]=$(sa).attr("title")});$("acronym[title]").each(function(W,sa){m[$(sa).text()]=$(sa).attr("title")});var w=[];for(var F in o)w.push(F);for(F in m)w.push(F);w.sort(function(W,sa){if(sa.length<W.length)return-1;if(W.length<
+sa.length)return 1;return 0});w="(?:\\b"+w.join("\\b)|(?:\\b")+"\\b)";F=g.findNodes(".//text()",$("body",l)[0],l);for(var A=0;A<F.length;A++){for(var c=F[A],ma=c.data.split(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-]+\\]\\])|"+w+")")),ta=l.createDocumentFragment();ma.length;){var B=ma.shift(),X=null;if(ma.length)X=ma.shift();ta.appendChild(l.createTextNode(B));
+if(X)if(/MUST(?:\s+NOT)?|SHOULD(?:\s+NOT)?|SHALL(?:\s+NOT)?|MAY|(?:NOT\s+)?REQUIRED|(?:NOT\s+)?RECOMMENDED|OPTIONAL/.test(X)){X=X.toLowerCase();ta.appendChild($("<em/>").attr({"class":"rfc2119",title:X}).text(X)[0])}else if(/^\[\[/.test(X)){B=X;B=B.replace(/^\[\[/,"");B=B.replace(/]]$/,"");X=false;if(B.indexOf("!")==0){X=true;B=B.replace(/^!/,"")}X?e.normativeReferences.push(B):e.informativeReferences.push(B);ta.appendChild(l.createTextNode("["));ta.appendChild($("<cite/>").wrapInner($("<a/>").attr({"class":"bibref",
+rel:"biblioentry",href:"#bib-"+B}).text(B))[0]);ta.appendChild(l.createTextNode("]"))}else if(o[X])ta.appendChild($("<abbr/>").attr({title:o[X]}).text(X)[0]);else m[X]?ta.appendChild($("<acronym/>").attr({title:m[X]}).text(X)[0]):error("Found token '"+X+"' but it does not correspond to anything")}c.parentNode.replaceChild(ta,c)}h()},ieDummy:1}});define("require/text!core/templates/webidl.html",function(){return"<script type='application/x-tt' id='webidl-attribute'><![CDATA[\n<dt id=\"widl-[% parentId %]-[% refId %]\">\n <code>[% name %]</code>\n of type\n [% IF idlType.array %]array of[% END %]\n <span class=\"idlAttrType\">[% htmlType %]</span>[% IF readonly %], readonly[% END %][% IF idlType.nullable %], nullable[% END %]\n</dt>\n<dd>\n [% description %]\n [% IF raises.length == 0 %]\n <div><em>No exceptions.</em></div>\n [% ELSE %]\n <table class='exceptions'>\n <tr><th>Exception</th><th>On Get</th><th>On Set</th><th>Description</th></tr>\n [% FOREACH exc IN raises %]\n <tr>\n <td class=\"excName\">[% exc.name %]</td>\n [% IF exc.onGet %]\n <td class=\"excGetSetTrue\">✔</td>\n [% ELSE %]\n <td class=\"excGetSetFalse\">✘</td>\n [% END %]\n [% IF exc.onSet %]\n <td class=\"excGetSetTrue\">✔</td>\n [% ELSE %]\n <td class=\"excGetSetFalse\">✘</td>\n [% END %]\n <td class=\"excDesc\">\n [% IF exc.type == 'simple' %]\n [% exc.description %]\n [% ELSE %]\n <table class='exceptionCodes'>\n [% FOREACH code IN exc.description %]\n <tr>\n <td class='excCodeName'><code>[% code.name %]</code></td>\n <td class='excCodeDesc'>[% code.description %]</td>\n </tr>\n [% END %]\n </table>\n [% END %]\n </td>\n </tr>\n [% END %]\n </table>\n [% END %]\n</dd>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-const'><![CDATA[\n<dt id=\"widl-[% parentId %]-[% refId %]\">\n <code>[% name %]</code>\n of type\n <span class=\"idlConstType\">[% htmlType %]</span>\n</dt>\n<dd>\n [% description %]\n</dd>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-exception'><![CDATA[\n <p>Template webidl-exception called</p>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-field'><![CDATA[\n<dt id=\"widl-[% parentId %]-[% refId %]\">\n <code>[% name %]</code>\n of type\n <span class=\"idlFieldType\">[% htmlType %]</span>[% IF idlType.nullable %], nullable[% END %]\n</dt>\n<dd>\n [% description %]\n</dd>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-operation'><![CDATA[\n<dt id=\"widl-[% parentId %]-[% refId %]\">\n <code>[% name %]</code>\n</dt>\n<dd>\n [% description %]\n [% IF arguments.length == 0 %]\n <div><em>No Parameters.</em></div>\n [% ELSE %]\n <table class=\"parameters\">\n <tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></th>\n [% FOREACH param IN arguments %]\n <tr>\n <td class=\"prmName\">[% param.name %]</td>\n <td class=\"prmType\"><code>[% param.htmlType %]</code></td>\n [% IF param.type.nullable %]\n <td class=\"prmNullTrue\">✔</td>\n [% ELSE %]\n <td class=\"prmNullFalse\">✘</td>\n [% END %]\n [% IF param.optional %]\n <td class=\"prmOptTrue\">✔</td>\n [% ELSE %]\n <td class=\"prmOptFalse\">✘</td>\n [% END %]\n <td class=\"prmDesc\">[% param.description %]</td>\n </tr>\n [% END %]\n </table>\n [% END %]\n [% IF raises.length == 0 %]\n <div><em>No exceptions.</em></div>\n [% ELSE %]\n <table class='exceptions'>\n <tr><th>Exception</th><th>Description</th></tr>\n [% FOREACH exc IN raises %]\n <tr>\n <td class=\"excName\">[% exc.name %]</td>\n <td class=\"excDesc\">\n [% IF exc.type == 'simple' %]\n [% exc.description %]\n [% ELSE %]\n <table class='exceptionCodes'>\n [% FOREACH code IN exc.description %]\n <tr>\n <td class='excCodeName'><code>[% code.name %]</code></td>\n <td class='excCodeDesc'>[% code.description %]</td>\n </tr>\n [% END %]\n </table>\n [% END %]\n </td>\n </tr>\n [% END %]\n </table>\n [% END %]\n <div>\n <em>Return type:</em> <code>[% htmlType %]</code>\n </div>\n</dd>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-implements'><![CDATA[\n<div class='idlImplementsDesc'>\n [% IF description.length > 0 %]\n [% description %]\n [% ELSE %]\n <p>\n All instances of the\n <code><a>[% target %]</a></code>\n type are defined to also implement the\n <a class='idlType'>[% htmlType %]</a>\n interface.\n </p>\n [% END %]\n</div>\n]]\><\/script>\n\n<script type='application/x-tt' id='webidl-typedef'><![CDATA[\n <div class='idlTypedefDesc'>\n [% IF description.length > 0 %]\n [% description %]\n [% ELSE %]\n Throughout this specification, the identifier\n <span class='idlTypedefID'>[% name %]</span>\n is used to refer to the\n [% IF idlType.array %] array of [% END %]\n <span class='idlTypedefType'>[% htmlType %]</span>\n [% IF idlType.nullable %](nullable)[% END %]\n type.\n [% END %]\n </div>\n]]\><\/script>\n"});
+define("core/webidl",["core/tt","core/utils","text!core/templates/webidl.html"],function(g,e,l){return{run:function(h,o,m){progress("processing WebIDL");progress("loading TT for webIDL");g.loadFromHTML(l,o);var w=[];$(".idl",o).each(function(F,A){F=new WebIDLProcessor({noIDLSorting:h.noIDLSorting,noIDLIn:h.noIDLIn,tt:g,infNames:w,doc:o});var c=F.definition($(A)),ma=$("<pre class='idl'/>");ma.append(F.writeAsWebIDL(c));$(A).replaceWith(ma);A=F.writeAsHTML(c);for(F=A.length-1;F>=0;F--)ma.after(A[F])});
+o.normalize();$("a:not([href])",o).each(function(F,A){F=$(A);if(!F.hasClass("externalDFN")){A=F.text();$.inArray(A,w)>=0&&F.attr("href","#idl-def-"+A).addClass("idlType").html($("<code/>").text(A))}});m()},ieDummy:1}});function WebIDLProcessor(g){this.parent={type:"module",name:"outermost",refId:"outermost",members:[]};g||(g={});for(var e in g)this[e]=g[e]}
+WebIDLProcessor.prototype={definition:function(g){var e=g.attr("title"),l=/(typedef|implements)/.exec(e);e+=l?";":"{};";progress("idl definition: "+e);try{var h=window.WebIDLParser.parse(e,"definition");if(!h.members)h.members=[];h.refId=this._id(h.name||h.target);h.parentId=this.parent.refId;h.refId==undefined&&warn("definition has no refId");$.inArray(h.refId,this.infNames)>=0&&warn("duplicate definition of WebIDL ID: "+h.refId);this.infNames.push(h.refId);this.parent.members.push(h);this.processMembers(h,
+g);if(!g.is("dl"))h.description=g.html();return h}catch(o){warn("ERROR: "+o);return{}}},processMembers:function(g,e){var l=this.parent;this.parent=g;var h=this;e.children("dt").each(function(o,m){o=$(m).next("dd");var w=$(m).text();progress("idl member of "+g.type+": "+w);var F;switch(g.type){case "module":h.moduleMember($(m),o);return;case "interface":F=h.interfaceMember($(m),o);break;case "exception":F=h.exceptionMember($(m),o);break;default:error("Unexpected "+g.type+": "+w);break}if(!F.refId)F.refId=
+h._id(F.name);F.refId||warn("member has no refId");$.inArray(F.refId,this.infNames)>=0&&warn("duplicate definition of WebIDL ID: "+F.refId);F.parentId=g.refId;h.infNames.push(F.refId);if(!F.description)F.description=o.html();h.parent.members.push(F)});this.parent=l},moduleMember:function(g,e){var l=this;e.children("[title]").each(function(h,o){l.definition($(o))});this.parent.description=g.text()},exceptionMember:function(g){g=g.text()+";";g=window.WebIDLParser.parse(g,"exMember");if(!g.members)g.members=
+[];return g},interfaceMember:function(g,e){var l=g.text()+";",h=window.WebIDLParser.parse(l,"ifMember");if(!h.members)h.members=[];g=e.find("dl.parameters:first").remove();var o=e.find(".exception").remove();e=e.find(".getraises, .setraises").remove();switch(h.type){case "const":break;case "stringifier":break;case "attribute":if(!h.setraises)h.setraises=[];if(!h.getraises)h.getraises=[];if(!h.raises)h.raises=[];e.each(function(m,w){m=$(w);var F={name:m.attr("title")};if(w.localName.toLowerCase()==
+"dl"){F.type="codelist";F.description=[];m.children("dt").each(function(A,c){A=$(c).next("dd");c={name:$(c).text()};c.description=A.html();F.description.push(c)})}else if(w.localName.toLowerCase()=="div"){F.type="simple";F.description=m.html()}else error("Do not know what to do with exceptions being raised defined outside of a div or dl.");m.remove();F.onSet=m.hasClass("setraises");F.onGet=m.hasClass("getraises");F.onSet&&h.setraises.push(F);F.onGet&&h.setraises.push(F);h.raises.push(F)});break;case "operation":if(!h.raises)h.raises=
+[];o.each(function(m,w){m=$(w);var F={name:m.attr("title")};if(w.localName.toLowerCase()=="dl"){F.type="codelist";F.description=[];m.children("dt").each(function(A,c){A=$(c).next("dd");c={name:$(c).text()};c.description=A.html();F.description.push(c)})}else if(w.localName.toLowerCase()=="div"){F.type="simple";F.description=m.html()}else error("Do not know what to do with exceptions being raised defined outside of a div or dl.");m.remove();h.raises.push(F)});if(!h.arguments)h.arguments=[];for(e=0;e<
+h.arguments.length;e++)if(h.arguments[e].description==null)h.arguments[e].description="";g.children("dt").each(function(m,w){w=$(w);m=w.next("dd");w=w.text();p=window.WebIDLParser.parse(w,"Argument");p.description=m.html();h.arguments.push(p)});g.remove();break;default:error("Expected interface member, got: "+l);break}return h},writeAsHTML:function(g){var e=[];switch(g.type){case "exception":case "interface":for(var l=["const","operation","attribute","field"],h=0;h<l.length;h++){var o=l[h],m=g.members.filter(function(B){return B.type==
+o});if(m.length!=0){var w;switch(o){case "attribute":w="Attributes";break;case "operation":w="Methods";break;case "const":w="Constants";break;case "field":w="Fields";break}var F=$("<dl/>");this.noIDLSorting||m.sort(function(B,X){if(B.name<X.name)return-1;if(B.name>X.name)return 1;return 0});for(var A=0;A<m.length;A++){var c=m[A];if(c.idlType)c.htmlType=this.writeHtmlType(c.idlType);if(c.arguments)for(var ma=0;ma<c.arguments.length;ma++){var ta=c.arguments[ma];if(ta.type)ta.htmlType=this.writeHtmlType(ta.type)}c=
+this.tt.exec("webidl-"+o,m[A]);F.append($(c))}m=$("<section/>").append($("<h2/>").text(w)).append(F);e.push(m)}}break;case "implements":g.htmlType=this.writeHtmlType(g["implements"]);c=this.tt.exec("webidl-implements",g);e.push($(c));break;case "module":$(this.doc.createDocumentFragment());g.description&&e.push($("<div>"+g.description+"</div>"));for(idx=0;idx<g.members.length;idx++){h=g.members[idx];l=$("<section/>").append($("<h2/>").text(h.type+" "+(h.name||h.target)));w=this.writeAsHTML(h);for(h=
+0;h<w.length;h++)l.append(w[h]);e.push(l)}break;case "typedef":g.htmlType=this.writeHtmlType(g.idlType);c=this.tt.exec("webidl-typedef",g);e.push($(c));break;default:warn("Unexpected type "+g.type+": "+g.refId);break}return e},writeHtmlType:function(g){return typeof g=="string"?g:g.sequence?"sequence<"+g.idlType.idlType+">":g.idlType},writeAsWebIDL:function(g,e){e||(e=0);switch(g.type){case "exception":for(var l=$("<span class='idlInterface'/>").attr("id","idl-def-"+g.refId).append(this.writeExtAttrs(g.extAttrs,
+e)).append(this._idn(e)+"exception ").append($("<span class='idlExceptionID'/>").text(g.name)).append(" {\n"),h=0,o=0,m=0,w=0;w<g.members.length;w++){var F=g.members[w],A=this.idlTypeLength(F.idlType);if(F.type=="field")h=A>h?A:h;else if(F.type=="const")m=A>m?A:m;else error("Unknown exception member"+F.type+": "+F.name+inspect(F))}w="widl-"+g.refId+"-";for(F=0;F<g.members.length;F++){A=g.members[F];if(A.type=="field")l.append(this.writeField(A,h+1,e+1,w));else A.type=="const"&&l.append(this.writeConst(A,
+m+1,e+1,w))}l.append(this._idn(e)+"};\n");return l;case "implements":return $("<span class='idlImplements'/>").attr("id","idl-def-"+g.refId).append(this._idn(e)).append($("<a/>").text(g.target)).append(" implements ").append($("<a class='idlType'/>").append($("<code/>").append(this.writeDatatype(g["implements"])))).append(";\n");case "interface":l=$("<span class='idlInterface'/>").attr("id","idl-def-"+g.refId).append(this.writeExtAttrs(g.extAttrs,e)).append(this._idn(e)+"interface ").append($("<span class='idlInterfaceID'/>").text(g.name));
+if(g.inheritance&&g.inheritance.length){h=g.inheritance.map(function(ma){return"<span class='idlSuperclass'><a>"+ma+"</a></span>"});l.append(" : "+h.join(", "))}l.append(" {\n");m=o=h=0;var c=false;for(w=0;w<g.members.length;w++){F=g.members[w];A=this.idlTypeLength(F.idlType);if(F.type=="attribute")h=A>h?A:h;else if(F.type=="operation")o=A>o?A:o;else if(F.type=="const")m=A>m?A:m;else error("Unknown interface member"+F.type+": "+F.name+inspect(F));if(F.type=="attribute"&&F.readonly)c=true}w="widl-"+
+g.refId+"-";for(F=0;F<g.members.length;F++){A=g.members[F];if(A.type=="attribute")l.append(this.writeAttribute(A,h+1,e+1,w,c));else if(A.type=="operation")l.append(this.writeMethod(A,o+1,e+1,w));else A.type=="const"&&l.append(this.writeConst(A,m+1,e+1,w))}l.append(this._idn(e)+"};\n");return l;case "module":l=$("<span class='idlModule'/>").attr("id","idl-def-"+g.refId).append(this.writeExtAttrs(g.extAttrs,e)).append(this._idn(e)+"module ").append($("<span class='idModuleId'/>").text(g.name)).append(" {\n");
+for(w=0;w<g.members.length;w++){F=g.members[w];l.append(this.writeAsWebIDL(F,e+1))}l.append(this._idn(e)+"};\n");return l;case "typedef":return $("<span class='idlTypedef'/>").attr("id","idl-def-"+g.refId).append(this._idn(e)+"typedef").append(" ").append($("<span class='idlTypedefType'/>").append(this.writeDatatype(g.idlType))).append(" ").append($("<span class='idlTypedefID'/>").text(g.name)).append(";\n");default:$("<p>").text("IDL for "+g.type+": "+g.name).after(inspect(g,3))}},writeField:function(g,
+e,l,h){var o=$("<span class='idlField'>");o.append(this.writeExtAttrs(g.extAttrs,l)).append(this._idn(l));e=e-this.idlTypeLength(g.idlType);l="";for(var m=0;m<e;m++)l+=" ";o.append($("<span class='idlFieldType'/>").append(this.writeDatatype(g.idlType))).append(l).append($("<span class='idlFieldName'/>").append($("<a/>").attr("href","#"+h+g.refId).text(g.name))).append(";\n");return o},writeAttribute:function(g,e,l,h,o){var m=e-this.idlTypeLength(g.idlType);e="";for(var w=0;w<m;w++)e+=" ";m=this.writeDatatype(g.idlType);
+l=$("<span class='idlAttribute'>").append(this.writeExtAttrs(g.extAttrs,l)).append(this._idn(l));if(o)g.readonly?l.append("readonly "):l.append(" ");l.append("attribute ").append($("<span class='idlAttrType'/>").append(m)).append(e).append($("<span class='idlAttrName'/>").append($("<a/>").attr("href","#"+h+g.refId).text(g.name)));if(g.getraises.length){raises=" getraises ("+g.getraises.map(function(F){return"<span class='idlRaises'><a>"+F.name+"</a></span>"}).join(", ")+")";l.append(raises)}if(g.setraises.length){raises=
+" setraises ("+g.setraises.map(function(F){return"<span class='idlRaises'><a>"+F.name+"</a></span>"}).join(", ")+")";l.append(raises)}l.append(";\n");return l},writeMethod:function(g,e,l,h){var o=e-this.idlTypeLength(g.idlType),m="";for(e=0;e<o;e++)m+=" ";l=$("<span class='idlMethod'>").append(this.writeExtAttrs(g.extAttrs,l)).append(this._idn(l)).append($("<span class='idlMethType'/>").append(this.writeDatatype(g.idlType))).append(m).append($("<span class='idlMethName'/>").append($("<a/>").attr("href",
+"#"+h+g.refId).text(g.name))).append(" (");for(e=0;e<g.arguments.length;e++){h=g.arguments[e];o=h.optional?"optional ":"";m=this.noIDLIn?"":" in ";o=$("<span class='idlParam'>").append(this.writeExtAttrs(h.extAttrs,null)).append(m+o);m=$("<span class='idlParamType'/>").append(this.writeDatatype(h.type));o.append(m).append(" ").append($("<span class='idlParamName'/>").text(h.name));l.append(o);e<g.arguments.length-1&&l.append(", ")}l.append(")");if(g.raises.length){raises=" raises ("+g.raises.map(function(w){return"<span class='idlRaises'><a>"+
+w.name+"</a></span>"}).join(", ")+")";l.append(raises)}l.append(";\n");return l},writeConst:function(g,e,l,h){var o=e-this.idlTypeLength(g.idlType);e="";for(var m=0;m<o;m++)e+=" ";o=this.writeDatatype(g.idlType);o=$("<span class='idlConstType'/>").append(o);h=$("<span class='idlConstName'/>").append($("<a/>").attr("href","#"+h+g.refId).text(g.name));return $("<span class='idlConst'/>").append(this._idn(l)).append("const ").append(o).append(e).append(h).append(" = ").append($("<span class='idlConstValue'/>").text(g.value)).append(";\n")},
+writeDatatype:function(g){if(g.sequence)return $("<span/>").append("sequence<").append(this.writeDatatype(g.idlType)).append(">");else{var e=g.nullable?"?":"",l=g.array?"[]":"";g=g.idlType||g;return $("<span/>").append($("<a/>").text(g)).append(""+l+e)}},idlTypeLength:function(g){if(g.sequence)return this.idlTypeLength(g.idlType)+10;else if(g.idlType){var e=g.idlType.length;if(g.nullable)e+=1;if(g.array)e+=2;return e}else return g.length},writeExtAttrs:function(g,e){if(!g)return"";var l=this._idn(e)+
+"[";l+=g.map(function(h){return"<span class='extAttr'>"+h.name+"</span>"}).join(", ");l+="]";if(e!=null)l+="\n";return l},_idn:function(g){for(var e="",l=0;l<g;l++)e+=" ";return e},_id:function(g){return g.replace(/[^a-zA-Z0-9_-]/g,"")}};
+function inspect(g,e,l){var h="",o,m;if(l==null)l=0;if(e==null)e=1;if(e<1)return'<font color="red">Error: Levels number must be > 0</font>';if(g==null)return'<font color="red">Error: Object <b>NULL</b></font>';h+="<ul>";for(property in g)try{o=typeof g[property];h+="<li>("+o+") "+property+(g[property]==null?": <b>null</b>":'"'+g[property]+'"')+"</li>";if(o=="object"&&g[property]!=null&&l+1<e)h+=inspect(g[property],e,l+1)}catch(w){m=typeof w=="string"?w:w.message?w.message:w.description?w.description:
+"Unknown";h+='<li><font color="red">(Error) '+property+": "+m+"</font></li>"}h+="</ul>";return h}
+window.WebIDLParser=function(){var g={killComments:function(e){return e.replace(/\/\/.*$/gm,"").replace(/\/\*[\s\S]*?\*\//g,"")},parse:function(e,l){function h(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\n/g,"\\n")+'"'}function o(a,v){for(var d=a.length,q=0;q<d;q++)if(a[q]===v)return true;return false}function m(a){if(!(c<ma)){if(c>ma){ma=c;ta=[]}o(ta,a)||ta.push(a)}}function w(){function a(q){switch(q.length){case 0:return"end of input";
+case 1:return q[0];default:q.sort();return q.slice(0,q.length-1).join(", ")+" or "+q[q.length-1]}}var v=a(ta),d=Math.max(c,ma);d=d<e.length?h(e.charAt(d)):"end of input";return"Expected "+v+" but "+d+" found."}function F(){for(var a=1,v=1,d=false,q=0;q<ma;q++){var u=e.charAt(q);if(u==="\n"){d||a++;v=1;d=false}else if(u==="\r"|u==="\u2028"||u==="\u2029"){a++;v=1;d=true}else{v++;d=false}}return{line:a,column:v}}e=this.killComments(e);l||(l="definitions");var A={},c=0,ma=0,ta=[],B={},X=A.s=function(a){var v=
+"s@"+c,d=B[v];if(d){c=d.nextPos;return d.result}if(e.substr(c).match(/^[ \t\r\n\u000c]/)!==null){d=e.charAt(c);c++}else{d=null;a.reportMatchFailures&&m("[ \t\\r\\n\u000c]")}if(d!==null)for(var q=[];d!==null;){q.push(d);if(e.substr(c).match(/^[ \t\r\n\u000c]/)!==null){d=e.charAt(c);c++}else{d=null;a.reportMatchFailures&&m("[ \t\\r\\n\u000c]")}}else q=null;B[v]={nextPos:c,result:q};return q},W=A.w=function(a){var v="w@"+c,d=B[v];if(d){c=d.nextPos;return d.result}a=X(a);a=a!==null?a:"";B[v]={nextPos:c,
+result:a};return a},sa=A.identifier=function(a){var v="identifier@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c).match(/^[A-Z_a-z]/)!==null){var q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[A-Z_a-z]")}if(q!==null){var u=[];if(e.substr(c).match(/^[0-9A-Z_a-z]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9A-Z_a-z]")}for(;x!==null;){u.push(x);if(e.substr(c).match(/^[0-9A-Z_a-z]/)!==null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9A-Z_a-z]")}}if(u!==
+null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,S){return H+S.join("")}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},xb=A.octal=function(a){var v="octal@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)==="0"){var q="0";c+=1}else{q=null;a.reportMatchFailures&&m(h("0"))}if(q!==null){var u=[];if(e.substr(c).match(/^[0-7]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-7]")}for(;x!==null;){u.push(x);if(e.substr(c).match(/^[0-7]/)!==
+null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-7]")}}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H){return"0"+H.join("")}(a[1]):null;B[v]={nextPos:c,result:a};return a},Ya=A.hex=function(a){var v="hex@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)==="0"){var q="0";c+=1}else{q=null;a.reportMatchFailures&&m(h("0"))}if(q!==null){if(e.substr(c).match(/^[Xx]/)!==null){var u=e.charAt(c);c++}else{u=null;a.reportMatchFailures&&m("[Xx]")}if(u!==
+null){if(e.substr(c).match(/^[0-9A-Fa-f]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9A-Fa-f]")}if(x!==null)for(var H=[];x!==null;){H.push(x);if(e.substr(c).match(/^[0-9A-Fa-f]/)!==null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9A-Fa-f]")}}else H=null;if(H!==null)a=[q,u,H];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(S,Z){return"0"+S+Z.join("")}(a[1],a[2]):null;B[v]={nextPos:c,result:a};return a},V=A.decimal=function(a){var v=
+"decimal@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c).match(/^[0-9]/)!==null){var q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[0-9]")}if(q!==null){var u=[];if(e.substr(c).match(/^[0-9]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}for(;x!==null;){u.push(x);if(e.substr(c).match(/^[0-9]/)!==null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,S){return H+
+S.join("")}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},i=A.integer=function(a){var v="integer@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)==="-"){var q="-";c+=1}else{q=null;a.reportMatchFailures&&m(h("-"))}q=q!==null?q:"";if(q!==null){var u=Ya(a);if(u!==null)a=u;else{u=xb(a);if(u!==null)a=u;else{a=V(a);a=a!==null?a:null}}if(a!==null)a=[q,a];else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(x,H){return x+H}(a[0],a[1]):null;B[v]={nextPos:c,result:d};return d},bb=A.floatEe=
+function(a){var v="floatEe@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c).match(/^[Ee]/)!==null){var q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[Ee]")}if(q!==null){if(e.substr(c).match(/^[+\-]/)!==null){var u=e.charAt(c);c++}else{u=null;a.reportMatchFailures&&m("[+\\-]")}u=u!==null?u:"";if(u!==null){if(e.substr(c).match(/^[0-9]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}if(x!==null)for(var H=[];x!==null;){H.push(x);if(e.substr(c).match(/^[0-9]/)!==
+null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}}else H=null;if(H!==null)a=[q,u,H];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(S,Z,ca){return S+Z+ca.join("")}(a[0],a[1],a[2]):null;B[v]={nextPos:c,result:a};return a},zb=A.expFloat=function(a){var v="expFloat@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c).match(/^[0-9]/)!==null){var q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[0-9]")}if(q!==null)for(var u=[];q!==null;){u.push(q);
+if(e.substr(c).match(/^[0-9]/)!==null){q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[0-9]")}}else u=null;if(u!==null){a=bb(a);if(a!==null)a=[u,a];else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(x,H){return x.join("")+H}(a[0],a[1]):null;B[v]={nextPos:c,result:d};return d},tb=A.leadFloat=function(a){var v="leadFloat@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c).match(/^[0-9]/)!==null){var q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[0-9]")}if(q!==null)for(var u=
+[];q!==null;){u.push(q);if(e.substr(c).match(/^[0-9]/)!==null){q=e.charAt(c);c++}else{q=null;a.reportMatchFailures&&m("[0-9]")}}else u=null;if(u!==null){if(e.substr(c,1)==="."){q=".";c+=1}else{q=null;a.reportMatchFailures&&m(h("."))}if(q!==null){var x=[];if(e.substr(c).match(/^[0-9]/)!==null){var H=e.charAt(c);c++}else{H=null;a.reportMatchFailures&&m("[0-9]")}for(;H!==null;){x.push(H);if(e.substr(c).match(/^[0-9]/)!==null){H=e.charAt(c);c++}else{H=null;a.reportMatchFailures&&m("[0-9]")}}if(x!==null){a=
+bb(a);a=a!==null?a:"";if(a!==null)u=[u,q,x,a];else{u=null;c=d}}else{u=null;c=d}}else{u=null;c=d}}else{u=null;c=d}d=u!==null?function(S,Z,ca){return S.join("")+"."+Z.join("")+ca}(u[0],u[2],u[3]):null;B[v]={nextPos:c,result:d};return d},sb=A.dotFloat=function(a){var v="dotFloat@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=[];if(e.substr(c).match(/^[0-9]/)!==null){var u=e.charAt(c);c++}else{u=null;a.reportMatchFailures&&m("[0-9]")}for(;u!==null;){q.push(u);if(e.substr(c).match(/^[0-9]/)!==
+null){u=e.charAt(c);c++}else{u=null;a.reportMatchFailures&&m("[0-9]")}}if(q!==null){if(e.substr(c,1)==="."){u=".";c+=1}else{u=null;a.reportMatchFailures&&m(h("."))}if(u!==null){if(e.substr(c).match(/^[0-9]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}if(x!==null)for(var H=[];x!==null;){H.push(x);if(e.substr(c).match(/^[0-9]/)!==null){x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m("[0-9]")}}else H=null;if(H!==null){a=bb(a);a=a!==null?a:"";if(a!==null)q=[q,u,
+H,a];else{q=null;c=d}}else{q=null;c=d}}else{q=null;c=d}}else{q=null;c=d}d=q!==null?function(S,Z,ca){return S.join("")+"."+Z.join("")+ca}(q[0],q[2],q[3]):null;B[v]={nextPos:c,result:d};return d},ha=A["float"]=function(a){var v="float@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)==="-"){var q="-";c+=1}else{q=null;a.reportMatchFailures&&m(h("-"))}q=q!==null?q:"";if(q!==null){var u=tb(a);if(u!==null)a=u;else{u=sb(a);if(u!==null)a=u;else{a=zb(a);a=a!==null?a:null}}if(a!==null)a=[q,
+a];else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(x,H){return x+H}(a[0],a[1]):null;B[v]={nextPos:c,result:d};return d};A.string=function(a){var v="string@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)==='"'){var q='"';c+=1}else{q=null;a.reportMatchFailures&&m(h('"'))}if(q!==null){var u=[];if(e.substr(c).match(/^[^""]/)!==null){var x=e.charAt(c);c++}else{x=null;a.reportMatchFailures&&m('[^""]')}for(;x!==null;){u.push(x);if(e.substr(c).match(/^[^""]/)!==null){x=e.charAt(c);
+c++}else{x=null;a.reportMatchFailures&&m('[^""]')}}if(u!==null){if(e.substr(c,1)==='"'){x='"';c+=1}else{x=null;a.reportMatchFailures&&m(h('"'))}if(x!==null)a=[q,u,x];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H){return H.join("")}(a[1]):null;B[v]={nextPos:c,result:a};return a};A.other=function(a){var v="other@"+c,d=B[v];if(d){c=d.nextPos;return d.result}if(e.substr(c).match(/^[^\t\n\r 0-9A-Z_a-z]/)!==null){d=e.charAt(c);c++}else{d=null;a.reportMatchFailures&&m("[^\t\\n\\r 0-9A-Z_a-z]")}if(d!==
+null)for(var q=[];d!==null;){q.push(d);if(e.substr(c).match(/^[^\t\n\r 0-9A-Z_a-z]/)!==null){d=e.charAt(c);c++}else{d=null;a.reportMatchFailures&&m("[^\t\\n\\r 0-9A-Z_a-z]")}}else q=null;a=q!==null?function(u){return u.join("")}(q):null;B[v]={nextPos:c,result:a};return a};var $a=A.type=function(a){var v="type@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=La(a);if(q!==null){a=db(a);if(a!==null)a=[q,a];else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(u,x){if(!u.sequence)u.sequence=false;
+u.nullable=x;return u}(a[0],a[1]):null;B[v]={nextPos:c,result:d};return d},La=A.TypeDesc=function(a){var v="TypeDesc@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=fb(a);if(d!==null)a=d;else{d=ub(a);if(d!==null)a=d;else{a=qb(a);a=a!==null?a:null}}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},fb=A.Sequence=function(a){var v="Sequence@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,9)==="sequence<"){var q="sequence<";c+=9}else{q=null;a.reportMatchFailures&&
+m(h("sequence<"))}if(q!==null){var u=$a(a);if(u!==null){if(e.substr(c,1)===">"){var x=">";c+=1}else{x=null;a.reportMatchFailures&&m(h(">"))}if(x!==null)a=[q,u,x];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H){return{sequence:true,array:false,idlType:H}}(a[1]):null;B[v]={nextPos:c,result:a};return a},ub=A.ArrayType=function(a){var v="ArrayType@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=qb(a);if(q!==null){if(e.substr(c,2)==="[]"){var u="[]";c+=2}else{u=null;a.reportMatchFailures&&
+m(h("[]"))}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(x){x.array=true;return x}(a[0]):null;B[v]={nextPos:c,result:a};return a},qb=A.SimpleType=function(a){var v="SimpleType@"+c,d=B[v];if(d){c=d.nextPos;return d.result}if(e.substr(c,3)==="any"){d="any";c+=3}else{d=null;a.reportMatchFailures&&m(h("any"))}if(d!==null)a=d;else{if(e.substr(c,6)==="object"){d="object";c+=6}else{d=null;a.reportMatchFailures&&m(h("object"))}if(d!==null)a=d;else{if(e.substr(c,7)==="boolean"){d=
+"boolean";c+=7}else{d=null;a.reportMatchFailures&&m(h("boolean"))}if(d!==null)a=d;else{if(e.substr(c,5)==="octet"){d="octet";c+=5}else{d=null;a.reportMatchFailures&&m(h("octet"))}if(d!==null)a=d;else{if(e.substr(c,5)==="float"){d="float";c+=5}else{d=null;a.reportMatchFailures&&m(h("float"))}if(d!==null)a=d;else{if(e.substr(c,6)==="double"){d="double";c+=6}else{d=null;a.reportMatchFailures&&m(h("double"))}if(d!==null)a=d;else{if(e.substr(c,9)==="DOMString"){d="DOMString";c+=9}else{d=null;a.reportMatchFailures&&
+m(h("DOMString"))}if(d!==null)a=d;else{d=cb(a);if(d!==null)a=d;else{a=hb(a);a=a!==null?a:null}}}}}}}}a=a!==null?function(q){return{sequence:false,array:false,idlType:q}}(a):null;B[v]={nextPos:c,result:a};return a},cb=A.UnsignedIntegerType=function(a){var v="UnsignedIntegerType@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,8)==="unsigned"){var q="unsigned";c+=8}else{q=null;a.reportMatchFailures&&m(h("unsigned"))}q=q!==null?q:"";if(q!==null){var u=X(a);if(u!==null){var x=c;if(e.substr(c,
+4)==="long"){var H="long";c+=4}else{H=null;a.reportMatchFailures&&m(h("long"))}if(H!==null){var S=X(a);if(S!==null){if(e.substr(c,4)==="long"){var Z="long";c+=4}else{Z=null;a.reportMatchFailures&&m(h("long"))}if(Z!==null)H=[H,S,Z];else{H=null;c=x}}else{H=null;c=x}}else{H=null;c=x}if(H!==null)a=H;else{if(e.substr(c,4)==="long"){x="long";c+=4}else{x=null;a.reportMatchFailures&&m(h("long"))}if(x!==null)a=x;else{if(e.substr(c,5)==="short"){x="short";c+=5}else{x=null;a.reportMatchFailures&&m(h("short"))}a=
+x!==null?x:null}}if(a!==null)a=[q,u,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(ca,oa){return(ca?"unsigned ":"")+(oa.join?oa.join(""):oa)}(a[0],a[2]):null;B[v]={nextPos:c,result:d};return d},gb=A.ScopedNameList=function(a){var v="ScopedNameList@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=hb(a);if(q!==null){for(var u=[],x=Ua(a);x!==null;){u.push(x);x=Ua(a)}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,S){H=[H];for(var Z=0,ca=S.length;Z<
+ca;Z++)H.push(S[Z]);return H}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},Ua=A.ScopedNameListRest=function(a){var v="ScopedNameListRest@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){if(e.substr(c,1)===","){var u=",";c+=1}else{u=null;a.reportMatchFailures&&m(h(","))}if(u!==null){var x=W(a);if(x!==null){a=hb(a);if(a!==null)a=[q,u,x,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(H){return H}(a[3]):null;B[v]={nextPos:c,result:d};
+return d},hb=A.ScopedName=function(a){var v="ScopedName@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=vb(a);if(d!==null)a=d;else{a=ab(a);a=a!==null?a:null}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},vb=A.AbsoluteScopedName=function(a){var v="AbsoluteScopedName@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,2)==="::"){var q="::";c+=2}else{q=null;a.reportMatchFailures&&m(h("::"))}if(q!==null){a=ab(a);if(a!==null)a=[q,a];else{a=null;c=d}}else{a=null;
+c=d}d=a!==null?function(u){return"::"+u}(a[1]):null;B[v]={nextPos:c,result:d};return d},ab=A.RelativeScopedName=function(a){var v="RelativeScopedName@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=sa(a);if(q!==null){for(var u=[],x=rb(a);x!==null;){u.push(x);x=rb(a)}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,S){return H+S.join("")}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},rb=A.ScopedNameRest=function(a){var v="ScopedNameRest@"+c,d=B[v];if(d){c=d.nextPos;
+return d.result}d=c;if(e.substr(c,2)==="::"){var q="::";c+=2}else{q=null;a.reportMatchFailures&&m(h("::"))}if(q!==null){a=sa(a);if(a!==null)a=[q,a];else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(u){return u.join("")}(a):null;B[v]={nextPos:c,result:d};return d},wb=A.BooleanLiteral=function(a){var v="BooleanLiteral@"+c,d=B[v];if(d){c=d.nextPos;return d.result}if(e.substr(c,4)==="true"){d="true";c+=4}else{d=null;a.reportMatchFailures&&m(h("true"))}if(d!==null)a=d;else{if(e.substr(c,5)==="false"){d=
+"false";c+=5}else{d=null;a.reportMatchFailures&&m(h("false"))}a=d!==null?d:null}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},db=A.Nullable=function(a){var v="Nullable@"+c,d=B[v];if(d){c=d.nextPos;return d.result}if(e.substr(c,1)==="?"){d="?";c+=1}else{d=null;a.reportMatchFailures&&m(h("?"))}a=d!==null?d:"";a=a!==null?function(q){return q?true:false}(a):null;B[v]={nextPos:c,result:a};return a},Y=A.ReturnType=function(a){var v="ReturnType@"+c,d=B[v];if(d){c=d.nextPos;
+return d.result}if(e.substr(c,4)==="void"){d="void";c+=4}else{d=null;a.reportMatchFailures&&m(h("void"))}if(d!==null)a=d;else{a=$a(a);a=a!==null?a:null}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},G=A.definitions=function(a){var v="definitions@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){for(var u=[],x=L(a);x!==null;){u.push(x);x=L(a)}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H){return H}(a[1]):null;B[v]={nextPos:c,
+result:a};return a},L=A.definition=function(a){var v="definition@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=O(a);if(d!==null)a=d;else{d=U(a);if(d!==null)a=d;else{d=lb(a);if(d!==null)a=d;else{d=Ga(a);if(d!==null)a=d;else{a=da(a);a=a!==null?a:null}}}}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},O=A.module=function(a){var v="module@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=X(a);u=u!==null?u:"";if(u!==null){if(e.substr(c,
+6)==="module"){var x="module";c+=6}else{x=null;a.reportMatchFailures&&m(h("module"))}if(x!==null){var H=X(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)==="{"){var ca="{";c+=1}else{ca=null;a.reportMatchFailures&&m(h("{"))}if(ca!==null){var oa=W(a);if(oa!==null){var xa=G(a);if(xa!==null){var Ea=W(a);if(Ea!==null){if(e.substr(c,1)==="}"){var Ha="}";c+=1}else{Ha=null;a.reportMatchFailures&&m(h("}"))}if(Ha!==null){var Fa=W(a);if(Fa!==null){if(e.substr(c,1)===";"){var Ma=
+";";c+=1}else{Ma=null;a.reportMatchFailures&&m(h(";"))}if(Ma!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Sa,Xa,b){return{type:"module",name:Xa,definitions:b,extAttrs:Sa}}(a[0],a[4],a[8]):null;B[v]={nextPos:c,result:d};return d},
+da=A["implements"]=function(a){var v="implements@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=X(a);u=u!==null?u:"";if(u!==null){var x=hb(a);if(x!==null){var H=X(a);if(H!==null){if(e.substr(c,10)==="implements"){var S="implements";c+=10}else{S=null;a.reportMatchFailures&&m(h("implements"))}if(S!==null){var Z=X(a);if(Z!==null){var ca=hb(a);if(ca!==null){var oa=W(a);if(oa!==null){if(e.substr(c,1)===";"){var xa=";";c+=1}else{xa=null;a.reportMatchFailures&&
+m(h(";"))}if(xa!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Ea,Ha,Fa){return{type:"implements",target:Ha,"implements":Fa,extAttrs:Ea}}(a[0],a[2],a[6]):null;B[v]={nextPos:c,result:d};return d},U=A["interface"]=function(a){var v="interface@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==
+null?q:"";if(q!==null){var u=X(a);u=u!==null?u:"";if(u!==null){if(e.substr(c,9)==="interface"){var x="interface";c+=9}else{x=null;a.reportMatchFailures&&m(h("interface"))}if(x!==null){var H=X(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){var ca=qa(a);ca=ca!==null?ca:"";if(ca!==null){var oa=W(a);if(oa!==null){if(e.substr(c,1)==="{"){var xa="{";c+=1}else{xa=null;a.reportMatchFailures&&m(h("{"))}if(xa!==null){var Ea=W(a);if(Ea!==null){for(var Ha=[],Fa=na(a);Fa!==null;){Ha.push(Fa);
+Fa=na(a)}if(Ha!==null){Fa=W(a);if(Fa!==null){if(e.substr(c,1)==="}"){var Ma="}";c+=1}else{Ma=null;a.reportMatchFailures&&m(h("}"))}if(Ma!==null){var Sa=W(a);if(Sa!==null){if(e.substr(c,1)===";"){var Xa=";";c+=1}else{Xa=null;a.reportMatchFailures&&m(h(";"))}if(Xa!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,Sa,Xa,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=
+d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(b,f,j,n){return{type:"interface",name:f,inheritance:j,members:n,extAttrs:b}}(a[0],a[4],a[6],a[10]):null;B[v]={nextPos:c,result:d};return d},qa=A.ifInheritance=function(a){var v="ifInheritance@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,1)===":"){var q=":";c+=1}else{q=null;a.reportMatchFailures&&m(h(":"))}if(q!==null){var u=W(a);if(u!==null){a=gb(a);if(a!==
+null)a=[q,u,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(x){return x}(a[2]):null;B[v]={nextPos:c,result:d};return d},na=A.ifMember=function(a){var v="ifMember@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=wa(a);if(d!==null)a=d;else{a=Aa(a);a=a!==null?a:null}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},wa=A["const"]=function(a){var v="const@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=X(a);
+u=u!==null?u:"";if(u!==null){if(e.substr(c,5)==="const"){var x="const";c+=5}else{x=null;a.reportMatchFailures&&m(h("const"))}if(x!==null){var H=X(a);if(H!==null){var S=$a(a);if(S!==null){var Z=X(a);if(Z!==null){var ca=sa(a);if(ca!==null){var oa=W(a);if(oa!==null){if(e.substr(c,1)==="="){var xa="=";c+=1}else{xa=null;a.reportMatchFailures&&m(h("="))}if(xa!==null){var Ea=W(a);if(Ea!==null){var Ha=Ca(a);if(Ha!==null){var Fa=W(a);if(Fa!==null){if(e.substr(c,1)===";"){var Ma=";";c+=1}else{Ma=null;a.reportMatchFailures&&
+m(h(";"))}if(Ma!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Sa,Xa,b,f){return{type:"const",extAttrs:Sa,idlType:Xa,name:b,value:f}}(a[0],a[4],a[6],a[10]):null;B[v]={nextPos:c,result:d};return d},Ca=A.constExpr=function(a){var v=
+"constExpr@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=wb(a);if(d!==null)a=d;else{d=ha(a);if(d!==null)a=d;else{a=i(a);a=a!==null?a:null}}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},Aa=A.attrOrOp=function(a){var v="attrOrOp@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=Ba(a);if(d!==null)a=d;else{d=Ia(a);if(d!==null)a=d;else{a=pa(a);a=a!==null?a:null}}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},Ba=A.Stringifier=function(a){var v=
+"Stringifier@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,11)==="stringifier"){var q="stringifier";c+=11}else{q=null;a.reportMatchFailures&&m(h("stringifier"))}if(q!==null){var u=W(a);if(u!==null){var x=Ia(a);if(x!==null)a=x;else{x=R(a);if(x!==null)a=x;else{if(e.substr(c,1)===";"){x=";";c+=1}else{x=null;a.reportMatchFailures&&m(h(";"))}a=x!==null?x:null}}if(a!==null)a=[q,u,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(H){if(H===";")return{type:"stringifier"};
+else{H.stringifier=true;return H}}(a[2]):null;B[v]={nextPos:c,result:d};return d},Ia=A.Attribute=function(a){var v="Attribute@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=W(a);if(u!==null){var x=c;if(e.substr(c,8)==="readonly"){var H="readonly";c+=8}else{H=null;a.reportMatchFailures&&m(h("readonly"))}if(H!==null){var S=X(a);if(S!==null)H=[H,S];else{H=null;c=x}}else{H=null;c=x}x=H!==null?H:"";if(x!==null){if(e.substr(c,9)==="attribute"){H="attribute";
+c+=9}else{H=null;a.reportMatchFailures&&m(h("attribute"))}if(H!==null){S=X(a);if(S!==null){var Z=$a(a);if(Z!==null){var ca=X(a);if(ca!==null){var oa=sa(a);if(oa!==null){var xa=W(a);if(xa!==null){var Ea=ja(a);Ea=Ea!==null?Ea:"";if(Ea!==null){var Ha=W(a);if(Ha!==null){var Fa=ra(a);Fa=Fa!==null?Fa:"";if(Fa!==null){var Ma=W(a);if(Ma!==null){if(e.substr(c,1)===";"){var Sa=";";c+=1}else{Sa=null;a.reportMatchFailures&&m(h(";"))}if(Sa!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,Sa,a];else{a=
+null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Xa,b,f,j,n,r){return{type:"attribute",extAttrs:Xa,idlType:f,name:j,readonly:b?true:false,getraises:n,setraises:r}}(a[0],a[2],a[5],a[7],a[9],a[11]):null;B[v]={nextPos:c,result:d};return d},ja=A.GetRaises=function(a){var v="GetRaises@"+
+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,9)==="getraises"){var q="getraises";c+=9}else{q=null;a.reportMatchFailures&&m(h("getraises"))}if(q!==null){var u=W(a);if(u!==null){if(e.substr(c,1)==="("){var x="(";c+=1}else{x=null;a.reportMatchFailures&&m(h("("))}if(x!==null){var H=gb(a);if(H!==null){if(e.substr(c,1)===")"){var S=")";c+=1}else{S=null;a.reportMatchFailures&&m(h(")"))}if(S!==null)a=[q,u,x,H,S];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;
+c=d}a=a!==null?function(Z){return Z}(a[3]):null;B[v]={nextPos:c,result:a};return a},ra=A.SetRaises=function(a){var v="SetRaises@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,9)==="setraises"){var q="setraises";c+=9}else{q=null;a.reportMatchFailures&&m(h("setraises"))}if(q!==null){var u=W(a);if(u!==null){if(e.substr(c,1)==="("){var x="(";c+=1}else{x=null;a.reportMatchFailures&&m(h("("))}if(x!==null){var H=gb(a);if(H!==null){if(e.substr(c,1)===")"){var S=")";c+=1}else{S=null;a.reportMatchFailures&&
+m(h(")"))}if(S!==null)a=[q,u,x,H,S];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(Z){return Z}(a[3]):null;B[v]={nextPos:c,result:a};return a},pa=A.Operation=function(a){var v="Operation@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=W(a);if(u!==null){var x=za(a);if(x!==null){var H=W(a);if(H!==null){a=R(a);if(a!==null)a=[q,u,x,H,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;
+c=d}}else{a=null;c=d}d=a!==null?function(S,Z,ca){for(var oa in Z)ca[oa]=Z[oa];if(S)ca.extAttrs=S;return ca}(a[0],a[2],a[4]):null;B[v]={nextPos:c,result:d};return d},za=A.OmittableSpecials=function(a){var v="OmittableSpecials@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,9)==="omittable"){var q="omittable";c+=9}else{q=null;a.reportMatchFailures&&m(h("omittable"))}q=q!==null?q:"";if(q!==null){var u=W(a);if(u!==null){for(var x=[],H=aa(a);H!==null;){x.push(H);H=aa(a)}if(x!==null)a=[q,
+u,x];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(S,Z){for(var ca={},oa=0,xa=Z.length;oa<xa;oa++)ca[Z[oa]]=true;ca.omittable=S?true:false;return ca}(a[0],a[2]):null;B[v]={nextPos:c,result:a};return a},aa=A.Specials=function(a){var v="Specials@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){if(e.substr(c,6)==="getter"){var u="getter";c+=6}else{u=null;a.reportMatchFailures&&m(h("getter"))}if(u!==null)u=u;else{if(e.substr(c,6)==="setter"){u="setter";
+c+=6}else{u=null;a.reportMatchFailures&&m(h("setter"))}if(u!==null)u=u;else{if(e.substr(c,7)==="creator"){u="creator";c+=7}else{u=null;a.reportMatchFailures&&m(h("creator"))}if(u!==null)u=u;else{if(e.substr(c,7)==="deleter"){u="deleter";c+=7}else{u=null;a.reportMatchFailures&&m(h("deleter"))}if(u!==null)u=u;else{if(e.substr(c,6)==="caller"){u="caller";c+=6}else{u=null;a.reportMatchFailures&&m(h("caller"))}u=u!==null?u:null}}}}if(u!==null){a=W(a);if(a!==null)a=[q,u,a];else{a=null;c=d}}else{a=null;
+c=d}}else{a=null;c=d}d=a!==null?function(x){return x}(a[1]):null;B[v]={nextPos:c,result:d};return d},R=A.OperationRest=function(a){var v="OperationRest@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Y(a);if(q!==null){var u=X(a);if(u!==null){var x=sa(a);x=x!==null?x:"";if(x!==null){var H=W(a);if(H!==null){if(e.substr(c,1)==="("){var S="(";c+=1}else{S=null;a.reportMatchFailures&&m(h("("))}if(S!==null){var Z=W(a);if(Z!==null){var ca=ba(a);ca=ca!==null?ca:"";if(ca!==null){var oa=W(a);if(oa!==
+null){if(e.substr(c,1)===")"){var xa=")";c+=1}else{xa=null;a.reportMatchFailures&&m(h(")"))}if(xa!==null){var Ea=W(a);if(Ea!==null){var Ha=Va(a);Ha=Ha!==null?Ha:"";if(Ha!==null){var Fa=W(a);if(Fa!==null){if(e.substr(c,1)===";"){var Ma=";";c+=1}else{Ma=null;a.reportMatchFailures&&m(h(";"))}if(Ma!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=
+null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Sa,Xa,b,f){return{type:"operation",idlType:Sa,name:Xa,arguments:b?b:[],raises:f}}(a[0],a[2],a[6],a[10]):null;B[v]={nextPos:c,result:d};return d},ba=A.Arguments=function(a){var v="Arguments@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Ra(a);if(q!==null){for(var u=[],x=ya(a);x!==null;){u.push(x);x=ya(a)}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,
+S){H=[H];for(var Z=0,ca=S.length;Z<ca;Z++)H.push(S[Z]);return H}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},ya=A.ArgumentsRest=function(a){var v="ArgumentsRest@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){if(e.substr(c,1)===","){var u=",";c+=1}else{u=null;a.reportMatchFailures&&m(h(","))}if(u!==null){var x=W(a);if(x!==null){a=Ra(a);if(a!==null)a=[q,u,x,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(H){return H}(a[3]):
+null;B[v]={nextPos:c,result:d};return d},Ra=A.Argument=function(a){var v="Argument@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=W(a);if(u!==null){if(e.substr(c,2)==="in"){var x="in";c+=2}else{x=null;a.reportMatchFailures&&m(h("in"))}x=x!==null?x:"";if(x!==null){var H=W(a);if(H!==null){if(e.substr(c,8)==="optional"){var S="optional";c+=8}else{S=null;a.reportMatchFailures&&m(h("optional"))}S=S!==null?S:"";if(S!==null){var Z=W(a);if(Z!==null){var ca=
+$a(a);if(ca!==null){if(e.substr(c,3)==="..."){var oa="...";c+=3}else{oa=null;a.reportMatchFailures&&m(h("..."))}oa=oa!==null?oa:"";if(oa!==null){var xa=X(a);if(xa!==null){a=sa(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Ea,Ha,Fa,Ma,Sa){return{name:Sa,type:Fa,variadic:Ma?true:false,optional:Ha?true:false,extAttrs:Ea}}(a[0],
+a[4],a[6],a[7],a[9]):null;B[v]={nextPos:c,result:d};return d},Va=A.Raises=function(a){var v="Raises@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,6)==="raises"){var q="raises";c+=6}else{q=null;a.reportMatchFailures&&m(h("raises"))}if(q!==null){var u=X(a);if(u!==null){if(e.substr(c,1)==="("){var x="(";c+=1}else{x=null;a.reportMatchFailures&&m(h("("))}if(x!==null){var H=W(a);if(H!==null){var S=gb(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)===")"){var ca=")";c+=1}else{ca=
+null;a.reportMatchFailures&&m(h(")"))}if(ca!==null)a=[q,u,x,H,S,Z,ca];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(oa){return oa}(a[4]):null;B[v]={nextPos:c,result:a};return a},lb=A.typedef=function(a){var v="typedef@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;if(e.substr(c,7)==="typedef"){var q="typedef";c+=7}else{q=null;a.reportMatchFailures&&m(h("typedef"))}if(q!==null){var u=X(a);if(u!==null){var x=
+$a(a);if(x!==null){var H=X(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)===";"){var ca=";";c+=1}else{ca=null;a.reportMatchFailures&&m(h(";"))}if(ca!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(oa,xa){return{type:"typedef",name:xa,idlType:oa}}(a[2],a[4]):null;B[v]={nextPos:c,result:d};return d},Ga=A.exception=
+function(a){var v="exception@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=W(a);if(u!==null){if(e.substr(c,9)==="exception"){var x="exception";c+=9}else{x=null;a.reportMatchFailures&&m(h("exception"))}if(x!==null){var H=X(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)==="{"){var ca="{";c+=1}else{ca=null;a.reportMatchFailures&&m(h("{"))}if(ca!==null){var oa=W(a);if(oa!==null){for(var xa=[],Ea=Ta(a);Ea!==null;){xa.push(Ea);
+Ea=Ta(a)}if(xa!==null){Ea=W(a);if(Ea!==null){if(e.substr(c,1)==="}"){var Ha="}";c+=1}else{Ha=null;a.reportMatchFailures&&m(h("}"))}if(Ha!==null){var Fa=W(a);if(Fa!==null){if(e.substr(c,1)===";"){var Ma=";";c+=1}else{Ma=null;a.reportMatchFailures&&m(h(";"))}if(Ma!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,oa,xa,Ea,Ha,Fa,Ma,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=
+null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(Sa,Xa,b){return{type:"exception",name:Xa,members:b,extAttrs:Sa}}(a[0],a[4],a[8]):null;B[v]={nextPos:c,result:d};return d},Ta=A.exMember=function(a){var v="exMember@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=wa(a);if(d!==null)a=d;else{a=pb(a);a=a!==null?a:null}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},pb=A.field=function(a){var v="field@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=
+c;var q=Za(a);q=q!==null?q:"";if(q!==null){var u=X(a);u=u!==null?u:"";if(u!==null){var x=$a(a);if(x!==null){var H=X(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)===";"){var ca=";";c+=1}else{ca=null;a.reportMatchFailures&&m(h(";"))}if(ca!==null){a=W(a);if(a!==null)a=[q,u,x,H,S,Z,ca,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(oa,xa,Ea){return{type:"field",
+extAttrs:oa,idlType:xa,name:Ea}}(a[0],a[2],a[4]):null;B[v]={nextPos:c,result:d};return d},Za=A.extendedAttributeList=function(a){var v="extendedAttributeList@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){if(e.substr(c,1)==="["){var u="[";c+=1}else{u=null;a.reportMatchFailures&&m(h("["))}if(u!==null){var x=Bb(a);if(x!==null){if(e.substr(c,1)==="]"){var H="]";c+=1}else{H=null;a.reportMatchFailures&&m(h("]"))}if(H!==null){a=W(a);if(a!==null)a=[q,u,x,H,a];else{a=null;c=d}}else{a=
+null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(S){return S}(a[2]):null;B[v]={nextPos:c,result:d};return d},Bb=A.ExtAttrs=function(a){var v="ExtAttrs@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=mb(a);if(q!==null){for(var u=[],x=Qa(a);x!==null;){u.push(x);x=Qa(a)}if(u!==null)a=[q,u];else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(H,S){H=[H];for(var Z=0,ca=S.length;Z<ca;Z++)H.push(S[Z]);return H}(a[0],a[1]):null;B[v]={nextPos:c,result:a};return a},Qa=
+A.ExtAttrsRest=function(a){var v="ExtAttrsRest@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=W(a);if(q!==null){if(e.substr(c,1)===","){var u=",";c+=1}else{u=null;a.reportMatchFailures&&m(h(","))}if(u!==null){var x=W(a);if(x!==null){a=mb(a);if(a!==null)a=[q,u,x,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(H){return H}(a[3]):null;B[v]={nextPos:c,result:d};return d},mb=A.ExtAttr=function(a){var v="ExtAttr@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=
+I(a);if(d!==null)a=d;else{d=C(a);if(d!==null)a=d;else{d=yb(a);if(d!==null)a=d;else{a=nb(a);a=a!==null?a:null}}}a=a!==null?function(q){return q}(a):null;B[v]={nextPos:c,result:a};return a},nb=A.ExtAttrNoArg=function(a){var v="ExtAttrNoArg@"+c,d=B[v];if(d){c=d.nextPos;return d.result}a=sa(a);a=a!==null?function(q){return{name:q}}(a):null;B[v]={nextPos:c,result:a};return a},yb=A.ExtAttrNameValue=function(a){var v="ExtAttrNameValue@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=sa(a);if(q!==null){var u=
+W(a);if(u!==null){if(e.substr(c,1)==="="){var x="=";c+=1}else{x=null;a.reportMatchFailures&&m(h("="))}if(x!==null){var H=W(a);if(H!==null){a=hb(a);if(a!==null)a=[q,u,x,H,a];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}d=a!==null?function(S,Z){return{name:S,value:Z}}(a[0],a[4]):null;B[v]={nextPos:c,result:d};return d},C=A.ExtAttrNamedArgList=function(a){var v="ExtAttrNamedArgList@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=sa(a);if(q!==null){var u=
+W(a);if(u!==null){if(e.substr(c,1)==="="){var x="=";c+=1}else{x=null;a.reportMatchFailures&&m(h("="))}if(x!==null){var H=W(a);if(H!==null){var S=sa(a);if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)==="("){var ca="(";c+=1}else{ca=null;a.reportMatchFailures&&m(h("("))}if(ca!==null){var oa=W(a);if(oa!==null){var xa=ba(a);xa=xa!==null?xa:"";if(xa!==null){var Ea=W(a);if(Ea!==null){if(e.substr(c,1)===")"){var Ha=")";c+=1}else{Ha=null;a.reportMatchFailures&&m(h(")"))}if(Ha!==null)a=[q,u,x,H,S,Z,ca,
+oa,xa,Ea,Ha];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(Fa,Ma,Sa){return{name:Fa,value:Ma,arguments:Sa}}(a[0],a[4],a[8]):null;B[v]={nextPos:c,result:a};return a},I=A.ExtAttrArgList=function(a){var v="ExtAttrArgList@"+c,d=B[v];if(d){c=d.nextPos;return d.result}d=c;var q=sa(a);if(q!==null){var u=W(a);if(u!==null){if(e.substr(c,1)==="("){var x=
+"(";c+=1}else{x=null;a.reportMatchFailures&&m(h("("))}if(x!==null){var H=W(a);if(H!==null){var S=ba(a);S=S!==null?S:"";if(S!==null){var Z=W(a);if(Z!==null){if(e.substr(c,1)===")"){var ca=")";c+=1}else{ca=null;a.reportMatchFailures&&m(h(")"))}if(ca!==null)a=[q,u,x,H,S,Z,ca];else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}}else{a=null;c=d}a=a!==null?function(oa,xa){return{name:oa,arguments:xa}}(a[0],a[4]):null;B[v]={nextPos:c,result:a};return a};
+l=A[l]({reportMatchFailures:true});if(l===null||c!==e.length){l=F();throw new this.SyntaxError(w(),l.line,l.column);}return l},toSource:function(){return this._source}};g.SyntaxError=function(e,l,h){this.name="SyntaxError";this.message=e;this.line=l;this.column=h};g.SyntaxError.prototype=Error.prototype;return g}();
+define("core/examples",[],function(){return{run:function(g,e,l){$("pre.example").each(function(h,o){h=$(o);for(o=h.html().split("\n");o.length&&/^\s*$/.test(o[0]);)o.shift();for(;o.length&&/^\s*$/.test(o[o.length-1]);)o.pop();var m=/^(\s+)/.exec(o[0]);if(m){m=new RegExp("^"+m[1]);for(var w=0;w<o.length;w++)o[w]=o[w].replace(m,"")}h.html(o.join("\n"))});progress("processing syntax highlighting");g=$("pre.highlight, code.highlight");g.addClass("prettyprint");g.length&&prettyPrint();l()},ieDummy:1}});
+window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var g=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);g=g?+g[1]:false;window._pr_isIE6=function(){return g};return g};
+(function(){function g(G){return G.replace(zb,"&").replace(tb,"<").replace(sb,">").replace(ha,""")}function e(G){return G.replace(zb,"&").replace(tb,"<").replace(sb,">")}function l(G){var L=G.indexOf("&");if(L<0)return G;for(--L;(L=G.indexOf("&#",L+1))>=0;){var O=G.indexOf(";",L);if(O>=0){var da=G.substring(L+3,O),U=10;if(da&&da.charAt(0)==="x"){da=da.substring(1);U=16}da=parseInt(da,U);isNaN(da)||(G=G.substring(0,L)+String.fromCharCode(da)+G.substring(O+1))}}return G.replace($a,
+"<").replace(La,">").replace(fb,"'").replace(ub,'"').replace(cb," ").replace(qb,"&")}function h(G){return"XMP"===G.tagName}function o(G,L){if("PRE"===G.tagName)return true;if(!gb.test(L))return true;L="";if(G.currentStyle)L=G.currentStyle.whiteSpace;else if(window.getComputedStyle)L=window.getComputedStyle(G,null).whiteSpace;return!L||L==="pre"}function m(G,L,O){switch(G.nodeType){case 1:var da=G.tagName.toLowerCase();L.push("<",da);var U=G.attributes,qa=U.length;if(qa){if(O){for(var na=[],wa=qa;--wa>=
+0;)na[wa]=U[wa];na.sort(function(Ca,Aa){return Ca.name<Aa.name?-1:Ca.name===Aa.name?0:1});U=na}for(wa=0;wa<qa;++wa){na=U[wa];na.specified&&L.push(" ",na.name.toLowerCase(),'="',g(na.value),'"')}}L.push(">");for(U=G.firstChild;U;U=U.nextSibling)m(U,L,O);if(G.firstChild||!/^(?:br|link|img)$/.test(da))L.push("</",da,">");break;case 3:case 4:L.push(e(G.nodeValue));break}}function w(G){function L(ja){if(ja.charAt(0)!=="\\")return ja.charCodeAt(0);switch(ja.charAt(1)){case "b":return 8;case "t":return 9;
+case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(ja.substring(2),16)||ja.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(ja.substring(1),8);default:return ja.charCodeAt(1)}}function O(ja){if(ja<32)return(ja<16?"\\x0":"\\x")+ja.toString(16);ja=String.fromCharCode(ja);if(ja==="\\"||ja==="-"||ja==="["||ja==="]")ja="\\"+ja;return ja}function da(ja){var ra=ja.substring(1,ja.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"));ja=[];for(var pa=[],za=ra[0]==="^",aa=za?1:0,R=ra.length;aa<R;++aa){var ba=ra[aa];switch(ba){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":ja.push(ba);continue}ba=L(ba);var ya;if(aa+2<R&&"-"===ra[aa+1]){ya=L(ra[aa+2]);aa+=2}else ya=ba;pa.push([ba,ya]);if(!(ya<65||ba>122)){ya<65||ba>90||pa.push([Math.max(65,ba)|32,Math.min(ya,90)|32]);ya<97||ba>122||pa.push([Math.max(97,ba)&-33,Math.min(ya,122)&-33])}}pa.sort(function(Ra,Va){return Ra[0]-Va[0]||Va[1]-
+Ra[1]});ra=[];ba=[NaN,NaN];for(aa=0;aa<pa.length;++aa){R=pa[aa];if(R[0]<=ba[1]+1)ba[1]=Math.max(ba[1],R[1]);else ra.push(ba=R)}pa=["["];za&&pa.push("^");pa.push.apply(pa,ja);for(aa=0;aa<ra.length;++aa){R=ra[aa];pa.push(O(R[0]));if(R[1]>R[0]){R[1]+1>R[0]&&pa.push("-");pa.push(O(R[1]))}}pa.push("]");return pa.join("")}function U(ja){for(var ra=ja.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")),pa=ra.length,za=[],aa=0,R=0;aa<pa;++aa){var ba=ra[aa];if(ba==="(")++R;else if("\\"===ba.charAt(0))if((ba=+ba.substring(1))&&ba<=R)za[ba]=-1}for(aa=1;aa<za.length;++aa)if(-1===za[aa])za[aa]=++qa;for(R=aa=0;aa<pa;++aa){ba=ra[aa];if(ba==="("){++R;if(za[R]===undefined)ra[aa]="(?:"}else if("\\"===ba.charAt(0))if((ba=+ba.substring(1))&&ba<=R)ra[aa]="\\"+za[R]}for(R=aa=0;aa<pa;++aa)if("^"===ra[aa]&&"^"!==ra[aa+1])ra[aa]="";if(ja.ignoreCase&&na)for(aa=0;aa<pa;++aa){ba=ra[aa];ja=ba.charAt(0);if(ba.length>=
+2&&ja==="[")ra[aa]=da(ba);else if(ja!=="\\")ra[aa]=ba.replace(/[a-zA-Z]/g,function(ya){ya=ya.charCodeAt(0);return"["+String.fromCharCode(ya&-33,ya|32)+"]"})}return ra.join("")}for(var qa=0,na=false,wa=false,Ca=0,Aa=G.length;Ca<Aa;++Ca){var Ba=G[Ca];if(Ba.ignoreCase)wa=true;else if(/[a-z]/i.test(Ba.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){na=true;wa=false;break}}var Ia=[];Ca=0;for(Aa=G.length;Ca<Aa;++Ca){Ba=G[Ca];if(Ba.global||Ba.multiline)throw new Error(""+Ba);Ia.push("(?:"+
+U(Ba)+")")}return new RegExp(Ia.join("|"),wa?"gi":"g")}function F(G){if(null===Ua){var L=document.createElement("PRE");L.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));Ua=!/</.test(L.innerHTML)}if(Ua){L=G.innerHTML;if(h(G))L=e(L);else o(G,L)||(L=L.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g," "));return L}L=[];for(G=G.firstChild;G;G=G.nextSibling)m(G,L);return L.join("")}function A(G){var L=0;return function(O){for(var da=null,U=0,qa=0,na=O.length;qa<
+na;++qa)switch(O.charAt(qa)){case "\t":da||(da=[]);da.push(O.substring(U,qa));U=G-L%G;for(L+=U;U>=0;U-=16)da.push(" ".substring(0,U));U=qa+1;break;case "\n":L=0;break;default:++L}if(!da)return O;da.push(O.substring(U));return da.join("")}}function c(G){G=G.match(hb);var L=[],O=0,da=[];if(G)for(var U=0,qa=G.length;U<qa;++U){var na=G[U];if(na.length>1&&na.charAt(0)==="<"){if(!vb.test(na))if(ab.test(na)){L.push(na.substring(9,na.length-3));O+=na.length-12}else if(rb.test(na)){L.push("\n");
+++O}else if(na.indexOf("nocode")>=0&&ma(na)){var wa=na.match(wb)[2],Ca=1,Aa;Aa=U+1;a:for(;Aa<qa;++Aa){var Ba=G[Aa].match(wb);if(Ba&&Ba[2]===wa)if(Ba[1]==="/"){if(--Ca===0)break a}else++Ca}if(Aa<qa){da.push(O,G.slice(U,Aa+1).join(""));U=Aa}else da.push(O,na)}else da.push(O,na)}else{na=l(na);L.push(na);O+=na.length}}return{source:L.join(""),tags:da}}function ma(G){return!!G.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)}function ta(G,
+L,O,da){if(L){G={source:L,basePos:G};O(G);da.push.apply(da,G.decorations)}}function B(G,L){var O={},da;(function(){for(var na=G.concat(L),wa=[],Ca={},Aa=0,Ba=na.length;Aa<Ba;++Aa){var Ia=na[Aa],ja=Ia[3];if(ja)for(var ra=ja.length;--ra>=0;)O[ja.charAt(ra)]=Ia;Ia=Ia[1];ja=""+Ia;if(!Ca.hasOwnProperty(ja)){wa.push(Ia);Ca[ja]=null}}wa.push(/[\0-\uffff]/);da=w(wa)})();var U=L.length,qa=function(na){for(var wa=na.basePos,Ca=[wa,"pln"],Aa=0,Ba=na.source.match(da)||[],Ia={},ja=0,ra=Ba.length;ja<ra;++ja){var pa=
+Ba[ja],za=Ia[pa],aa=void 0,R;if(typeof za==="string")R=false;else{var ba=O[pa.charAt(0)];if(ba){aa=pa.match(ba[1]);za=ba[0]}else{for(R=0;R<U;++R){ba=L[R];if(aa=pa.match(ba[1])){za=ba[0];break}}aa||(za="pln")}if((R=za.length>=5&&"lang-"===za.substring(0,5))&&!(aa&&typeof aa[1]==="string")){R=false;za="src"}R||(Ia[pa]=za)}ba=Aa;Aa+=pa.length;if(R){R=aa[1];var ya=pa.indexOf(R),Ra=ya+R.length;if(aa[2]){Ra=pa.length-aa[2].length;ya=Ra-R.length}za=za.substring(5);ta(wa+ba,pa.substring(0,ya),qa,Ca);ta(wa+
+ba+ya,R,xb(za,R),Ca);ta(wa+ba+Ra,pa.substring(Ra),qa,Ca)}else Ca.push(wa+ba,za)}na.decorations=Ca};return qa}function X(G){var L=[],O=[];if(G.tripleQuotedStrings)L.push(["str",/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""]);else G.multiLineStrings?L.push(["str",/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
+null,"'\"`"]):L.push(["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);G.verbatimStrings&&O.push(["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(G.hashComments)if(G.cStyleComments){L.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);O.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else L.push(["com",/^#[^\r\n]*/,null,"#"]);if(G.cStyleComments){O.push(["com",
+/^\/\/[^\r\n]*/,null]);O.push(["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null])}G.regexLiterals&&O.push(["lang-regex",new RegExp("^"+bb+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);G=G.keywords.replace(/^\s+|\s+$/g,"");G.length&&O.push(["kwd",new RegExp("^(?:"+G.replace(/\s+/g,"|")+")\\b"),null]);L.push(["pln",/^\s+/,null," \r\n\t\u00a0"]);O.push(["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^[a-z_$][a-z_$@0-9]*/i,
+null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(L,O)}function W(G){function L(Ga){if(Ga>na){if(wa&&wa!==Ca){qa.push("</span>");wa=null}if(!wa&&Ca){wa=Ca;qa.push('<span class="',wa,'">')}var Ta=e(Ia(O.substring(na,Ga))).replace(aa?ra:ja,"$1 ");aa=za.test(Ta);qa.push(Ta.replace(pa,ya));na=Ga}}var O=G.source,da=G.extractedTags,U=G.decorations,qa=[],na=0,wa=null,Ca=null,Aa=0,Ba=0,Ia=A(window.PR_TAB_WIDTH),
+ja=/([\r\n ]) /g,ra=/(^| ) /gm,pa=/\r\n?|\n/g,za=/[ \r\n]$/,aa=true,R=window._pr_isIE6();R=R?G.sourceNode.tagName==="PRE"?R===6?" \r\n":R===7?" <br>\r":" \r":" <br />":"<br />";var ba=G.sourceNode.className.match(/\blinenums\b(?::(\d+))?/),ya;if(ba){for(var Ra=[],Va=0;Va<10;++Va)Ra[Va]=R+'</li><li class="L'+Va+'">';var lb=ba[1]&&ba[1].length?ba[1]-1:0;qa.push('<ol class="linenums"><li class="L',lb%10,'"');lb&&qa.push(' value="',lb+1,'"');qa.push(">");ya=function(){var Ga=Ra[++lb%
+10];return wa?"</span>"+Ga+'<span class="'+wa+'">':Ga}}else ya=R;for(;;)if(Aa<da.length?Ba<U.length?da[Aa]<=U[Ba]:true:false){L(da[Aa]);if(wa){qa.push("</span>");wa=null}qa.push(da[Aa+1]);Aa+=2}else if(Ba<U.length){L(U[Ba]);Ca=U[Ba+1];Ba+=2}else break;L(O.length);wa&&qa.push("</span>");ba&&qa.push("</li></ol>");G.prettyPrintedHtml=qa.join("")}function sa(G,L){for(var O=L.length;--O>=0;){var da=L[O];if(Y.hasOwnProperty(da))"console"in window&&console.warn("cannot override language handler %s",da);
+else Y[da]=G}}function xb(G,L){G&&Y.hasOwnProperty(G)||(G=/^\s*</.test(L)?"default-markup":"default-code");return Y[G]}function Ya(G){var L=G.sourceCodeHtml,O=G.langExtension;G.prettyPrintedHtml=L;try{var da=c(L),U=da.source;G.source=U;G.basePos=0;G.extractedTags=da.tags;xb(O,U)(G);W(G)}catch(qa){if("console"in window)console.log(qa&&qa.stack?qa.stack:qa)}}function V(G,L){G={sourceCodeHtml:G,langExtension:L};Ya(G);return G.prettyPrintedHtml}function i(G){function L(ja){return document.getElementsByTagName(ja)}
+function O(){for(var ja=window.PR_SHOULD_USE_CONTINUATION?Aa.now()+250:Infinity;Ba<qa.length&&Aa.now()<ja;Ba++){var ra=qa[Ba];if(ra.className&&ra.className.indexOf("prettyprint")>=0){var pa=ra.className.match(/\blang-(\w+)\b/);if(pa)pa=pa[1];for(var za=false,aa=ra.parentNode;aa;aa=aa.parentNode)if((aa.tagName==="pre"||aa.tagName==="code"||aa.tagName==="xmp")&&aa.className&&aa.className.indexOf("prettyprint")>=0){za=true;break}if(!za){za=F(ra);za=za.replace(/(?:\r\n?|\n)$/,"");Ia={sourceCodeHtml:za,
+langExtension:pa,sourceNode:ra};Ya(Ia);da()}}}if(Ba<qa.length)setTimeout(O,250);else G&&G()}function da(){var ja=Ia.prettyPrintedHtml;if(ja){var ra=Ia.sourceNode;if(h(ra)){for(var pa=document.createElement("PRE"),za=0;za<ra.attributes.length;++za){var aa=ra.attributes[za];if(aa.specified)if(aa.name.toLowerCase()==="class")pa.className=aa.value;else pa.setAttribute(aa.name,aa.value)}pa.innerHTML=ja;ra.parentNode.replaceChild(pa,ra)}else ra.innerHTML=ja}}for(var U=[L("pre"),L("code"),L("xmp")],qa=[],
+na=0;na<U.length;++na)for(var wa=0,Ca=U[na].length;wa<Ca;++wa)qa.push(U[na][wa]);U=null;var Aa=Date;Aa.now||(Aa={now:function(){return(new Date).getTime()}});var Ba=0,Ia;O()}var bb=function(){for(var G=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=","~","break","case","continue","delete","do","else","finally","instanceof",
+"return","throw","try","typeof"],L="(?:^^|[+-]",O=0;O<G.length;++O)L+="|"+G[O].replace(/([^=<>:&a-z])/g,"\\$1");L+=")\\s*";return L}(),zb=/&/g,tb=/</g,sb=/>/g,ha=/\"/g,$a=/</g,La=/>/g,fb=/'/g,ub=/"/g,qb=/&/g,cb=/ /g,gb=/[\r\n]/g,Ua=null,hb=new RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),vb=/^<\!--/,ab=/^<!\[CDATA\[/,rb=/^<br\b/i,wb=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/,db=X({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof 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 wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending 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 break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN 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 break continue do else for if return while 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 break continue do else for if return while 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 break continue do else for if return while case done elif esac eval fi function in local set then until ",
+hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),Y={};sa(db,["default-code"]);sa(B([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["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"]);sa(B([["pln",/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],["pun",/^[=<>\/]+/],["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"]);sa(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);sa(X({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof 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 wchar_t where ",
+hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);sa(X({keywords:"null true false"}),["json"]);sa(X({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending 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 ",
+hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);sa(X({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ",
+cStyleComments:true}),["java"]);sa(X({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);sa(X({keywords:"break continue do else for if return while 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 ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);
+sa(X({keywords:"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 ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);sa(X({keywords:"break continue do else for if return while 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 ",
+hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);sa(X({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);
+sa(B([],[["str",/^[\s\S]+/]]),["regex"]);window.PR_normalizedHtml=m;window.prettyPrintOne=V;window.prettyPrint=i;window.PR={combinePrefixPatterns:w,createSimpleLexer:B,registerLangHandler:sa,sourceDecorator:X,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
+define("w3c/bibref",["core/utils"],function(g){return{run:function(e,l,h){progress("inserting bibrefs");if(!e.normativeReferences)e.normativeReferences=[];if(!e.informativeReferences)e.informativeReferences=[];var o=g.unique(e.informativeReferences),m=g.unique(e.normativeReferences);if(o.length||m.length){for(var w=[],F=0;F<o.length;F++)!$.inArray(o[F],m)>-1&&w.push(o[F]);o=w;l=$("<section id='references' class='appendix'/>").appendTo($("body"),l).append("<h2>References</h2>");e.refNote&&l.html("<p/>").find("p").html(refNote);
+w=["Normative","Informative"];for(F=0;F<w.length;F++){var A=w[F],c=A=="Normative"?m:o;if(c.length!=0){A=$("<section/>").appendTo(l).attr("id",A.toLowerCase()+"-references").append("<h3>").find("h3").text(A+" references").end();c.sort();A=$("<dl class='bibliography'/>").appendTo(A);for(var ma=0,ta=c.length;ma<ta;ma++){var B=c[ma];$("<dt/>").attr({id:"bib-"+B}).appendTo(A).text("["+B+"]");$("<dd><em>waiting for reference to load...</em></dd>").appendTo(A);require({baseUrl:e.respecBase},["w3c/bibref/"+
+B],function(X){$("#bib-"+X.id).next().html(X.html);$('script[data-requiremodule="w3c/bibref/'+X.id+'"]').remove()})}}}}h()},ieDummy:1}});
+define("core/structure",[],function(){return{run:function(g,e,l){progress("fixing headers");g=$("section",e).find("h1:first, h2:first, h3:first, h4:first, h5:first, h6:first");if(g.length){g.each(function(){var m=$(this).parents("section").length+1;if(m>6)m=6;m="h"+m;this.localName.toLowerCase()!=m&&$(this).renameElement(m)});if(g=this.makeTOCAtLevel($("body",e),e,[0],1)){g=$("<section id='toc'/>").append("<h2 class='introductory'>Table of Contents</h2>").append(g);var h=$("#sotd");h.length||(h=$("#abstract",
+e));h.after(g);var o=this.secMap;$("a[href]:not(.tocxref)",e).each(function(m,w){m=$(w,e);w=m.attr("href").slice(1);if(o[w]){m.addClass("sec-ref");m.html()==""&&m.html(o[w])}});l()}}else l()},secMap:{},appendixMode:false,lastNonAppendix:0,alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ",makeTOCAtLevel:function(g,e,l,h){g=g.children("section:not(.introductory)");if(g.length==0)return null;for(var o=$("<ul class='toc'></ul>"),m=0;m<g.length;m++){var w=$(g[m],e);if(w.contents().length){var F=w.children()[0],A=
+F.localName.toLowerCase();if(!(A!="h2"&&A!="h3"&&A!="h4"&&A!="h5"&&A!="h6")){A=F.textContent;var c=$(F,e).contents().clone();c.find("a").renameElement("span").attr("class","formerLink").removeAttr("href");c.find("dfn").renameElement("span").removeAttr("id");var ma=w.makeID(null,A);l[l.length-1]++;var ta=l.slice();if(w.hasClass("appendix")&&l.length==1&&!this.appendixMode){this.lastNonAppendix=l[0];this.appendixMode=true}if(this.appendixMode)ta[0]=this.alphabet.charAt(l[0]-this.lastNonAppendix);var B=
+ta.join(".");if(ta.length==1){B+=".";$(F,e).before(document.createComment("OddPage"))}ta=$("<span class='secno'></span>").text(B+" ");$(F,e).prepend(ta);this.secMap[ma]="<span class='secno'>"+B+"</span><span class='sec-title'>"+A+"</span>";F=$("<a/>").attr({href:"#"+ma,"class":"tocxref"}).append(ta.clone()).append(c);F=$("<li class='tocline'/>").append(F);o.append(F);if(!(this.maxTocLevel&&h>=this.maxTocLevel)){l.push(0);(w=this.makeTOCAtLevel(w,e,l,h+1))&&F.append(w);l.pop()}}}}return o},ieDummy:1}});
+define("w3c/structure",[],function(){return{run:function(g,e,l){progress("flagging informative");$("section.informative").find("h2:first, h3:first, h4:first, h5:first, h6:first").after("<em>This section is non-normative.</em>");$("h2, h3, h4, h5, h6").each(function(h,o){if(!$(o).attr("id")){h=o.parentNode;h.localName.toLowerCase()=="section"&&h.hasAttribute("id")&&!o.previousElementSibling||$(o).makeID()}});l()},ieDummy:1}});
+define("core/figure",[],function(){return{run:function(g,e,l){progress("handling figures");e.normalize();var h={},o=[];$(".figure",e).each(function(m,w){var F=$(w).attr("title")||$(w).find("[title]").attr("title")||$(w).attr("alt")||$(w).find("[alt]").attr("alt");F||error("Figure must have a self or child with a @title or @alt");var A=$(w).makeID("fig",F);h[A]=$("<span class='figno'>"+(m+1)+"</span><span class='fig-title'>"+F+"</span>");var c=$("<p class='caption'><span class='figno'>"+(m+1)+"</span>"+
+F+"</p>");o[m]=$("<li class='tofline'><a class='tocxref' href='#"+A+"'><span class='figno'>"+(m+1)+"</span>"+F+"</a></li>");if($(w).is("div"))$(w).append(c);else $(w).is("img")?$(w).wrap($("<div class='figure'></div>")).append(c):$(w).after(c)});$("a[href]",e).each(function(m,w){m=$(w).attr("href").slice(1);if(h[m]){progress("fig reference to "+w);$(w).addClass("fig-ref");if($(w).html()==""){progress("append "+h[m]);$(w).append(h[m].clone())}}});o.empty||$("section#tof",e).each(function(m,w){$(w).append($("<h2 class='introductory'>Table of Figures</h2>"));
+$(w).append($("<ol class='tof'/>"));w=$(w).children("ol");for(m=0;m<o.length;m++)w.append(o[m])});l()},ieDummy:1}});define("core/dfn",[],function(){return{run:function(g,e,l){progress("handling dfn");e.normalize();var h={};$("dfn").each(function(o,m){o=$(m).dfnTitle();h[o]=$(m).makeID("dfn",o)});$("a:not([href])").each(function(o,m){o=$(m);if(!o.hasClass("externalDFN")){m=o.dfnTitle();h[m]&&!(h[m]instanceof Function)&&o.attr("href","#"+h[m]).addClass("internalDFN")}});l()},ieDummy:1}});
+define("core/rdfa",["core/utils"],function(){return{run:function(g,e,l){progress("RDFa");$("#abstract",e).each(function(h,o){$(o).attrAppend("property","dcterms:absract");$(o).attr("datatype","")});$("section",e).each(function(h,o){$(o).attr("about")||$(o).attr("about","#"+$(o).attr("id"));$(o).attrAppend("typeof","bibo:Chapter")});$("html",e).attr("about","").attr("property","dc:language").attr("content","en");e.documentElement.setAttribute("prefix","dc: 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#");
+$("dd.Editor",e).each(function(h,o){$(o).attrAppend("rel","bibo:editor");$(o).children("a.name").each(function(m,w){$(w).attr("rel","foaf:homepage");$(w).attr("property","foaf:name");$(w).attr("content",$(w).text())});$(o).children("span.name").attr("property","foaf:name");$(o).children("a.company").attr("rel","foaf:workplaceHomepage");$(o).children("a.email").attr("rel","foaf:mbox");$(o).wrapInner("<span typeof='foaf:Person'>")});$('dt:contains("Previous version") + dd a',e).attr("rel","dc:replaces");
+$("h1.title",e).attrAppend("rel","dc:title");$("h2.subtitle",e).attrAppend("rel","bibo:subtitle");$("p.copyright a.license",e).attr("rel","license");$("p.copyright a.publisher",e).each(function(h,o){h=$(o).text();$(o).attr("rel","foaf:homepage").attr("property","foaf:name").attr("content",h).wrap("<span rel='dcterms:publisher'><span typeof='foaf:Organization/></span>")});$("dl.bibliography").attr("about","");$("#normative-references dl.bibliography dd",e).attr("rel","dc:requires");$("#informative-references dl.bibliography dd",
+e).attr("rel","dc:references");l()},ieDummy:1}});define("w3c/unhtml5",[],function(){return{run:function(g,e,l){progress("unHTML5");$("section").each(function(h,o){$(o).addClass("section").renameElement("div")});l()},ieDummy:1}});define("core/remove-respec",[],function(){return{run:function(g,e,l){progress("removing ReSpec markup");$('.remove, script[data-requiremodule]:not([data-requiremodule*="/bibref/"])',$(e)).remove();l()},ieDummy:1}});
+require(["core/base-runner","core/utils","core/default-root-attr","core/style","w3c/style","w3c/headers","core/data-transform","core/data-include","core/inlines","core/webidl","core/examples","w3c/bibref","core/structure","w3c/structure","core/figure","core/dfn","core/rdfa","w3c/unhtml5","core/remove-respec"],function(g){g.runAll(Array.prototype.slice.call(arguments))});define("w3c/profile-common",function(){});
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/require.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,907 @@
+/*
+ RequireJS 0.22.0 Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+ RequireJS i18n Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+ RequireJS text Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+ RequireJS order Copyright (c) 2010, The Dojo Foundation All Rights Reserved.
+ Available via the MIT or new BSD license.
+ see: http://github.com/jrburke/requirejs for details
+
+ jQuery JavaScript Library v1.4.4
+ http://jquery.com/
+
+ Copyright 2010, John Resig
+ Dual licensed under the MIT or GPL Version 2 licenses.
+ http://jquery.org/license
+
+ Includes Sizzle.js
+ http://sizzlejs.com/
+ Copyright 2010, The Dojo Foundation
+ Released under the MIT, BSD, and GPL Licenses.
+
+ Date: Thu Nov 11 19:04:53 2010 -0500
+*/
+var require,define;
+(function(){function R(y){return ja.call(y)==="[object Function]"}function B(y){return ja.call(y)==="[object Array]"}function Aa(y,E,L){for(var M in E)if(!(M in ra)&&(!(M in y)||L))y[M]=E[M];return G}function $(y,E,L){var M,ha,S;for(M=0;S=E[M];M++){S=typeof S==="string"?{name:S}:S;ha=S.location;if(L&&(!ha||ha.indexOf("/")!==0&&ha.indexOf(":")===-1))S.location=L+"/"+(S.location||S.name);S.location=S.location||S.name;S.lib=S.lib||"lib";S.main=(S.main||"lib/main").replace(W,"");y[S.name]=S}}function J(y){function E(k){var o,
+s;for(o=0;s=k[o];o++)if(s==="."){k.splice(o,1);o-=1}else if(s==="..")if(o===1&&(k[2]===".."||k[0]===".."))break;else if(o>0){k.splice(o-1,2);o-=2}}function L(k,o){var s;if(k.charAt(0)===".")if(o){if(ma.packages[o])o=[o];else{o=o.split("/");o=o.slice(0,o.length-1)}k=o.concat(k.split("/"));E(k);s=ma.packages[o=k[0]];k=k.join("/");if(s&&k===o+"/"+s.main)k=o}return k}function M(k,o){var s=k?k.indexOf("!"):-1,x=null,F=o?o.name:null,T=k,N,aa;if(s!==-1){x=k.substring(0,s);k=k.substring(s+1,k.length)}if(x){x=
+L(x,F);x=Ya[x]||x}if(k){if(x)N=(s=ea[x])?s.normalize?s.normalize(k,function(ia){return L(ia,F)}):L(k,F):"__$p"+F+"@"+k;else N=L(k,F);aa=Za[N];if(!aa){aa=G.toModuleUrl?G.toModuleUrl(K,k,o):K.nameToUrl(k,null,o);Za[N]=aa}}return{prefix:x,name:N,parentMap:o,url:aa,originalName:T,fullName:x?x+"!"+N:N}}function ha(){var k=true,o=ma.priorityWait,s,x;if(o){for(x=0;s=o[x];x++)if(!va[s]){k=false;break}k&&delete ma.priorityWait}return k}function S(k){return function(o){k.exports=o}}function Qa(k,o,s){return function(){var x=
+[].concat(ka.call(arguments,0)),F;if(s&&R(F=x[x.length-1]))F.__requireJsBuild=true;x.push(o);return k.apply(null,x)}}function gb(k,o){o=Qa(K.require,k,o);Aa(o,{nameToUrl:Qa(K.nameToUrl,k),toUrl:Qa(K.toUrl,k),isDefined:Qa(K.isDefined,k),ready:G.ready,isBrowser:G.isBrowser});if(G.paths)o.paths=G.paths;return o}function nb(k){var o,s,x,F,T,N,aa,ia=Ra[k];if(ia)for(F=0;s=ia[F];F++){o=s.fullName;s=M(s.originalName,s.parentMap);s=s.fullName;x=na[o];if(s!==o){na[s]=x;delete na[o];for(T=0;T<x.length;T++){aa=
+x[T].depArray;for(N=0;N<aa.length;N++)if(aa[N]===o)aa[N]=s}}}delete Ra[k]}function hb(k){var o=k.prefix,s=k.fullName;if(!(Ma[s]||s in ea)){if(o&&!Ha[o]){Ha[o]=undefined;(Ra[o]||(Ra[o]=[])).push(k);(na[o]||(na[o]=[])).push({onDep:function(x){x===o&&nb(o)}});hb(M(o))}K.paused.push(k)}}function Sa(k){var o,s,x;o=k.callback;var F=k.fullName;x=[];var T=k.depArray;if(o&&R(o)){if(T)for(o=0;o<T.length;o++)x.push(k.deps[T[o]]);s=G.execCb(F,k.callback,x);if(F)if(k.usingExports&&s===undefined&&(!k.cjsModule||
+!("exports"in k.cjsModule)))s=ea[F];else if(k.cjsModule&&"exports"in k.cjsModule)s=ea[F]=k.cjsModule.exports;else{if(F in ea&&!k.usingExports)return G.onError(new Error(F+" has already been defined"));ea[F]=s}}else if(F)s=ea[F]=o;if(F)if(x=na[F]){for(o=0;o<x.length;o++)x[o].onDep(F,s);delete na[F]}if(Ia[k.waitId]){delete Ia[k.waitId];k.isDone=true;K.waitCount-=1;if(K.waitCount===0)$a=[]}}function Na(k,o,s,x){k=M(k,x);var F=k.name,T=k.fullName,N={waitId:F||Ca+ob++,depCount:0,depMax:0,prefix:k.prefix,
+name:F,fullName:T,deps:{},depArray:o,callback:s,onDep:function(ib,pb){if(!(ib in N.deps)){N.deps[ib]=pb;N.depCount+=1;N.depCount===N.depMax&&Sa(N)}}},aa,ia;if(T){if(T in ea||va[T]===true)return;Ma[T]=true;va[T]=true;K.jQueryDef=T==="jquery"}for(s=0;s<o.length;s++)if(aa=o[s]){aa=M(aa,F?k:x);ia=aa.fullName;o[s]=ia;if(ia==="require")N.deps[ia]=gb(k);else if(ia==="exports"){N.deps[ia]=ea[T]={};N.usingExports=true}else if(ia==="module"){N.cjsModule=aa=N.deps[ia]={id:F,uri:F?K.nameToUrl(F,null,x):undefined};
+aa.setExports=S(aa)}else if(ia in ea&&!(ia in Ia))N.deps[ia]=ea[ia];else{N.depMax+=1;hb(aa);(na[ia]||(na[ia]=[])).push(N)}}if(N.depCount===N.depMax)Sa(N);else{Ia[N.waitId]=N;$a.push(N);K.waitCount+=1}}function La(k){Na.apply(null,k);va[k[0]]=true}function ab(k){if(!K.jQuery)if((k=k||(typeof jQuery!=="undefined"?jQuery:null))&&"readyWait"in k){K.jQuery=k;La(["jquery",[],function(){return jQuery}]);if(K.scriptCount){k.readyWait+=1;K.jQueryIncremented=true}}}function jb(k,o){if(!k.isDone){var s=k.fullName,
+x=k.depArray,F,T;if(s){if(o[s])return ea[s];o[s]=true}for(T=0;T<x.length;T++)(F=x[T])&&!k.deps[F]&&Ia[F]&&k.onDep(F,jb(Ia[F],o));return s?ea[s]:undefined}}function bb(){var k=ma.waitSeconds*1E3,o=k&&K.startTime+k<(new Date).getTime();k="";var s=false,x=false,F;if(ma.priorityWait)if(ha())la();else return;for(F in va)if(!(F in ra)){s=true;if(!va[F])if(o)k+=F+" ";else{x=true;break}}if(s||K.waitCount){if(o&&k){F=new Error("require.js load timeout for modules: "+k);F.requireType="timeout";F.requireModules=
+k;return G.onError(F)}if(x||K.scriptCount){if(sa||wa)setTimeout(bb,50)}else if(K.waitCount){for(Ja=0;k=$a[Ja];Ja++)jb(k,{});bb()}else G.checkReadyState()}}function cb(k,o){var s=o.name,x=o.fullName;if(!(x in ea)){Ha[k]||(Ha[k]=ea[k]);va[x]||(va[x]=false);Ha[k].load(s,gb(o.parentMap,true),function(F){require.onPluginLoad&&require.onPluginLoad(K,k,s,F);Sa({prefix:o.prefix,name:o.name,fullName:o.fullName,callback:F});va[x]=true},ma)}}function kb(k){if(k.prefix&&k.name.indexOf("__$p")===0&&ea[k.prefix])k=
+M(k.originalName,k.parentMap);var o=k.prefix,s=k.fullName;if(!(Ma[s]||s in ea)){Ma[s]=true;if(o)if(ea[o])cb(o,k);else{if(!Ea[o]){Ea[o]=[];(na[o]||(na[o]=[])).push({onDep:function(x){if(x===o){var F,T=Ea[o];for(x=0;x<T.length;x++){F=T[x];cb(o,M(F.originalName,F.parentMap))}delete Ea[o]}}})}Ea[o].push(k)}else G.load(K,s,k.url)}}var K,la,ma={waitSeconds:7,baseUrl:ca.baseUrl||"./",paths:{},packages:{}},Oa=[],Ma={require:true,exports:true,module:true},Za={},ea={},va={},Ia={},$a=[],ob=0,na={},Ha={},Ea=
+{},Ra={};la=function(){var k,o,s;if(K.scriptCount<=0)K.scriptCount=0;for(;Oa.length;){k=Oa.shift();if(k[0]===null)return G.onError(new Error("Mismatched anonymous require.def modules"));else La(k)}if(!(ma.priorityWait&&!ha())){for(;K.paused.length;){s=K.paused;K.paused=[];for(o=0;k=s[o];o++)kb(k);K.startTime=(new Date).getTime()}bb()}};K={contextName:y,config:ma,defQueue:Oa,waiting:Ia,waitCount:0,specified:Ma,loaded:va,urlMap:Za,scriptCount:0,urlFetched:{},defined:ea,paused:[],plugins:Ha,managerCallbacks:na,
+makeModuleMap:M,normalize:L,configure:function(k){var o,s,x;if(k.baseUrl)if(k.baseUrl.charAt(k.baseUrl.length-1)!=="/")k.baseUrl+="/";o=ma.paths;s=ma.packages;Aa(ma,k,true);if(k.paths){for(x in k.paths)x in ra||(o[x]=k.paths[x]);ma.paths=o}if((o=k.packagePaths)||k.packages){if(o)for(x in o)x in ra||$(s,o[x],x);k.packages&&$(s,k.packages);ma.packages=s}if(k.priority){s=K.requireWait;K.requireWait=false;K.require(k.priority);K.requireWait=s;ma.priorityWait=k.priority}if(k.deps||k.callback)K.require(k.deps||
+[],k.callback);k.ready&&G.ready(k.ready)},isDefined:function(k,o){return M(k,o).fullName in ea},require:function(k,o,s){if(typeof k==="string"){if(G.get)return G.get(K,k,o);s=o;o=M(k,s);k=ea[o.fullName];if(k===undefined)return G.onError(new Error("require: module name '"+o.fullName+"' has not been loaded yet for context: "+y));return k}Na(null,k,o,s);if(!K.requireWait)for(;!K.scriptCount&&K.paused.length;)la()},takeGlobalQueue:function(){if(c.length){oa.apply(K.defQueue,[K.defQueue.length-1,0].concat(c));
+c=[]}},completeLoad:function(k){var o;for(K.takeGlobalQueue();Oa.length;){o=Oa.shift();if(o[0]===null){o[0]=k;break}else if(o[0]===k)break;else{La(o);o=null}}o?La(o):La([k,[],k==="jquery"&&typeof jQuery!=="undefined"?function(){return jQuery}:null]);va[k]=true;ab();if(G.isAsync)K.scriptCount-=1;la();G.isAsync||(K.scriptCount-=1)},toUrl:function(k,o){var s=k.lastIndexOf("."),x=null;if(s!==-1){x=k.substring(s,k.length);k=k.substring(0,s)}return K.nameToUrl(k,x,o)},nameToUrl:function(k,o,s){var x,F,
+T,N,aa=K.config;if(k.indexOf("./")===0||k.indexOf("../")===0){s=s&&s.url?s.url.split("/"):[];s.length&&s.pop();s=s.concat(k.split("/"));E(s);o=s.join("/")+(o?o:G.jsExtRegExp.test(k)?"":".js")}else{k=L(k,s);if(G.jsExtRegExp.test(k))o=k+(o?o:"");else{x=aa.paths;F=aa.packages;s=k.split("/");for(N=s.length;N>0;N--){T=s.slice(0,N).join("/");if(x[T]){s.splice(0,N,x[T]);break}else if(T=F[T]){k=k===T.name?T.location+"/"+T.main:T.location+"/"+T.lib;s.splice(0,N,k);break}}o=s.join("/")+(o||".js");o=(o.charAt(0)===
+"/"||o.match(/^\w+:/)?"":aa.baseUrl)+o}}return aa.urlArgs?o+((o.indexOf("?")===-1?"?":"&")+aa.urlArgs):o}};K.jQueryCheck=ab;K.resume=la;return K}function X(){var y,E,L;if(ta&&ta.readyState==="interactive")return ta;y=document.getElementsByTagName("script");for(E=y.length-1;E>-1&&(L=y[E]);E--)if(L.readyState==="interactive")return ta=L;return null}var O=/(\/\*([\s\S]*?)\*\/|\/\/(.*)$)/mg,U=/require\(["']([^'"\s]+)["']\)/g,W=/^\.\//,ja=Object.prototype.toString,ba=Array.prototype,ka=ba.slice,oa=ba.splice,
+sa=!!(typeof window!=="undefined"&&navigator&&document),wa=!sa&&typeof importScripts!=="undefined",pa=sa&&navigator.platform==="PLAYSTATION 3"?/^complete$/:/^(complete|loaded)$/,Ca="_r@@",ra={},w={},c=[],ta=null,qb=false,db=false,Ya={text:"require/text",i18n:"require/i18n",order:"require/order"},G;ba={};var eb,ca,Ka,Ta,Ua,Fa,Va,Da,lb,Wa,Ja,Xa,fb,Ga;if(typeof require!=="undefined")if(R(require))return;else ba=require;G=require=function(y,E,L){var M="_",ha;if(!B(y)&&typeof y!=="string"){ha=y;if(B(E)){y=
+E;E=L}else y=[]}if(ha&&ha.context)M=ha.context;L=w[M]||(w[M]=J(M));ha&&L.configure(ha);return L.require(y,E)};G.version="0.22.0";G.isArray=B;G.isFunction=R;G.mixin=Aa;G.jsExtRegExp=/^\/|:|\?|\.js$/;ca=G.s={contexts:w,skipAsync:{},isPageLoaded:!sa,readyCalls:[]};if(G.isAsync=G.isBrowser=sa){Ka=ca.head=document.getElementsByTagName("head")[0];if(Ta=document.getElementsByTagName("base")[0])Ka=ca.head=Ta.parentNode}G.onError=function(y){throw y;};G.load=function(y,E,L){var M=y.contextName,ha=y.urlFetched,
+S=y.loaded;qb=false;S[E]||(S[E]=false);if(!ha[L]){y.scriptCount+=1;G.attach(L,M,E);ha[L]=true;if(y.jQuery&&!y.jQueryIncremented){y.jQuery.readyWait+=1;y.jQueryIncremented=true}}};define=G.def=function(y,E,L){var M;if(typeof y!=="string"){L=E;E=y;y=null}if(!G.isArray(E)){L=E;E=[]}if(!y&&!E.length&&G.isFunction(L))if(L.length){L.toString().replace(O,"").replace(U,function(ha,S){E.push(S)});E=["require","exports","module"].concat(E)}if(db){M=eb||X();if(!M)return G.onError(new Error("ERROR: No matching script interactive for "+
+L));y||(y=M.getAttribute("data-requiremodule"));M=w[M.getAttribute("data-requirecontext")]}(M?M.defQueue:c).push([y,E,L])};G.execCb=function(y,E,L){return E.apply(null,L)};G.onScriptLoad=function(y){var E=y.currentTarget||y.srcElement,L;if(y.type==="load"||pa.test(E.readyState)){ta=null;y=E.getAttribute("data-requirecontext");L=E.getAttribute("data-requiremodule");w[y].completeLoad(L);E.removeEventListener?E.removeEventListener("load",G.onScriptLoad,false):E.detachEvent("onreadystatechange",G.onScriptLoad)}};
+G.attach=function(y,E,L,M,ha){var S;if(sa){M=M||G.onScriptLoad;S=document.createElement("script");S.type=ha||"text/javascript";S.charset="utf-8";S.async=!ca.skipAsync[y];S.setAttribute("data-requirecontext",E);S.setAttribute("data-requiremodule",L);if(S.addEventListener)S.addEventListener("load",M,false);else{db=true;S.attachEvent("onreadystatechange",M)}S.src=y;eb=S;Ta?Ka.insertBefore(S,Ta):Ka.appendChild(S);eb=null;return S}else if(wa){M=w[E];E=M.loaded;E[L]=false;importScripts(y);M.completeLoad(L)}return null};
+ca.baseUrl=ba.baseUrl;if(sa&&(!ca.baseUrl||!Ka)){Ua=document.getElementsByTagName("script");Va=ba.baseUrlMatch?ba.baseUrlMatch:/(requireplugins-|require-)?jquery[\-\d\.]*(min)?\.js(\W|$)/i;for(Ja=Ua.length-1;Ja>-1&&(Fa=Ua[Ja]);Ja--){if(!Ka)Ka=Fa.parentNode;if(!Wa&&(Wa=Fa.getAttribute("data-main"))){ba.deps=ba.deps?ba.deps.concat(Wa):[Wa];if(!ba.baseUrl&&(Da=Fa.src)){Da=Da.split("/");Da.pop();ca.baseUrl=ba.baseUrl=Da.length?Da.join("/"):"./"}}if(!ca.baseUrl&&(Da=Fa.src))if(lb=Da.match(Va)){ca.baseUrl=
+Da.substring(0,lb.index);break}}}G.pageLoaded=function(){if(!ca.isPageLoaded){ca.isPageLoaded=true;Xa&&clearInterval(Xa);if(fb)document.readyState="complete";G.callReady()}};G.checkReadyState=function(){var y=ca.contexts,E;for(E in y)if(!(E in ra))if(y[E].waitCount)return;ca.isDone=true;G.callReady()};G.callReady=function(){var y=ca.readyCalls,E,L,M;if(ca.isPageLoaded&&ca.isDone){if(y.length){ca.readyCalls=[];for(E=0;L=y[E];E++)L()}y=ca.contexts;for(M in y)if(!(M in ra)){E=y[M];if(E.jQueryIncremented){E.jQuery.readyWait-=
+1;E.jQueryIncremented=false}}}};G.ready=function(y){ca.isPageLoaded&&ca.isDone?y():ca.readyCalls.push(y);return G};if(sa){if(document.addEventListener){document.addEventListener("DOMContentLoaded",G.pageLoaded,false);window.addEventListener("load",G.pageLoaded,false);if(!document.readyState){fb=true;document.readyState="loading"}}else if(window.attachEvent){window.attachEvent("onload",G.pageLoaded);if(self===self.top)Xa=setInterval(function(){try{if(document.body){document.documentElement.doScroll("left");
+G.pageLoaded()}}catch(y){}},30)}document.readyState==="complete"&&G.pageLoaded()}G(ba);if(typeof setTimeout!=="undefined"){Ga=ca.contexts[ba.context||"_"];Ga.requireWait=true;setTimeout(function(){Ga.requireWait=false;Ga.takeGlobalQueue();Ga.jQueryCheck();Ga.scriptCount||Ga.resume();G.checkReadyState()},0)}})();
+(function(){function R($,J,X,O,U,W){if(J[$]){X.push($);if(J[$]===true||J[$]===1)O.push(U+$+"/"+W)}}function B($,J,X,O,U){J=O+J+"/"+U;require._fileExists($.nameToUrl(J,null))&&X.push(J)}var Aa=/(^.*(^|\/)nls(\/|$))([^\/]*)\/?([^\/]*)/;define("require/i18n",{load:function($,J,X,O){O=O||{};var U=Aa.exec($),W=U[1],ja=U[4],ba=U[5],ka=ja.split("-"),oa=[],sa={},wa,pa,Ca="";if(U[5]){W=U[1];$=W+ba}else{$=$;ba=U[4];ja=O.locale||(O.locale=typeof navigator==="undefined"?"root":(navigator.language||navigator.userLanguage||
+"root").toLowerCase());ka=ja.split("-")}if(O.isBuild){oa.push($);B(J,"root",oa,W,ba);for(wa=0;pa=ka[wa];wa++){Ca+=(Ca?"-":"")+pa;B(J,Ca,oa,W,ba)}J(oa);X()}else J([$],function(ra){var w=[];R("root",ra,w,oa,W,ba);for(wa=0;pa=ka[wa];wa++){Ca+=(Ca?"-":"")+pa;R(Ca,ra,w,oa,W,ba)}J(oa,function(){var c,ta;for(c=w.length-1;c>-1&&(pa=w[c]);c--){ta=ra[pa];if(ta===true||ta===1)ta=J(W+pa+"/"+ba);require.mixin(sa,ta)}X(sa)})})}})})();
+(function(){var R=["Msxml2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.4.0"],B=/^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,Aa=/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,$=[];if(!require.textStrip)require.textStrip=function(J){if(J){J=J.replace(B,"");var X=J.match(Aa);if(X)J=X[1]}else J="";return J};if(!require.jsEscape)require.jsEscape=function(J){return J.replace(/(['\\])/g,"\\$1").replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,
+"\\r")};if(!require.getXhr)require.getXhr=function(){var J,X,O;if(typeof XMLHttpRequest!=="undefined")return new XMLHttpRequest;else for(X=0;X<3;X++){O=R[X];try{J=new ActiveXObject(O)}catch(U){}if(J){R=[O];break}}if(!J)throw new Error("require.getXhr(): XMLHttpRequest not available");return J};if(!require.fetchText)require.fetchText=function(J,X){var O=require.getXhr();O.open("GET",J,true);O.onreadystatechange=function(){O.readyState===4&&X(O.responseText)};O.send(null)};define("require/text",{load:function(J,
+X,O,U){var W=false,ja=J.indexOf("."),ba=J.substring(0,ja),ka=J.substring(ja+1,J.length);ja=ka.indexOf("!");if(ja!==-1){W=ka.substring(ja+1,ka.length);W=W==="strip";ka=ka.substring(0,ja)}X=X.nameToUrl(ba,"."+ka);require.fetchText(X,function(oa){oa=W?require.textStrip(oa):oa;if(U.isBuild&&U.inlineText)$[J]=oa;O(oa)})},write:function(J,X,O){if(X in $){var U=require.jsEscape($[X]);O("define('"+J+"!"+X+"', function () { return '"+U+"';});\n")}}})})();
+(function(){function R(O,U,W){U([O],function(ja){W(function(){return ja})})}function B(O){var U=O.currentTarget||O.srcElement,W;if(O.type==="load"||$.test(U.readyState)){O=U.getAttribute("data-requiremodule");X[O]=true;for(O=0;W=J[O];O++)if(X[W.name])R(W.name,W.req,W.onLoad);else break;O>0&&J.splice(0,O);setTimeout(function(){U.parentNode.removeChild(U)},15)}}var Aa=typeof document!=="undefined"&&typeof window!=="undefined"&&(document.createElement("script").async||window.opera&&Object.prototype.toString.call(window.opera)===
+"[object Opera]"||"MozAppearance"in document.documentElement.style),$=/^(complete|loaded)$/,J=[],X={};define("require/order",{load:function(O,U,W,ja){var ba=U.nameToUrl(O,null);if(ja.isBuild)R(O,U,W);else{require.s.skipAsync[ba]=true;if(Aa)U([O],function(ka){W(function(){return ka})});else if(U.isDefined(O))U([O],function(ka){W(function(){return ka})});else{J.push({name:O,req:U,onLoad:W});require.attach(ba,"",O,B,"script/cache")}}}})})();
+(function(R,B){function Aa(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):qb.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function $(){return false}function J(){return true}function X(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function O(a){var b,d,e,f,h,m,l,p,A,v,H,Q=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
+h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)H=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var fa=h.live.slice(0);for(l=0;l<fa.length;l++){h=fa[l];h.origType.replace(Fa,"")===a.type?f.push(h.selector):fa.splice(l--,1)}f=c(a.target).closest(f,a.currentTarget);p=0;for(A=f.length;p<A;p++){v=f[p];for(l=0;l<fa.length;l++){h=fa[l];if(v.selector===h.selector&&(!H||H.test(h.namespace))){m=v.elem;e=null;if(h.preType===
+"mouseenter"||h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==m)Q.push({elem:m,handleObj:h,level:v.level})}}}p=0;for(A=Q.length;p<A;p++){f=Q[p];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;H=f.handleObj.origHandler.apply(f.elem,arguments);if(H===false||a.isPropagationStopped()){d=f.level;if(H===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function U(a,b){return(a&&a!=="*"?a+".":
+"")+b.replace(Da,"`").replace(lb,"&")}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ja(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(gb.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function ba(a){return c.nodeName(a,"table")?
+a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var m in e[h])c.event.add(this,h,e[h][m],e[h][m].data)}}})}function oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}
+function sa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?$a:ob,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function wa(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||T.test(a)?e(a,h):wa(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
+e(a,""):c.each(b,function(f,h){wa(a+"["+f+"]",h,d,e)});else e(a,b)}function pa(a,b){var d={};c.each(tb.concat.apply([],tb.slice(0,b)),function(){d[this]=a});return d}function Ca(a){if(!rb[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";rb[a]=d}return rb[a]}function ra(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var w=R.document,c=function(){function a(){if(!b.isReady){try{w.documentElement.doScroll("left")}catch(j){setTimeout(a,
+1);return}b.ready()}}var b=function(j,t){return new b.fn.init(j,t)},d=R.jQuery,e=R.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,m=/\S/,l=/^\s+/,p=/\s+$/,A=/\W/,v=/\d/,H=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,Q=/^[\],:{}\s]*$/,fa=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,C=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,da=/(?:^|:|,)(?:\s*\[)+/g,xa=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,q=navigator.userAgent,r=false,
+u=[],D,I=Object.prototype.toString,Y=Object.prototype.hasOwnProperty,ua=Array.prototype.push,ya=Array.prototype.slice,za=String.prototype.trim,V=Array.prototype.indexOf,Pa={};b.fn=b.prototype={init:function(j,t){var z,P;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!t&&w.body){this.context=w;this[0]=w.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((z=h.exec(j))&&(z[1]||!t))if(z[1]){P=t?t.ownerDocument||t:w;if(j=H.exec(j))if(b.isPlainObject(t)){j=
+[w.createElement(j[1])];b.fn.attr.call(j,t,true)}else j=[P.createElement(j[1])];else{j=b.buildFragment([z[1]],[P]);j=(j.cacheable?j.fragment.cloneNode(true):j.fragment).childNodes}return b.merge(this,j)}else{if((t=w.getElementById(z[2]))&&t.parentNode){if(t.id!==z[2])return f.find(j);this.length=1;this[0]=t}this.context=w;this.selector=j;return this}else if(!t&&!A.test(j)){this.selector=j;this.context=w;j=w.getElementsByTagName(j);return b.merge(this,j)}else return!t||t.jquery?(t||f).find(j):b(t).find(j);
+else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},toArray:function(){return ya.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,t,z){var P=b();b.isArray(j)?ua.apply(P,j):b.merge(P,j);P.prevObject=this;P.context=this.context;if(t==="find")P.selector=this.selector+(this.selector?" ":
+"")+z;else if(t)P.selector=this.selector+"."+t+"("+z+")";return P},each:function(j,t){return b.each(this,j,t)},ready:function(j){b.bindReady();if(b.isReady)j.call(w,b);else u&&u.push(j);return this},eq:function(j){return j===-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(ya.apply(this,arguments),"slice",ya.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(t,z){return j.call(t,
+z,t)}))},end:function(){return this.prevObject||b(null)},push:ua,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,t,z,P,ga,Z=arguments[0]||{},qa=1,Ba=arguments.length,sb=false;if(typeof Z==="boolean"){sb=Z;Z=arguments[1]||{};qa=2}if(typeof Z!=="object"&&!b.isFunction(Z))Z={};if(Ba===qa){Z=this;--qa}for(;qa<Ba;qa++)if((j=arguments[qa])!=null)for(t in j){z=Z[t];P=j[t];if(Z!==P)if(sb&&P&&(b.isPlainObject(P)||(ga=b.isArray(P)))){if(ga){ga=false;z=z&&b.isArray(z)?
+z:[]}else z=z&&b.isPlainObject(z)?z:{};Z[t]=b.extend(sb,z,P)}else if(P!==B)Z[t]=P}return Z};b.extend({noConflict:function(j){R.$=e;if(j)R.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;if(!b.readyWait||j!==true&&!b.isReady){if(!w.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(u){var t=0,z=u;for(u=null;j=z[t++];)j.call(w,b);b.fn.trigger&&b(w).trigger("ready").unbind("ready")}}},bindReady:function(){if(!r){r=true;if(w.readyState===
+"complete")return setTimeout(b.ready,1);if(w.addEventListener){w.addEventListener("DOMContentLoaded",D,false);R.addEventListener("load",b.ready,false)}else if(w.attachEvent){w.attachEvent("onreadystatechange",D);R.attachEvent("onload",b.ready);var j=false;try{j=R.frameElement==null}catch(t){}w.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in
+j},isNaN:function(j){return j==null||!v.test(j)||isNaN(j)},type:function(j){return j==null?String(j):Pa[I.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&!Y.call(j,"constructor")&&!Y.call(j.constructor.prototype,"isPrototypeOf"))return false;var t;for(t in j);return t===B||Y.call(j,t)},isEmptyObject:function(j){for(var t in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!==
+"string"||!j)return null;j=b.trim(j);if(Q.test(j.replace(fa,"@").replace(C,"]").replace(da,"")))return R.JSON&&R.JSON.parse?R.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&m.test(j)){var t=w.getElementsByTagName("head")[0]||w.documentElement,z=w.createElement("script");z.type="text/javascript";if(b.support.scriptEval)z.appendChild(w.createTextNode(j));else z.text=j;t.insertBefore(z,t.firstChild);t.removeChild(z)}},nodeName:function(j,
+t){return j.nodeName&&j.nodeName.toUpperCase()===t.toUpperCase()},each:function(j,t,z){var P,ga=0,Z=j.length,qa=Z===B||b.isFunction(j);if(z)if(qa)for(P in j){if(t.apply(j[P],z)===false)break}else for(;ga<Z;){if(t.apply(j[ga++],z)===false)break}else if(qa)for(P in j){if(t.call(j[P],P,j[P])===false)break}else for(z=j[0];ga<Z&&t.call(z,ga,z)!==false;z=j[++ga]);return j},trim:za?function(j){return j==null?"":za.call(j)}:function(j){return j==null?"":j.toString().replace(l,"").replace(p,"")},makeArray:function(j,
+t){t=t||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?ua.call(t,j):b.merge(t,j)}return t},inArray:function(j,t){if(t.indexOf)return t.indexOf(j);for(var z=0,P=t.length;z<P;z++)if(t[z]===j)return z;return-1},merge:function(j,t){var z=j.length,P=0;if(typeof t.length==="number")for(var ga=t.length;P<ga;P++)j[z++]=t[P];else for(;t[P]!==B;)j[z++]=t[P++];j.length=z;return j},grep:function(j,t,z){var P=[],ga;z=!!z;for(var Z=0,qa=j.length;Z<qa;Z++){ga=
+!!t(j[Z],Z);z!==ga&&P.push(j[Z])}return P},map:function(j,t,z){for(var P=[],ga,Z=0,qa=j.length;Z<qa;Z++){ga=t(j[Z],Z,z);if(ga!=null)P[P.length]=ga}return P.concat.apply([],P)},guid:1,proxy:function(j,t,z){if(arguments.length===2)if(typeof t==="string"){z=j;j=z[t];t=B}else if(t&&!b.isFunction(t)){z=t;t=B}if(!t&&j)t=function(){return j.apply(z||this,arguments)};if(j)t.guid=j.guid=j.guid||t.guid||b.guid++;return t},access:function(j,t,z,P,ga,Z){var qa=j.length;if(typeof t==="object"){for(var Ba in t)b.access(j,
+Ba,t[Ba],P,ga,z);return j}if(z!==B){P=!Z&&P&&b.isFunction(z);for(Ba=0;Ba<qa;Ba++)ga(j[Ba],t,P?z.call(j[Ba],Ba,ga(j[Ba],t)):z,Z);return j}return qa?ga(j[0],t):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=xa.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,t){Pa["[object "+t+"]"]=t.toLowerCase()});
+q=b.uaMatch(q);if(q.browser){b.browser[q.browser]=true;b.browser.version=q.version}if(b.browser.webkit)b.browser.safari=true;if(V)b.inArray=function(j,t){return V.call(t,j)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;p=/[\s\xA0]+$/}f=b(w);if(w.addEventListener)D=function(){w.removeEventListener("DOMContentLoaded",D,false);b.ready()};else if(w.attachEvent)D=function(){if(w.readyState==="complete"){w.detachEvent("onreadystatechange",D);b.ready()}};return R.jQuery=R.$=b}();(function(){c.support={};var a=
+w.documentElement,b=w.createElement("script"),d=w.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],m=w.createElement("select"),l=m.appendChild(w.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,
+htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,deleteExpando:true,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};m.disabled=true;c.support.optDisabled=
+!l.disabled;b.type="text/javascript";try{b.appendChild(w.createTextNode("window."+e+"=1;"))}catch(p){}a.insertBefore(b,a.firstChild);if(R[e]){c.support.scriptEval=true;delete R[e]}try{delete b.test}catch(A){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function v(){c.support.noCloneEvent=false;d.detachEvent("onclick",v)});d.cloneNode(true).fireEvent("onclick")}d=w.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";
+a=w.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var v=w.createElement("div");v.style.width=v.style.paddingLeft="1px";w.body.appendChild(v);c.boxModel=c.support.boxModel=v.offsetWidth===2;if("zoom"in v.style){v.style.display="inline";v.style.zoom=1;c.support.inlineBlockNeedsLayout=v.offsetWidth===2;v.style.display="";v.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=v.offsetWidth!==
+2}v.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var H=v.getElementsByTagName("td");c.support.reliableHiddenOffsets=H[0].offsetHeight===0;H[0].style.display="";H[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&H[0].offsetHeight===0;v.innerHTML="";w.body.removeChild(v).style.display="none"});a=function(v){var H=w.createElement("div");v="on"+v;var Q=v in H;if(!Q){H.setAttribute(v,"return;");Q=typeof H[v]==="function"}return Q};
+c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ta={},qb=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==R?ta:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,
+b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==R?ta:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var m in a)delete a[m]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];
+if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,m=e.length;h<m;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);Aa(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,a)});var l=a.split(".");l[1]=l[1]?"."+l[1]:"";if(b===B){d=this.triggerHandler("getData"+l[1]+"!",[l[0]]);if(d===B&&this.length){d=
+c.data(this[0],a);d=Aa(this[0],a,d)}return d===B&&l[1]?this.data(l[0]):d}else return this.each(function(){var p=c(this),A=[l[0],b];p.triggerHandler("setData"+l[1]+"!",A);c.data(this,a,b);p.triggerHandler("changeData"+l[1]+"!",A)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=
+b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,
+function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var db=/[\n\t]/g,Ya=/\s+/,G=/\r/g,eb=/^(?:href|src|style)$/,ca=/^(?:button|input)$/i,Ka=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,Ua=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};
+c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(A){var v=c(this);v.addClass(a.call(this,A,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(Ya),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",m=f.className,l=0,p=b.length;l<
+p;l++)if(h.indexOf(" "+b[l]+" ")<0)m+=" "+b[l];f.className=c.trim(m)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(p){var A=c(this);A.removeClass(a.call(this,p,A.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(Ya),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(db," "),m=0,l=b.length;m<l;m++)h=h.replace(" "+b[m]+" "," ");f.className=c.trim(h)}else f.className=
+""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,m=c(this),l=b,p=a.split(Ya);f=p[h++];){l=e?l:!m.hasClass(f);m[l?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,
+"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(db," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var m=f[h];if(m.selected&&
+(c.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!c.nodeName(m.parentNode,"optgroup"))){a=c(m).val();if(b)return a;d.push(a)}}return d}if(Ua.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(G,"")}return B}var l=c.isFunction(a);return this.each(function(p){var A=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,p,A.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=
+c.map(v,function(Q){return Q==null?"":Q+""});if(c.isArray(v)&&Ua.test(this.type))this.checked=c.inArray(A.val(),v)>=0;else if(c.nodeName(this,"select")){var H=c.makeArray(v);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),H)>=0});if(!H.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);
+e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=eb.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&ca.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Ka.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&
+e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var Fa=/\.(.*)$/,Va=/^(?:textarea|input|select)$/i,Da=/\./g,lb=/ /g,Wa=/[^\w\s.|`]/g,Ja=function(a){return a.replace(Wa,"\\$&")},Xa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==R&&!a.frameElement)a=
+R;if(d===false)d=$;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var m=a.nodeType?"events":"__events__",l=h[m],p=h.handle;if(typeof l==="function"){p=l.handle;l=l.events}else if(!l){a.nodeType||(h[m]=h=function(){});h.events=l={}}if(!p)h.handle=p=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(p.elem,arguments):B};p.elem=a;b=b.split(" ");for(var A=0,v;m=b[A++];){h=f?c.extend({},f):{handler:d,data:e};if(m.indexOf(".")>
+-1){v=m.split(".");m=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=m;if(!h.guid)h.guid=d.guid;var H=l[m],Q=c.event.special[m]||{};if(!H){H=l[m]=[];if(!Q.setup||Q.setup.call(a,e,v,p)===false)if(a.addEventListener)a.addEventListener(m,p,false);else a.attachEvent&&a.attachEvent("on"+m,p)}if(Q.add){Q.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}H.push(h);c.event.global[m]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===
+8)){if(d===false)d=$;var f,h,m=0,l,p,A,v,H,Q,fa=a.nodeType?"events":"__events__",C=c.data(a),da=C&&C[fa];if(C&&da){if(typeof da==="function"){C=da;da=da.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in da)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[m++];){v=f;l=f.indexOf(".")<0;p=[];if(!l){p=f.split(".");f=p.shift();A=new RegExp("(^|\\.)"+c.map(p.slice(0).sort(),Ja).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(H=da[f])if(d){v=c.event.special[f]||
+{};for(h=e||0;h<H.length;h++){Q=H[h];if(d.guid===Q.guid){if(l||A.test(Q.namespace)){e==null&&H.splice(h--,1);v.remove&&v.remove.call(a,Q)}if(e!=null)break}}if(H.length===0||e!=null&&H.length===1){if(!v.teardown||v.teardown.call(a,p)===false)c.removeEvent(a,f,C.handle);delete da[f]}}else for(h=0;h<H.length;h++){Q=H[h];if(l||A.test(Q.namespace)){c.event.remove(a,v,Q.handler,h);H.splice(h--,1)}}}if(c.isEmptyObject(da)){if(b=C.handle)b.elem=null;delete C.events;delete C.handle;if(typeof C==="function")c.removeData(a,
+fa);else c.isEmptyObject(C)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?
+c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var m;e=a.target;var l=f.replace(Fa,""),p=c.nodeName(e,"a")&&l==="click",A=c.event.special[l]||{};if((!A._default||A._default.call(d,a)===false)&&!p&&!(e&&e.nodeName&&
+c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(m=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(m)e["on"+l]=m;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||R.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?
+"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var m=d.length;f<m;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==B){a.result=l;if(l===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||w;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=w.documentElement;d=w.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,U(a.origType,a.selector),c.extend({},a,{handler:O,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
+U(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=w.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
+c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=J;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=J;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=J;this.stopPropagation()},isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$};
+var fb=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ga=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ga:fb,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ga:fb)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return X("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return X("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var y,
+E=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},L=function(a,b){var d=a.target,e,f;if(!(!Va.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=E(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
+B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:L,beforedeactivate:L,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return L.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return L.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",E(a))}},setup:function(){if(this.type===
+"file")return false;for(var a in y)c.event.add(this,a+".specialChange",y[a]);return Va.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return Va.test(this.nodeName)}};y=c.event.special.change.filters;y.focus=y.beforeactivate}w.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){Xa[b]++===0&&w.addEventListener(a,d,true)},teardown:function(){--Xa[b]===
+0&&w.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var m=b==="one"?c.proxy(f,function(p){c(this).unbind(p,m);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,m,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
+a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<
+b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var M={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var m,l=0,p,A,v=h||this.selector;h=h?this:c(this.context);if(typeof d==="object"&&
+!d.preventDefault){for(m in d)h[b](m,e,d[m],v);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(m=d[l++])!=null;){p=Fa.exec(m);A="";if(p){A=p[0];m=m.replace(Fa,"")}if(m==="hover")d.push("mouseenter"+A,"mouseleave"+A);else{p=m;if(m==="focus"||m==="blur"){d.push(M[m]+A);m+=A}else m=(M[m]||m)+A;if(b==="live"){A=0;for(var H=h.length;A<H;A++)c.event.add(h[A],"live."+U(m,v),{data:e,selector:v,handler:f,origType:m,origHandler:f,preType:p})}else h.unbind("live."+U(m,v),f)}}return this}});
+c.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".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});R.attachEvent&&!R.addEventListener&&c(R).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g,i,n,q,r,u){r=0;for(var D=q.length;r<D;r++){var I=q[r];if(I){var Y=false;for(I=I[g];I;){if(I.sizcache===n){Y=q[I.sizset];break}if(I.nodeType===1&&!u){I.sizcache=n;I.sizset=r}if(I.nodeName.toLowerCase()===i){Y=I;break}I=I[g]}q[r]=Y}}}function b(g,i,n,q,r,u){r=0;for(var D=q.length;r<D;r++){var I=q[r];if(I){var Y=false;for(I=I[g];I;){if(I.sizcache===n){Y=q[I.sizset];break}if(I.nodeType===1){if(!u){I.sizcache=n;I.sizset=r}if(typeof i!=="string"){if(I===i){Y=true;break}}else if(l.filter(i,
+[I]).length>0){Y=I;break}}I=I[g]}q[r]=Y}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,m=true;[0,0].sort(function(){m=false;return 0});var l=function(g,i,n,q){n=n||[];var r=i=i||w;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var u,D,I,Y,ua,ya=true,za=l.isXML(i),V=[],Pa=g;do{d.exec("");if(u=d.exec(Pa)){Pa=u[3];V.push(u[1]);if(u[2]){Y=
+u[3];break}}}while(u);if(V.length>1&&A.exec(g))if(V.length===2&&p.relative[V[0]])D=xa(V[0]+V[1],i);else for(D=p.relative[V[0]]?[i]:l(V.shift(),i);V.length;){g=V.shift();if(p.relative[g])g+=V.shift();D=xa(g,D)}else{if(!q&&V.length>1&&i.nodeType===9&&!za&&p.match.ID.test(V[0])&&!p.match.ID.test(V[V.length-1])){u=l.find(V.shift(),i,za);i=u.expr?l.filter(u.expr,u.set)[0]:u.set[0]}if(i){u=q?{expr:V.pop(),set:Q(q)}:l.find(V.pop(),V.length===1&&(V[0]==="~"||V[0]==="+")&&i.parentNode?i.parentNode:i,za);D=
+u.expr?l.filter(u.expr,u.set):u.set;if(V.length>0)I=Q(D);else ya=false;for(;V.length;){u=ua=V.pop();if(p.relative[ua])u=V.pop();else ua="";if(u==null)u=i;p.relative[ua](I,u,za)}}else I=[]}I||(I=D);I||l.error(ua||g);if(f.call(I)==="[object Array]")if(ya)if(i&&i.nodeType===1)for(g=0;I[g]!=null;g++){if(I[g]&&(I[g]===true||I[g].nodeType===1&&l.contains(i,I[g])))n.push(D[g])}else for(g=0;I[g]!=null;g++)I[g]&&I[g].nodeType===1&&n.push(D[g]);else n.push.apply(n,I);else Q(I,n);if(Y){l(Y,r,n,q);l.uniqueSort(n)}return n};
+l.uniqueSort=function(g){if(C){h=m;g.sort(C);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};l.matches=function(g,i){return l(g,null,null,i)};l.matchesSelector=function(g,i){return l(i,null,null,[g]).length>0};l.find=function(g,i,n){var q;if(!g)return[];for(var r=0,u=p.order.length;r<u;r++){var D,I=p.order[r];if(D=p.leftMatch[I].exec(g)){var Y=D[1];D.splice(1,1);if(Y.substr(Y.length-1)!=="\\"){D[1]=(D[1]||"").replace(/\\/g,"");q=p.find[I](D,i,n);if(q!=null){g=g.replace(p.match[I],
+"");break}}}}q||(q=i.getElementsByTagName("*"));return{set:q,expr:g}};l.filter=function(g,i,n,q){for(var r,u,D=g,I=[],Y=i,ua=i&&i[0]&&l.isXML(i[0]);g&&i.length;){for(var ya in p.filter)if((r=p.leftMatch[ya].exec(g))!=null&&r[2]){var za,V,Pa=p.filter[ya];V=r[1];u=false;r.splice(1,1);if(V.substr(V.length-1)!=="\\"){if(Y===I)I=[];if(p.preFilter[ya])if(r=p.preFilter[ya](r,Y,n,I,q,ua)){if(r===true)continue}else u=za=true;if(r)for(var j=0;(V=Y[j])!=null;j++)if(V){za=Pa(V,r,j,Y);var t=q^!!za;if(n&&za!=null)if(t)u=
+true;else Y[j]=false;else if(t){I.push(V);u=true}}if(za!==B){n||(Y=I);g=g.replace(p.match[ya],"");if(!u)return[];break}}}if(g===D)if(u==null)l.error(g);else break;D=g}return Y};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var p=l.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|)\s*\]/,
+TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",q=n&&!/\W/.test(i);n=n&&!q;if(q)i=i.toLowerCase();q=0;for(var r=g.length,
+u;q<r;q++)if(u=g[q]){for(;(u=u.previousSibling)&&u.nodeType!==1;);g[q]=n||u&&u.nodeName.toLowerCase()===i?u||false:u===i}n&&l.filter(i,g,true)},">":function(g,i){var n,q=typeof i==="string",r=0,u=g.length;if(q&&!/\W/.test(i))for(i=i.toLowerCase();r<u;r++){if(n=g[r]){n=n.parentNode;g[r]=n.nodeName.toLowerCase()===i?n:false}}else{for(;r<u;r++)if(n=g[r])g[r]=q?n.parentNode:n.parentNode===i;q&&l.filter(i,g,true)}},"":function(g,i,n){var q,r=e++,u=b;if(typeof i==="string"&&!/\W/.test(i)){q=i=i.toLowerCase();
+u=a}u("parentNode",i,r,g,q,n)},"~":function(g,i,n){var q,r=e++,u=b;if(typeof i==="string"&&!/\W/.test(i)){q=i=i.toLowerCase();u=a}u("previousSibling",i,r,g,q,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){var n=[];i=i.getElementsByName(g[1]);for(var q=0,r=i.length;q<r;q++)i[q].getAttribute("name")===g[1]&&n.push(i[q]);return n.length===0?null:n}},TAG:function(g,
+i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,q,r,u){g=" "+g[1].replace(/\\/g,"")+" ";if(u)return g;u=0;for(var D;(D=i[u])!=null;u++)if(D)if(r^(D.className&&(" "+D.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||q.push(D);else if(n)i[u]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&
+"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,q,r,u){i=g[1].replace(/\\/g,"");if(!u&&p.attrMap[i])g[1]=p.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,q,r){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,i);else{g=l.filter(g[3],i,n,true^r);n||q.push.apply(q,g);return false}else if(p.match.POS.test(g[0])||p.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},
+filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!l(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
+g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,q){return i===q.length-1},even:function(g,i){return i%2===
+0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,q){var r=i[1],u=p.filters[r];if(u)return u(g,n,i,q);else if(r==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(i[3])>=0;else if(r==="not"){i=i[3];n=0;for(q=i.length;n<q;n++)if(i[n]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+
+r)},CHILD:function(g,i){var n=i[1],q=g;switch(n){case "only":case "first":for(;q=q.previousSibling;)if(q.nodeType===1)return false;if(n==="first")return true;q=g;case "last":for(;q=q.nextSibling;)if(q.nodeType===1)return false;return true;case "nth":n=i[2];var r=i[3];if(n===1&&r===0)return true;i=i[0];var u=g.parentNode;if(u&&(u.sizcache!==i||!g.nodeIndex)){var D=0;for(q=u.firstChild;q;q=q.nextSibling)if(q.nodeType===1)q.nodeIndex=++D;u.sizcache=i}g=g.nodeIndex-r;return n===0?g===0:g%n===0&&g/n>=
+0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];g=p.attrHandle[n]?p.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);n=g+"";var q=i[2];i=i[4];return g==null?q==="!=":q==="="?n===i:q==="*="?n.indexOf(i)>=0:q==="~="?(" "+n+" ").indexOf(i)>=0:!i?n&&g!==false:q==="!="?n!==i:q==="^="?
+n.indexOf(i)===0:q==="$="?n.substr(n.length-i.length)===i:q==="|="?n===i||n.substr(0,i.length+1)===i+"-":false},POS:function(g,i,n,q){var r=p.setFilters[i[2]];if(r)return r(g,n,i,q)}}},A=p.match.POS,v=function(g,i){return"\\"+(i-0+1)};for(var H in p.match){p.match[H]=new RegExp(p.match[H].source+/(?![^\[]*\])(?![^\(]*\))/.source);p.leftMatch[H]=new RegExp(/(^(?:.|\r|\n)*?)/.source+p.match[H].source.replace(/\\(\d+)/g,v))}var Q=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);
+return i}return g};try{Array.prototype.slice.call(w.documentElement.childNodes,0)}catch(fa){Q=function(g,i){var n=0;i=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(i,g);else if(typeof g.length==="number")for(var q=g.length;n<q;n++)i.push(g[n]);else for(;g[n];n++)i.push(g[n]);return i}}var C,da;if(w.documentElement.compareDocumentPosition)C=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&
+4?-1:1};else{C=function(g,i){var n,q,r=[],u=[];n=g.parentNode;q=i.parentNode;var D=n;if(g===i){h=true;return 0}else if(n===q)return da(g,i);else if(n){if(!q)return 1}else return-1;for(;D;){r.unshift(D);D=D.parentNode}for(D=q;D;){u.unshift(D);D=D.parentNode}n=r.length;q=u.length;for(D=0;D<n&&D<q;D++)if(r[D]!==u[D])return da(r[D],u[D]);return D===n?da(g,u[D],-1):da(r[D],i,1)};da=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var i=
+"",n,q=0;g[q];q++){n=g[q];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=l.getText(n.childNodes)}return i};(function(){var g=w.createElement("div"),i="script"+(new Date).getTime(),n=w.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(w.getElementById(i)){p.find.ID=function(q,r,u){if(typeof r.getElementById!=="undefined"&&!u)return(r=r.getElementById(q[1]))?r.id===q[1]||typeof r.getAttributeNode!=="undefined"&&r.getAttributeNode("id").nodeValue===
+q[1]?[r]:B:[]};p.filter.ID=function(q,r){var u=typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id");return q.nodeType===1&&u&&u.nodeValue===r}}n.removeChild(g);n=g=null})();(function(){var g=w.createElement("div");g.appendChild(w.createComment(""));if(g.getElementsByTagName("*").length>0)p.find.TAG=function(i,n){n=n.getElementsByTagName(i[1]);if(i[1]==="*"){i=[];for(var q=0;n[q];q++)n[q].nodeType===1&&i.push(n[q]);n=i}return n};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!==
+"undefined"&&g.firstChild.getAttribute("href")!=="#")p.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();w.querySelectorAll&&function(){var g=l,i=w.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){l=function(q,r,u,D){r=r||w;q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!D&&!l.isXML(r))if(r.nodeType===9)try{return Q(r.querySelectorAll(q),u)}catch(I){}else if(r.nodeType===1&&r.nodeName.toLowerCase()!==
+"object"){var Y=r.getAttribute("id"),ua=Y||"__sizzle__";Y||r.setAttribute("id",ua);try{return Q(r.querySelectorAll("#"+ua+" "+q),u)}catch(ya){}finally{Y||r.removeAttribute("id")}}return g(q,r,u,D)};for(var n in g)l[n]=g[n];i=null}}();(function(){var g=w.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(w.documentElement,"[test!='']:sizzle")}catch(q){n=true}if(i)l.matchesSelector=function(r,u){u=u.replace(/\=\s*([^'"\]]*)\s*\]/g,
+"='$1']");if(!l.isXML(r))try{if(n||!p.match.PSEUDO.test(u)&&!/!=/.test(u))return i.call(r,u)}catch(D){}return l(u,null,null,[r]).length>0}})();(function(){var g=w.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){p.order.splice(1,0,"CLASS");p.find.CLASS=function(i,n,q){if(typeof n.getElementsByClassName!=="undefined"&&
+!q)return n.getElementsByClassName(i[1])};g=null}}})();l.contains=w.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:w.documentElement.compareDocumentPosition?function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var xa=function(g,i){var n,q=[],r="";for(i=i.nodeType?[i]:i;n=p.match.PSEUDO.exec(g);){r+=n[0];g=g.replace(p.match.PSEUDO,"")}g=
+p.relative[g]?g+"*":g;n=0;for(var u=i.length;n<u;n++)l(g,i[n],q);return l.filter(r,q)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var ha=/Until$/,S=/^(?:parents|prevUntil|prevAll)/,Qa=/,/,gb=/^.[^:#\[\.,]*$/,nb=Array.prototype.slice,hb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var m=
+0;m<d;m++)if(b[m]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ja(this,a,false),"not",a)},filter:function(a){return this.pushStack(ja(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var m,l={},p=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){m=a[e];
+l[m]||(l[m]=c.expr.match.POS.test(m)?c(m,b||this.context):m)}for(;h&&h.ownerDocument&&h!==b;){for(m in l){a=l[m];if(a.jquery?a.index(h)>-1:c(h).is(a))d.push({selector:m,elem:h,level:p})}h=h.parentNode;p++}}return d}m=hb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(m?m.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||
+typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(W(a[0])||W(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,e){var f=c.map(this,b,d);ha.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Qa.test(e))&&S.test(a))f=f.reverse();return this.pushStack(f,a,nb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=
+a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Sa=/ jQuery\d+="(?:\d+|null)"/g,Na=/^\s+/,La=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ab=/<([\w:]+)/,jb=/<tbody/i,bb=/<|&#?\w+;/,cb=/<(?:script|object|embed|option|style)/i,
+kb=/checked\s*(?:[^=]|=\s*.checked.)/i,K=/\=([^="'>\s]+\/)>/g,la={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,"",""]};la.optgroup=la.option;la.tbody=la.tfoot=la.colgroup=la.caption=la.thead;la.th=la.td;if(!c.support.htmlSerialize)la._default=
+[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||w).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=
+this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,
+true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
+false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Sa,"").replace(K,'="$1">').replace(Na,"")],e)[0]}else return this.cloneNode(true)});if(a===true){ka(this,b);ka(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Sa,""):null;
+else if(typeof a==="string"&&!cb.test(a)&&(c.support.leadingWhitespace||!Na.test(a))&&!la[(ab.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(La,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
+c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,m=a[0],l=[];if(!c.support.checkClone&&arguments.length===3&&typeof m==="string"&&kb.test(m))return this.each(function(){c(this).domManip(a,
+b,d,true)});if(c.isFunction(m))return this.each(function(v){var H=c(this);a[0]=m.call(this,v,b?H.html():B);H.domManip(a,b,d)});if(this[0]){e=m&&m.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,l);h=e.fragment;if(f=h.childNodes.length===1?(h=h.firstChild):h.firstChild){b=b&&c.nodeName(f,"tr");for(var p=0,A=this.length;p<A;p++)d.call(b?ba(this[p],f):this[p],p>0||e.cacheable||this.length>1?h.cloneNode(true):h)}l.length&&c.each(l,
+oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:w;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===w&&!cb.test(a[0])&&(c.support.checkClone||!kb.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},
+function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var m=(f>0?this.clone(true):this).get();c(d[f])[b](m);e=e.concat(m)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||w;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||w;for(var f=[],h=0,m;(m=a[h])!=null;h++){if(typeof m===
+"number")m+="";if(m){if(typeof m==="string"&&!bb.test(m))m=b.createTextNode(m);else if(typeof m==="string"){m=m.replace(La,"<$1></$2>");var l=(ab.exec(m)||["",""])[1].toLowerCase(),p=la[l]||la._default,A=p[0],v=b.createElement("div");for(v.innerHTML=p[1]+m+p[2];A--;)v=v.lastChild;if(!c.support.tbody){A=jb.test(m);l=l==="table"&&!A?v.firstChild&&v.firstChild.childNodes:p[1]==="<table>"&&!A?v.childNodes:[];for(p=l.length-1;p>=0;--p)c.nodeName(l[p],"tbody")&&!l[p].childNodes.length&&l[p].parentNode.removeChild(l[p])}!c.support.leadingWhitespace&&
+Na.test(m)&&v.insertBefore(b.createTextNode(Na.exec(m)[0]),v.firstChild);m=v.childNodes}if(m.nodeType)f.push(m);else f=c.merge(f,m)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,
+h=c.support.deleteExpando,m=0,l;(l=a[m])!=null;m++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var p in b.events)f[p]?c.event.remove(l,p):c.removeEvent(l,p,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var ma=/alpha\([^)]*\)/i,Oa=/opacity=([^)]*)/,Ma=/-([a-z])/ig,Za=/([A-Z])/g,ea=/^-?\d+(?:px)?$/i,va=/^-?\d/,Ia={position:"absolute",visibility:"hidden",display:"block"},$a=["Left","Right"],
+ob=["Top","Bottom"],na,Ha,Ea,Ra=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){a=na(a,"opacity","opacity");return a===""?"1":a}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,
+b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),m=a.style,l=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==B)try{m[b]=d}catch(p){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==B)return f;return m[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(na)return na(a,
+b,f)},swap:function(a,b,d){var e={};for(var f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(Ma,Ra)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=sa(d,b,f);else c.swap(d,Ia,function(){h=sa(d,b,f)});if(h<=0){h=na(d,b,b);if(h==="0px"&&Ea)h=Ea(d,b,b);if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":
+h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(ea.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return Oa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){a=a.style;a.zoom=1;b=c.isNaN(b)?"":"alpha(opacity="+b*100+")";var d=a.filter||"";a.filter=ma.test(d)?d.replace(ma,b):a.filter+" "+b}};if(w.defaultView&&w.defaultView.getComputedStyle)Ha=
+function(a,b,d){var e;d=d.replace(Za,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(w.documentElement.currentStyle)Ea=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!ea.test(f)&&va.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=
+d;a.runtimeStyle.left=e}return f===""?"auto":f};na=Ha||Ea;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var k=c.now(),o=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,s=/^(?:select|textarea)/i,x=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+F=/^(?:GET|HEAD)$/,T=/\[\]$/,N=/\=\?(&|$)/,aa=/\?/,ia=/([?&])_=[^&]*/,ib=/^(\w+:)?\/\/([^\/?#]+)/,pb=/%20/g,wb=/#.*$/,ub=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&ub)return ub.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,
+complete:function(m,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(m.responseText.replace(o,"")).find(f):m.responseText);d&&h.each(d,[m.responseText,l,m])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||s.test(this.nodeName)||x.test(this.type))}).map(function(a,b){a=c(this).val();
+return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,
+b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new R.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},
+ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),m=F.test(h);b.url=b.url.replace(wb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")N.test(b.url)||(b.url+=(aa.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||!N.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&
+(b.data&&N.test(b.data)||N.test(b.url))){d=b.jsonpCallback||"jsonp"+k++;if(b.data)b.data=(b.data+"").replace(N,"="+d+"$1");b.url=b.url.replace(N,"="+d+"$1");b.dataType="script";var l=R[d];R[d]=function(q){if(c.isFunction(l))l(q);else{R[d]=B;try{delete R[d]}catch(r){}}f=q;c.handleSuccess(b,C,e,f);c.handleComplete(b,C,e,f);v&&v.removeChild(H)}}if(b.dataType==="script"&&b.cache===null)b.cache=false;if(b.cache===false&&m){var p=c.now(),A=b.url.replace(ia,"$1_="+p);b.url=A+(A===b.url?(aa.test(b.url)?"&":
+"?")+"_="+p:"")}if(b.data&&m)b.url+=(aa.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");p=(p=ib.exec(b.url))&&(p[1]&&p[1].toLowerCase()!==location.protocol||p[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&p){var v=w.getElementsByTagName("head")[0]||w.documentElement,H=w.createElement("script");if(b.scriptCharset)H.charset=b.scriptCharset;H.src=b.url;if(!d){var Q=false;H.onload=H.onreadystatechange=function(){if(!Q&&(!this.readyState||this.readyState===
+"loaded"||this.readyState==="complete")){Q=true;c.handleSuccess(b,C,e,f);c.handleComplete(b,C,e,f);H.onload=H.onreadystatechange=null;v&&H.parentNode&&v.removeChild(H)}}}v.insertBefore(H,v.firstChild);return B}var fa=false,C=b.xhr();if(C){b.username?C.open(h,b.url,b.async,b.username,b.password):C.open(h,b.url,b.async);try{if(b.data!=null&&!m||a&&a.contentType)C.setRequestHeader("Content-Type",b.contentType);if(b.ifModified){c.lastModified[b.url]&&C.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);
+c.etag[b.url]&&C.setRequestHeader("If-None-Match",c.etag[b.url])}p||C.setRequestHeader("X-Requested-With","XMLHttpRequest");C.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(da){}if(b.beforeSend&&b.beforeSend.call(b.context,C,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");C.abort();return false}b.global&&c.triggerGlobal(b,"ajaxSend",[C,b]);var xa=C.onreadystatechange=function(q){if(!C||C.readyState===0||
+q==="abort"){fa||c.handleComplete(b,C,e,f);fa=true;if(C)C.onreadystatechange=c.noop}else if(!fa&&C&&(C.readyState===4||q==="timeout")){fa=true;C.onreadystatechange=c.noop;e=q==="timeout"?"timeout":!c.httpSuccess(C)?"error":b.ifModified&&c.httpNotModified(C,b.url)?"notmodified":"success";var r;if(e==="success")try{f=c.httpData(C,b.dataType,b)}catch(u){e="parsererror";r=u}if(e==="success"||e==="notmodified")d||c.handleSuccess(b,C,e,f);else c.handleError(b,C,e,r);d||c.handleComplete(b,C,e,f);q==="timeout"&&
+C.abort();if(b.async)C=null}};try{var g=C.abort;C.abort=function(){C&&Function.prototype.call.call(g,C);xa("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){C&&!fa&&xa("timeout")},b.timeout);try{C.send(m||b.data==null?null:b.data)}catch(n){c.handleError(b,C,null,n);c.handleComplete(b,C,e,f)}b.async||xa();return C}},param:function(a,b){var d=[],e=function(h,m){m=c.isFunction(m)?m():m;d[d.length]=encodeURIComponent(h)+"="+encodeURIComponent(m)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||
+a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)wa(f,a[f],b,e);return d.join("&").replace(pb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,
+"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},
+httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(R.ActiveXObject)c.ajaxSettings.xhr=function(){if(R.location.protocol!=="file:")try{return new R.XMLHttpRequest}catch(a){}try{return new R.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};
+c.support.ajax=!!c.ajaxSettings.xhr();var rb={},xb=/^(?:toggle|show|hide)$/,yb=/^([+\-]=)?([\d+.\-]+)(.*)$/,mb,tb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(pa("show",3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")===
+"none"&&c.data(a,"olddisplay",Ca(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(pa("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,
+arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(pa("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),m,l=this.nodeType===1,p=l&&c(this).is(":hidden"),A=this;for(m in a){var v=
+c.camelCase(m);if(m!==v){a[v]=a[m];delete a[m];m=v}if(a[m]==="hide"&&p||a[m]==="show"&&!p)return h.complete.call(this);if(l&&(m==="height"||m==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(Ca(this.nodeName)==="inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[m])){(h.specialEasing=
+h.specialEasing||{})[m]=a[m][1];a[m]=a[m][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(H,Q){var fa=new c.fx(A,h,H);if(xb.test(Q))fa[Q==="toggle"?p?"show":"hide":Q](a);else{var C=yb.exec(Q),da=fa.cur()||0;if(C){Q=parseFloat(C[2]);var xa=C[3]||"px";if(xa!=="px"){c.style(A,H,(Q||1)+xa);da=(Q||1)/fa.cur()*da;c.style(A,H,da+xa)}if(C[1])Q=(C[1]==="-="?-1:1)*Q+da;fa.custom(da,Q,xa)}else fa.custom(da,Q,"")}});return true})},stop:function(a,b){var d=c.timers;
+a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:pa("show",1),slideUp:pa("hide",1),slideToggle:pa("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,
+easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype=
+{update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-10000?a:0},custom:function(a,b,d){function e(m){return f.step(m)}var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=
+this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!mb)mb=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,p){f.style["overflow"+p]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var m in this.options.curAnim)c.style(this.elem,m,this.options.orig[m]);this.options.complete.call(this.elem)}return false}else{a=
+b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(mb);mb=null},speeds:{slow:600,
+fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};var zb=/^t(?:able|d|h)$/i,vb=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in w.documentElement?function(a){var b=
+this[0],d;if(a)return this.each(function(m){c.offset.setOffset(this,a,m)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ra(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-
+(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(v){c.offset.setOffset(this,a,v)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b,h=b.ownerDocument,m=h.documentElement,l=h.body;d=(h=h.defaultView)?h.getComputedStyle(b,null):b.currentStyle;for(var p=b.offsetTop,A=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==m;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;
+d=h?h.getComputedStyle(b,null):b.currentStyle;p-=b.scrollTop;A-=b.scrollLeft;if(b===e){p+=b.offsetTop;A+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&zb.test(b.nodeName))){p+=parseFloat(d.borderTopWidth)||0;A+=parseFloat(d.borderLeftWidth)||0}f=e;e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){p+=parseFloat(d.borderTopWidth)||0;A+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){p+=
+l.offsetTop;A+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){p+=Math.max(m.scrollTop,l.scrollTop);A+=Math.max(m.scrollLeft,l.scrollLeft)}return{top:p,left:A}};c.offset={initialize:function(){var a=w.body,b=w.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),m=c.css(a,"top"),l=c.css(a,"left"),p=e==="absolute"&&c.inArray("auto",[m,l])>-1;e={};var A={};if(p)A=f.position();m=p?A.top:parseInt(m,
+10)||0;l=p?A.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+m;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=vb.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],
+"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||w.body;a&&!vb.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=ra(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ra(f))?"pageXOffset"in
+h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(m){var l=c(this);l[d](e.call(this,
+m,l[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}});typeof define!=="undefined"&&define("jquery",[],function(){return c})})(window);
+if(!this.exports)this.exports={};var Template=exports.Template=function Template(config){config=config||{};for(var param in config){this[param]=config[param];}
+this.blocks={}
+var blocks=config.BLOCKS||{};for(var b in blocks){if(blocks.hasOwnProperty(b)==false)
+continue;var block=blocks[b];if(block instanceof Function){this.blocks[b]=block;continue;}
+var parser=new Template.Parser(this);parser.parse(block.toString());var ti=new Template.Interpreter(parser.chunks(),this);this.blocks[b]=eval('('+ti.output+')');}};Template.Constants={CHOMP_NONE:0,CHOMP_ONE:1,CHOMP_COLLAPSE:2,CHOMP_GREEDY:3};Template.Exception=function(code,message){this.type=code;this.info=message;}
+Template.Exception.prototype.__proto__=Error.prototype;Template.Exception.prototype.name="Template.Exception";Template.Exception.prototype.toString=function(){return this.type+" error - "+this.info;}
+Template.Stash={'PRIVATE':/^[._]/}
+Template.VMethods={ROOT_OPS:{inc:function(x){return++x;},dec:function(x){return--x;}},SCALAR_OPS:{},HASH_OPS:{keys:function(){var k=[];for(var key in this)
+k.push(key);return k;},'import':function(hash2){for(var key in hash2){this[key]=hash2[key];}
+return'';}},LIST_OPS:{sort:function sort(key){if(key!==undefined){return this.sort(function(a,b){a=a[key];b=b[key];return a<b?-1:a>b?1:0;});}
+return this.sort(function(a,b){a=a.toLowerCase();b=b.toLowerCase();return a<b?-1:a>b?1:0;});},push:function push(x){this.push(x);},join:Array.prototype.join,reverse:Array.prototype.reverse,size:function size(){return this.length}}}
+Template.prototype={constructor:Template,process:function Template$prototype$process(input,params){this.parserOutput=[];var parser=new Template.Parser(this);var ctx=new Template.Context(this);parser.parse(input);this.parserTokens=[].concat(parser._tokenBuffer);if(this.DBG_OUTPUT_TOKENS)
+require('system').stderr.print('# Tokens: '+this.parserTokens.toSource());var chunks=parser.chunks();this.parserOutput=[].concat(chunks);if(this.DBG_OUTPUT_CHUNKS)
+require('system').stderr.print('# Chunks: '+chunks.toSource());var ti=new Template.Interpreter(chunks,this);this.interpreterOutput=ti.output;if(this.DBG_OUTPUT_FUNC)
+require('system').stderr.print(ti.output);var func=eval('('+ti.output+')');if(!params.global)
+params.global={};var Stash=function(){};Stash.prototype=params;Stash.global=params.global;ctx.stash=new Stash();var ret=func(ctx);if(!this.TRIM)
+return ret;return ret.replace(/^\s*([\s\S]*?)\s*$/,'$1');}};Template.escapeString=function(str){var hexDigits="0123456789ABCDEF";var hex=function(d){return hexDigits[d>>8]+hexDigits[d&0x0F];}
+var esc=function(string){return string.replace(/[\x00-\x1F'\\]/g,function(x){if(x==="'"||x==="\\")return"\\"+x;return"\\x"+hex(x.charCodeAt(0));});}
+if(typeof str==="string")return"'"+esc(str)+"'";else throw new Template.Exception("escape","Called escapeString on a non-string: "+str);};Template.Filters={html:function(text){return text.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');}};Template.Context=function(config){this.config=config||{};this.global={};this.blocks=this.config.blocks||{};this.filters=[this.config.FILTERS||{},Template.Filters];this.config.INCLUDE_PATH=this.config.INCLUDE_PATH||["."];};Template.Context.prototype={clone:function clone(obj,deep){function Clone(){}
+Clone.prototype=obj;if(!deep)
+return new Clone()
+var c=new Clone();for(var i in obj){if(obj.hasOwnProperty(i)&&typeof obj[i]=='object')
+c[i]=clone(obj[i],true);}
+return c;},parse_file:function(file){if("config"in this==false)
+throw new Template.Exception("NO_CONFIG","No config");var contents;for(var i in this.config.INCLUDE_PATH){try{var f=this.config.INCLUDE_PATH[i]+'/'+file;contents=this.load_file(f);break;}
+catch(e){}}
+if(contents===undefined)
+return contents;var parser=new Template.Parser(this.config);parser.parse(contents);var ti=new Template.Interpreter(parser.chunks(),this.config);return eval('('+ti.output+')');},include_block:function include_block(block,args){var blocks=this.blocks;var stash=this.stash;this.blocks=this.clone(blocks);this.stash=this.clone(stash,true);try{return this.process_block(block,args);}
+finally{this.blocks=blocks;this.stash=stash;}},process_block:function(block,args){var trim;if(block instanceof Function==false){trim=this.config.TRIM;block=block.toString();if(block in this.blocks==false){var func=this.parse_file(block);if(func===undefined)
+throw new Template.Exception("file",block+": not found");this.blocks[block]=func;}
+block=this.blocks[block];}
+args=args||[];for(var i in args){var arg=args[i];this.dot_op(this.stash,[arg[0]],{assign:arg[1]});}
+var ret=block(this);if(trim){ret=ret.replace(/^\s*([\s\S]*?)\s*$/,'$1');}
+return ret;},nullObj:{toString:function(){return'';}},dot_op:function Template$Context$dot_op(stash,segments,args){var s=stash;if(!args)args={};if('assign'in args){var last_seg=segments.pop();if(Template.Stash.PRIVATE&&Template.Stash.PRIVATE.exec(last_seg))
+return undefined;for(var i in segments){var segment=segments[i];if(Template.Stash.PRIVATE&&Template.Stash.PRIVATE.exec(segment))
+return undefined;if(s[segment]===undefined){s[segment]={};}
+s=s[segment];}
+var ret=s[last_seg];if(!args['default']||!ret)
+ret=s[last_seg]=args.assign;return ret;}
+for(var i in segments){var segment=segments[i];if(Template.Stash.PRIVATE&&Template.Stash.PRIVATE.exec(segment))
+return this.nullObj;var op_args=[];if(i==segments.length-1)
+op_args=args.args||[];if(s[segment]===undefined||s[segment]==null)
+break;else if(s instanceof Array&&Template.VMethods.LIST_OPS[segment])
+s=Template.VMethods.LIST_OPS[segment].apply(s,op_args);else if(s instanceof Object&&Template.VMethods.HASH_OPS[segment])
+s=Template.VMethods.HASH_OPS[segment].apply(s,op_args);else if(Template.VMethods.SCALAR_OPS[segment])
+s=Template.VMethods.SCALAR_OPS.apply(s,op_args);else if(s[segment]instanceof Function)
+s=s[segment].apply(s,op_args);else
+s=s[segment];}
+if(typeof s=='number'&&/\.[0-9]*00000[1-9]+$/.exec(s)){return s.toPrecision(12).replace(/0+$/,'');}
+if(s===undefined&&segments.length==1&&this.stash===stash&&segments[0]in Template.VMethods.ROOT_OPS){s=Template.VMethods.ROOT_OPS[segments[0]].apply(stash,args.args||[]);}
+return s===undefined?this.nullObj:s;},$setLoop:function(idx,size){this.dot_op(this.stash,["loop"],{assign:{index:idx,first:idx==0,count:++idx,'number':idx,size:size,last:idx==size}})},$forEachGenerator:function(a,func,novar){function next_val(){try{return a.next();}catch(e){if(e!==StopIteration)throw e}
+return undefined;}
+var idx=0;var curr=next_val(),next=next_val();while(curr!==undefined){if(novar&&typeof a[curr]=='object'){for(var key in a[curr]){this.stash[key]=a[curr][key];}}
+this.$setLoop(idx++,next!==undefined?next+1:undefined);if(func(a[curr])==this.StopIteration)
+break;curr=next;next=next_val();}},$forEachObject:function(a,func,novar){var keys=[];if(Object.keys)
+keys=Object.keys(a);else{for(var i in a)
+keys.push(i);}
+keys=keys.sort();for(var i=0;i<keys.length;i++){this.$setLoop(i,a.length||0);if(func({key:keys[i],value:a[keys[i]]})==this.StopIteration)
+break;}},forEach:function(a,func,novar){if(a===undefined||a===this.nullObj)
+return undefined;var stash=this.stash;var old_loop=this.stash.loop;try{if(novar){this.stash=this.clone(stash);}
+if(a.__iterator__&&a.__iterator__()===a){return this.$forEachGenerator(a,func,novar);}
+else if(a instanceof Array==false){if(!novar&&typeof a=="object"){return this.$forEachObject(a,func,novar);}
+a=[a];}
+for(var i=0;i<a.length;i++){if(novar&&typeof a[i]=='object'){for(var key in a[i]){this.stash[key]=a[i][key];}}
+this.$setLoop(i,a.length);if(func(a[i]||undefined)==this.StopIteration)
+break;}}
+finally{this.stash=stash;if(!novar&&old_loop)
+this.stash.loop=old_loop;}
+return undefined;},load_file:function load_file(file){throw new Template.Exception("file",Template.escapeString(file)+": not found");},$catch:function $catch(err){var errType=typeof err=="object"&&err.constructor&&err.constructor.name?err.constructor.name:'undef';if(!(err instanceof Template.Exception)){err=new Template.Exception('undef',err);}
+this.dot_op(this.stash,["error"],{assign:err});this.dot_op(this.stash,["e"],{assign:err});return err;},$error_matches:function $error_matches(err,type){if(err.type==type)
+return true;type+='.';return err.type.substr(0,type.length)==type;},filter:function filter(name,args){var flt;for(var i in this.filters){if(name in this.filters[i]==false)
+continue;flt=this.filters[i][name];if(typeof flt!="function"){throw new Template.Exception("filter","invalid FILTER entry for '"+name+"' (not a function)");}}
+if(!flt){throw new Template.Exception("filter",Template.escapeString(name)+": not found");}
+return flt;}};try{var fs=require('fs-base');if(typeof fs!='undefined'&&'rawOpen'in fs){Template.Context.prototype.load_file=function load_file(file){var f;try{f=new fs.rawOpen(file,'r');}
+catch(e){throw new Template.Exception("file",Template.escapeString(file)+": not found");}
+return f.readWhole();}}}catch(e){}
+Template.Parser=function(config){this.end_tag=this.default_end_tag;this.start_tag=this.default_start_tag;this.min_precedence=0;this._tokenWatermark=0;this._tokenBuffer=[];if(!config)
+config={};this.config=config;if(config.DEBUG){var self=this;this._tracedFunctions.split(/\s+/).forEach(function(name){var func=self.__proto__[name];self[name]=function Template$Parser$prototype$logCall(){try{if(name=='consumeToken'){self._logCall(name+'('+Template.escapeString(this.token.literal||this.token.type)+')');}else if(name=='assertToken'){self._logCall(name+'('+arguments[0].toSource()+')');}else if(name=='binary_expr'){self._logCall(name+'('+(arguments[1]||0)+')');}else{self._logCall(name);}
+var ret=func.apply(self,arguments);self._exitCall(name);return ret;}catch(e){self._exitCall(name,1);throw e;}};self[name].origFunc=func;});this._callIndent="";}};Template.Parser.prototype={_logCall:function(name){this.log('* '+this._callIndent+name);this._callIndent+=' ';},_exitCall:function(name,errorHappened){this._callIndent=this._callIndent.substr(0,this._callIndent.length-2);if(name!="consumeToken")
+this.log('* '+this._callIndent+(errorHappened?'died in ':'end ')+name);},default_start_tag:'\\[%',default_end_tag:'%\\]',_getToken:function Template$Parser$prototype$_getToken(){if(this._tokenBuffer.length>this._tokenWatermark){return this._tokenBuffer[this._tokenWatermark];}
+return{type:"NUL"};},consumeToken:function Template$Parser$prototype$consumeToken(){if(this._tokenWatermark>=this._tokenBuffer.length)
+this.parseError(new Error("Tried to consume token when none were in the buffer!"));var ret=this.token;this._tokenWatermark++;this.token=this._getToken();return ret;},unconsumeToken:function(){if(this._tokenWatermark<1)
+this.parseError(new Error("Tried to unconsume token when the buffer was already at start-of-block!"));this._tokenWatermark--;this.token=this._getToken();},parseError:function Template$parseError(msg){var substr=this.origInput.substr(this.token.position,10).replace(/\n/g,'\\n');if(this.token.position+10<this.origInput.length)
+substr+='...';throw new Error(msg+" at '"+substr+"' "+Template.escapeString(this.token));},log:function(str){if(typeof window!="undefined"&&window.console){this.log=function(str){return console.log.call(console.log,str.replace(/%([a-z])/g,'%%$1'))};return this.log(str);}
+else if(typeof print!="undefined"){this.log=function(str){print(str)};return this.log(str);}
+else{if(!this._log)
+this._log=[];this.log=function(str){this._log.push(str);}
+return this.log(str);}},assertToken:function assertToken(token,msg){if(typeof token=="string"){if(this.token.type!=token){this.parseError(msg?msg:token+' expected');}}
+else if(token.type!=this.token.type){this.parseError(msg?msg:token.type+' expected');}
+else if(token.literal&&token.literal!=this.token.literal){this.parseError(msg?msg:"'"+token.type+"' expected");}
+return this.consumeToken();},assertRule:function Template$Parser$prototype$assertRule(ruleFunc,args){var ret=ruleFunc.apply(this,args);if(ruleFunc.origFunc){ruleFunc=ruleFunc.origFunc;}
+var msg;if(ret===undefined){for(var name in this.__proto__){if(this.__proto__[name]===ruleFunc){msg=name+' expected';break;}}
+if(!msg)
+msg=ruleFunc.name||ruleFunc.toSource();this.parseError(msg);}
+return ret;},chompFlags:"[-=~+]",chompValues:{'+':Template.Constants.CHOMP_NONE,'-':Template.Constants.CHOMP_ONE,'=':Template.Constants.CHOMP_COLLAPSE,'~':Template.Constants.CHOMP_GREEDY},precedence:{'?':0,':':0,'==':2,'!=':2,'<':2,'>':2,'>=':2,'<=':2,OR:5,AND:5,CAT:10,'-':20,'+':20,'%':30,'*':40,'/':40,DIV:40},parse:function Template$Parser$prototype$parse(str){var self=this;var re=new RegExp('^((?:.|\\n)*?)(?:('+this.start_tag+')((?:.|\\n)*?)('+this.end_tag+'))');this.origInput=str;var pos=0;var post=str;var match,pre,dir;this._tokenBuffer=[];while(1){var postchomp=this.config.POST_CHOMP;var left=post.replace(re,function(entire,pre,start,dir,end){if(dir){if(dir[0]=='#'){dir=dir.match(new RegExp(self.chompFlags+'$'))||'';}else{var chomp=self.config.PRE_CHOMP;dir=dir.replace(new RegExp('^('+self.chompFlags+')'),function(entire,flag){chomp=self.chompValues[flag];return'';});if(chomp&&pre){switch(chomp){case Template.Constants.CHOMP_NONE:break;case Template.Constants.CHOMP_ONE:pre=pre.replace(/\n?[^\S\n]*$/,'');break;case Template.Constants.CHOMP_COLLAPSE:pre=pre.replace(/\s*$/,' ');break;case Template.Constants.CHOMP_GREEDY:pre=pre.replace(/\s*$/,'');break;default:throw new Error('unhandled prechomp flag '+chomp);}}
+dir=dir.replace(new RegExp('('+self.chompFlags+')\s*$'),function(entire,flag){postchomp=self.chompValues[flag];return'';});}}
+if(pre.length){if(self.config.INTERPOLATE)
+self._tokenBuffer=self._tokenBuffer.concat(self.interpolate_text(pre,pos));else
+self._tokenBuffer.push({type:'TEXT',literal:pre,position:pos});pos+=pre.length;}
+pos+=start.length;self._tokenBuffer=self._tokenBuffer.concat(self.tokenise(dir,pos));pos+=dir.length;self._tokenBuffer.push({type:';',position:pos,automatic:1})
+pos+=end.length;return"";});if(postchomp&&left){switch(postchomp){case Template.Constants.CHOMP_NONE:break;case Template.Constants.CHOMP_ONE:left=left.replace(/^(?:[^\S\n]*\n)/,'');break;case Template.Constants.CHOMP_COLLAPSE:left=left.replace(/^\s*/,' ');break;case Template.Constants.CHOMP_GREEDY:left=left.replace(/^\s*/,'');break;default:throw new Error('unhandled postchomp flag '+postchomp);}}
+if(post.length==left.length)
+break;post=left;}
+self=undefined;if(post.length){if(this.config.INTERPOLATE)
+this._tokenBuffer=this._tokenBuffer.concat(this.interpolate_text(post,pos));else
+this._tokenBuffer.push({type:'TEXT',literal:post,position:pos});}
+this.token=this._getToken();},tokenise_regexp:/(#[^\n]*)|(["'])((?:\\\\|\\\2|.|\n)*?)\2|(-?\d+(?:\.\d+)?)|(\/?\w+(?:(?:\/|::?)\w*)+|\/\w+)|(\w+)|([(){}\[\]:;,\/\\]|\->|[+\-*]|\$\{?|=>|[=!<>]?=|[!<>]|&&?|\|\|?|\.\.?|\S+)/mg,tokenise:function Template$Parser$prototype$tokenise(text,pos){var re=new RegExp(this.tokenise_regexp.source,'mg');var type,match,token;var tokens=[];var initPos=pos;while((match=re.exec(text))){pos=initPos+re.lastIndex-match[0].length;if(match[1])
+continue;if((token=match[3])){if(match[2]=='"'){if(token.match("[\$\\\\]")){type='QUOTED';token=token.replace(/\\([^\$nrt])/g,"$1");token=token.replace(/\\([nrt])/g,function(str){return eval('"'+str+'"');});tokens.push({type:'"',literal:'"',position:pos});pos++;var segments=this.interpolate_text(token,pos);tokens=tokens.concat(segments);pos+=match[2].length;tokens.push({type:'"',literal:'"',position:pos});pos++;continue;}
+else{type='LITERAL';token="'"+token+"'";}}
+else{type='LITERAL';token="'"+token+"'";}}
+else if(match[2]){type='LITERAL';token="''";}
+else if((token=match[4])!==undefined){type='NUMBER';}
+else if((token=match[5])!==undefined){type='FILENAME';}
+else if((token=match[6])!==undefined){var uctoken=this.config.ANYCASE?token.toUpperCase():token;type=this.LEXTABLE[uctoken];if(type!==undefined){token=uctoken;}
+else{type='IDENT';}}
+else if((token=match[7])!==undefined){var uctoken=token;if(this.LEXTABLE[uctoken]===undefined){type='UNQUOTED';}
+else{type=this.LEXTABLE[uctoken];}}
+else{throw new Error('Something went wrong in the tokeniser, and it matched nothing');}
+tokens.push({type:type,literal:token,position:pos});}
+return tokens;},interpolate_text:function Template$Parser$prototype$interpolate_text(text,pos){var re=/((?:\\.|[^\$]){1,3000})|(\$(?:(?:\{([^\}]*)\})|([\w\.]+)))/g;var match,pre,v,dir;var tokens=[];while((match=re.exec(text))){pre=match[1];dir=match[2];if(match[3])
+v=match[3];else
+v=match[4];if(pre&&pre.length){pos+=pre.length;pre=pre.replace(/\\\$/,"$");tokens.push({type:'TEXT',literal:pre,position:pos})}
+if(v){tokens=tokens.concat(this.tokenise(v,pos));pos+=v.length;tokens.push({type:';',literal:';',position:pos,automatic:1});}
+else if(dir){throw new Error('interpolate dir');tokens.push({type:'TEXT',literal:dir,position:pos});}}
+return tokens;},LEXTABLE:{'FOREACH':'FOR','BREAK':'LAST','&&':'AND','||':'OR','!':'NOT','|':'FILTER','.':'DOT','_':'CAT','..':'TO','=':'ASSIGN','=>':'ASSIGN',',':'COMMA','\\':'REF','and':'AND','or':'OR','not':'NOT','mod':'%','MOD':'%','div':'DIV',GET:'GET',CALL:'CALL',SET:'SET',DEFAULT:'DEFAULT',INSERT:'INSERT',INCLUDE:'INCLUDE',PROCESS:'PROCESS',WRAPPER:'WRAPPER',BLOCK:'BLOCK',END:'END',USE:'USE',PLUGIN:'PLUGIN',FILTER:'FILTER',MACRO:'MACRO',PERL:'PERL',RAWPERL:'RAWPERL',TO:'TO',STEP:'STEP',AND:'AND',OR:'OR',NOT:'NOT',DIV:'DIV',IF:'IF',UNLESS:'UNLESS',ELSE:'ELSE',ELSIF:'ELSIF',FOR:'FOR',NEXT:'NEXT',WHILE:'WHILE',SWITCH:'SWITCH',CASE:'CASE',META:'META',IN:'IN',TRY:'TRY',THROW:'THROW',CATCH:'CATCH',FINAL:'FINAL',LAST:'LAST',RETURN:'RETURN',STOP:'STOP',CLEAR:'CLEAR',VIEW:'VIEW',DEBUG:'DEBUG','!=':'CMPOP','==':'CMPOP','<':'CMPOP','>':'CMPOP','>=':'CMPOP','<=':'CMPOP','-':'BINOP','*':'BINOP','%':'BINOP','(':'(',')':')','[':'[',']':']','{':'{','}':'}','${':'${','$':'$','+':'+','/':'/',';':';',':':':','?':'?'},expr:function Template$Parser$prototype$expr(){if(this.token.type==='('){this.consumeToken();switch(this.token.type){case'IDENT':case'${':case'$':case'LIERAL':break;default:var expr=this.assertRule(this.expr);this.assertToken(')')
+return expr;}
+var sterm=this.sterm();var ret;if(this.token.type=='ASSIGN'){this.consumeToken;ret={type:'ASSIGN',lhs:sterm,rhs:this.assertRule(this.expr)};}else{ret=this.expr_tail(sterm);}
+this.assertToken(')');return ret;}
+var term=this.term();if(term===undefined)
+return term;return this.expr_tail(term);},expr_tail:function Template$Parser$prototype$expr_tail(term){switch(this.token.type){case'?':case'CMPOP':case'BINOP':case'+':case'/':case'%':case'DIV':case'CAT':case'AND':case'OR':return this.binary_expr(term,this.min_precedence);}
+return term;},token_precedence:function(token){token=token||this.token;if(token.type=='CMPOP'||token.type=='BINOP')
+token=token.literal;else
+token=token.type;return token in this.precedence?this.precedence[token]:-1;},binary_expr:function Template$Parser$binary_expr(lhs,min_precedence){var op,rhs,new_precedence;while(this.token_precedence()>=min_precedence){var watermark=this._tokenWatermark;op=this.consumeToken();new_precedence=this.token_precedence(op);if(op.type=='CMPOP'||op.type=='BINOP')
+op=op.literal;else
+op=op.type;rhs=this.assertRule(this.term);while(this.token_precedence()>=new_precedence){rhs=this.binary_expr(rhs,this.token_precedence());}
+if(op=='?'&&rhs.type!=':'){this._tokenWatermark=watermark;this._getToken();this.parseError(": expected after ?");}else{lhs={type:op,lhs:lhs,rhs:rhs};}}
+return lhs;},term:function Template$Parser$prototype$term(){if(this.token.type=='NOT'){this.consumeToken();return{type:'NOT',child:this.term()};}
+var term=this.lterm();if(term){return term;}
+return this.sterm();},sterm:function Template$Parser$prototype$sterm(){switch(this.token.type){case'LITERAL':case'NUMBER':return this.consumeToken();case'REF':this.consumeToken();var ident=this.assertRule(this.ident);return{type:'REF',ident:ident};case'"':this.consumeToken();var quoted=this.quoted();this.assertToken('"');return quoted;default:return this.ident();}},quoted:function Template$Parser$prototype$quoted(){var segs=[];var loop=true;while(loop){switch(this.token.type){case';':this.consumeToken();break;case'TEXT':segs.push(this.consumeToken());break;default:var ident=this.ident();if(ident===undefined)
+loop=false;else
+segs.push(ident);break;}}
+if(segs.length)
+return{type:'QUOTED',segments:segs};return undefined;},ident:function Template$Parser$prototype$ident(){var segments=[this.node()];if(segments[0]===undefined)
+return undefined;while(this.token.type=='DOT'){this.consumeToken();if(this.token.type=='NUMBER'){segments.push(this.consumeToken());break;}
+segments.push(this.assertRule(this.node));}
+if(segments.length==1)
+return segments[0];return{type:'ident',segments:segments};},node:function Template$Parser$prototype$node(){var item=this.item();if(item!==undefined&&this.token.type=='('){this.consumeToken();var ret={type:'function_call',func:item};ret.args=this.assertRule(this.args);this.assertToken(')');return ret;}
+return item;},args:function Template$Parser$prototype$args(){var ret=[[]];while(1){var ident;if(this.token.type=='LITERAL')
+ident=this.consumeToken();else
+ident=this.ident();if(ident!==undefined){if(this.token.type!='ASSIGN'){ret.push(ident);}
+else{this.assertToken('ASSIGN');ret[0].push(ident);ret[0].push(this.assertRule(this.expr));}}else{var expr=this.expr();if(expr===undefined)
+break;ret.push(expr);}
+switch(this.token.type){case'COMMA':this.consumeToken();break;case'(':case'?':case'CMPOP':case'BINOP':case'+':case'/':case'DIV':case'%':case'CAT':case'AND':case'OR':ident=ret.pop();ret.push(this.assertRule(this.expr_tail,[ident]));break;}
+if(this.token.type=='COMMA')
+this.consumeToken();}
+return ret;},item:function Template$Parser$prototype$item(){var ret;switch(this.token.type){case'IDENT':return this.consumeToken();case'${':this.consumeToken();ret={type:'interpret',term:this.assertRule(this.sterm)};this.consumeToken('}');return ret;case'$':this.consumeToken();var ident=this.assertToken('IDENT');if(this.config.V1DOLLAR)
+ret=ident;else
+ret={type:'interpret',term:ident};return ret;default:return undefined;}},lterm:function Template$Parser$prototype$lterm(){if(this.token.type=='['){this.consumeToken();if(this.token.type==']'){this.consumeToken();return{type:'array',items:[]};}
+var term=this.sterm();if(term!==undefined){if(this.token.type=='TO'){this.consumeToken();var ret={type:'range',from:term,to:this.assertRule(this.sterm)};this.assertToken(']');return ret;}}else{term=this.assertRule(this.lterm);}
+var ret={type:'array',items:[term]};while(this.token.type!=']'&&this.token.type!='NUL'){if(this.token.type=='COMMA'){this.consumeToken();continue;}
+ret.items.push(this.assertRule(this.term));}
+this.assertToken(']');return ret;}else if(this.token.type=='{'){this.consumeToken();var ret={type:'hash',data:this.assertRule(this.params)};this.assertToken('}');return ret;}
+return undefined;},params:function Template$Parser$prototype$params(){var items=[this.assertRule(this.param)];while(this.token.type!='NUL'){if(this.token.type=='COMMA'){this.consumeToken();continue;}
+var item=this.param();if(item===undefined)
+break;items.push(item);}
+return items;},param:function Template$Parser$prototype$param(){var ret={type:'assign'};if(this.token.type=='LITERAL'){ret.to=this.consumeToken();}else{ret.to=this.item();if(ret.to===undefined)
+return undefined;}
+this.assertToken('ASSIGN');ret.value=this.assertRule(this.expr);return ret;},complex_statement:function Template$Parser$prototype$complex_statement(){var expr;if(this.token.type=='LITERAL'){var lit=this.consumeToken();if(this.token.type=='ASSIGN'){this.consumeToken();return this.setlist_tail(lit);}else{expr=this.expr_tail(lit);}}else{var ident=this.ident();if(ident!==undefined){if(this.token.type=='ASSIGN'){this.consumeToken();if(this.token.type=='BLOCK'){throw new Error('mdir');}
+return this.setlist_tail(ident);}else{expr=this.expr_tail(ident);}}
+else{expr=this.expr();if(!expr)
+return undefined;}}
+if(expr){return this.postfixed_condition(expr);}
+return undefined;},setlist_tail:function Template$Parser$prototype$setlist_tail(ident){var as=[{type:'ASSIGN',lhs:ident}];if(this.token.type=='LITERAL')
+as[0].rhs=this.consumeToken();else
+as[0].rhs=this.assertRule(this.expr);while(this.token.type!=';'){if(this.token.type=='NUL')
+break;if(this.token.type=='COMMA'){this.consumeToken();continue;}
+var i;if(this.token.type=='LITERAL')
+i=this.consumeToken();else
+i=this.assertRule(this.ident);this.assertToken('ASSIGN');as.push({type:'ASSIGN',lhs:i,rhs:this.assertRule(this.expr)});}
+return{type:'setlist',chunks:as};},postfixed_condition:function Template$Parser$prototype$postfixed_condition(expr){if(this.token.type=='IF'||this.token.type=='UNLESS'){var ret={type:this.consumeToken().type,body:[expr]};ret.condition=this.assertRule(this.expr);return this.postfixed_condition(ret);}
+if(this.token.type=='WRAPPER'){this.consumeToken();var nameargs=this.assertRule(this.nameargs);nameargs.type='WRAPPER';nameargs.chunks=[expr];return this.postfixed_condition(nameargs);}
+if(this.token.type=='FOR'||this.token.type=='WHILE'){var token=this.consumeToken();var ret={type:token.type,loopvar:this.assertRule(token.type=='FOR'?this.loopvar:this.expr),chunks:[expr]};return this.postfixed_condition(ret);}
+if(this.token.type=='FILTER'){var ret={type:this.consumeToken().type,chunks:[expr],filter:this.assertRule(this.lnameargs)};return ret;}
+return expr;},atomexpr:function Template$Parser$prototype$atomexpr(){return this.expr();},atomdir:function Template$Parser$prototype$atomdir(){switch(this.token.type){case'GET':case'CALL':return{type:this.consumeToken().type,expr:this.assertRule(this.expr)};case'SET':this.consumeToken();return this.assertRule(this.setlist);case'DEFAULT':return{type:this.consumeToken().type,expr:this.assertRule(this.setlist)};case'INSERT':case'INCLUDE':case'PROCESS':case'THROW':var type=this.consumeToken().type;var nameargs=this.assertRule(this.nameargs);nameargs.type=type;return nameargs;case'NEXT':case'LAST':case'CLEAR':return this.consumeToken();default:return undefined;}},loop:function Template$Parser$prototype$loop(){if(this.token.type=='FOR'||this.token.type=='WHILE'){var token=this.consumeToken();var ret={type:token.type,loopvar:this.assertRule(token.type=='FOR'?this.loopvar:this.expr),chunks:[]};this.assertToken(';');while(this.token.type!='END'){if(this.token.type=='NUL')
+break;ret.chunks.push(this.chunk());}
+this.assertToken('END');return ret;}
+return undefined;},loopvar:function Template$Parser$prototype$loopvar(){var ident;if(this.token.type=='IDENT'){ident=this.consumeToken();if(this.token.type=='ASSIGN')
+this.consumeToken();else if(this.token.type=='IN')
+this.consumeToken();else{ident=undefined;this.unconsumeToken();}}
+var ret={term:this.assertRule(this.term),args:this.args()};if(ident)
+ret.ident=ident;return ret;},chunks:function Template$Parser$prototype$chunks(){var chunks=[];while(this.token.type!='NUL'){chunks.push(this.chunk());}
+return chunks;},chunk:function Template$Parser$prototype$chunk(){if(this.token.type=='TEXT'){return this.consumeToken();}else if(this.token.type==';'){this.consumeToken();return undefined;}else{var ret=this.assertRule(this.statement);this.assertToken(';');return ret;}},statement:function Template$Parser$prototype$statment(){return this.complex_statement()||this.directive()||this.block()||this.wrapper_like()||this.filter()||this.expr();},directive:function Template$Parser$prototype$directive(){var atom=this.atomdir();if(atom)
+return this.postfixed_condition(atom);return this.condition()||this.switchBlock()||this.loop()||this.tryCatch();},condition:function Template$Parser$prototype$condition(){if(this.token.type=='IF'||this.token.type=='UNLESS'){var ret={type:this.consumeToken().type};ret.condition=this.assertRule(this.expr);this.assertToken(';');ret.body=[];while(['END','ELSE','ELSIF'].indexOf(this.token.type)==-1){if(this.token.type=='NUL')
+break;ret.body.push(this.chunk());}
+this.conditionElse(ret);this.assertToken('END');return ret;}
+return undefined;},conditionElse:function Template$Parser$prototype$conditionElse(cond){var elseifs=[];while(this.token.type=='ELSIF'){this.consumeToken();var elseif={condition:this.assertRule(this.expr)};this.assertToken(';');elseif.body=[];while(['END','ELSE','ELSIF'].indexOf(this.token.type)==-1){if(this.token.type=='NUL')
+break;elseif.body.push(this.chunk());}
+elseifs.push(elseif);}
+if(elseifs.length){cond.elseifs=elseifs;}
+if(this.token.type=='ELSE'){this.consumeToken();this.assertToken(';');cond['else']=[];while(['END','ELSE','ELSIF'].indexOf(this.token.type)==-1){if(this.token.type=='NUL')
+break;cond['else'].push(this.chunk());}}
+return cond;},setlist:function Template$Parser$prototype$setlist(){var ident;if(this.token.type=='LITERAL')
+ident=this.consumeToken();else
+ident=this.ident();if(ident===undefined)
+return ident;this.assertToken('ASSIGN');return this.setlist_tail(ident);},block:function Template$Parser$prototype$block(){if(this.token.type!='BLOCK')
+return undefined;this.consumeToken();var blockname;if(this.token.type=='LITERAL')
+blockname=this.consumeToken();else
+blockname=this.assertRule(this.filename);var block={type:'BLOCK',name:blockname,args:this.metadata(),chunks:[]};this.assertToken(';');while(this.token.type!='END'){block.chunks.push(this.assertRule(this.chunk));}
+this.assertToken('END');return block;},filename:function Template$Parser$prototype$filename(){var fn=this.filepart();if(fn===undefined)
+return fn;while(this.token.type=='DOT'){this.consumeToken();var c=this.filepart();fn.literal+='.'+c.literal;}
+return fn;},filepart:function Template$Parser$prototype$filepart(){if(this.token.type=='FILENAME'||this.token.type=='IDENT'||this.token.type=='NUMBER')
+{return this.consumeToken();}
+return undefined;},metadata:function Template$Parser$prototype$metadata(){var meta=[];while(this.token.type=='IDENT'){var i=this.consumeToken();this.assertToken('ASSIGN');var rhs;if(this.token.type=='LITERAL'||this.token.type=='NUMBER')
+rhs=this.consumeToken();else if(this.token.type=='"'){this.consumeToken();rhs=this.assertToken('TEXT');this.assertToken('"');}else{this.assertToken('LITERAL');}
+meta.push({type:'META',lhs:i,rhs:rhs});if(this.token.type=='COMMA')
+this.consumeToken();}
+if(meta.length)
+return meta;return undefined;},lnameargs:function Template$Parser$prototype$lnameargs(){var watermark=this._tokenWatermark;var lvalue;if(this.token.type=='LITERAL'){lvalue=this.consumeToken();}else if(this.token.type=='"'){this.consumeToken();lvalue=this.assertRule(this.quoted);this.assertToken('"');}else{lvalue=this.item();}
+if(lvalue&&this.token.type=='ASSIGN'){this.consumeToken();return{lvalue:lvalue,nameargs:this.assertRule(this.nameargs)};}else{this._tokenWatermark=watermark;this.token=this._getToken();return this.nameargs();}},nameargs:function Template$Parser$protoyep$nameargs(){if(this.token.type=='$'){this.consumeToken();return{type:'nameargs',names:[{type:'interpret',term:this.assertRule(this.ident)}],args:this.args()};}
+var names=this.assertRule(this.names);var args;if(this.token.type=='('){this.consumeToken();args=this.assertRule(this.args);this.assertToken(')');}
+else
+args=this.assertRule(this.args);return{type:'nameargs',names:names,args:args};},names:function Template$Parser$prototype$names(){var names=[];while(true){var n=this.name();if(n===undefined)
+break;names.push(n);if(this.token.type!='+')
+break;this.consumeToken();}
+if(names.length)
+return names;return undefined;},name:function Template$Parser$prototype$name(){if(this.token.type=='"'){this.consumeToken();var ret=this.assertRule(this.quoted);this.assertToken('"');return ret;}
+else if(this.token.type=='LITERAL')
+return this.consumeToken();else
+return this.filename();},wrapper_like:function Template$Parser$wrapper_like(){var valid=['WRAPPER'].indexOf(this.token.type)!=-1;if(!valid)
+return undefined;var type=this.consumeToken().type;var block=this.assertRule(this.nameargs);block.type=type;block.chunks=[];this.assertToken(';');while(this.token.type!='END'){block.chunks.push(this.assertRule(this.chunk));}
+this.assertToken('END');return block;},filter:function Template$Parser$filter(){if(this.token.type!='FILTER')
+return undefined;var ret=this.consumeToken();ret.filter=this.assertRule(this.lnameargs);ret.chunks=[];this.assertToken(';');while(this.token.type!='END'){if(this.token.type=='NUL')
+break;ret.chunks.push(this.assertRule(this.chunk));}
+this.assertToken('END');return ret;},switchBlock:function Template$Parser$switchBlock(){if(this.token.type!='SWITCH')
+return undefined;var ret=this.consumeToken();var expr=this.assertRule(this.expr);this.assertToken(';');ret.expr=expr;ret.cases=[];while(this.token.type=='CASE'){var c=this.consumeToken();if(this.token.type==';'){this.consumeToken();c['default']=true;}
+else if(this.token.type=='DEFAULT'){c['default']=true;this.consumeToken();this.assertToken(';');}
+else{c['case']=this.assertRule(this.term);this.assertToken(';');}
+c.chunks=[];while(['CASE','END','NUL'].indexOf(this.token.type)==-1){c.chunks.push(this.chunk());}
+ret.cases.push(c);}
+this.assertToken('END');return ret;},tryCatch:function Template$Parser$tryCatch(){if(this.token.type!='TRY')
+return undefined;this.consumeToken();var block={type:'TRY',tryBlock:[],catches:[],'final':[]};this.assertToken(';');while(['CATCH','FINAL'].indexOf(this.token.type)==-1){if(this.token.type=='NUL')
+this.assertToken('END');block.tryBlock.push(this.assertRule(this.chunk));}
+while(this.token.type=='CATCH'){var c=this.consumeToken();switch(this.token.type){case';':c.signature=false;break;case'DEFAULT':c.signature=this.consumeToken();break;default:c.signature=this.assertRule(this.filename);break;}
+this.assertToken(';');c.block=[];while(['CATCH','FINAL','END'].indexOf(this.token.type)==-1){if(this.token.type=='NUL')
+this.assertToken('END');c.block.push(this.assertRule(this.chunk));}
+block.catches.push(c);}
+if(this.token.type=='FINAL'){this.consumeToken();this.assertToken(';');while(this.token.type!='END'){block['final'].push(this.assertRule(this.chunk));}}
+this.assertToken('END');return block;},_tracedFunctions:"consumeToken node ident sterm term expr expr_tail item \
+ lterm params param chunks condition conditionElse statement tokenise \
+ interpolate_text assign setlist directive loop loopvar binary_expr args \
+ block metadata filename nameargs names wrapper_like complex_statement \
+ tryCatch lnameargs filter atomdir"};Template.Interpreter=function Template$Interpreter(chunks,config){this.blocks={};this.config=config||{}
+this.output=this.prelude;this.inFor=0;this.inWhile=0;var body=this.walk(chunks);for(var i in this.blocks){this.output+=' ctx.blocks['+i+'] = '+this.blocks[i]+';\n';}
+this.output+=body
++this.postlude;}
+Template.Interpreter.prototype={prelude:"function(ctx) {\n\
+ var out_arr = []; ctx.StopIteration = (typeof StopIteration === 'undefined') ? 'StopIteration' : StopIteration; \
+ function __perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? val : '' };\
+ function __not_perl_truth(val) { return (!!val && val != '0' && val !== ctx.nullObj) ? '' : 1 };\
+ try {\n",postlude:"\n\
+ }\n\
+ catch (e) { if (!(e instanceof Template.Exception && e.type == 'stop')) throw e; } \n\
+ return out_arr.join('');\n\
+}",walk:function Template$Interpreter$prototype$walk(chunks){var output='';var prev={type:'NUL'};for(var i in chunks){var chunk=chunks[i]
+if(chunk===undefined||i=="unique"){continue;}
+var write=['IF','FOR','CALL','setlist','DEFAULT','UNLESS','BLOCK','NEXT','LAST','WHILE','SWITCH','TRY','THROW','CATCH','CLEAR','FILTER'].indexOf(chunk.type)==-1;var add_semicolon=write||['THROW','FILTER'].indexOf(chunk.type)!=-1;if(chunk.toSource)
+output+='// '+chunk.toSource()+'\n';if(write){output+='out_arr.push(';}
+output+=this.$get_term(chunk);if(write)
+output+=')';if(add_semicolon)
+output+=';\n';prev=chunk;}
+return output;},$get_term:function Template$Interpreter$prototype$$get_term(term){if(this["build"+term.type])
+return this["build"+term.type](term);switch(term.type){case'TEXT':return Template.escapeString(term.literal);case'ident':return'ctx.dot_op('+this.handle_ident_segments(term.segments)+')';case'IDENT':return"ctx.dot_op(ctx.stash, ["+Template.escapeString(term.literal)+"])";case'NUMBER':return parseFloat(term.literal);case'LITERAL':return term.literal;case'IF':case'UNLESS':var condition=this.$get_term(term.condition);if(term.type=='UNLESS')
+condition='__not_perl_truth('+condition+')';else if(['<','<=','>','>=','==','!='].indexOf(term.condition.type)==-1)
+condition='__perl_truth('+condition+')';var body=this.walk(term.body);var ret="if ("+condition+") {\n"+body.replace(/^/gm,' ')+"\n}";if('elseifs'in term){for(var i in term.elseifs){var elseif=term.elseifs[i];ret+=' else if (__perl_truth('+this.$get_term(elseif.condition)
++')) {\n'
++this.walk(elseif.body).replace(/^/gm,' ')+'\n}';}}
+if(term['else']){ret+=' else {\n'+this.walk(term['else']).replace(/^/gm,' ')+'\n}';}
+return ret;case'+':case'/':case'*':case'%':case'-':case'DIV':return this.math_op(term);case'interpret':var out=[];out.push(this.$get_term(term.term));if(term.literal){out.push(term.literal);}
+return'ctx.dot_op(ctx.stash, [ '+out.join(' + ')+'])';case'GET':case'CALL':return this.$get_term(term.expr);case'QUOTED':var out=[];for(var i in term.segments){var seg=term.segments[i];if(seg.type==';')
+continue;out.push(this.$get_term(seg));}
+return out.join(' + ');case'function_call':var t=this.handle_ident_segments([term.func]);var stash=t[0],segs=t[1];var args=this.handle_function_args(term.args);return'ctx.dot_op('+stash+', ['+segs+'], { args: '+args+' } )';case'DEFAULT':var defaults=true;term=term.expr;case'setlist':var ret=[];for(var i in term.chunks){var assign=term.chunks[i];var t=this.handle_ident_segments([assign.lhs]);var stash=t[0],segs=t[1];var prefix='ctx.dot_op('+stash+', '+segs+', { '+(defaults?'default:1, ':'')+'assign: ';if(assign.rhs.type=='interpret'){ret.push(prefix+'ctx.dot_op(ctx.stash, ['+this.$get_term(assign.rhs.term)+'] ) } )');}else{ret.push(prefix+this.$get_term(assign.rhs)+' } )');}}
+return ret.join(', ')+';';case'FOR':var loopvar=term.loopvar.ident?this.handle_ident_segments([term.loopvar.ident]):undefined;var loopcond=this.$get_term(term.loopvar.term);var ret='ctx.forEach('+loopcond+', function(value) {\n ';if(loopvar){ret+='\n ctx.dot_op('+loopvar+', { assign: value } );\n';}
+this.inFor++;var chunks=this.walk(term.chunks);this.inFor--;ret+=chunks.replace(/^/mg,' ');ret+='\n}';if(loopvar===undefined)
+ret+=', true';ret+=');';return ret;case'WHILE':var cond=this.$get_term(term.loopvar);if(!cond.match(/^__(?:not_)?perl_truth\(/))
+cond='__perl_truth('+cond+')'
+var ret='while('+cond+') {\n';this.inWhile++;var chunks=this.walk(term.chunks);this.inWhile--;ret+=chunks.replace(/^/mg,' ');ret+='\n}';return ret;case'array':return'['+term.items.map(this.$get_term,this).join(', ')+']';case'hash':var pairs=[];for(var i in term.data){var pair=term.data[i];if(pair.to.type!='IDENT'){throw new Error('Cant handle '+pair.to.type+' in hash key!');}
+pairs.push(pair.to.literal+': '+this.$get_term(pair.value));}
+return'{ '+pairs.join(', ')+' }';case'OR':return'( __perl_truth('+this.$get_term(term.lhs)+') || __perl_truth('+this.$get_term(term.rhs)+') )';case'AND':return'__perl_truth('+this.$get_term(term.lhs)+') && __perl_truth('+this.$get_term(term.rhs)+')';case'NOT':return'__not_perl_truth('+this.$get_term(term.child)+')';case'CAT':return'('+this.$get_term(term.lhs)+').toString()+'+'('+this.$get_term(term.rhs)+').toString()';case'==':case'!=':case'>=':case'<=':case'<':case'>':return'__perl_truth(('+this.$get_term(term.lhs)+') '
++term.type
++' ('+this.$get_term(term.rhs)+'))';case'?':return'( __perl_truth('+this.$get_term(term.lhs)+') ?'+
+this.$get_term(term.rhs)+')';case':':return'('+this.$get_term(term.lhs)+'):('+
+this.$get_term(term.rhs)+')';case'BLOCK':var block_name;if(term.name.type=='IDENT'||term.name.type=='FILENAME')
+block_name=Template.escapeString(term.name.literal);else if(term.name.type=='LITERAL')
+block_name=term.name.literal;else
+throw new Error('Handle '+Template.escapeString(term.name));this.blocks[block_name]=(new Template.Interpreter(term.chunks)).output;return'';case'PROCESS':return'ctx.process_block('+this.handle_nameargs(term)+')';case'INCLUDE':return'ctx.include_block('+this.handle_nameargs(term)+')';case'WRAPPER':term.args[0].push({type:'IDENT',literal:"content"});term.args[0].push({type:'LITERAL',literal:'ctx.process_block('+
+(new Template.Interpreter(term.chunks)).output+')'});if(term.names.length==1)
+return'ctx.include_block('+this.handle_nameargs(term)+')';var ret='',prev='';for(var i=term.names.length-1;i>=0;i--){var name=term.names[i];var ret='ctx.include_block(';if(i==term.names.length-1)
+ret+=this.handle_nameargs({names:[name],args:term.args});else{ret+=this.handle_nameargs({names:[name],args:[[]]});ret+=', [["content", '+prev+']]'}
+ret+=')';prev=ret;}
+return ret;case'range':if(typeof Range!='undefined'){return'Range('+this.$get_term(term.from)+', '
++this.$get_term(term.to)+'+1)';}else{var range=[];for(var i=parseInt(term.from.literal);i<=parseInt(term.to.literal);i++)
+{range.push(i);}
+return Template.escapeString(range);}
+case'NEXT':if(this.inWhile)
+return'continue;';else if(this.inFor)
+return'return;';else
+throw new Template.Exception("SYNTAX_ERROR","NEXT used outside of loop");case'LAST':if(this.inWhile)
+return'break;';else if(this.inFor)
+return'return ctx.StopIteration;';else
+throw new Template.Exception("SYNTAX_ERROR",term.literal+" used outside of loop");case'SWITCH':var ret='switch ('+this.$get_term(term.expr)+') {\n';for(var i in term.cases){var c=term.cases[i];if(c['default']){ret+=' default:\n';}else{ret+=' case '+this.$get_term(c['case'])+':\n';}
+var body=this.walk(c.chunks);ret+=body.replace(/^/gm,' ');ret+='\n break;\n';}
+ret+='}\n';return ret;case'THROW':if(term.names.length&&term.args.length>1){if(term.names.length>1)throw new Error("Dont know how to handle this");var ret="throw new Template.Exception(";ret+=this.handle_nameargs(term);return ret+")";}
+return"throw "+this.handle_nameargs(term);default:throw new Error('Unhandled '+term.toSource());}},buildTRY:function buildTRY(term){var ret="(function(out){ var out_arr = []; try {\n",has_final=term['final'].length,body=this.walk(term.tryBlock);ret+=body.replace(/^/gm,' ');ret+="}\n";if(term.catches.length){ret+='catch ($e) { $e = ctx.$catch($e); \n';var if_count=0;var catchall=false;for(var i in term.catches){var c=term.catches[i];if(!c.signature||c.signature.type=="DEFAULT"){catchall=true;if(if_count)ret+=" else {\n";var body=this.walk(c.block);ret+=body.replace(/^/gm,' ');if(if_count)ret+="\n }\n";break;}
+else if(c.signature){ret+=" ";if(if_count){ret+="else "}
+ret+="if (ctx.$error_matches($e, "+Template.escapeString(c.signature.literal)+") ) {\n";ret+=this.walk(c.block).replace(/^/gm,' ');ret+="\n }\n";if_count++;}}
+if(!catchall){if(if_count)ret+="else ";ret+="throw $e\n";}
+ret+='\n}\n';}
+ret+='finally {\n';if(term['final'].length){ret+=this.walk(term['final']).replace(/^/gm,' ');}
+ret+="out.push.apply(out, out_arr); }})(out_arr)"
+return ret;},buildCLEAR:function buildCLEAR(){return"out_arr=[];";},buildFILTER:function buildFILTER(term){var ret="(function(out){ var out_arr = [];";ret+="var $filter = ctx.filter("+this.handle_nameargs(term.filter)+");\n",ret+=this.walk(term.chunks).replace(/^/gm,' ');ret+="\n out.push($filter(out_arr.join('')));";return ret+"\n})(out_arr)";},handle_nameargs:function Template$Interpreter$handle_nameargs(term){var str;if(term.names.length==1){if(term.names[0].type=='IDENT'||term.names[0].type=='FILENAME')
+str=Template.escapeString(term.names[0].literal);else if(term.names[0].type=='LITERAL')
+str=term.names[0].literal;else if(term.names[0].type=='interpret')
+str=this.$get_term(term.names[0].term);else if(term.names[0].type=='QUOTED'){str=this.$get_term(term.names[0]);}}
+if(str===undefined)
+throw new Error("handle "+Template.escapeString(term.names));if(term.args.length>1||term.args[0].length){str+=", "+this.make_namearg_dict(term.args);}
+return str;},make_namearg_dict:function Template$Interpreter$make_namearg_dict(args){var named=args.shift();var ret="";if(named.length){if(named.length%2)
+throw new Error("Named args off odd length");var a=[];while(named.length){var arg=[named.shift(),named.shift()];var name,value;if(arg[0].type=='IDENT')
+name=Template.escapeString(arg[0].literal);else
+throw new Error("handle");if(arg[1].type=='LITERAL'||arg[1].type=='NUMBER')
+value=arg[1].literal;else if(arg[1].type=='IDENT'||arg[1].type=='function_call')
+value=this.$get_term(arg[1]);else
+throw new Error("handle "+arg[1].toSource());a.push('['+name+', '+value+']');}
+ret='['+a.join(', ')+']';}
+for(var i in args){if(ret)ret+=", ";ret+=this.$get_term(args[i]);}
+return ret;},handle_function_args:function Template$Interpreter$prototype$handle_function_args(args){var named=args.shift();var argsOut=[];var out=''
+for(var i in args){argsOut.push(this.$get_term(args[i]));}
+if(argsOut.length)
+out+=argsOut.join(', ');return'['+out+']';},handle_ident_segments:function Template$Interpreter$prototype$handle_ident_segments(segs){var stash='ctx.stash';var var_name=[];for(var i in segs){var seg=segs[i];if(seg.type=='IDENT'){var_name.push(Template.escapeString(seg.literal));}
+else if(seg.type=='interpret'){if(seg.term.type=='LITERAL'){var_name.push(seg.term.literal);}else{var_name.push(this.$get_term(seg.term));}
+continue;}
+else if(seg.type=='function_call'){if(seg.args[0]instanceof Array==false)
+throw new Error('args[0] is not an array!');var funcName;if(seg.func.type=='IDENT')
+var_name.push(Template.escapeString(seg.func.literal));else if(seg.func.type=='interpret'){var_name.push(this.$get_term(seg.func));}
+else
+throw new Error('Unknown function type name '+seg.func.type+'\n'+seg.toSource());stash='ctx.dot_op('+stash+', ['+var_name+'], { args: '+this.handle_function_args(seg.args)+' } )';var_name=[];}
+else if(seg.type=='LITERAL'||seg.type=='NUMBER'){var_name.push(seg.literal);}
+else if(seg.type=='ident'){return this.handle_ident_segments(seg.segments);}
+else
+throw new Error('Unknown segment type in ident clause: '+seg.type+'\n'+seg.toSource());}
+if(var_name.length==0)
+return stash;return[stash,'['+var_name+']'];},math_op:function(expr){var ret='( ';if(expr.lhs.type!='NUMBER')
+ret+='Number( '+this.$get_term(expr.lhs)+')';else
+ret+=this.$get_term(expr.lhs);var type=expr.type=='DIV'?'/':expr.type;ret+=' '+type+' ';if(expr.rhs.type!='NUMBER')
+ret+='parseInt( '+this.$get_term(expr.rhs)+' )';else
+ret+=this.$get_term(expr.rhs);ret+=')';if(expr.type=='DIV')
+return'parseInt'+ret;else
+return ret;}};var log=[];if(exports){exports.render=function(template,stash){var tt=new Template();return tt.process(template,stash);}}window.WebIDLParser=(function(){var result={killComments:function(str){return str.replace(/\/\/.*$/gm,'').replace(/\/\*[\s\S]*?\*\//g,'');},parse:function(input,start){input=this.killComments(input);if(!start)start='definitions';var funcs={};var pos=0;var rightmostMatchFailuresPos=0;var rightmostMatchFailuresExpected=[];var cache={};function quoteString(s){return'"'+s.replace(/\\/g,'\\\\').replace(/"/g,'\\"').replace(/\r/g,'\\r').replace(/\u2028/g,'\\u2028').replace(/\u2029/g,'\\u2029').replace(/\n/g,'\\n')
++'"';}
+function arrayContains(array,value){var length=array.length;for(var i=0;i<length;i++){if(array[i]===value){return true;}}
+return false;}
+function matchFailed(failure){if(pos<rightmostMatchFailuresPos){return;}
+if(pos>rightmostMatchFailuresPos){rightmostMatchFailuresPos=pos;rightmostMatchFailuresExpected=[];}
+if(!arrayContains(rightmostMatchFailuresExpected,failure)){rightmostMatchFailuresExpected.push(failure);}}
+var parse_s=funcs['s']=function parse_s(context){var cacheKey="s"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos).match(/^[ \r\n ]/)!==null){var result1=input.charAt(pos);pos++;}else{var result1=null;if(context.reportMatchFailures){matchFailed("[ \\r\\n ]");}}
+if(result1!==null){var result0=[];while(result1!==null){result0.push(result1);if(input.substr(pos).match(/^[ \r\n ]/)!==null){var result1=input.charAt(pos);pos++;}else{var result1=null;if(context.reportMatchFailures){matchFailed("[ \\r\\n ]");}}}}else{var result0=null;}
+cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_w=funcs['w']=function parse_w(context){var cacheKey="w"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result1=parse_s(context);var result0=result1!==null?result1:'';cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_identifier=funcs['identifier']=function parse_identifier(context){var cacheKey="identifier"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos).match(/^[A-Z_a-z]/)!==null){var result2=input.charAt(pos);pos++;}else{var result2=null;if(context.reportMatchFailures){matchFailed("[A-Z_a-z]");}}
+if(result2!==null){var result3=[];if(input.substr(pos).match(/^[0-9A-Z_a-z]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9A-Z_a-z]");}}
+while(result4!==null){result3.push(result4);if(input.substr(pos).match(/^[0-9A-Z_a-z]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9A-Z_a-z]");}}}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(nmstart,nmchars){return nmstart+nmchars.join("");})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_octal=funcs['octal']=function parse_octal(context){var cacheKey="octal"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)==="0"){var result2="0";pos+=1;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("0"));}}
+if(result2!==null){var result3=[];if(input.substr(pos).match(/^[0-7]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-7]");}}
+while(result4!==null){result3.push(result4);if(input.substr(pos).match(/^[0-7]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-7]");}}}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(value){return"0"+value.join("");})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_hex=funcs['hex']=function parse_hex(context){var cacheKey="hex"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)==="0"){var result2="0";pos+=1;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("0"));}}
+if(result2!==null){if(input.substr(pos).match(/^[Xx]/)!==null){var result3=input.charAt(pos);pos++;}else{var result3=null;if(context.reportMatchFailures){matchFailed("[Xx]");}}
+if(result3!==null){if(input.substr(pos).match(/^[0-9A-Fa-f]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[0-9A-Fa-f]");}}
+if(result5!==null){var result4=[];while(result5!==null){result4.push(result5);if(input.substr(pos).match(/^[0-9A-Fa-f]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[0-9A-Fa-f]");}}}}else{var result4=null;}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(x,value){return"0"+x+value.join("");})(result1[1],result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_decimal=funcs['decimal']=function parse_decimal(context){var cacheKey="decimal"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos).match(/^[0-9]/)!==null){var result2=input.charAt(pos);pos++;}else{var result2=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+if(result2!==null){var result3=[];if(input.substr(pos).match(/^[0-9]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+while(result4!==null){result3.push(result4);if(input.substr(pos).match(/^[0-9]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(numStart,numRest){return numStart+numRest.join("");})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_integer=funcs['integer']=function parse_integer(context){var cacheKey="integer"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)==="-"){var result7="-";pos+=1;}else{var result7=null;if(context.reportMatchFailures){matchFailed(quoteString("-"));}}
+var result2=result7!==null?result7:'';if(result2!==null){var result6=parse_hex(context);if(result6!==null){var result3=result6;}else{var result5=parse_octal(context);if(result5!==null){var result3=result5;}else{var result4=parse_decimal(context);if(result4!==null){var result3=result4;}else{var result3=null;;};};}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(neg,num){return neg+num;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_floatEe=funcs['floatEe']=function parse_floatEe(context){var cacheKey="floatEe"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos).match(/^[Ee]/)!==null){var result2=input.charAt(pos);pos++;}else{var result2=null;if(context.reportMatchFailures){matchFailed("[Ee]");}}
+if(result2!==null){if(input.substr(pos).match(/^[+\-]/)!==null){var result6=input.charAt(pos);pos++;}else{var result6=null;if(context.reportMatchFailures){matchFailed("[+\\-]");}}
+var result3=result6!==null?result6:'';if(result3!==null){if(input.substr(pos).match(/^[0-9]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+if(result5!==null){var result4=[];while(result5!==null){result4.push(result5);if(input.substr(pos).match(/^[0-9]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}}else{var result4=null;}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(e,sign,exp){return e+sign+exp.join("");})(result1[0],result1[1],result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_expFloat=funcs['expFloat']=function parse_expFloat(context){var cacheKey="expFloat"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos).match(/^[0-9]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+if(result4!==null){var result2=[];while(result4!==null){result2.push(result4);if(input.substr(pos).match(/^[0-9]/)!==null){var result4=input.charAt(pos);pos++;}else{var result4=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}}else{var result2=null;}
+if(result2!==null){var result3=parse_floatEe(context);if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(num,fee){return num.join("")+fee;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_leadFloat=funcs['leadFloat']=function parse_leadFloat(context){var cacheKey="leadFloat"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos).match(/^[0-9]/)!==null){var result8=input.charAt(pos);pos++;}else{var result8=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+if(result8!==null){var result2=[];while(result8!==null){result2.push(result8);if(input.substr(pos).match(/^[0-9]/)!==null){var result8=input.charAt(pos);pos++;}else{var result8=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}}else{var result2=null;}
+if(result2!==null){if(input.substr(pos,1)==="."){var result3=".";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("."));}}
+if(result3!==null){var result4=[];if(input.substr(pos).match(/^[0-9]/)!==null){var result7=input.charAt(pos);pos++;}else{var result7=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+while(result7!==null){result4.push(result7);if(input.substr(pos).match(/^[0-9]/)!==null){var result7=input.charAt(pos);pos++;}else{var result7=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}
+if(result4!==null){var result6=parse_floatEe(context);var result5=result6!==null?result6:'';if(result5!==null){var result1=[result2,result3,result4,result5];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(num,dec,fee){return num.join("")+"."+dec.join("")+fee;})(result1[0],result1[2],result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_dotFloat=funcs['dotFloat']=function parse_dotFloat(context){var cacheKey="dotFloat"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=[];if(input.substr(pos).match(/^[0-9]/)!==null){var result8=input.charAt(pos);pos++;}else{var result8=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+while(result8!==null){result2.push(result8);if(input.substr(pos).match(/^[0-9]/)!==null){var result8=input.charAt(pos);pos++;}else{var result8=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}
+if(result2!==null){if(input.substr(pos,1)==="."){var result3=".";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("."));}}
+if(result3!==null){if(input.substr(pos).match(/^[0-9]/)!==null){var result7=input.charAt(pos);pos++;}else{var result7=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}
+if(result7!==null){var result4=[];while(result7!==null){result4.push(result7);if(input.substr(pos).match(/^[0-9]/)!==null){var result7=input.charAt(pos);pos++;}else{var result7=null;if(context.reportMatchFailures){matchFailed("[0-9]");}}}}else{var result4=null;}
+if(result4!==null){var result6=parse_floatEe(context);var result5=result6!==null?result6:'';if(result5!==null){var result1=[result2,result3,result4,result5];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(num,dec,fee){return num.join("")+"."+dec.join("")+fee;})(result1[0],result1[2],result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_float=funcs['float']=function parse_float(context){var cacheKey="float"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)==="-"){var result7="-";pos+=1;}else{var result7=null;if(context.reportMatchFailures){matchFailed(quoteString("-"));}}
+var result2=result7!==null?result7:'';if(result2!==null){var result6=parse_leadFloat(context);if(result6!==null){var result3=result6;}else{var result5=parse_dotFloat(context);if(result5!==null){var result3=result5;}else{var result4=parse_expFloat(context);if(result4!==null){var result3=result4;}else{var result3=null;;};};}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(neg,num){return neg+num;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_string=funcs['string']=function parse_string(context){var cacheKey="string"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)==="\""){var result2="\"";pos+=1;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("\""));}}
+if(result2!==null){var result3=[];if(input.substr(pos).match(/^[^""]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[^\"\"]");}}
+while(result5!==null){result3.push(result5);if(input.substr(pos).match(/^[^""]/)!==null){var result5=input.charAt(pos);pos++;}else{var result5=null;if(context.reportMatchFailures){matchFailed("[^\"\"]");}}}
+if(result3!==null){if(input.substr(pos,1)==="\""){var result4="\"";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("\""));}}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(str){return str.join("");})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_other=funcs['other']=function parse_other(context){var cacheKey="other"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos).match(/^[^ \n\r 0-9A-Z_a-z]/)!==null){var result2=input.charAt(pos);pos++;}else{var result2=null;if(context.reportMatchFailures){matchFailed("[^ \\n\\r 0-9A-Z_a-z]");}}
+if(result2!==null){var result1=[];while(result2!==null){result1.push(result2);if(input.substr(pos).match(/^[^ \n\r 0-9A-Z_a-z]/)!==null){var result2=input.charAt(pos);pos++;}else{var result2=null;if(context.reportMatchFailures){matchFailed("[^ \\n\\r 0-9A-Z_a-z]");}}}}else{var result1=null;}
+var result0=result1!==null?(function(other){return other.join("");})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_type=funcs['type']=function parse_type(context){var cacheKey="type"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_TypeDesc(context);if(result2!==null){var result3=parse_Nullable(context);if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(type,nullable){if(!type.sequence)type.sequence=false;type.nullable=nullable;return type;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_TypeDesc=funcs['TypeDesc']=function parse_TypeDesc(context){var cacheKey="TypeDesc"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result4=parse_Sequence(context);if(result4!==null){var result1=result4;}else{var result3=parse_ArrayType(context);if(result3!==null){var result1=result3;}else{var result2=parse_SimpleType(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};}
+var result0=result1!==null?(function(type){return type;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Sequence=funcs['Sequence']=function parse_Sequence(context){var cacheKey="Sequence"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,9)==="sequence<"){var result2="sequence<";pos+=9;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("sequence<"));}}
+if(result2!==null){var result3=parse_type(context);if(result3!==null){if(input.substr(pos,1)===">"){var result4=">";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString(">"));}}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(type){return{sequence:true,array:false,idlType:type};})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ArrayType=funcs['ArrayType']=function parse_ArrayType(context){var cacheKey="ArrayType"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_SimpleType(context);if(result2!==null){if(input.substr(pos,2)==="[]"){var result3="[]";pos+=2;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("[]"));}}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(type){type.array=true;return type;})(result1[0]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_SimpleType=funcs['SimpleType']=function parse_SimpleType(context){var cacheKey="SimpleType"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos,3)==="any"){var result10="any";pos+=3;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString("any"));}}
+if(result10!==null){var result1=result10;}else{if(input.substr(pos,6)==="object"){var result9="object";pos+=6;}else{var result9=null;if(context.reportMatchFailures){matchFailed(quoteString("object"));}}
+if(result9!==null){var result1=result9;}else{if(input.substr(pos,7)==="boolean"){var result8="boolean";pos+=7;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("boolean"));}}
+if(result8!==null){var result1=result8;}else{if(input.substr(pos,5)==="octet"){var result7="octet";pos+=5;}else{var result7=null;if(context.reportMatchFailures){matchFailed(quoteString("octet"));}}
+if(result7!==null){var result1=result7;}else{if(input.substr(pos,5)==="float"){var result6="float";pos+=5;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("float"));}}
+if(result6!==null){var result1=result6;}else{if(input.substr(pos,6)==="double"){var result5="double";pos+=6;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString("double"));}}
+if(result5!==null){var result1=result5;}else{if(input.substr(pos,9)==="DOMString"){var result4="DOMString";pos+=9;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("DOMString"));}}
+if(result4!==null){var result1=result4;}else{var result3=parse_UnsignedIntegerType(context);if(result3!==null){var result1=result3;}else{var result2=parse_ScopedName(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};};};};};};};}
+var result0=result1!==null?(function(type){return{sequence:false,array:false,idlType:type};})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_UnsignedIntegerType=funcs['UnsignedIntegerType']=function parse_UnsignedIntegerType(context){var cacheKey="UnsignedIntegerType"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,8)==="unsigned"){var result11="unsigned";pos+=8;}else{var result11=null;if(context.reportMatchFailures){matchFailed(quoteString("unsigned"));}}
+var result2=result11!==null?result11:'';if(result2!==null){var result3=parse_s(context);if(result3!==null){var savedPos1=pos;if(input.substr(pos,4)==="long"){var result8="long";pos+=4;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("long"));}}
+if(result8!==null){var result9=parse_s(context);if(result9!==null){if(input.substr(pos,4)==="long"){var result10="long";pos+=4;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString("long"));}}
+if(result10!==null){var result7=[result8,result9,result10];}else{var result7=null;pos=savedPos1;}}else{var result7=null;pos=savedPos1;}}else{var result7=null;pos=savedPos1;}
+if(result7!==null){var result4=result7;}else{if(input.substr(pos,4)==="long"){var result6="long";pos+=4;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("long"));}}
+if(result6!==null){var result4=result6;}else{if(input.substr(pos,5)==="short"){var result5="short";pos+=5;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString("short"));}}
+if(result5!==null){var result4=result5;}else{var result4=null;;};};}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(uns,kind){return(uns?"unsigned ":"")+(kind.join?kind.join(""):kind);})(result1[0],result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ScopedNameList=funcs['ScopedNameList']=function parse_ScopedNameList(context){var cacheKey="ScopedNameList"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_ScopedName(context);if(result2!==null){var result3=[];var result4=parse_ScopedNameListRest(context);while(result4!==null){result3.push(result4);var result4=parse_ScopedNameListRest(context);}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(first,others){var ret=[first];for(var i=0,n=others.length;i<n;i++){ret.push(others[i]);}
+return ret;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ScopedNameListRest=funcs['ScopedNameListRest']=function parse_ScopedNameListRest(context){var cacheKey="ScopedNameListRest"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){if(input.substr(pos,1)===","){var result3=",";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString(","));}}
+if(result3!==null){var result4=parse_w(context);if(result4!==null){var result5=parse_ScopedName(context);if(result5!==null){var result1=[result2,result3,result4,result5];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(rest){return rest;})(result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ScopedName=funcs['ScopedName']=function parse_ScopedName(context){var cacheKey="ScopedName"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result3=parse_AbsoluteScopedName(context);if(result3!==null){var result1=result3;}else{var result2=parse_RelativeScopedName(context);if(result2!==null){var result1=result2;}else{var result1=null;;};}
+var result0=result1!==null?(function(name){return name;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_AbsoluteScopedName=funcs['AbsoluteScopedName']=function parse_AbsoluteScopedName(context){var cacheKey="AbsoluteScopedName"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,2)==="::"){var result2="::";pos+=2;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("::"));}}
+if(result2!==null){var result3=parse_RelativeScopedName(context);if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(rel){return"::"+rel;})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_RelativeScopedName=funcs['RelativeScopedName']=function parse_RelativeScopedName(context){var cacheKey="RelativeScopedName"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_identifier(context);if(result2!==null){var result3=[];var result4=parse_ScopedNameRest(context);while(result4!==null){result3.push(result4);var result4=parse_ScopedNameRest(context);}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(name,rest){return name+rest.join("");})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ScopedNameRest=funcs['ScopedNameRest']=function parse_ScopedNameRest(context){var cacheKey="ScopedNameRest"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,2)==="::"){var result2="::";pos+=2;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("::"));}}
+if(result2!==null){var result3=parse_identifier(context);if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(name){return name.join("");})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_BooleanLiteral=funcs['BooleanLiteral']=function parse_BooleanLiteral(context){var cacheKey="BooleanLiteral"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos,4)==="true"){var result3="true";pos+=4;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("true"));}}
+if(result3!==null){var result1=result3;}else{if(input.substr(pos,5)==="false"){var result2="false";pos+=5;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("false"));}}
+if(result2!==null){var result1=result2;}else{var result1=null;;};}
+var result0=result1!==null?(function(value){return value;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Nullable=funcs['Nullable']=function parse_Nullable(context){var cacheKey="Nullable"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos,1)==="?"){var result2="?";pos+=1;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("?"));}}
+var result1=result2!==null?result2:'';var result0=result1!==null?(function(nullable){return nullable?true:false;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ReturnType=funcs['ReturnType']=function parse_ReturnType(context){var cacheKey="ReturnType"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+if(input.substr(pos,4)==="void"){var result3="void";pos+=4;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("void"));}}
+if(result3!==null){var result1=result3;}else{var result2=parse_type(context);if(result2!==null){var result1=result2;}else{var result1=null;;};}
+var result0=result1!==null?(function(ret){return ret;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_definitions=funcs['definitions']=function parse_definitions(context){var cacheKey="definitions"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){var result3=[];var result4=parse_definition(context);while(result4!==null){result3.push(result4);var result4=parse_definition(context);}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(defs){return defs;})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_definition=funcs['definition']=function parse_definition(context){var cacheKey="definition"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result6=parse_module(context);if(result6!==null){var result1=result6;}else{var result5=parse_interface(context);if(result5!==null){var result1=result5;}else{var result4=parse_typedef(context);if(result4!==null){var result1=result4;}else{var result3=parse_exception(context);if(result3!==null){var result1=result3;}else{var result2=parse_implements(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};};};}
+var result0=result1!==null?(function(def){return def;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_module=funcs['module']=function parse_module(context){var cacheKey="module"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result17=parse_extendedAttributeList(context);var result2=result17!==null?result17:'';if(result2!==null){var result16=parse_s(context);var result3=result16!==null?result16:'';if(result3!==null){if(input.substr(pos,6)==="module"){var result4="module";pos+=6;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("module"));}}
+if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)==="{"){var result8="{";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("{"));}}
+if(result8!==null){var result9=parse_w(context);if(result9!==null){var result10=parse_definitions(context);if(result10!==null){var result11=parse_w(context);if(result11!==null){if(input.substr(pos,1)==="}"){var result12="}";pos+=1;}else{var result12=null;if(context.reportMatchFailures){matchFailed(quoteString("}"));}}
+if(result12!==null){var result13=parse_w(context);if(result13!==null){if(input.substr(pos,1)===";"){var result14=";";pos+=1;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result14!==null){var result15=parse_w(context);if(result15!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,name,defs){return{type:"module",name:name,definitions:defs,extAttrs:extAttrs};})(result1[0],result1[4],result1[8]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_implements=funcs['implements']=function parse_implements(context){var cacheKey="implements"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result13=parse_extendedAttributeList(context);var result2=result13!==null?result13:'';if(result2!==null){var result12=parse_s(context);var result3=result12!==null?result12:'';if(result3!==null){var result4=parse_ScopedName(context);if(result4!==null){var result5=parse_s(context);if(result5!==null){if(input.substr(pos,10)==="implements"){var result6="implements";pos+=10;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("implements"));}}
+if(result6!==null){var result7=parse_s(context);if(result7!==null){var result8=parse_ScopedName(context);if(result8!==null){var result9=parse_w(context);if(result9!==null){if(input.substr(pos,1)===";"){var result10=";";pos+=1;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result10!==null){var result11=parse_w(context);if(result11!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,target,impl){return{type:'implements',target:target,'implements':impl,extAttrs:extAttrs};})(result1[0],result1[2],result1[6]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_interface=funcs['interface']=function parse_interface(context){var cacheKey="interface"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result21=parse_extendedAttributeList(context);var result2=result21!==null?result21:'';if(result2!==null){var result20=parse_s(context);var result3=result20!==null?result20:'';if(result3!==null){if(input.substr(pos,9)==="interface"){var result4="interface";pos+=9;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("interface"));}}
+if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){var result19=parse_ifInheritance(context);var result8=result19!==null?result19:'';if(result8!==null){var result9=parse_w(context);if(result9!==null){if(input.substr(pos,1)==="{"){var result10="{";pos+=1;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString("{"));}}
+if(result10!==null){var result11=parse_w(context);if(result11!==null){var result12=[];var result18=parse_ifMember(context);while(result18!==null){result12.push(result18);var result18=parse_ifMember(context);}
+if(result12!==null){var result13=parse_w(context);if(result13!==null){if(input.substr(pos,1)==="}"){var result14="}";pos+=1;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString("}"));}}
+if(result14!==null){var result15=parse_w(context);if(result15!==null){if(input.substr(pos,1)===";"){var result16=";";pos+=1;}else{var result16=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result16!==null){var result17=parse_w(context);if(result17!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15,result16,result17];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,name,herit,mem){return{type:"interface",name:name,inheritance:herit,members:mem,extAttrs:extAttrs};})(result1[0],result1[4],result1[6],result1[10]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ifInheritance=funcs['ifInheritance']=function parse_ifInheritance(context){var cacheKey="ifInheritance"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,1)===":"){var result2=":";pos+=1;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString(":"));}}
+if(result2!==null){var result3=parse_w(context);if(result3!==null){var result4=parse_ScopedNameList(context);if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(herit){return herit;})(result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ifMember=funcs['ifMember']=function parse_ifMember(context){var cacheKey="ifMember"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result3=parse_const(context);if(result3!==null){var result1=result3;}else{var result2=parse_attrOrOp(context);if(result2!==null){var result1=result2;}else{var result1=null;;};}
+var result0=result1!==null?(function(mem){return mem;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_const=funcs['const']=function parse_const(context){var cacheKey="const"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result17=parse_extendedAttributeList(context);var result2=result17!==null?result17:'';if(result2!==null){var result16=parse_s(context);var result3=result16!==null?result16:'';if(result3!==null){if(input.substr(pos,5)==="const"){var result4="const";pos+=5;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("const"));}}
+if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_type(context);if(result6!==null){var result7=parse_s(context);if(result7!==null){var result8=parse_identifier(context);if(result8!==null){var result9=parse_w(context);if(result9!==null){if(input.substr(pos,1)==="="){var result10="=";pos+=1;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString("="));}}
+if(result10!==null){var result11=parse_w(context);if(result11!==null){var result12=parse_constExpr(context);if(result12!==null){var result13=parse_w(context);if(result13!==null){if(input.substr(pos,1)===";"){var result14=";";pos+=1;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result14!==null){var result15=parse_w(context);if(result15!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,type,name,value){return{type:"const",extAttrs:extAttrs,idlType:type,name:name,value:value};})(result1[0],result1[4],result1[6],result1[10]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_constExpr=funcs['constExpr']=function parse_constExpr(context){var cacheKey="constExpr"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result4=parse_BooleanLiteral(context);if(result4!==null){var result1=result4;}else{var result3=parse_float(context);if(result3!==null){var result1=result3;}else{var result2=parse_integer(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};}
+var result0=result1!==null?(function(value){return value;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_attrOrOp=funcs['attrOrOp']=function parse_attrOrOp(context){var cacheKey="attrOrOp"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result4=parse_Stringifier(context);if(result4!==null){var result1=result4;}else{var result3=parse_Attribute(context);if(result3!==null){var result1=result3;}else{var result2=parse_Operation(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};}
+var result0=result1!==null?(function(ao){return ao;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Stringifier=funcs['Stringifier']=function parse_Stringifier(context){var cacheKey="Stringifier"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,11)==="stringifier"){var result2="stringifier";pos+=11;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("stringifier"));}}
+if(result2!==null){var result3=parse_w(context);if(result3!==null){var result7=parse_Attribute(context);if(result7!==null){var result4=result7;}else{var result6=parse_OperationRest(context);if(result6!==null){var result4=result6;}else{if(input.substr(pos,1)===";"){var result5=";";pos+=1;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result5!==null){var result4=result5;}else{var result4=null;;};};}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(rest){if(rest===";")return{type:"stringifier"};else{rest.stringifier=true;return rest;}})(result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Attribute=funcs['Attribute']=function parse_Attribute(context){var cacheKey="Attribute"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result22=parse_extendedAttributeList(context);var result2=result22!==null?result22:'';if(result2!==null){var result3=parse_w(context);if(result3!==null){var savedPos1=pos;if(input.substr(pos,8)==="readonly"){var result20="readonly";pos+=8;}else{var result20=null;if(context.reportMatchFailures){matchFailed(quoteString("readonly"));}}
+if(result20!==null){var result21=parse_s(context);if(result21!==null){var result19=[result20,result21];}else{var result19=null;pos=savedPos1;}}else{var result19=null;pos=savedPos1;}
+var result4=result19!==null?result19:'';if(result4!==null){if(input.substr(pos,9)==="attribute"){var result5="attribute";pos+=9;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString("attribute"));}}
+if(result5!==null){var result6=parse_s(context);if(result6!==null){var result7=parse_type(context);if(result7!==null){var result8=parse_s(context);if(result8!==null){var result9=parse_identifier(context);if(result9!==null){var result10=parse_w(context);if(result10!==null){var result18=parse_GetRaises(context);var result11=result18!==null?result18:'';if(result11!==null){var result12=parse_w(context);if(result12!==null){var result17=parse_SetRaises(context);var result13=result17!==null?result17:'';if(result13!==null){var result14=parse_w(context);if(result14!==null){if(input.substr(pos,1)===";"){var result15=";";pos+=1;}else{var result15=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result15!==null){var result16=parse_w(context);if(result16!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15,result16];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,ro,type,name,gr,sr){return{type:"attribute",extAttrs:extAttrs,idlType:type,name:name,readonly:(ro?true:false),getraises:gr,setraises:sr};})(result1[0],result1[2],result1[5],result1[7],result1[9],result1[11]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_GetRaises=funcs['GetRaises']=function parse_GetRaises(context){var cacheKey="GetRaises"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,9)==="getraises"){var result2="getraises";pos+=9;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("getraises"));}}
+if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,1)==="("){var result4="(";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result4!==null){var result5=parse_ScopedNameList(context);if(result5!==null){if(input.substr(pos,1)===")"){var result6=")";pos+=1;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result6!==null){var result1=[result2,result3,result4,result5,result6];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(list){return list;})(result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_SetRaises=funcs['SetRaises']=function parse_SetRaises(context){var cacheKey="SetRaises"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,9)==="setraises"){var result2="setraises";pos+=9;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("setraises"));}}
+if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,1)==="("){var result4="(";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result4!==null){var result5=parse_ScopedNameList(context);if(result5!==null){if(input.substr(pos,1)===")"){var result6=")";pos+=1;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result6!==null){var result1=[result2,result3,result4,result5,result6];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(list){return list;})(result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Operation=funcs['Operation']=function parse_Operation(context){var cacheKey="Operation"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result7=parse_extendedAttributeList(context);var result2=result7!==null?result7:'';if(result2!==null){var result3=parse_w(context);if(result3!==null){var result4=parse_OmittableSpecials(context);if(result4!==null){var result5=parse_w(context);if(result5!==null){var result6=parse_OperationRest(context);if(result6!==null){var result1=[result2,result3,result4,result5,result6];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,oms,rest){for(var k in oms)rest[k]=oms[k];if(extAttrs)rest.extAttrs=extAttrs;return rest;})(result1[0],result1[2],result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_OmittableSpecials=funcs['OmittableSpecials']=function parse_OmittableSpecials(context){var cacheKey="OmittableSpecials"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,9)==="omittable"){var result6="omittable";pos+=9;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("omittable"));}}
+var result2=result6!==null?result6:'';if(result2!==null){var result3=parse_w(context);if(result3!==null){var result4=[];var result5=parse_Specials(context);while(result5!==null){result4.push(result5);var result5=parse_Specials(context);}
+if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(om,spe){var ret={};for(var i=0,n=spe.length;i<n;i++){ret[spe[i]]=true;}
+ret.omittable=(om?true:false);return ret;})(result1[0],result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Specials=funcs['Specials']=function parse_Specials(context){var cacheKey="Specials"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){if(input.substr(pos,6)==="getter"){var result9="getter";pos+=6;}else{var result9=null;if(context.reportMatchFailures){matchFailed(quoteString("getter"));}}
+if(result9!==null){var result3=result9;}else{if(input.substr(pos,6)==="setter"){var result8="setter";pos+=6;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("setter"));}}
+if(result8!==null){var result3=result8;}else{if(input.substr(pos,7)==="creator"){var result7="creator";pos+=7;}else{var result7=null;if(context.reportMatchFailures){matchFailed(quoteString("creator"));}}
+if(result7!==null){var result3=result7;}else{if(input.substr(pos,7)==="deleter"){var result6="deleter";pos+=7;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("deleter"));}}
+if(result6!==null){var result3=result6;}else{if(input.substr(pos,6)==="caller"){var result5="caller";pos+=6;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString("caller"));}}
+if(result5!==null){var result3=result5;}else{var result3=null;;};};};};}
+if(result3!==null){var result4=parse_w(context);if(result4!==null){var result1=[result2,result3,result4];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(spe){return spe;})(result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_OperationRest=funcs['OperationRest']=function parse_OperationRest(context){var cacheKey="OperationRest"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_ReturnType(context);if(result2!==null){var result3=parse_s(context);if(result3!==null){var result18=parse_identifier(context);var result4=result18!==null?result18:'';if(result4!==null){var result5=parse_w(context);if(result5!==null){if(input.substr(pos,1)==="("){var result6="(";pos+=1;}else{var result6=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result6!==null){var result7=parse_w(context);if(result7!==null){var result17=parse_Arguments(context);var result8=result17!==null?result17:'';if(result8!==null){var result9=parse_w(context);if(result9!==null){if(input.substr(pos,1)===")"){var result10=")";pos+=1;}else{var result10=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result10!==null){var result11=parse_w(context);if(result11!==null){var result16=parse_Raises(context);var result12=result16!==null?result16:'';if(result12!==null){var result13=parse_w(context);if(result13!==null){if(input.substr(pos,1)===";"){var result14=";";pos+=1;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result14!==null){var result15=parse_w(context);if(result15!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(ret,name,args,exc){return{type:"operation",idlType:ret,name:name,arguments:(args?args:[]),raises:exc};})(result1[0],result1[2],result1[6],result1[10]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Arguments=funcs['Arguments']=function parse_Arguments(context){var cacheKey="Arguments"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_Argument(context);if(result2!==null){var result3=[];var result4=parse_ArgumentsRest(context);while(result4!==null){result3.push(result4);var result4=parse_ArgumentsRest(context);}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(first,others){var ret=[first];for(var i=0,n=others.length;i<n;i++){ret.push(others[i]);}
+return ret;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ArgumentsRest=funcs['ArgumentsRest']=function parse_ArgumentsRest(context){var cacheKey="ArgumentsRest"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){if(input.substr(pos,1)===","){var result3=",";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString(","));}}
+if(result3!==null){var result4=parse_w(context);if(result4!==null){var result5=parse_Argument(context);if(result5!==null){var result1=[result2,result3,result4,result5];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(rest){return rest;})(result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Argument=funcs['Argument']=function parse_Argument(context){var cacheKey="Argument"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result15=parse_extendedAttributeList(context);var result2=result15!==null?result15:'';if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,2)==="in"){var result14="in";pos+=2;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString("in"));}}
+var result4=result14!==null?result14:'';if(result4!==null){var result5=parse_w(context);if(result5!==null){if(input.substr(pos,8)==="optional"){var result13="optional";pos+=8;}else{var result13=null;if(context.reportMatchFailures){matchFailed(quoteString("optional"));}}
+var result6=result13!==null?result13:'';if(result6!==null){var result7=parse_w(context);if(result7!==null){var result8=parse_type(context);if(result8!==null){if(input.substr(pos,3)==="..."){var result12="...";pos+=3;}else{var result12=null;if(context.reportMatchFailures){matchFailed(quoteString("..."));}}
+var result9=result12!==null?result12:'';if(result9!==null){var result10=parse_s(context);if(result10!==null){var result11=parse_identifier(context);if(result11!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,opt,type,ell,name){return{name:name,type:type,variadic:(ell?true:false),optional:(opt?true:false),extAttrs:extAttrs};})(result1[0],result1[4],result1[6],result1[7],result1[9]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_Raises=funcs['Raises']=function parse_Raises(context){var cacheKey="Raises"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,6)==="raises"){var result2="raises";pos+=6;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("raises"));}}
+if(result2!==null){var result3=parse_s(context);if(result3!==null){if(input.substr(pos,1)==="("){var result4="(";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result4!==null){var result5=parse_w(context);if(result5!==null){var result6=parse_ScopedNameList(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)===")"){var result8=")";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result8!==null){var result1=[result2,result3,result4,result5,result6,result7,result8];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(list){return list;})(result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_typedef=funcs['typedef']=function parse_typedef(context){var cacheKey="typedef"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;if(input.substr(pos,7)==="typedef"){var result2="typedef";pos+=7;}else{var result2=null;if(context.reportMatchFailures){matchFailed(quoteString("typedef"));}}
+if(result2!==null){var result3=parse_s(context);if(result3!==null){var result4=parse_type(context);if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)===";"){var result8=";";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result8!==null){var result9=parse_w(context);if(result9!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(type,name){return{type:'typedef',name:name,idlType:type};})(result1[2],result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_exception=funcs['exception']=function parse_exception(context){var cacheKey="exception"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result17=parse_extendedAttributeList(context);var result2=result17!==null?result17:'';if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,9)==="exception"){var result4="exception";pos+=9;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("exception"));}}
+if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)==="{"){var result8="{";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("{"));}}
+if(result8!==null){var result9=parse_w(context);if(result9!==null){var result10=[];var result16=parse_exMember(context);while(result16!==null){result10.push(result16);var result16=parse_exMember(context);}
+if(result10!==null){var result11=parse_w(context);if(result11!==null){if(input.substr(pos,1)==="}"){var result12="}";pos+=1;}else{var result12=null;if(context.reportMatchFailures){matchFailed(quoteString("}"));}}
+if(result12!==null){var result13=parse_w(context);if(result13!==null){if(input.substr(pos,1)===";"){var result14=";";pos+=1;}else{var result14=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result14!==null){var result15=parse_w(context);if(result15!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12,result13,result14,result15];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,name,mem){return{type:'exception',name:name,members:mem,extAttrs:extAttrs};})(result1[0],result1[4],result1[8]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_exMember=funcs['exMember']=function parse_exMember(context){var cacheKey="exMember"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result3=parse_const(context);if(result3!==null){var result1=result3;}else{var result2=parse_field(context);if(result2!==null){var result1=result2;}else{var result1=null;;};}
+var result0=result1!==null?(function(mem){return mem;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_field=funcs['field']=function parse_field(context){var cacheKey="field"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result11=parse_extendedAttributeList(context);var result2=result11!==null?result11:'';if(result2!==null){var result10=parse_s(context);var result3=result10!==null?result10:'';if(result3!==null){var result4=parse_type(context);if(result4!==null){var result5=parse_s(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)===";"){var result8=";";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString(";"));}}
+if(result8!==null){var result9=parse_w(context);if(result9!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(extAttrs,type,name){return{type:"field",extAttrs:extAttrs,idlType:type,name:name};})(result1[0],result1[2],result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_extendedAttributeList=funcs['extendedAttributeList']=function parse_extendedAttributeList(context){var cacheKey="extendedAttributeList"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){if(input.substr(pos,1)==="["){var result3="[";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString("["));}}
+if(result3!==null){var result4=parse_ExtAttrs(context);if(result4!==null){if(input.substr(pos,1)==="]"){var result5="]";pos+=1;}else{var result5=null;if(context.reportMatchFailures){matchFailed(quoteString("]"));}}
+if(result5!==null){var result6=parse_w(context);if(result6!==null){var result1=[result2,result3,result4,result5,result6];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(ea){return ea;})(result1[2]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrs=funcs['ExtAttrs']=function parse_ExtAttrs(context){var cacheKey="ExtAttrs"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_ExtAttr(context);if(result2!==null){var result3=[];var result4=parse_ExtAttrsRest(context);while(result4!==null){result3.push(result4);var result4=parse_ExtAttrsRest(context);}
+if(result3!==null){var result1=[result2,result3];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(first,others){var ret=[first];for(var i=0,n=others.length;i<n;i++){ret.push(others[i]);}
+return ret;})(result1[0],result1[1]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrsRest=funcs['ExtAttrsRest']=function parse_ExtAttrsRest(context){var cacheKey="ExtAttrsRest"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_w(context);if(result2!==null){if(input.substr(pos,1)===","){var result3=",";pos+=1;}else{var result3=null;if(context.reportMatchFailures){matchFailed(quoteString(","));}}
+if(result3!==null){var result4=parse_w(context);if(result4!==null){var result5=parse_ExtAttr(context);if(result5!==null){var result1=[result2,result3,result4,result5];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(rest){return rest;})(result1[3]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttr=funcs['ExtAttr']=function parse_ExtAttr(context){var cacheKey="ExtAttr"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result5=parse_ExtAttrArgList(context);if(result5!==null){var result1=result5;}else{var result4=parse_ExtAttrNamedArgList(context);if(result4!==null){var result1=result4;}else{var result3=parse_ExtAttrNameValue(context);if(result3!==null){var result1=result3;}else{var result2=parse_ExtAttrNoArg(context);if(result2!==null){var result1=result2;}else{var result1=null;;};};};}
+var result0=result1!==null?(function(ea){return ea;})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrNoArg=funcs['ExtAttrNoArg']=function parse_ExtAttrNoArg(context){var cacheKey="ExtAttrNoArg"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var result1=parse_identifier(context);var result0=result1!==null?(function(name){return{name:name};})(result1):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrNameValue=funcs['ExtAttrNameValue']=function parse_ExtAttrNameValue(context){var cacheKey="ExtAttrNameValue"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_identifier(context);if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,1)==="="){var result4="=";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("="));}}
+if(result4!==null){var result5=parse_w(context);if(result5!==null){var result6=parse_ScopedName(context);if(result6!==null){var result1=[result2,result3,result4,result5,result6];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(name,value){return{name:name,value:value};})(result1[0],result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrNamedArgList=funcs['ExtAttrNamedArgList']=function parse_ExtAttrNamedArgList(context){var cacheKey="ExtAttrNamedArgList"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_identifier(context);if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,1)==="="){var result4="=";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("="));}}
+if(result4!==null){var result5=parse_w(context);if(result5!==null){var result6=parse_identifier(context);if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)==="("){var result8="(";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result8!==null){var result9=parse_w(context);if(result9!==null){var result13=parse_Arguments(context);var result10=result13!==null?result13:'';if(result10!==null){var result11=parse_w(context);if(result11!==null){if(input.substr(pos,1)===")"){var result12=")";pos+=1;}else{var result12=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result12!==null){var result1=[result2,result3,result4,result5,result6,result7,result8,result9,result10,result11,result12];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(name,value,args){return{name:name,value:value,arguments:args};})(result1[0],result1[4],result1[8]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+var parse_ExtAttrArgList=funcs['ExtAttrArgList']=function parse_ExtAttrArgList(context){var cacheKey="ExtAttrArgList"+'@'+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result;}
+var savedPos0=pos;var result2=parse_identifier(context);if(result2!==null){var result3=parse_w(context);if(result3!==null){if(input.substr(pos,1)==="("){var result4="(";pos+=1;}else{var result4=null;if(context.reportMatchFailures){matchFailed(quoteString("("));}}
+if(result4!==null){var result5=parse_w(context);if(result5!==null){var result9=parse_Arguments(context);var result6=result9!==null?result9:'';if(result6!==null){var result7=parse_w(context);if(result7!==null){if(input.substr(pos,1)===")"){var result8=")";pos+=1;}else{var result8=null;if(context.reportMatchFailures){matchFailed(quoteString(")"));}}
+if(result8!==null){var result1=[result2,result3,result4,result5,result6,result7,result8];}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}}else{var result1=null;pos=savedPos0;}
+var result0=result1!==null?(function(name,args){return{name:name,arguments:args};})(result1[0],result1[4]):null;cache[cacheKey]={nextPos:pos,result:result0};return result0;}
+function buildErrorMessage(){function buildExpected(failuresExpected){switch(failuresExpected.length){case 0:return'end of input';case 1:return failuresExpected[0];default:failuresExpected.sort();return failuresExpected.slice(0,failuresExpected.length-1).join(', ')
++' or '
++failuresExpected[failuresExpected.length-1];}}
+var expected=buildExpected(rightmostMatchFailuresExpected);var actualPos=Math.max(pos,rightmostMatchFailuresPos);var actual=actualPos<input.length?quoteString(input.charAt(actualPos)):'end of input';return'Expected '+expected+' but '+actual+' found.';}
+function computeErrorPosition(){var line=1;var column=1;var seenCR=false;for(var i=0;i<rightmostMatchFailuresPos;i++){var ch=input.charAt(i);if(ch==='\n'){if(!seenCR){line++;}
+column=1;seenCR=false;}else if(ch==='\r'|ch==='\u2028'||ch==='\u2029'){line++;column=1;seenCR=true;}else{column++;seenCR=false;}}
+return{line:line,column:column};}
+var result=funcs[start]({reportMatchFailures:true});if(result===null||pos!==input.length){var errorPosition=computeErrorPosition();throw new this.SyntaxError(buildErrorMessage(),errorPosition.line,errorPosition.column);}
+return result;},toSource:function(){return this._source;}};result.SyntaxError=function(message,line,column){this.name='SyntaxError';this.message=message;this.line=line;this.column=column;};result.SyntaxError.prototype=Error.prototype;return result;})();
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/add-container.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,16 @@
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ var $content = $("body > *");
+ $content.remove();
+ $("<div/>").appendTo($("body"))
+ .attr("id", "container")
+ .append($content);
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/css/base.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,91 @@
+html, body {
+ margin: 0;
+ padding: 0;
+ font-family: Arial, Helvetica, sans-serif;
+}
+section {
+ display: block;
+}
+#container {
+ max-width: 21cm;
+ margin: auto;
+ padding: 0 0 2em 0;
+}
+h1 {
+ text-transform: uppercase;
+ font-weight: bold;
+ font-family: Arial, Verdana, sans-serif;
+ color: #999;
+ text-shadow: #666 1px 1px 1px;
+ border-bottom: 3px double #ccc;
+ padding: 0;
+ margin: 0;
+}
+h1 .subtitle {
+ color: #ff6c00;
+}
+#abstract p {
+ margin: 0;
+ padding: 0;
+ font-style: italic;
+}
+#blurb img {
+ float: left;
+ margin: 0 1em 1em 0;
+}
+#blurb hr {
+ clear: both;
+ border: none;
+}
+dl, section > p {
+ margin: 0 0 0.5em 1em;
+}
+dt {
+ font-weight: bold;
+}
+#conferences dd {
+ margin-bottom: 1em;
+}
+dd ul {
+ padding: 1em;
+}
+dd p:first-of-type, dd ul:first-of-type {
+ margin-top: 0;
+ padding-top: 0;
+}
+p, dd, dt {
+ text-align: justify;
+}
+h2 {
+ font-variant: small-caps;
+ color: #999;
+ border-bottom: 1px solid #ff6c00;
+}
+a {
+ color: #ff6c00;
+ text-decoration: none;
+}
+dt .occupation {
+ font-style: italic;
+ font-weight: normal;
+}
+table.metadata {
+ margin: 1em 0 0 0;
+}
+table.metadata th, table.metadata td {
+ text-align: left;
+ vertical-align: top;
+ padding: 0 0 0 1em;
+}
+.head {
+ padding: 1em 0 2em 0;
+}
+.metadata {
+ text-align: right;
+ font-size: 0.8em;
+ color: #999;
+ padding-top: 0.5em;
+}
+#toc li {
+ list-style-type: none;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/headers.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,50 @@
+
+define(
+ ["core/tt", "core/utils", "text!robineko/templates/headers.html"],
+ function (tt, utils, template) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("adding document headers");
+
+ // --- CONFIGURATION PROCESSING
+ conf.title = doc.title ? doc.title : "No Title";
+ if (!conf.subtitle) conf.subtitle = "";
+ if (!conf.publishDate) {
+ conf.publishDate = utils.parseLastModified(doc.lastModified);
+ }
+ else {
+ if (!(conf.publishDate instanceof Date)) conf.publishDate = utils.parseSimpleDate(conf.publishDate);
+ }
+ conf.publishYear = conf.publishDate.getFullYear();
+ conf.dashDate = utils.concatDate(conf.publishDate, "-");
+
+ if (!conf.editors || conf.editors.length === 0) error("At least one editor is required");
+ var peopCheck = function (i, it) {
+ if (!it.name) error("All authors and editors must have a name.");
+ if (!it.uri) it.uri = "";
+ if (!it.company) it.company = "";
+ if (!it.companyURL) it.companyURL = "";
+ if (!it.mailto) it.mailto = "";
+ if (!it.note) it.note = "";
+ };
+ $.each(conf.editors, peopCheck);
+
+ // --- RUN THE TEMPLATES
+ tt.loadFromHTML(template, doc);
+ progress("running TT for headers");
+ // headers
+ $("body", doc).prepend($(tt.exec("robineko-headers", conf)));
+
+ // abstract
+ progress("handling abstract");
+ var $abs = $("#abstract");
+ if (!$abs) error("Document must have one element with ID 'abstract'");
+ $abs.addClass("introductory");
+
+ progress("done adding document headers");
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/profile-report.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,23 @@
+
+require([
+ // must be first
+ "core/base-runner",
+ "core/utils",
+
+ // modules that are used by the profile
+ "core/default-root-attr",
+ "core/style",
+ "robineko/style",
+ "robineko/headers",
+ "core/inlines",
+ // "core/webidl",
+ "core/examples",
+ // bibref
+ "core/structure",
+ "core/dfn",
+ "robineko/add-container",
+ // these at the end
+ "core/remove-respec"
+ ],
+ function (runner) { runner.runAll(Array.prototype.slice.call(arguments)); }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/style.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,14 @@
+define(
+ ["text!robineko/css/base.css"],
+ function (css) {
+ return {
+ run: function (conf, doc, cb) {
+ $("<style/>").appendTo($("head", $(doc)))
+ .attr("type", "text/css")
+ .text(css);
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/robineko/templates/headers.html Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,25 @@
+<!--
+ XXX missing: publishDate
+-->
+<script type='application/x-tt' id='robineko-headers'><![CDATA[
+ <div class='head'>
+ <h1 class='title' id='title'>Report: <span class='subtitle'>[% title %]</span></h1>
+ <div class='metadata'>
+ [% INCLUDE "show-people" people = editors %], [% dashDate %]
+ </div>
+ </div>
+[% BLOCK "show-people" %]
+ [% FOREACH p IN people %]
+ [%- IF p.url.length > 0 %]<a class='name' href='[% p.url %]'>[% p.name %]</a>[% ELSE %]<span class='name'>[% p.name %]</span>[% END -%]
+ [%- IF p.company %],
+ [% IF p.companyURL %]
+ <a class='company' href='[% p.companyURL %]'>[% p.company %]</a>
+ [% ELSE %]
+ <span class='company'>[% p.company %]</span>
+ [% END %]
+ [% END %]
+ [% IF p.mailto %] <<a class='email' href='mailto:[% p.mailto %]'>[% p.mailto %]</a>>[% END %]
+ [% IF p.note %] ([% p.note %])[% END %]
+ [% END %]
+[% END %]
+</script>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/sh_min.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,4 @@
+/* Copyright (C) 2007, 2008 gnombat@users.sourceforge.net */
+/* License: http://shjs.sourceforge.net/doc/gplv3.html */
+
+if(!this.sh_languages){this.sh_languages={}}var sh_requests={};function sh_isEmailAddress(a){if(/^mailto:/.test(a)){return false}return a.indexOf("@")!==-1}function sh_setHref(b,c,d){var a=d.substring(b[c-2].pos,b[c-1].pos);if(a.length>=2&&a.charAt(0)==="<"&&a.charAt(a.length-1)===">"){a=a.substr(1,a.length-2)}if(sh_isEmailAddress(a)){a="mailto:"+a}b[c-2].node.href=a}function sh_konquerorExec(b){var a=[""];a.index=b.length;a.input=b;return a}function sh_highlightString(B,o){if(/Konqueror/.test(navigator.userAgent)){if(!o.konquered){for(var F=0;F<o.length;F++){for(var H=0;H<o[F].length;H++){var G=o[F][H][0];if(G.source==="$"){G.exec=sh_konquerorExec}}}o.konquered=true}}var N=document.createElement("a");var q=document.createElement("span");var A=[];var j=0;var n=[];var C=0;var k=null;var x=function(i,a){var p=i.length;if(p===0){return}if(!a){var Q=n.length;if(Q!==0){var r=n[Q-1];if(!r[3]){a=r[1]}}}if(k!==a){if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}}if(a){var P;if(a==="sh_url"){P=N.cloneNode(false)}else{P=q.cloneNode(false)}P.className=a;A[j++]={node:P,pos:C}}}C+=p;k=a};var t=/\r\n|\r|\n/g;t.lastIndex=0;var d=B.length;while(C<d){var v=C;var l;var w;var h=t.exec(B);if(h===null){l=d;w=d}else{l=h.index;w=t.lastIndex}var g=B.substring(v,l);var M=[];for(;;){var I=C-v;var D;var y=n.length;if(y===0){D=0}else{D=n[y-1][2]}var O=o[D];var z=O.length;var m=M[D];if(!m){m=M[D]=[]}var E=null;var u=-1;for(var K=0;K<z;K++){var f;if(K<m.length&&(m[K]===null||I<=m[K].index)){f=m[K]}else{var c=O[K][0];c.lastIndex=I;f=c.exec(g);m[K]=f}if(f!==null&&(E===null||f.index<E.index)){E=f;u=K;if(f.index===I){break}}}if(E===null){x(g.substring(I),null);break}else{if(E.index>I){x(g.substring(I,E.index),null)}var e=O[u];var J=e[1];var b;if(J instanceof Array){for(var L=0;L<J.length;L++){b=E[L+1];x(b,J[L])}}else{b=E[0];x(b,J)}switch(e[2]){case -1:break;case -2:n.pop();break;case -3:n.length=0;break;default:n.push(e);break}}}if(k){A[j++]={pos:C};if(k==="sh_url"){sh_setHref(A,j,B)}k=null}C=w}return A}function sh_getClasses(d){var a=[];var b=d.className;if(b&&b.length>0){var e=b.split(" ");for(var c=0;c<e.length;c++){if(e[c].length>0){a.push(e[c])}}}return a}function sh_addClass(c,a){var d=sh_getClasses(c);for(var b=0;b<d.length;b++){if(a.toLowerCase()===d[b].toLowerCase()){return}}d.push(a);c.className=d.join(" ")}function sh_extractTagsFromNodeList(c,a){var f=c.length;for(var d=0;d<f;d++){var e=c.item(d);switch(e.nodeType){case 1:if(e.nodeName.toLowerCase()==="br"){var b;if(/MSIE/.test(navigator.userAgent)){b="\r"}else{b="\n"}a.text.push(b);a.pos++}else{a.tags.push({node:e.cloneNode(false),pos:a.pos});sh_extractTagsFromNodeList(e.childNodes,a);a.tags.push({pos:a.pos})}break;case 3:case 4:a.text.push(e.data);a.pos+=e.length;break}}}function sh_extractTags(c,b){var a={};a.text=[];a.tags=b;a.pos=0;sh_extractTagsFromNodeList(c.childNodes,a);return a.text.join("")}function sh_mergeTags(d,f){var a=d.length;if(a===0){return f}var c=f.length;if(c===0){return d}var i=[];var e=0;var b=0;while(e<a&&b<c){var h=d[e];var g=f[b];if(h.pos<=g.pos){i.push(h);e++}else{i.push(g);if(f[b+1].pos<=h.pos){b++;i.push(f[b]);b++}else{i.push({pos:h.pos});f[b]={node:g.node.cloneNode(false),pos:h.pos}}}}while(e<a){i.push(d[e]);e++}while(b<c){i.push(f[b]);b++}return i}function sh_insertTags(k,h){var g=document;var l=document.createDocumentFragment();var e=0;var d=k.length;var b=0;var j=h.length;var c=l;while(b<j||e<d){var i;var a;if(e<d){i=k[e];a=i.pos}else{a=j}if(a<=b){if(i.node){var f=i.node;c.appendChild(f);c=f}else{c=c.parentNode}e++}else{c.appendChild(g.createTextNode(h.substring(b,a)));b=a}}return l}function sh_highlightElement(d,g){sh_addClass(d,"sh_sourceCode");var c=[];var e=sh_extractTags(d,c);var f=sh_highlightString(e,g);var b=sh_mergeTags(c,f);var a=sh_insertTags(b,e);while(d.hasChildNodes()){d.removeChild(d.firstChild)}d.appendChild(a)}function sh_getXMLHttpRequest(){if(window.ActiveXObject){return new ActiveXObject("Msxml2.XMLHTTP")}else{if(window.XMLHttpRequest){return new XMLHttpRequest()}}throw"No XMLHttpRequest implementation available"}function sh_load(language,element,prefix,suffix){if(language in sh_requests){sh_requests[language].push(element);return}sh_requests[language]=[element];var request=sh_getXMLHttpRequest();var url=prefix+"sh_"+language+suffix;request.open("GET",url,true);request.onreadystatechange=function(){if(request.readyState===4){try{if(!request.status||request.status===200){eval(request.responseText);var elements=sh_requests[language];for(var i=0;i<elements.length;i++){sh_highlightElement(elements[i],sh_languages[language])}}else{throw"HTTP error: status "+request.status}}finally{request=null}}};request.send(null)}function sh_highlightDocument(g,k){var b=document.getElementsByTagName("pre");for(var e=0;e<b.length;e++){var f=b.item(e);var a=sh_getClasses(f);for(var c=0;c<a.length;c++){var h=a[c].toLowerCase();if(h==="sh_sourcecode"){continue}if(h.substr(0,3)==="sh_"){var d=h.substring(3);if(d in sh_languages){sh_highlightElement(f,sh_languages[d])}else{if(typeof(g)==="string"&&typeof(k)==="string"){sh_load(d,f,g,k)}else{throw'Found <pre> element with class="'+h+'", but no such language exists'}}break}}}};
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/test/basic.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,13 @@
+
+define(
+ [],
+ function () {
+ return {
+ dahut: true,
+ run: function (config, doc, cb) {
+ alert("running basic!");
+ cb();
+ },
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/test/basic2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,13 @@
+
+define(
+ [],
+ function () {
+ return {
+ dahut: true,
+ run: function (config, doc, cb) {
+ alert("running basic 2!");
+ cb();
+ },
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,65 @@
+// XXX untested
+// @@@ CONF
+// - normativeReferences
+// - informativeReferences
+// - refNote
+
+// - build the bibref in JSON-P?
+
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("inserting bibrefs");
+ if (!conf.normativeReferences) conf.normativeReferences = [];
+ if (!conf.informativeReferences) conf.informativeReferences = [];
+
+ // use the refs detected during inlines (put in conf) to build the refs section
+ var informs = utils.unique(conf.informativeReferences),
+ norms = utils.unique(conf.normativeReferences);
+ if (!informs.length && !norms.length) {
+ cb();
+ return;
+ }
+ var keep = [];
+ for (var i = 0; i < informs.length; i++) {
+ if (!$.inArray(informs[i], norms) > -1) keep.push(informs[i]);
+ }
+ informs = keep;
+
+ var $refsec = $("<section id='references' class='appendix'/>").appendTo($("body"), doc)
+ .append("<h2>References</h2>");
+ if (conf.refNote) $refsec.html("<p/>").find("p").html(refNote);
+
+ var types = ["Normative", "Informative"];
+ for (var i = 0; i < types.length; i++) {
+ var type = types[i];
+ var refList = (type == "Normative") ? norms : informs;
+ if (refList.length == 0) continue;
+ var $sec = $("<section/>").appendTo($refsec)
+ .attr("id", type.toLowerCase() + "-references")
+ .append("<h3>")
+ .find("h3")
+ .text(type + " references")
+ .end();
+ refList.sort();
+ var $dl = $("<dl class='bibliography'/>").appendTo($sec);
+ for (var j = 0, n = refList.length; j < n; j++) {
+ var ref = refList[j];
+ $("<dt/>").attr({id: "bib-" + ref}).appendTo($dl).text("[" + ref + "]");
+ var $dd = $("<dd><em>waiting for reference to load...</em></dd>").appendTo($dl);
+ // utils.proxyLoad(conf.respecBase + "bibref/" + ref + ".html", this._makeCB(ref));
+ require({ baseUrl: conf.respecBase }, ["w3c/bibref/" + ref], function (def) {
+ $("#bib-" + def.id).next().html(def.html);
+ $("script[data-requiremodule=\"w3c/bibref/" + def.id + "\"]").remove();
+ });
+ }
+ }
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ABA-DSIG-GUIDELINES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.abanet.org/scitech/ec/isc/dsgfree.html\"><cite>Digital Signature Guidelines.</cite></a> URL: <a href=\"http://www.abanet.org/scitech/ec/isc/dsgfree.html\">http://www.abanet.org/scitech/ec/isc/dsgfree.html</a>",
+ "id": "ABA-DSIG-GUIDELINES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ABC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "ABC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ABNF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "ABNF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ACCESS-CONTROL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ACCESS-CONTROL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ACDI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ACDI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ACSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ACSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AD-INDUSTRY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://www.iab.net/media/file/ven-principles-07-01-09.pdf ",
+ "id": "AD-INDUSTRY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AERT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "AERT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AES-WRAP-PAD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: <a href=\"http://www.ietf.org/rfc/rfc5649.txt\"> http://www.ietf.org/rfc/rfc5649.txt</a>. ",
+ "id": "AES-WRAP-PAD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AES-WRAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: <a href=\"http://www.rfc-editor.org/rfc/rfc3394.txt\">http://www.rfc-editor.org/rfc/rfc3394.txt</a>",
+ "id": "AES-WRAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf\"><cite>NIST FIPS 197: Advanced Encryption Standard (AES)</cite></a>. November 2001. URI: <a href=\"http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf\">http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf</a>",
+ "id": "AES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/AGBDL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Charles Jacobs; et al. <a href=\"http://grail.cs.washington.edu/pub/papers/Jacobs2003.pdf\">“Adaptive Grid Based Document Layout”</a> in: <cite>ACM Transactions on Graphics.</cite> 22. 3. pp. 838–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> ",
+ "id": "AGBDL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ANSI-X9-44-2007.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> URI: <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>",
+ "id": "ANSI-X9-44-2007"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ARABIC-MATH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ARABIC-MATH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ARABIC-TYPO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Huda Smitshuijzen AbiFares. <cite>Arabic Typography: A Comprehensive Sourcebook.</cite> Saqi Books. 2001. ISBN 0-86356-347-3.",
+ "id": "ARABIC-TYPO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ATAG-WOMBAT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Jan Richards; Charles McCathieNevile; Jutta Treviranus. <a href=\"http://www.w3.org/TR/2001/WD-ATAG-wombat-20011221\"><cite>Authoring Tool Accessibility Guidelines "Wombat".</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> ",
+ "id": "ATAG-WOMBAT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ATAG10-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ATAG10-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ATAG10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ATAG10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ATAG20-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ATAG20-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ATAG20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ATAG20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/BACKPLANE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "BACKPLANE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/BECSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "BECSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/BLOB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "BLOB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/BONDI-ARCH-SECURITY-11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://bondi.omtp.org/1.11/security/BONDI_Architecture_and_Security_v1.1.pdf\"><cite>BONDI Architecture & 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> ",
+ "id": "BONDI-ARCH-SECURITY-11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/BONDI-FEATURES1-11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "BONDI-FEATURES1-11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/C14N-ISSUES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Konrad Lanz; José 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> ",
+ "id": "C14N-ISSUES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CALL-CONTROL-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CALL-CONTROL-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CC-ABOUT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href = 'http://creativecommons.org/about/licenses/'><cite>Creative Commons: About Licenses</cite></a> URI: http://creativecommons.org/about/licenses/ ",
+ "id": "CC-ABOUT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CC-CHOOSE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href = 'http://creativecommons.org/choose/'><cite>Creative Commons: License Your Work</cite></a> URI: http://creativecommons.org/choose/ ",
+ "id": "CC-CHOOSE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP-COORDINATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCPP-COORDINATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP-RA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCPP-RA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP-STRUCT-VOCAB2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Cé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> ",
+ "id": "CCPP-STRUCT-VOCAB2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP-TA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCPP-TA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP-TRUST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCPP-TRUST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCPP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCPP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CCXML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CCXML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CDFREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CDFREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CDR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CDR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CDRREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CDRREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CGM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CGM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CHARMOD-NORM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Martin J. Dü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> ",
+ "id": "CHARMOD-NORM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CHARMOD-RESID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Franç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> ",
+ "id": "CHARMOD-RESID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CHARMOD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Martin J. Dü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> ",
+ "id": "CHARMOD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CHARREQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Martin J. Dü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> ",
+ "id": "CHARREQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CHARSETS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "CHARSETS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CLIPBOARD-APIS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CLIPBOARD-APIS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CMS-Algorithms.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: <a href=\"http://www.ietf.org/rfc/rfc3370.txt\">http://www.ietf.org/rfc/rfc3370.txt</a>",
+ "id": "CMS-Algorithms"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CMS-WRAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "R. Housley. <a href=\"http://www.ietf.org/rfc/rfc3217.txt\"><cite>RFC3217: Triple-DES and RC2 Key Wrapping</cite></a>. IETF Informational RFC, December 2001. URI: <a href=\"http://www.ietf.org/rfc/rfc3217.txt\">http://www.ietf.org/rfc/rfc3217.txt</a>",
+ "id": "CMS-WRAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/COLORIMETRY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>Colorimetry, Second Edition.</cite> CIE Publication 15.2-1986. ISBN 3-900-734-00-3",
+ "id": "COLORIMETRY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CONTACTS-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CONTACTS-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CONTACTS-WRITER-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CONTACTS-WRITER-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CONTENT-IN-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CONTENT-IN-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/COOKIES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Adam Barth. <cite><a href=\"http://tools.ietf.org/html/draft-abarth-cookie\">HTTP State Management Mechanism</a>.</cite> IETF, November 2009",
+ "id": "COOKIES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/COOLURIS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "COOLURIS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CORE-DEVICE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CORE-DEVICE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CORS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CORS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CPC-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Markus Lauff; Amy Yu. <a href=\"http://www.w3.org/TR/2003/WD-cpc-req-20030510\"><cite>Core Presentation Characteristics: 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> ",
+ "id": "CPC-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSELECTION-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSELECTION-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSELECTION-XAF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSELECTION-XAF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSELECTION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSELECTION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS-MOBILE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS-MOBILE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS-POTENTIAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS-POTENTIAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS-PRINT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS-PRINT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS-TV.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS-TV"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hå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> ",
+ "id": "CSS1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Jacobs; et al. <a href=\"http://www.w3.org/TR/2008/REC-CSS2-20080411\"><cite>Cascading Style Sheets, level 2 (CSS2) Specification.</cite></a> 11 April 2008. W3C Recommendation. URL: <a href=\"http://www.w3.org/TR/2008/REC-CSS2-20080411\">http://www.w3.org/TR/2008/REC-CSS2-20080411</a> ",
+ "id": "CSS2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS21.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Bert Bos; et al. <a href=\"http://www.w3.org/TR/2009/CR-CSS2-20090908/\"><cite>Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification.</cite></a> 08 September 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-CSS2-20090908\">http://www.w3.org/TR/2009/CR-CSS2-20090908</a> ",
+ "id": "CSS21"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-2D-TRANSFORMS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dean Jackson; David Hyatt; Chris Marrin. <a href=\"http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320\"><cite>CSS 2D Transforms Module Level 3.</cite></a> 20 March 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320\">http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320</a> ",
+ "id": "CSS3-2D-TRANSFORMS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-3D-TRANSFORMS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dean Jackson; David Hyatt; Chris Marrin. <a href=\"http://www.w3.org/TR/2009/WD-css3-3d-transforms-20090320\"><cite>CSS 3D Transforms Module Level 3.</cite></a> 20 March 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-css3-3d-transforms-20090320\">http://www.w3.org/TR/2009/WD-css3-3d-transforms-20090320</a> ",
+ "id": "CSS3-3D-TRANSFORMS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-ANIMATIONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dean Jackson (Apple Inc); David Hyatt (Apple Inc); Chris Marrin (Apple Inc). <a href=\"http://www.w3.org/TR/2009/WD-css3-animations-20090320\"><cite>CSS Animations Module Level 3.</cite></a> 20 March 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-css3-animations-20090320\">http://www.w3.org/TR/2009/WD-css3-animations-20090320</a> ",
+ "id": "CSS3-ANIMATIONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-HYPERLINKS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Daniel Glazman; Bert Bos; Tantek Ç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> ",
+ "id": "CSS3-HYPERLINKS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-MARQUEE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3-MARQUEE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-PRESLEV.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson; Hå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> ",
+ "id": "CSS3-PRESLEV"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-READER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3-READER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-TRANSITIONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dean Jackson; David Hyatt; Chris Marrin. <a href=\"http://www.w3.org/TR/2009/WD-css3-transitions-20090320\"><cite>CSS Transitions Module Level 3.</cite></a> 20 March 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-css3-transitions-20090320\">http://www.w3.org/TR/2009/WD-css3-transitions-20090320</a> ",
+ "id": "CSS3-TRANSITIONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3-WEBFONTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3-WEBFONTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3BG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Elika J. Etemad; Bert Bos. <a href=\"http://www.w3.org/TR/2008/WD-css3-background-20080910\"><cite>CSS Backgrounds and Borders Module Level 3.</cite></a> 10 September 2008. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2008/WD-css3-background-20080910\">http://www.w3.org/TR/2008/WD-css3-background-20080910</a> ",
+ "id": "CSS3BG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3BORDER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3BORDER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3BOX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3BOX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3CASCADE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hå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> ",
+ "id": "CSS3CASCADE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3COL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Håkon Wium Lie. <a href=\"http://www.w3.org/TR/2007/WD-css3-multicol-20070606\"><cite>CSS3 module: Multi-column layout.</cite></a> 6 June 2007. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2007/WD-css3-multicol-20070606\">http://www.w3.org/TR/2007/WD-css3-multicol-20070606</a> ",
+ "id": "CSS3COL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3COLOR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Chris Lilley; Tantek Çelik; L. David Baron. <a href=\"http://www.w3.org/TR/2008/WD-css3-color-20080721\"><cite>CSS Color Module Level 3.</cite></a> 21 July 2008. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2008/WD-css3-color-20080721\">http://www.w3.org/TR/2008/WD-css3-color-20080721</a> ",
+ "id": "CSS3COLOR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3FONT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3FONT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3GCPM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hå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> ",
+ "id": "CSS3GCPM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3GENCON.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3GENCON"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3GRID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3GRID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3INTRO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3INTRO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3LAYOUT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3LAYOUT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3LINE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3LINE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3LIST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson; Tantek Ç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> ",
+ "id": "CSS3LIST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3MARQUEE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3MARQUEE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3NAMESPACE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3NAMESPACE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3PAGE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Melinda Grant; Hå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> ",
+ "id": "CSS3PAGE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3POS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Bert Bos. <cite>CSS3 Positioning Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)",
+ "id": "CSS3POS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3RUBY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3RUBY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3SPEECH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3SPEECH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3SYN.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3SYN"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3TBL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Bert Bos; David Hyatt. <cite>CSS3 Tables Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)",
+ "id": "CSS3TBL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3TEXT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Paul Nelson; Elika J. Etemad. <a href=\"http://www.w3.org/TR/2007/WD-css3-text-20070306\"><cite>CSS Text Level 3.</cite></a> 6 March 2007. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2007/WD-css3-text-20070306\">http://www.w3.org/TR/2007/WD-css3-text-20070306</a> ",
+ "id": "CSS3TEXT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3TEXTLAYOUT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Elika J. Etemad; Paul Nelson. <cite>CSS3 Text Layout Module.</cite> (forthcoming). W3C Working Draft. (Work in progress.)",
+ "id": "CSS3TEXTLAYOUT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3UI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Tantek Çelik. <a href=\"http://www.w3.org/TR/2004/CR-css3-ui-20040511\"><cite>CSS3 Basic User Interface Module.</cite></a> 11 May 2004. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2004/CR-css3-ui-20040511\">http://www.w3.org/TR/2004/CR-css3-ui-20040511</a> ",
+ "id": "CSS3UI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3VAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Chris Lilley; Håkon Wium Lie. <a href=\"http://www.w3.org/TR/2006/WD-css3-values-20060919\"><cite>CSS3 Values and Units.</cite></a> 19 September 2006. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2006/WD-css3-values-20060919\">http://www.w3.org/TR/2006/WD-css3-values-20060919</a> ",
+ "id": "CSS3VAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSS3WRITINGMODES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSS3WRITINGMODES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSSBEIJING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSSBEIJING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSSOM-VIEW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CSSOM-VIEW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CSSSTYLEATTR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marc Attinasi; Bert Bos; Tantek Çelik. <a href=\"http://www.w3.org/TR/2002/WD-css-style-attr-20020515\"><cite>Syntax of CSS rules in HTML's "style" 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> ",
+ "id": "CSSSTYLEATTR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CT-GUIDELINES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CT-GUIDELINES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CT-LANDSCAPE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "CT-LANDSCAPE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CURIE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Shane McCarron; et al. <a href=\"http://www.w3.org/TR/2010/WD-rdfa-core-20100422/\"><cite>RDFa Core 1.1 - Section 6.</cite></a> 22 April 2010. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/2010/WD-rdfa-core-20100422/\">http://www.w3.org/TR/2010/WD-rdfa-core-20100422/</a> ",
+ "id": "CURIE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CVE-2009-0217.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "CVE-2009-0217"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/CX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Philippe Le Hé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> ",
+ "id": "CX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/Coloring-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "Coloring-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/Context-SW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "R.M.R. Guha; R. Fikes. <cite>Contexts for the Semantic Web</cite>. 2005. The Semantic Web — ISWC2004. Yokohama, Japan: Springer-Verlag",
+ "id": "Context-SW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAHUT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "DAHUT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAP-ACCESS-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DAP-ACCESS-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAP-POLICY-FRAMEWORK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DAP-POLICY-FRAMEWORK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAP-PRIVACY-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "L. Arribas, P. Byers, M. Hanclik, F Hirsch, D. Rogers. <a href=\"http://dev.w3.org/2009/dap/privacy-reqs/\"><cite>Device API Privacy Requirements</cite></a> 17 June 2010. (Work in progress.) URL: <a href=\"http://dev.w3.org/2009/dap/privacy-reqs/\">http://dev.w3.org/2009/dap/privacy-reqs/</a> ",
+ "id": "DAP-PRIVACY-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAP-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DAP-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DAP-XACML-POLICY-PROFILE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DAP-XACML-POLICY-PROFILE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DC11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dublin Core metadata initiative. <a href=\"http://purl.oclc.org/docs/core/documents/rec-dces-19990702.htm\"><cite>Dublin Core metadata element set, version 1.1.</cite></a> July 1999. Dublin Core recommendation. URL: <a href=\"http://purl.oclc.org/docs/core/documents/rec-dces-19990702.htm\">http://purl.oclc.org/docs/core/documents/rec-dces-19990702.htm</a> ",
+ "id": "DC11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DCONTOLOGY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "José 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> ",
+ "id": "DCONTOLOGY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DD-ECOSYSTEM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DD-ECOSYSTEM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DD-LANDSCAPE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DD-LANDSCAPE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DD-STRUCTURES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "José 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> ",
+ "id": "DD-STRUCTURES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DDR-CORE-VOCABULARY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DDR-CORE-VOCABULARY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DDR-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DDR-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DDR-SIMPLE-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "José 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> ",
+ "id": "DDR-SIMPLE-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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. URI: <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>",
+ "id": "DES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DFAUI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DFAUI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DI-ATDI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DI-ATDI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DI-DCO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DI-DCO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DI-GLOSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DI-GLOSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DI-PRINC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DI-PRINC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DIAL-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DIAL-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DIAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DIAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DIG2000.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DIG2000"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DNS-SD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "DNS-SD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-BINDINGS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-BINDINGS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Anne van Kesteren; et al. <a href=\"http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html/\"><cite>Web DOM Core</cite></a>. W3C Working Draft. (Work in progress.) 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> ",
+ "id": "DOM-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-1-2e.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-1-2e"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-2-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-EVENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-2-EVENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-HTML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Arnaud Le Hors; Johnny Stenback; Philippe Le Hé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> ",
+ "id": "DOM-LEVEL-2-HTML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-STYLE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Vidur Apparao; Philippe Le Hé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> ",
+ "id": "DOM-LEVEL-2-STYLE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-TRAVERSAL-RANGE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-2-TRAVERSAL-RANGE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-2-VIEWS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-2-VIEWS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-AS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-AS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-EVENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Björn Höhrmann; Tom Pixley; Philippe Le Hégaret. <a href=\"http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221\"><cite>Document Object Model (DOM) Level 3 Events Specification.</cite></a> 21 December 2007. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221\">http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221</a> ",
+ "id": "DOM-LEVEL-3-EVENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-LS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-LS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-VAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-VAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-VIEWS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-VIEWS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-LEVEL-3-XPATH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-LEVEL-3-XPATH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DOM-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DOM-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DPF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DPF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DSIG-LABEL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DSIG-LABEL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DSIG-USAGE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "DSIG-USAGE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/DSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "DSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/Davis.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.usenix.org/publications/library/proceedings/usenix01/davis.html\"><cite>Defective Sign & Encrypt in S/MIME, PKCS#7, MOSS, PEM, PGP, and XML.</cite></a> D. Davis. USENIX Annual Technical Conference. 2001. URI: <a href=\"http://www.usenix.org/publications/library/proceedings/usenix01/davis.html\">http://www.usenix.org/publications/library/proceedings/usenix01/davis.html</a>",
+ "id": "Davis"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EARL10-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EARL10-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EARL10-SCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EARL10-SCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EBXML-MSG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Jones; Brian Gibb; David Fischer. <a href=\"http://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=\"http://www.oasis-open.org/committees/download.php/272/ebMS_v2_0.pdf\">http://www.oasis-open.org/committees/download.php/272/ebMS_v2_0.pdf</a>",
+ "id": "EBXML-MSG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EC-RELATED-ACTIVITIES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EC-RELATED-ACTIVITIES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ECC-ALGS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "D. McGrew, K. Igoe, M. Salter. <a href=\"http://www.ietf.org/id/draft-mcgrew-fundamental-ecc-04.txt\"><cite>Fundamental Elliptic Curve Cryptography Algorithms</cite></a>, IETF Internet Draft, December 10, 2010, URL: <a href=\"http://www.ietf.org/id/draft-mcgrew-fundamental-ecc-04.txt\">http://www.ietf.org/id/draft-mcgrew-fundamental-ecc-04.txt</a>",
+ "id": "ECC-ALGS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ECMA-262.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.ecma-international.org/publications/standards/Ecma-262.htm\"><cite>ECMAScript Language Specification, Third Edition.</cite></a> December 1999. URL: <a href=\"http://www.ecma-international.org/publications/standards/Ecma-262.htm\">http://www.ecma-international.org/publications/standards/Ecma-262.htm</a> ",
+ "id": "ECMA-262"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EGOV-IMPROVING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Kevin Novak; José 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> ",
+ "id": "EGOV-IMPROVING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ELEMENTTRAVERSAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ELEMENTTRAVERSAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ELEMTYPO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Robert Bringhurst. <cite>The Elements of Typographic Style, Version 3.1.</cite> Hartley & Marks. 2005. ISBN 0-88179-206-3.",
+ "id": "ELEMTYPO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EMAIL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EMAIL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EMMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EMMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EMMAREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Sté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> ",
+ "id": "EMMAREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ESDH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "ESDH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EVENTSOURCE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson. <cite><a href=\"http://dev.w3.org/html5/eventsource/\">Server-sent Events</a></cite>. W3C Working Draft. (Work in progress.) URL: <a href=\"http://dev.w3.org/html5/eventsource/\">http://dev.w3.org/html5/eventsource/</a> ",
+ "id": "EVENTSOURCE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI-BEST-PRACTICES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI-BEST-PRACTICES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI-EVALUATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI-EVALUATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI-IMPACTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI-IMPACTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI-MEASUREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI-MEASUREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/EXI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "EXI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FILE-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Arun Ranganathan. <a href=\"http://www.w3.org/TR/2009/WD-FileAPI-20091117/\"><cite>File API.</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/</a> ",
+ "id": "FILE-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FILE-UPLOAD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "FILE-UPLOAD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FILE-WRITER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Eric Uhrhane. <a href=\"http://dev.w3.org/2009/dap/file-system/file-writer.html\"><cite>File Writer API.</cite></a> W3C Working Draft. (Work in progress.) URL: <a href=\"http://dev.w3.org/2009/dap/file-system/file-writer.html\">http://dev.w3.org/2009/dap/file-system/file-writer.html</a> ",
+ "id": "FILE-WRITER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FIN-PRIV-NOTICE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://www.ftc.gov/privacy/privacyinitiatives/ftcfinalreport060228.pdf ",
+ "id": "FIN-PRIV-NOTICE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FIPS-180-3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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. <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>",
+ "id": "FIPS-180-3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FIPS-186-3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "FIPS-186-3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FIR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Joe Clark. <a href=\"http://www.alistapart.com/articles/fir\">“Facts and Opinion About Fahrner Image Replacement”</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> ",
+ "id": "FIR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FLEX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>Flex: The Lexical Scanner Generator.</cite> Version 2.3.7, ISBN 1882114213",
+ "id": "FLEX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/FLEXBOX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "L. David Baron. <a href=\"http://www.w3.org/TR/css3-flexbox/\"><cite>Flexible Box Layout Module.</cite></a> 23 July 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/css3-flexbox/\">http://www.w3.org/TR/css3-flexbox/</a> ",
+ "id": "FLEXBOX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GEOLOCATION-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "GEOLOCATION-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GEOPRIV-ARCH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://tools.ietf.org/html/draft-ietf-geopriv-arch-01 ",
+ "id": "GEOPRIV-ARCH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GRDDL-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "GRDDL-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GRDDL-SCENARIOS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "GRDDL-SCENARIOS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GRDDL-TESTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "GRDDL-TESTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/GRDDL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "GRDDL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HASH-IN-URI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HASH-IN-URI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HCLS-KB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HCLS-KB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HCLS-SENSELAB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HCLS-SENSELAB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HLINK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HLINK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HMAC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "HMAC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HMRMC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.hmrc.gov.uk/ebu/softw_index.htm\"><cite>HM Revenue and customs</cite></a> Her Majesty's Revenue and Customs. URL: <a href=\"http://www.hmrc.gov.uk/ebu/softw_index.htm\">http://www.hmrc.gov.uk/ebu/softw_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>",
+ "id": "HMRMC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HSL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HSL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML-DESIGN-PRINCIPLES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML-DESIGN-PRINCIPLES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML-DEVICE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "HTML-DEVICE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML-LAN.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML-LAN"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML32.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML32"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML40-MOBILE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML40-MOBILE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML40.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML40"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML401.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML401"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML5-DIFF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML5-DIFF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML5-PUBNOTES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTML5-PUBNOTES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTML5.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson; David Hyatt. <a href=\"http://www.w3.org/TR/2010/WD-html5-20100304/\"><cite>HTML 5.</cite></a> 4 March 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-html5-20100304/\">http://www.w3.org/TR/2010/WD-html5-20100304/</a> ",
+ "id": "HTML5"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTMLICCPROF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTMLICCPROF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTMLMEDIACAPTURE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ilkka Oksanen, Dominique Hazaël-Massieux, eds. <a href=\"http://www.w3.org/TR/2010/WD-html-media-capture-20100720/\"><cite>HTML Media Capture</cite></a>, 20 July 2010, W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-html-media-capture-20100720/\">http://www.w3.org/TR/2010/WD-html-media-capture-20100720/</a>",
+ "id": "HTMLMEDIACAPTURE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTTP-IN-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTTP-IN-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTTP-NG-TESTBED.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTTP-NG-TESTBED"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTTP-TLS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTTP-TLS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HTTP11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "HTTP11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/HunterZhan.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hunter, Jane; Zhan, Zhimin. <a href=\"http://archive.dstc.edu.au/RDU/staff/jane-hunter/PNG/paper.html\">“An Indexing and Querying System for Online Images Based on the PNG Format and Embedded Metadata”</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> ",
+ "id": "HunterZhan"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/I18N-GUIDE-FRAMEWORK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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": "I18N-GUIDE-FRAMEWORK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/I18N-HTML-TECH-BIDI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "I18N-HTML-TECH-BIDI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/I18N-HTML-TECH-CHAR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Richard Ishida. <a href=\"http://www.w3.org/TR/2004/WD-i18n-html-tech-char-20040509\"><cite>Authoring Techniques for XHTML & 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> ",
+ "id": "I18N-HTML-TECH-CHAR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/I18N-HTML-TECH-LANG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Richard Ishida. <a href=\"http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412\"><cite>Internationalization Best Practices: Specifying Language in XHTML & 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> ",
+ "id": "I18N-HTML-TECH-LANG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ICC32.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "ICC32"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ICC42.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://color.org/ICC1v42_2006-05.pdf\"><cite>Image technology colour management — 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> ",
+ "id": "ICC42"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ID-MGM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://identityproject.lse.ac.uk/mary.pdf ",
+ "id": "ID-MGM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/IEEE1363.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "IEEE1363"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/IEEE802-3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "IEEE 802.3: Carrier sense multiple access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications. December 2008.",
+ "id": "IEEE802-3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ILU-REQUESTOR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ILU-REQUESTOR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/IMAGEMAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "IMAGEMAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/INKML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "INKML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/INKREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "INKREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/IRI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "IRI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO10646.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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 <a href="http://www.egt.ie/standards/iso10646/ucs-roadmap.html">roadmaps</a>show which scripts sit at which numeric ranges.",
+ "id": "ISO10646"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO15924.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>Code for the representation of names of scripts.</cite> International Organization for Standardization. 1998. ISO 15924:1998. Draft International Standard",
+ "id": "ISO15924"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO18033-2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>.",
+ "id": "ISO18033-2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO8601.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "ISO8601"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO8879.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "ISO8879"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ISO9070.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "ISO9070"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ITS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ITS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ITSREQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "ITSREQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ITUMCC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "List of Mobile Countries or Geographical Region Codes, 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>",
+ "id": "ITUMCC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ITUMNC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Mobile Network Codes (MNC) for The International Identification Plan for Public Networks and Subscriptions, 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>",
+ "id": "ITUMNC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JIGSAW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Jigsaw Team (Yves Lafon & 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> ",
+ "id": "JIGSAW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JIS4051.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>Formatting rules for Japanese documents (『日本語文書の組版方法』).</cite> Japanese Standards Association. 2004. JIS X 4051:2004. In Japanese",
+ "id": "JIS4051"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JISX4051.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>Line composition rules for Japanese documents.</cite> Japanese Standards Association. 1995. JIS X 4051-1995. In Japanese",
+ "id": "JISX4051"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JLREQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "JLREQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JPEG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hamilton, Eric. <a href=\"http://www.w3.org/Graphics/JPEG/jfif3.pdf\"><cite>JPEG File Interchange Format.</cite></a> C-Cube Microsystems. Sep 1992. Milpitas, CA, USA. URL: <a href=\"http://www.w3.org/Graphics/JPEG/jfif3.pdf\">http://www.w3.org/Graphics/JPEG/jfif3.pdf</a> ",
+ "id": "JPEG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JPEG2000.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "JPEG2000"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/JSON-LD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "JSON-LD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/KUIL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "KUIL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LANGCULTTYPE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "John D. Berry, Ed. <cite>Language Culture Type.</cite> Graphis. 2001. ISBN 1-932026-01-0.",
+ "id": "LANGCULTTYPE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LBASE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "LBASE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LDAP-DN.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "LDAP-DN"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LEIRI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "LEIRI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LEXICON-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "LEXICON-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LIC-PRIV.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Berjon, R. <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. URI: http://dev.w3.org/2009/dap/docs/privacy-license.html ",
+ "id": "LIC-PRIV"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/LTLI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "LTLI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML-BVAR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML-BVAR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML-FOR-CSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML-FOR-CSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML-TYPES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML-TYPES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML-UNITS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML-UNITS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MATHML3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MATHML3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MCINTOSH-WRAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": " Michael McIntosh; Paula Austel. XML signature element wrapping attacks and countermeasures. In Workshop on Secure Web Services, 2005",
+ "id": "MCINTOSH-WRAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MDNS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "MDNS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MEDIA-ANNOT-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "WonSuk Lee; Felix Sasaki; Tobias Bürger. <a href=\"http://www.w3.org/TR/2009/WD-media-annot-reqs-20090119\"><cite>Use Cases and Requirements for Ontology and API for Media Object 1.0.</cite></a> 19 January 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-media-annot-reqs-20090119\">http://www.w3.org/TR/2009/WD-media-annot-reqs-20090119</a> ",
+ "id": "MEDIA-ANNOT-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MEDIAACCESSEVENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MEDIAACCESSEVENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MEDIACAPTURE-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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 (Workin 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> ",
+ "id": "MEDIACAPTURE-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MEDIAONT-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MEDIAONT-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MEDIAQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "HÃ¥kon Wium Lie; et al. <a href=\"http://www.w3.org/TR/2009/CR-css3-mediaqueries-20090915/\"><cite>Media Queries.</cite></a> 15 September 2009. 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> ",
+ "id": "MEDIAQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MESSAGING-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "MESSAGING-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MICROFORMATS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href='http://microformats.org'><cite>Microformats</cite></a>. URL: <a href='http://microformats.org'>http://microformats.org</a> ",
+ "id": "MICROFORMATS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MIME-REG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.ietf.org/rfc/rfc2048.txt\"><cite>RFC 2048: Multipurpose Internet Mail Extensions (MIME) Part Four: Registration Procedures</cite></a>. N. Freed, J. Klensin, and J. Postel. Best Current Practice, November 1996. URI: <a href=\"http://www.ietf.org/rfc/rfc2048.txt\">http://www.ietf.org/rfc/rfc2048.txt</a>",
+ "id": "MIME-REG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-ARCH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-ARCH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-AUTH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-AUTH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-DEV-FEEDBACK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-DEV-FEEDBACK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-FRAMEWORK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-FRAMEWORK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Sté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> ",
+ "id": "MMI-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-SUGGESTIONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-SUGGESTIONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MMI-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MMI-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MOBILE-BP-SCOPE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MOBILE-BP-SCOPE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MOBILE-BP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MOBILE-BP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MOBILEOK-BASIC10-TESTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MOBILEOK-BASIC10-TESTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MOBILEOK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MOBILEOK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MODALITY-INTERFACE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MODALITY-INTERFACE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MOZ-ICONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: https://wiki.mozilla.org/Drumbeat/Challenges/Privacy_Icons ",
+ "id": "MOZ-ICONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MULTIMODAL-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MULTIMODAL-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MWABP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Adam Connors; Bryan Sullivan. <a href=\"http://www.w3.org/TR/2008/WD-mwabp-20081222\"><cite>Mobile Web Application Best Practices.</cite></a> 22 December 2008. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2008/WD-mwabp-20081222\">http://www.w3.org/TR/2008/WD-mwabp-20081222</a> ",
+ "id": "MWABP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/MWBP-WCAG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "MWBP-WCAG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/N3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "N3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NAMED-GRAPHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>.",
+ "id": "NAMED-GRAPHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NAMES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "NAMES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NAMESPACESTATE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "NAMESPACESTATE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NAVIGATOR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson, David Hyatt. <a href='http://dev.w3.org/html5/spec/webappapis.html#navigator'><cite>Navigator interface in HTML5</cite></a>, Editors draft (Work in progress). URL: <a href='http://dev.w3.org/html5/spec/webappapis.html#navigator'>http://dev.w3.org/html5/spec/webappapis.html#navigator</a> ",
+ "id": "NAVIGATOR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NFC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "M. Davis, Ken Whistler, M. Dürst. <a href=\"http://www.unicode.org/reports/tr15/\"><cite>TR15, Unicode Normalization Forms.</cite></a>. <a href=\"http://www.unicode.org/reports/tr15/\">http://www.unicode.org/reports/tr15/</a>",
+ "id": "NFC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NGRAM-SPEC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "NGRAM-SPEC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NL-SPEC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "NL-SPEC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/NOTE-CCPP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "NOTE-CCPP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OASIS-TAG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "OASIS-TAG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OCSP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>. C. Adams. IETF RFC 2560. June 1999. URL: <a href=\"http://www.ietf.org/rfc/rfc2560.txt\">http://www.ietf.org/rfc/rfc2560.txt</a>",
+ "id": "OCSP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OEB101.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "OEB101"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OFFLINE-WEBAPPS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OFFLINE-WEBAPPS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OMA-DM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "OMA-DM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-FEATURES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-FEATURES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-GUIDE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-GUIDE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-PARSING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-PARSING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-REF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-REF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-SEMANTICS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-SEMANTICS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-TEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-TEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-TIME.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL-TIME"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL-XMLSYNTAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Masahiro Hori; Peter F. Patel-Schneider; Jérô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> ",
+ "id": "OWL-XMLSYNTAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-CONFORMANCE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-CONFORMANCE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-DIRECT-SEMANTICS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-DIRECT-SEMANTICS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-MANCHESTER-SYNTAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-MANCHESTER-SYNTAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-MAPPING-TO-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-MAPPING-TO-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-NEW-FEATURES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-NEW-FEATURES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-OVERVIEW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-OVERVIEW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Pascal Hitzler; Markus Krö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> ",
+ "id": "OWL2-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-PROFILES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-PROFILES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-QUICK-REFERENCE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-QUICK-REFERENCE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-RDF-BASED-SEMANTICS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-RDF-BASED-SEMANTICS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-SYNTAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-SYNTAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/OWL2-XML-SERIALIZATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "OWL2-XML-SERIALIZATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P-PREFERENCES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P-PREFERENCES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P-RDFSCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P-RDFSCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P1.0.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P1.0"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P10-PRINCIPLES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P10-PRINCIPLES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P10-PROTOCOLS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P10-PROTOCOLS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3P11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3P11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/P3PDEPLOYMENT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "P3PDEPLOYMENT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PGP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "J. Callas, L. Donnerhacke, H. Finney, D. Shaw, R. Thayer. <a href=\"http://www.ietf.org/rfc/rfc2440.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>",
+ "id": "PGP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PICS-LABELS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PICS-LABELS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PICS-SERVICES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PICS-SERVICES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PICSRULES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PICSRULES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PKCS1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PKCS1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PKCS5.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "PKCS5"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PKCS5Amd1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "PKCS5Amd1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PNG2e.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PNG2e"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POCO-SCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POCO-SCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POINTERS-IN-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POINTERS-IN-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POSITIONING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POSITIONING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-DR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-DR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-FORMAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-FORMAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-GROUPING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-GROUPING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-TEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-TEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-VOC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-VOC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/POWDER-XSD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "POWDER-XSD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRINT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Hå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> ",
+ "id": "PRINT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRIV-ICONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://www.azarask.in/blog/post/what-should-matter-in-privacy ",
+ "id": "PRIV-ICONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRIV-ICONSET.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> URI: http://www.netzpolitik.org/wp-upload/data-privacy-icons-v01.pdf ",
+ "id": "PRIV-ICONSET"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRIV-LABEL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://cups.cs.cmu.edu/soups/2009/proceedings/a4-kelley.pdf ",
+ "id": "PRIV-LABEL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRIVACY-ISSUES-GEO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: http://escholarship.org/uc/item/0rp834wf ",
+ "id": "PRIVACY-ISSUES-GEO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PROC-MODEL-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PROC-MODEL-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PROGRESS-EVENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Charles McCathieNevile. <a href=\"http://www.w3.org/TR/2008/WD-progress-events-20080521\"><cite>Progress Events 1.0.</cite></a> 21 May 2008. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2008/WD-progress-events-20080521\">http://www.w3.org/TR/2008/WD-progress-events-20080521</a> ",
+ "id": "PROGRESS-EVENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PRONUNCIATION-LEXICON.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PRONUNCIATION-LEXICON"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PROV-QUERY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PROV-QUERY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PROV-RDF-S.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PROV-RDF-S"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/PWGMSN.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "PWGMSN"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/QA-HANDBOOK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "QA-HANDBOOK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/QAFRAME-OPS-EXTECH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dimitris Dimitriadis; et al. <a href=\"http://www.w3.org/TR/2002/NOTE-qaframe-ops-extech-20021202\"><cite>QA Framework: Operational Examples & 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> ",
+ "id": "QAFRAME-OPS-EXTECH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/QAFRAME-SPEC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "QAFRAME-SPEC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/QAFRAME-TEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "QAFRAME-TEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/QNAMES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "QNAMES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RANDOM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RANDOM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-CONCEPTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-CONCEPTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-DAWG-UC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-DAWG-UC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-MT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-MT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SPARQL-JSON-RES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SPARQL-JSON-RES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SPARQL-PROTOCOL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SPARQL-PROTOCOL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SPARQL-QUERY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SPARQL-QUERY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SPARQL-XMLRES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SPARQL-XMLRES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SYNTAX-GRAMMAR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SYNTAX-GRAMMAR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-SYNTAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-SYNTAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-TESTCASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-TESTCASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDF-UML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDF-UML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDFA-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Shane McCarron; et al. <a href=\"http://www.w3.org/TR/2010/WD-rdfa-core-20101026\"><cite>RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes.</cite></a>26 October 2010. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/2010/WD-rdfa-core-20101026\">http://www.w3.org/TR/2010/WD-rdfa-core-20101026</a> ",
+ "id": "RDFA-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDFA-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDFA-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDFA-SYNTAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDFA-SYNTAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDFCAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDFCAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RDFTM-SURVEY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RDFTM-SURVEY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RELAXNG-SCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html\"><cite>Information technology -- Document Schema Definition Language (DSDL) -- Part 2: Regular-grammar-based validation -- RELAX NG</cite></a>. ISO/IEC 19757-2:2008. URI: <a href=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html\">http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html</a>",
+ "id": "RELAXNG-SCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/REUSABLE-DIALOG-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "REUSABLE-DIALOG-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/REX-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "REX-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/REX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "REX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC1034.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC1034"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC1738.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC1738"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC1808.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC1808"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2045.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2045"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2046.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2046"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2119.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2119"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2231.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2231"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2318.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2318"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2397.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "L. Masinter. <a href=\"http://www.ietf.org/rfc/rfc2397.txt\"><cite>The "data" 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> ",
+ "id": "RFC2397"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2426.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2426"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2531.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2531"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2533.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2533"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2534.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2534"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2854.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2854"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC2978.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC2978"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3161-PKIX-UPDATE-9.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC3161-PKIX-UPDATE-9"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3161.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC3161"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3236.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC3236"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3279.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "W. Polk, R. Housley, L. Bassham. <a href=\"http://www.ietf.org/rfc/rfc3279.txt\"><cite>Algorithms 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>",
+ "id": "RFC3279"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3406.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC3406"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3490.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC3490"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC3987.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "M. Dü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> ",
+ "id": "RFC3987"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4050.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC4050"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4051.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC4051"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4055.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. <a href=\"http://www.ietf.org/rfc/rfc4055.txt\">http://www.ietf.org/rfc/rfc4055.txt",
+ "id": "RFC4055"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4122.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC4122"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4281.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "R. Gellens, D. Singer, P. Frojdh. <a href=\"http://www.ietf.org/rfc/rfc4281.txt\"><cite>The Codecs Parameter for "Bucket" 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> ",
+ "id": "RFC4281"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4572.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC4572"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4627.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "D. Crockford <a href=\"http://www.ietf.org/rfc/rfc4627.txt\">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>",
+ "id": "RFC4627"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4770.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC4770"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC4949.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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.faqs.org/rfcs/rfc4949.html\">http://www.faqs.org/rfcs/rfc4949.html</a>",
+ "id": "RFC4949"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC5280.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC5280"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC5480.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "RFC5480"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RFC5545.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RFC5545"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-BLD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Michael Kifer; Harold Boley. <a href=\"http://www.w3.org/TR/2009/CR-rif-bld-20091001/\"><cite>RIF Basic Logic Dialect.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-bld-20091001/\">http://www.w3.org/TR/2009/CR-rif-bld-20091001/</a> ",
+ "id": "RIF-BLD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Adrian Paschke; et al. <a href=\"http://www.w3.org/TR/2009/CR-rif-core-20091001/\"><cite>RIF Core.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-core-20091001/\">http://www.w3.org/TR/2009/CR-rif-core-20091001/</a> ",
+ "id": "RIF-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-DTB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Harold Boley; Michael Kifer; Axel Polleres. <a href=\"http://www.w3.org/TR/2009/CR-rif-dtb-20091001/\"><cite>RIF Datatypes and Built-Ins 1.0.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-dtb-20091001/\">http://www.w3.org/TR/2009/CR-rif-dtb-20091001/</a> ",
+ "id": "RIF-DTB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-FLD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Michael Kifer; Harold Boley. <a href=\"http://www.w3.org/TR/2009/CR-rif-fld-20091001/\"><cite>RIF Framework for Logic Dialects.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-fld-20091001/\">http://www.w3.org/TR/2009/CR-rif-fld-20091001/</a> ",
+ "id": "RIF-FLD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-OVERVIEW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Michael Kifer; Harold Boley. <a href=\"http://www.w3.org/TR/2009/WD-rif-overview-20091001/\"><cite>RIF Overview.</cite></a> 1 October 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-rif-overview-20091001/\">http://www.w3.org/TR/2009/WD-rif-overview-20091001/</a> ",
+ "id": "RIF-OVERVIEW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-PRD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Adrian Paschke; Christian de Sainte Marie; Gary Hallmark. <a href=\"http://www.w3.org/TR/2009/CR-rif-prd-20091001/\"><cite>RIF Production Rule Dialect.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-prd-20091001/\">http://www.w3.org/TR/2009/CR-rif-prd-20091001/</a> ",
+ "id": "RIF-PRD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-RDF-OWL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Jos de Bruijn. <a href=\"http://www.w3.org/TR/2009/CR-rif-rdf-owl-20091001/\"><cite>RIF RDF and OWL Compatibility.</cite></a> 1 October 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-rif-rdf-owl-20091001/\">http://www.w3.org/TR/2009/CR-rif-rdf-owl-20091001/</a> ",
+ "id": "RIF-RDF-OWL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-TEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Leora Morgenstern; Stella Mitchell; Adrian Paschke. <a href=\"http://www.w3.org/TR/2009/WD-rif-test-20091001/\"><cite>RIF Test Cases.</cite></a> 1 October 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-rif-test-20091001/\">http://www.w3.org/TR/2009/WD-rif-test-20091001/</a> ",
+ "id": "RIF-TEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIF-UCR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RIF-UCR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RIPEMD-160.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "CryptoBytes, Volume 3, Number 2. <a href=\"http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/AB-9601.pdf\"><cite>The Cryptographic Hash Function RIPEMD-160</cite></a>. RSA Laboratories. Autumn 1997. URI: <a href=\"http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/AB-9601.pdf\">http://homes.esat.kuleuven.be/~cosicart/pdf/AB-9601/AB-9601.pdf</a>",
+ "id": "RIPEMD-160"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/RUBY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "RUBY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/S6GROUP2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "S6GROUP2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SAML2-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "SAML2-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SAWSDL-GUIDE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Rama Akkiraju; Brahmananda Sapkota. <a href=\"http://www.w3.org/TR/2007/NOTE-sawsdl-guide-20070828\"><cite>Semantic Annotations for WSDL and XML Schema — 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> ",
+ "id": "SAWSDL-GUIDE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SAWSDL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SAWSDL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "SAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SCHEMA-ARCH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ralph R. Swick; Henry S. Thompson. <a href=\"http://www.w3.org/TR/1999/NOTE-schema-arch-19991007\"><cite>The Cambridge Communiqué.</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> ",
+ "id": "SCHEMA-ARCH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SCXML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Torbjö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> ",
+ "id": "SCXML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SECG1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "SECG1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SELECT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SELECT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SELECTORS-API.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SELECTORS-API"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SEMANTIC-INTERPRETATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SEMANTIC-INTERPRETATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SGML-CATALOG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Paul Grosso. <cite><a href='http://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='http://www.oasis-open.org/html/a401.htm'>http://www.oasis-open.org/html/a401.htm</a> ",
+ "id": "SGML-CATALOG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SGML-XML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SGML-XML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SHA-1-Analysis.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "SHA-1-Analysis"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SHA-1-Collisions.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>)",
+ "id": "SHA-1-Collisions"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SKOS-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ed Summers; Antoine Isaac. <a href=\"http://www.w3.org/TR/2009/WD-skos-primer-20090317\"><cite>SKOS Simple Knowledge Organization System Primer.</cite></a> 17 March 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-skos-primer-20090317\">http://www.w3.org/TR/2009/WD-skos-primer-20090317</a> ",
+ "id": "SKOS-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SKOS-REFERENCE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Sean Bechhofer; Alistair Miles. <a href=\"http://www.w3.org/TR/2009/CR-skos-reference-20090317\"><cite>SKOS Simple Knowledge Organization System Reference.</cite></a> 17 March 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-skos-reference-20090317\">http://www.w3.org/TR/2009/CR-skos-reference-20090317</a> ",
+ "id": "SKOS-REFERENCE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SKOS-UCR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SKOS-UCR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SMIL-ANIMATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SMIL-ANIMATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SMIL10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SMIL10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SMIL2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SMIL2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SMIL20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SMIL20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SMIL3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SMIL3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SML-IF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SML-IF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP11-ROR-HTTPBINDING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP11-ROR-HTTPBINDING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-AF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Henrik Frystyk Nielsen; Hervé 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> ",
+ "id": "SOAP12-AF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-EMAIL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-EMAIL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-MTOM-POLICY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-MTOM-POLICY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-MTOM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-MTOM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-N11N.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-N11N"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-OS-UCR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-OS-UCR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-PART0.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-PART0"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-PART1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-PART1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-PART2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-PART2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-PART3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-PART3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-REP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-REP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAP12-TESTCOLLECTION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAP12-TESTCOLLECTION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SOAPJMS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SOAPJMS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SP800-38D.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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 URI: <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>",
+ "id": "SP800-38D"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SP800-56A.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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 URI: <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>",
+ "id": "SP800-56A"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SP800-57.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf\"><cite> Recommendation for Key Management – Part 1: General (Revised).</cite></a> SP800-57. 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-revised2_Mar08-2007.pdf\" > http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57-Part1-revised2_Mar08-2007.pdf</a>",
+ "id": "SP800-57"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SPEC-VARIABILITY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dominique Hazaë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> ",
+ "id": "SPEC-VARIABILITY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SPEECH-GRAMMAR.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SPEECH-GRAMMAR"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SPEECH-SYNTHESIS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SPEECH-SYNTHESIS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SPEECH-SYNTHESIS11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Zhi Wei Shuang (双志伟); 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> ",
+ "id": "SPEECH-SYNTHESIS11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SPROT11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SPROT11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SRGB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "SRGB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SSML-SAYAS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SSML-SAYAS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SSML11REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SSML11REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SUS3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "SUS3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVG10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVG10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVG11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dean Jackson; 藤沢 淳; Jon Ferraiolo. <a href=\"http://www.w3.org/TR/2003/REC-SVG11-20030114\"><cite>Scalable Vector Graphics (SVG) 1.1 Specification.</cite></a> 14 January 2003. W3C Recommendation. URL: <a href=\"http://www.w3.org/TR/2003/REC-SVG11-20030114\">http://www.w3.org/TR/2003/REC-SVG11-20030114</a> ",
+ "id": "SVG11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVG12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVG12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVG2REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVG2REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGFILTER12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Erik Dahlströ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> ",
+ "id": "SVGFILTER12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGFILTERPRIMER12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Erik Dahlströ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> ",
+ "id": "SVGFILTERPRIMER12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGFILTERREQS12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Erik Dahlströ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> ",
+ "id": "SVGFILTERREQS12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGMOBILE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGMOBILE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGMOBILE12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGMOBILE12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGMOBILEREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGMOBILEREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGPRINT12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGPRINT12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGPRINTPRIMER12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGPRINTPRIMER12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGPRINTREQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGPRINTREQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGREQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGREQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGTINY12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGTINY12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SVGTINY12REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SVGTINY12REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SW-OOSD-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SW-OOSD-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-CLASSES-AS-VALUES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-CLASSES-AS-VALUES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-N-ARYRELATIONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-N-ARYRELATIONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-SKOS-CORE-GUIDE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-SKOS-CORE-GUIDE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-SKOS-CORE-SPEC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-SKOS-CORE-SPEC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-SPECIFIED-VALUES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Alan Rector. <a href=\"http://www.w3.org/TR/2005/NOTE-swbp-specified-values-20050517\"><cite>Representing Specified Values in OWL: "value partitions" and "value sets".</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> ",
+ "id": "SWBP-SPECIFIED-VALUES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-THESAURUS-PUBGUIDE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-THESAURUS-PUBGUIDE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-VOCAB-PUB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-VOCAB-PUB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SWBP-XSCH-DATATYPES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SWBP-XSCH-DATATYPES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SXBL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SXBL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SXSWGRIDS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SXSWGRIDS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SYMM-MODULES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "SYMM-MODULES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/SYSINFOAPI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Dzung Tran, Max Froumentin, eds. <a href=\"http://www.w3.org/TR/2010/WD-system-info-api-20100202/\"><cite>The System Information API</cite>, 2 February 2010, W3C Working Draft. (Work in Progess.) 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>",
+ "id": "SYSINFOAPI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TAGLINK20030116.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TAGLINK20030116"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TEST-METADATA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TEST-METADATA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/THEGRID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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.",
+ "id": "THEGRID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TIMESHEETS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TIMESHEETS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TIMEZONE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Martin Dü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> ",
+ "id": "TIMEZONE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TRIPLEDES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.ansi.org/\"><cite>ANSI X9.52: Triple Data Encryption Algorithm Modes of Operation. 1998</cite></a>. URI: <a href=\"http://www.ansi.org/\">http://www.ansi.org/</a>",
+ "id": "TRIPLEDES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TTAF1-DFXP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Glenn Adams. <a href=\"http://www.w3.org/TR/2006/CR-ttaf1-dfxp-20061116\"><cite>Timed Text (TT) Authoring Format 1.0 – 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> ",
+ "id": "TTAF1-DFXP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TTAF1-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TTAF1-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TURINGTEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TURINGTEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TURTLE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "David Beckett, Tim Berners-Lee. <a href=\"http://www.w3.org/TeamSubmission/turtle/\">Turtle: Terse RDF Triple Language</a></cite> January 2008. W3C Team Submission. URL: <a href=\"http://www.w3.org/TeamSubmission/turtle/\">http://www.w3.org/TeamSubmission/turtle/</a> ",
+ "id": "TURTLE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TVWEB-URI-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "TVWEB-URI-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/TYPED-ARRAYS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Vladimir Vukicevic, Kenneth Russell. <a href=\"https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html\"><cite>Typed Arrays</cite></a> Khronos Working Draft. (Work in progress.) URL: <a href=\"https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html\">https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/doc/spec/TypedArray-spec.html</a> ",
+ "id": "TYPED-ARRAYS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/Tobin.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "R. Tobin. <a href=\"http://lists.w3.org/Archives/Member/w3c-xml-core-wg/2000OctDec/0054\"><cite>Infoset for external entities</cite></a>, XML Core mailing list, 2000 [<a href=\"http://cgi.w3.org/MemberAccess/AccessRequest\">W3C Member Only</a>]. URI: <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>",
+ "id": "Tobin"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAAG10-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAAG10-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAAG10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAAG10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAAG20-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAAG20-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAAG20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAAG20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX14.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX14"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX21.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX21"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX24.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX24"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX27.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX27"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UAX29.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UAX29"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNDERSTANDING-WCAG20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UNDERSTANDING-WCAG20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNICODE-XML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Asmus Freytag; Martin Dü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> ",
+ "id": "UNICODE-XML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNICODE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UNICODE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNICODE310.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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 <a href="http://www.unicode.org/">http://www.unicode.org/</a> 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> ",
+ "id": "UNICODE310"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNICODE4.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UNICODE4"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UNICODE5.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UNICODE5"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UPNP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "UPnP Forum. <a href=\"http://upnp.org/specs/arch/UPnP-arch-DeviceArchitecture-v1.1.pdf\"><cite>UPnP Device Architecture. Version 1.1.</cite></a>. 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>",
+ "id": "UPNP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/URI-CLARIFICATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "URI-CLARIFICATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/URI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "URI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/URN-OID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "URN-OID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/URN.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "URN"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UTF-16.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "UTF-16"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UTF-8.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "UTF-8"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/UTR24.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "UTR24"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VBI-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VBI-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-ARCHITECTURE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-ARCHITECTURE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-DIALOG-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-DIALOG-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-GRAMMAR-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-GRAMMAR-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-INTRO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-INTRO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-NLU-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-NLU-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE-TTS-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE-TTS-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICEXML20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICEXML20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICEXML21.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICEXML21"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VOICEXML30.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VOICEXML30"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/VXML30REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "VXML30REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-AGE-LITERATURE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-AGE-LITERATURE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-ARIA-IMPLEMENTATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-ARIA-IMPLEMENTATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-ARIA-PRACTICES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-ARIA-PRACTICES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-ARIA-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-ARIA-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-ARIA-ROADMAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-ARIA-ROADMAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WAI-ARIA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WAI-ARIA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG10-CORE-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG10-CORE-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG10-CSS-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG10-CSS-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG10-HTML-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG10-HTML-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG10-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG10-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG2-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG2-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG2-TECH-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG2-TECH-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG20-TECHS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG20-TECHS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCAG20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCAG20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCSS11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCSS11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WCSS12.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WCSS12"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEB-FORMS-2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEB-FORMS-2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBARCH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBARCH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBCGM.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBCGM"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBCGM20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBCGM20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBCGM21.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBCGM21"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBIDL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBIDL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBMESSAGING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson. <cite><a href=\"http://dev.w3.org/html5/postmsg/\">HTML5 Web Messaging</a></cite>. W3C Working Draft. (Work in progress.) URL: <a href=\"http://dev.w3.org/html5/postmsg/\">http://dev.w3.org/html5/postmsg/</a> ",
+ "id": "WEBMESSAGING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBONT-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBONT-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBSOCKETS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson. <cite><a href=\"http://dev.w3.org/html5/websockets//\">Web Sockets</a>.</cite>. W3C Working Draft. (Work in progress.) URL: <a href=\"http://dev.w3.org/html5/websockets/\">http://dev.w3.org/html5/websockets/</a> ",
+ "id": "WEBSOCKETS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBSTORAGE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WEBSTORAGE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WEBWORKERS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ian Hickson. <cite><a href=\"http://www.w3.org/TR/2009/WD-workers-20091222/\">Web Workers</a>.</cite> 22 December 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-workers-20091222/\">http://www.w3.org/TR/2009/WD-workers-20091222/</a> ",
+ "id": "WEBWORKERS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WICD.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WICD"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WICDFULL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WICDFULL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WICDMobile10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WICDMobile10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-APIS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres; Robin Berjon; Arve Bersvendsen. <a href=\"http://www.w3.org/TR/2009/CR-widgets-apis-20091222/\"><cite>The Widget Interface.</cite></a> 22 December 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-widgets-apis-20091222/\">http://www.w3.org/TR/2009/CR-widgets-apis-20091222/</a> ",
+ "id": "WIDGETS-APIS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-DIGSIG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres. <a href=\"http://www.w3.org/TR/2008/WD-widgets-digsig-20080414\"><cite>Widgets 1.0: Digital Signature.</cite></a> 14 April 2008. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2008/WD-widgets-digsig-20080414\">http://www.w3.org/TR/2008/WD-widgets-digsig-20080414</a> ",
+ "id": "WIDGETS-DIGSIG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-LAND.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres. <a href=\"http://www.w3.org/TR/2008/WD-widgets-land-20080414\"><cite>Widgets 1.0: The Widget Landscape (Q1 2008).</cite></a> 14 April 2008. W3C Working Draft. (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> ",
+ "id": "WIDGETS-LAND"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-PC-INTEROP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Cáceres, Samuel Santos, Daniel Silva. <a href=\"http://dev.w3.org/2006/waf/widgets/imp-report/\"> Implementation Report: Widgets Packaging and Configuration</a>, URL: <a href=\"http://dev.w3.org/2006/waf/widgets/imp-report/\">http://dev.w3.org/2006/waf/widgets/imp-report/</a> ",
+ "id": "WIDGETS-PC-INTEROP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-PC-TESTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres, Kai Hendry. <a href=\"http://dev.w3.org/2006/waf/widgets/test-suite/\"><cite>Test Suite for Packaging and Configuration.</cite></a> W3C Test Suite. (Work in progress.) URL: <a href=\"http://dev.w3.org/2006/waf/widgets/test-suite/\">http://dev.w3.org/2006/waf/widgets/test-suite/</a> ",
+ "id": "WIDGETS-PC-TESTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres. <a href=\"http://www.w3.org/TR/2009/WD-widgets-reqs-20090430\"><cite>Widgets 1.0: Requirements.</cite></a> 30 April 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-widgets-reqs-20090430\">http://www.w3.org/TR/2009/WD-widgets-reqs-20090430</a> ",
+ "id": "WIDGETS-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS-UPDATES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres. <a href=\"http://www.w3.org/TR/2008/WD-widgets-updates-20081007\"><cite>Widgets 1.0: 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> ",
+ "id": "WIDGETS-UPDATES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WIDGETS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Marcos Caceres. <a href=\"http://www.w3.org/TR/2009/CR-widgets-20091201/\"><cite>Widget Packaging and Configuration.</cite></a> 01 December 2009. W3C Candidate Recommendation. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/CR-widgets-20091201/\">http://www.w3.org/TR/2009/CR-widgets-20091201/</a> ",
+ "id": "WIDGETS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WINDOW.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WINDOW"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WORDNET-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WORDNET-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ADDR-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ADDR-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ADDR-METADATA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ADDR-METADATA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ADDR-SOAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ADDR-SOAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ARCH-SCENARIOS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ARCH-SCENARIOS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ARCH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ARCH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-CDL-10-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-CDL-10-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-CDL-10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-CDL-10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-CHOR-MODEL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-CHOR-MODEL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-CHOR-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-CHOR-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-DESC-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-DESC-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-DESC-USECASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-DESC-USECASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-ENUMERATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-ENUMERATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-EVENTING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-EVENTING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-FRAGMENT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-FRAGMENT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-GLOSS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-GLOSS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-I18N-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-I18N-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-I18N-SCENARIOS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-I18N-SCENARIOS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-I18N.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-I18N"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-METADATA-EXCHANGE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-METADATA-EXCHANGE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-POLICY-ATTACH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ümit Yalç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> ",
+ "id": "WS-POLICY-ATTACH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-POLICY-GUIDELINES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-POLICY-GUIDELINES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-POLICY-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-POLICY-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-POLICY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ümit Yalç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> ",
+ "id": "WS-POLICY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-RESOURCE-TRANSFER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-RESOURCE-TRANSFER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-SECURITY11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.oasis-open.org/specs/index.php#wssv1.1\"><cite>Web Services Security v1.1</cite></a>, February 2006. OASIS Standard. URL: <a href=\"http://www.oasis-open.org/specs/index.php#wssv1.1\">http://www.oasis-open.org/specs/index.php#wssv1.1</a> ",
+ "id": "WS-SECURITY11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WS-TRANSFER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WS-TRANSFER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSA-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSA-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSC-THREATS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSC-THREATS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSC-UI.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSC-UI"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSC-USECASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSC-USECASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSC-XIT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSC-XIT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL11ELEMENTIDENTIFIERS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL11ELEMENTIDENTIFIERS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-ADDITIONAL-MEPS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-ADDITIONAL-MEPS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-ADJUNCTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-ADJUNCTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-ALTSCHEMALANGS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-ALTSCHEMALANGS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20-SOAP11-BINDING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20-SOAP11-BINDING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSDL20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSDL20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WSLC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "WSLC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/WebBug-Wikipedia.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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> ",
+ "id": "WebBug-Wikipedia"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/X11COLORS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "X11COLORS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/X509V3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>ITU-T Recommendation X.509 version 3 (1997). \"Information Technology - Open Systems Interconnection - The Directory Authentication Framework\" ISO/IEC 9594-8:1997</cite>.",
+ "id": "X509V3"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XACML-INTRO.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://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=\"http://www.oasis-open.org/committees/download.php/2713/Brief_Introduction_to_XACML.html\"> http://www.oasis-open.org/committees/download.php/2713/Brief_Introduction_to_XACML.html</a>",
+ "id": "XACML-INTRO"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XACML20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "XACML20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XADES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "XADES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XAG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XAG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBC-CHARACTERIZATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XBC-CHARACTERIZATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBC-MEASUREMENT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XBC-MEASUREMENT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBC-PROPERTIES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XBC-PROPERTIES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBC-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XBC-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBL-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Lachlan Hunt; Marcos Caceres. <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> ",
+ "id": "XBL-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XBL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XBL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFORMS-11-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XFORMS-11-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFORMS-BASIC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XFORMS-BASIC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFORMS-FOR-HTML.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "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> ",
+ "id": "XFORMS-FOR-HTML"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFORMS10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XFORMS10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFORMS11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XFORMS11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XFRAMES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XFRAMES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-ACCESS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-ACCESS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-BASIC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Mark Baker; et al. <a href=\"http://www.w3.org/TR/2000/REC-xhtml-basic-20001219\"><cite>XHTML™ 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> ",
+ "id": "XHTML-BASIC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-BASIC11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Mark Baker; et al. <a href=\"http://www.w3.org/TR/2008/REC-xhtml-basic-20080729\"><cite>XHTML™ 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> ",
+ "id": "XHTML-BASIC11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-FORMS-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-FORMS-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-MEDIA-TYPES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-MEDIA-TYPES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-MODULARIZATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<a href=\"http://www.w3.org/TR/2004/WD-xhtml-modularization-20040218\"><cite>Modularization of XHTML™ 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> ",
+ "id": "XHTML-MODULARIZATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-MODULARIZATION11-2e.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Shane McCarron. <a href=\"http://www.w3.org/TR/2010/REC-xhtml-modularization-20100729\"><cite>XHTML™ 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> ",
+ "id": "XHTML-MODULARIZATION11-2e"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-MODULARIZATION11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Shane McCarron; et al. <a href=\"http://www.w3.org/TR/2008/REC-xhtml-modularization-20081008\"><cite>XHTML™ 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> ",
+ "id": "XHTML-MODULARIZATION11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-PRINT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-PRINT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-PROF-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "David Raggett; Ted Wugofski; Peter Stark. <a href=\"http://www.w3.org/TR/1999/WD-xhtml-prof-req-19990906\"><cite>XHTML™ 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> ",
+ "id": "XHTML-PROF-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-RDFA-PRIMER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-RDFA-PRIMER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-RDFA-SCENARIOS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-RDFA-SCENARIOS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-RDFA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Shane McCarron; et. al. <a href=\"http://www.w3.org/TR/2010/WD-xhtml-rdfa-20100803\"><cite>XHTML+RDFa 1.1.</cite></a> 3 August 2010. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/2010/WD-xhtml-rdfa-20100803\">http://www.w3.org/TR/WD-xhtml-rdfa-20100803</a> ",
+ "id": "XHTML-RDFA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-ROADMAP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-ROADMAP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-ROLE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-ROLE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML-VOCAB.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML-VOCAB"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML1-SCHEMA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTML1-SCHEMA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Steven Pemberton. <a href=\"http://www.w3.org/TR/2002/REC-xhtml1-20020801/\"><cite>XHTML™ 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> ",
+ "id": "XHTML10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML11-2e.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Masayasu Ishikawa; Shane McCarron. <a href=\"http://www.w3.org/TR/2007/WD-xhtml11-20070216\"><cite>XHTML™ 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> ",
+ "id": "XHTML11-2e"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Murray Altheim; Shane McCarron. <a href=\"http://www.w3.org/TR/2001/REC-xhtml11-20010531\"><cite>XHTML™ 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> ",
+ "id": "XHTML11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTML2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Micah Dubinko; et al. <a href=\"http://www.w3.org/TR/2006/WD-xhtml2-20060726\"><cite>XHTML™ 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> ",
+ "id": "XHTML2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTMLPLUSMATHMLPLUSSVG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTMLPLUSMATHMLPLUSSVG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XHTMLPLUSSMIL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XHTMLPLUSSMIL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XINCLUDE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XINCLUDE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XKMS-PGP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Tommy Lindberg; José 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> ",
+ "id": "XKMS-PGP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XKMS-WSDL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XKMS-WSDL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XKMS2-BINDINGS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XKMS2-BINDINGS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XKMS2-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XKMS2-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XKMS2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XKMS2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK-PRINCIPLES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK-PRINCIPLES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK10-EXT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK10-EXT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XLINK2RDF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XLINK2RDF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-BLUEBERRY-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-BLUEBERRY-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-C14N.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-C14N"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-C14N11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-C14N11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-C14N20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "John Boyer; Glen Marcy; Pratik Datta; Frederick Hirsch. <a href=\"http://www.w3.org/TR/2010/WD-xml-c14n2-20100304/\"><cite> Canonical XML Version 2.0</cite></a>, 4 March 2010. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/xml-c14n2/\">http://www.w3.org/TR/xml-c14n2/</a>",
+ "id": "XML-C14N20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-CANONICAL-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-CANONICAL-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-ENCRYPTION-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-ENCRYPTION-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-ENTITY-NAMES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-ENTITY-NAMES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-EVENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-EVENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-EXC-C14N.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-EXC-C14N"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-FRAG-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-FRAG-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-FRAGID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-FRAGID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-FRAGMENT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-FRAGMENT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-I18N-BP.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-I18N-BP"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-ID-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-ID-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-ID.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-ID"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-INFOSET-RDFS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-INFOSET-RDFS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-INFOSET-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-INFOSET-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-INFOSET.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-INFOSET"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-Japanese.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "M. Murata. <a href=\"http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/\">XML Japanese Profile (2nd Edition)</a>. W3C Member Submission. March 2005 URL: <a href=\"http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/\"> http://www.w3.org/Submission/2005/SUBM-japanese-xml-20050324/</a>",
+ "id": "XML-Japanese"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-LINK-STYLE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-LINK-STYLE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-MEDIA-TYPES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ümit Yalçı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> ",
+ "id": "XML-MEDIA-TYPES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-MT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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. URI: <a href=\"http://www.ietf.org/rfc/rfc3023.txt\"> http://www.ietf.org/rfc/rfc3023.txt</a>.",
+ "id": "XML-MT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-NAMES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-NAMES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-NAMES11-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-NAMES11-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-NAMES11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-NAMES11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-PARSER-STAX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "XML-PARSER-STAX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-SCHEMA-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-SCHEMA-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML-STYLESHEET.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML-STYLESHEET"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML10-4e.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML10-4e"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XML11SCHEMA10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XML11SCHEMA10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLBASE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLBASE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-BESTPRACTICES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Pratik Datta; Frederick Hirsch. <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-bestpractices-20100204/\"><cite>XML Signature Best Practices.</cite></a> 4 February 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-bestpractices-20100204/\">http://www.w3.org/TR/2010/WD-xmldsig-bestpractices-20100204/</a> ",
+ "id": "XMLDSIG-BESTPRACTICES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-COMPLEXITY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-COMPLEXITY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-CORE1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "D. Eastlake, J. Reagle, D. Solo, F. Hirsch, T. Roessler, K. Yiu. <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-core1-20101130/\"><cite>XML Signature Syntax and Processing Version 1.1.</cite></a> 30 November 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-core1-20101130/\">http://www.w3.org/TR/2010/WD-xmldsig-core1-20101130/</a> ",
+ "id": "XMLDSIG-CORE1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-CORE2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Mark Bartel; John Boyer; Barb Fox et al. <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-core2-20100304/\"><cite>XML Signature Syntax and Processing Version 2.0</cite></a>, 4 March 2010. W3C Working Draft. URL: <a href=\"http://www.w3.org/TR/xmldsig-core2/\">http://www.w3.org/TR/xmldsig-core2/</a>",
+ "id": "XMLDSIG-CORE2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-GARCIA.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>, Thesis, 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>",
+ "id": "XMLDSIG-GARCIA"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-PROPERTIES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Frederick Hirsch. <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-properties-20100204/\"><cite>XML Signature Properties.</cite></a> 4 February 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmldsig-properties-20100204/\">http://www.w3.org/TR/2010/WD-xmldsig-properties-20100204/</a> ",
+ "id": "XMLDSIG-PROPERTIES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-SEMANTICS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-SEMANTICS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-SIMPLIFY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-SIMPLIFY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-THOMPSON.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-THOMPSON"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-XPATH-FILTER2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG-XPATH-FILTER2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG-XPATH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Pratik Datta. <a href=\"http://www.w3.org/TR/xmldsig-xpath/\"><cite>XML Signature Streaming Profile of XPath 1.0</cite></a> 31 August 2010. W3C Working draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/xmldsig-xpath/\">http://www.w3.org/TR/xmldsig-xpath/</a> ",
+ "id": "XMLDSIG-XPATH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLDSIG2ED-TESTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLDSIG2ED-TESTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLENC-CORE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLENC-CORE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLENC-CORE1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "J. Reagle; D. Eastlake, F. Hirsch, T. Roessler <a href=\"http://www.w3.org/TR/2010/WD-xmlenc-core1-20101130/\"><cite>XML Encryption Syntax and Processing Version 1.1.</cite></a> 30 November 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmlenc-core1-20101130/\">http://www.w3.org/TR/2010/WD-xmlenc-core1-20101130/</a> ",
+ "id": "XMLENC-CORE1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLENC-DECRYPT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLENC-DECRYPT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLHTTPREQUEST.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLHTTPREQUEST"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLHTTPREQUEST2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLHTTPREQUEST2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLP-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLP-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLP-SCENARIOS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLP-SCENARIOS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-0.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-0"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-11-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-11-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-FORMAL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-FORMAL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-GUIDE2VERSIONING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-GUIDE2VERSIONING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-PATTERNS-ADVANCED.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-PATTERNS-ADVANCED"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-PATTERNS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-PATTERNS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA-REF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSCHEMA-REF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA11-1.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "C. M. Sperberg-McQueen; Henry S. Thompson; Shudi Gao. <a href=\"http://www.w3.org/TR/2009/WD-xmlschema11-1-20090130\"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures.</cite></a> 30 January 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-xmlschema11-1-20090130\">http://www.w3.org/TR/2009/WD-xmlschema11-1-20090130</a> ",
+ "id": "XMLSCHEMA11-1"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSCHEMA11-2.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Henry S. Thompson; et al. <a href=\"http://www.w3.org/TR/2009/WD-xmlschema11-2-20090130\"><cite>W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes.</cite></a> 30 January 2009. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2009/WD-xmlschema11-2-20090130\">http://www.w3.org/TR/2009/WD-xmlschema11-2-20090130</a> ",
+ "id": "XMLSCHEMA11-2"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC-ALGORITHMS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Thomas Roessler; Frederick Hirsch; Kelvin Yiu. <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-algorithms-20100316/\"><cite>XML Security Algorithm Cross-Reference.</cite></a> 16 March 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-algorithms-20100316/\">http://www.w3.org/TR/2010/WD-xmlsec-algorithms-20100316/</a> ",
+ "id": "XMLSEC-ALGORITHMS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC-DERIVEDKEYS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Magnus Nyströ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> ",
+ "id": "XMLSEC-DERIVEDKEYS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC-GHCIPHERS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Magnus Nyström; Frederick Hirsch. <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-generic-hybrid-20100513/\"><cite>XML Security Generic Hybrid Ciphers.</cite></a> 14 May 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-generic-hybrid-20100513/\">http://www.w3.org/TR/2010/WD-xmlsec-generic-hybrid-20100513/</a> ",
+ "id": "XMLSEC-GHCIPHERS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC-NEXTSTEPS-2007.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<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>",
+ "id": "XMLSEC-NEXTSTEPS-2007"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC-RELAXNG.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Frederick Hirsch. <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-rngschema-20100316/\"><cite>XML Security RELAX NG Schemas.</cite></a> 16 March 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-rngschema-20100316/\">http://www.w3.org/TR/2010/WD-xmlsec-rngschema-20100316/</a>",
+ "id": "XMLSEC-RELAXNG"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSEC11-REQS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Frederick Hirsch, Thomas Roessler. <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-reqs-20100204/\"><cite>XML Security 1.1 Requirements and Design Considerations.</cite></a> 4 February 2010. W3C Working Draft. (Work in progress.) URL: <a href=\"http://www.w3.org/TR/2010/WD-xmlsec-reqs-20100204/\">http://www.w3.org/TR/2010/WD-xmlsec-reqs-20100204/</a> ",
+ "id": "XMLSEC11-REQS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XMLSTYLE.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XMLSTYLE"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XOP10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XOP10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XOPINC-FAQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XOPINC-FAQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH-DATAMODEL.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH-DATAMODEL"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH-FULL-TEXT-10-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH-FULL-TEXT-10-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH-FULL-TEXT-10-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH-FULL-TEXT-10-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH-FULL-TEXT-10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH-FULL-TEXT-10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH-FUNCTIONS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH-FUNCTIONS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPATH20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPATH20REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "K. Karun; Mary F. Ferná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> ",
+ "id": "XPATH20REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPROC-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPROC-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPROC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPROC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-ELEMENT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-ELEMENT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-FRAMEWORK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-FRAMEWORK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-INFOSET-LIAISON.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-INFOSET-LIAISON"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-POLICY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "XPTR-POLICY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-XMLNS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-XMLNS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-XPOINTER-CR2001.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Ron Daniel Jr.; Eve Maler; Steven DeRose. <a href=\"http://www.w3.org/TR/2001/CR-xptr-20010911/\"><cite>XPointer xpointer() Scheme.</cite></a> January 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> ",
+ "id": "XPTR-XPOINTER-CR2001"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XPTR-XPOINTER.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XPTR-XPOINTER"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-11-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-11-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-11-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-11-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-SEMANTICS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-SEMANTICS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-SX-10-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-SX-10-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-SX-10-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-SX-10-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-SX-10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-SX-10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-UPDATE-10-REQUIREMENTS.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-UPDATE-10-REQUIREMENTS"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-UPDATE-10-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-UPDATE-10-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-UPDATE-10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-UPDATE-10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-USE-CASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-USE-CASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY-XPATH-PARSING.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY-XPATH-PARSING"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERY.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERY"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERYX-11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERYX-11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUERYX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUERYX"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XQUPDATEUSECASES.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XQUPDATEUSECASES"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSL10.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSL10"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSL11-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSL11-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSL11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSL11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLFO20-REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLFO20-REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLREQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLREQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT-XQUERY-SERIALIZATION.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT-XQUERY-SERIALIZATION"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT11.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT11"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT11REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT11REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT20.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT20"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT20REQ.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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> ",
+ "id": "XSLT20REQ"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/XSLT21.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "Michael Kay. <a href=\"http://www.w3.org/TR/2010/WD-xslt21-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-xslt21-20100511\">http://www.w3.org/TR/2010/WD-xslt21-20100511</a> ",
+ "id": "XSLT21"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/YACC.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "S. C. Johnson. <cite>YACC - Yet another compiler compiler.</cite> Murray Hill. 1975. Technical Report.",
+ "id": "YACC"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ZEROCONF.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "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>",
+ "id": "ZEROCONF"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/bibref/ZHMARK.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,5 @@
+define({
+ "html": "<cite>标点符号用法 (Punctuation Mark Usage).</cite> 1995. 中华人民共和国国家标准 ",
+ "id": "ZHMARK"
+}
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/headers.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,184 @@
+// XXX untested
+// XXX also handle abstract and sotd here, it's the same logical unit (especially for configuration)
+// @@ configuratoin
+// - lots of configuration to list...
+define(
+ ["core/tt", "core/utils", "text!w3c/templates/headers.html"],
+ function (tt, utils, template) {
+ return {
+ 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",
+ XGR: "Incubator Group Report",
+ MO: "Member-Only Document",
+ ED: "Editor's Draft",
+ FPWD: "Working Draft",
+ WD: "Working Draft",
+ "FPWD-NOTE": "Working Draft",
+ "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"
+ },
+ status2maturity: {
+ FPWD: "WD",
+ LC: "WD",
+ "FPWD-NOTE":"WD",
+ "WD-NOTE": "WD",
+ "LC-NOTE": "LC",
+ "WG-NOTE": "NOTE"
+ },
+ status2long: {
+ FPWD: "First Public Working Draft",
+ "FPWD-NOTE": "First Public Working Draft",
+ LC: "Last Call Working Draft",
+ "LC-NOTE": "Last Call Working Draft"
+ },
+ recTrackStatus: ["FPWD", "WD", "LC", "CR", "PR", "PER", "REC"],
+ noTrackStatus: ["MO", "unofficial", "base"],
+
+ run: function (conf, doc, cb) {
+ progress("adding document headers");
+
+ for (var k in this.status2text) {
+ if (this.status2long[k]) continue;
+ this.status2long[k] = this.status2text[k];
+ }
+
+ // --- CONFIGURATION PROCESSING
+ if (!conf.specStatus) error("Missing required configuration: specStatus");
+ conf.specStatusText = this.status2text[conf.specStatus];
+ conf.title = doc.title ? doc.title : "No Title";
+ if (!conf.subtitle) conf.subtitle = "";
+ if (!conf.publishDate) {
+ conf.publishDate = utils.parseLastModified(doc.lastModified);
+ // the above is experimental, use this if it fails:
+ // conf.publishDate = new Date();
+ }
+ else {
+ if (!(conf.publishDate instanceof Date)) conf.publishDate = utils.parseSimpleDate(conf.publishDate);
+ }
+ conf.publishYear = conf.publishDate.getFullYear();
+ conf.publishHumanDate = utils.humanDate(conf.publishDate);
+ if (!conf.shortName) error("Missing required configuration: shortName");
+ if (!conf.edDraftURI) {
+ conf.edDraftURI = "";
+ if (conf.specStatus === "ED") warn("Editor's Drafts should set edDraftURI.");
+ }
+ conf.maturity = (this.status2maturity[conf.specStatus]) ? this.status2maturity[conf.specStatus] : conf.specStatus;
+ conf.thisVersion = "http://www.w3.org/TR/" + conf.publishDate.getFullYear() + "/" + conf.maturity + "-" +
+ conf.shortName + "-" + utils.concatDate(conf.publishDate) + "/";
+ if (conf.specStatus == "ED") conf.thisVersion = conf.edDraftURI;
+ conf.latestVersion = "http://www.w3.org/TR/" + conf.shortName + "/";
+ if (conf.previousPublishDate) {
+ if (!conf.previousMaturity) error("previousPublishDate is set, but not previousMaturity");
+ if (!(conf.previousPublishDate instanceof Date))
+ conf.previousPublishDate = utils.parseSimpleDate(conf.previousPublishDate);
+ var pmat = (this.status2maturity[conf.previousMaturity]) ? this.status2maturity[conf.previousMaturity] :
+ conf.previousMaturity;
+ conf.prevVersion = "http://www.w3.org/TR/" + conf.previousPublishDate.getFullYear() + "/" + pmat + "-" +
+ conf.shortName + "-" + utils.concatDate(conf.previousPublishDate) + "/";
+ }
+ else {
+ if (conf.specStatus != "FPWD" && conf.specStatus != "ED" && !conf.isNoTrack)
+ error("Document on track but no previous version.");
+ conf.prevVersion = "";
+ }
+ conf.isRecTrack = conf.noRecTrack ? false : $.inArray(conf.specStatus, this.recTrackStatus) >= 0;
+ conf.isNoTrack = $.inArray(conf.specStatus, this.noTrackStatus) >= 0;
+ if (!conf.prevED) conf.prevED = "";
+ if (!conf.prevRecShortname) conf.prevRecShortname = "";
+ if (!conf.prevRecURI) conf.prevRecURI = "";
+ if (!conf.editors || conf.editors.length === 0) error("At least one editor is required");
+ if (!conf.authors) conf.authors = [];
+ var peopCheck = function (i, it) {
+ if (!it.name) error("All authors and editors must have a name.");
+ if (!it.uri) it.uri = "";
+ if (!it.company) it.company = "";
+ if (!it.companyURL) it.companyURL = "";
+ if (!it.mailto) it.mailto = "";
+ if (!it.note) it.note = "";
+ };
+ $.each(conf.editors, peopCheck);
+ $.each(conf.authors, peopCheck);
+ if (!conf.errata) conf.errata = "";
+ if (!conf.alternateFormats) conf.alternateFormats = "";
+ else {
+ $.each(conf.alternateFormats, function (i, it) {
+ if (!it.uri || !it.label) error("All alternate formats must have a uri and a label.");
+ });
+ }
+ if (!conf.additionalCopyrightHolders) conf.additionalCopyrightHolders = "";
+ if (!conf.copyrightStart) conf.copyrightStart = "";
+
+ var $sotd = $("#sotd");
+ if ($sotd.length) {
+ conf.custom = $sotd.html();
+ $sotd.remove();
+ }
+ else {
+ if (conf.isRecTrack) {
+ warn("Rec-track documents should have a custom SotD paragraph.")
+ conf.custom = "";
+ }
+ else {
+ conf.custom = "";
+ }
+ }
+ if (conf.specStatus != "unofficial" && !conf.isNoTrack) {
+ if (!conf.wgURI || !conf.wg || !conf.wgPublicList || !conf.wgPatentURI)
+ error("All of the following must be configured: wgURI, wg, wgPublicList, wgPatentURI");
+ }
+ if (conf.specStatus === "LC") {
+ if (!conf.lcEnd) error("LC drafts must have lcEnd set.");
+ conf.humanLCEnd = utils.humanDate(conf.lcEnd);
+ }
+ if (conf.specStatus === "CR") {
+ if (!conf.crEnd) error("CR drafts must have crEnd set.");
+ conf.humanCREnd = utils.humanDate(conf.crEnd);
+ }
+ conf.longStatus = this.status2long[conf.specStatus];
+ progress("headers configuration done");
+
+ // --- RUN THE TEMPLATES
+ tt.loadFromHTML(template, doc);
+ progress("running TT for headers");
+ // headers
+ $("body", doc).prepend($(tt.exec("w3c-headers", conf)));
+
+ // abstract
+ progress("handling abstract");
+ var $abs = $("#abstract");
+ if (!$abs) error("Document must have one element with ID 'abstract'");
+ $abs.prepend("<h2>Abstract</h2>");
+ $abs.addClass("introductory");
+
+ // SotD
+ progress("running template for sotd");
+ $abs.after($(tt.exec("w3c-sotd", conf)));
+
+ // conformance
+ progress("handling conformance");
+ var $confo = $("#conformance");
+ if ($confo) {
+ $confo.prepend($(tt.exec("w3c-conformance", conf)));
+ $confo.prepend("<h2>Conformance</h2>");
+ }
+
+ progress("done adding document headers");
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/profile-common.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,28 @@
+
+require([
+ // must be first
+ "core/base-runner",
+ "core/utils",
+
+ // modules that are used by the profile
+ "core/default-root-attr",
+ "core/style",
+ "w3c/style",
+ "w3c/headers",
+ "core/data-transform", // done REALLY early in case the transform ends up needing to include something
+ "core/data-include",
+ "core/inlines",
+ "core/webidl",
+ "core/examples",
+ "w3c/bibref",
+ "core/structure",
+ "w3c/structure",
+ "core/figure",
+ "core/dfn",
+ // these at the end
+ "core/rdfa",
+ "w3c/unhtml5",
+ "core/remove-respec"
+ ],
+ function (runner) { runner.runAll(Array.prototype.slice.call(arguments)); }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/structure.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,25 @@
+// XXX untested
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("flagging informative");
+ $("section.informative").find("h2:first, h3:first, h4:first, h5:first, h6:first")
+ .after("<em>This section is non-normative.</em>");
+
+ // idHeaders
+ $("h2, h3, h4, h5, h6").each(function (i, h) {
+ if (!$(h).attr("id")) {
+ var par = h.parentNode;
+ if (par.localName.toLowerCase() == "section" && par.hasAttribute("id") && !h.previousElementSibling) return;
+ $(h).makeID();
+ }
+ });
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/style.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,29 @@
+// XXX untested
+// @@ CONFIG
+// - specStatus
+define(
+ ["core/utils"],
+ function (utils) {
+ return {
+ run: function (conf, doc, cb) {
+ progress("inserting W3C CSS");
+ if (!conf.specStatus) error("Configuration specStatus is not set, required for w3c/style");
+ var statStyle = conf.specStatus;
+ if (statStyle == "FPWD" || statStyle == "LC") statStyle = "WD";
+ var css;
+ if (statStyle == "unofficial") {
+ css = "http://www.w3.org/StyleSheets/TR/w3c-unofficial";
+ }
+ else if (statStyle == "base") {
+ css = "http://www.w3.org/StyleSheets/TR/base";
+ }
+ else {
+ css = "http://www.w3.org/StyleSheets/TR/W3C-" + statStyle + ".css";
+ }
+ utils.linkCSS(doc, css);
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/templates/headers.html Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,177 @@
+
+<script type='application/x-tt' id='w3c-headers'><![CDATA[
+ <div class='head'>
+ <p>
+ [% IF specStatus != "unofficial" %]
+ <a href='http://www.w3.org/'><img width='72' height='48' src='http://www.w3.org/Icons/w3c_home' alt='W3C'/></a>
+ [% END %]
+ [% IF specStatus == "XGR" %]
+ <a href='http://www.w3.org/2005/Incubator/XGR/'><img alt='W3C Incubator Report'
+ src='http://www.w3.org/2005/Incubator/images/XGR' height='48' width='160'/></a>
+ [% END %]
+ </p>
+ <h1 class='title' id='title'>[% title %]</h1>
+ [% IF subtitle %]<h2 id='subtitle'>[% subtitle %]</h2>[% END %]
+ <h2>[% specStatus == "unofficial" ? "" : "W3C " %][% specStatusText %] [% publishHumanDate %]</h2>
+ <dl>
+ [% IF !isNoTrack %]
+ <dt>This Version:</dt><dd>[% INCLUDE "link-uri" uri = thisVersion %]</dd>
+ <dt>Latest Published Version:</dt><dd>[% INCLUDE "link-uri" uri = latestVersion %]</dd>
+ [% IF edDraftURI %]
+ <dt>Latest Editor's Draft:</dt><dd>[% INCLUDE "link-uri" uri = edDraftURI %]</dd>
+ [% END %]
+ [% END %]
+ [% IF specStatus != "FPWD" and specStatus != "ED" and !isNoTrack %]
+ [% IF prevED %]
+ <dt>Previous editor's draft:</dt><dd>[% INCLUDE "link-uri" uri = prevED %]</dd>
+ [% ELSE %]
+ <dt>Previous version:</dt><dd>[% INCLUDE "link-uri" uri = prevVersion %]</dd>
+ [% END %]
+ [% END %]
+ [% IF prevRecShortname %]
+ <dt>Latest Recommendation:</dt><dd>[% INCLUDE "link-uri" uri = prevRecURI %]</dd>
+ [% END %]
+ [% INCLUDE "show-people" name = "Editor" people = editors %]
+ [% INCLUDE "show-people" name = "Author" people = authors %]
+ </dl>
+ [% IF errata %]
+ <p>Please refer to the <a href='[% errata %]'>errata</a> for this document, which may include
+ some normative corrections.</p>
+ [% END %]
+ [% INCLUDE "alternate-formats" formats = alternateFormats %]
+ [% IF specStatus == "REC" %]
+ <p>The English version of this specification is the only normative version. Non-normative
+ <a href='http://www.w3.org/Consortium/Translation/'>translations</a> may also be available.</p>
+ [% END %]
+ <p class='copyright'>
+ [% IF specStatus == "unofficial" %]
+ [% IF additionalCopyrightHolders %]
+ [% additionalCopyrightHolders %]
+ [% ELSE %]
+ This document is licensed under a <a class='subfoot' href='http://creativecommons.org/licenses/by/3.0/' rel='license'>Creative
+ Commons Attribution 3.0 License</a>.
+ [% END %]
+ [% ELSE %]
+ <a class='license' href='http://www.w3.org/Consortium/Legal/ipr-notice#Copyright'>Copyright</a> ©
+ [% IF copyrightStart %][% copyrightStart %]-[% END %][% publishYear %]
+ [% IF additionalCopyrightHolders %] [% additionalCopyrightHolders %] &[% END %]
+ <a class='publisher' href='http://www.w3.org/'><acronym title='World Wide Web Consortium'>W3C</acronym></a><sup>®</sup>
+ (<a href='http://www.csail.mit.edu/'><acronym title='Massachusetts Institute of Technology'>MIT</acronym></a>,
+ <a href='http://www.ercim.eu/'><acronym title='European Research Consortium for Informatics and Mathematics'>ERCIM</acronym></a>,
+ <a href='http://www.keio.ac.jp/'>Keio</a>), All Rights Reserved.
+ W3C <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.
+ [% END %]
+ </p><hr/></div>
+[% BLOCK "link-uri" -%]
+ <a href='[% uri %]'>[% uri %]</a>
+[%- END %]
+[% BLOCK "show-people" %]
+ [% IF people.length %]
+ <dt>[% name %][% people.length > 1 ? "s" : "" %]:</dt>
+ [% FOREACH p IN people %]
+ <dd class='[% name %]'>
+ [%- IF p.url.length > 0 %]<a class='name' href='[% p.url %]'>[% p.name %]</a>[% ELSE %]<span class='name'>[% p.name %]</span>[% END -%]
+ [%- IF p.company %],
+ [% IF p.companyURL %]
+ <a class='company' href='[% p.companyURL %]'>[% p.company %]</a>
+ [% ELSE %]
+ <span class='company'>[% p.company %]</span>
+ [% END %]
+ [% END %]
+ [% IF p.mailto %] <a class='email' href='mailto:[% p.mailto %]'>[% p.mailto %]</a>[% END %]
+ [% IF p.note %] ([% p.note %])[% END %]
+ </dd>
+ [% END %]
+ [% END %]
+[% END %]
+[% BLOCK "alternate-formats" %]
+ [% IF formats and formats.length %]
+ <p>
+ This document is also available in [% formats.length == 1 ? "this" : "these" %] non-normative
+ format[% formats.length > 1 ? "s" : "" %]:
+ [% FOREACH fmt IN formats %]
+ [% IF loop.index %][% loop.size == 2 ? " " : ", " %][% loop.index == loop.max ? "and " : "" %][% END %]
+ <a href='[% fmt.uri %]'>[% fmt.label %]</a>
+ [% END -%]
+ .</p>
+ [% END %]
+[% END %]
+]]></script>
+
+<script type='application/x-tt' id='w3c-sotd'><![CDATA[
+ [% IF specStatus == "unofficial" %]
+ <section id='sotd' class='introductory'><h2>Status of This Document</h2>
+ <p>This document is merely a public working draft of a potential specification. It has
+ no official standing of any kind and does not represent the support or consensus of any
+ standards organisation.</p></section>
+ [% ELSIF isNoTrack %]
+ <section id='sotd' class='introductory'><h2>Status of This Document</h2>
+ <p>This document is merely a W3C-internal[% specStatus == "MO" ? "member-confidential " : "" %] document. It has no
+ official standing of any kind and does not represent consensus of the W3C Membership.</p></section>
+ [% ELSE %]
+ <section id='sotd' class='introductory'>
+ <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>
+ [% custom %]
+ <p>
+ This document was published by the <a href='[% wgURI %]'>[% wg %]</a> as
+ [% specStatus == "ED" or specStatus == "XGR" or specStatus == "IG-NOTE" ? "an" : "a" %]
+ [% longStatus %].
+ [% IF isRecTrack and specStatus != "REC" %] This document is intended to become a W3C Recommendation.[% END %]
+ If you wish to make comments regarding this document, please send them to
+ <a href='mailto:[% wgPublicList %]@w3.org'>[% wgPublicList %]@w3.org</a>
+ (<a href='mailto:[% wgPublicList %]-request@w3.org?subject=subscribe'>subscribe</a>,
+ <a href='http://lists.w3.org/Archives/Public/[% wgPublicList %]/'>archives</a>).
+ [% IF specStatus == "LC" %]The Last Call period ends [% humanLCEnd %].[% END %]
+ [% IF specStatus == "CR" %]
+ W3C publishes a Candidate Recommendation to indicate that the document is believed to be stable and
+ to encourage implementation by the developer community. This Candidate Recommendation is expected to
+ advance to Proposed Recommendation on [% humanCREnd %].
+ [% END %]
+ All feedback is welcome.
+ </p>
+ [% IF specStatus != "REC" %]
+ <p>
+ Publication as a [% longStatus %] 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>
+ [% END %]
+ [% IF specStatus == "LC" %]
+ <p>
+ This is a Last Call Working Draft and thus the Working Group has determined that this document has satisfied the
+ relevant technical requirements and is sufficiently stable to advance through the Technical Recommendation process.
+ </p>
+ [% END %]
+ <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>.
+ [% IF !isRecTrack and maturity == "WD" %]The group does not expect this document to become a W3C Recommendation.[% END %]
+ W3C maintains a <a href='[% wgPatentURI %]' 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>
+ </section>
+ [% END %]
+]]></script>
+
+<script type='application/x-tt' id='w3c-conformance'><![CDATA[
+ <p>
+ As well as sections marked as non-normative, all authoring guidelines, diagrams, examples,
+ and notes in this specification are non-normative. Everything else in this specification is
+ normative.
+ </p>
+ <p>
+ The key words MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, RECOMMENDED, MAY,
+ and OPTIONAL in this specification are to be interpreted as described in [[!RFC2119]].
+ </p>
+]]></script>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/js/w3c/unhtml5.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,17 @@
+// XXX untested
+define(
+ [],
+ function () {
+ return {
+ run: function (conf, doc, cb) {
+ progress("unHTML5");
+ $("section").each(function (i, sec) {
+ $(sec).addClass("section").renameElement("div");
+ });
+
+ cb();
+ },
+ ieDummy: 1
+ };
+ }
+);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/LGPL-LICENSE Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,165 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+ This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+ As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the GNU
+General Public License.
+
+ "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+ An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+ A "Combined Work" is a work produced by combining or linking an
+Application with the Library. The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+ The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+ The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+ You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+ If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+ a) under this License, provided that you make a good faith effort to
+ ensure that, in the event an Application does not supply the
+ function or data, the facility still operates, and performs
+ whatever part of its purpose remains meaningful, or
+
+ b) under the GNU GPL, with none of the additional permissions of
+ this License applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+ The object code form of an Application may incorporate material from
+a header file that is part of the Library. You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+ a) Give prominent notice with each copy of the object code that the
+ Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the object code with a copy of the GNU GPL and this license
+ document.
+
+ 4. Combined Works.
+
+ You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+ a) Give prominent notice with each copy of the Combined Work that
+ the Library is used in it and that the Library and its use are
+ covered by this License.
+
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
+ document.
+
+ c) For a Combined Work that displays copyright notices during
+ execution, include the copyright notice for the Library among
+ these notices, as well as a reference directing the user to the
+ copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+ 0) Convey the Minimal Corresponding Source under the terms of this
+ License, and the Corresponding Application Code in a form
+ suitable for, and under terms that permit, the user to
+ recombine or relink the Application with a modified version of
+ the Linked Version to produce a modified Combined Work, in the
+ manner specified by section 6 of the GNU GPL for conveying
+ Corresponding Source.
+
+ 1) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (a) uses at run time
+ a copy of the Library already present on the user's computer
+ system, and (b) will operate properly with a modified version
+ of the Library that is interface-compatible with the Linked
+ Version.
+
+ e) Provide Installation Information, but only if you would otherwise
+ be required to provide such information under section 6 of the
+ GNU GPL, and only to the extent that such information is
+ necessary to install and execute a modified version of the
+ Combined Work produced by recombining or relinking the
+ Application with a modified version of the Linked Version. (If
+ you use option 4d0, the Installation Information must accompany
+ the Minimal Corresponding Source and Corresponding Application
+ Code. If you use option 4d1, you must provide the Installation
+ Information in the manner specified by section 6 of the GNU GPL
+ for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+ You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+ a) Accompany the combined library with a copy of the same work based
+ on the Library, uncombined with any other library facilities,
+ conveyed under the terms of this License.
+
+ b) Give prominent notice with the combined library that part of it
+ is a work based on the Library, and explaining where to find the
+ accompanying uncombined form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+ The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+ If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/MIT-LICENSE Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,20 @@
+Copyright (c) 2003, 2004 Jim Weirich
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCore.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,226 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreDefault.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,328 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #e0e0e0 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: black !important;
+}
+.syntaxhighlighter table caption {
+ color: black !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #6ce26c !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #6ce26c !important;
+ color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: blue !important;
+ background: white !important;
+ border: 1px solid #6ce26c !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: blue !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: red !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #6ce26c !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: black !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: blue !important;
+}
+.syntaxhighlighter .keyword {
+ color: #006699 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #006699 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreDjango.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,331 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #233729 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: #f8f8f8 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #497958 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #41a83e !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #41a83e !important;
+ color: #0a2b1d !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #96dd3b !important;
+ background: black !important;
+ border: 1px solid #41a83e !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #96dd3b !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #41a83e !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #ffe862 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #f8f8f8 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #336442 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #9df39f !important;
+}
+.syntaxhighlighter .keyword {
+ color: #96dd3b !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #91bb9e !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #96dd3b !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #eb939a !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #91bb9e !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #edef7d !important;
+}
+
+.syntaxhighlighter .comments {
+ font-style: italic !important;
+}
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreEclipse.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,339 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #c3defe !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: black !important;
+}
+.syntaxhighlighter .gutter {
+ color: #787878 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #d4d0c8 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #d4d0c8 !important;
+ color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #3f5fbf !important;
+ background: white !important;
+ border: 1px solid #d4d0c8 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #3f5fbf !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #a0a0a0 !important;
+ background: #d4d0c8 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #a0a0a0 !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: red !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #3f5fbf !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #2a00ff !important;
+}
+.syntaxhighlighter .keyword {
+ color: #7f0055 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #646464 !important;
+}
+.syntaxhighlighter .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #7f0055 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .xml .keyword {
+ color: #3f7f7f !important;
+ font-weight: normal !important;
+}
+.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a {
+ color: #7f007f !important;
+}
+.syntaxhighlighter .xml .string {
+ font-style: italic !important;
+ color: #2a00ff !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreEmacs.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,324 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #2a3133 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #990000 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #990000 !important;
+ color: black !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #ebdb8d !important;
+ background: black !important;
+ border: 1px solid #990000 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #ebdb8d !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #990000 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #9ccff4 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #ff9e7b !important;
+}
+.syntaxhighlighter .keyword {
+ color: aqua !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #aec4de !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #81cef9 !important;
+}
+.syntaxhighlighter .constants {
+ color: #ff9e7b !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: aqua !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #ebdb8d !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #aec4de !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreFadeToGrey.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,328 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #2c2c29 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: white !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #3185b9 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #3185b9 !important;
+ color: #121212 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #3185b9 !important;
+ background: black !important;
+ border: 1px solid #3185b9 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #3185b9 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #d01d33 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #3185b9 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #96daff !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: white !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #696854 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #e3e658 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #d01d33 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #435a5f !important;
+}
+.syntaxhighlighter .variable {
+ color: #898989 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #aaaaaa !important;
+}
+.syntaxhighlighter .constants {
+ color: #96daff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #d01d33 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #ffc074 !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #4a8cdb !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #96daff !important;
+}
+
+.syntaxhighlighter .functions {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreMDUltra.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,324 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #253e5a !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: lime !important;
+}
+.syntaxhighlighter .gutter {
+ color: #38566f !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #222222 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #428bdd !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: lime !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #aaaaff !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #aaaaff !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #9ccff4 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: lime !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: lime !important;
+}
+.syntaxhighlighter .keyword {
+ color: #aaaaff !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .variable {
+ color: aqua !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff8000 !important;
+}
+.syntaxhighlighter .constants {
+ color: yellow !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #aaaaff !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: red !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: yellow !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreMidnight.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,324 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #253e5a !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: #38566f !important;
+}
+.syntaxhighlighter table caption {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #0f192a !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #428bdd !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #1dc116 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #d1edff !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #1dc116 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #b43d3d !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #b43d3d !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #f8bb00 !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: white !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shCoreRDark.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,324 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter a,
+.syntaxhighlighter div,
+.syntaxhighlighter code,
+.syntaxhighlighter table,
+.syntaxhighlighter table td,
+.syntaxhighlighter table tr,
+.syntaxhighlighter table tbody,
+.syntaxhighlighter table thead,
+.syntaxhighlighter table caption,
+.syntaxhighlighter textarea {
+ -moz-border-radius: 0 0 0 0 !important;
+ -webkit-border-radius: 0 0 0 0 !important;
+ background: none !important;
+ border: 0 !important;
+ bottom: auto !important;
+ float: none !important;
+ height: auto !important;
+ left: auto !important;
+ line-height: 1.1em !important;
+ margin: 0 !important;
+ outline: 0 !important;
+ overflow: visible !important;
+ padding: 0 !important;
+ position: static !important;
+ right: auto !important;
+ text-align: left !important;
+ top: auto !important;
+ vertical-align: baseline !important;
+ width: auto !important;
+ box-sizing: content-box !important;
+ font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important;
+ font-weight: normal !important;
+ font-style: normal !important;
+ font-size: 1em !important;
+ min-height: inherit !important;
+ min-height: auto !important;
+}
+
+.syntaxhighlighter {
+ width: 100% !important;
+ margin: 1em 0 1em 0 !important;
+ position: relative !important;
+ overflow: auto !important;
+ font-size: 1em !important;
+}
+.syntaxhighlighter.source {
+ overflow: hidden !important;
+}
+.syntaxhighlighter .bold {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .italic {
+ font-style: italic !important;
+}
+.syntaxhighlighter .line {
+ white-space: pre !important;
+}
+.syntaxhighlighter table {
+ width: 100% !important;
+}
+.syntaxhighlighter table caption {
+ text-align: left !important;
+ padding: .5em 0 0.5em 1em !important;
+}
+.syntaxhighlighter table td.code {
+ width: 100% !important;
+}
+.syntaxhighlighter table td.code .container {
+ position: relative !important;
+}
+.syntaxhighlighter table td.code .container textarea {
+ box-sizing: border-box !important;
+ position: absolute !important;
+ left: 0 !important;
+ top: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ border: none !important;
+ background: white !important;
+ padding-left: 1em !important;
+ overflow: hidden !important;
+ white-space: pre !important;
+}
+.syntaxhighlighter table td.gutter .line {
+ text-align: right !important;
+ padding: 0 0.5em 0 1em !important;
+}
+.syntaxhighlighter table td.code .line {
+ padding: 0 1em !important;
+}
+.syntaxhighlighter.nogutter td.code .container textarea, .syntaxhighlighter.nogutter td.code .line {
+ padding-left: 0em !important;
+}
+.syntaxhighlighter.show {
+ display: block !important;
+}
+.syntaxhighlighter.collapsed table {
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ padding: 0.1em 0.8em 0em 0.8em !important;
+ font-size: 1em !important;
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+}
+.syntaxhighlighter.collapsed .toolbar span {
+ display: inline !important;
+ margin-right: 1em !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a {
+ padding: 0 !important;
+ display: none !important;
+}
+.syntaxhighlighter.collapsed .toolbar span a.expandSource {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar {
+ position: absolute !important;
+ right: 1px !important;
+ top: 1px !important;
+ width: 11px !important;
+ height: 11px !important;
+ font-size: 10px !important;
+ z-index: 10 !important;
+}
+.syntaxhighlighter .toolbar span.title {
+ display: inline !important;
+}
+.syntaxhighlighter .toolbar a {
+ display: block !important;
+ text-align: center !important;
+ text-decoration: none !important;
+ padding-top: 1px !important;
+}
+.syntaxhighlighter .toolbar a.expandSource {
+ display: none !important;
+}
+.syntaxhighlighter.ie {
+ font-size: .9em !important;
+ padding: 1px 0 1px 0 !important;
+}
+.syntaxhighlighter.ie .toolbar {
+ line-height: 8px !important;
+}
+.syntaxhighlighter.ie .toolbar a {
+ padding-top: 0px !important;
+}
+.syntaxhighlighter.printing .line.alt1 .content,
+.syntaxhighlighter.printing .line.alt2 .content,
+.syntaxhighlighter.printing .line.highlighted .number,
+.syntaxhighlighter.printing .line.highlighted.alt1 .content,
+.syntaxhighlighter.printing .line.highlighted.alt2 .content {
+ background: none !important;
+}
+.syntaxhighlighter.printing .line .number {
+ color: #bbbbbb !important;
+}
+.syntaxhighlighter.printing .line .content {
+ color: black !important;
+}
+.syntaxhighlighter.printing .toolbar {
+ display: none !important;
+}
+.syntaxhighlighter.printing a {
+ text-decoration: none !important;
+}
+.syntaxhighlighter.printing .plain, .syntaxhighlighter.printing .plain a {
+ color: black !important;
+}
+.syntaxhighlighter.printing .comments, .syntaxhighlighter.printing .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter.printing .string, .syntaxhighlighter.printing .string a {
+ color: blue !important;
+}
+.syntaxhighlighter.printing .keyword {
+ color: #006699 !important;
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter.printing .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter.printing .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter.printing .script {
+ font-weight: bold !important;
+}
+.syntaxhighlighter.printing .color1, .syntaxhighlighter.printing .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter.printing .color2, .syntaxhighlighter.printing .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter.printing .color3, .syntaxhighlighter.printing .color3 a {
+ color: red !important;
+}
+.syntaxhighlighter.printing .break, .syntaxhighlighter.printing .break a {
+ color: black !important;
+}
+
+.syntaxhighlighter {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #323e41 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter table caption {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #1b2426 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #5ba1cf !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #5ba1cf !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #5ce638 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #878a85 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #5ce638 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #5ba1cf !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #435a5f !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #5ba1cf !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: white !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeDefault.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,117 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #e0e0e0 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: black !important;
+}
+.syntaxhighlighter table caption {
+ color: black !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #6ce26c !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #6ce26c !important;
+ color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: blue !important;
+ background: white !important;
+ border: 1px solid #6ce26c !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: blue !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: red !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #6ce26c !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: black !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #008200 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: blue !important;
+}
+.syntaxhighlighter .keyword {
+ color: #006699 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: gray !important;
+}
+.syntaxhighlighter .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #006699 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeDjango.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,120 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #0a2b1d !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #233729 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: #f8f8f8 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #497958 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #41a83e !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #41a83e !important;
+ color: #0a2b1d !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #96dd3b !important;
+ background: black !important;
+ border: 1px solid #41a83e !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #96dd3b !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #41a83e !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #ffe862 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #f8f8f8 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #336442 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #9df39f !important;
+}
+.syntaxhighlighter .keyword {
+ color: #96dd3b !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #91bb9e !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #96dd3b !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #eb939a !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #91bb9e !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #edef7d !important;
+}
+
+.syntaxhighlighter .comments {
+ font-style: italic !important;
+}
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeEclipse.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,128 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: white !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #c3defe !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: black !important;
+}
+.syntaxhighlighter .gutter {
+ color: #787878 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #d4d0c8 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #d4d0c8 !important;
+ color: white !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #3f5fbf !important;
+ background: white !important;
+ border: 1px solid #d4d0c8 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #3f5fbf !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #a0a0a0 !important;
+ background: #d4d0c8 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #a0a0a0 !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: red !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: black !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #3f5fbf !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #2a00ff !important;
+}
+.syntaxhighlighter .keyword {
+ color: #7f0055 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #646464 !important;
+}
+.syntaxhighlighter .variable {
+ color: #aa7700 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .constants {
+ color: #0066cc !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #7f0055 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: gray !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff1493 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: red !important;
+}
+
+.syntaxhighlighter .keyword {
+ font-weight: bold !important;
+}
+.syntaxhighlighter .xml .keyword {
+ color: #3f7f7f !important;
+ font-weight: normal !important;
+}
+.syntaxhighlighter .xml .color1, .syntaxhighlighter .xml .color1 a {
+ color: #7f007f !important;
+}
+.syntaxhighlighter .xml .string {
+ font-style: italic !important;
+ color: #2a00ff !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeEmacs.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,113 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: black !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #2a3133 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #990000 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #990000 !important;
+ color: black !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #ebdb8d !important;
+ background: black !important;
+ border: 1px solid #990000 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #ebdb8d !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #990000 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #9ccff4 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #d3d3d3 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #ff9e7b !important;
+}
+.syntaxhighlighter .keyword {
+ color: aqua !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #aec4de !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #81cef9 !important;
+}
+.syntaxhighlighter .constants {
+ color: #ff9e7b !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: aqua !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #ebdb8d !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #ff7d27 !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #aec4de !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeFadeToGrey.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,117 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #121212 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #2c2c29 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: white !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #3185b9 !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #3185b9 !important;
+ color: #121212 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #3185b9 !important;
+ background: black !important;
+ border: 1px solid #3185b9 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #3185b9 !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #d01d33 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #3185b9 !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #96daff !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: white !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #696854 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #e3e658 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #d01d33 !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #435a5f !important;
+}
+.syntaxhighlighter .variable {
+ color: #898989 !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #aaaaaa !important;
+}
+.syntaxhighlighter .constants {
+ color: #96daff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #d01d33 !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #ffc074 !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: #4a8cdb !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #96daff !important;
+}
+
+.syntaxhighlighter .functions {
+ font-weight: bold !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeMDUltra.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,113 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #222222 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #253e5a !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: white !important;
+}
+.syntaxhighlighter table caption {
+ color: lime !important;
+}
+.syntaxhighlighter .gutter {
+ color: #38566f !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #222222 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #428bdd !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: lime !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #aaaaff !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #aaaaff !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #9ccff4 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: lime !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: lime !important;
+}
+.syntaxhighlighter .keyword {
+ color: #aaaaff !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .variable {
+ color: aqua !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ff8000 !important;
+}
+.syntaxhighlighter .constants {
+ color: yellow !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #aaaaff !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: red !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: yellow !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeMidnight.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,113 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #0f192a !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #253e5a !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: #38566f !important;
+}
+.syntaxhighlighter table caption {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #0f192a !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #428bdd !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #1dc116 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: #d1edff !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #d1edff !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #428bdd !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #1dc116 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #b43d3d !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #8aa6c1 !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #f7e741 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #b43d3d !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #f8bb00 !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: white !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/css/shThemeRDark.css Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,113 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+.syntaxhighlighter {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.alt1 {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.alt2 {
+ background-color: #1b2426 !important;
+}
+.syntaxhighlighter .line.highlighted.alt1, .syntaxhighlighter .line.highlighted.alt2 {
+ background-color: #323e41 !important;
+}
+.syntaxhighlighter .line.highlighted.number {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter table caption {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter .gutter {
+ color: #afafaf !important;
+}
+.syntaxhighlighter .gutter .line {
+ border-right: 3px solid #435a5f !important;
+}
+.syntaxhighlighter .gutter .line.highlighted {
+ background-color: #435a5f !important;
+ color: #1b2426 !important;
+}
+.syntaxhighlighter.printing .line .content {
+ border: none !important;
+}
+.syntaxhighlighter.collapsed {
+ overflow: visible !important;
+}
+.syntaxhighlighter.collapsed .toolbar {
+ color: #5ba1cf !important;
+ background: black !important;
+ border: 1px solid #435a5f !important;
+}
+.syntaxhighlighter.collapsed .toolbar a {
+ color: #5ba1cf !important;
+}
+.syntaxhighlighter.collapsed .toolbar a:hover {
+ color: #5ce638 !important;
+}
+.syntaxhighlighter .toolbar {
+ color: white !important;
+ background: #435a5f !important;
+ border: none !important;
+}
+.syntaxhighlighter .toolbar a {
+ color: white !important;
+}
+.syntaxhighlighter .toolbar a:hover {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .plain, .syntaxhighlighter .plain a {
+ color: #b9bdb6 !important;
+}
+.syntaxhighlighter .comments, .syntaxhighlighter .comments a {
+ color: #878a85 !important;
+}
+.syntaxhighlighter .string, .syntaxhighlighter .string a {
+ color: #5ce638 !important;
+}
+.syntaxhighlighter .keyword {
+ color: #5ba1cf !important;
+}
+.syntaxhighlighter .preprocessor {
+ color: #435a5f !important;
+}
+.syntaxhighlighter .variable {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .value {
+ color: #009900 !important;
+}
+.syntaxhighlighter .functions {
+ color: #ffaa3e !important;
+}
+.syntaxhighlighter .constants {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .script {
+ font-weight: bold !important;
+ color: #5ba1cf !important;
+ background-color: none !important;
+}
+.syntaxhighlighter .color1, .syntaxhighlighter .color1 a {
+ color: #e0e8ff !important;
+}
+.syntaxhighlighter .color2, .syntaxhighlighter .color2 a {
+ color: white !important;
+}
+.syntaxhighlighter .color3, .syntaxhighlighter .color3 a {
+ color: #ffaa3e !important;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shAutoloader.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,17 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(2(){1 h=5;h.I=2(){2 n(c,a){4(1 d=0;d<c.9;d++)i[c[d]]=a}2 o(c){1 a=r.H("J"),d=3;a.K=c;a.M="L/t";a.G="t";a.u=a.v=2(){6(!d&&(!8.7||8.7=="F"||8.7=="z")){d=q;e[c]=q;a:{4(1 p y e)6(e[p]==3)B a;j&&5.C(k)}a.u=a.v=x;a.D.O(a)}};r.N.R(a)}1 f=Q,l=h.P(),i={},e={},j=3,k=x,b;5.T=2(c){k=c;j=q};4(b=0;b<f.9;b++){1 m=f[b].w?f[b]:f[b].S(/\\s+/),g=m.w();n(m,g)}4(b=0;b<l.9;b++)6(g=i[l[b].E.A]){e[g]=3;o(g)}}})();',56,56,'|var|function|false|for|SyntaxHighlighter|if|readyState|this|length|||||||||||||||||true|document||javascript|onload|onreadystatechange|pop|null|in|complete|brush|break|highlight|parentNode|params|loaded|language|createElement|autoloader|script|src|text|type|body|removeChild|findElements|arguments|appendChild|split|all'.split('|'),0,{}))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushAS3.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,59 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Created by Peter Atoria @ http://iAtoria.com
+
+ var inits = 'class interface function package';
+
+ var keywords = '-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI ' +
+ 'decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape ' +
+ 'extends false final finally flash_proxy for get if implements import in include Infinity ' +
+ 'instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null ' +
+ 'Null Number Object object_proxy override parseFloat parseInt private protected public ' +
+ 'return set static String super switch this throw true try typeof uint undefined unescape ' +
+ 'use void while with'
+ ;
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
+ { regex: new RegExp(this.getKeywords(inits), 'gm'), css: 'color3' }, // initializations
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp('var', 'gm'), css: 'variable' }, // variable
+ { regex: new RegExp('trace', 'gm'), css: 'color1' } // trace
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['actionscript3', 'as3'];
+
+ SyntaxHighlighter.brushes.AS3 = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushAppleScript.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,75 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // AppleScript brush by David Chambers
+ // http://davidchambersdesign.com/
+ var keywords = 'after before beginning continue copy each end every from return get global in local named of set some that the then times to where whose with without';
+ var ordinals = 'first second third fourth fifth sixth seventh eighth ninth tenth last front back middle';
+ var specials = 'activate add alias AppleScript ask attachment boolean class constant delete duplicate empty exists false id integer list make message modal modified new no paragraph pi properties quit real record remove rest result reveal reverse run running save string true word yes';
+
+ this.regexList = [
+
+ { regex: /(--|#).*$/gm,
+ css: 'comments' },
+
+ { regex: /\(\*(?:[\s\S]*?\(\*[\s\S]*?\*\))*[\s\S]*?\*\)/gm, // support nested comments
+ css: 'comments' },
+
+ { regex: /"[\s\S]*?"/gm,
+ css: 'string' },
+
+ { regex: /(?:,|:|¬|'s\b|\(|\)|\{|\}|«|\b\w*»)/g,
+ css: 'color1' },
+
+ { regex: /(-)?(\d)+(\.(\d)?)?(E\+(\d)+)?/g, // numbers
+ css: 'color1' },
+
+ { regex: /(?:&(amp;|gt;|lt;)?|=|� |>|<|≥|>=|≤|<=|\*|\+|-|\/|÷|\^)/g,
+ css: 'color2' },
+
+ { regex: /\b(?:and|as|div|mod|not|or|return(?!\s&)(ing)?|equals|(is(n't| not)? )?equal( to)?|does(n't| not) equal|(is(n't| not)? )?(greater|less) than( or equal( to)?)?|(comes|does(n't| not) come) (after|before)|is(n't| not)?( in)? (back|front) of|is(n't| not)? behind|is(n't| not)?( (in|contained by))?|does(n't| not) contain|contain(s)?|(start|begin|end)(s)? with|((but|end) )?(consider|ignor)ing|prop(erty)?|(a )?ref(erence)?( to)?|repeat (until|while|with)|((end|exit) )?repeat|((else|end) )?if|else|(end )?(script|tell|try)|(on )?error|(put )?into|(of )?(it|me)|its|my|with (timeout( of)?|transaction)|end (timeout|transaction))\b/g,
+ css: 'keyword' },
+
+ { regex: /\b\d+(st|nd|rd|th)\b/g, // ordinals
+ css: 'keyword' },
+
+ { regex: /\b(?:about|above|against|around|at|below|beneath|beside|between|by|(apart|aside) from|(instead|out) of|into|on(to)?|over|since|thr(ough|u)|under)\b/g,
+ css: 'color3' },
+
+ { regex: /\b(?:adding folder items to|after receiving|choose( ((remote )?application|color|folder|from list|URL))?|clipboard info|set the clipboard to|(the )?clipboard|entire contents|display(ing| (alert|dialog|mode))?|document( (edited|file|nib name))?|file( (name|type))?|(info )?for|giving up after|(name )?extension|quoted form|return(ed)?|second(?! item)(s)?|list (disks|folder)|text item(s| delimiters)?|(Unicode )?text|(disk )?item(s)?|((current|list) )?view|((container|key) )?window|with (data|icon( (caution|note|stop))?|parameter(s)?|prompt|properties|seed|title)|case|diacriticals|hyphens|numeric strings|punctuation|white space|folder creation|application(s( folder)?| (processes|scripts position|support))?|((desktop )?(pictures )?|(documents|downloads|favorites|home|keychain|library|movies|music|public|scripts|sites|system|users|utilities|workflows) )folder|desktop|Folder Action scripts|font(s| panel)?|help|internet plugins|modem scripts|(system )?preferences|printer descriptions|scripting (additions|components)|shared (documents|libraries)|startup (disk|items)|temporary items|trash|on server|in AppleTalk zone|((as|long|short) )?user name|user (ID|locale)|(with )?password|in (bundle( with identifier)?|directory)|(close|open for) access|read|write( permission)?|(g|s)et eof|using( delimiters)?|starting at|default (answer|button|color|country code|entr(y|ies)|identifiers|items|name|location|script editor)|hidden( answer)?|open(ed| (location|untitled))?|error (handling|reporting)|(do( shell)?|load|run|store) script|administrator privileges|altering line endings|get volume settings|(alert|boot|input|mount|output|set) volume|output muted|(fax|random )?number|round(ing)?|up|down|toward zero|to nearest|as taught in school|system (attribute|info)|((AppleScript( Studio)?|system) )?version|(home )?directory|(IPv4|primary Ethernet) address|CPU (type|speed)|physical memory|time (stamp|to GMT)|replacing|ASCII (character|number)|localized string|from table|offset|summarize|beep|delay|say|(empty|multiple) selections allowed|(of|preferred) type|invisibles|showing( package contents)?|editable URL|(File|FTP|News|Media|Web) [Ss]ervers|Telnet hosts|Directory services|Remote applications|waiting until completion|saving( (in|to))?|path (for|to( (((current|frontmost) )?application|resource))?)|POSIX (file|path)|(background|RGB) color|(OK|cancel) button name|cancel button|button(s)?|cubic ((centi)?met(re|er)s|yards|feet|inches)|square ((kilo)?met(re|er)s|miles|yards|feet)|(centi|kilo)?met(re|er)s|miles|yards|feet|inches|lit(re|er)s|gallons|quarts|(kilo)?grams|ounces|pounds|degrees (Celsius|Fahrenheit|Kelvin)|print( (dialog|settings))?|clos(e(able)?|ing)|(de)?miniaturized|miniaturizable|zoom(ed|able)|attribute run|action (method|property|title)|phone|email|((start|end)ing|home) page|((birth|creation|current|custom|modification) )?date|((((phonetic )?(first|last|middle))|computer|host|maiden|related) |nick)?name|aim|icq|jabber|msn|yahoo|address(es)?|save addressbook|should enable action|city|country( code)?|formatte(r|d address)|(palette )?label|state|street|zip|AIM [Hh]andle(s)?|my card|select(ion| all)?|unsaved|(alpha )?value|entr(y|ies)|group|(ICQ|Jabber|MSN) handle|person|people|company|department|icon image|job title|note|organization|suffix|vcard|url|copies|collating|pages (across|down)|request print time|target( printer)?|((GUI Scripting|Script menu) )?enabled|show Computer scripts|(de)?activated|awake from nib|became (key|main)|call method|of (class|object)|center|clicked toolbar item|closed|for document|exposed|(can )?hide|idle|keyboard (down|up)|event( (number|type))?|launch(ed)?|load (image|movie|nib|sound)|owner|log|mouse (down|dragged|entered|exited|moved|up)|move|column|localization|resource|script|register|drag (info|types)|resigned (active|key|main)|resiz(e(d)?|able)|right mouse (down|dragged|up)|scroll wheel|(at )?index|should (close|open( untitled)?|quit( after last window closed)?|zoom)|((proposed|screen) )?bounds|show(n)?|behind|in front of|size (mode|to fit)|update(d| toolbar item)?|was (hidden|miniaturized)|will (become active|close|finish launching|hide|miniaturize|move|open|quit|(resign )?active|((maximum|minimum|proposed) )?size|show|zoom)|bundle|data source|movie|pasteboard|sound|tool(bar| tip)|(color|open|save) panel|coordinate system|frontmost|main( (bundle|menu|window))?|((services|(excluded from )?windows) )?menu|((executable|frameworks|resource|scripts|shared (frameworks|support)) )?path|(selected item )?identifier|data|content(s| view)?|character(s)?|click count|(command|control|option|shift) key down|context|delta (x|y|z)|key( code)?|location|pressure|unmodified characters|types|(first )?responder|playing|(allowed|selectable) identifiers|allows customization|(auto saves )?configuration|visible|image( name)?|menu form representation|tag|user(-| )defaults|associated file name|(auto|needs) display|current field editor|floating|has (resize indicator|shadow)|hides when deactivated|level|minimized (image|title)|opaque|position|release when closed|sheet|title(d)?)\b/g,
+ css: 'color3' },
+
+ { regex: new RegExp(this.getKeywords(specials), 'gm'), css: 'color3' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' },
+ { regex: new RegExp(this.getKeywords(ordinals), 'gm'), css: 'keyword' }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['applescript'];
+
+ SyntaxHighlighter.brushes.AppleScript = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushBash.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,59 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne ge le';
+ var commands = 'alias apropos awk basename bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' +
+ 'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' +
+ 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' +
+ 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' +
+ 'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' +
+ 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' +
+ 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' +
+ 'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' +
+ 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' +
+ 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' +
+ 'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' +
+ 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' +
+ 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' +
+ 'vi watch wc whereis which who whoami Wget xargs yes'
+ ;
+
+ this.regexList = [
+ { regex: /^#!.*$/gm, css: 'preprocessor bold' },
+ { regex: /\/[\w-\/]+/gm, css: 'plain' },
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands
+ ];
+ }
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['bash', 'shell'];
+
+ SyntaxHighlighter.brushes.Bash = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushCSharp.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,65 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'abstract as base bool break byte case catch char checked class const ' +
+ 'continue decimal default delegate do double else enum event explicit ' +
+ 'extern false finally fixed float for foreach get goto if implicit in int ' +
+ 'interface internal is lock long namespace new null object operator out ' +
+ 'override params private protected public readonly ref return sbyte sealed set ' +
+ 'short sizeof stackalloc static string struct switch this throw true try ' +
+ 'typeof uint ulong unchecked unsafe ushort using virtual void while';
+
+ function fixComments(match, regexInfo)
+ {
+ var css = (match[0].indexOf("///") == 0)
+ ? 'color1'
+ : 'comments'
+ ;
+
+ return [new SyntaxHighlighter.Match(match[0], match.index, css)];
+ }
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: /@"(?:[^"]|"")*"/g, css: 'string' }, // @-quoted strings
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // c# keyword
+ { regex: /\bpartial(?=\s+(?:class|interface|struct)\b)/g, css: 'keyword' }, // contextual keyword: 'partial'
+ { regex: /\byield(?=\s+(?:return|break)\b)/g, css: 'keyword' } // contextual keyword: 'yield'
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['c#', 'c-sharp', 'csharp'];
+
+ SyntaxHighlighter.brushes.CSharp = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushColdFusion.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,100 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Jen
+ // http://www.jensbits.com/2009/05/14/coldfusion-brush-for-syntaxhighlighter-plus
+
+ var funcs = 'Abs ACos AddSOAPRequestHeader AddSOAPResponseHeader AjaxLink AjaxOnLoad ArrayAppend ArrayAvg ArrayClear ArrayDeleteAt ' +
+ 'ArrayInsertAt ArrayIsDefined ArrayIsEmpty ArrayLen ArrayMax ArrayMin ArraySet ArraySort ArraySum ArraySwap ArrayToList ' +
+ 'Asc ASin Atn BinaryDecode BinaryEncode BitAnd BitMaskClear BitMaskRead BitMaskSet BitNot BitOr BitSHLN BitSHRN BitXor ' +
+ 'Ceiling CharsetDecode CharsetEncode Chr CJustify Compare CompareNoCase Cos CreateDate CreateDateTime CreateObject ' +
+ 'CreateODBCDate CreateODBCDateTime CreateODBCTime CreateTime CreateTimeSpan CreateUUID DateAdd DateCompare DateConvert ' +
+ 'DateDiff DateFormat DatePart Day DayOfWeek DayOfWeekAsString DayOfYear DaysInMonth DaysInYear DE DecimalFormat DecrementValue ' +
+ 'Decrypt DecryptBinary DeleteClientVariable DeserializeJSON DirectoryExists DollarFormat DotNetToCFType Duplicate Encrypt ' +
+ 'EncryptBinary Evaluate Exp ExpandPath FileClose FileCopy FileDelete FileExists FileIsEOF FileMove FileOpen FileRead ' +
+ 'FileReadBinary FileReadLine FileSetAccessMode FileSetAttribute FileSetLastModified FileWrite Find FindNoCase FindOneOf ' +
+ 'FirstDayOfMonth Fix FormatBaseN GenerateSecretKey GetAuthUser GetBaseTagData GetBaseTagList GetBaseTemplatePath ' +
+ 'GetClientVariablesList GetComponentMetaData GetContextRoot GetCurrentTemplatePath GetDirectoryFromPath GetEncoding ' +
+ 'GetException GetFileFromPath GetFileInfo GetFunctionList GetGatewayHelper GetHttpRequestData GetHttpTimeString ' +
+ 'GetK2ServerDocCount GetK2ServerDocCountLimit GetLocale GetLocaleDisplayName GetLocalHostIP GetMetaData GetMetricData ' +
+ 'GetPageContext GetPrinterInfo GetProfileSections GetProfileString GetReadableImageFormats GetSOAPRequest GetSOAPRequestHeader ' +
+ 'GetSOAPResponse GetSOAPResponseHeader GetTempDirectory GetTempFile GetTemplatePath GetTickCount GetTimeZoneInfo GetToken ' +
+ 'GetUserRoles GetWriteableImageFormats Hash Hour HTMLCodeFormat HTMLEditFormat IIf ImageAddBorder ImageBlur ImageClearRect ' +
+ 'ImageCopy ImageCrop ImageDrawArc ImageDrawBeveledRect ImageDrawCubicCurve ImageDrawLine ImageDrawLines ImageDrawOval ' +
+ 'ImageDrawPoint ImageDrawQuadraticCurve ImageDrawRect ImageDrawRoundRect ImageDrawText ImageFlip ImageGetBlob ImageGetBufferedImage ' +
+ 'ImageGetEXIFTag ImageGetHeight ImageGetIPTCTag ImageGetWidth ImageGrayscale ImageInfo ImageNegative ImageNew ImageOverlay ImagePaste ' +
+ 'ImageRead ImageReadBase64 ImageResize ImageRotate ImageRotateDrawingAxis ImageScaleToFit ImageSetAntialiasing ImageSetBackgroundColor ' +
+ 'ImageSetDrawingColor ImageSetDrawingStroke ImageSetDrawingTransparency ImageSharpen ImageShear ImageShearDrawingAxis ImageTranslate ' +
+ 'ImageTranslateDrawingAxis ImageWrite ImageWriteBase64 ImageXORDrawingMode IncrementValue InputBaseN Insert Int IsArray IsBinary ' +
+ 'IsBoolean IsCustomFunction IsDate IsDDX IsDebugMode IsDefined IsImage IsImageFile IsInstanceOf IsJSON IsLeapYear IsLocalHost ' +
+ 'IsNumeric IsNumericDate IsObject IsPDFFile IsPDFObject IsQuery IsSimpleValue IsSOAPRequest IsStruct IsUserInAnyRole IsUserInRole ' +
+ 'IsUserLoggedIn IsValid IsWDDX IsXML IsXmlAttribute IsXmlDoc IsXmlElem IsXmlNode IsXmlRoot JavaCast JSStringFormat LCase Left Len ' +
+ 'ListAppend ListChangeDelims ListContains ListContainsNoCase ListDeleteAt ListFind ListFindNoCase ListFirst ListGetAt ListInsertAt ' +
+ 'ListLast ListLen ListPrepend ListQualify ListRest ListSetAt ListSort ListToArray ListValueCount ListValueCountNoCase LJustify Log ' +
+ 'Log10 LSCurrencyFormat LSDateFormat LSEuroCurrencyFormat LSIsCurrency LSIsDate LSIsNumeric LSNumberFormat LSParseCurrency LSParseDateTime ' +
+ 'LSParseEuroCurrency LSParseNumber LSTimeFormat LTrim Max Mid Min Minute Month MonthAsString Now NumberFormat ParagraphFormat ParseDateTime ' +
+ 'Pi PrecisionEvaluate PreserveSingleQuotes Quarter QueryAddColumn QueryAddRow QueryConvertForGrid QueryNew QuerySetCell QuotedValueList Rand ' +
+ 'Randomize RandRange REFind REFindNoCase ReleaseComObject REMatch REMatchNoCase RemoveChars RepeatString Replace ReplaceList ReplaceNoCase ' +
+ 'REReplace REReplaceNoCase Reverse Right RJustify Round RTrim Second SendGatewayMessage SerializeJSON SetEncoding SetLocale SetProfileString ' +
+ 'SetVariable Sgn Sin Sleep SpanExcluding SpanIncluding Sqr StripCR StructAppend StructClear StructCopy StructCount StructDelete StructFind ' +
+ 'StructFindKey StructFindValue StructGet StructInsert StructIsEmpty StructKeyArray StructKeyExists StructKeyList StructKeyList StructNew ' +
+ 'StructSort StructUpdate Tan TimeFormat ToBase64 ToBinary ToScript ToString Trim UCase URLDecode URLEncodedFormat URLSessionFormat Val ' +
+ 'ValueList VerifyClient Week Wrap Wrap WriteOutput XmlChildPos XmlElemNew XmlFormat XmlGetNodeType XmlNew XmlParse XmlSearch XmlTransform ' +
+ 'XmlValidate Year YesNoFormat';
+
+ var keywords = 'cfabort cfajaximport cfajaxproxy cfapplet cfapplication cfargument cfassociate cfbreak cfcache cfcalendar ' +
+ 'cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection cfcomponent cfcontent cfcookie cfdbinfo ' +
+ 'cfdefaultcase cfdirectory cfdiv cfdocument cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror ' +
+ 'cfexchangecalendar cfexchangeconnection cfexchangecontact cfexchangefilter cfexchangemail cfexchangetask ' +
+ 'cfexecute cfexit cffeed cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid cfgridcolumn ' +
+ 'cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif cfimage cfimport cfinclude cfindex ' +
+ 'cfinput cfinsert cfinterface cfinvoke cfinvokeargument cflayout cflayoutarea cfldap cflocation cflock cflog ' +
+ 'cflogin cfloginuser cflogout cfloop cfmail cfmailparam cfmailpart cfmenu cfmenuitem cfmodule cfNTauthenticate ' +
+ 'cfobject cfobjectcache cfoutput cfparam cfpdf cfpdfform cfpdfformparam cfpdfparam cfpdfsubform cfpod cfpop ' +
+ 'cfpresentation cfpresentationslide cfpresenter cfprint cfprocessingdirective cfprocparam cfprocresult ' +
+ 'cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow cfreturn cfsavecontent cfschedule ' +
+ 'cfscript cfsearch cfselect cfset cfsetting cfsilent cfslider cfsprydataset cfstoredproc cfswitch cftable ' +
+ 'cftextarea cfthread cfthrow cftimer cftooltip cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx ' +
+ 'cfwindow cfxml cfzip cfzipparam';
+
+ var operators = 'all and any between cross in join like not null or outer some';
+
+ this.regexList = [
+ { regex: new RegExp('--(.*)$', 'gm'), css: 'comments' }, // one line and multiline comments
+ { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // single quoted strings
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // functions
+ { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
+ { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
+ ];
+ }
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['coldfusion','cf'];
+
+ SyntaxHighlighter.brushes.ColdFusion = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushCpp.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,97 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Copyright 2006 Shin, YoungJin
+
+ var datatypes = 'ATOM BOOL BOOLEAN BYTE CHAR COLORREF DWORD DWORDLONG DWORD_PTR ' +
+ 'DWORD32 DWORD64 FLOAT HACCEL HALF_PTR HANDLE HBITMAP HBRUSH ' +
+ 'HCOLORSPACE HCONV HCONVLIST HCURSOR HDC HDDEDATA HDESK HDROP HDWP ' +
+ 'HENHMETAFILE HFILE HFONT HGDIOBJ HGLOBAL HHOOK HICON HINSTANCE HKEY ' +
+ 'HKL HLOCAL HMENU HMETAFILE HMODULE HMONITOR HPALETTE HPEN HRESULT ' +
+ 'HRGN HRSRC HSZ HWINSTA HWND INT INT_PTR INT32 INT64 LANGID LCID LCTYPE ' +
+ 'LGRPID LONG LONGLONG LONG_PTR LONG32 LONG64 LPARAM LPBOOL LPBYTE LPCOLORREF ' +
+ 'LPCSTR LPCTSTR LPCVOID LPCWSTR LPDWORD LPHANDLE LPINT LPLONG LPSTR LPTSTR ' +
+ 'LPVOID LPWORD LPWSTR LRESULT PBOOL PBOOLEAN PBYTE PCHAR PCSTR PCTSTR PCWSTR ' +
+ 'PDWORDLONG PDWORD_PTR PDWORD32 PDWORD64 PFLOAT PHALF_PTR PHANDLE PHKEY PINT ' +
+ 'PINT_PTR PINT32 PINT64 PLCID PLONG PLONGLONG PLONG_PTR PLONG32 PLONG64 POINTER_32 ' +
+ 'POINTER_64 PSHORT PSIZE_T PSSIZE_T PSTR PTBYTE PTCHAR PTSTR PUCHAR PUHALF_PTR ' +
+ 'PUINT PUINT_PTR PUINT32 PUINT64 PULONG PULONGLONG PULONG_PTR PULONG32 PULONG64 ' +
+ 'PUSHORT PVOID PWCHAR PWORD PWSTR SC_HANDLE SC_LOCK SERVICE_STATUS_HANDLE SHORT ' +
+ 'SIZE_T SSIZE_T TBYTE TCHAR UCHAR UHALF_PTR UINT UINT_PTR UINT32 UINT64 ULONG ' +
+ 'ULONGLONG ULONG_PTR ULONG32 ULONG64 USHORT USN VOID WCHAR WORD WPARAM WPARAM WPARAM ' +
+ 'char bool short int __int32 __int64 __int8 __int16 long float double __wchar_t ' +
+ 'clock_t _complex _dev_t _diskfree_t div_t ldiv_t _exception _EXCEPTION_POINTERS ' +
+ 'FILE _finddata_t _finddatai64_t _wfinddata_t _wfinddatai64_t __finddata64_t ' +
+ '__wfinddata64_t _FPIEEE_RECORD fpos_t _HEAPINFO _HFILE lconv intptr_t ' +
+ 'jmp_buf mbstate_t _off_t _onexit_t _PNH ptrdiff_t _purecall_handler ' +
+ 'sig_atomic_t size_t _stat __stat64 _stati64 terminate_function ' +
+ 'time_t __time64_t _timeb __timeb64 tm uintptr_t _utimbuf ' +
+ 'va_list wchar_t wctrans_t wctype_t wint_t signed';
+
+ var keywords = 'break case catch class const __finally __exception __try ' +
+ 'const_cast continue private public protected __declspec ' +
+ 'default delete deprecated dllexport dllimport do dynamic_cast ' +
+ 'else enum explicit extern if for friend goto inline ' +
+ 'mutable naked namespace new noinline noreturn nothrow ' +
+ 'register reinterpret_cast return selectany ' +
+ 'sizeof static static_cast struct switch template this ' +
+ 'thread throw true false try typedef typeid typename union ' +
+ 'using uuid virtual void volatile whcar_t while';
+
+ var functions = 'assert isalnum isalpha iscntrl isdigit isgraph islower isprint' +
+ 'ispunct isspace isupper isxdigit tolower toupper errno localeconv ' +
+ 'setlocale acos asin atan atan2 ceil cos cosh exp fabs floor fmod ' +
+ 'frexp ldexp log log10 modf pow sin sinh sqrt tan tanh jmp_buf ' +
+ 'longjmp setjmp raise signal sig_atomic_t va_arg va_end va_start ' +
+ 'clearerr fclose feof ferror fflush fgetc fgetpos fgets fopen ' +
+ 'fprintf fputc fputs fread freopen fscanf fseek fsetpos ftell ' +
+ 'fwrite getc getchar gets perror printf putc putchar puts remove ' +
+ 'rename rewind scanf setbuf setvbuf sprintf sscanf tmpfile tmpnam ' +
+ 'ungetc vfprintf vprintf vsprintf abort abs atexit atof atoi atol ' +
+ 'bsearch calloc div exit free getenv labs ldiv malloc mblen mbstowcs ' +
+ 'mbtowc qsort rand realloc srand strtod strtol strtoul system ' +
+ 'wcstombs wctomb memchr memcmp memcpy memmove memset strcat strchr ' +
+ 'strcmp strcoll strcpy strcspn strerror strlen strncat strncmp ' +
+ 'strncpy strpbrk strrchr strspn strstr strtok strxfrm asctime ' +
+ 'clock ctime difftime gmtime localtime mktime strftime time';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /^ *#.*/gm, css: 'preprocessor' },
+ { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'color1 bold' },
+ { regex: new RegExp(this.getKeywords(functions), 'gm'), css: 'functions bold' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword bold' }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['cpp', 'c'];
+
+ SyntaxHighlighter.brushes.Cpp = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushCss.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,91 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ function getKeywordsCSS(str)
+ {
+ return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+ };
+
+ function getValuesCSS(str)
+ {
+ return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+ };
+
+ var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
+ 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
+ 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
+ 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
+ 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
+ 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
+ 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
+ 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
+ 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
+ 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
+ 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
+ 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
+ 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
+ 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+ var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
+ 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
+ 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+
+ 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
+ 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
+ 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
+ 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
+ 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
+ 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
+ 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
+ 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
+ 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
+ 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
+ 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+ var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
+ { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes
+ { regex: /!important/g, css: 'color3' }, // !important
+ { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
+ { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
+ ];
+
+ this.forHtmlScript({
+ left: /(<|<)\s*style.*?(>|>)/gi,
+ right: /(<|<)\/\s*style\s*(>|>)/gi
+ });
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['css'];
+
+ SyntaxHighlighter.brushes.CSS = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushDelphi.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,55 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' +
+ 'case char class comp const constructor currency destructor div do double ' +
+ 'downto else end except exports extended false file finalization finally ' +
+ 'for function goto if implementation in inherited int64 initialization ' +
+ 'integer interface is label library longint longword mod nil not object ' +
+ 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' +
+ 'pint64 pointer private procedure program property pshortstring pstring ' +
+ 'pvariant pwidechar pwidestring protected public published raise real real48 ' +
+ 'record repeat set shl shortint shortstring shr single smallint string then ' +
+ 'threadvar to true try type unit until uses val var varirnt while widechar ' +
+ 'widestring with word write writeln xor';
+
+ this.regexList = [
+ { regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *)
+ { regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { }
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags
+ { regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345
+ { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3
+ { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['delphi', 'pascal', 'pas'];
+
+ SyntaxHighlighter.brushes.Delphi = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushDiff.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,41 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ this.regexList = [
+ { regex: /^\+\+\+.*$/gm, css: 'color2' },
+ { regex: /^\-\-\-.*$/gm, css: 'color2' },
+ { regex: /^\s.*$/gm, css: 'color1' },
+ { regex: /^@@.*@@$/gm, css: 'variable' },
+ { regex: /^\+[^\+]{1}.*$/gm, css: 'string' },
+ { regex: /^\-[^\-]{1}.*$/gm, css: 'comments' }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['diff', 'patch'];
+
+ SyntaxHighlighter.brushes.Diff = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushErlang.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,52 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Jean-Lou Dupont
+ // http://jldupont.blogspot.com/2009/06/erlang-syntax-highlighter.html
+
+ // According to: http://erlang.org/doc/reference_manual/introduction.html#1.5
+ var keywords = 'after and andalso band begin bnot bor bsl bsr bxor '+
+ 'case catch cond div end fun if let not of or orelse '+
+ 'query receive rem try when xor'+
+ // additional
+ ' module export import define';
+
+ this.regexList = [
+ { regex: new RegExp("[A-Z][A-Za-z0-9_]+", 'g'), css: 'constants' },
+ { regex: new RegExp("\\%.+", 'gm'), css: 'comments' },
+ { regex: new RegExp("\\?[A-Za-z0-9_]+", 'g'), css: 'preprocessor' },
+ { regex: new RegExp("[a-z0-9_]+:[a-z0-9_]+", 'g'), css: 'functions' },
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['erl', 'erlang'];
+
+ SyntaxHighlighter.brushes.Erland = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushGroovy.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,67 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Andres Almiray
+ // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter
+
+ var keywords = 'as assert break case catch class continue def default do else extends finally ' +
+ 'if in implements import instanceof interface new package property return switch ' +
+ 'throw throws try while public protected private static';
+ var types = 'void boolean byte char short int long float double';
+ var constants = 'null';
+ var methods = 'allProperties count get size '+
+ 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' +
+ 'findIndexOf grep inject max min reverseEach sort ' +
+ 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' +
+ 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' +
+ 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' +
+ 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' +
+ 'transformChar transformLine withOutputStream withPrintWriter withStream ' +
+ 'withStreams withWriter withWriterAppend write writeLine '+
+ 'dump inspect invokeMethod print println step times upto use waitForOrKill '+
+ 'getText';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /""".*"""/g, css: 'string' }, // GStrings
+ { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword
+ { regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type
+ { regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants
+ { regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ }
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['groovy'];
+
+ SyntaxHighlighter.brushes.Groovy = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushJScript.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,52 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'break case catch continue ' +
+ 'default delete do else false ' +
+ 'for function if in instanceof ' +
+ 'new null return super switch ' +
+ 'this throw true try typeof var while with'
+ ;
+
+ var r = SyntaxHighlighter.regexLib;
+
+ this.regexList = [
+ { regex: r.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: r.multiLineSingleQuotedString, css: 'string' }, // single quoted strings
+ { regex: r.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: r.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords
+ ];
+
+ this.forHtmlScript(r.scriptScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['js', 'jscript', 'javascript'];
+
+ SyntaxHighlighter.brushes.JScript = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushJava.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,57 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'abstract assert boolean break byte case catch char class const ' +
+ 'continue default do double else enum extends ' +
+ 'false final finally float for goto if implements import ' +
+ 'instanceof int interface long native new null ' +
+ 'package private protected public return ' +
+ 'short static strictfp super switch synchronized this throw throws true ' +
+ 'transient try void volatile while';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: /\/\*([^\*][\s\S]*)?\*\//gm, css: 'comments' }, // multiline comments
+ { regex: /\/\*(?!\*\/)\*[\s\S]*?\*\//gm, css: 'preprocessor' }, // documentation comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers
+ { regex: /(?!\@interface\b)\@[\$\w]+\b/g, css: 'color1' }, // annotation @anno
+ { regex: /\@interface\b/g, css: 'color2' }, // @interface keyword
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // java keyword
+ ];
+
+ this.forHtmlScript({
+ left : /(<|<)%[@!=]?/g,
+ right : /%(>|>)/g
+ });
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['java'];
+
+ SyntaxHighlighter.brushes.Java = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushJavaFX.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,58 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Patrick Webster
+ // http://patrickwebster.blogspot.com/2009/04/javafx-brush-for-syntaxhighlighter.html
+ var datatypes = 'Boolean Byte Character Double Duration '
+ + 'Float Integer Long Number Short String Void'
+ ;
+
+ var keywords = 'abstract after and as assert at before bind bound break catch class '
+ + 'continue def delete else exclusive extends false finally first for from '
+ + 'function if import in indexof init insert instanceof into inverse last '
+ + 'lazy mixin mod nativearray new not null on or override package postinit '
+ + 'protected public public-init public-read replace return reverse sizeof '
+ + 'step super then this throw true try tween typeof var where while with '
+ + 'attribute let private readonly static trigger'
+ ;
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' },
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' },
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
+ { regex: /(-?\.?)(\b(\d*\.?\d+|\d+\.?\d*)(e[+-]?\d+)?|0x[a-f\d]+)\b\.?/gi, css: 'color2' }, // numbers
+ { regex: new RegExp(this.getKeywords(datatypes), 'gm'), css: 'variable' }, // datatypes
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
+ ];
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['jfx', 'javafx'];
+
+ SyntaxHighlighter.brushes.JavaFX = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushPerl.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,72 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by David Simmons-Duffin and Marty Kube
+
+ var funcs =
+ 'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' +
+ 'chroot close closedir connect cos crypt defined delete each endgrent ' +
+ 'endhostent endnetent endprotoent endpwent endservent eof exec exists ' +
+ 'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' +
+ 'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' +
+ 'getnetbyname getnetent getpeername getpgrp getppid getpriority ' +
+ 'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' +
+ 'getservbyname getservbyport getservent getsockname getsockopt glob ' +
+ 'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' +
+ 'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' +
+ 'oct open opendir ord pack pipe pop pos print printf prototype push ' +
+ 'quotemeta rand read readdir readline readlink readpipe recv rename ' +
+ 'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' +
+ 'semget semop send setgrent sethostent setnetent setpgrp setpriority ' +
+ 'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' +
+ 'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' +
+ 'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' +
+ 'system syswrite tell telldir time times tr truncate uc ucfirst umask ' +
+ 'undef unlink unpack unshift utime values vec wait waitpid warn write';
+
+ var keywords =
+ 'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' +
+ 'for foreach goto if import last local my next no our package redo ref ' +
+ 'require return sub tie tied unless untie until use wantarray while';
+
+ this.regexList = [
+ { regex: new RegExp('#[^!].*$', 'gm'), css: 'comments' },
+ { regex: new RegExp('^\\s*#!.*$', 'gm'), css: 'preprocessor' }, // shebang
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' },
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' },
+ { regex: new RegExp('(\\$|@|%)\\w+', 'g'), css: 'variable' },
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+ }
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['perl', 'Perl', 'pl'];
+
+ SyntaxHighlighter.brushes.Perl = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushPhp.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,88 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var funcs = 'abs acos acosh addcslashes addslashes ' +
+ 'array_change_key_case array_chunk array_combine array_count_values array_diff '+
+ 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+
+ 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+
+ 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+
+ 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+
+ 'array_push array_rand array_reduce array_reverse array_search array_shift '+
+ 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+
+ 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+
+ 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+
+ 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+
+ 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+
+ 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+
+ 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+
+ 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+
+ 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+
+ 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+
+ 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+
+ 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+
+ 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+
+ 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+
+ 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+
+ 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+
+ 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+
+ 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+
+ 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+
+ 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+
+ 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+
+ 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+
+ 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+
+ 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+
+ 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+
+ 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+
+ 'strtoupper strtr strval substr substr_compare';
+
+ var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' +
+ 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' +
+ 'function include include_once global goto if implements interface instanceof namespace new ' +
+ 'old_function or private protected public return require require_once static switch ' +
+ 'throw try use var while xor ';
+
+ var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\$\w+/g, css: 'variable' }, // variables
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions
+ { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['php'];
+
+ SyntaxHighlighter.brushes.Php = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushPlain.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,33 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['text', 'plain'];
+
+ SyntaxHighlighter.brushes.Plain = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushPowerShell.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,74 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributes by B.v.Zanten, Getronics
+ // http://confluence.atlassian.com/display/CONFEXT/New+Code+Macro
+
+ var keywords = 'Add-Content Add-History Add-Member Add-PSSnapin Clear(-Content)? Clear-Item ' +
+ 'Clear-ItemProperty Clear-Variable Compare-Object ConvertFrom-SecureString Convert-Path ' +
+ 'ConvertTo-Html ConvertTo-SecureString Copy(-Item)? Copy-ItemProperty Export-Alias ' +
+ 'Export-Clixml Export-Console Export-Csv ForEach(-Object)? Format-Custom Format-List ' +
+ 'Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command ' +
+ 'Get-Content Get-Credential Get-Culture Get-Date Get-EventLog Get-ExecutionPolicy ' +
+ 'Get-Help Get-History Get-Host Get-Item Get-ItemProperty Get-Location Get-Member ' +
+ 'Get-PfxCertificate Get-Process Get-PSDrive Get-PSProvider Get-PSSnapin Get-Service ' +
+ 'Get-TraceSource Get-UICulture Get-Unique Get-Variable Get-WmiObject Group-Object ' +
+ 'Import-Alias Import-Clixml Import-Csv Invoke-Expression Invoke-History Invoke-Item ' +
+ 'Join-Path Measure-Command Measure-Object Move(-Item)? Move-ItemProperty New-Alias ' +
+ 'New-Item New-ItemProperty New-Object New-PSDrive New-Service New-TimeSpan ' +
+ 'New-Variable Out-Default Out-File Out-Host Out-Null Out-Printer Out-String Pop-Location ' +
+ 'Push-Location Read-Host Remove-Item Remove-ItemProperty Remove-PSDrive Remove-PSSnapin ' +
+ 'Remove-Variable Rename-Item Rename-ItemProperty Resolve-Path Restart-Service Resume-Service ' +
+ 'Select-Object Select-String Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content ' +
+ 'Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-Location Set-PSDebug ' +
+ 'Set-Service Set-TraceSource Set(-Variable)? Sort-Object Split-Path Start-Service ' +
+ 'Start-Sleep Start-Transcript Stop-Process Stop-Service Stop-Transcript Suspend-Service ' +
+ 'Tee-Object Test-Path Trace-Command Update-FormatData Update-TypeData Where(-Object)? ' +
+ 'Write-Debug Write-Error Write(-Host)? Write-Output Write-Progress Write-Verbose Write-Warning';
+ var alias = 'ac asnp clc cli clp clv cpi cpp cvpa diff epal epcsv fc fl ' +
+ 'ft fw gal gc gci gcm gdr ghy gi gl gm gp gps group gsv ' +
+ 'gsnp gu gv gwmi iex ihy ii ipal ipcsv mi mp nal ndr ni nv oh rdr ' +
+ 'ri rni rnp rp rsnp rv rvpa sal sasv sc select si sl sleep sort sp ' +
+ 'spps spsv sv tee cat cd cp h history kill lp ls ' +
+ 'mount mv popd ps pushd pwd r rm rmdir echo cls chdir del dir ' +
+ 'erase rd ren type % \\?';
+
+ this.regexList = [
+ { regex: /#.*$/gm, css: 'comments' }, // one line comments
+ { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // variables $Computer1
+ { regex: /\-[a-zA-Z]+\b/g, css: 'keyword' }, // Operators -not -and -eq
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' },
+ { regex: new RegExp(this.getKeywords(alias), 'gmi'), css: 'keyword' }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['powershell', 'ps'];
+
+ SyntaxHighlighter.brushes.PowerShell = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushPython.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,64 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Gheorghe Milas and Ahmad Sherif
+
+ var keywords = 'and assert break class continue def del elif else ' +
+ 'except exec finally for from global if import in is ' +
+ 'lambda not or pass print raise return try yield while';
+
+ var funcs = '__import__ abs all any apply basestring bin bool buffer callable ' +
+ 'chr classmethod cmp coerce compile complex delattr dict dir ' +
+ 'divmod enumerate eval execfile file filter float format frozenset ' +
+ 'getattr globals hasattr hash help hex id input int intern ' +
+ 'isinstance issubclass iter len list locals long map max min next ' +
+ 'object oct open ord pow print property range raw_input reduce ' +
+ 'reload repr reversed round set setattr slice sorted staticmethod ' +
+ 'str sum super tuple type type unichr unicode vars xrange zip';
+
+ var special = 'None True False self cls class_';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' },
+ { regex: /^\s*@\w+/gm, css: 'decorator' },
+ { regex: /(['\"]{3})([^\1])*?\1/gm, css: 'comments' },
+ { regex: /"(?!")(?:\.|\\\"|[^\""\n])*"/gm, css: 'string' },
+ { regex: /'(?!')(?:\.|(\\\')|[^\''\n])*'/gm, css: 'string' },
+ { regex: /\+|\-|\*|\/|\%|=|==/gm, css: 'keyword' },
+ { regex: /\b\d+\.?\w*/g, css: 'value' },
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' },
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' },
+ { regex: new RegExp(this.getKeywords(special), 'gm'), css: 'color1' }
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['py', 'python'];
+
+ SyntaxHighlighter.brushes.Python = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushRuby.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,55 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Erik Peterson.
+
+ var keywords = 'alias and BEGIN begin break case class def define_method defined do each else elsif ' +
+ 'END end ensure false for if in module new next nil not or raise redo rescue retry return ' +
+ 'self super then throw true undef unless until when while yield';
+
+ var builtins = 'Array Bignum Binding Class Continuation Dir Exception FalseClass File::Stat File Fixnum Fload ' +
+ 'Hash Integer IO MatchData Method Module NilClass Numeric Object Proc Range Regexp String Struct::TMS Symbol ' +
+ 'ThreadGroup Thread Time TrueClass';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\b[A-Z0-9_]+\b/g, css: 'constants' }, // constants
+ { regex: /:[a-z][A-Za-z0-9_]*/g, css: 'color2' }, // symbols
+ { regex: /(\$|@@|@)\w+/g, css: 'variable bold' }, // $global, @instance, and @@class variables
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(this.getKeywords(builtins), 'gm'), css: 'color1' } // builtins
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['ruby', 'rails', 'ror', 'rb'];
+
+ SyntaxHighlighter.brushes.Ruby = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushSass.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,94 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ function getKeywordsCSS(str)
+ {
+ return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b';
+ };
+
+ function getValuesCSS(str)
+ {
+ return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b';
+ };
+
+ var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' +
+ 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' +
+ 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' +
+ 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' +
+ 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' +
+ 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' +
+ 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' +
+ 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' +
+ 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width orphans ' +
+ 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' +
+ 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' +
+ 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' +
+ 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' +
+ 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index';
+
+ var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+
+ 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+
+ 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero digits disc dotted double '+
+ 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+
+ 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+
+ 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+
+ 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+
+ 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+
+ 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+
+ 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+
+ 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+
+ 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+
+ 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+
+ 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow';
+
+ var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif';
+
+ var statements = '!important !default';
+ var preprocessor = '@import @extend @debug @warn @if @for @while @mixin @include';
+
+ var r = SyntaxHighlighter.regexLib;
+
+ this.regexList = [
+ { regex: r.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: r.singleLineCComments, css: 'comments' }, // singleline comments
+ { regex: r.doubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: r.singleQuotedString, css: 'string' }, // single quoted strings
+ { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors
+ { regex: /\b(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)\b/g, css: 'value' }, // sizes
+ { regex: /\$\w+/g, css: 'variable' }, // variables
+ { regex: new RegExp(this.getKeywords(statements), 'g'), css: 'color3' }, // statements
+ { regex: new RegExp(this.getKeywords(preprocessor), 'g'), css: 'preprocessor' }, // preprocessor
+ { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values
+ { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['sass', 'scss'];
+
+ SyntaxHighlighter.brushes.Sass = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushScala.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,51 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ // Contributed by Yegor Jbanov and David Bernard.
+
+ var keywords = 'val sealed case def true trait implicit forSome import match object null finally super ' +
+ 'override try lazy for var catch throw type extends class while with new final yield abstract ' +
+ 'else do if return protected private this package false';
+
+ var keyops = '[_:=><%#@]+';
+
+ this.regexList = [
+ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments
+ { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // multi-line strings
+ { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double-quoted string
+ { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings
+ { regex: /0x[a-f0-9]+|\d+(\.\d+)?/gi, css: 'value' }, // numbers
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords
+ { regex: new RegExp(keyops, 'gm'), css: 'keyword' } // scala keyword
+ ];
+ }
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['scala'];
+
+ SyntaxHighlighter.brushes.Scala = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushSql.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,66 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var funcs = 'abs avg case cast coalesce convert count current_timestamp ' +
+ 'current_user day isnull left lower month nullif replace right ' +
+ 'session_user space substring sum system_user upper user year';
+
+ var keywords = 'absolute action add after alter as asc at authorization begin bigint ' +
+ 'binary bit by cascade char character check checkpoint close collate ' +
+ 'column commit committed connect connection constraint contains continue ' +
+ 'create cube current current_date current_time cursor database date ' +
+ 'deallocate dec decimal declare default delete desc distinct double drop ' +
+ 'dynamic else end end-exec escape except exec execute false fetch first ' +
+ 'float for force foreign forward free from full function global goto grant ' +
+ 'group grouping having hour ignore index inner insensitive insert instead ' +
+ 'int integer intersect into is isolation key last level load local max min ' +
+ 'minute modify move name national nchar next no numeric of off on only ' +
+ 'open option order out output partial password precision prepare primary ' +
+ 'prior privileges procedure public read real references relative repeatable ' +
+ 'restrict return returns revoke rollback rollup rows rule schema scroll ' +
+ 'second section select sequence serializable set size smallint static ' +
+ 'statistics table temp temporary then time timestamp to top transaction ' +
+ 'translation trigger true truncate uncommitted union unique update values ' +
+ 'varchar varying view when where with work';
+
+ var operators = 'all and any between cross in join like not null or outer some';
+
+ this.regexList = [
+ { regex: /--(.*)$/gm, css: 'comments' }, // one line and multiline comments
+ { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings
+ { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings
+ { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions
+ { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such
+ { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['sql'];
+
+ SyntaxHighlighter.brushes.Sql = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushVb.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,56 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' +
+ 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' +
+ 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' +
+ 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' +
+ 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' +
+ 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' +
+ 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' +
+ 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' +
+ 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' +
+ 'Overloads Overridable Overrides ParamArray Preserve Private Property ' +
+ 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' +
+ 'Return Select Set Shadows Shared Short Single Static Step Stop String ' +
+ 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' +
+ 'Variant When While With WithEvents WriteOnly Xor';
+
+ this.regexList = [
+ { regex: /'.*$/gm, css: 'comments' }, // one line comments
+ { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings
+ { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion
+ { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword
+ ];
+
+ this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags);
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['vb', 'vbnet'];
+
+ SyntaxHighlighter.brushes.Vb = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shBrushXml.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,69 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+;(function()
+{
+ // CommonJS
+ typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
+
+ function Brush()
+ {
+ function process(match, regexInfo)
+ {
+ var constructor = SyntaxHighlighter.Match,
+ code = match[0],
+ tag = new XRegExp('(<|<)[\\s\\/\\?]*(?<name>[:\\w-\\.]+)', 'xg').exec(code),
+ result = []
+ ;
+
+ if (match.attributes != null)
+ {
+ var attributes,
+ regex = new XRegExp('(?<name> [\\w:\\-\\.]+)' +
+ '\\s*=\\s*' +
+ '(?<value> ".*?"|\'.*?\'|\\w+)',
+ 'xg');
+
+ while ((attributes = regex.exec(code)) != null)
+ {
+ result.push(new constructor(attributes.name, match.index + attributes.index, 'color1'));
+ result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string'));
+ }
+ }
+
+ if (tag != null)
+ result.push(
+ new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword')
+ );
+
+ return result;
+ }
+
+ this.regexList = [
+ { regex: new XRegExp('(\\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\>|>)', 'gm'), css: 'color2' }, // <![ ... [ ... ]]>
+ { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // <!-- ... -->
+ { regex: new XRegExp('(<|<)[\\s\\/\\?]*(\\w+)(?<attributes>.*?)[\\s\\/\\?]*(>|>)', 'sg'), func: process }
+ ];
+ };
+
+ Brush.prototype = new SyntaxHighlighter.Highlighter();
+ Brush.aliases = ['xml', 'xhtml', 'xslt', 'html'];
+
+ SyntaxHighlighter.brushes.Xml = Brush;
+
+ // CommonJS
+ typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
+})();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shCore.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,17 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('K M;I(M)1S 2U("2a\'t 4k M 4K 2g 3l 4G 4H");(6(){6 r(f,e){I(!M.1R(f))1S 3m("3s 15 4R");K a=f.1w;f=M(f.1m,t(f)+(e||""));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?"g":"")+(f.4s?"i":"")+(f.4p?"m":"")+(f.4v?"x":"")+(f.3n?"y":"")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m("2a\'t 5r 5I 5F 5B 5C 15 5E 5p");H r(f)}I(v)1S 2U("2a\'t W 3l M 59 5m 5g 5x 5i");e=e||"";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h==="[")b=M.2I;Y I(h==="]")b=M.1B;a.U(h);c++}a=15(a.1K(""),n.Q.W(e,w,""));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v="1.5.0";M.2I=1;M.1B=2;K C=/\\$(?:(\\d\\d?|[$&`\'])|{([$\\w]+)})/g,w=/[^5h]+|([\\s\\S])(?=[\\s\\S]*\\1)/g,A=/^(?:[?*+]|{\\d+(?:,\\d*)?})\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,"")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,"");H!f.12}(),y=6(){K f=/x/g;n.Q.W("x",f,"");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S]))/;z[M.1B]=/^(?:\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S])|\\(\\?[:=!]|[?*+]\\?|{\\d+(?:,\\d*)?}\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,"g"+(E?"y":"")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+"/"+(e||"");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,"g")};M.5l=6(f){H f.Q(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,"\\\\$&")};M.5e=6(f,e,a,b){e=r(e,"g"+(b&&E?"y":""));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U("2a\'t 55 1h 54 3q")}};M.1R=6(f){H 53.Z.1q.W(f)==="[2m 15]"};M.3p=6(f,e,a,b){O(K c=r(e,"g"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,"g"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||"":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&p(e,"")>-1){a=15(J.1m,n.Q.W(t(J),"g",""));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()==="3f"&&e.1i("${")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+="";I(1j e==="6")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+"";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24"$":H"$";24"&":H d[0];24"`":H d[d.L-1].1a(0,d[d.L-2]);24"\'":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i="";g=+g;I(!g)H h;O(;g>d.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||"":"$")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+"",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,"")||h)b.U("")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\(\\?#[^)]*\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"});M.1h(/\\((?!\\?)/,6(){J.19.U(N);H"("});M.1h(/\\(\\?<([$\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H"("});M.1h(/\\\\k<([\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?"\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?"":"(?:)"):f[0]});M.1h(/\\[\\^?]/,6(f){H f[0]==="[]"?"\\\\b\\\\B":"[\\\\s\\\\S]"});M.1h(/^\\(\\?([5A]+)\\)/,6(f){J.3d(f[1]);H""});M.1h(/(?:\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"},M.1B,6(){H J.2K("x")});M.1h(/\\./,6(){H"[\\\\s\\\\S]"},M.1B,6(){H J.2K("s")})})();1j 2e!="1d"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=" "+b)}6 t(a){H a.1i("3e")==0?a:"3e"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={"#":"1c",".":"1l"}[b.1o(0,1)]||"3h",g,i;g=h!="3h"?b.1o(1):b.5u();I((a[h]||"").1i(g)!=-1)H a;O(a=0;d&&a<d.L&&i==N;a++)i=p(d[a],b,c);H i}6 C(a,b){K c={},d;O(d 2g a)c[d]=a[d];O(d 2g b)c[d]=b[d];H c}6 w(a,b,c,d){6 h(g){g=g||1P.5y;I(!g.1F){g.1F=g.52;g.3N=6(){J.5w=11}}c.W(d||1P,g)}a.3g?a.3g("4U"+b,h):a.4y(b,h,11)}6 A(a,b){K c=e.1Y.2j,d=N;I(c==N){c={};O(K h 2g e.1U){K g=e.1U[h];d=g.4x;I(d!=N){g.1V=h.4w();O(g=0;g<d.L;g++)c[d[g]]=h}}e.1Y.2j=c}d=e.1U[c[a]];d==N&&b!=11&&1P.1X(e.13.1x.1X+(e.13.1x.3E+a));H d}6 v(a,b){O(K c=a.1e("\\n"),d=0;d<c.L;d++)c[d]=b(c[d],d);H c.1K("\\n")}6 u(a,b){I(a==N||a.L==0||a=="\\n")H a;a=a.Q(/</g,"&1y;");a=a.Q(/ {2,}/g,6(c){O(K d="",h=0;h<c.L-1;h++)d+=e.13.1W;H d+" "});I(b!=N)a=v(a,6(c){I(c.L==0)H"";K d="";c=c.Q(/^(&2s;| )+/,6(h){d=h;H""});I(c.L==0)H d;H d+\'<17 1g="\'+b+\'">\'+c+"</17>"});H a}6 n(a,b){a.1e("\\n");O(K c="",d=0;d<50;d++)c+=" ";H a=v(a,6(h){I(h.1i("\\t")==-1)H h;O(K g=0;(g=h.1i("\\t"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\s+|\\s+$/g,"")}6 D(a,b){I(a.P<b.P)H-1;Y I(a.P>b.P)H 1;Y I(a.L<b.L)H-1;Y I(a.L>b.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i=="3f")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d="",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\'<a 2h="\'+c+\'">\'+c+"</a>"+d})}6 z(){O(K a=1E.36("1k"),b=[],c=0;c<a.L;c++)a[c].3s=="20"&&b.U(a[c]);H b}6 f(a){a=a.1F;K b=p(a,".20",R);a=p(a,".3O",R);K c=1E.4i("3t");I(!(!a||!b||p(a,"3t"))){B(b.1c);r(b,"1m");O(K d=a.3G,h=[],g=0;g<d.L;g++)h.U(d[g].4z||d[g].4A);h=h.1K("\\r");c.39(1E.4D(h));a.39(c);c.2C();c.4C();w(c,"4u",6(){c.2G.4E(c);b.1l=b.1l.Q("1m","")})}}I(1j 3F!="1d"&&1j M=="1d")M=3F("M").M;K e={2v:{"1g-27":"","2i-1s":1,"2z-1s-2t":11,1M:N,1t:N,"42-45":R,"43-22":4,1u:R,16:R,"3V-17":R,2l:11,"41-40":R,2k:11,"1z-1k":11},13:{1W:"&2s;",2M:R,46:11,44:11,34:"4n",1x:{21:"4o 1m",2P:"?",1X:"1v\\n\\n",3E:"4r\'t 4t 1D O: ",4g:"4m 4B\'t 51 O 1z-1k 4F: ",37:\'<!4T 1z 4S "-//4V//3H 4W 1.0 4Z//4Y" "1Z://2y.3L.3K/4X/3I/3H/3I-4P.4J"><1z 4I="1Z://2y.3L.3K/4L/5L"><3J><4N 1Z-4M="5G-5M" 6K="2O/1z; 6J=6I-8" /><1t>6L 1v</1t></3J><3B 1L="25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;"><T 1L="2O-3D:3C;3w-32:1.6z;"><T 1L="25-22:6A-6E;">1v</T><T 1L="25-22:.6C;3w-6B:6R;"><T>3v 3.0.76 (72 73 3x)</T><T><a 2h="1Z://3u.2w/1v" 1F="38" 1L="2f:#3y">1Z://3u.2w/1v</a></T><T>70 17 6U 71.</T><T>6T 6X-3x 6Y 6D.</T></T><T>6t 61 60 J 1k, 5Z <a 2h="6u://2y.62.2w/63-66/65?64=5X-5W&5P=5O" 1L="2f:#3y">5R</a> 5V <2R/>5U 5T 5S!</T></T></3B></1z>\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\/\\*[\\s\\S]*?\\*\\//2c,6m:/\\/\\/.*$/2c,6l:/#.*$/2c,6k:/"([^\\\\"\\n]|\\\\.)*"/g,6o:/\'([^\\\\\'\\n]|\\\\.)*\'/g,6p:1f M(\'"([^\\\\\\\\"]|\\\\\\\\.)*"\',"3z"),6s:1f M("\'([^\\\\\\\\\']|\\\\\\\\.)*\'","3z"),6q:/(&1y;|<)!--[\\s\\S]*?--(&1G;|>)/2c,3M:/\\w+:\\/\\/[\\w-.\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\?=?/g,1b:/\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\/\\s*1k\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\'<T 1g="16">\',d=e.16.2x,h=d.2X,g=0;g<h.L;g++)c+=(d[h[g]].1H||b)(a,h[g]);c+="</T>";H c},2o:6(a,b,c){H\'<2W><a 2h="#" 1g="6e 6h\'+b+" "+b+\'">\'+c+"</a></2W>"},2b:6(a){K b=a.1F,c=b.1l||"";b=B(p(b,".20",R).1c);K d=6(h){H(h=15(h+"6f(\\\\w+)").X(c))?h[1]:N}("6g");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:["21","2P"],21:{1H:6(a){I(a.V("2l")!=R)H"";K b=a.V("1t");H e.16.2o(a,"21",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q("47","")}},2P:{2B:6(){K a="68=0";a+=", 18="+(31.30-33)/2+", 32="+(31.2Z-2Y)/2+", 30=33, 2Z=2Y";a=a.Q(/^,/,"");a=1P.6Z("","38",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h<c.L;h++)d.U(c[h]);c=d}c=c;d=[];I(e.13.2M)c=c.1O(z());I(c.L===0)H d;O(h=0;h<c.L;h++){O(K g=c[h],i=a,k=c[h].1l,j=3W 0,l={},m=1f M("^\\\\[(?<2V>(.*?))\\\\]$"),s=1f M("(?<27>[\\\\w-]+)\\\\s*:\\\\s*(?<1T>[\\\\w-%#]+|\\\\[.*?\\\\]|\\".*?\\"|\'.*?\')\\\\s*;?","g");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\'"]|[\'"]$/g,"");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\s*,\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g<c.L;g++){b=c[g];K i=b.1F,k=b.1n,j=k.1D,l;I(j!=N){I(k["1z-1k"]=="R"||e.2v["1z-1k"]==R){d=1f e.4l(j);j="4O"}Y I(d=A(j))d=1f d;Y 6H;l=i.3X;I(h.2M){l=l;K m=x(l),s=11;I(m.1i("<![6G[")==0){m=m.4h(9);s=R}K o=m.L;I(m.1i("]]\\>")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||"")!="")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||"")!="")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,"4k",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;m<j.L;m++)j[m].P+=l}K c=A(a),d,h=1f e.1U.5Y,g=J,i="2F 1H 2Q".1e(" ");I(c!=N){d=1f c;O(K k=0;k<i.L;k++)(6(){K j=i[k];g[j]=6(){H h[j].1p(h,14)}})();d.28==N?1P.1X(e.13.1x.1X+(e.13.1x.4g+a)):h.2J.U({1I:d.28.17,2D:6(j){O(K l=j.17,m=[],s=d.2J,o=j.P+j.18.L,F=d.28,q,G=0;G<s.L;G++){q=y(l,s[G]);b(q,o);m=m.1O(q)}I(F.18!=N&&j.18!=N){q=y(j.18,F.18);b(q,j.P);m=m.1O(q)}I(F.1b!=N&&j.1b!=N){q=y(j.1b,F.1b);b(q,j.P+j[0].5Q(j.1b));m=m.1O(q)}O(j=0;j<m.L;j++)m[j].1V=c.1V;H m}})}};e.4j=6(){};e.4j.Z={V:6(a,b){K c=J.1n[a];c=c==N?b:c;K d={"R":R,"11":11}[c];H d==N?c:d},3Y:6(a){H 1E.4i(a)},4c:6(a,b){K c=[];I(a!=N)O(K d=0;d<a.L;d++)I(1j a[d]=="2m")c=c.1O(y(b,a[d]));H J.4e(c.6b(D))},4e:6(a){O(K b=0;b<a.L;b++)I(a[b]!==N)O(K c=a[b],d=c.P+c.L,h=b+1;h<a.L&&a[b]!==N;h++){K g=a[h];I(g!==N)I(g.P>d)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P<d)a[h]=N}H a},4d:6(a){K b=[],c=2u(J.V("2i-1s"));v(a,6(d,h){b.U(h+c)});H b},3U:6(a){K b=J.V("1M",[]);I(1j b!="2m"&&b.U==N)b=[b];a:{a=a.1q();K c=3W 0;O(c=c=1Q.6c(c||0,0);c<b.L;c++)I(b[c]==a){b=c;1N a}b=-1}H b!=-1},2r:6(a,b,c){a=["1s","6i"+b,"P"+a,"6r"+(b%2==0?1:2).1q()];J.3U(b)&&a.U("67");b==0&&a.U("1N");H\'<T 1g="\'+a.1K(" ")+\'">\'+c+"</T>"},3Q:6(a,b){K c="",d=a.1e("\\n").L,h=2u(J.V("2i-1s")),g=J.V("2z-1s-2t");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i<d;i++){K k=b?b[i]:h+i,j;I(k==0)j=e.13.1W;Y{j=g;O(K l=k.1q();l.L<j;)l="0"+l;j=l}a=j;c+=J.2r(i,k,a)}H c},49:6(a,b){a=x(a);K c=a.1e("\\n");J.V("2z-1s-2t");K d=2u(J.V("2i-1s"));a="";O(K h=J.V("1D"),g=0;g<c.L;g++){K i=c[g],k=/^(&2s;|\\s)+/.X(i),j=N,l=b?b[g]:d+g;I(k!=N){j=k[0].1q();i=i.1o(j.L);j=j.Q(" ",e.13.1W)}i=x(i);I(i.L==0)i=e.13.1W;a+=J.2r(g,l,(j!=N?\'<17 1g="\'+h+\' 5N">\'+j+"</17>":"")+i)}H a},4f:6(a){H a?"<4a>"+a+"</4a>":""},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+" ":""}O(K d=0,h="",g=J.V("1D",""),i=0;i<b.L;i++){K k=b[i],j;I(!(k===N||k.L===0)){j=c(k);h+=u(a.1o(d,k.P-d),j+"48")+u(k.1T,j+k.23);d=k.P+k.L+(k.75||0)}}h+=u(a.1o(d),c()+"48");H h},1H:6(a){K b="",c=["20"],d;I(J.V("2k")==R)J.1n.16=J.1n.1u=11;1l="20";J.V("2l")==R&&c.U("47");I((1u=J.V("1u"))==11)c.U("6S");c.U(J.V("1g-27"));c.U(J.V("1D"));a=a.Q(/^[ ]*[\\n]+|[\\n]*[ ]*$/g,"").Q(/\\r/g," ");b=J.V("43-22");I(J.V("42-45")==R)a=n(a,b);Y{O(K h="",g=0;g<b;g++)h+=" ";a=a.Q(/\\t/g,h)}a=a;a:{b=a=a;h=/<2R\\s*\\/?>|&1y;2R\\s*\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,"\\n");I(e.13.44==R)b=b.Q(h,"");b=b.1e("\\n");h=/^\\s*/;g=4Q;O(K i=0;i<b.L&&g>0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i<b.L;i++)b[i]=b[i].1o(g);a=b.1K("\\n")}I(1u)d=J.4d(a);b=J.4c(J.2J,a);b=J.4b(a,b);b=J.49(b,d);I(J.V("41-40"))b=E(b);1j 2H!="1d"&&2H.3S&&2H.3S.1C(/5s/)&&c.U("5t");H b=\'<T 1c="\'+t(J.1c)+\'" 1g="\'+c.1K(" ")+\'">\'+(J.V("16")?e.16.1H(J):"")+\'<3Z 5z="0" 5H="0" 5J="0">\'+J.4f(J.V("1t"))+"<3T><3P>"+(1u?\'<2d 1g="1u">\'+J.3Q(a)+"</2d>":"")+\'<2d 1g="17"><T 1g="3O">\'+b+"</T></2d></3P></3T></3Z></T>"},2F:6(a){I(a===N)a="";J.17=a;K b=J.3Y("T");b.3X=J.1H(a);J.V("16")&&w(p(b,".16"),"5c",e.16.2b);J.V("3V-17")&&w(p(b,".17"),"56",f);H b},2Q:6(a){J.1c=""+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V("2k")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\s+|\\s+$/g,"").Q(/\\s+/g,"|");H"\\\\b(?:"+a+")\\\\b"},5f:6(a){J.28={18:{1I:a.18,23:"1k"},1b:{1I:a.1b,23:"1k"},17:1f M("(?<18>"+a.18.1m+")(?<17>.*?)(?<1b>"+a.1b.1m+")","5o")}}};H e}();1j 2e!="1d"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{}))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/discovery-api/tools/syntaxhighlighter/js/shLegacy.js Fri Aug 03 12:59:17 2012 +0200
@@ -0,0 +1,17 @@
+/**
+ * SyntaxHighlighter
+ * http://alexgorbatchev.com/SyntaxHighlighter
+ *
+ * SyntaxHighlighter is donationware. If you are using it, please donate.
+ * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
+ *
+ * @version
+ * 3.0.83 (July 02 2010)
+ *
+ * @copyright
+ * Copyright (C) 2004-2010 Alex Gorbatchev.
+ *
+ * @license
+ * Dual licensed under the MIT and GPL licenses.
+ */
+eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3 u={8:{}};u.8={A:4(c,k,l,m,n,o){4 d(a,b){2 a!=1?a:b}4 f(a){2 a!=1?a.E():1}c=c.I(":");3 g=c[0],e={};t={"r":K};M=1;5=8.5;9(3 j R c)e[c[j]]="r";k=f(d(k,5.C));l=f(d(l,5.D));m=f(d(m,5.s));o=f(d(o,5.Q));n=f(d(n,5["x-y"]));2{P:g,C:d(t[e.O],k),D:d(t[e.N],l),s:d({"r":r}[e.s],m),"x-y":d(4(a,b){9(3 h=T S("^"+b+"\\\\[(?<q>\\\\w+)\\\\]$","U"),i=1,p=0;p<a.7;p++)6((i=h.J(a[p]))!=1)2 i.q;2 1}(c,"G"),n)}},F:4(c,k,l,m,n,o){4 d(){9(3 a=H,b=0;b<a.7;b++)6(a[b]!==1){6(z a[b]=="L"&&a[b]!="")2 a[b]+"";6(z a[b]=="X"&&a[b].q!="")2 a[b].q+""}2 1}4 f(a,b,h){h=12.13(h);9(3 i=0;i<h.7;i++)h[i].V("15")==b&&a.Y(h[i])}3 g=[];f(g,c,"Z");f(g,c,"W");6(g.7!==0)9(c=0;c<g.7;c++){3 e=g[c],j=d(e.B["14"],e.10,e.B.v,e.v);6(j!==1){j=u.8.A(j,k,l,m,n,o);8.11(j,e)}}}};',62,68,'|null|return|var|function|defaults|if|length|SyntaxHighlighter|for|||||||||||||||||value|true|collapse|reverse|dp|language||first|line|typeof|parseParams|attributes|gutter|toolbar|toString|HighlightAll|firstline|arguments|split|exec|false|string|result|nocontrols|nogutter|brush|ruler|in|XRegExp|new|gi|getAttribute|textarea|object|push|pre|className|highlight|document|getElementsByTagName|class|name'.split('|'),0,{}))