<?xml version="1.0" encoding="UTF-8"?>
<!-- <!DOCTYPE BuildStFormat SYSTEM "BuildStFormat.dtd">  -->
<!--                                                                            -->
<!-- Service Table                                                              -->
<!--                                                                            -->
<!-- Browser Service Table Mapping and Field Formats                                           -->
<!--                                                                            -->
<!--                                                                            -->
<!-- @author Gerard Calderhead                                                        -->
<!--                                                                            -->
<ServiceTableFormat version="5">
	<!-- Header -->
	<Header name="version" type="int" metatype="version" size="1" defvalue="5" maps="ServiceTable.version"/>
	<Header name="tableid" type="int" size="1" defvalue="0"/>
	<Header name="tracktablevector" type="int" size="2" endian="big"/>
	<Header name="domainhashvector" type="int" size="2" endian="big"/>
	<Header name="keywordvector" type="int" size="2" endian="big"/>
	<Header name="domaindecvector" type="int" size="2" endian="big"/>
	<Header name="descdecvector" type="int" size="2" endian="big"/>
	<Header name="tablevector" type="int" size="2" endian="big"/>
	<Header name="servicevector" type="int" size="2" endian="big"/>
	<Field name="offset" type="int" size="2" endian="big"/>
	<!-- ServiceType -->
	<Field name="servicetype" type="string" terminator="true" maps="ServiceTable.Service.type"/>
	<!-- Domain -->
	<Field name="domain" type="string" terminator="true" maps="ServiceTable.Service.Domain.name"/>
	<!-- Start Description -->
	<Field name="startdescription" type="string" terminator="true" maps="ServiceTable.Service.description"/>
	<!-- Gateway index -->
	<Field name="gatewayindex" type="int" size="1" maxvalue="255" defvalue="0" maps="ServiceTable.Service.Gateway.id" servicefieldmask="0x01"/>
	<!-- Gateway flags -->
	<Field name="gatewayflags" type="maskedenum" size="1" maxvalue="255" defvalue="0" maps="ServiceTable.Service.Gateway.GatewayFlag.value" servicefieldmask="0x02">
		<Enum name="developdomain" value="0x01"/>
		<Enum name="debugerrors" value="0x08"/>
		<Enum name="developmode" value="0x10"/>
		<Enum name="bypassclosed" value="0x20"/>
		<Enum name="ndsencrypt" value="0x40"/>
	</Field>
	<!-- Channel -->
	<Field name="channel" type="int" size="2" maxvalue="65535" defvalue="0" maps="ServiceTable.Service.Broadcast.channel" servicefieldmask="0x04"/>
	<!-- Track tag - read as a 4byte char array, but converted to a table index-->
	<Field name="tracktag" type="int" size="1" maps="ServiceTable.Service.Broadcast.track" servicefieldmask="0x04"/>
	<!-- Flags -->
	<Field name="flags" type="maskedenum" size="2" maxvalue="65535" maps="ServiceTable.Service.Domain.DomainFlag.value" servicefieldmask="0x08">
		<Enum name="https" value="0x0001"/>
		<Enum name="cache" value="0x0002"/>
		<Enum name="watch" value="0x0004"/>
		<Enum name="stay" value="0x0008"/>
		<Enum name="gohome" value="0x0010"/>
		<Enum name="nomodesetchange" value="0x0020"/>
		<Enum name="online" value="0x0040"/>
		<Enum name="domainflush" value="0x0080"/>
		<Enum name="logicalchannel" value="0x0100"/>
		<Enum name="initialbroadcastdeck" value="0x0200"/>
		<Enum name="logoffline" value="0x0400"/>
		<Enum name="confirmonline" value="0x0800"/>
		<Enum name="useglobaltracktag" value="0x1000"/>
		<Enum name="protectcachedmodules" value="0x2000"/>
		<Enum name="onlyonline" value="0x4000"/>
	</Field>
	<!-- Inactivity Timeout -->
	<Field name="inactivitytimeout" type="int" size="1" maps="ServiceTable.Service.Timeouts.inactivity" servicefieldmask="0x10"/>
	<!-- Request Timeout -->
	<Field name="requesttimeout" type="int" size="1" maps="ServiceTable.Service.Timeouts.request" servicefieldmask="0x10"/>
	<!-- Phone index -->
	<Field name="phoneindex" type="int" size="1" maxvalue="255" defvalue="0" maps="ServiceTable.Service.phoneid" servicefieldmask="0x20"/>
	<!-- Portal ID -->
	<Field name="portalid" type="int" size="2" maxvalue="65535" endian="big" defvalue="0" maps="ServiceTable.Service.portalid" servicefieldmask="0x40"/>
	<!-- Start Url -->
	<Field name="starturl" type="string" terminator="true" maps="ServiceTable.Service.URLS.StartURL.value" servicefieldmask="0x80"/>
	<!-- Modeset Url -->
	<Field name="modeseturl" type="string" terminator="true" maps="ServiceTable.Service.URLS.ModesetURL.value" servicefieldmask="0x80"/>
	<!-- Do Url -->
	<Field name="dourl" type="string" terminator="true" maps="ServiceTable.Service.URLS.DoURL.value" servicefieldmask="0x80"/>
	<!-- Service Url -->
	<Field name="serviceurl" type="string" terminator="true" maps="ServiceTable.Service.URLS.ServiceURL.value" servicefieldmask="0x80"/>
	<!--                                                                            -->
	<!--                                                                            -->
	<!--     Additional internal fields which are not         -->
	<!--     Sourced directly from the ST XML but are    -->
	<!--     Generated internally.                                     -->
	<!--                                                                            -->
	<!--                                                                            -->
	<!-- Compression Token -->
	<Field name="compressiontoken" type="int" size="1" endian="big"/>
	<!-- Compression Reference -->
	<Field name="compressionref" type="int" size="2" endian="big"/>
	<Field name="tracktablesize" type="int" size="1" endian="big"/>
	<Field name="tracktabletag" type="string" terminator="false"/>
	<Field name="domainlookuplen" type="int" size="2" endian="big"/>
	<Field name="domainlookuphash" type="int" size="4" endian="big"/>
	<Field name="domainlookuptable" type="int" size="1" endian="big"/>
	<Field name="domainlookupoffset" type="int" size="2" endian="big"/>
	<Field name="keywordlookuplen" type="int" size="2" endian="big"/>
	<Field name="keywordlookuphash" type="int" size="4" endian="big"/>
	<Field name="keywordlookuptable" type="int" size="1" endian="big"/>
	<Field name="keywordlookupoffset" type="int" size="2" endian="big"/>
	<Field name="servicetableurllen" type="int" size="1" endian="big"/>
	<Field name="servicetableurl" type="string" terminator="true"/>
	<Field name="servicetableurloffset" type="int" size="2" endian="big"/>
	<!-- Keyword : in xml is represented as a string, but is converted to an integer value when compiled -->
	<Field name="keyword" type="int" size="4" endian="big" maps="ServiceTable.Service.Keyword.value"/>
</ServiceTableFormat>
