<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsd:schema [
<!ENTITY FloatPattern "[-+]?((\d+\.?|(\d*\.\d+))([eE][-+]?\d+)?|Inf|inf|INF)">
<!ENTITY FloatPattern01 "(0|(0?\.(\d+))|(1|1\.0*))">
<!ENTITY IntPattern255 "(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])">
]>
<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="floatType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="positiveFloatType">
<xsd:restriction base="xsd:float">
<xsd:minExclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nonNegativeFloatType">
<xsd:restriction base="xsd:float">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nonNegativeFloatTypeWithErrorValue">
<xsd:union memberTypes="nonNegativeFloatType">
<xsd:simpleType>
<xsd:restriction base="xsd:float">
<xsd:minInclusive value="-1"/>
<xsd:maxInclusive value="-1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="nonNegativeDistributionType">
<xsd:union memberTypes="nonNegativeFloatType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="(norm|normc)\(&FloatPattern;,&FloatPattern;(,&FloatPattern;(,&FloatPattern;)?)?\)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="periodType">
<xsd:union memberTypes="timeType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="(exp)\(&FloatPattern;\)"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="positiveIntType">
<xsd:restriction base="xsd:int">
<xsd:minExclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nonNegativeIntType">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="boolType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true"/>
<xsd:enumeration value="false"/>
<xsd:enumeration value="True"/>
<xsd:enumeration value="False"/>
<xsd:enumeration value="yes"/>
<xsd:enumeration value="no"/>
<xsd:enumeration value="on"/>
<xsd:enumeration value="off"/>
<xsd:enumeration value="1"/>
<xsd:enumeration value="0"/>
<xsd:enumeration value="x"/>
<xsd:enumeration value="-"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="colorType">
<xsd:union>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern01;,&FloatPattern01;,&FloatPattern01;(,&FloatPattern01;)?"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&IntPattern255;,&IntPattern255;,&IntPattern255;(,&IntPattern255;)?"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="red"/>
<xsd:enumeration value="green"/>
<xsd:enumeration value="blue"/>
<xsd:enumeration value="yellow"/>
<xsd:enumeration value="cyan"/>
<xsd:enumeration value="magenta"/>
<xsd:enumeration value="orange"/>
<xsd:enumeration value="white"/>
<xsd:enumeration value="black"/>
<xsd:enumeration value="grey"/>
<xsd:enumeration value="gray"/>
<xsd:enumeration value="invisible"/>
<xsd:enumeration value="random"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]([0-9a-fA-F][0-9a-fA-F])?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="positionType">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="&FloatPattern;,&FloatPattern;(,&FloatPattern;)?">
</xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="shapeType">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="(&FloatPattern;,&FloatPattern;(,&FloatPattern;)?(\s&FloatPattern;,&FloatPattern;(,&FloatPattern;)?)*)?">
</xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="shapeTypeTwo">
<xsd:restriction base="xsd:string">
<xsd:pattern
value="&FloatPattern;,&FloatPattern;(,&FloatPattern;)?\s&FloatPattern;,&FloatPattern;(,&FloatPattern;)?(\s&FloatPattern;,&FloatPattern;(,&FloatPattern;)?)*">
</xsd:pattern>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="locationType">
<xsd:attribute name="netOffset">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;,&FloatPattern;(,&FloatPattern;)?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="convBoundary">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;,&FloatPattern;,&FloatPattern;,&FloatPattern;"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="origBoundary">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;,&FloatPattern;,&FloatPattern;,&FloatPattern;"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="projParameter" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="tlLogicType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="phase" type="phaseType"/>
<xsd:element name="param" type="paramType"/>
<xsd:element name="condition" type="conditionType"/>
<xsd:element name="assignment" type="assignmentType"/>
<xsd:element name="function" type="functionType"/>
</xsd:choice>
<xsd:attribute name="id" type="xsd:string" use="required"/>
<xsd:attribute name="type" type="tlTypeType" use="optional"/>
<xsd:attribute name="programID" type="xsd:string" use="required"/>
<xsd:attribute name="offset" type="offsetType" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="tlTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="actuated"/>
<xsd:enumeration value="delay_based"/>
<xsd:enumeration value="static"/>
<xsd:enumeration value="NEMA"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="phaseType">
<xsd:attribute name="duration" type="nonNegativeFloatType" use="required"/>
<xsd:attribute name="minDur" type="nonNegativeFloatTypeWithErrorValue" use="optional"/>
<xsd:attribute name="maxDur" type="nonNegativeFloatTypeWithErrorValue" use="optional"/>
<xsd:attribute name="earliestEnd" type="nonNegativeFloatTypeWithErrorValue" use="optional"/>
<xsd:attribute name="latestEnd" type="nonNegativeFloatTypeWithErrorValue" use="optional"/>
<xsd:attribute name="earlyTarget" type="xsd:string" use="optional"/>
<xsd:attribute name="finalTarget" type="xsd:string" use="optional"/>
<xsd:attribute name="yellow" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="red" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="vehext" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="state" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[ruyYgGoOs]+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="next" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="(\d+)( (\d+))*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="conditionType">
<xsd:attribute name="id" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="assignmentType">
<xsd:attribute name="id" type="xsd:string" use="required"/>
<xsd:attribute name="check" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="functionType">
<xsd:choice minOccurs="1" maxOccurs="unbounded">
<xsd:element name="assignment" type="assignmentType"/>
</xsd:choice>
<xsd:attribute name="id" type="xsd:string" use="required"/>
<xsd:attribute name="nArgs" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="conflictType">
<xsd:attribute name="from" type="xsd:string" use="required"/>
<xsd:attribute name="to" type="xsd:string" use="required"/>
<xsd:attribute name="fromLane" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="toLane" type="xsd:nonNegativeInteger" use="required"/>
<xsd:attribute name="startPos" type="floatType" use="required"/>
<xsd:attribute name="endPos" type="floatType" use="required"/>
</xsd:complexType>
<xsd:complexType name="paramType">
<xsd:attribute name="key" type="xsd:string" use="required"/>
<xsd:attribute name="value" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="laneTypeType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="restriction" type="restrictionType"/>
</xsd:choice>
<xsd:attribute name="index" type="nonNegativeIntType" use="required"/>
<xsd:attribute name="allow" type="xsd:string"/>
<xsd:attribute name="disallow" type="xsd:string"/>
<xsd:attribute name="speed" type="floatType"/>
<xsd:attribute name="width" type="floatType"/>
</xsd:complexType>
<xsd:complexType name="typeType">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="restriction" type="restrictionType"/>
<xsd:element name="meso" type="mesoType"/>
<xsd:element name="laneType" type="laneTypeType"/>
</xsd:choice>
<xsd:attribute name="id" type="xsd:string" use="required"/>
<xsd:attribute name="allow" type="xsd:string"/>
<xsd:attribute name="disallow" type="xsd:string"/>
<xsd:attribute name="priority" type="xsd:int"/>
<xsd:attribute name="numLanes" type="xsd:int"/>
<xsd:attribute name="speed" type="floatType"/>
<xsd:attribute name="discard" type="boolType"/>
<xsd:attribute name="oneway" type="boolType"/>
<xsd:attribute name="width" type="floatType"/>
<xsd:attribute name="widthResolution" type="nonNegativeFloatType"/>
<xsd:attribute name="maxWidth" type="nonNegativeFloatType"/>
<xsd:attribute name="minWidth" type="nonNegativeFloatType"/>
<xsd:attribute name="sidewalkWidth" type="floatType"/>
<xsd:attribute name="bikeLaneWidth" type="floatType"/>
<xsd:attribute name="spreadType" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="center"/>
<xsd:enumeration value="roadCenter"/>
<xsd:enumeration value="right"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="restrictionType">
<xsd:attribute name="vClass" type="xsd:string" use="required"/>
<xsd:attribute name="speed" type="floatType" use="required"/>
</xsd:complexType>
<xsd:complexType name="mesoType">
<xsd:attribute name="tauff" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="taufj" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="taujf" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="taujj" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="jamThreshold" type="floatType" use="optional"/>
<xsd:attribute name="junctionControl" type="boolType" use="optional"/>
<xsd:attribute name="tlsPenalty" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="tlsFlowPenalty" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="minorPenalty" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="overtaking" type="boolType" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="nodeTypeType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="traffic_light"/>
<xsd:enumeration value="right_before_left"/>
<xsd:enumeration value="left_before_right"/>
<xsd:enumeration value="priority"/>
<xsd:enumeration value="dead_end"/>
<xsd:enumeration value="unregulated"/>
<xsd:enumeration value="traffic_light_unregulated"/>
<xsd:enumeration value="rail_signal"/>
<xsd:enumeration value="allway_stop"/>
<xsd:enumeration value="priority_stop"/>
<xsd:enumeration value="zipper"/>
<xsd:enumeration value="rail_crossing"/>
<xsd:enumeration value="traffic_light_right_on_red"/>
<xsd:enumeration value="district"/>
<xsd:enumeration value="unknown"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="splitType">
<xsd:attribute name="lanes" use="optional">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d+(([,;]|\s)\d+)*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
<xsd:attribute name="pos" type="floatType" use="required"/>
<xsd:attribute name="speed" type="positiveFloatType" use="optional"/>
<xsd:attribute name="type" type="nodeTypeType" use="optional"/>
<xsd:attribute name="tl" type="xsd:string" use="optional"/>
<xsd:attribute name="tlType" type="tlTypeType" use="optional"/>
<xsd:attribute name="shape" type="shapeType" use="optional"/>
<xsd:attribute name="radius" type="nonNegativeFloatType" use="optional"/>
<xsd:attribute name="keepClear" type="boolType" use="optional"/>
<xsd:attribute name="id" type="xsd:string" use="optional"/>
<xsd:attribute name="idBefore" type="xsd:string" use="optional"/>
<xsd:attribute name="idAfter" type="xsd:string" use="optional"/>
<xsd:attribute name="offset" type="floatType" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="signedTimeType">
<xsd:union memberTypes="floatType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;:&FloatPattern;:&FloatPattern;(:&FloatPattern;)?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="timeType">
<xsd:union memberTypes="nonNegativeFloatType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;:&FloatPattern;:&FloatPattern;(:&FloatPattern;)?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="timeTypeWithErrorValue">
<xsd:union memberTypes="nonNegativeFloatTypeWithErrorValue">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="&FloatPattern;:&FloatPattern;:&FloatPattern;(:&FloatPattern;)?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[^ \t\n\r|\\;,']+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="detectorIdType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[^\t\n\r|\\;,']+"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="includeType">
<xsd:attribute name="href" type="xsd:string"/>
</xsd:complexType>
<xsd:simpleType name="offsetType">
<xsd:union memberTypes="floatType">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="begin"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:union>
</xsd:simpleType>
<xsd:complexType name="optionType">
<xsd:attribute name="synonymes" type="xsd:string" use="optional"/>
<xsd:attribute name="deprecated" type="xsd:string" use="optional"/>
<xsd:attribute name="type" type="xsd:string" use="optional"/>
<xsd:attribute name="help" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="boolOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="boolType" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="intOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="xsd:int" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="floatOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="floatType" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="timeOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="timeTypeWithErrorValue" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="strOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="strArrayOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="fileOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="intArrayOptionType">
<xsd:complexContent>
<xsd:extension base="optionType">
<xsd:attribute name="value" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="(\-)?(\d+)(,(\-)?(\d+))*"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>