Click here to Skip to main content
15,886,518 members
Articles / Web Development / IIS

Browser Detection using ASP.NET

Rate me:
Please Sign up or sign in to vote.
4.63/5 (56 votes)
6 May 2009CPOL5 min read 558.5K   6.3K   186  
Using and updating your machine.config file to better detect browser type in ASP.NET
<!-- Periodic device updates replace this browser capabilities section.
			 Please document any changes you make to this section before installing device updates.
		-->
<!-- For updates to this browser data visit CodeProject, at http://www.codeproject.com/aspnet/browsercaps.asp -->
<browserCaps>
  <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <use var="HTTP_USER_AGENT" />

  browser=Unknown
  version=0.0
  majorversion=0
  minorversion=0
  frames=false
  tables=false
  cookies=false
  backgroundsounds=false
  vbscript=false
  javascript=false
  javaapplets=false
  activexcontrols=false
  win16=false
  win32=false
  beta=false
  ak=false
  sk=false
  aol=false
  crawler=false
  cdf=false
  gold=false
  authenticodeupdate=false
  tagwriter=System.Web.UI.Html32TextWriter
  ecmascriptversion=0.0
  msdomversion=0.0
  w3cdomversion=0.0
  platform=Unknown
  css1=false
  css2=false
  xml=false

  mobileDeviceManufacturer = "Unknown"
  mobileDeviceModel = "Unknown"

  gatewayVersion = "None"
  gatewayMajorVersion = "0"
  gatewayMinorVersion = "0"
  gatewayRevisionVersion = "0"

  preferredRenderingType = "html32"
  preferredRenderingMime = "text/html"
  preferredImageMime = "image/gif"

  defaultScreenCharactersWidth = "12"
  defaultScreenCharactersHeight = "6"
  defaultScreenPixelsWidth = "96"
  defaultScreenPixelsHeight = "72"
  defaultCharacterWidth = "8"
  defaultCharacterHeight = "12"
  screenBitDepth = "1"
  isColor = "false"
  inputType = "telephoneKeypad"

  numberOfSoftkeys = "0"
  maximumSoftkeyLabelLength = "5"

  canInitiateVoiceCall = "false"

  canSendMail = "true"
  hasBackButton = "true"
  rendersWmlDoAcceptsInline = "true"
  rendersWmlSelectsAsMenuCards = "false"
  rendersBreaksAfterWmlAnchor = "false"
  rendersBreaksAfterWmlInput = "false"
  rendersBreakBeforeWmlSelectAndInput = "false"
  requiresAttributeColonSubstitution = "false"
  requiresPhoneNumbersAsPlainText = "false"
  requiresUrlEncodedPostfieldValues = "false"
  requiredMetaTagNameValue = ""
  rendersBreaksAfterHtmlLists = "true"
  requiresUniqueHtmlCheckboxNames = "false"
  requiresUniqueHtmlInputNames = "false"
  requiresUniqueFilePathSuffix = "false"
  supportsCss = "false"
  hidesRightAlignedMultiselectScrollbars = "false"
  canRenderAfterInputOrSelectElement = "true"
  canRenderInputAndSelectElementsTogether = "true"
  canRenderOneventAndPrevElementsTogether = "true"
  canCombineFormsInDeck = "true"
  canRenderMixedSelects = "true"
  canRenderPostBackCards = "true"
  canRenderSetvarZeroWithMultiSelectionList = "true"
  supportsImageSubmit = "false"
  supportsSelectMultiple = "true"
  requiresHtmlAdaptiveErrorReporting = "false"
  requiresContentTypeMetaTag = "false"
  requiresDBCSCharacter = "false"
  requiresOutputOptimization = "false"
  supportsAccesskeyAttribute = "false"
  supportsInputIStyle = "false"
  supportsInputMode = "false"
  supportsIModeSymbols = "false"
  supportsJPhoneSymbols = "false"
  supportsJPhoneMultiMediaAttributes = "false"
  maximumRenderedPageSize = "2000"
  requiresSpecialViewStateEncoding = "false"
  requiresNoBreakInFormatting = "false"
  requiresLeadingPageBreak = "false"
  supportsQueryStringInFormAction = "true"
  supportsCacheControlMetaTag = "true"
  supportsUncheck = "true"
  canRenderEmptySelects = "true"
  supportsRedirectWithCookie = "true"
  supportsEmptyStringInCookieValue = "true"
  cachesAllResponsesWithExpires = "false"
  requiresNoSoftkeyLabels = "false"
  defaultSubmitButtonLimit = "1"

  supportsBold = "false"
  supportsItalic = "false"
  supportsFontSize = "false"
  supportsFontName = "false"
  supportsFontColor = "true"
  supportsBodyColor = "true"
  supportsDivAlign = "true"
  supportsDivNoWrap = "false"
  supportsCharacterEntityEncoding = "true"

  isMobileDevice="false"

  <!-- Owen Brady 10-15-05 -->
  <!-- 
			Used to help me Identify New Browsers which I do not have coded yet
			and that get discovered by my general catch all's, 
			"false" means it did not get discovered by a catch all group.
			"true" means it was found in a catch all group and I was able to pull what might be
			its default name and version information.
			-->
  Unknown=false

  <!-- Added to check for windows 64 bit support: Owen Brady 6-12-05 -->
  win64=false

  <!-- Determine Operating System Platform-->
  <!-- Updated to match more Platforms: Owen Brady 6-12-05-->
  <filter>
    <case match="16bit|Windows 3\.1|Win16">
      platform="Win16"
    </case>
    <case match="Windows 95|Win95|Win 9x 4\.90|Windows 98|Win98|Windows ME|Windows 4\.90|WinME">
      platform="Win9X"
    </case>
    <!--
				Some cases the ce devices have "Windows NT Windows CE" in the useragent 
				Owen Brady 6-12-05
				-->
    <case match="Windows CE|WinCE">
      platform="WinCE"
    </case>
    <case match="Windows NT|WinNT|Windows XP|Windows NT 5\.0|Windows 2000|NT4\.0">
      platform="WinNT"
    </case>
    <case match="(?i-s:Intel.Mac.OS.X)">
      platform="Intel Mac"
    </case>
    <case match="(?i-s:Mac_68000)|(?i-s:Macintosh.*68K)">
      platform="Mac68K"
    </case>
    <case match="(?i-s:mac_powerpc)|(?i-s:mac_ppc)|(?i-s:macintosh.*ppc)|(?i-s:ppc mac)|(?i-s:power macintosh)|(?i-s:powerpc)">
      platform="MacPPC"
    </case>
    <case match="(?i-s:OSF1 alpha)|(?i-s:OSF1 .* alpha)">
      platform="Alpha"
    </case>
    <case match="(?i-s:NetBSD .* alpha)|(?i-s:OpenVMS\sAlpha)|(?i-s:OpenVMS\sDEC)">
      platform="Alpha"
    </case>
    <case match="(i[3-6]86)">
      platform="Intel"
    </case>
    <case match="(?i-s:SunOS)">
      platform="SunOS"
    </case>
    <case match="(?i-s:IRIX)">
      platform="SGI IRIX"
    </case>
    <case match="(?i-s:WebTV)">
      platform=WebTV
    </case>
    <case match="(?i-s:OS/2)">
      platform="OS2"
    </case>
    <case match="PalmOS|PalmSource">
      platform=Palm
    </case>
    <case match="(?i-s:amigaos)|(?i-s:amiga os)">
      platform="Amiga"
    </case>
    <case match="BeOS">
      platform="BeOS"
    </case>
    <case match="X11|Unix">
      platform="UNIX"
    </case>
    <case match="Symbian OS">
      platform="Symbian OS"
    </case>
  </filter>

  <!-- Determine Platform -->
  <filter>
    <case match="16bit|Windows 3.1|Win16">
      win16=true
    </case>
    <case match="Windows 95|Win95|Windows 98|Win98|Windows NT|WinNT|Win32">
      win32=true
    </case>
  </filter>
  <!-- Determine OS -->
  <!-- Added due to request Owen Brady 10-07-05-->
  <filter>
    <case match="PalmOS|PalmSource">
      os=PalmOS
    </case>
    <case match="Windows Vista|Windows NT 6\.0">
      os="Windows Vista"
    </case>
    <case match="Windows CE|WinCE">
      os="Microsoft Windows CE"
    </case>
    <case match="Windows XP|Windows NT 5\.1">
      os="Microsoft Windows XP"
    </case>
    <case match="Windows 2000|Windows NT 5\.0">
      os="Microsoft Windows 2000"
    </case>
    <case match="Windows ME|Win 9x 4\.90|Windows 4\.90|WinME">
      os="Microsoft Windows ME"
    </case>
    <case match="Windows 98|Win98">
      os="Microsoft Windows 98"
    </case>
    <case match="Windows 95|Win95">
      os="Microsoft Windows 95"
    </case>
    <case match="Windows NT 5\.2|Windows NT 6\.0|Windows NT 5\.3">
      os="Microsoft Windows Server 2003"
    </case>
    <case match="WinNT4\.0|Windows NT 4\.0|NT4\.0">
      os="Microsoft Windows NT 4.0"
    </case>
    <case match="Windows NT|WinNT">
      os="Microsoft Windows NT"
    </case>
    <case match="16bit|Windows 3\.1|Win16">
      os="Microsoft Windows 3.1"
    </case>
    <case match="WebTV">
      os="Microsoft WebTV"
    </case>
    <case match="(?i-s:Mac OS X)">
      os="Macintosh OS X"
    </case>
    <case match="(?i-s:Mac_68000)|(?i-s:Macintosh.*68K)">
      os="Macintosh 68K"
    </case>
    <case match="(?i-s:Darwin .* Power\sMacintosh)|(?i-s:powerpc-apple-darwin)">
      os="Macintosh Darwin"
    </case>
    <case match="(?i-s:Mac_PowerPC)|(?i-s:Mac_PPC)|(?i-s:Macintosh.*PPC)|(?i-s:PPC Mac)">
      os="Macintosh PPC"
    </case>
    <case match="(?i-s:linux)|(?i-s:redhat)">
      os="Linux"
    </case>
    <case match="(?i-s:freebsd)">
      os="FreeBSD"
    </case>
    <case match="(?i-s:OpenBSD)">
      os="OpenBSD"
    </case>
    <case match="(?i-s:NetBSD)">
      os="NetBSD"
    </case>
    <case match="(?i-s:SunOS)">
      os="SunOS"
    </case>
    <case match="(?i-s:OS/2)">
      os="OS2"
    </case>
    <case match="(?i-s: IRIX )">
      os="SGI IRIX"
    </case>
    <case match="(?i-s: IRIX64 )">
      os="SGI IRIX"
    </case>
    <case match="(?i-s:AmigaOS.3\.9)">
      os="AmigaOS 3.9"
    </case>
    <case match="(?i-s:AmigaOS4\.0)">
      os="AmigaOS 4.0"
    </case>
    <case match="(?i-s:AmigaOS)|(?i-s:Amiga OS)">
      os="AmigaOS"
    </case>
    <case match="SymbianOS/(?'Version'\d\.\d\w|\d\.\d|\d)">
      os="SymbianOS/${Version}"
    </case>
    <case match="(?i-s:Symbian OS)">
      os="SymbianOS"
    </case>
    <case match="(?i-s:OSF1 alpha)|(?i-s:OSF1 .* alpha)">
      os="OSF1"
    </case>
    <case match="BeOS">
      os="BeOS"
    </case>
    <case match="OpenVMS">
      os="OpenVMS"
    </case>
  </filter>
  <!-- 
			Little hack to allow me to Identify that a browser is a Mobile Device 
			by keying off certain common items in the useragents.
			-->
  <!-- Owen Brady 10-1-05 -->
  <filter>
    <case match="PalmOS" with="%{os}">
      isMobileDevice="true"
    </case>
    <case match="Microsoft Windows CE" with="%{os}">
      isMobileDevice="true"
    </case>
    <case match="SymbianOS" with="%{os}">
      isMobileDevice="true"
    </case>
    <case match="Smartphone">
      isMobileDevice="true"
    </case>
    <case match="MobilePhone">
      isMobileDevice="true"
    </case>
    <case match="CellPhone">
      isMobileDevice="true"
    </case>
  </filter>
  <!-- Determine Browser -->
  <filter>
    <!-- WebTV -->
    <case match="WebTV/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
      browser=WebTV
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tables=true
      cookies=true
      backgroundsounds=true
      isMobileDevice="true"

      <filter match="2" with="${minor}">
        javascript=true
        ecmascriptversion=1.0
        css1=true
      </filter>
      <filter match="2" with="${major}">
        javascript=true
        ecmascriptversion=1.0
        css1=true
        tagwriter=System.Web.UI.HtmlTextWriter
      </filter>
      <filter match="^b" with="${letters}">
        beta=true
      </filter>
    </case>
    <!--Mozilla/4.0 (PSP (PlayStation Portable); 2.00) -->
    <!-- 10-06-05 -->
    <case match="PlayStation Portable">
      browser="PlayStation Portable"
      version=2.0
      majorversion=2
      minorversion=0
      tables=true
      cookies=true
      isMobileDevice="true"
      css1=true
      tagwriter=System.Web.UI.HtmlTextWriter
      Platform=PSP
    </case>
    <!-- 
				Author:	Rob Eberhardt, http://slingfive.com/
				History:
					2004-11-19	improved detection of Safari, Konqueror &amp; Mozilla variants, added Opera detection
					2003-12-21	updated TagWriter info
					2003-12-03	first published
				-->

    <!-- GECKO Based Browsers (Netscape 6+, Mozilla/Firefox, ...) //-->
    <!-- Edited by Owen Brady:6-12-05 -->
    <!-- Edited by Owen Brady:10-07-05 -->
    <case match="(Gecko/[-\d]+)">
      browser="Mozilla"
      cookies="true"
      ecmascriptversion="0.0"
      frames="true"
      isColor="true"
      javaapplets="true"
      javascript="true"
      majorversion="${major}"
      maximumRenderedPageSize="20000"
      minorversion="${minor}"
      preferredImageMime="image/jpeg"
      screenBitDepth="32"
      supportsDivNoWrap="false"
      supportsFileUpload="true"
      tables="true"
      type="desktop"
      version="${version}"
      <filter>
        <case match="Gecko/(?'Gecko'\d+)">
          BrowserBuild=${Gecko}
        </case>
      </filter>
      <filter>
        <case match="rv\:(?'version'(?'major'\d+)(?'minor'\.[\.|\w]*))" >
          majorversion="${major}"
          minorversion="${minor}"
          type="Mozilla${major}"
          version="${version}"
          ecmascriptversion="1.4"
          maximumRenderedPageSize="300000"
          preferredImageMime="image/gif"
          supportsCallback="true"
          supportsDivNoWrap="false"
          tagwriter="System.Web.UI.HtmlTextWriter"
          w3cdomversion="1.0"
          <filter>
            <case with="%{version}" match="^1\.[4-9]" >
              backgroundsounds="true"
              css1="true"
              css2="true"
              javaapplets="true"
              maximumRenderedPageSize="2000000"
              preferredImageMime="image/jpeg"
              screenBitDepth="32"
              supportsMultilineTextBoxDisplay="true"
              type="Mozilla${version}"
              xml="true"
            </case>
          </filter>
          <filter>
            <case match="Gecko\/\d+ Firebird\/(?'version'(?'major'\d+)(?'minor'\.\d+))|Gecko\/\d+ Firefox\/(?'version'(?'major'\d+)(?'minor'\.\d+))" >
              backgroundsounds="true"
              css1="true"
              css2="true"
              javaapplets="true"
              maximumRenderedPageSize="2000000"
              preferredImageMime="image/jpeg"
              screenBitDepth="32"
              supportsMultilineTextBoxDisplay="true"
              xml="true"
              version=${version}
              majorversion=${major}
              minorversion=${minor}
            </case>
          </filter>
        </case>
        <case match="m(?'version'\d+)\)">
          version=0.${version}
          majorversion=0
          minorversion=${version}
        </case>
      </filter>
      <filter>
        <case match="^Mozilla/5\.0 Galeon/(?'version'(?'major'\d+)\.(?'minor'\d+)\.(?'revision'\d+))">
          browser=Galeon
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          revisionversion=${revision}
        </case>
        <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'browser'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+)(?'letters'\w*)))">
          browser=${browser}
          version=${version}
          majorversion=0${major}
          minorversion=0${minor}
          revisionversion=0${revision}
        </case>
        <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'browser'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))">
          browser=${browser}
          version=${version}
          majorversion=0${major}
          minorversion=0${minor}
        </case>
      </filter>
      <filter>
        <case match="Phoenix" with="%{browser}">
          browser="Firefox"
        </case>
        <case match="Firebird" with="%{browser}">
          browser="Firefox"
        </case>
        <case match="Mozilla Firebird">
          browser="Firefox"
        </case>
        <case match="\(No IDN\) Firefox">
          browser="Firefox"
        </case>
        <case match="Netscape6" with="%{browser}">
          browser="Netscape"
        </case>
        <case match="CS 2000 7\.0" with="%{browser}">
          browser="CS 2000 7.0"
          version=7.0
          majorversion=7
          minorversion=0
        </case>
      </filter>
    </case>

    <!-- AppleWebKit Based Browsers (Safari...) //-->
    <!-- Edited by Owen Brady:10-06-05 -->
    <!--
					Use the following link to determine the proper version numbers based
					on AppleWebKit build Numbers
					http://developer.apple.com/internet/safari/uamatrix.html 
				-->
    <case match="AppleWebKit/(?'appleWebTechnologyVersion'\d+\.\d+\.\d+)|AppleWebKit/(?'appleWebTechnologyVersion'\d+\.\d+)|AppleWebKit/(?'appleWebTechnologyVersion'\d+)">
      <filter>
        appleWebTechnologyVersion="${appleWebTechnologyVersion}"
        browser="AppleWebKit"
        cookies="true"
        defaultScreenCharactersHeight="40"
        defaultScreenCharactersWidth="80"
        defaultScreenPixelsHeight="480"
        defaultScreenPixelsWidth="640"
        inputType="keyboard"
        isColor="true"
        majorversion="1"
        maximumRenderedPageSize="300000"
        minorversion=".0"
        screenBitDepth="8"
        supportsAccessibilityLinks="true"
        supportsBold="true"
        css1="true"
        css2="true"
        supportsCss="true"
        supportsDivNoWrap="true"
        supportsFontName="true"
        supportsFontSize="true"
        supportsImageSubmit="true"
        supportsItalic="true"
        type="Mozilla"
        version="1.0"
        javascript="true"
        javaapplets="true"
        ecmascriptversion="1.4"
        frames="true"
        tables="true"
        tagwriter="System.Web.UI.HtmlTextWriter"
        <!-- 
        Edited by Owen Brady:06-21-06 
        NO longer always a MACPPC
        -->
        <!--platform="MacPPC"-->
        <!-- http://www.omnigroup.com/applications/omniweb/developer/ -->
        <!-- Edited by Owen Brady:10-06-05 -->
        <!-- Revamped to list out the Proper Version Numbers -->
        <case match="OmniWeb/">
          browser=OmniWeb
          xml="true"
          <filter>
            <case match="OmniWeb/v496">
              version="4.5"
              majorversion="4"
              minorversion=".5"
            </case>
            <case match="OmniWeb/v558">
              version="5.0"
              majorversion="5"
              minorversion=".0"
            </case>
            <case match="OmniWeb/v563">
              version="5.1"
              majorversion="5"
              minorversion=".1"
            </case>
          </filter>
        </case>
        <!-- Edited by Owen Brady:05-12-06 -->
        <!-- Revamped to list out the Proper Version Numbers -->
        <!-- http://developer.apple.com/internet/safari/uamatrix.html -->
        <case match="Safari">
          browser=Safari
          xml="true"
          <filter>
            <case match="AppleWebKit/418">
              version="2.0.3"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/417.9">
              version="2.0.3"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/416.12">
              version="2.0.2"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/416.11">
              version="2.0.2"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/412.7">
              version="2.0.1"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/412">
              version="2.0"
              majorversion="2"
              minorversion=".0"
            </case>
            <case match="AppleWebKit/312\.5">
              version="1.3.1"
              majorversion="1"
              minorversion=".3"
            </case>
            <case match="AppleWebKit/312">
              version="1.3"
              majorversion="1"
              minorversion=".3"
            </case>
            <case match="AppleWebKit/125\.5\.[5-7]">
              version="1.2.4"
              majorversion="1"
              minorversion=".2"
            </case>
            <case match="AppleWebKit/125\.4|AppleWebKit/125\.5">
              version="1.2.3"
              majorversion="1"
              minorversion=".2"
            </case>
            <case match="AppleWebKit/125">
              version="1.2"
              majorversion="1"
              minorversion=".2"
            </case>
            <case match="AppleWebKit/100">
              version="1.1"
              majorversion="1"
              minorversion=".1"
            </case>
            <case match="AppleWebKit/85">
              ecmascriptversion="1.0"
              <case match="AppleWebKit/85\.8">
                version="1.0.3"
                majorversion="1"
                minorversion=".0"
              </case>
              <case match="AppleWebKit/85\.7">
                version="1.0"
                majorversion="1"
                minorversion=".0"
                <case  match="Safari/85\.7">
                  version="1.0.2"
                  majorversion="1"
                  minorversion=".0"
                </case>
              </case>
            </case>
          </filter>
        </case>
      </filter>
    </case>
    <!-- Edited by Owen Brady:10-06-05 -->
    <!-- Mozilla/4.5 (compatible; OmniWeb/4.1-v422; Mac_PowerPC) -->
    <case match="OmniWeb/(?'version'(?'major'\d+)(?'minor'\.\d+)\w*).*">
      browser=OmniWeb
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tagwriter="System.Web.UI.HtmlTextWriter"
    </case>
    <!-- iCab -->
    <!-- Edited by Owen Brady:6-12-05 -->
    <!-- http://www.icab.de/ -->
    <case match="iCab/|iCab ">
      browser=iCab
      tagwriter=System.Web.UI.HtmlTextWriter
      frames=true
      tables=true
      cookies=true
      javascript=true
      javaapplets=true
      ecmascriptversion=1.5
      w3cdomversion=1.0
      css1=true
      css2=true
      xml=true
      <filter>
        <case match="iCab/\((?'version'(?'major'\d+)\.(?'minor'\d+\.\d+)(?'revision'\.\d+))|iCab.(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          revisionversion=${revision}
        </case>
        <case match="iCab/\((?'version'(?'major'\d+)\.(?'minor'\d+\.\d+))|iCab.(?'version'(?'major'\d+)(?'minor'\.\d+))">
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>
      </filter>
    </case>

    <!-- Konqueror //-->
    <!-- Edited by Owen Brady:6-12-05 -->
    <case match=".+[K|k]onqueror">
      browser=Konqueror
      tagwriter=System.Web.UI.HtmlTextWriter
      type=Konqueror
      frames=true
      tables=true
      cookies=true
      javascript=true
      javaapplets=true
      ecmascriptversion=1.5
      w3cdomversion=1.0
      css1=true
      css2=true
      xml=true
      <filter>
        <case match=".+[K|k]onqueror/(?'version'(?'major'\d+)(?'minor'(\.[\d])*)(?'letters'[^;]*));\s+(?'platform'[^;\)]*)(;|\))">
          version=${version}
          majorversion=0${major}
          minorversion=0${minor}
          platform=${platform}
        </case>
        <case match="[K|k]onqueror/(?'version'(?'major'\d+)(?'minor'\.\d+))">
          version=${version}
          majorversion=0${major}
          minorversion=0${minor}
        </case>
        <case match="[K|k]onqueror2">
          version=2.0
          majorversion=2
          minorversion=0
        </case>
      </filter>
      <filter>
        <case match=";.(?'Build'\d{8})">
          BrowserBuild =${Build}
        </case>
      </filter>
    </case>
    <!-- Opera -->
    <!-- Edited by Owen Brady:10-07-05 -->
    <case match="Opera[ /](?'version'(?'major'\d+)(?'minor'\.(?'minorint'\d+))(?'letters'\w*))">
      browser="Opera"
      cookies="true"
      css1="true"
      css2="true"
      defaultScreenCharactersHeight="40"
      defaultScreenCharactersWidth="80"
      defaultScreenPixelsHeight="480"
      defaultScreenPixelsWidth="640"
      ecmascriptversion="1.1"
      frames="true"
      javascript="true"
      letters="${letters}"
      inputType="keyboard"
      isColor="true"
      majorversion="${major}"
      maximumRenderedPageSize="300000"
      minorversion="${minor}"
      screenBitDepth="8"
      supportsBold="true"
      supportsCss="true"
      supportsDivNoWrap="true"
      supportsFontName="true"
      supportsFontSize="true"
      supportsImageSubmit="true"
      supportsItalic="true"
      tables="true"
      tagwriter="System.Web.UI.Html32TextWriter"
      type="Opera${major}"
      version="${version}"

      <filter>
        <case match=" (?'screenWidth'\d*)x(?'screenHeight'\d*)">
          screenPixelsHeight="${screenHeight}"
          screenPixelsWidth="${screenWidth}"
        </case>
      </filter>

      <filter>
        <case match="MSIE (?'msversion'\d+\.\d+)">
          msdomversion="${msversion}"
        </case>
      </filter>

      <filter>
        <case match="Linux \S+embedix">
          isMobileDevice="true"
        </case>
      </filter>

      <filter match="[4-9]" with="${major}">
        ecmascriptversion=1.3
        css1=true
        css2=true
        xml=true
        <filter match="[5-9]" with="${major}">
          w3cdomversion=1.0
          inputType="virtualKeyboard"
          isColor="true"
          maximumRenderedPageSize="7000"
          preferredImageMime="image/jpeg"
          screenBitDepth="24"
          supportsFileUpload="true"
          supportsFontName="false"
          supportsItalic="false"
          <filter match="[6-9]" with="${major}">
            backgroundsounds="true"
            inputType="keyboard"
            javaapplets="true"
            maximumRenderedPageSize="2000000"
            preferredImageMime="image/jpeg"
            screenBitDepth="32"
            supportsFontName="true"
            supportsItalic="true"
            supportsMultilineTextBoxDisplay="true"
            <filter match="[7-9]" with="${major}">
              tagwriter=System.Web.UI.HtmlTextWriter
              <case match="7" with="${major}">
                <filter>
                  <case match="[5-9]" with="${minorint}">
                    ecmascriptversion=1.5
                  </case>
                  <case>
                    ecmascriptversion=1.4
                  </case>
                </filter>
              </case>
              <case match="[8-9]" with="${major}">
                ecmascriptversion=1.5
              </case>
            </filter>
            <filter>
              <case match="; (?'screenWidth'\d+)x(?'screenHeight'\d+)\)">
                screenPixelsHeight="${screenHeight}"
                screenPixelsWidth="${screenWidth}"
                backgroundSounds="false"
                canSendMail="false"
                inputType="virtualKeyboard"
                JavaApplets="false"
                maximumRenderedPageSize="200000"
                msDomVersion="0.0"
                preferredImageMime="image/gif"
                requiredMetaTagNameValue="HandheldFriendly"
                requiresPragmaNoCacheHeader="true"
                requiresUniqueFilePathSuffix="true"
                screenBitDepth="24"
                supportsDivNoWrap="false"
                supportsFontName="false"
                supportsItalic="true"
                tagwriter="System.Web.UI.Html32TextWriter"
              </case>
            </filter>
          </filter>
        </filter>
      </filter>
      <filter match="^b" with="${letters}">
        beta=true
      </filter>
      <filter match="Mozilla/.* \(compatible; Opera .*; EPOC; (?'screenWidth'\d*)x(?'screenHeight'\d*)\)">
        cachesAllResponsesWithExpires="true"
        canRenderEmptySelects="false"
        canSendMail="false"
        css1="false"
        css2="false"
        hidesRightAlignedMultiselectScrollbars="true"
        inputType="keyboard"
        isColor="false"
        isMobileDevice="true"
        maximumRenderedPageSize="2560"
        mobileDeviceManufacturer="Psion"
        requiresUniqueFilePathSuffix="true"
        screenBitDepth="2"
        screenCharactersHeight="6"
        screenCharactersWidth="50"
        screenPixelsHeight="${screenHeight}"
        screenPixelsWidth="${screenWidth}"
        supportsBodyColor="false"
        supportsCss="false"
        supportsDivNoWrap="false"
        supportsFontColor="false"
        supportsFontName="false"
        supportsSelectMultiple="false"
        tagwriter="System.Web.UI.Html32TextWriter"
      </filter>
    </case>

    <!-- Pocket IE -->
    <case match="Windows CE">
      <!-- Pocket IE for Pocket PC -->
      <!-- Moved & Edited by Owen Brady: 6-25-06 -->
      <filter>
        <case match="Mozilla/\S* \(compatible; MSIE (?'majorVersion'\d*)(?'minorVersion'\.\d*);\D* Windows CE(;(?'deviceID' \D\w*))?(; (?'screenWidth'\d+)x(?'screenHeight'\d+))?">
          type = "Pocket IE"
          browser = "Pocket IE"
          platform = "WinCE"
          cookies = "true"
          backgroundsounds = "true"
          javaapplets = "false"
          javascript = "true"
          vbscript = "false"
          tables = "true"
          activexcontrols = "true"
          supportsImageSubmit = "true"
          requiresUniqueFilePathSuffix = "true"
          requiresContentTypeMetaTag = "true"
          optimumPageWeight = "4000"
          supportsBold = "true"
          supportsItalic = "true"
          supportsFontSize = "true"
          supportsFontName = "true"
          supportsFontColor = "true"
          supportsBodyColor = "true"
          supportsDivAlign = "true"
          supportsDivNoWrap = "false"
          mobileDeviceModel = "Pocket PC"
          maximumRenderedPageSize = "262144"
          isMobileDevice="true"
          majorVersion = ${majorVersion}
          minorVersion = ${minorVersion}
          frames = "true"
          requiresLeadingPageBreak = "true"
          tagwriter=System.Web.UI.HtmlTextWriter
          <filter>
            <case match="^$" with="${deviceID}">
              supportsQueryStringInFormAction = "false"
            </case>
            <case match=" Smartphone;" with="${deviceID}">
              minorVersion = ".1"
              frames = "false"
              mobileDeviceModel = "Smartphone"
            </case>
            <case match="i-mate K-JAM">
              mobileDeviceManufacturer = "i-mate"
              mobileDeviceModel = "K-JAM"
            </case>
            <filter match="Nokia">
              mobileDeviceManufacturer = "Nokia"
              <case match="Nokia9300">
                mobileDeviceModel = "Nokia9300"
              </case>
            </filter>            
            <filter match="Sprint">
              mobileDeviceManufacturer = "Sprint"
              <case match="PPC-6700">
                mobileDeviceModel = "PPC-6700"
              </case>
            </filter>
            <filter match="HP iPAQ|HPiPAQ">
              mobileDeviceManufacturer = "HP iPAQ"
              <case match="HP iPAQ hw6500">
                mobileDeviceModel = "hw6500"
              </case>
              <case match="HPiPAQhw692x">
                mobileDeviceModel = "hw692x"
              </case>              
            </filter>
            <filter match="^HTC-">
              mobileDeviceManufacturer = "High Tech Computer Corporation"
              <case match="HTC-2125">
                <!-- Still Looking-->            
              </case>
              <case match="HTC-8100">
                <!-- http://www.htcmms.com.tw/gen/wizard-1.0.xml-->
                <!-- HTC-8100/1.2 Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; PPC; 240x320) UP.Link/6.3.0.0.0-->
                mobileDeviceModel = "Wizard"
              </case>
            </filter>
          </filter>
          version = ${majorVersion}${minorVersion}
          screenPixelsWidth = ${screenWidth}
          screenPixelsHeight = ${screenHeight}
          defaultCharacterWidth = "7"
          defaultCharacterHeight = "18"
          inputType = "virtualKeyboard"
        </case>
      </filter>
    </case>
    <!-- Owen Brady: 10-8-05 -->
    <!-- 
				Mozilla/3.01 (compatible; Net.Box/1.5 R79b; NEOS 5.18)
				Mozilla/3.01 (compatible; NetBox/3.5 R85; Linux 2.2)
				Mozilla/3.01 (compatible; Netbox/3.5 R90; Linux 2.2)
				Mozilla/3.01 (compatible; Netbox/3.5 R92.6; Linux 2.2)
				Mozilla/3.01 (compatible; Netbox/3.5 R93rc3; Linux 2.2)
				Mozilla/3.01 (compatible; Netgem/3.6.4.1b2; netbox.itv; Linux 2.2)
				Mozilla/3.01 (compatible; Netgem/3.6.6; TVMate; Linux 2.2)
				Mozilla/3.01 (compatible; Netgem/3.6.8; netbox; Linux 2.2)
				Mozilla/4.61 [en] (not Windaube; netbox/3.5 R89; Linux 2.2)
				Mozilla/4.0 (compatible; MSIE 5.01; Windows 98; Linux 2.4.2-mvista_01) [Netgem; 4.2.3; i-Player; netbox]
				Mozilla/4.0 (compatible; MSIE 5.01; Windows 98; Linux 2.4.2-mvista_01) [Netgem; 4.4.2; i-Player; netbox; NetgemUK]
				-->
    <!-- http://www.netgem.com/produits_netbox.php -->
    <case match="Net\.Box|NetBox|Netbox|Netgem">
      browser="Netgem NetBox"
      os="Linux"
      <case match="^Mozilla[^(]*\(compatible; (?'Browser'.+)/(?'version'(?'major'\d+)(?'minor'\.\d+)).*\)|^Mozilla[^(]*\(compatible; (?'Browser'.+) (?'version'(?'major'\d+)(?'minor'\.\d+)).*\)">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="\[Netgem;.(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <!-- IE -->
    <case match="^Mozilla[^(]*\(compatible; MSIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'.*)">

      browser=IE
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      <filter>
        <case with="${extra}" match="MSIECrawler">
          IsBot=true
        </case>
      </filter>
      <case match="^[5-9]\." with="${version}">
        frames=true
        tables=true
        cookies=true
        backgroundsounds=true
        vbscript=true
        javascript=true
        javaapplets=true
        activexcontrols=true
        tagwriter=System.Web.UI.HtmlTextWriter
        ecmascriptversion=1.2
        msdomversion=${major}${minor}
        w3cdomversion=1.0
        css1=true
        css2=true
        xml=true
        <filter with="${letters}" match="^b">
          beta=true
        </filter>
        <filter with="${extra}" match="Crawler">
          crawler=true
        </filter>
        <filter with="${extra}" match="Win64|WOW64">
          win64=true
        </filter>
        <filter>
          <!--try to pick out the newest version of the clr listed-->
          <!--Added by Owen Brady: 6-12-05 -->
          <case match="NET CLR 2\.0\.(?'clrVersion'\d{5})">
            clrVersion="2.0.${clrVersion}"
          </case>
          <case match="NET CLR 1\.2\.(?'clrVersion'\d{5})|NET CLR 1\.2\.(?'clrVersion'\d{4})">
            clrVersion="1.2.${clrVersion}"
          </case>
          <case match="NET CLR 1\.1\.4322">
            clrVersion="1.1.4322"
          </case>
          <case match="NET CLR 1\.1\.(?'clrVersion'\d{4})">
            clrVersion="1.1.${clrVersion}"
          </case>
          <case match="NET CLR 1\.0\.3119">
            clrVersion="1.0.3119"
          </case>
          <case match="NET CLR 1\.0\.3705">
            clrVersion="1.0.3705"
          </case>
          <case match="NET CLR 1\.0\.2914">
            clrVersion="1.0.2914"
          </case>
          <case match="NET CLR 1\.0\.(?'clrVersion'\d{4})">
            clrVersion="1.0.${clrVersion}"
          </case>
          <!--Couldn't find a match to the others so we default to the first one listed -->
          <case match="NET CLR (?'clrVersion'[0-9\.]*)">
            clrVersion=${clrVersion}
          </case>
        </filter>
      </case>
      <case match="^4\." with="${version}">
        frames=true
        tables=true
        cookies=true
        backgroundsounds=true
        vbscript=true
        javascript=true
        javaapplets=true
        activexcontrols=true
        tagwriter=System.Web.UI.HtmlTextWriter
        ecmascriptversion=1.2
        msdomversion=4.0
        cdf=true
        css1=true

        <filter with="${letters}" match="^[ab]">
          beta=true
        </filter>
        <filter with="${extra}" match="Crawler">
          crawler=true
        </filter>
        <filter match="; AOL" with="${extra}">
          aol=true
        </filter>
        <filter match="; Update a;" with="${extra}">
          authenticodeupdate=true
        </filter>
      </case>
      <case match="^3\." with="${version}">
        frames=true
        tables=true
        cookies=true
        backgroundsounds=true
        vbscript=true
        javascript=true
        javaapplets=true
        activexcontrols=true
        ecmascriptversion=1.0
        css1=true

        <filter match="true" with="%{win16}">
          javaapplets=false
          activexcontrols=false
          <filter match="^a" with="${letters}">
            beta=true
            vbscript=false
            javascript=false
          </filter>
        </filter>
        <filter match="Mac68K|MacPPC" with="%{platform}">
          vbscript=false
          activexcontrols=false
        </filter>
        <filter match="^B" with="${letters}">
          beta=true
        </filter>
        <filter match="; AK;" with="${extra}">
          ak=true
        </filter>
        <filter match="; SK;" with="${extra}">
          sk=true
        </filter>
        <filter match="; Update a;" with="${extra}">
          authenticodeupdate=true
        </filter>
        <filter match="; AOL" with="${extra}">
          aol=true
        </filter>
      </case>
      <case match="^2\." with="${version}">
        tables=true
        cookies=true
        backgroundsounds=true

        <filter match="^b" with="${letters}">
          beta=true
        </filter>
        <filter match="; AOL" with="${extra}">
          aol=true
        </filter>
      </case>
      <case match="^1\.5" with="${version}">
        tables=true
        cookies=true
      </case>
    </case>

    <!-- Microsoft Windows Media Player -->
    <!-- Added by Owen Brady:6-12-05 -->
    <case match="Windows-Media-Player/(?'version'(?'major'\d+)\.(?'minor'\d+\.\d+)\.(?'revision'\d+))">
      Browser="Microsoft Media Player"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      revisionversion=${revision}
      ecmascriptversion=1.2
      w3cdomversion=1.0
      tagwriter=System.Web.UI.HtmlTextWriter
      <filter match="9|10" with="${major}">
        platform=WinNT
      </filter>
    </case>

    <!-- Pocket IE -->
    <case match="^Microsoft Pocket Internet Explorer/0.6">
      browser=PIE
      version=1.0
      majorversion=1
      minorversion=0
      tables=true
      backgroundsounds=true
      platform=WinCE
      isMobileDevice="true"

    </case>

    <!-- Pocket IE -->
    <case match="^Mozilla[^(]*\(compatible; MSPIE (?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))(?'extra'.*)">
      browser=PIE
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tables=true
      backgroundsounds=true
      cookies=true
      isMobileDevice="true"

      <case match="2\." with="${version}">
        frames=true
      </case>
    </case>
    <!-- Oracle PowerBrowser -->
    <case match="^Mozilla/2\.01 \(Compatible\) Oracle\(tm\) PowerBrowser\(tm\)/1\.0a">
      browser=PowerBrowser
      version=1.5
      majorversion=1
      minorversion=.5
      frames=true
      tables=true
      cookies=true
      vbscript=true
      javascript=true
      javaapplets=true
      platform=Win95
    </case>
    <!--Begin Amiga Base Browsers-->
    <!-- Owen Brady: 10-8-05 -->
    <case match="compatible; AmigaOS; Chimera">
      browser=Chimera
    </case>
    <!-- http://web.ukonline.co.uk/amigaoasis/news/vy0400.html -->
    <!-- http://v3.vapor.com/ -->
    <case match="^AmigaVoyager|compatible; Voyager; AmigaOS">
      browser="Voyager"
      tagwriter=System.Web.UI.HtmlTextWriter
      <case match="^AmigaVoyager/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        revisionversion=${revision}
      </case>
      <case match="^AmigaVoyager/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <!-- Owen Brady: 10-8-05 -->
    <!-- http://www.hisoft.co.uk/ -->
    <!-- No longer supported that I can tell -->
    <case match="IBrowse/\((?'version'(?'major'\d+)\.(?'minor'\d+\.\d+))|IBrowse.(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=IBrowse
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tagwriter=System.Web.UI.HtmlTextWriter
    </case>
    <!-- Owen Brady: 10-8-05 -->
    <!-- http://www.amitrix.com/aweb.html -->
    <case match="^Amiga-AWeb">
      platform="Amiga"
      browser="Amiga-AWeb"
      tagwriter=System.Web.UI.HtmlTextWriter
      <case match="^Amiga-AWeb/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        revisionversion=${revision}
      </case>
      <case match="^Amiga-AWeb/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <!--End Amiga Base Browsers-->
    <!-- Owen Brady: 10-8-05 -->
    <!-- http://elinks.or.cz/ -->
    <case match="^ELinks \((?'version'(?'major'\d+)\.(?'minor'\d+\.\d+))|ELinks/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=ELinks
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tagwriter=System.Web.UI.HtmlTextWriter
      javascript=false
      tables=true
    </case>
    <!-- Owen Brady: 10-8-05 -->
    <!-- http://links.twibright.com/features.php -->
    <case match="^Links \(">
      tagwriter=System.Web.UI.HtmlTextWriter
      javascript=false
      tables=true
      <filter match="(^Links \((?'version'(?'major'\d+)\.(?'minor'\d+\.\d+)))|(^Links \((?'version'(?'major'\d+)\.(?'minor'\d+)))">
        browser=Links
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </filter>
    </case>
    <!-- Owen Brady: 10-8-05 -->
    <!-- http://lynx.browser.org/ -->
    <case match="^Lynx/">
      browser=Lynx
      javascript=false
      tables=true
      tagwriter=System.Web.UI.HtmlTextWriter
      <case match="Lynx/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        revisionversion=${revision}
      </case>
    </case>
    <!-- Owen Brady: 10-9-05 -->
    <!-- 
			http://www.antlimited.com/products/fresco.htm 
			http://www.antlimited.com/products/fresco-features.htm
			
			Mozilla/3.04 (compatible; ANTFresco/1.99; OS20)
			Mozilla/3.04 (compatible; ANTFresco/1.99; OS20)
			Mozilla/3.04 (compatible; NCBrowser/2.35 (1.45.2.1); ANTFresco/2.17; RISC OS-NC 5.13 Laz1UK1802)
			Mozilla/3.04 (compatible; NCBrowser/2.35; ANTFresco/2.17; RISC OS-NC 5.13 Laz1UK1309)
			Mozilla/4.77 (compatible; NCBrowser/5.67.0; ANTFresco/4.7.22.8; RISC OS-STB 4.0.0 STB4001910)
		-->
    <case match="; ANTFresco/(?'version'(?'major'\d+)(?'minor'\.\d+)).*\)">
      browser="ANT Fresco"
      javascript=true
      tables=true
      cookies=true
      css1=true
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <!-- Owen Brady: 10-9-05 -->
    <case match="compatible; Lotus-Notes/(?'version'(?'major'\d+)(?'minor'\.\d+)).*\)">
      browser="Lotus-Notes"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <!-- Owen Brady: 10-9-05 -->
    <!-- http://www.w3.org/Amaya/ -->
    <case match="^amaya/(?'version'(?'major'\d+)\.(?'minor'\d+))">
      browser=Amaya
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tagwriter=System.Web.UI.HtmlTextWriter
      javascript=true
      tables=true
    </case>
    <!-- Owen Brady: 02-09-06 -->
    <!-- http://www.planetweb.com/-->
    <case match="Planetweb/(?'version'(?'major'\d+)\.(?'minor'\d+))">
      browser="Planetweb"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      tagwriter=System.Web.UI.HtmlTextWriter
      isMobileDevice="true"
      platform="Dreamcast"
      os="Dreamcast"
    </case>
    <!-- Owen Brady: 10-12-05 -->
    <!-- Uses a IE Control in a custom Browser-->
    <case match="avantbrowser\.com">
      browser="Avant Browser"
      frames=true
      tables=true
      cookies=true
      backgroundsounds=true
      vbscript=true
      javascript=true
      javaapplets=true
      activexcontrols=true
      tagwriter=System.Web.UI.HtmlTextWriter
      ecmascriptversion=1.2
      w3cdomversion=1.0
      css1=true
      css2=true
      xml=true
    </case>
    <!-- Owen Brady: 10-9-05 -->
    <!-- General Catchall -->
    <!-- Owen Brady: 6-13-05 -->
    <!-- 
			Used to Find browsers which consider themselves compatible with Mozzila and that
			I do not know much about, but a name / version is at least something I can try to get
		-->
    <case match="^Mozilla[^(]*\(compatible; (?'Browser'.+)/(?'version'(?'major'\d+)(?'minor'\.\d+)).*\)|^Mozilla[^(]*\(compatible; (?'Browser'.+) (?'version'(?'major'\d+)(?'minor'\.\d+)).*\)">
      browser="${Browser}"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      <!-- 
				I am guessing if I don't know about it I should mark it at least as as Unknown
				10-09-05 Owen Brady
			 -->
      Unknown=true
    </case>
    <case match="^Mozilla[^(]*\(compatible; (?'Browser'.+);.*\)|^Mozilla[^(]*\(compatible; (?'Browser'.+)\)">
      browser="${Browser}"
      <!-- 
				I am guessing if I don't know about it I should mark it at least as as Unknown
				10-09-05 Owen Brady
			 -->
      Unknown=true
    </case>

    <!-- Netscape -->
    <case match="^Mozilla/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)).*">
      browser=Netscape
      version=${version}
      majorversion=${major}
      minorversion=${minor}

      <filter match="^b" with="${letters}">
        beta=true
      </filter>
      <filter match="Gold" with="${letters}">
        gold=true
      </filter>
      <filter>
        <case match="^[4-9]\." with="${version}">
          frames=true
          tables=true
          cookies=true
          javascript=true
          javaapplets=true
          ecmascriptversion=1.2
          css1=true

          <filter match="^[5-9]*" with="${minor}">
            ecmascriptversion=1.3
          </filter>
        </case>
        <case match="^[2-3]\." with="${version}">
          frames=true
          tables=true
          cookies=true
          javascript=true
          javaapplets=true
          ecmascriptversion=1.1
        </case>
      </filter>
    </case>
    <!-- 10-15-05 Owen Brady -->
    <!-- 
			When all else fails try to match it against a simple pattern to match
			the browsers that are left. Used to help me mostly Identify new browser
			groups that I missed.
		 -->
    <case match="(?'Browser'^\w+)/(?'version'(?'major'\d+)\.(?'minor'\d+))">
      browser=${Browser}
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      Unknown=true
    </case>
  </filter>

  <!-- Default Unknown -->
  <filter>
    <case match="Unknown" with="%{browser}">
      type=Unknown
    </case>
    <case>
      type=%{browser}%{majorversion}
    </case>
  </filter>

  <!-- Begin Crawler/spider detection -->
  <!-- 
		Identify Common Crawler, Spider and similar purpose Agents which
		are denoted by the crawler attribute set to true
	-->
  <!-- 10-09-05 Added by Owen Brady-->
  <filter>
    <!-- check MSN -->
    <case match="MSNBOT|msnbot">
      browser="MSNBOT"
      crawler=true
      <case match="(?'Browser'^\w+)/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <case match="larbin">
      browser="larbin"
      crawler=true
    </case>
    <case match="Girafabot">
      browser="Girafabot"
      crawler=true
    </case>
    <!--Webservice Application/Checker-->
    <case match="StrikeIron">
      browser="StrikeIron"
      crawler=true
    </case>
    <case match="psbot|picsearch.com">
      browser="picsearch.com"
      crawler=true
    </case>
    <case match="www.galaxy.com">
      browser="Galaxy.com"
      crawler=true
      <!-- Just making sure 
				Mozilla/4.0+(compatible;+MSIE+5.0;+www.galaxy.com;+http://ocean.accesswa.net/comics/;++http://www.galaxy.com/info/crawler.html)
			-->
    </case>
    <!-- Defunct Project by looksmart-->
    <case match="grub-client-(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
      browser=grub-client
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <!-- check Slurp (Yahoo uses this as well) -->
    <case match="slurp@inktomi.com|Yahoo! Slurp">
      browser=Slurp
      crawler=true
    </case>
    <case match="Yahoo-MMCrawler">
      browser="Yahoo-MMCrawler"
      crawler=true
    </case>
    <case match="ZyBorg/">
      browser=WISEnutbot
      crawler=true
    </case>
    <!-- Ask Jeeves -->
    <case match="Ask Jeeves">
      browser="Ask Jeeves"
      crawler=true
    </case>
    <!-- check Fast -->
    <case match="^FAST-WebCrawler/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=FAST-WebCrawler
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="^voyager/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=Voyager
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="^Overture-WebCrawler/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=FAST-WebCrawler
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Mediapartners-Google/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Mediapartners Google"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Googlebot-Image/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Googlebot Image"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Googlebot/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=Google
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Googlebot-Mobile/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=Googlebot-Mobile
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>    
    <case match="W3C_Validator.(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="W3C_Validator"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Microsoft URL Control - (?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
      browser=Microsoft_URL_Control
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      revisionversion=${revision}
      crawler=true
    </case>
    <case match="Microsoft-WebDAV-MiniRedir/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'revision'\.\d+))">
      browser=Microsoft-WebDAV-MiniRedir
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      revisionversion=${revision}
      crawler=true
    </case>
    <!-- check Alta Vista (Scooter) -->
    <case match="Scooter[-/](?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Alta Vista"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <!-- check Alta Vista (Mercator) -->
    <case match="Mercator-(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Alta Vista"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <!-- check Alta Vista (Mercator) -->
    <case match="Mercator">
      browser=AltaVista
      crawler=true
    </case>
    <case match="http://www.nutch.org/">
      browser="Nutch"
      crawler=true
    </case>
    <case match="deepak-USC/ISI">
      browser="deepak"
      crawler=true
    </case>
    <case match="boitho.com-dc|boitho.com">
      browser="boitho.com-dc"
      crawler=true
    </case>
    <case match="relevare\.com">
      browser="relevare.com"
      crawler=true
    </case>
    <case match="CerberianDrtrs|Cerberian Drtrs">
      browser="cerberian.com"
      crawler=true
    </case>
    <case match="CJNetworkQuality">
      browser="cj.com"
      crawler=true
    </case>
    <case match="instantssl\.com|whichssl\.com">
      browser="cj.com"
      crawler=true
    </case>
    <case match="ClariaBot|Diamond">
      browser="Gator.com"
      crawler=true
    </case>
    <case match="spider\.ilab\.sztaki\.hu">
      browser="www.ilab.sztaki.hu"
      crawler=true
    </case>
    <case match="ConveraCrawler">
      browser="ConveraCrawler"
      crawler=true
    </case>
    <case match="CosmixCrawler">
      browser="CosmixCrawler"
      crawler=true
    </case>
    <case match="Cowbot|NaverRobot">
      browser="Naver.com"
      crawler=true
    </case>
    <case match="Crowline">
      browser="dackom.com"
      crawler=true
    </case>
    <case match="EasyDL">
      browser="keywen.com"
      crawler=true
    </case>
    <case match="FAST FirstPage retriever">
      browser="fast.no"
      crawler=true
    </case>
    <case match="fastsearch.com">
      browser="fastsearch.com"
      crawler=true
    </case>
    <case match="findlinks">
      browser="wortschatz.uni-leipzig.de"
      crawler=true
    </case>
    <case match="FyberSpider">
      browser="fybersearch.com"
      crawler=true
    </case>
    <case match="Gaisbot">
      browser="gais.cs.ccu.edu.tw"
      crawler=true
    </case>
    <case match="GeonaBot">
      browser="geona.com"
      crawler=true
    </case>
    <case match="HTML2JPG">
      browser="html2jpg.com"
      crawler=true
    </case>
    <!-- IBM Research Web Crawler -->
    <case match="http\:\/\/www\.almaden.ibm.com\/cs\/crawler">
      browser=IBMResearchWebCrawler
      crawler=true
    </case>
    <case match="netzhase.de">
      browser="netzhase.de"
      crawler=true
    </case>
    <case match="Teradex Mapper">
      browser="teradex.com"
      crawler=true
    </case>
    <case match="adminshop\.com">
      browser="adminshop.com"
      crawler=true
    </case>
    <case match="libwww-perl">
      browser="libwww-perl"
      crawler=true
      <case match="libwww-perl/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <case match="agense\.com">
      browser="agense.com"
      crawler=true
    </case>
    <case match="amfibi\.com">
      browser="amfibi.com"
      crawler=true
    </case>
    <case match="AnswerBus">
      browser="AnswerBus.com"
      crawler=true
    </case>
    <case match="AOLserver-Tcl">
      browser="AOLserver"
      crawler=true
    </case>
    <case match="Aport">
      browser="Aport [Russian]"
      crawler=true
    </case>
    <case match="appie|walhello\.com">
      browser="walhello.com"
      crawler=true
    </case>
    <case match="(?i-s:ASPSeek)">
      browser="ASPseek"
      crawler=true
      <case match="^ASPSeek/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
      </case>
    </case>
    <case match="asterias|singingfish\.com">
      browser="Singing Fish"
      crawler=true
    </case>
    <case match="baiduspider">
      browser="baidu.com"
      crawler=true
    </case>
    <case match="BeebwareDirectory">
      browser="beebware.co.uk"
      crawler=true
    </case>
    <case match="BlackWidow">
      browser="BlackWidow"
      crawler=true
    </case>
    <case match="BravoBrian SpiderEngine MarcoPolo">
      browser="marcopolo-education.org"
      crawler=true
    </case>
    <case match="NetNose-Crawler">
      browser="netnose.com"
      crawler=true
    </case>
    <case match="^Infoseek SideWinder">
      browser="Infoseek"
      crawler=true
    </case>
    <case match="^Website Downloader">
      browser="Website Downloader"
      crawler=true
    </case>
    <case match="^QuepasaCreep">
      browser="QuepasaCreep"
      crawler=true
    </case>
    <case match="^internetseer.com">
      browser="internetseer.com"
      crawler=true
    </case>
    <case match="^WebStripper/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="WebStripper"
      crawler=true
      version=${version}
      majorversion=${major}
    </case>
    <case match="^Java/{0,1}(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Java"
      crawler=true
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <case match="Jeanie/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="Jeanie"
      crawler=true
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <case match="Iltrovatore-Setaccio|iltrovatore\.it">
      browser="iltrovatore.it"
      crawler=true
    </case>
    <case match="BecomeBot|become.com">
      browser="become.com"
      crawler=true
      <case match="BecomeBot/{0,1}(?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <case match="NaverBot|naver\.com">
      browser="NaverBot"
      crawler=true
    </case>
    <case match="searchmain.com|^Searchmain.DeepBot">
      browser="searchmain.com"
      crawler=true
    </case>
    <case match="sohu-search">
      browser="tutorgig.info"
      crawler=true
    </case>
    <case match="TutorGigBot">
      browser="sohu-search"
      crawler=true
    </case>
    <case match="sherlock|holmes">
      browser="sherlock.com.cn"
      crawler=true
    </case>
    <case match="IRLbot">
      browser="irl.cs.tamu.edu"
      crawler=true
    </case>
    <case match="SurveyBot">
      browser="SurveyBot"
      crawler=true
    </case>
    <case match="MJ12bot|majestic12.co.uk">
      browser="majestic12.co.uk"
      crawler=true
    </case>
    <case match="ia_archiver">
      browser="ia_archiver"
      crawler=true
    </case>
    <case match="Netcraft Web Server Survey">
      browser="Netcraft Web Server Survey"
      crawler=true
    </case>
    <case match="MS FrontPage">
      browser="MS FrontPage"
      crawler=true
    </case>
    <case match="Nutch">
      browser="Nutch"
      crawler=true
    </case>
    <case match="Jakarta Commons\-HttpClient">
      browser="Jakarta Commons-HttpClient"
      crawler=true
    </case>
    <case match="LWP\:\:Simple\/">
      browser="LWP::Simple/"
      crawler=true
    </case>
    <case match="Siege">
      <!-- http://www.joedog.org/siege/index.php -->
      browser="Siege"
      crawler=true
      <case match="Siege (?'version'(?'major'\d+)(?'minor'\.\d+))">
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
    </case>
    <case match="DA (?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser=DA
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="^NG/{0,1}(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser="NG"
      crawler=true
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <case match="MS Web Services Client Protocol">
      browser="MS Web Services Client Protocol"
      crawler=true
    </case>
    <case match="compatible; DC9FE0029G;">
      <!-- http://www.webmasterworld.com/forum11/2938.htm -->
      browser="Helix"
      crawler=true
    </case>
    <case match="NEWT ActiveX">
      <!-- http://www.leekillough.com/antispam.html -->
      browser="NEWT ActiveX"
      crawler=true
    </case>
    <case match="T-H-U-N-D-E-R-S-T-O-N-E">
      <!-- http://www.thunderstone.com/texis/site/pages -->
      browser="THUNDERSTONE"
      crawler=true
    </case>
    <case match="Xenu Link Sleuth (?'version'(?'major'\d+)\.(?'minor'\d+))">
      crawler=true
      browser="Xenu Link Sleuth"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>
    <case match="WebCopier v(?'version'(?'major'\d+)\.(?'minor'\d+))">
      browser="WebCopier"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <case match="Python\-urllib/(?'version'(?'major'\d+)\.(?'minor'\d+))">
      browser="Python-urllib"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      crawler=true
    </case>
    <!-- check Excite -->
    <case match="ArchitextSpider">
      browser=Excite
      crawler=true
    </case>
    <!-- Lycos -->
    <case match="Lycos_Spider">
      browser=Lycos
      crawler=true
    </case>
    <case match="Crayon Crawler"></case>
    <case match="MSIECrawler"></case>
    <case match="(?i-s:crawler)|(?i-s:spider)|(?i-s:bot)">
      crawler=true
      <filter>
        <case match="(?'Browser'^\w+)[/+](?'version'(?'major'\d+)(?'minor'\.\d+))">
          browser="${Browser}"
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>
        <case match="(?'Browser'^\w+)[/+](?'version'(?'major'\d+))">
          browser="${Browser}"
          version=${version}
          majorversion=${major}
        </case>
      </filter>
    </case>
    <case match="(?'Browser'^\w+)/(?'version'(?'major'\d+)\.(?'minor'\d+))">
      <case match="curl" with="${Browser}">
        crawler=true
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="ccubee" with="${Browser}">
        <!-- http://ccubee.com/ -->
        crawler=true
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="GetRight" with="${Browser}">
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        crawler=true
      </case>
      <!-- check Northern Light -->
      <case match="Gulliver" with="${Browser}">
        browser="NorthernLight"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        crawler=true
      </case>
      <case match="webcollage" with="${Browser}">
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        crawler=true
      </case>
      <case match="^webGobbler/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        browser="webGobbler"
        IsBot=true
        crawler=true
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="^Exabot/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        browser="Exabot"
        IsBot=true
        crawler=true
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="^Exabot-Images/(?'version'(?'major'\d+)(?'minor'\.\d+))">
        browser="Exabot-Images"
        IsBot=true
        crawler=true
        version=${version}
        majorversion=${major}
        minorversion=${minor}
      </case>
      <case match="WebCopier" with="${Browser}">
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        crawler=true
      </case>
      <case match="Wget" with="${Browser}">
        browser="${Browser}"
        version=${version}
        majorversion=${major}
        minorversion=${minor}
        crawler=true
      </case>
    </case>
    <case match="; MRA ">
      <!-- 
				This comes from RU addres constantly spaming my logs 
				10-09-05 Owen Brady
				-->
      browser="MRA"
      crawler=true
      <filter>
        <case match="; MRA (?'version'(?'major'\d+)(?'minor'\.\d+))">
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>
      </filter>
    </case>
  </filter>
  <!-- End Crawler/Spider Detection-->

  <!-- Does some quick and dirty detection for Manufacturer and Model Information -->
  <!-- Edit: 06-25-06 -->
  <filter>
    <case match="SHARP-TQ-(?'deviceID'\S*)/|SHARP-TQ-(?'deviceID'\S*)">
      mobileDeviceManufacturer = "SHARP"
      mobileDeviceModel = "${deviceID}"
      isMobileDevice="true"
    </case>
    <case match="Alcatel-(?'deviceID'\S*)/|Alcatel-(?'deviceID'\S*)">
      mobileDeviceManufacturer = "Alcatel"
      mobileDeviceModel = "${deviceID}"
      isMobileDevice="true"
      <filter>
        <case match="BE4" with="${deviceID}">
          mobileDeviceModel = "301"
        </case>
        <case match="BE5" with="${deviceID}">
          mobileDeviceModel = "501, 701"
          <filter>
            <case match="2\.0">
              mobileDeviceModel = "Alcatel One Touch 501"
            </case>
          </filter>
        </case>
        <case match="BE3" with="${deviceID}">
          mobileDeviceModel = "OneTouchDB@"
        </case>
        <case match="BF3" with="${deviceID}">
          mobileDeviceModel = "Alcatel One Touch 311"
        </case>
        <case match="BF4" with="${deviceID}">
          mobileDeviceModel = "Alcatel One Touch 511"
        </case>
      </filter>
    </case>
    <case match="Compal-(?'Model'\S*)">
      mobileDeviceManufacturer = "Compal"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
    </case>
    <case match="Samsung-(?'Model'[^/]*)|SAMSUNG-(?'Model'[^/]*)|SEC-(?'Model'[^/]*)|SGH-(?'Model'[^/]*)|SCH-(?'Model'[^/]*)">
      mobileDeviceManufacturer = "Samsung"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
      crawler="false"
      <case match="A970" with="${Model}">
        mobileDeviceModel = "A970"
      </case>
    </case>
    <case match="SIE-(?'Model'\S*)">
      mobileDeviceManufacturer = "Siemens"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
    </case>
    <case match="LGE-(?'Model'[^/]*)|LGE\/(?'Model'[^/]*)">
      mobileDeviceManufacturer = "Sprint"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
    </case>  
    <case match="AUDIOVOX-(?'Model'\S*)|AUDIOVOX (?'Model'\S*)">
      mobileDeviceManufacturer = "Audiovox"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
    </case>
    <!--begin Misc Motorola Browsers-->
    <!--Edited by Owen Brady: 06-13-05-->
    <!--Edited by Owen Brady: 10-11-05-->
    <case match="MOT-(?'deviceID'\S*)/.*|MOT-(?'deviceID'\S*).*|Motorola.(?'deviceID'\S*);">
      mobileDeviceManufacturer = "Motorola"
      isMobileDevice="true"
      mobileDeviceModel = "${deviceID}"
      <filter>
        <case match=" MIB/(?'version'(?'major'\d+)\.(?'minor'\d*)\.(?'revision'\d*))">
          browser = "Motorola Internet Browser"
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          revisionversion=${revision}
        </case>
        <case match=" MIB/(?'version'(?'major'\d+)\.(?'minor'\d*))">
          browser = "Motorola Internet Browser"
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>
        <case match=" MIB/BER(?'version'(?'major'\d+)\.(?'minor'\d*))">
          browser = "Motorola Internet Browser"
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>        
      </filter>
      <filter>
        <case match="A1000" with="${deviceID}">
          mobileDeviceModel = "Motorola A1000"
        </case>
        <case match="MOT-D5" with="${deviceID}">
          mobileDeviceModel = "Motorola Talkabout 191/192/193"
        </case>
        <case match="MOT-F0" with="${deviceID}">
          mobileDeviceModel = "Motorola v50"
        </case>
        <case match="MOT-32" with="${deviceID}">
          mobileDeviceModel = "i85s, i50sx"
        </case>
        <case match="MOT-28" with="${deviceID}">
          mobileDeviceModel = "i700+, i1000+"
        </case>
        <case match="MO01" with="${deviceID}">
          mobileDeviceModel = "i500+, i700+, i1000+"
        </case>
        <case match="MO02" with="${deviceID}">
          mobileDeviceModel = "i2000+"
        </case>
        <case match="MC01" with="${deviceID}">
          mobileDeviceModel = "StarTac ST786x, Talkabout T816x, Timeport P816x"
        </case>
        <case match="MCCC" with="${deviceID}">
          mobileDeviceModel = "Talkabout V2267"
        </case>
        <case match="MCC9" with="${deviceID}">
          mobileDeviceModel = "Talkabout V8162"
        </case>
        <case match="MOT-2001" with="${deviceID}">
          mobileDeviceModel = "Timeport 270c"
        </case>
        <case match="MOT-v200" with="${deviceID}">
          mobileDeviceModel = "Motorola v200"
        </case>
        <case match="MOT-72" with="${deviceID}">
          mobileDeviceModel = "Motorola i80s"
        </case>
        <case match="MOT-76" with="${deviceID}">
          mobileDeviceModel = "Motorola i90c"
        </case>
        <case match="MOT-D8" with="${deviceID}">
          mobileDeviceModel = "Timeport 250/P7689"
        </case>
        <case match="MOT-CF" with="${deviceID}">
          mobileDeviceModel = "Accompli 6188"
        </case>
        <case match="MOT-F6" with="${deviceID}">
          mobileDeviceModel = "Accompli 008/6288"
        </case>
        <case match="MOT-BC" with="${deviceID}">
          mobileDeviceModel = "Accompli 009"
        </case>
        <case match="MOT-DC" with="${deviceID}">
          mobileDeviceModel = "V3682, V50"
        </case>
        <case match="MOT-PAN-C" with="${deviceID}">
          mobileDeviceModel = "Timeport 270c"
        </case>
        <case match="MOT-C4" with="${deviceID}">
          mobileDeviceModel = "V2288, V2282"
        </case>
        <case match="MOT-2000" with="${deviceID}">
          mobileDeviceModel = "V60c"
        </case>
        <case match="MOT-P2K-C" with="${deviceID}">
          mobileDeviceModel = "V120c"
        </case>
        <case match="MOT-AF" with="${deviceID}">
          mobileDeviceModel = "Timeport 260/P7382i/P7389i"
        </case>
        <case match="MOT-C2" with="${deviceID}">
          mobileDeviceModel = "V100, V.Box"
        </case>
        <case match="MOT-1.2.0" with="${deviceID}">
        </case>
        <case match="MOT-A-0A" with="${deviceID}">
        </case>
        <case match="MOT-MCCB" with="${deviceID}">
        </case>
        <case match="MOT-SAP4_" with="${deviceID}">
        </case>
        <case match="MOT-61" with="${deviceID}">
        </case>
        <case match="V500" with="${deviceID}">
          mobileDeviceModel = "V500"
        </case>
        <case match="V220" with="${deviceID}">
          mobileDeviceModel = "V220"
        </case>
        <case match="TA02" with="${deviceID}">
          mobileDeviceModel = "C330"
        </case>
      </filter>
    </case>
  </filter>

  <!-- 
	Date:02-11-06
	General Detection of common Mobile Device UserAgent Strings.
	-->
  <filter>
    <case match="(?i-s:crawler)|(?i-s:spider)|(?i-s:bot)">
      <!--Do Nothing Case -->
    </case>
    <case match="(?i-s:true)" with="%{isMobileDevice}">
      <!-- Do Nothing already noted as a Mobile Device-->
    </case>
    <case match="portalmmm/">
      isMobileDevice="true"
      crawler="false"
    </case>
    <case match="MIDP-2\.0">
      isMobileDevice="true"
      crawler="false"
    </case>
    <case match="MIDP-1\.0">
      isMobileDevice="true"
      crawler="false"
    </case>
  </filter>

  <!-- Screen caps. If the device sends screen attributes then lets dig in and get the gossip -->
  <use var="HTTP_X_UP_DEVCAP_SCREENCHARS" as="x_up_devcap_screenchars" />
  <filter>
    <case match="(?'screenCharsWidth'[1-9]\d*),(?'screenCharsHeight'[1-9]\d*)" with="%{x_up_devcap_screenchars}">
      screenCharactersWidth = ${screenCharsWidth}
      screenCharactersHeight = ${screenCharsHeight}
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_SCREENPIXELS" as="x_up_devcap_screenpixels" />
  <filter>
    <case match="(?'screenPixWidth'[1-9]\d*),(?'screenPixHeight'[1-9]\d*)" with="%{x_up_devcap_screenpixels}">
      screenPixelsWidth = ${screenPixWidth}
      screenPixelsHeight = ${screenPixHeight}
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_SCREENDEPTH" as="x_up_devcap_screendepth" />
  <filter>
    <case match="(?'screenDepth'\d+)" with="%{x_up_devcap_screendepth}">

    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_MSIZE" as="x_up_devcap_msize" />
  <filter>
    <case match="(?'width'\d+),(?'height'\d+)" with="%{x_up_devcap_msize}">
      characterWidth = ${width}
      characterHeight = ${height}
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_ISCOLOR" as="x_up_devcap_iscolor" />
  <filter>
    <case match="1" with="%{x_up_devcap_iscolor}">
      isColor = "true"
    </case>
    <case match="0" with="%{x_up_devcap_iscolor}">
      isColor = "false"
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_NUMSOFTKEYS" as="x_up_devcap_numsoftkeys" />
  <filter>
    <case match="(?'softkeys'\d+)" with="%{x_up_devcap_numsoftkeys}">
      numberOfSoftkeys = ${softkeys}
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_SOFTKEYSIZE" as="x_up_devcap_softkeysize" />
  <filter>
    <case match="(?'softkeySize'\d+)" with="%{x_up_devcap_softkeysize}">
      maximumSoftkeyLabelLength = ${softkeySize}
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_MAX_PDU" as="x_up_devcap_max_pdu" />
  <filter>
    <case match="(?'maxDeckSize'\d+)" with="%{x_up_devcap_max_pdu}">
      maximumRenderedPageSize = ${maxDeckSize}
    </case>
  </filter>

  <!-- Mobile Browser Gateway Detection Code-->
  <use var="HTTP_VIA" as="via" />
  <filter>
    <case match="Nokia" with="%{via}">
      <filter>
        <case with="%{via}" match="(?'nokiaVersion'Nokia\D*(?'gatewayMajorVersion'\d+)(?'gatewayMinorVersion'\.\d+)[^,]*)">
          gatewayVersion = ${nokiaVersion}
          gatewayMajorVersion = ${gatewayMajorVersion}
          gatewayMinorVersion = ${gatewayMinorVersion}
        </case>
      </filter>
    </case>
  </filter>

  <filter>
    <case match="UP\.Link/(?'gatewayVersion'\S*)">
      <filter>
        <case match="Go\.Web">
          <!-- Ignore UP.Link in Go.Web user-agent -->
        </case>
        <case with="${gatewayVersion}" match="(?'gatewayMajorVersion'\d*)(?'gatewayMinorVersion'\.\d*)(?'gatewayRevisionVersion'\.\d*).*">
          gatewayVersion = UP.Link/${gatewayVersion}
          gatewayMajorVersion = ${gatewayMajorVersion}
          gatewayMinorVersion = ${gatewayMinorVersion}
          gatewayRevisionVersion= ${gatewayRevisionVersion}
        </case>
        <case with="${gatewayVersion}" match="(?'gatewayMajorVersion'\d*)(?'gatewayMinorVersion'\.\d*).*">
          gatewayVersion = UP.Link/${gatewayVersion}
          gatewayMajorVersion = ${gatewayMajorVersion}
          gatewayMinorVersion = ${gatewayMinorVersion}
        </case>
      </filter>
    </case>
  </filter>

  <!-- Catch old Mozilla Browser information-->
  <filter>
    <case match="Mozilla/(?'major'\d+)">
      <filter>
        <case match="[^0-3]" with="${major}">
          supportsCss = "true"
          supportsImageSubmit = "true"
          supportsBold = "true"
          supportsItalic = "true"
          supportsFontSize = "true"
          supportsFontName = "true"
          supportsFontColor = "true"
          supportsBodyColor = "true"
          supportsDivAlign = "true"
          supportsDivNoWrap = "true"
        </case>
      </filter>
    </case>
  </filter>
  <filter>
    <!-- Pocket IE -->
    <!-- Moved before IE Section-->
    <!-- Left the Stub so things do not fall though the cracks -->
    <case match="Windows CE">
      <filter>
        <case match="^Mozilla/\S* \(compatible; MSIE (?'majorVersion'\d*)(?'minorVersion'\.\d*);\D* Windows CE(;(?'deviceID' \D\w*))?(; (?'screenWidth'\d+)x(?'screenHeight'\d+))?">
        </case>
      </filter>
    </case>
    <!-- Microsoft Mobile Explorer -->
    <case match=".*MMEF.*">
      inputType = "telephoneKeypad"
      canInitiateVoiceCall = "true"
      browser = "Microsoft Mobile Explorer"
      type = "Microsoft Mobile Explorer"
      cookies = "true"
      isColor = "false"
      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"
      mobileDeviceManufacturer = "Microsoft"
      mobileDeviceModel = "Simulator"
      numberOfSoftkeys = "2"
      defaultScreenPixelsWidth = "120"
      defaultScreenPixelsHeight = "160"
      screenBitDepth = "1"
      defaultCharacterWidth = "5"
      defaultCharacterHeight = "15"
      canRenderSetvarZeroWithMultiSelectionList = "false"
      maximumRenderedPageSize = "4000"
      isMobileDevice="true"

      <filter>
        <case match="MobileExplorer/(?'majorVersion'\d*)(?'minorVersion'\.\d*) \((?'httpRequest'Mozilla/1.22; compatible; )*MMEF\d+; (?'manufacturer'[^;]*); (?'model'[^;\)]*)">
          version = ${majorVersion}${minorVersion}
          majorVersion = ${majorVersion}
          minorVersion = ${minorVersion}
          mobileDeviceManufacturer = ${manufacturer}
          mobileDeviceModel = ${model}

          <!-- HTML-oriented capabilities of the HTML MME browsers -->
          <filter match=".+" with="${httpRequest}">
            preferredRenderingType = "html32"
            preferredRenderingMime = "text/html"
            preferredImageMime = "image/gif"
            supportsImageSubmit = "true"
            supportsBold = "true"
            supportsItalic = "true"
            supportsFontSize = "true"
            supportsFontName = "true"
            supportsFontColor = "true"
            supportsBodyColor = "true"
            supportsDivAlign = "true"
            supportsDivNoWrap = "false"
          </filter>
        </case>
        <case match="Mozilla/.*\(compatible; MMEF(?'versionInfo'\d\d); Cell[pP]hone(([;,] (?'deviceID'[^;]*))(;(?'buildInfo'.*))*)*\)">

          canCombineFormsInDeck = "false"
          canRenderPostBackCards = "false"

          <filter match="(?'majorVersion'\d)(?'minorVersion'\d)" with="${versionInfo}">
            version = ${majorVersion}.${minorVersion}
            majorVersion = ${majorVersion}
            minorVersion = .${minorVersion}
          </filter>
          <filter>
            <case match="Benefon Q" with="${deviceID}">
              mobileDeviceManufacturer = "Benefon"
              mobileDeviceModel = "Q"
              screenPixelsWidth = "100"
              screenPixelsHeight = "48"
              screenCharactersWidth = "20"
              screenCharactersHeight = "4"
              screenBitDepth = "1"
            </case>
            <case match="Sony CMD-Z5" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "CMD-Z5"
              screenPixelsWidth = "96"
              screenPixelsHeight = "60"
              screenCharactersWidth = "20"
              screenCharactersHeight = "4"
              screenBitDepth = "2"
              requiresOutputOptimization = "true"
            </case>
            <case match="Sony CMD-J5" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "CMD-J5"
              screenPixelsWidth = "96"
              screenPixelsHeight = "65"
              screenCharactersWidth = "20"
              screenCharactersHeight = "4"
              screenBitDepth = "2"
              requiresOutputOptimization = "true"
            </case>
            <!-- Simulator skins -->
            <case match="GenericSmall" with="${deviceID}">
              mobileDeviceManufacturer = "Microsoft"
              mobileDeviceModel = "Generic Small Skin"
              screenPixelsWidth = "100"
              screenPixelsHeight = "60"
              screenBitDepth = "1"
            </case>
            <case match="GenericLarge" with="${deviceID}">
              mobileDeviceManufacturer = "Microsoft"
              mobileDeviceModel = "Generic Large Skin"
              screenPixelsWidth = "160"
              screenPixelsHeight = "240"
              screenBitDepth = "1"
            </case>
            <case match="GenericFlip" with="${deviceID}">
              mobileDeviceManufacturer = "Microsoft"
              mobileDeviceModel = "Generic Flip Skin"
              screenPixelsWidth = "160"
              screenPixelsHeight = "200"
              screenBitDepth = "1"
            </case>
            <case match="Generic3D" with="${deviceID}">
              mobileDeviceManufacturer = "Microsoft"
              mobileDeviceModel = "Generic 3D Skin"
              screenPixelsWidth = "128"
              screenPixelsHeight = "160"
              screenBitDepth = "1"
            </case>
          </filter>
          <filter>
            <case match="P(?'modelID'\w)\w(?'buildNumber'\d*)" with="${buildInfo}">
              version = %{version}.${buildNumber}
              <filter>
                <case match="^z" with="${modelID}">
                  mobileDeviceModel = "CMD-Z5"
                  screenPixelsWidth = "96"
                  screenPixelsHeight = "60"
                  screenCharactersWidth = "20"
                  screenCharactersHeight = "4"
                  requiresOutputOptimization = "true"
                </case>
                <case match="^j" with="${modelID}">
                  mobileDeviceModel = "CMD-J5"
                  screenPixelsWidth = "96"
                  screenPixelsHeight = "65"
                  screenCharactersWidth = "20"
                  screenCharactersHeight = "4"
                  requiresOutputOptimization = "true"
                </case>
              </filter>
            </case>
          </filter>
        </case>
      </filter>
    </case>

    <!-- AvantGo -->
    <case match="AvantGo .*">
      browser = "AvantGo"
      cachesAllResponsesWithExpires = "true"
      canSendMail = "false"
      inputType = "virtualKeyboard"
      isColor = "false"
      maximumRenderedPageSize = "2560"
      preferredImageMime = "image/jpeg"
      requiresLeadingPageBreak = "true"
      requiresUniqueHtmlCheckboxNames = "true"
      screenCharactersHeight = "13"
      screenCharactersWidth = "30"
      screenPixelsHeight = "150"
      screenPixelsWidth = "150"
      supportsBodyColor = "false"
      supportsBold = "true"
      supportsFontColor = "false"
      supportsImageSubmit = "true"
      requiredMetaTagNameValue = "HandheldFriendly"
      javascript = "false"
      isMobileDevice="true"
      mobileDeviceManufacturer = "T-Mobile"
      mobiledevicemodel = "SideKick"

      <use var="HTTP_X_AVANTGO_VERSION" as="x_avantgo_version" />
      <filter>
        <case match="(?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*)" with="%{x_avantgo_version}">
          version = ${browserMajorVersion}${browserMinorVersion}
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
        </case>
        <case match="AvantGo (?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*)">
          version = ${browserMajorVersion}${browserMinorVersion}
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
        </case>
      </filter>
    </case>

    <!-- Ericsson -->
    <case match="R380 (?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*) WAP1\.1">
      browser = "Ericsson"
      type = "Ericsson R380"
      version = ${browserMajorVersion}.${browserMinorVersion}
      majorVersion = ${browserMajorVersion}

      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"
      inputType = "virtualKeyboard"
      canInitiateVoiceCall = "true"
      mobileDeviceManufacturer = "Ericsson"
      mobileDeviceModel = "R380"
      screenPixelsWidth = "310"
      screenPixelsHeight = "100"
      screenCharactersHeight = "7"
      screenBitDepth = "1"
      isColor = "false"
      maximumRenderedPageSize = "3000"
      isMobileDevice="true"
    </case>
    <case match="(Ericsson(?'deviceID'[^/]+)/(?'deviceVer'.*))|(Ericsson(?'deviceID'[^/]+)/)">
      browser = "Ericsson"
      type = "Ericsson ${deviceID}"

      mobileDeviceManufacturer = "Ericsson"
      mobileDeviceModel = ${deviceID}

      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"
      isColor = "false"
      inputType = "telephoneKeypad"
      numberOfSoftkeys = "2"
      canInitiateVoiceCall = "true"
      screenBitDepth = "1"

      defaultScreenCharactersWidth = "20"
      defaultScreenCharactersHeight = "4"
      defaultScreenPixelsWidth = "101"
      defaultScreenPixelsHeight = "52"
      maximumRenderedPageSize = "1600"
      isMobileDevice="true"

      <filter>
        <case match="SEMC-Browser/(?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*)">
          version = ${browserMajorVersion}${browserMinorVersion}
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
        </case>
      </filter>
      <filter>
        <case match="R320" with="${deviceID}">
          screenCharactersWidth = "20"
          screenCharactersHeight = "4"
          screenPixelsWidth = "101"
          screenPixelsHeight = "52"
          maximumRenderedPageSize = "3000"
        </case>
        <case match="T20" with="${deviceID}">
          canSendMail = "false"
          maximumRenderedPageSize = "1400"
          maximumSoftkeyLabelLength = "21"
          mobileDeviceModel = "T20, T20e, T29s"
          numberOfSoftkeys = "1"
          screenCharactersHeight = "3"
          screenCharactersWidth = "16"
          screenPixelsWidth = "101"
          screenPixelsHeight = "33"
          supportsBold = "true"
          supportsFontSize = "true"
          supportsRedirectWithCookie = "false"
        </case>
        <case match="T65" with="${deviceID}">
          maximumRenderedPageSize = "3000"
          maximumSoftkeyLabelLength = "21"
          mobileDeviceModel = "Ericsson T65"
          numberOfSoftkeys = "1"
          preferredImageMime = "image/vnd.wap.wbmp"
          preferredRenderingType = "wml12"
          requiresUniqueFilePathSuffix = "true"
          screenBitDepth = "8"
          screenCharactersHeight = "4"
          screenCharactersWidth = "16"
          screenPixelsHeight = "67"
          screenPixelsWidth = "101"
          supportsBold = "true"
          supportsFontSize = "true"
          supportsRedirectWithCookie = "false"
        </case>
        <case match="R520" with="${deviceID}">
          screenCharactersWidth = "20"
          screenCharactersHeight = "4"
          screenPixelsWidth = "101"
          screenPixelsHeight = "67"
          maximumRenderedPageSize = "1600"
          screenBitDepth = "2"
        </case>
        <case match="A2628" with="${deviceID}">
          screenCharactersWidth = "20"
          screenCharactersHeight = "4"
          screenPixelsWidth = "101"
          screenPixelsHeight = "54"
          maximumRenderedPageSize = "1600"
        </case>
        <case match="T39" with="${deviceID}">
          canInitiateVoiceCall = "true"
          inputType = "telephoneKeypad"
          maximumRenderedPageSize = "3000"
          maximumSoftkeyLabelLength = "21"
          mobileDeviceManufacturer = "Ericsson"
          mobileDeviceModel = "Ericsson T39"
          preferredImageMime = "image/gif"
          preferredRenderingMime = "text/vnd.wap.wml"
          preferredRenderingType = "wml12"
          screenBitDepth = "8"
          screenCharactersHeight = "3"
          screenCharactersWidth = "16"
          screenPixelsHeight = "54"
          screenPixelsWidth = "101"
          supportsFontSize = "true"
          supportsItalic = "false"
          supportsRedirectWithCookie = "false"
        </case>
      </filter>
    </case>

    <!-- GoAmerica Browsers -->
    <case match=".*Go\.Web/(?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*).*">
      browser = "Go.Web"
      type = "Go.Web"
      version = ${browserMajorVersion}${browserMinorVersion}
      majorVersion = ${browserMajorVersion}
      minorVersion = ${browserMinorVersion}
      cookies = "true"
      screenBitDepth = "2"
      javaapplets = "false"
      javascript = "false"
      vbscript = "false"
      requiredMetaTagNameValue = "HandheldFriendly"
      rendersBreaksAfterHtmlLists = "false"
      requiresUniqueHtmlCheckboxNames = "true"
      requiresAttributeColonSubstitution = "true"
      requiresNoBreakInFormatting = "true"
      supportsImageSubmit = "true"
      supportsSelectMultiple = "false"
      supportsBold = "true"
      supportsFontColor = "false"
      supportsBodyColor = "false"
      supportsDivAlign = "false"
      maximumRenderedPageSize = "6000"
      canSendMail = "false"
      isMobileDevice="true"

      <filter>
        <case match="WinCE">
          mobileDeviceModel = "Pocket PC"
          platform = "WinCE"
          inputType = "virtualKeyboard"
          defaultScreenPixelsWidth = "240"
          defaultScreenPixelsHeight = "320"
          defaultScreenCharactersWidth = "30"
          defaultScreenCharactersHeight = "14"
          isColor = "true"
          screenBitDepth = "16"
          cachesAllResponsesWithExpires = "true"

          supportsFontSize = "true"
          supportsFontName = "true"
          supportsFontColor = "true"

          supportsDivAlign = "true"
          supportsItalic = "true"
          supportsSelectMultiple = "true"
        </case>
        <case match=".*Palm.*">
          inputType = "virtualKeyboard"
          mobileDeviceManufacturer = "PalmOS-licensee"
          screenPixelsWidth = "160"
          screenPixelsHeight = "160"
          screenCharactersWidth = "36"
          screenCharactersHeight = "12"
          isColor = "false"
          tables = "false"
          supportsUncheck = "false"
          cachesAllResponsesWithExpires = "true"
        </case>
        <case match=".*RIM.*">
          inputType = "keyboard"
          mobileDeviceManufacturer = "RIM"
          isColor = "false"
          screenBitDepth = "1"
          <filter>
            <case match=".*RIM950.*">
              mobileDeviceModel = "950"
              screenCharactersWidth = "25"
              screenCharactersHeight = "5"
              screenPixelsWidth = "132"
              screenPixelsHeight = "64"
              cachesAllResponsesWithExpires = "true"
            </case>
            <case match=".*RIM850.*">
              mobileDeviceModel = "850"
              screenCharactersWidth = "25"
              screenCharactersHeight = "5"
              screenPixelsWidth = "132"
              screenPixelsHeight = "64"
            </case>
            <case match=".*RIM957.*">
              mobileDeviceModel = "957"
              screenCharactersWidth = "32"
              screenCharactersHeight = "15"
              screenPixelsWidth = "160"
              screenPixelsHeight = "160"
            </case>
            <case match=".*RIM857.*">
              mobileDeviceModel = "857"
              screenCharactersWidth = "32"
              screenCharactersHeight = "15"
              screenPixelsWidth = "160"
              screenPixelsHeight = "160"

              <filter>
                <!-- 6.2 or newer -->
                <case match="(6\.[2-9]\d*)|([7-9]\.\d+)" with="${browserMajorVersion}${browserMinorVersion}">
                  canSendMail = "true"
                  hidesRightAlignedMultiselectScrollbars = "true"
                  requiresAttributeColonSubstitution = "false"
                  requiresLeadingPageBreak = "true"
                  requiresUniqueFilePathSuffix = "true"
                  screenCharactersHeight = "16"
                  screenCharactersWidth = "31"
                  supportsUncheck = "false"
                </case>
              </filter>
            </case>
          </filter>
        </case>
      </filter>
    </case>

    <!-- Nokia -->
    <case match="Nokia.*">
      browser = "Nokia"
      version="0.0"
      majorversion="0"
      minorversion=".0"
      mobileDeviceManufacturer = "Nokia"
      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"
      defaultScreenCharactersWidth = "20"
      defaultScreenCharactersHeight = "4"
      defaultScreenPixelsWidth="90"
      defaultScreenPixelsHeight="40"
      screenBitDepth = "1"
      isColor = "false"
      inputType = "telephoneKeypad"
      numberOfSoftkeys = "2"
      hasBackButton = "false"
      rendersWmlDoAcceptsInline = "false"
      rendersBreaksAfterWmlInput = "true"
      requiresUniqueFilePathSuffix = "true"
      maximumRenderedPageSize = "1397"
      canInitiateVoiceCall = "true"
      requiresPhoneNumbersAsPlainText = "true"
      rendersBreaksAfterWmlAnchor = "true"
      canRenderOneventAndPrevElementsTogether = "false"
      canRenderPostBackCards = "false"
      canSendMail = "false"
      isMobileDevice="true"
      <filter>
        <case match="Opera[ /](?'version'(?'major'\d+)(?'minor'\.\d+))">
          browser=Opera
          version=${version}
          majorversion=${major}
          minorversion=${minor}
        </case>
      </filter>
      <filter>
        <case match="Nokia\-WAP\-Toolkit\/(?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*)">
          <!-- Nokia Blueprint phone -->
          type = "Nokia WAP Toolkit"
          version = ${browserMajorVersion}.${browserMinorVersion}
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
          preferredRenderingType = "wml12"
          cookies = "true"
          mobileDeviceModel = "Blueprint Simulator"
          maximumRenderedPageSize = "65536"
          canInitiateVoiceCall = "false"
          rendersBreaksAfterWmlAnchor = "false"
        </case>
        <case match="Nokia\-MIT\-Browser\/(?'browserMajorVersion'\w*)(?'browserMinorVersion'\.\w*)">
          <!-- Nokia WAP Simulator -->
          type = "Nokia Mobile Internet Toolkit"
          mobileDeviceModel = "WAP Simulator"
          version = ${browserMajorVersion}.${browserMinorVersion}
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
          canRenderOnEventAndPrevElementsTogether = "true"
          canRenderPostBackCards = "true"
          cookies = "true"
          hasBackButton = "true"
          inputType = "virtualKeyboard"
          maximumRenderedPageSize = "3584"
          maximumSoftkeyLabelLength = "21"
          rendersBreaksAfterWmlAnchor = "false"
          requiresPhoneNumbersAsPlainText = "false"
          screenBitDepth = "2"
          screenCharactersHeight = "25"
          screenCharactersWidth = "32"
          screenPixelsHeight = "512"
          screenPixelsWidth = "384"
          supportsBold = "true"
          supportsFontSize = "true"
          supportsItalic = "true"
          supportsRedirectWithCookie = "false"
        </case>
        <!-- added additional check -->
        <case match="Nokia(?'Model'\d{4}i)|Nokia(?'Model'\d{4}I)|Nokia(?'Model'\d{4})|Nokia.(?'Model'\d{4})">
          type = "Nokia ${Model}"
          mobileDeviceModel = "${Model}"
          <filter match="/2\.0 \((?'versionString'\d*\.\d*\.\d*|\d*\.\d*)|\/1\.0 \((?'versionString'\d*\.\d*\.\d*|\d*\.\d*)">
            version = ${versionString}
            <case with="${versionString}" match="(?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*).*">
              majorVersion = ${browserMajorVersion}
              minorVersion = ${browserMinorVersion}
            </case>
          </filter>
          <filter>
            <case match="Googlebot-Mobile/(?'version'(?'major'\d+)(?'minor'\.\d+))">
              browser=Googlebot-Mobile
              version=${version}
              majorversion=${major}
              minorversion=${minor}
              crawler=true
            </case>
            <case match="Nokia7110/1.0">
              type = "Nokia 7110"
              mobileDeviceModel = "7110"
              optimumPageWeight = "800"
              screenCharactersWidth="22"
              screenCharactersHeight="4"
              screenPixelsWidth="96"
              screenPixelsHeight="44"
            </case>
            <case match="Nokia6210/1.0">
              type = "Nokia 6210"
              mobileDeviceModel = "6210"
              screenCharactersWidth="22"
              screenCharactersHeight="4"
              screenPixelsWidth="96"
              screenPixelsHeight="41"
            </case>
            <case match="Nokia6250/1.0">
              type = "Nokia 6250"
              mobileDeviceModel = "6250"
              screenCharactersWidth="22"
              screenCharactersHeight="4"
              screenPixelsWidth="96"
              screenPixelsHeight="41"
            </case>
            <case match="Nokia6310/1.0">
              type = "Nokia 6310"
              mobileDeviceModel = "6310"
              canRenderOneventAndPrevElementsTogether = "true"
              canRenderPostBackCards = "true"
              cookies = "true"
              maximumRenderedPageSize = "2800"
              maximumSoftkeyLabelLength = "21"
              preferredRenderingType = "wml12"
              rendersBreaksAfterWmlAnchor = "false"
              rendersBreaksAfterWmlInput = "false"
              requiresPhoneNumbersAsPlainText = "false"
              screenBitDepth = "8"
              screenCharactersWidth = "18"
              screenPixelsHeight = "45"
              screenPixelsWidth = "92"
              screenCharactersHeight = "4"
            </case>
            <case match="Nokia8310/1.0">
              type = "Nokia 8310"
              mobileDeviceModel = "8310"
              canRenderOneventAndPrevElementsTogether = "true"
              canRenderPostBackCards = "true"
              maximumRenderedPageSize = "2700"
              maximumSoftkeyLabelLength = "21"
              preferredImageMime = "image/gif"
              preferredRenderingType = "wml12"
              rendersBreaksAfterWmlAnchor = "false"
              rendersBreaksAfterWmlInput = "false"
              requiresPhoneNumbersAsPlainText = "false"
              screenBitDepth = "8"
              screenCharactersHeight = "3"
              screenCharactersWidth = "16"
              screenPixelsHeight = "39"
              screenPixelsWidth = "78"
            </case>
            <case match="Nokia9110/1.0">
              type = "Nokia 9110"
              mobileDeviceModel = "9110i Communicator"
              screenPixelsWidth = "400"
              screenPixelsHeight = "180"
              screenCharactersWidth = "60"
              screenCharactersHeight = "8"
              screenBitDepth = "4"
              cookies = "true"
              inputType = "keyboard"
              maximumRenderedPageSize = "8192"
              rendersBreaksAfterWmlAnchor = "false"
            </case>
            <case match="Nokia-9110">
              canInitiateVoiceCall = "false"
              canSendMail = "true"
              inputType = "keyboard"
              maximumRenderedPageSize = "150000"
              mobileDeviceModel = "Nokia 9110"
              numberOfSoftkeys = "0"
              preferredImageMime = "image/jpeg"
              preferredRenderingMime = "text/html"
              preferredRenderingType = "html32"
              rendersBreaksAfterHtmlLists = "false"
              requiresAttributeColonSubstitution = "true"
              screenBitDepth = "8"
              screenCharactersHeight = "11"
              screenCharactersWidth = "57"
              screenPixelsHeight = "200"
              screenPixelsWidth = "540"
              supportsAccesskeyAttribute = "true"
              supportsBodyColor = "false"
              supportsBold = "true"
              supportsFontColor = "false"
              supportsFontSize = "true"
              supportsImageSubmit = "true"
              supportsInputStyle = "false"
              supportsItalic = "true"
              supportsSelectMultiple = "false"
              tables = "true"
            </case>
            <case match="Nokia3330/1.0">
              type = "Nokia 3330"
              mobileDeviceModel = "3330"
              hasBackButton = "true"
              screenPixelsWidth = "78"
              screenPixelsHeight = "39"
              screenCharactersWidth = "18"
              screenCharactersHeight = "3"
              maximumRenderedPageSize = "2800"
            </case>
            <case match="Nokia9210/1.0.*">
              type = "Nokia 9210"
              mobileDeviceModel = "9210 Communicator"
              requiresSpecialViewStateEncoding = "true"
              screenPixelsWidth = "490"
              screenPixelsHeight = "165"
              screenCharactersWidth = "75"
              screenCharactersHeight = "10"
              screenBitDepth = "12"
              isColor = "true"
              inputType = "keyboard"
              cookies = "true"
              maximumRenderedPageSize = "8192"
              rendersBreaksAfterWmlAnchor = "false"
              rendersBreaksAfterWmlInput = "false"
              supportsCacheControlMetaTag = "false"
              requiresNoSoftkeyLabels = "true"
            </case>
          </filter>
        </case>
      </filter>
    </case>
    <case match="EPOC32-WTL">
      browser = "EPOC"
      cachesAllResponsesWithExpires = "true"
      canSendMail = "false"
      cookies = "true"
      hidesRightAlignedMultiselectScrollbars = "true"
      inputType = "keyboard"
      isColor = "true"
      maximumRenderedPageSize = "150000"
      mobileDeviceManufacturer = "Nokia"
      mobileDeviceModel = "Nokia 9210"
      preferredImageMime = "image/jpeg"
      requiresAttributeColonSubstitution = "true"
      rendersBreaksAfterHtmlLists = "false"
      requiresUniqueFilePathSuffix = "true"
      screenBitDepth = "24"
      screenCharactersHeight = "10"
      screenCharactersWidth = "54"
      screenPixelsHeight = "170"
      screenPixelsWidth = "478"
      supportsBold = "true"
      supportsFontSize = "true"
      supportsImageSubmit = "true"
      supportsInputStyle = "false"
      supportsItalic = "true"
      supportsSelectMultiple = "false"
      tables = "true"
      isMobileDevice="true"
    </case>

    <!-- NTT DoCoMo -->
    <case match="DoCoMo/.*">
      javaapplets = "false"
      javascript = "false"
      vbscript = "false"
      tables = "false"

      browser = "i-mode"
      type = "i-mode"
      preferredRenderingType = "chtml10"
      inputType = "telephoneKeypad"
      canInitiateVoiceCall = "true"
      requiresHtmlAdaptiveErrorReporting = "true"
      cookies = "false"
      requiresOutputOptimization = "true"
      supportsAccesskeyAttribute = "true"
      supportsInputIStyle = "true"
      supportsIModeSymbols = "true"

      optimumPageWeight="700"

      defaultScreenCharactersWidth = "16"
      defaultScreenCharactersHeight = "6"
      defaultScreenPixelsWidth = "90"
      defaultScreenPixelsHeight = "70"
      screenBitDepth = "1"
      isColor = "false"
      maximumRenderedPageSize = "5120"
      isMobileDevice="true"
      supportsCharacterEntityEncoding = "false"

      <filter>
        <case match="(DoCoMo/(?'httpVersion'[^/]*?)/(?'deviceID'[^/]*)(/c(?'cacheSize'\d+))*)|(DoCoMo/(?'httpVersion'[^ ]*?) (?'deviceID'[^\x28]*)(\x28c(?'cacheSize'\d+))*)">
          <filter>
            <case match="^D\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Mitsubishi"
            </case>
            <case match="^ER\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Ericsson"
            </case>
            <case match="^F\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Fujitsu"
            </case>
            <case match="^N\d+" with="${deviceID}">
              mobileDeviceManufacturer = "NEC"
            </case>
            <case match="^NM\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Nokia"
            </case>
            <case match="^P\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
            </case>
            <case match="^SH\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Sharp"
            </case>
            <case match="^SO\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
            </case>
            <case match="^R\d+" with="${deviceID}">
              mobileDeviceManufacturer = "JRC"
            </case>
            <case match="^KO\d+" with="${deviceID}">
              mobileDeviceManufacturer = "Kokusai"
            </case>
          </filter>
          <filter>
            mobileDeviceModel = ${deviceID}

            <case match="D501i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "72"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="F501i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "112"
              screenPixelsHeight = "84"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="N501i" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "118"
              screenPixelsHeight = "128"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="P501i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "96"
              screenPixelsHeight = "120"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="D502i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "90"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="F502i$" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "91"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N502i$" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "118"
              screenPixelsHeight = "128"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="P502i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "96"
              screenPixelsHeight = "117"
              screenBitDepth = "2"
              isColor = "false"
              canRenderEmptySelects = "false"
            </case>
            <case match="NM502i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "111"
              screenPixelsHeight = "106"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="SO502i$" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "120"
              screenPixelsHeight = "120"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="F502it" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "91"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N502it" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "118"
              screenPixelsHeight = "128"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="SO502iWM" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "120"
              screenPixelsHeight = "113"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N821i" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "119"
              screenPixelsHeight = "128"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="P821i" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              maximumRenderedPageSize = "5000"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenCharactersHeight = "10"
              screenCharactersWidth = "20"
              screenPixelsHeight = "128"
              screenPixelsWidth = "118"
              screenBitDepth = "2"
              supportsBodyColor = "false"
              supportsFontColor = "false"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="D209i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "90"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="ER209i" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "6"
              screenPixelsWidth = "120"
              screenPixelsHeight = "72"
              screenBitDepth = "1"
              isColor = "false"
            </case>
            <case match="F209i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "91"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="KO209i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "96"
              screenPixelsHeight = "96"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N209i" with="${deviceID}">
              screenCharactersWidth = "18"
              screenCharactersHeight = "6"
              screenPixelsWidth = "108"
              screenPixelsHeight = "82"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="P209i$" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "87"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="P209iS" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "87"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="R209i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "72"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="R691i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "72"
              screenBitDepth = "2"
              isColor = "false"
            </case>
            <case match="F503i$" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "120"
              screenPixelsHeight = "130"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="F503iS" with="${deviceID}">
              screenCharactersWidth = "24"
              screenCharactersHeight = "12"
              screenPixelsWidth = "120"
              screenPixelsHeight = "130"
              screenBitDepth = "12"
              isColor = "true"
            </case>
            <case match="D503i$" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "132"
              screenPixelsHeight = "126"
              screenBitDepth = "12"
              isColor = "true"
            </case>
            <case match="D503iS$" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "7"
              screenCharactersWidth = "16"
              screenPixelsHeight = "126"
              screenPixelsWidth = "132"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="D210i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "96"
              screenPixelsHeight = "91"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="F210i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "96"
              screenPixelsHeight = "113"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N210i" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "8"
              screenPixelsWidth = "118"
              screenPixelsHeight = "113"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="N2001" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "10"
              screenCharactersWidth = "20"
              screenPixelsHeight = "128"
              screenPixelsWidth = "118"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="D211i" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "7"
              screenCharactersWidth = "16"
              screenPixelsHeight = "91"
              screenPixelsWidth = "100"
            </case>
            <case match="N211i" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "10"
              screenCharactersWidth = "20"
              screenPixelsHeight = "128"
              screenPixelsWidth = "118"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="P210i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "91"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="KO210i" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "8"
              screenPixelsWidth = "96"
              screenPixelsHeight = "96"
              screenBitDepth = "8"
              isColor = "true"
            </case>
            <case match="P2101V" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "9"
              screenPixelsWidth = "163"
              screenPixelsHeight = "182"
              screenBitDepth = "18"
              isColor = "true"
            </case>
            <case match="F211i$" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "7"
              screenCharactersWidth = "16"
              screenPixelsHeight = "113"
              screenPixelsWidth = "96"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="F671i$" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "8"
              screenCharactersHeight = "9"
              screenCharactersWidth = "20"
              screenPixelsHeight = "126"
              screenPixelsWidth = "120"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="N503iS" with="${deviceID}">
              isColor = "true"
              hidesRightAlignedMultiselectScrollbars = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenCharactersWidth = "20"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
              screenBitDepth = "12"
              screenCharactersHeight = "10"
              screenPixelsHeight = "128"
              screenPixelsWidth = "118"
            </case>
            <case match="N503i$" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "118"
              screenPixelsHeight = "128"
              screenBitDepth = "12"
              isColor = "true"
              hidesRightAlignedMultiselectScrollbars = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="SO503i$" with="${deviceID}">
              screenCharactersWidth = "16"
              screenCharactersHeight = "7"
              screenPixelsWidth = "120"
              screenPixelsHeight = "113"
              screenBitDepth = "16"
              isColor = "true"
            </case>
            <case match="P503iS" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "8"
              screenPixelsWidth = "120"
              screenPixelsHeight = "130"
              screenBitDepth = "8"
              isColor = "true"
              canRenderEmptySelects = "false"
              hidesRightAlignedMultiselectScrollbars = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              supportsFontSize = "true"
              supportsImageSubmit = "true"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="P503i$" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "8"
              screenPixelsWidth = "120"
              screenPixelsHeight = "130"
              screenBitDepth = "8"
              isColor = "true"
              canRenderEmptySelects = "false"
              hidesRightAlignedMultiselectScrollbars = "true"
              rendersBreaksAfterHtmlLists = "false"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              supportsFontSize = "true"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="N503i$" with="${deviceID}">
              screenCharactersWidth = "20"
              screenCharactersHeight = "10"
              screenPixelsWidth = "118"
              screenPixelsHeight = "128"
              screenBitDepth = "12"
              isColor = "true"
              hidesRightAlignedMultiselectScrollbars = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              requiresLeadingPageBreak = "true"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="SO210i$" with="${deviceID}">
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenCharactersWidth = "17"
              screenCharactersHeight = "7"
              screenPixelsWidth = "120"
              screenPixelsHeight = "113"
              screenBitDepth = "8"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
            <case match="SO503iS" with="${deviceID}">
              supportsRedirectWithCookie = "false"
              hidesRightAlignedMultiselectScrollbars = "true"
              isColor = "true"
              requiresAttributeColonSubstitution = "true"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenBitDepth = "16"
              screenCharactersHeight = "7"
              screenCharactersWidth = "17"
              screenPixelsHeight = "113"
              screenPixelsWidth = "120"
              supportsInputStyle = "true"
            </case>
            <case match="SH821i" with="${deviceID}">
              canRenderEmptySelects = "false"
              requiresHtmlAdaptiveErrorReporting = "false"
              screenCharactersWidth = "16"
              screenCharactersHeight = "6"
              screenPixelsWidth = "96"
              screenPixelsHeight = "78"
              screenBitDepth = "8"
              isColor = "true"
              supportsInputStyle = "true"
              supportsRedirectWithCookie = "false"
            </case>
          </filter>
          <filter match="\d+" with="${cacheSize}">
            maximumRenderedPageSize = ${cacheSize}000
          </filter>
        </case>
      </filter>
      <filter>
        <case match="Googlebot-Mobile/(?'version'(?'major'\d+)(?'minor'\.\d+))">
          browser=Googlebot-Mobile
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          crawler=true
        </case>
      </filter>
    </case>

    <!-- Xiino -->
    <case match="Xiino/.*">
      browser = "Xiino"
      canRenderEmptySelects = "false"
      canSendMail = "false"
      hidesRightAlignedMultiselectScrollbars = "true"
      inputType = "virtualKeyboard"
      isColor = "true"
      maximumRenderedPageSize = "65000"
      requiresAttributeColonSubstitution = "true"
      screenBitDepth = "8"
      screenCharactersHeight = "12"
      screenCharactersWidth = "30"
      screenPixelsHeight = "320"
      screenPixelsWidth = "320"
      supportsBold = "true"
      supportsFontSize = "true"
      supportsInputStyle = "false"
      isMobileDevice="true"
      supportsCharacterEntityEncoding = "false"
    </case>

    <!-- Casio -->
    <case match="CASSIOPEIA BE">
      browser = "CASSIOPEIA"
      cachesAllResponsesWithExpires = "true"
      hidesRightAlignedMultiselectScrollbars = "true"
      inputType = "virtualKeyboard"
      isColor = "true"
      maximumRenderedPageSize = "65000"
      mobileDeviceManufacturer = "Casio"
      mobileDeviceModel = "Casio BE-500"
      preferredImageMime = "image/gif"
      requiresContentTypeMetaTag = "true"
      requiresLeadingPageBreak = "true"
      requiresNoBreakInFormatting = "true"
      requiresUniqueFilePathSuffix = "true"
      screenBitDepth = "24"
      screenCharactersHeight = "50"
      screenCharactersWidth = "38"
      screenPixelsHeight = "320"
      screenPixelsWidth = "240"
      supportsCss = "false"
      supportsImageSubmit = "false"
      supportsInputStyle = "false"
      supportsItalic = "false"
      isMobileDevice="true"
      supportsCharacterEntityEncoding = "false"
    </case>

    <!-- Panasonic -->
    <case match="Panasonic-(?'deviceModel'.*)">
      browser="Panasonic"
      canInitiateVoiceCall="true"
      canSendMail="false"
      cookies="false"
      isMobileDevice="true"
      maximumSoftkeyLabelLength="16"
      mobileDeviceManufacturer="Panasonic"
      mobileDeviceModel="${deviceModel}"
      numberOfSoftkeys="2"
      preferredImageMime="image/vnd.wap.wbmp"
      preferredRenderingMime="text/vnd.wap.wml"
      preferredRenderingType="wml12"
      rendersWmlDoAcceptsInline="false"
      requiresAdaptiveErrorReporting="true"
      requiresUniqueFilePathSuffix="true"
      screenCharactersHeight="10"
      screenCharactersWidth="16"
      screenPixelsHeight="130"
      screenPixelsWidth="100"
      supportsCacheControlMetaTag="false"
      tables="false"
      type="Panasonic"
      <!--Backported from MS nBrowser files -->
      <filter>
        <case match="GAD95" with="${deviceModel}">
        </case>
        <case match="GAD87" with="${deviceModel}">
          breaksOnInlineElements="false"
          browser="Panasonic"
          canSendMail="true"
          cookies="true"
          isColor="true"
          maximumRenderedPageSize="12000"
          preferredImageMime="image/jpeg"
          preferredRenderingMime="application/xhtml+xml"
          preferredRenderingType="xhtml-basic"
          requiresAbsolutePostbackUrl="false"
          requiresCommentInStyleElement="false"
          requiresHiddenFieldValues="false"
          requiresHtmlAdaptiveErrorReporting="true"
          requiresOnEnterForwardForCheckboxLists="false"
          requiresXhtmlCssSuppression="false"
          screenBitDepth="24"
          screenPixelsHeight="176"
          screenPixelsWidth="132"
          supportsAccessKeyAttribute="true"
          supportsBodyClassAttribute="true"
          supportsBold="true"
          supportsCss="true"
          supportsItalic="true"
          supportsNoWrapStyle="false"
          supportsSelectFollowingTable="true"
          supportsStyleElement="true"
          supportsTitleElement="true"
          supportsUrlAttributeEncoding="true"
          tables="false"
          type="Panasonic"
          <case match="GAD87\/A39" with="${deviceModel}">
            mobileDeviceModel="GD87"
            screenBitDepth="16"
            screenCharactersHeight="7"
            screenCharactersWidth="14"
            tables="false"
          </case>
          <case match="GAD87\/A38" with="${deviceModel}">
            maximumRenderedPageSize="12155"
            mobileDeviceModel="GU87"
            preferredRenderingType="xhtml-mp"
            screenCharactersHeight="10"
            screenCharactersWidth="20"
          </case>
        </case>
      </filter>
      <filter>
        <case match="\/(A3[89]|A[4-9]\d|A\d{3,})" with="${deviceModel}">
          ExchangeOmaSupported="true"
        </case>
      </filter>
    </case>

    <!-- J-Phone -->
    <case match="J-PHONE/.*">
      browser = "J-Phone"
      type = "J-Phone"
      javaapplets = "false"
      javascript = "false"
      vbscript = "false"
      tables = "true"

      preferredRenderingType = "html32"
      preferredImageMime = "image/png"
      canInitiateVoiceCall = "true"
      supportsAccesskeyAttribute = "true"
      supportsCharacterEntityEncoding = "false"

      defaultScreenCharactersWidth = "16"
      defaultScreenCharactersHeight = "7"
      defaultScreenPixelsWidth = "96"
      defaultScreenPixelsHeight = "84"
      defaultCharacterWidth = "12"
      defaultCharacterHeight = "12"
      screenBitDepth = "2"
      isColor = "false"

      supportsBold = "false"
      supportsItalic = "false"
      supportsFontSize = "false"
      supportsFontName = "false"

      supportsFontColor = "true"
      supportsBodyColor = "true"
      supportsDivAlign = "true"
      supportsDivNoWrap = "true"

      requiresHtmlAdaptiveErrorReporting = "true"
      requiresOutputOptimization = "true"
      supportsInputMode = "true"
      supportsJPhoneSymbols = "true"
      supportsJPhoneMultiMediaAttributes = "true"
      supportsQueryStringInFormAction = "false"
      maximumRenderedPageSize = "6000"

      optimumPageWeight="700"

      requiresContentTypeMetaTag = "true"
      isMobileDevice="true"

      <filter>
        <case match="J-PHONE/(?'majorVersion'\d)(?'minorVersion'\.\d)/(?'deviceModel'.*)">
          majorVersion = ${majorVersion}
          minorVersion = ${minorVersion}
          version = ${majorVersion}${minorVersion}

          mobileDeviceModel = ${deviceModel}

          <filter>
            <case match="^J-D\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Mitsubishi"
            </case>
            <case match="J-DN\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Denso"
            </case>
            <case match="J-K\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Kenwood"
            </case>
            <case match="J-N\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "NEC"
            </case>
            <case match="J-P\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Panasonic"
            </case>
            <case match="J-PE\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Pioneer"
            </case>
            <case match="J-SA\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Sanyo"
            </case>
            <case match="J-SH\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Sharp"
              <case match="J-SH07$" with="${deviceModel}">
                canRenderEmptySelects = "false"
                maximumRenderedPageSize = "12000"
                requiresHtmlAdaptiveErrorReporting = "false"
                screenCharactersHeight = "10"
                screenCharactersWidth = "20"
                supportsDivNoWrap = "false"
                supportsInputStyle = "false"
                supportsRedirectWithCookie = "false"
                requiresLeadingPageBreak = "true"
              </case>
            </case>
            <case match="J-T\d+" with="${deviceModel}">
              mobileDeviceManufacturer = "Toshiba"
              <filter>
                <case match="J-T06_a" with="${deviceModel}">
                  maximumRenderedPageSize = "12000"
                  mobileDeviceModel = "J-T06"
                  requiresHtmlAdaptiveErrorReporting = "false"
                  screenCharactersHeight = "8"
                  screenCharactersWidth = "20"
                  supportsDivNoWrap = "false"
                  supportsInputStyle = "false"
                  supportsRedirectWithCookie = "false"
                </case>
              </filter>
            </case>
          </filter>
        </case>
      </filter>
    </case>

    <!-- Palm MyPalm Browser on Palm VII -->
    <case match="Mozilla/2\.0 \(compatible; Elaine/(?'gatewayMajorVersion'\w*)(?'gatewayMinorVersion'\.\w*)\)">
      inputType = "virtualKeyboard"
      mobileDeviceManufacturer = "PalmOS-licensee"
      type = "MyPalm"
      browser = "MyPalm"
      gatewayVersion = ${gatewayMajorVersion}${gatewayMinorVersion}
      gatewayMajorVersion = ${gatewayMajorVersion}
      gatewayMinorVersion = ${gatewayMinorVersion}
      cookies = "false"
      javaapplets = "false"
      javascript = "false"
      vbscript = "false"
      tables = "false"
      hidesRightAlignedMultiselectScrollbars = "true"
      requiresHtmlAdaptiveErrorReporting = "true"
      requiredMetaTagNameValue = "PalmComputingPlatform"
      screenPixelsWidth = "160"
      screenPixelsHeight = "160"
      screenCharactersWidth = "36"
      screenCharactersHeight = "12"
      screenBitDepth = 2
      isColor = "false"
      supportsBold = "true"
      supportsItalic = "true"
      supportsFontSize = "true"
      supportsFontColor = "false"
      supportsBodyColor = "false"
      isMobileDevice="true"
      supportsEmptyStringInCookieValue = "false"

      <filter>
        <case match="^1\.0$" with="${gatewayMajorVersion}${gatewayMinorVersion}">
          type = "EarthLink"
          browser = "EarthLink"
          canSendMail = "false"
          cookies = "true"
          hidesRightAlignedMultiselectScrollbars = "false"
          maximumRenderedPageSize = "7000"
          preferredImageMime = "image/vnd.wap.wbmp"
          requiresUniqueFilePathSuffix = "true"
          requiresUniqueHtmlCheckboxNames = "true"
          requiresUniqueHtmlInputNames = "true"
          screenBitDepth = "4"
          screenCharactersHeight = "13"
          screenCharactersWidth = "30"
          supportsFontSize = "false"
          tables = "true"
        </case>
      </filter>
    </case>

    <!-- PalmWeb Pro -->
    <!-- Backported from nBrowser files -->
    <!-- Owen Brady 10-15-05-->
    <!-- sample UA "Mozilla/4.76 (compatible; MSIE 6.0; U; Windows 95; PalmSource; PalmOS; WebPro; Tungsten Proxyless 1.1 320x320x16)" -->
    <!-- sample UA "Mozilla/4.76 [en] (PalmOS; U; WebPro)" -->
    <!-- sample UA "Mozilla/4.76 [en] (PalmOS; U; WebPro3.0; Palm-Arz1)" -->
    <case match="^Mozilla/4.\d{2}\s.*\(.*PalmOS.*WebPro">
      browser="Palm Web Pro"
      canSendMail="false"
      inputType="virtualKeyboard"
      isColor="true"
      isMobileDevice="true"
      javascript="false"
      maximumRenderedPageSize="7000"
      mobileDeviceManufacturer="Palm"
      preferredImageMime="image/jpeg"
      requiredMetaTagNameValue="PalmComputingPlatform"
      requiresHtmlAdaptiveErrorReporting="true"
      requiresOutputOptimization="true"
      requiresUniqueFilePathSuffix="true"
      screenBitDepth="24"
      screenCharactersHeight="12"
      screenCharactersWidth="30"
      screenPixelsHeight="320"
      screenPixelsWidth="320"
      supportsBodyColor="false"
      supportsCss="false"
      supportsDivAlign="false"
      supportsDivNoWrap="false"
      supportsFileUpload="false"
      supportsFontName="false"
      supportsFontSize="false"
      tables="false"
      type="Palm Web Pro"
      <case match="WebPro3\.">
        CanSendMail="true"
        InputType="keyboard"
        JavaScript="true"
        MaximumRenderedPageSize="520000"
        maximumHrefLength="2000"
        preferredRequestEncoding="ISO-8859-1"
        preferredResponseEncoding="ISO-8859-1"
        RequiresControlStateInSession="false"
        RequiresOutputOptimization="false"
        RequiresPragmaNoCacheHeader="false"
        RequiresUniqueFilePathSuffix="false"
        supportsMultilineTextBoxDisplay="true"
        Tables="true"
      </case>
    </case>

    <!-- Handspring Blazer -->
    <case match="Blazer">
      browser = "Handspring Blazer"
      type = "Handspring Blazer"
      mobileDeviceManufacturer = "PalmOS-licensee"
      preferredRenderingType = "html32"
      preferredRenderingMime = "text/html"
      preferredImageMime = "image/gif"
      cookies = "true"
      inputType = "virtualKeyboard"
      screenPixelsWidth = "160"
      screenPixelsHeight = "160"
      screenCharactersWidth = "36"
      screenCharactersHeight = "12"
      isColor = "false"
      supportsBold = "true"
      supportsImageSubmit = "true"
      supportsItalic = "true"
      isMobileDevice="true"
      <filter>
        <case match="UPG1 UP/\S* \(compatible; Blazer (?'browserMajorVersion'\d+)(?'browserMinorVersion'\.\d+)">
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
          version = ${browserMajorVersion}${browserMinorVersion}
        </case>
        <case match="; Blazer/(?'browserMajorVersion'\d+)(?'browserMinorVersion'\.\d+)">
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
          version = ${browserMajorVersion}${browserMinorVersion}
        </case>
      </filter>
      <filter>
        <case match="Windows CE">
          mobileDeviceManufacturer = "Unknown"
        </case>        
        <case match="; PalmSource/(?'deviceModel'[^;]+)">
          mobileDeviceModel = ${deviceModel}
        </case>
      </filter>
    </case>

    <!-- EudoraWeb -->
    <!-- sample UA "Mozilla/1.22 (compatible; MSIE 5.01; PalmOS 3.0) EudoraWeb 2.1" -->
    <!-- sample UA "Mozilla/1.22 (compatible; EudoraWeb 2.0; pdQbrowser; PalmOS 2.0)" -->
    <case match="EudoraWeb (?'version'[^;\s]+)">
      browser = "EudoraWeb"
      type = "EudoraWeb"
      version = ${version}
      <filter>
        <case match="(?'browserMajorVersion'\d+)(?'browserMinorVersion'\.\d+)" with="${version}">
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
        </case>
      </filter>

      cookies = "true"
      javaapplets = "false"
      javascript = "false"
      vbscript = "false"
      tables = "false"
      canInitiateVoiceCall = "false"
      maximumRenderedPageSize = "30000"

      screenPixelsWidth = "160"
      screenPixelsHeight = "160"
      screenCharactersWidth = "36"
      screenCharactersHeight = "12"

      inputType = "virtualKeyboard"

      mobileDeviceManufacturer = "PalmOS-licensee"

      supportsBold = "true"
      supportsItalic = "true"
      isMobileDevice="true"

      <filter>
        <case match="pdQbrowser">
          mobileDeviceManufacturer = "Kyocera"
          mobileDeviceModel = "QCP 6035"
          canInitiateVoiceCall = "true"
        </case>
        <!-- version equal to or newer than 2.1 -->
        <case match="([3-9]\.\d+)|(2\.[1-9]\d*)" with="${version}">
          canInitiateVoiceCall = "true"
          hidesRightAlignedMultiselectScrollbars = "true"
          requiresAttributeColonSubstitution = "true"
          requiresUniqueFilePathSuffix = "true"
          requiresUniqueHtmlCheckboxNames = "true"
          screenCharactersHeight = "11"
          screenCharactersWidth = "30"
          supportsBodyColor = "false"
          supportsFontColor = "false"
          supportsFontSize = "true"
          tables = "true"
        </case>
      </filter>
    </case>

    <!-- Palmscape -->
    <case match="Palmscape/.*\(v. (?'version'[^;]+);">
      browser = "Palmscape"
      type = "Palmscape"
      mobileDeviceManufacturer = "PalmOS-licensee"
      isMobileDevice="true"
      supportsCharacterEntityEncoding = "false"

      <filter>
        version = ${version}
        <case match="(?'browserMajorVersion'\d+)(?'browserMinorVersion'\.\d+)" with="${version}">
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}
        </case>
      </filter>

      screenPixelsWidth = "160"
      screenPixelsHeight = "160"
      screenCharactersWidth = "36"
      screenCharactersHeight = "12"

      inputType = "virtualKeyboard"
    </case>

    <!-- AU-System Demo WAP Browser -->
    <case match="AUS PALM WAPPER|AUR PALM WAPPER">
      browser = "AU-System Demo WAP Browser"
      type = "AU-System"
      mobileDeviceManufacturer = "PalmOS-licensee"

      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      preferredImageMime = "image/vnd.wap.wbmp"

      screenPixelsWidth = "160"
      screenPixelsHeight = "160"
      screenCharactersWidth = "36"
      screenCharactersHeight = "12"

      inputType = "virtualKeyboard"
      canSendMail = "false"
      requiresUniqueFilePathSuffix = "true"
      optimumPageWeight = "900"
      isMobileDevice="true"
    </case>

    <!-- Sharp PDA Browser -->
    <case match="sharp pda browser/(?'browserMajorVersion'\d+)(?'browserMinorVersion'\.\d+)">
      browser = "Sharp PDA Browser"
      type = "Sharp PDA Browser"
      mobileDeviceManufacturer = "Sharp"

      majorVersion = ${browserMajorVersion}
      minorVersion = ${browserMinorVersion}
      version = ${browserMajorVersion}${browserMinorVersion}
      isMobileDevice="true"
      supportsCharacterEntityEncoding = "false"

      <filter>
        <case match="MI-E1">
          mobileDeviceModel = "Zaurus MI-E1"
          screenPixelsWidth = "320"
          screenPixelsHeight = "240"
          defaultCharacterWidth = "7"
          defaultCharacterHeight = "18"
          screenBitDepth = "16"
          isColor = "true"
          inputType = "keyboard"
          cookies = "true"
          frames = "true"
          supportsFontSize = "true"
          tables = "true"
          supportsImageSubmit = "true"
          javascript = "false"
          requiresDBCSCharacter = "true"
        </case>
        <case match="MI-E21">
          cachesAllResponsesWithExpires = "true"
          canRenderEmptySelects = "false"
          hidesRightAlignedMultiselectScrollbars = "true"
          inputType = "keyboard"
          isColor = "true"
          maximumRenderedPageSize = "60000"
          mobileDeviceModel = "Zaurus MI-E21"
          requiresAttributeColonSubstitution = "true"
          requiresDBCSCharacter = "true"
          screenBitDepth = "16"
          screenCharactersHeight = "18"
          screenCharactersWidth = "40"
          screenPixelsHeight = "320"
          screenPixelsWidth = "240"
          supportsFontSize = "true"
          supportsInputStyle = "false"
          tables = "true"
        </case>
      </filter>
    </case>

    <!-- OpenWave Browsers -->
    <case match="(UP\.Browser)|(UP/)">
      browser = "Phone.com"
      inputType = "telephoneKeypad"
      canInitiateVoiceCall = "true"
      canSendMail = "false"
      cookies = "true"
      preferredRenderingType = "wml11"
      preferredRenderingMime = "text/vnd.wap.wml"
      rendersWmlDoAcceptsInline = "false"
      rendersWmlSelectsAsMenuCards = "true"
      rendersBreakBeforeWmlSelectAndInput = "true"
      supportsRedirectWithCookie = "false"

      optimumPageWeight = "700"
      isMobileDevice="true"

      <filter match="^$" with="%{x_up_devcap_screenchars}">
        defaultScreenCharactersWidth = "15"
        defaultScreenCharactersHeight = "4"
      </filter>
      <filter match="^$" with="%{x_up_devcap_screenpixels}">
        defaultScreenPixelsWidth = "120"
        defaultScreenPixelsHeight = "40"
      </filter>
      <filter match="^$" with="%{x_up_devcap_screendepth}">
        screenBitDepth = "1"
      </filter>
      <filter match="^$" with="%{x_up_devcap_iscolor}">
        isColor = "false"
      </filter>
      <filter match="^$" with="%{x_up_devcap_numsoftkeys}">
        numberOfSoftkeys = 2
      </filter>
      <filter match="^$" with="%{x_up_devcap_max_pdu}">
        maximumRenderedPageSize = 1492
      </filter>

      <!-- Phone.com 3.x, 4.x and 5.x -->
      <filter>
        <case match="((?'deviceID'\S*) UP/\S* UP\.Browser/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*) UP\.Link/)|((?'deviceID'\S*)/\S* UP(\.Browser)*/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*))|(UP\.Browser/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*)-(?'deviceID'\S*) UP\.Link/)|((?'deviceID'\S*) UP\.Browser/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*) UP\.Link/)|((?'deviceID'\S*)/(?'DeviceVersion'\S*) UP/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*))|((?'deviceID'\S*)/(?'DeviceVersion'\S*) UP.Browser/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*))|((?'deviceID'\S*) UP.Browser/((?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*)\S*))">
          majorVersion = ${browserMajorVersion}
          minorVersion = ${browserMinorVersion}

          <filter>
            <case match="[45]" with="%{majorVersion}">
              type = "Phone.com %{majorVersion}.x Browser"
              preferredImageMime = "image/vnd.wap.wbmp"
              requiresUniqueFilePathSuffix = "true"
            </case>
            <case match="3" with="%{majorVersion}">
              type = "Phone.com 3.x Browser"
              preferredImageMime = "image/bmp"
              requiresUrlEncodedPostfieldValues = "true"
              requiresUniqueFilePathSuffix = "true"
              canRenderInputAndSelectElementsTogether = "false"
            </case>
          </filter>

          version = %{majorVersion}%{minorVersion}

          <filter match="UP\.Link/(?'gatewayVersion'\S*)">
            <case with="${gatewayVersion}" match="(?'gatewayMajorVersion'\d*)(?'gatewayMinorVersion'\.\d*).*">
              gatewayVersion = UP.Link/${gatewayVersion}
              gatewayMajorVersion = ${gatewayMajorVersion}
              gatewayMinorVersion = ${gatewayMinorVersion}
            </case>
          </filter>
          <filter>
            <case match="Alcatel-BE4" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              mobileDeviceModel = "301"
            </case>
            <case match="Alcatel-BE5" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              mobileDeviceModel = "501, 701"
              <filter>
                <case match="2\.0">
                  maximumRenderedPageSize = "1900"
                  maximumSoftkeyLabelLength = "0"
                  mobileDeviceModel = "Alcatel One Touch 501"
                  numberOfSoftkeys = "10"
                  rendersWmlDoAcceptsInline = "true"
                  requiresNoSoftkeyLabels = "true"
                  screenBitDepth = "0"
                  screenCharactersHeight = "6"
                  screenCharactersWidth = "14"
                  screenPixelsHeight = "60"
                  screenPixelsWidth = "91"
                  supportsBold = "true"
                  tables = "true"
                </case>
              </filter>
            </case>
            <case match="Alcatel-BE3" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              mobileDeviceModel = "OneTouchDB@"
            </case>
            <case match="Alcatel-BF3" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              maximumRenderedPageSize = "1900"
              maximumSoftkeyLabelLength = "13"
              mobileDeviceModel = "Alcatel One Touch 311"
              numberOfSoftkeys = "10"
              rendersWmlDoAcceptsInline = "true"
              screenCharactersHeight = "5"
              screenCharactersWidth = "11"
              screenPixelsHeight = "65"
              screenPixelsWidth = "96"
            </case>
            <case match="Alcatel-BF4" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              maximumRenderedPageSize = "1900"
              maximumSoftkeyLabelLength = "13"
              mobileDeviceModel = "Alcatel One Touch 511"
              numberOfSoftkeys = "10"
              rendersWmlDoAcceptsInline = "true"
              screenCharactersHeight = "5"
              screenCharactersWidth = "11"
              screenPixelsHeight = "60"
              screenPixelsWidth = "89"
            </case>
            <case match="MOT-CB" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport P7389"
              numberOfSoftkeys = "1"
            </case>
            <case match="MOT-D8" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport 250/P7689"
            </case>
            <case match="MOT-CF" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Accompli 6188"
            </case>
            <case match="MOT-F6" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Accompli 008/6288"
              inputType = "virtualKeyboard"
            </case>
            <case match="MOT-BC" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Accompli 009"
              inputType = "keyboard"
            </case>
            <case match="MOT-DC" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "V3682, V50"
            </case>
            <case match="MOT-PAN-C" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport 270c"
            </case>
            <case match="MOT-C4" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "V2288, V2282"
              supportsCacheControlMetaTag = "false"
              canRenderMixedSelects = "false"
            </case>
            <case match="MCCA" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport 8767/ST7868"
            </case>
            <case match="MOT-2000" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "V60c"
            </case>
            <case match="MOT-P2K-C" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "V120c"
            </case>
            <case match="MOT-AF" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport 260/P7382i/P7389i"
              screenCharactersHeight = "4"

              <filter>
                <case match="4\.1\.8" with="${DeviceVersion}">
                  mobileDeviceModel = "Timeport 260"
                  cachesAllResponsesWithExpires = "true"
                  maximumRenderedPageSize = "1900"
                  maximumSoftkeyLabelLength = "5"
                  screenBitDepth = "24"
                  screenCharactersWidth = "16"
                  screenPixelsHeight = "64"
                  screenPixelsWidth = "96"
                  supportsCacheControlMetaTag = "false"
                  tables = "true"
                </case>
              </filter>
            </case>
            <case match="MOT-C2" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "V100, V.Box"
              inputType = "keyboard"
            </case>
            <case match="Philips-Xenium9@9" with="${deviceID}">
              mobileDeviceManufacturer = "Philips"
              mobileDeviceModel = "Xenium 9@9 TCD 998"
            </case>
            <case match="Sagem-959" with="${deviceID}">
              mobileDeviceManufacturer = "Sagem"
              mobileDeviceModel = "MW-959"
            </case>
            <case match="SAMSUNG-SGH-A300" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SGH-A300"
              maximumRenderedPageSize = "2000"
              maximumSoftkeyLabelLength = "19"
              screenCharactersHeight = "5"
              screenCharactersWidth = "13"
              screenPixelsHeight = "128"
              screenPixelsWidth = "128"
            </case>
            <case match="Samsung-SGH-N100/" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SGH-N100"
            </case>
            <case match="Sanyo-C304SA/" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C304SA"
            </case>
            <case match="SY11" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C304SA"
            </case>
            <case match="ST12" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C411ST"
            </case>
            <case match="SY14" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C412SA"
            </case>
            <case match="SIE-S40" with="${deviceID}">
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "S40, S42"
              maximumRenderedPageSize = "2048"
              cachesAllResponsesWithExpires = "true"
            </case>
            <case match="SIE-SL45" with="${deviceID}">
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "SL-45"
            </case>
            <case match="SIE-S35" with="${deviceID}">
              canRenderMixedSelects = "false"
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "S35"
            </case>
            <case match="SIE-ME45" with="${deviceID}">
              maximumRenderedPageSize = "2800"
              maximumSoftkeyLabelLength = "7"
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "ME45"
              preferredImageMime = "image/vnd.wap.wbmp"
              preferredRenderingType = "wml12"
              rendersBreakBeforeWmlSelectAndInput = "false"
              requiresUniqueFilePathSuffix = "true"
              screenCharactersHeight = "5"
              screenCharactersWidth = "16"
              screenPixelsHeight = "65"
              screenPixelsWidth = "101"
              supportsBold = "true"
              supportsFontSize = "true"
            </case>
            <case match="GM832" with="${deviceID}">
              mobileDeviceManufacturer = "Telit"
              mobileDeviceModel = "GM832"
            </case>
            <case match="Telit-GM910i" with="${deviceID}">
              mobileDeviceManufacturer = "Telit"
              mobileDeviceModel = "GM910i"
            </case>
            <case match="MOT-32" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "i85s, i50sx"
            </case>
            <case match="MOT-28" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "i700+, i1000+"
            </case>
            <case match="D2" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "D2"
            </case>
            <case match="P-PAT" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "P-PAT"
            </case>
            <case match="ALAZ" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              mobileDeviceModel = "OneTouch"
            </case>
            <case match="AUDIOVOX-CDM9100" with="${deviceID}">
              mobileDeviceManufacturer = "Audiovox"
              mobileDeviceModel = "CDM-9100"
            </case>
            <case match="HD-MMD1010" with="${deviceID}">
              mobileDeviceManufacturer = "Audiovox"
              mobileDeviceModel = "CDM-135"
            </case>
            <case match="TSCA" with="${deviceID}">
              mobileDeviceManufacturer = "Audiovox"
              mobileDeviceModel = "CDM-9000"
            </case>
            <case match="CA11" with="${deviceID}">
              mobileDeviceManufacturer = "Casio"
              mobileDeviceModel = "C303CA"
            </case>
            <case match="CA12" with="${deviceID}">
              mobileDeviceManufacturer = "Casio"
              mobileDeviceModel = "C311CA"
            </case>
            <case match="DN01" with="${deviceID}">
              mobileDeviceManufacturer = "Casio"
              mobileDeviceModel = "C202DE"
            </case>
            <case match="CA13" with="${deviceID}">
              mobileDeviceManufacturer = "Casio"
              mobileDeviceModel = "C409CA"
            </case>
            <case match="DN11" with="${deviceID}">
              mobileDeviceManufacturer = "Denso"
              mobileDeviceModel = "C402DE"
            </case>
            <case match="DS15" with="${deviceID}">
              mobileDeviceManufacturer = "Denso"
              mobileDeviceModel = "Touchpoint DS15"
            </case>
            <case match="DS1[34]" with="${deviceID}">
              mobileDeviceManufacturer = "Denso"
              mobileDeviceModel = "TouchPoint TP2200"
              screenCharactersWidth = 15
              screenCharactersHeight = 5
            </case>
            <case match="DS12" with="${deviceID}">
              mobileDeviceManufacturer = "Denso"
              mobileDeviceModel = "TouchPoint TP120"
            </case>
            <case match="DS10" with="${deviceID}">
              mobileDeviceManufacturer = "Denso"
              mobileDeviceModel = "Eagle 10"
            </case>
            <case match="ERK0" with="${deviceID}">
              mobileDeviceManufacturer = "Ericsson"
              mobileDeviceModel = "R280"
            </case>
            <case match="HI01" with="${deviceID}">
              mobileDeviceManufacturer = "Hitachi"
              mobileDeviceModel = "C201H"
            </case>
            <case match="HW01" with="${deviceID}">
              mobileDeviceManufacturer = "Hanwha"
              mobileDeviceModel = "S71"
            </case>
            <case match="HI11" with="${deviceID}">
              mobileDeviceManufacturer = "Hitachi"
              mobileDeviceModel = "C302H"
            </case>
            <case match="HI12" with="${deviceID}">
              mobileDeviceManufacturer = "Hitachi"
              mobileDeviceModel = "C309H"
            </case>
            <case match="HI13" with="${deviceID}">
              mobileDeviceManufacturer = "Hitachi"
              mobileDeviceModel = "C407H"
            </case>
            <case match="HI14" with="${deviceID}">
              mobileDeviceManufacturer = "Hitachi"
              mobileDeviceModel = "C451H"
            </case>
            <case match="HD03" with="${deviceID}">
              mobileDeviceManufacturer = "Hyundai"
              mobileDeviceModel = "HGC-R201"
            </case>
            <case match="HD02" with="${deviceID}">
              mobileDeviceManufacturer = "Hyundai"
              mobileDeviceModel = "P-21"
            </case>
            <case match="KCI1" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "702G"
            </case>
            <case match="KCI2" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "703G"
            </case>
            <case match="KC11" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "C307K"
            </case>
            <case match="KCT1" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "TK01"
            </case>
            <case match="KCT2" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "TK02"
            </case>
            <case match="KCT4" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "TK03"
            </case>
            <case match="KCT5" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "TK04"
            </case>
            <case match="KCT6" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "TK05"
            </case>
            <case match="KCC1" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "D303K"
            </case>
            <case match="KCC2" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "D304K"
            </case>
            <case match="QC06" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "QCP2035/2037"
            </case>
            <case match="QC07" with="${deviceID}">
              mobileDeviceManufacturer = "Kyocera"
              mobileDeviceModel = "QCP3035"
            </case>
            <case match="LG22" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "D-512"
            </case>
            <case match="LG05" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "DM-110"
            </case>
            <case match="LG21" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "TM-510"
              canRenderPostBackCards = "false"
            </case>
            <case match="LG13" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "DM-510"
            </case>
            <case match="LG11" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "P-100"
            </case>
            <case match="LG07" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGC-875F"
            </case>
            <case match="LG03" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGP-6800F"
            </case>
            <case match="LG04" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGP-7800F"
            </case>
            <case match="LG09" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGC-840F"
            </case>
            <case match="LG02" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGI-2100"
            </case>
            <case match="LG01" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "LGP-7300F"
            </case>
            <case match="LG10" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "SD-500"
            </case>
            <case match="LG06" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "Touchpoint TP1100"
            </case>
            <case match="LG08" with="${deviceID}">
              mobileDeviceManufacturer = "LG"
              mobileDeviceModel = "Touchpoint TP3000"
              inputType = "virtualKeyboard"
              canRenderAfterInputOrSelectElement = "false"
            </case>
            <case match="T250" with="${deviceID}">
              mobileDeviceManufacturer = "Mitsubishi"
              mobileDeviceModel = "T250"
            </case>
            <case match="MO01" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "i500+, i700+, i1000+"
            </case>
            <case match="MO02" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "i2000+"
            </case>
            <case match="MC01" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "StarTac ST786x, Talkabout T816x, Timeport P816x"
            </case>
            <case match="MCCC" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Talkabout V2267"
            </case>
            <case match="MCC9" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Talkabout V8162"
            </case>
            <case match="NK00" with="${deviceID}">
              mobileDeviceManufacturer = "Nokia"
              mobileDeviceModel = "3285/6180/6185"
              <!-- The following data is only likely to be valid for the 3285 -->
              maximumRenderedPageSize = "2252"
              maximumSoftkeyLabelLength = "6"
              mobileDeviceModel = "nokia 3285"
              preferredImageMime = "image/bmp"
              rendersWmlDoAcceptsInline = "true"
              supportsBold = "true"
              supportsRedirectWithCookie = "true"
              screenCharactersWidth = "15"
            </case>
            <case match="MAI[12]" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "704G"
            </case>
            <case match="MA1[12]" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "C308P"
            </case>
            <case match="MA13" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "C408P"
            </case>
            <case match="MAC1" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "D305P"
            </case>
            <case match="MAT1" with="${deviceID}">
              mobileDeviceManufacturer = "Panasonic"
              mobileDeviceModel = "TP01"
            </case>
            <case match="SC01" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-3500"
            </case>
            <case match="SC03" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-6100"
            </case>
            <case match="SC02" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-8500"
            </case>
            <case match="SC04" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-850"
            </case>
            <case match="SG08" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SGH-800"
            </case>
            <case match="SC13" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "Uproar M100"
            </case>
            <case match="SC11" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-N105"
            </case>
            <case match="SEC01" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-U03"
            </case>
            <case match="SC10" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "SCH-U02"
            </case>
            <case match="SY11" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C304A"
            </case>
            <case match="SY12" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C401SA"
            </case>
            <case match="ST11" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C403ST"
            </case>
            <case match="SY13" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "C405SA"
            </case>
            <case match="SYC1" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "D301SA"
            </case>
            <case match="SY01" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "SCP-4000"
            </case>
            <case match="SYT1" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "TS01"
            </case>
            <case match="SYT2" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "TS02"
            </case>
            <case match="SY02" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "SCP-4500"
            </case>
            <case match="SY03" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "SCP-5000"
            </case>
            <case match="SI01" with="${deviceID}">
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "S25"
            </case>
            <case match="SNI1" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "705G"
            </case>
            <case match="SN11" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "C305SN"
            </case>
            <case match="SN12" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "C404S"
            </case>
            <case match="SN1[34]" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "C406S"
            </case>
            <case match="SN1[56]" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "C413S"
            </case>
            <case match="SNC1" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "D306S"
            </case>
            <case match="TSC1" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "D302T"
            </case>
            <case match="TSI1" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "701G"
            </case>
            <case match="TS11" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "C301T"
            </case>
            <case match="TS12" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "C310T"
            </case>
            <case match="TS13" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "C410T"
            </case>
            <case match="TST1" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "TT01"
            </case>
            <case match="TST2" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "TT02"
            </case>
            <case match="TST3" with="${deviceID}">
              mobileDeviceManufacturer = "Toshiba"
              mobileDeviceModel = "TT03"
            </case>
            <case match="IG01" with="${deviceID}">
              mobileDeviceManufacturer = "NeoPoint"
              mobileDeviceModel = "NP1000"
            </case>
            <case match="IG02" with="${deviceID}">
              mobileDeviceManufacturer = "NeoPoint"
              mobileDeviceModel = "NP1660"
            </case>
            <case match="IG03" with="${deviceID}">
              mobileDeviceManufacturer = "NeoPoint"
              mobileDeviceModel = "NP2000"
            </case>
            <case match="QC31" with="${deviceID}">
              mobileDeviceManufacturer = "Qualcomm"
              mobileDeviceModel = "QCP-860, QCP-1960"
            </case>
            <case match="QC12" with="${deviceID}">
              mobileDeviceManufacturer = "Qualcomm"
              mobileDeviceModel = "QCP-1900, QCP-2700"
            </case>
            <case match="QC32" with="${deviceID}">
              mobileDeviceManufacturer = "Qualcomm"
              mobileDeviceModel = "QCP-2760"
            </case>
            <case match="SP01" with="${deviceID}">
              mobileDeviceManufacturer = "Mitsubishi"
              mobileDeviceModel = "MA120"
            </case>
            <case match="SH" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "Duette"
            </case>
            <!-- Simulator Skins -->
            <case match="UPG1" with="${deviceID}">
              mobileDeviceManufacturer = "OpenWave"
              mobileDeviceModel = "Generic Simulator"
            </case>
            <case match="OPWV1" with="${deviceID}">
              canInitiateVoiceCall = "false"
              inputType = "keyboard"
              maximumRenderedPageSize = "3584"
              maximumSoftkeyLabelLength = "9"
              mobileDeviceManufacturer = "Openwave"
              mobileDeviceModel = "Openwave 5.0 emulator"
              rendersBreakBeforeWmlSelectAndInput = "false"
              screenCharactersHeight = "7"
              screenCharactersWidth = "19"
              screenPixelsHeight = "188"
              screenPixelsWidth = "144"
              supportsBold = "true"
              supportsFontSize = "true"
              supportsItalic = "true"
            </case>
            <case match="ALAV" with="${deviceID}">
              mobileDeviceManufacturer = "Alcatel"
              mobileDeviceModel = "OneTouch"
            </case>
            <case match="IM1K" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "iDEN"
            </case>
            <case match="NT95" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "cdmaOne"
            </case>
            <case match="MOT-2001" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Timeport 270c"
              screenCharactersWidth = "19"
              maximumRenderedPageSize = "1946"
              rendersWmlDoAcceptsInline = "true"
              requiresSpecialViewStateEncoding = "true"
              requiresUrlEncodedPostfieldValues ="true"
            </case>
            <case match="MOT-v200" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Motorola v200"
              hasBackButton = "false"
              inputType = "keyboard"
              maximumRenderedPageSize = "2000"
              preferredImageMime = "image/bmp"
              rendersWmlDoAcceptsInline = "true"
              requiresSpecialViewStateEncoding = "true"
              requiresUrlEncodedPostfieldValues = "true"
              supportsRedirectWithCookie = "true"
            </case>
            <case match="MOT-72" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Motorola i80s"
              hasBackButton = "false"
              maximumRenderedPageSize = "2900"
              maximumSoftkeyLabelLength = "7"
              numberOfSoftkeys = "4"
              rendersBreaksAfterWmlAnchor = "true"
              rendersWmlDoAcceptsInline = "true"
              requiresSpecialViewStateEncoding = "true"
              requiresUrlEncodedPostfieldValues = "true"
              screenCharactersHeight = "4"
              screenCharactersWidth = "13"
            </case>
            <case match="MOT-76" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Motorola i90c"
              maximumRenderedPageSize = "2969"
              maximumSoftkeyLabelLength = "7"
              preferredImageMime = "image/vnd.wap.wbmp"
              rendersWmlDoAcceptsInline = "true"
              requiresAttributeColonSubstitution = "true"
              screenCharactersWidth = "14"
            </case>
            <case match="Sanyo-SCP6000" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "Sanyo SCP-6000"
              canRenderInputAndSelectElementsTogether = "false"
              hasBackButton = "false"
              preferredImageMime = "image/bmp"
              preferredRenderingMime = "text/vnd.wap.wml"
              screenBitDepth = "1"
              supportsBold = "true"
              supportsRedirectWithCookie = "true"
              screenPixelsHeight = "120"
              screenPixelsWidth = "128"
              supportsBold = "true"
              <!-- MaximumRenderedPageSize = "3000" -->
              <!-- This is reported different by the device -->
            </case>
            <case match="MOT-D5" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Motorola Talkabout 191/192/193"
              screenCharactersHeight = "4"
              screenCharactersWidth = "13"
              screenPixelsHeight = "51"
              screenPixelsWidth = "91"
              maximumRenderedPageSize = "2000"
              maximumSoftkeyLabelLength = "6"
              numberOfSoftkeys = "3"
            </case>
            <case match="MOT-F0" with="${deviceID}">
              mobileDeviceManufacturer = "Motorola"
              mobileDeviceModel = "Motorola v50"
              screenCharactersHeight = "4"
              screenCharactersWidth = "16"
              screenPixelsHeight = "40"
              screenPixelsWidth = "96"
              maximumRenderedPageSize = "2000"
              numberOfSoftkeys = "3"
              rendersWmlDoAcceptsInline = "true"
              requiresSpecialViewStateEncoding = "true"
              requiresUrlEncodedPostfieldValues = "true"
            </case>
            <case match="SAMSUNG-SGH-A400" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "Samsung SGH-A400"
              screenCharactersHeight = "3"
              screenCharactersWidth = "13"
              screenPixelsHeight = "96"
              screenPixelsWidth = "128"
              maximumRenderedPageSize = "2000"
              maximumSoftkeyLabelLength = "6"
              rendersBreakBeforeWmlSelectAndInput = "false"
              requiresNoSoftkeyLabels = "true"
            </case>
            <case match="SEC03" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "Samsung SPH-i300"
              inputType = "virtualKeyboard"
              isColor = "false"
              maximumRenderedPageSize = "3000"
              maximumSoftkeyLabelLength = "7"
              preferredImageMime = "image/bmp"
              requiresUniqueFilePathSuffix = "true"
              screenBitDepth = "1"
              screenCharactersHeight = "10"
              screenCharactersWidth = "38"
              screenPixelsHeight = "240"
              screenPixelsWidth = "160"
              supportsBold = "true"
              supportsRedirectWithCookie = "true"
            </case>
            <case match="SIE-C3I" with="${deviceID}">
              canRenderMixedSelects = "false"
              mobileDeviceManufacturer = "Siemens"
              mobileDeviceModel = "C35/M35"
              screenCharactersHeight = "4"
              screenCharactersWidth = "16"
              screenPixelsHeight = "56"
              screenPixelsWidth = "97"
              maximumSoftkeyLabelLength = "7"
              rendersBreakBeforeWmlSelectAndInput = "false"
              rendersWmlDoAcceptsInline = "true"
              requiresSpecialViewStateEncoding = "true"
              requiresUrlEncodedPostfieldValues = "true"
              supportsBold = "true"
            </case>
            <case match="SN17" with="${deviceID}">
              mobileDeviceManufacturer = "Sony"
              mobileDeviceModel = "C1002S"
              screenCharactersHeight = "10"
              screenCharactersWidth = "20"
              screenPixelsHeight = "120"
              screenPixelsWidth = "120"
              maximumRenderedPageSize = "12000"
              numberOfSoftkeys = "3"
              rendersBreakBeforeWmlSelectAndInput = "false"
              screenBitDepth = "16"
              supportsRedirectWithCookie = "true"
              requiresSpecialViewStateEncoding = "true"
            </case>
            <case match="Sanyo-SCP4700" with="${deviceID}">
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "Sanyo SCP 4700"
              screenCharactersHeight = "4"
              screenCharactersWidth = "15"
              screenPixelsHeight = "32"
              screenPixelsWidth = "91"
              maximumRenderedPageSize = "3072"
              supportsRedirectWithCookie = "true"
              preferredImageMime = "image/vnd.wap.wbmp"
            </case>
            <case match="SEC02" with="${deviceID}">
              mobileDeviceManufacturer = "Samsung"
              mobileDeviceModel = "Samsung SPH-N200"
              screenCharactersHeight = "7"
              screenCharactersWidth = "15"
              screenPixelsHeight = "96"
              screenPixelsWidth = "128"
              maximumRenderedPageSize = "2867"
              preferredImageMime = "image/bmp"
              rendersBreaksAfterWmlAnchor = "true"
              rendersBreaksAfterWmlInput = "true"
              requiresUniqueFilePathSuffix = "true"
              supportsItalic = "true"
              supportsRedirectWithCookie = "true"
            </case>
            <case match="SY15" with="${deviceID}">
              maximumRenderedPageSize = "7500"
              mobileDeviceManufacturer = "Sanyo"
              mobileDeviceModel = "Sanyo C1001SA"
              preferredImageMime = "image/bmp"
              rendersBreakBeforeWmlSelectAndInput = "false"
              screenBitDepth = "1"
              screenCharactersHeight = "8"
              supportsRedirectWithCookie = "true"
              requiresSpecialViewStateEncoding = "true"
            </case>
            <case match="LGE-DB520" with="${deviceID}">
              maximumRenderedPageSize = "3072"
              mobileDeviceManufacturer = "Sprint"
              mobileDeviceModel = "TP5200"
              preferredImageMime = "image/vnd.wap.wbmp"
              preferredRenderingMime = "text/wnd.wap.wml"
              rendersBreakBeforeWmlSelectAndInput = "false"
              rendersBreaksAfterWmlInput = "true"
              supportsRedirectWithCookie = "true"
            </case>
            <!-- Added 06-25-06-->
            <case match="SIE-C65" with="${deviceID}">
              mobileDeviceModel = "C65"
            </case>
            <case match="SIE-C75" with="${deviceID}">
              mobileDeviceModel = "C75"
            </case>            
            <case match="LGE-LG4600" with="${deviceID}">
              mobileDeviceManufacturer = "Sprint"
              mobileDeviceModel = "LG4600"
            </case>
            <case match="Samsung-(?'Model'[^/]*)|SAMSUNG-(?'Model'[^/]*)|SEC-(?'Model'[^/]*)|SGH-(?'Model'[^/]*)|SCH-(?'Model'[^/]*)">
              <case match="SPHA900 AU-MIC-A900" with="${Model}">
                <!-- http://device.sprintpcs.com/Samsung/SPH-A900/ZA06.rdf -->
                browser = "AU System"
                majorversion=2
                minorversion=.0
                version = %{majorVersion}%{minorVersion}
              </case>
              <case match="SGH-D600" with="${Model}">
                <!-- http://wap.samsungmobile.com/uaprof/SGH-D600.xml -->
              </case>
            </case>
            mobileDeviceModel = "${deviceID}"
          </filter>
        </case>
      </filter>
    </case>
    <!-- End OpenWave Browsers -->

    <!--  jBrowser  -->
    <!-- Added by Owen Brady: 6-12-05 -->
    <case match="^jBrowser">
      browser="Jataayu jBrowser"
      canSendMail="false"
      cookies="true"
      inputType="virtualKeyboard"
      isColor="true"
      isMobileDevice="true"
      maximumRenderedPageSize="10000"
      mobileDeviceManufacturer="Jataayu"
      mobileDeviceModel="jBrowser"
      preferredImageMime="image/jpeg"
      preferredRenderingMime="application/xhtml+xml"
      preferredRenderingType="wml20"
      requiresCommentInStyleElement="true"
      requiresHiddenFieldValues="true"
      requiresHtmlAdaptiveErrorReporting="true"
      requiresOnEnterForwardForCheckboxLists="true"
      requiresXhtmlCssSuppression="false"
      screenBitDepth="24"
      screenCharactersHeight="17"
      screenCharactersWidth="42"
      screenPixelsHeight="265"
      screenPixelsWidth="248"
      supportsBodyClassAttribute="false"
      supportsBold="true"
      supportsFontName="true"
      supportsFontSize="true"
      supportsItalic="true"
      supportsRedirectWithCookie="false"
      tables="true"
      type="Jataayu jBrowser"
      <case match="(PPC)">
        cookies="true"
        screenCharactersHeight="14"
        screenCharactersWidth="31"
        screenPixelsHeight="320"
        screenPixelsWidth="240"
        supportsStyleElement="true"
      </case>
    </case>

    <!--BlackBerry -->
    <!-- Added by Owen Brady: 6-16-05 -->
    <case match="BlackBerry">
      browser = "BlackBerry"
      type = "BlackBerry"
      isMobileDevice="true"
      <filter>
        <case match="BlackBerry(?'deviceID'\S*)/(?'version'(?'major'\d+)\.(?'minor'\d+)\.(?'revision'\d+))">
          type = "BlackBerry ${deviceID}"
          mobileDeviceModel = "${deviceID}"
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          revisionversion=${revision}
        </case>
        <case match="BlackBerry/(?'version'(?'major'\d+)\.(?'minor'\d+)\.(?'revision'\d+))">
          version=${version}
          majorversion=${major}
          minorversion=${minor}
          revisionversion=${revision}
        </case>
      </filter>
    </case>

    <!-- Added by Owen Brady: 10-15-05 -->
    <!-- o2imode/2.0 N343i(c10;TB) 	-->
    <case match="o2imode/(?'version'(?'major'\d+)(?'minor'\.\d+))\s(?'deviceID'\w*)">
      browser = "o2imode"
      isMobileDevice="true"
      mobileDeviceModel = "${deviceID}"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      platform=WAP
      <case match="N343i" with="${deviceID}">
        mobileDeviceManufacturer = "NEC"
        mobileDeviceModel = "N343i"
        supportsIModeSymbols = "true"
        isColor = "true"
      </case>
    </case>

    <!-- Added by Owen Brady: 10-15-05 -->
    <case match="^TSM-100v/\d{8}\s(?'Browser'^\w+)/(?'version'(?'major'\d+)(?'minor'\.\d+))">
      <!-- 
					TSM-100v/42190013 Browser/1.2.1 Profile/MIDP-1.0 Configuration/CLDC-1.0 UP.Link/1.1
					spanish cell phone don't have much on it that I can read 
					-->
      browser = "${Browser}"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
      mobileDeviceManufacturer = "Vitelcom Mobile"
      isMobileDevice="true"
      mobileDeviceModel = "TSM-100"
      isColor = "true"
    </case>

    <!-- Added to help detect Samsung Mobile Browsers,by Owen Brady 06-25-06-->
    <case match="SAMSUNG-(?'Model'[^/]*)|SEC-(?'Model'[^/]*)|SGH-(?'Model'[^/]*)">
      <!--Filling in the easy Stuff -->
      mobileDeviceManufacturer = "Samsung"
      mobileDeviceModel = "${Model}"
      isMobileDevice="true"
      crawler="false"
      <case match="SPHA900 AU-MIC-A900" with="${Model}">
        <!-- http://device.sprintpcs.com/Samsung/SPH-A900/ZA06.rdf -->
        browser = "AU System"
        majorversion=2
        minorversion=.0
        version = %{majorVersion}%{minorVersion}
      </case>
      <case match="Z107 SHP" with="${Model}">
        <!-- http://wap.samsungmobile.com/uaprof/Z107UAProf.rdf -->
        browser = "Samsung Mobile Browser"
        majorversion=3
        minorversion=.0
        mobileDeviceModel = "Z107"
      </case>
      <case match="SGH-Z140" with="${Model}">
        <!--http://wap.samsungmobile.com/uaprof/Z140VUAProf2G.rdf -->
        <!--http://wap.samsungmobile.com/uaprof/Z140VUAProf3G.rdf -->
        browser = "Phone.com"
        majorversion=7
        minorversion=.0.2
        version = %{majorVersion}%{minorVersion}
      </case>
      <case match="SGHC200" with="${Model}">
        <!-- http://wap.samsungmobile.com/uaprof/c200.xml-->
        mobileDeviceModel = "SGH-C200"
        browser = "Nokia"
        majorversion=3
        minorversion=.0
      </case>
    </case>

    <!-- Added by Owen Brady: 06-25-06 -->
    <!-- LG/U8130/v1.0-->
    <!-- http://fr.lge.com/gsm/LG-U8130.xml -->
    <case match="LG/(?'deviceID'[^/]*)/v(?'version'(?'major'\d+)(?'minor'\.\d+))">
      browser = "LG Electronics"
      isMobileDevice="true"
      mobileDeviceModel = "${deviceID}"
      version=${version}
      majorversion=${major}
      minorversion=${minor}
    </case>

    <!-- sample UAs
          Mozilla/4.0 (PDA; SL-B500/1.0,Embedix/Qtopia/1.2.0) NetFront/3.0" 
          Mozilla/4.0 (MobilePhone MM-8300/US/1.0) NetFront/3.1 MMP/2.0
          Mozilla/4.0 (MobilePhone MM-7400/US/1.0) NetFront/3.1 MMP/2.0
          Mozilla/4.0 (DTV;TSBNetTV/T0C.0102.18E)NetFront/3.1 InettvBrowser/1.0 (000039;T0C;0102;18E)
          Mozilla/4.08 (PDA; NF32PPC3AR/1.01) NetFront/3.2
          Mozilla/4.08 (PDA; NF33PPC3AR/1.0) NetFront/3.3
          SGH-ZX10 SHP/VPP/R5 NetFront/3.2 SMM-MMS/1.2.0 profile/MIDP-2.0 configuration/CLDC-1.1 UP.Link/6.3.0.0.0          
          -->
    <!-- 06-25-06 Owen Brady -->
    <!-- Back Ported from 2.0 Browser files -->
    <case match="NetFront/(?'browserMajorVersion'\d*)(?'browserMinorVersion'\.\d*).*">
      breaksOnInlineElements="false"
      browser="Compact NetFront"
      canInitiateVoiceCall="true"
      canSendMail="false"
      inputType="telephoneKeypad"
      isMobileDevice="true"
      javascript="false"
      maximumRenderedPageSize="10000"
      majorVersion="${browserMajorVersion}"
      minorVersion="${browserMinorVersion}"
      version="${browserMajorVersion}${browserMinorVersion}"
      preferredImageMime="image/jpeg"
      preferredRenderingMime="application/xhtml+xml"
      preferredRenderingType="xhtml-mp"
      requiresAbsolutePostbackUrl="false"
      requiresCommentInStyleElement="false"
      requiresFullyQualifiedRedirectUrl="true"
      requiresHiddenFieldValues="false"
      requiresOnEnterForwardForCheckboxLists="false"
      requiresXhtmlCssSuppression="false"
      supportsAccessKeyAttribute="true"
      supportsBodyClassAttribute="true"
      supportsDivNoWrap="false"
      supportsFileUpload="false"
      supportsFontName="false"
      supportsImageSubmit="false"
      supportsItalic="false"
      supportsSelectFollowingTable="true"
      supportsStyleElement="true"
      supportsUrlAttributeEncoding="true"
      type="Compact NetFront ${browserMajorVersion}"
      <filter>
        <case match="SL-B500">
          browser="NetFront"
          canInitiateVoiceCall="false"
          canSendMail="true"
          ExchangeOmaSupported="true"
          inputType="virtualKeyboard"
          isColor="true"
          maximumRenderedPageSize="60000"
          mobileDeviceManufacturer="Sharp"
          mobileDeviceModel="SL-B500"
          preferredImageMime="image/gif"
          preferredRenderingMime="text/html"
          preferredRenderingType="html32"
          requiresContentTypeMetaTag="false"
          requiresNoBreakInFormatting="true"
          requiresOutputOptimization="true"
          screenBitDepth="16"
          screenCharactersHeight="21"
          screenCharactersWidth="47"
          screenPixelsHeight="240"
          screenPixelsWidth="320"
          supportsAccessKeyAttribute="false"
          supportsBold="false"
          supportsFontSize="false"
          supportsImageSubmit="true"
          supportsMultilineTextboxDisplay="true"
        </case>
        <case match="sony/model vrna">
          mobileDeviceManufacturer="Sony"
          mobileDeviceModel="CLIEPEG-TG50"
          canInitiateVoiceCall="false"
          canSendMail="true"
          ExchangeOmaSupported="true"
          inputType="keyboard"
          javascript="true"
          maximumRenderedPageSize="65000"
          preferredRenderingMime="text/html"
          preferredRenderingType="html32"
          requiresHtmlAdaptiveErrorReporting="true"
          requiresOutputOptimization="true"
          requiresPragmaNoCacheHeader="true"
          requiresUniqueFilePathSuffix="true"
          screenBitDepth="16"
          screenCharactersHeight="10"
          screenCharactersWidth="31"
          screenPixelsHeight="320"
          screenPixelsWidth="320"
          supportsAccessKeyAttribute="false"
          supportsImageSubmit="true"
          supportsMultilineTextboxDisplay="true"
        </case>
        <case match="MobilePhone (?'deviceModel'[^/]*)">
          mobileDeviceModel="${deviceModel}"
        </case>
        <case match="PDA; (?'deviceModel'[^/]*)">
          mobileDeviceModel="${deviceModel}"
          <case match="MM-8300">
            mobileDeviceManufacturer="Sanyo"
          </case>
          <case match="MM-7400">
            mobileDeviceManufacturer="Sanyo"
          </case>          
        </case>
        <case match="DTV;(?'deviceModel'[^/]*)">
          mobileDeviceModel="${deviceModel}"
        </case>
      </filter>
    </case>
  </filter>

  <use var="HTTP_UA_COLOR" as="UA_color" />
  <filter>
    <case match="mono2" with="%{UA_color}">
      isColor = "false"
      screenBitDepth = "2"
    </case>
    <case match="mono4" with="%{UA_color}">
      isColor = "false"
      screenBitDepth = "4"
    </case>
    <case match="color8" with="%{UA_color}">
      isColor = "true"
      screenBitDepth = "8"
    </case>
    <case match="color16" with="%{UA_color}">
      isColor = "true"
      screenBitDepth = "16"
    </case>
    <case match="color24" with="%{UA_color}">
      isColor = "true"
      screenBitDepth = "24"
    </case>
    <case match="color32" with="%{UA_color}">
      isColor = "true"
      screenBitDepth = "32"
    </case>
  </filter>

  <use var="HTTP_UA_PIXELS" as="UA_pixels" />
  <filter>
    <case match="(?'screenWidth'\d+)x(?'screenHeight'\d+)" with="%{UA_pixels}">
      screenPixelsWidth = ${screenWidth}
      screenPixelsHeight = ${screenHeight}
    </case>
  </filter>
  
  <use var="HTTP_UA_VOICE" as="UA_voice" />
  <filter>
    <case match="(?i:TRUE)" with="%{UA_voice}">
      canInitiateVoiceCall = "true"
    </case>
  </filter>
  
  <use var="HTTP_X_JPHONE_COLOR" as="x_jphone_color" />
  <filter>
    <case match="(?'colorIndicator'[CG])(?'bitDepth'\d+)" with="%{x_jphone_color}">
      <filter match="C" with="${colorIndicator}">
        isColor = "true"
      </filter>
      <filter>
        <case match="65536" with="${bitDepth}">
          screenBitDepth = "16"
        </case>
        <case match="256" with="${bitDepth}">
          screenBitDepth = "8"
        </case>
        <case match="4" with="${bitDepth}">
          screenBitDepth = "2"
        </case>
      </filter>
    </case>
  </filter>

  <use var="HTTP_X_JPHONE_DISPLAY" as="x_jphone_display" />
  <filter>
    <case match="(?'screenWidth'\d+)\*(?'screenHeight'\d+)" with="%{x_jphone_display}">
      screenPixelsWidth = ${screenWidth}
      screenPixelsHeight = ${screenHeight}
    </case>
  </filter>

  <use var="HTTP_X_GA_MAX_TRANSFER" as="x_ga_max_transfer" />
  <filter>
    <case match="(?'maxPageSize'\d+)" with="%{x_ga_max_transfer}">
      maximumRenderedPageSize = ${maxPageSize}
    </case>
  </filter>

  <use var="HTTP_X_GA_TABLES" as="x_ga_tables" />
  <filter>
    <case match="(?i:FALSE)" with="%{x_ga_tables}">
      tables = "false"
    </case>
    <case match="(?i:TRUE)" with="%{x_ga_tables}">
      tables = "true"
    </case>
  </filter>

  <use var="HTTP_X_UP_DEVCAP_CHARSET" as="x_up_devcap_charset" />
  <filter>
    <case match="(?i)^Shift_JIS$" with="%{x_up_devcap_charset}">
      <filter>
        <case match="Phone.com 3.x Browser" with="%{type}">
          <filter>
            <case match="^.[012]" with="%{minorVersion}">
              canSendMail = "true"
            </case>
          </filter>
        </case>
      </filter>
    </case>
  </filter>
  
  <!-- 
	Date:02-11-06
	I noticed that More and more Moble devices are including this Header
	This header contains a link to an xml file for browser capabilties.
  Which can be used later to determine browsers ability, since the url
  almost always points to a xml/rdf file, which can be used as another
  form of browser detection.
	-->
  <use var="HTTP_X_WAP_PROFILE" as="x_wap_profile"/>
  <use var="HTTP_Profile" as="Profile"/>
  <filter>
    <case match="(?'profile'http.+)" with="%{x_wap_profile}">
      isMobileDevice="true"
      crawler="false"
      xwapprofile=${profile}
    </case>
    <case match="(?'profile'http.+)" with="%{Profile}">
      isMobileDevice="true"
      crawler="false"
      xwapprofile=${profile}
    </case>
  </filter>

  <!-- 
  Date:06-25-06
  Some Robots/Crawlers will Identify themselves while
  spoofing by still giving there email address in the
  header [From]. Often Times it will include the common
  terms [Spider],[Crawler],[Bot] which we can use to mark
  the requester as a Crawler/Bot.
  -->
  <use var="HTTP_From" as="From"/>
  <filter>
    <case match="(?i-s:true)" with="%{crawler}">
      <!-- Do Nothing already noted as a spider-->
    </case>
    <case match="(?i-s:crawler)|(?i-s:spider)|(?i-s:bot)" with="%{From}">
      crawler="true"
    </case>
  </filter>
</browserCaps>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Founder CodeProject
Canada Canada
Chris Maunder is the co-founder of CodeProject and ContentLab.com, and has been a prominent figure in the software development community for nearly 30 years. Hailing from Australia, Chris has a background in Mathematics, Astrophysics, Environmental Engineering and Defence Research. His programming endeavours span everything from FORTRAN on Super Computers, C++/MFC on Windows, through to to high-load .NET web applications and Python AI applications on everything from macOS to a Raspberry Pi. Chris is a full-stack developer who is as comfortable with SQL as he is with CSS.

In the late 1990s, he and his business partner David Cunningham recognized the need for a platform that would facilitate knowledge-sharing among developers, leading to the establishment of CodeProject.com in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of CodeProject.com. Over the years, the website has grown into a vibrant community where programmers worldwide can connect, exchange ideas, and find solutions to coding challenges. Chris is a prolific contributor to the developer community through his articles and tutorials, and his latest passion project, CodeProject.AI.

In addition to his work with CodeProject.com, Chris co-founded ContentLab and DeveloperMedia, two projects focussed on helping companies make their Software Projects a success. Chris's roles included Product Development, Content Creation, Client Satisfaction and Systems Automation.

Comments and Discussions