Copyright © 2003-2011 W3C ® ( MIT , ERCIM , Keio), All Rights Reserved. W3C liability, trademark, document use rules apply.
The InkML Specification entered the Candidate Recommendation period on 11 January 2011.
Preparation of an Implementation Report is a key criterion for moving beyond the Candidate Recommendation phase. This document describes the requirements for the Implementation Report and the process that the Multimodal Working Group will follow in preparing the report.
During the CR period, the Working Group will carry out the following activities:
You are invited to contribute to the assessment of the W3C InkML 1.0 Specification by participating in the Implementation Report process.
The Multimodal Working Group established the following entrance criteria for the Proposed Recommendation phase in the Request for CR:
pass
", "fail
" or
"not-impl
". "not-impl
" means the
InkML processor has not implemented the specific feature required
by a test.InkML Implementation Report will not cover:
Note: The testimonials with pink background from "Acme Labs" and "Beta Inc." are just examples and will be replaced with the actually submitted testimonials.
The W3C InkML 1.0 Specification is well-written, easily implementable and extremely useful. Acme Labs used it to describe the recipe for haggis.
The W3C InkML 1.0 Specification is the best thing since sliced bread, extremely useful, easily implementable and well-written. Beta Inc. used it to build a new generation of interactive services, establish world peace, build a new chianti-spaghetti hybrid vehicle, and mix a perfect martini.
The aim of this section is to describe the range of test assertions developed for the InkML 1.0 Specification. The table lists all the assertions that were derived from the InkML 1.0 Specification.
The Assert ID column uniquely identifies the assertion. The Feature column indicates the specific elements or attributes which the test assertion applies to. The Spec column identifies the section of the InkML 1.0 Specification from which the assertion was derived. The REQ column is a Y/N value indicating whether the test assertion is for a feature which is required. The SUB column is a Y/N value indicating whether the test assertion is a subconstraint which is dependent on the implementation of the preceding non subconstraint feature test assertion. The Semantics column specifies the semantics of the feature or the constraint which must be met. The Result column will be annotated with the number of 'pass', 'fail', and 'not implemented' (P/F/NI) in the set of implementation reports.
Test assertions are classified into two types, basic test assertions which test for the presence of each feature, and sub constraints which only apply if that particular feature is implemented. Generally, sub constraints encode structural constraints that could not be expressed in the InkML schema. Sub constraints are marked with 'SUB CONSTRAINT:' in the Semantics field.
The most fundamental test of a conforming InkML implementation is that the InkML documents it utilizes must successfully validate with respect to the InkML XML Schema.
Assert ID | Feature | Spec | Req | Sub | Semantics | Results | ||
---|---|---|---|---|---|---|---|---|
P | F | NI | ||||||
Ink and child elements, attributes | ||||||||
100 | inkml:ink | [2.1] | Y | N | InkML documents MUST have
inkml:ink as the root element. |
|||
101 | [2.1] | N | Y | SUB CONSTRAINT: The inkml:documentID attribute MAY be used to provide a unique id to the Ink document. | ||||
200 | inkml:trace | [3.2.1] | Y | N | The inkml:trace MUST be
used to record the data captured by the digitizer. |
|||
201 | [3.2.1] | Y | Y |
SUB CONSTRAINT: The following grammar defines the syntax of the data that
appears within a
The grammar is as follows: trace ::= point ("," point)* ","? wsp* point ::= (wsp* value)+ wsp* value ::= difference_order? wsp* "-"? wsp* number | "T" | "F" | "*" | "?" number ::= (decimal | double | hex) double ::= decimal ("e"|"E") ("+"|"-")? digit+ decimal ::= digit+ ("." digit*)? | "." digit+ hex ::= "#" (digit | "A" | "B" | "C" | "D" | "E" | "F")+ difference_order ::= ("!" | "'" | '"') digit ::= ("0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9") wsp ::= (#x20 | #x9 | #xD | #xA)Additionally, wsp may occur anywhere except within a decimal, float or hex and must occur if required to separate two values. Otherwise the longest token is matched. For example, "3245" requires an internal wsp character if it is to be interpreted as two decimal numbers, "32" and "45". On the other hand, "0.923.45" will be interpreted as "0.923" and ".45". |
||||
202 | [3.2.1] | Y | Y | SUB CONSTRAINT: The number of value tokens appearing within each point MUST be at least equal to the number of regular channels and be no more than the number of regular channels plus the number of intermittent channels. | ||||
203 | [3.2.1] | Y | Y | SUB CONSTRAINT: The sequence order of
reported channels MUST be a head for the sequence of declared
channels given in the applicable
inkml:traceFormat . |
||||
204 | [3.2.1] | Y | Y | SUB CONSTRAINT: The
priorRef attribute MUST be present for traces having value
middle or end for the
continuation attribute. |
||||
205 | [3.2.1] | Y | Y | SUB CONSTRAINT: All traces MUST begin with an explicit value, not with a first difference(' - single quote prefix) or second difference (" - double quote prefix). | ||||
206 | [3.2.1] | Y | Y | SUB CONSTRAINT: A second difference encoding MUST be preceded by a single difference representation; which, in turn, must be preceded with an explicit encoding. | ||||
207 | [3.2.1] | Y | Y | SUB CONSTRAINT: Intermittent channels MUST be always encoded explicitly, i.e. the qualifiers ' and " are not allowed. | ||||
208 | [3.2.1] | Y | N | The wildcard character "*" MUST be used to indicate either that the value of the channel remains at the previous channel value (if explicit), or that the channel continues integrating with the previous first difference or second difference values, as appropriate. | ||||
209 | [3.2.1] | Y | Y | SUB CONSTRAINT: All Channels declared after the last reported channel MUST be treated as though a '*' were reported. All channels declared before the last reported channel must also be reported, if only with explicit wild cards. | ||||
210 | [3.2.1] | Y | N | The wildcard character "?" MUST be used to indicate that value of a channel is not given at that point. | ||||
300 | inkml:traceGroup | [3.3.1] | Y | N | Successive inkml:trace which share common characteristics MAY be grouped using an inkml:traceGroup. | |||
301 | [3.3.1] | Y | Y | SUB CONSTRAINT: The
inkml :contextRef attribute MUST be used
to refer to the inkml :context element
defining the common contextual values of the trace data grouped by
the inkml:traceGroup . |
||||
302 | [3.3.1] | Y | N | A inkml:traceGroup
element MUST support nested inkml:trace elements or
inkml:traceGroup elements as children. |
||||
303 | [3.3.1] | N | N | Semantic Labelling: An inkml:annotation element or an inkml:annotationXML element MAY be given as child to inkml:traceGroup and contains semantic of the grouped set of traces. For example the recognition results of the logical group of traces that belongs to a word can be captured using the annotation element. | ||||
400 | inkml:traceView | [3.3.2] | N | N | The inkml:traceView
element MAY be used to group traces by reference from the current
document or other documents. |
|||
401 | [3.3.2] | N | Y | SUB CONSTRAINT: The inkml:traceDataRef attribute
MAY be used to specify the URI of a
inkml:trace , inkml:traceGroup or
inkml:traceView element. |
||||
402 | [3.3.2] | N | Y | SUB CONSTRAINT: The grouping MAY be used to provide
common contextual values or structure for semantic labelling.
Additional context information MAY be supplied via
<annotation> or
<annotationXML> child elements. |
||||
405 | [3.3.2] | N | Y | SUB CONSTRAINT: If a traceDataRef
attribute is given, then a to and/or from
attribute MAY be given. Together, traceDataRef ,
from and to attributes refer to another
trace data element and select part of it. |
||||
406 | [3.3.2] | N | Y | SUB CONSTRAINT: A missing from
attribute MAY be equivalent to selecting the first point in the
(recursively) first child of the referenced element. A missing
to attribute MAY be equivalent to selecting the last
point in the (recursively) last child of the referenced
element. |
||||
407 | [3.3.2] | N | Y | SUB CONSTRAINT: Interpretation
logic of from or to
attributes : Any value of a from or
to attribute is a colon-separated list of integers, whose meaning
MAY be defined as follows:
An empty list of integers SHOULD select the entire referenced
object (point, <trace> ,
<traceGroup> or <traceView> ).
If the list is non-empty, then its first element SHOULD be taken as
a 1-based index into the referenced object, and the remaining list
is used to select within the object. |
||||
407a | [3.3.2] | N | Y | SUB CONSTRAINT: It SHOULD be considered as ERROR to try to select within a single point. | ||||
408 | [3.3.2] | N | Y | SUB CONSTRAINT: If the referenced
object is a traceView , then the indexing MAY be
relative to the tree selected by the traceView , not
relative to the original traceView object. |
||||
409 | [3.3.2] | N | Y | SUB CONSTRAINT: If a contextRef attribute is given, then it MAY override the context of the referenced trace data. | ||||
410 | [3.3.2] | N | Y | SUB CONSTRAINT: If a
<traceGroup> contains continuation traces, they
MAY be counted independently, i.e. each continuation trace is a
separate element. |
||||
500 | inkml:definitions | [6.2.1] | Y | N | The inkml:definitions element MAY be used as a container which is used to define reusable content such as Contextual elements. | |||
501 | [6.2.1] | Y | Y | SUB CONSTRAINT: Child Elements of
inkml:definitions MUST have an id
attribute in order to allow them to be referenced. |
||||
502 | [6.2.1] | Y | N | Content within a
<definitions> has no impact on the
interpretation of traces, unless referenced from outside the
<definitions> . |
||||
503 | [6.2.1] | Y | N | Multiple
inkml:definitions as children to the root
inkml:ink element SHOULD be accumulated into a single
definition-state of that ink document. |
||||
600 | inkml:context | [4.1] | Y | N | The inkml:context MUST be
used to consolidate all salient characteristics of one or more
related ink traces. |
|||
601 | [4.5] | Y | N | Default Context:
Implicit references to context attributes MUST be referred to
default context. The current context must be initialized with
default value for all properties, including default trace format,
default canvas, etc. Then, interspersed with ink data, other
elements may occur that alter the default context. |
||||
602 | [4.5] | Y | N | The default context MAY be explicitly
specified using the URI "#DefaultContext ". |
||||
Context child elements and attributes | ||||||||
700 | inkml:traceFormat | [3.1.1] | Y | N | The inkml:traceFormat
describes the format used to encode points within
inkml:trace elements. It MUST contain an ordered
sequence of inkml:channel elements , giving the regular
channels (if any), followed by an optional
inkml:intermittentChannels . |
|||
701 | [3.1.1] | Y | Y | SUB CONSTRAINT: The order of the
coordinates in each point of a trace MUST be determined by the
order of the inkml:channel elements in the trace
format, including those from the intermittent channels part. |
||||
702 | [3.1.1] | Y | N | Default TraceFormat: If no inkml:traceFormat is not specified, then a default traceFormat with id attribute equal to DefaultTraceFormat which has the channels X and Y with default values for the attributes. | ||||
800 |
inkml:intermittentChannels |
[3.1.3] | Y | N | The
inkml:intermittentChannels MUST contain those
inkml:channel elements whose value may optionally be
recorded for each sample point. |
|||
801 | [3.1.3] | Y | Y | SUB CONSTRAINT: The order of the
enclosed inkml:channel declarations MUST give the
order of the intermittent channel data samples within traces
referring the enclosing inkml:traceFormat
element. |
||||
802 | [3.1.3] | N | Y | SUB CONSTRAINT: The child
inkml:channel MAY use the default attribute to
specify the default value for the channel which if not given SHOULD
be 0 (for integer or decimal channel), F (for boolean
channel). |
||||
900 | inkml:channel | [3.1.2] | Y | N | The list of channels provided by the
digitizing device or any inkSource system MUST be mapped to a list
of inkml:channel elements wrapped in to a
inkml:traceFormat element and in the optional
inkml:intermittentChannels child element of the
traceFormat. |
|||
901 | [3.1.2] | Y | N | The name attribute MUST be used to provide name for the channel. It should be used as key for referring to the channel. | ||||
902 | [3.1.2] | Y | N | The type attribute MAY be used to provide the data type of the channel. It can have any one of the relevant value from, "integer", "decimal" and "boolean". If the attribute is not specified, then "decimal" SHOULD be assigned as default value. | ||||
903 | [3.1.2] | Y | N | The min attribute MAY be used to provide the lower boundary value of the channel. The max attribute MAY be used to provide the upper boundary value of the channel. | ||||
904 | [3.1.2] | Y | Y | SUB CONSTRAINT: If the min and max attributes are given, then all channel values MUST fall within the specified range. | ||||
905 | [3.1.2] | N | N | The orientation attribute MAY be used to specify the orientation of increasing channel values with respect to the default direction of the channel's coordinate axis. The possible values are either "+ve" or "-ve". The default value SHOULD be "+ve". | ||||
906 | [3.1.2] | N | N | The respectTo attribute MAY be used to provide a 'frame of reference' data for the channel. For example, it MAY be used to provide the 'origin' value for numerical channels such as X and Y and MAY be used to specify the 'reference timeStamp' for the Time channel (T). | ||||
907 | [3.1.2] | N | N | The units attribute MAY be used to provide the unit value of numerical channels (type attribute is either "integer" or "decimal"). | ||||
908 | [3.1.2] | N | Y | SUB CONSTRAINT: In scenarios where the channel value
reported by the digitizer is preprocessed/normalized to get the
channel value of the trace data, a child
inkml:mapping element MAY be used to specify the
correspondence between those channel values. e.g. A
mapping child element MAY be used with any
'orientation channels' to map the angles to the sin of the
angles, as this is usually more useful in calculation involving
angles. |
||||
909 | [3.1.2] | Y | N | Reserved Channel Names: The list of reserved channel names given in the specification MUST be implemented with the semantic as explained in the specification. | ||||
910 | [3.1.2] | N | Y | SUB CONSTRAINT: The inkml:mapping child element MAY be used to define the transformation for normalizing the device reported channel value to the this channel value. The corresponding source channel description is already given in the inkml:inkSource element in the current context. | ||||
911 | [3.1.8] | Y | N | User Defined Channels: User MAY
define new inkml:channel elements apart from the list
of reserved channels available. e.g. When using direction-sensitive
stylus, the force channel MAY be measured using 3 user defined
channels such as FX, FY and FZ. |
||||
1000 | inkml:inkSource | [4.2.1] | Y | N | The metadata about the format and quality of ink as it is reported by the source MUST be captured using an inkml:inkSource element. The source is typically hardware (a digitizer device), but may in general be any "virtual" source of ink, such as a software application that is tracking the trajectory of an object. | |||
1001 | [4.2.1] | Y | Y | SUB CONSTRAINT: The
inkml:traceFormat child element MUST be used to define the
format of the ink. |
||||
1002 | [4.2.1] | N | Y | SUB CONSTRAINT: The specificationRef attribute MAY have an URI of a page that used to provide detailed or additional specifications. | ||||
1100 | inkml:canvas | [5.1] | N | N | The
inkml:canvas element MAY be used to define a virtual
coordinate system, which uniquely identifies a shared virtual space
for cooperation of ink applications. |
|||
1101 | [5.1] | N | N | The inkml:canvas MAY define its dimension by giving a inkml:traceFormat element. The channel definition contains the min and max values, orientation and units. | ||||
1102 | [5.1] | N | Y | SUB CONSTRAINT: The "traceFormatRef" attribute MAY be used to refer the pre-existing trace format element. | ||||
1103 | [5.1] | Y | N | Default Canvas:
The default canvas MUST be available as part of the Default
Context. It SHOULD have two real-valued coordinates X and Y, both
unbounded in the positive and negative directions. |
||||
1104 | [5.1] | N | Y | SUB CONSTRAINT: The default canvas MAY be explicitly
specified using the URI "#DefaultCanvas ". |
||||
1200 | inkml:canvasTransform | [5.2] | N | N | The inkml:canvasTransform
element MAY be used to relate two coordinate systems. The source
and target coordinate systems SHOULD be defined in terms of
inkml:traceFormat elements. |
|||
1201 | [5.2] | N | N | The contents of the
<canvasTransform> MAY consist of one or two
inkml:mapping
elements. If there is only one, then it SHOULD be the mapping
from the source to the target coordinate system, where the meaning
of "source" and "target" is determined by the use. If there are two
children, the first SHOULD be the mapping from the source to the
target and the second SHOULD the inverse mapping from the target
back to the source. |
||||
1202 | [5.2] | N | N | The inverse transform MAY map from the canvas back to the original trace format by supplying default values for the coordinates not in the canvas | ||||
1203 | [5.2] | N | N | For certain classes of mappings, the inverse mapping MAY be determined automatically in which case the invertible attribute MUST be set to true. | ||||
1204 | [5.2] | N | N | The Mappings Should be one of the below types, "identity" , "lookup", "affine", "mathml", and "product". Otherwise the type MUST be treated as "unknown". | ||||
1205 | [5.2] | N | N | Default Canvas
Transform: The default canvasTransform SHOULD have
"identity" mapping for both forwarded and inverse mapping. |
||||
1300 | inkml:brush | [4.3.1] | Y | N | The inkml:brush element
MAY be used for the definition of reusable set of brush attributes
which may be associated with traces. |
|||
1301 | [4.3.1] | Y | N | The "xml:id" attribute MUST be present and uniquely identify the brush. | ||||
1302 | [4.3.1] | Y | N | The "brushRef" attribute MAY be present to reference another brush whose attributes this brush inherit. | ||||
1303 | [4.3.1] | Y | Y | SUB CONSTRAINT: if the brush inherits properties from another brush reference via a "brushRef" attribute, and if any of the same properties are also defined on this brush via inkml:brushProperty child elements, the local brushProperty values override the inherited values. | ||||
1304 | [4.3.1] | Y | N | A "brushRef" attribute on a inkml:context element MAY reference a brush and any traces which reference the context MUST be assigned the brush attributes of the referenced brush. | ||||
1305 | [4.3.1] | Y | Y | SUB CONSTRAINT: A "brushRef" attribute on a inkml:trace element MAY reference a brush and this brush assignment MUST override any brush assignment specified by the trace's context. | ||||
1350 | inkml:brushProperty | [4.3.2] | Y | N | The list of brush attributes MUST be specified using inkml:brushProperty child elements. | |||
1351 | [4.3.2] | Y | N | The "name" attribute specifying a brush property name MUST be present on a inkml:brushProperty element. | ||||
1352 | [4.3.2] | Y | N | The application MUST support the list of "name" attribute values listed in section: "width", "height", "color", "transparency", "tip", "rasterOp", "antiAliased", "fitToCurve", "ignorePressure". The application MAY use additional "name" attribute values. | ||||
1352 | [4.3.2] | Y | N | The value attribute specifying a brush property value MUST be present and the data type must be appropriate for the give brush property type specified by the "name" attribute. | ||||
1353 | [4.3.2] | Y | Y | SUB CONSTRAINT: The "unit" attribute specifying a brush property value's particular unit of measure MAY be present, but if present the "value" attribute MUST be a numeric value. | ||||
1400 | inkml:timestamp | [4.4.1] | N | N | The
inkml:timestamp element MAY be used define a reference
timestamp which can then be used for relative timestamping of
traces. |
|||
1500 | inkml:sampleRate | [4.2.2] | N | N | The inkml:sampleRate
element MAY be used to capture the rate at which ink samples are
reported by the ink source device. |
|||
1501 | [4.2.2] | N | Y | SUB CONSTRAINT: The value
attribute MUST be given a decimal value equals to the sample rate
in samples/second. |
||||
1502 | [4.2.2] | N | Y | SUB CONSTRAINT: The
uniform attribute MUST be designated "false"
(non-uniform) if any pen-down points are skipped or if the sampling
is irregular. |
||||
1510 | inkml:latency | [4.2.3] | N | N | The inkml:latency element
MAY be used to capture the basic device latency that applies to all
channels, in milliseconds. |
|||
1511 | [4.2.3] | N | Y | SUB CONSTRAINT: The value
attribute MUST be given a decimal value equals to the latency in
milliseconds. |
||||
1520 | inkml:activeArea | [4.2.4] | N | N | The inkml:activeArea
element MAY be used to encode the details of the two-dimensional
area within which the source device is capable of sensing the pen
position. |
|||
1530 | inkml:srcProperty | [4.2.5] | N | N | The basic device details of inkml:inkSource are captured using inkml:sampleRate, inkml:latency and inkml:activeArea child elements. All other additional 'numeric' properties MAY be captured using inkml:srcProperty elements. | |||
1540 | inkml:channelProperty | [4.2.7] | N | N | The inkml:channelProperty
element MAY be used to define additional properties to
inkml:channel elements other than that provided with attributes of
the inkml:channel element. |
|||
1550 | inkml:channelProperties | [4.2.6] | N | N | This child element of
inkml:inkSource element MAY be used to wrap
inkml:channelProperty elements that define additional
properties to inkml:channel which are defined in
traceformat of the inkSource. |
|||
1560 | inkml:mapping | [6.1] | N | N | The
inkml:mapping element MAY be used to define
transformational mapping of different trace formats. |
|||
1570 | inkml:bind | [6.1.2] | Y | N | For a lookup table, each
index column MUST be bound to the channel that provides the input
for the lookup operation. This MAY be done with a
<bind> element that specifies source and
column attributes. |
|||
1580 | inkml:table | [6.1.3] | N | N | A table MAY be used to provides a set of points for mapping. | |||
1581 | [6.1.3] | Y | Y | SUB CONSTRAINT: Each row MUST have the same number of entries. The final row MAY optionally be followed by a comma. | ||||
1582 | [6.1.3] | N | N | Each row in the table MAY represent a
value of the function at one point. Which columns represent the
argument (s) and which the result (s) MAY be determined by
<bind> elements. |
||||
1583 | [6.1.3] | N | Y | SUB CONSTRAINT: The entries in the table may either be all numerical or all boolean. | ||||
1584 | [6.1.3] | N | N | The "interpolation" attribute MAY be used to specify the interpolation between discrete mapping values defined by a lookup table. | ||||
1585 | [6.1.3] | Y | Y | SUB CONSTRAINT: The possible values for the "interpolation" attribute are "floor, middle, ceiling, linear and cubic". The default value for the attribute MUST be "linear". | ||||
1586 | [6.1.3] | N | N | The "apply" attribute MAY be used to specify whether the mapping values are used from the table/formula, or whether this table/formula needs to be added to the current data value. | ||||
1587 | [6.1.3] | Y | Y | SUB CONSTRAINT: The possible values for the "apply" attribute are "absolute" and "relative" . The default value for the attribute MUST be "absolute". | ||||
1590 | inkml:affine | [6.1.4] | N | N | The inkml:affine element
MAY be used to provide the entries for an affine mapping from
n source values to m target values. |
|||
1591 | [6.1.4] | Y | Y | SUB CONSTRAINT: An affine mapping MUST consists of a linear transformation (multiplication by a matrix) and a shift (adding a vector). | ||||
Annotation elements | ||||||||
1600 | inkml:annotation | [6.3.1] | N | N | The inkml:annotation
element MAY be used to annotate with simple textual descriptions in
the ink markup. |
|||
1610 | inkml:annotationXML | [6.3.2] | N | N | The inkml:annotationXML
element MAY be used to annotate with a collection of XML elements
as content (children) for example, a MathML markup or any valid
well formed XML snippet. |
|||
Common Attributes | ||||||||
1700 | xml:id attribute | Y | Y | SUB CONSTRAINT: Any inkml element that have a non-empty xml:id attribute MUST be persisted in to inkml:definitions and be available for reference by other elements. | ||||
1710 | inkml:units attribute | [6.4] | N | N | The inkml:units attribute
MAY be used in inkml:channel (numerical-channel) to indicate the
unit of the channel value and MAY be used in
inkml:channelProperties element to provide unit for channel
properties. |
|||
1711 | [6.4] | Y | Y | SUB CONSTRAINT: An enumerated list of
values given in the specification MUST be supported as value
for inkml:units attribute. |
The following XML should be used as a template for providing an implementation report.
<system-report name="YOUR-SYSTEM-NAME-HERE"> <testimonial>YOUR-WELL-FORMED-TESTIMOMIAL-CONTENT-HERE</testimonial> <assert id="100" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="101" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="200" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="201" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="202" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="203" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="204" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="205" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="206" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="207" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="208" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="209" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="210" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="300" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="301" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="302" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="303" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="400" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="401" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="402" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="405" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="406" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="407" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="407a" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="408" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="409" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="410" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="500" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="501" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="502" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="503" res="pass|fqil|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="600" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="601" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="602" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="700" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="701" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="702" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="800" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="801" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="802" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="900" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="901" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="902" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="903" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="904" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="905" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="906" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="907" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="908" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="909" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="910" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="911" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1000" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1001" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1002" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1100" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1101" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1102" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1103" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1104" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1200" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1201" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1202" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1203" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1204" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1205" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1300" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1301" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1302" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1303" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1304" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1305" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1350" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1351" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1352" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1352" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1353" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1400" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1500" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1501" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1502" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1510" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1511" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1520" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1530" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1540" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1550" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1560" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1570" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1580" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1581" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1582" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1583" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1584" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1585" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1586" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1587" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1590" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1591" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1600" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1610" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1700" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1710" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> <assert id="1711" res="pass|fail|not-impl">OPTIONAL-NOTES-HERE</assert> </system-report>
The Multimodal Working Group would like to acknowledge the contributions of several individuals: