private bool BlackberryProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"BlackBerry(?'deviceName'\w+)/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)"))
     {
         return false;
     }
     capabilities["layoutEngine"] = "BlackBerry";
     capabilities["browser"] = "BlackBerry";
     capabilities["majorversion"] = worker["${major}"];
     capabilities["minorversion"] = worker["${minor}"];
     capabilities["type"] = worker["BlackBerry${major}"];
     capabilities["mobileDeviceModel"] = worker["${deviceName}"];
     capabilities["isMobileDevice"] = "true";
     capabilities["version"] = worker["${version}"];
     capabilities["ecmascriptversion"] = "3.0";
     capabilities["javascript"] = "true";
     capabilities["javascriptversion"] = "1.3";
     capabilities["w3cdomversion"] = "1.0";
     capabilities["supportsAccesskeyAttribute"] = "true";
     capabilities["tagwriter"] = "System.Web.UI.HtmlTextWriter";
     capabilities["cookies"] = "true";
     capabilities["frames"] = "true";
     capabilities["javaapplets"] = "true";
     capabilities["supportsCallback"] = "true";
     capabilities["supportsDivNoWrap"] = "false";
     capabilities["supportsFileUpload"] = "true";
     capabilities["supportsMultilineTextBoxDisplay"] = "true";
     capabilities["supportsXmlHttp"] = "true";
     capabilities["tables"] = "true";
     capabilities["canInitiateVoiceCall"] = "true";
     browserCaps.AddBrowser("BlackBerry");
     this.BlackberryProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.BlackberryProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 public override void AddBrowser(string browserName)
 {
     w.AddBrowser(browserName);
 }
 private bool OperaProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"Opera[ /](?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))"))
     {
         return false;
     }
     worker.ProcessRegex(browserCaps[string.Empty], @"Presto/(?'layoutVersion'\d+)");
     capabilities["browser"] = "Opera";
     capabilities["majorversion"] = worker["${major}"];
     capabilities["minorversion"] = worker["${minor}"];
     capabilities["type"] = worker["Opera${major}"];
     capabilities["version"] = worker["${version}"];
     capabilities["layoutEngine"] = "Presto";
     capabilities["layoutEngineVersion"] = worker["${layoutVersion}"];
     capabilities["ecmascriptversion"] = "3.0";
     capabilities["javascript"] = "true";
     capabilities["javascriptversion"] = "1.5";
     capabilities["letters"] = worker["${letters}"];
     capabilities["w3cdomversion"] = "1.0";
     capabilities["tagwriter"] = "System.Web.UI.HtmlTextWriter";
     capabilities["cookies"] = "true";
     capabilities["frames"] = "true";
     capabilities["javaapplets"] = "true";
     capabilities["supportsAccesskeyAttribute"] = "true";
     capabilities["supportsCallback"] = "true";
     capabilities["supportsFileUpload"] = "true";
     capabilities["supportsMultilineTextBoxDisplay"] = "true";
     capabilities["supportsXmlHttp"] = "true";
     capabilities["tables"] = "true";
     capabilities["inputType"] = "keyboard";
     capabilities["isColor"] = "true";
     capabilities["isMobileDevice"] = "false";
     capabilities["maximumRenderedPageSize"] = "300000";
     capabilities["screenBitDepth"] = "8";
     capabilities["supportsBold"] = "true";
     capabilities["supportsCss"] = "true";
     capabilities["supportsDivNoWrap"] = "true";
     capabilities["supportsFontName"] = "true";
     capabilities["supportsFontSize"] = "true";
     capabilities["supportsImageSubmit"] = "true";
     capabilities["supportsItalic"] = "true";
     browserCaps.AddBrowser("Opera");
     this.OperaProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (!this.Opera8to9Process(headers, browserCaps) && !this.Opera10Process(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.OperaProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Opera8to9Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = (string) capabilities["majorversion"];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "[8-9]"))
     {
         return false;
     }
     target = (string) capabilities["Version"];
     if (worker.ProcessRegex(target, "9.80"))
     {
         return false;
     }
     capabilities["supportsMaintainScrollPositionOnPostback"] = "true";
     browserCaps.AddBrowser("Opera8to9");
     this.Opera8to9ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.Opera8to9ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Opera10Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"Opera/10\.|Version/10\."))
     {
         return false;
     }
     capabilities["version"] = "10.00";
     capabilities["majorversion"] = "10";
     capabilities["minorversion"] = "00";
     capabilities["supportsMaintainScrollPositionOnPostback"] = "true";
     browserCaps.AddBrowser("Opera10");
     this.Opera10ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.Opera10ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool MozillaProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "Mozilla"))
     {
         return false;
     }
     capabilities["browser"] = "Mozilla";
     capabilities["cookies"] = "false";
     capabilities["inputType"] = "keyboard";
     capabilities["isColor"] = "true";
     capabilities["isMobileDevice"] = "false";
     capabilities["maximumRenderedPageSize"] = "300000";
     capabilities["screenBitDepth"] = "8";
     capabilities["supportsBold"] = "true";
     capabilities["supportsCss"] = "true";
     capabilities["supportsDivNoWrap"] = "true";
     capabilities["supportsFontName"] = "true";
     capabilities["supportsFontSize"] = "true";
     capabilities["supportsImageSubmit"] = "true";
     capabilities["supportsItalic"] = "true";
     capabilities["type"] = "Mozilla";
     browserCaps.AddBrowser("Mozilla");
     this.MozillaProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (((!this.IeProcess(headers, browserCaps) && !this.ChromeProcess(headers, browserCaps)) && (!this.FirefoxProcess(headers, browserCaps) && !this.IemobileProcess(headers, browserCaps))) && !this.SafariProcess(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.MozillaProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool IeProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"MSIE (?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)"))
     {
         return false;
     }
     target = browserCaps[string.Empty];
     if (worker.ProcessRegex(target, "IEMobile"))
     {
         return false;
     }
     worker.ProcessRegex(browserCaps[string.Empty], @"Trident/(?'layoutVersion'\d+)");
     capabilities["browser"] = "IE";
     capabilities["layoutEngine"] = "Trident";
     capabilities["layoutEngineVersion"] = worker["${layoutVersion}"];
     capabilities["extra"] = worker["${extra}"];
     capabilities["isColor"] = "true";
     capabilities["letters"] = worker["${letters}"];
     capabilities["majorversion"] = worker["${major}"];
     capabilities["minorversion"] = worker["${minor}"];
     capabilities["screenBitDepth"] = "8";
     capabilities["type"] = worker["IE${major}"];
     capabilities["version"] = worker["${version}"];
     browserCaps.AddBrowser("IE");
     this.IeProcessGateways(headers, browserCaps);
     this.IebetaProcess(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (!this.Ie6to9Process(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.IeProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool IemobileProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"IEMobile.(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)"))
     {
         return false;
     }
     worker.ProcessRegex(browserCaps[string.Empty], @"MSIE (?'msieMajorVersion'\d+)");
     capabilities["layoutEngine"] = "Trident";
     capabilities["browser"] = "IEMobile";
     capabilities["majorversion"] = worker["${major}"];
     capabilities["minorversion"] = worker["${minor}"];
     capabilities["type"] = worker["IEMobile${msieMajorVersion}"];
     capabilities["isMobileDevice"] = "true";
     capabilities["version"] = worker["${version}"];
     capabilities["ecmascriptversion"] = "3.0";
     capabilities["jscriptversion"] = "5.6";
     capabilities["javascript"] = "true";
     capabilities["javascriptversion"] = "1.5";
     capabilities["msdomversion"] = worker["${majorversion}.${minorversion}"];
     capabilities["w3cdomversion"] = "1.0";
     capabilities["supportsAccesskeyAttribute"] = "true";
     capabilities["tagwriter"] = "System.Web.UI.HtmlTextWriter";
     capabilities["cookies"] = "true";
     capabilities["frames"] = "true";
     capabilities["javaapplets"] = "true";
     capabilities["supportsCallback"] = "true";
     capabilities["supportsDivNoWrap"] = "false";
     capabilities["supportsFileUpload"] = "true";
     capabilities["supportsMultilineTextBoxDisplay"] = "true";
     capabilities["supportsXmlHttp"] = "true";
     capabilities["tables"] = "true";
     capabilities["vbscript"] = "true";
     capabilities["inputType"] = "virtualKeyboard";
     capabilities["numberOfSoftkeys"] = "2";
     browserCaps.AddBrowser("IEMobile");
     this.IemobileProcessGateways(headers, browserCaps);
     this.MonoProcess(headers, browserCaps);
     this.PixelsProcess(headers, browserCaps);
     this.OsProcess(headers, browserCaps);
     this.CpuProcess(headers, browserCaps);
     this.VoiceProcess(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.IemobileProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Ie8Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = (string) capabilities["majorversion"];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "8"))
     {
         return false;
     }
     capabilities["jscriptversion"] = "6.0";
     browserCaps.AddBrowser("IE8");
     this.Ie8ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.Ie8ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool ChromeProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"Chrome/(?'version'(?'major'\d+)(\.(?'minor'\d+)?)\w*)"))
     {
         return false;
     }
     worker.ProcessRegex(browserCaps[string.Empty], @"AppleWebKit/(?'layoutVersion'\d+)");
     capabilities["layoutEngine"] = "WebKit";
     capabilities["layoutEngineVersion"] = worker["${layoutVersion}"];
     capabilities["browser"] = "Chrome";
     capabilities["majorversion"] = worker["${major}"];
     capabilities["minorversion"] = worker["${minor}"];
     capabilities["type"] = worker["Chrome${major}"];
     capabilities["version"] = worker["${version}"];
     capabilities["ecmascriptversion"] = "3.0";
     capabilities["javascript"] = "true";
     capabilities["javascriptversion"] = "1.7";
     capabilities["w3cdomversion"] = "1.0";
     capabilities["supportsAccesskeyAttribute"] = "true";
     capabilities["tagwriter"] = "System.Web.UI.HtmlTextWriter";
     capabilities["cookies"] = "true";
     capabilities["frames"] = "true";
     capabilities["javaapplets"] = "true";
     capabilities["supportsCallback"] = "true";
     capabilities["supportsDivNoWrap"] = "false";
     capabilities["supportsFileUpload"] = "true";
     capabilities["supportsMaintainScrollPositionOnPostback"] = "true";
     capabilities["supportsMultilineTextBoxDisplay"] = "true";
     capabilities["supportsXmlHttp"] = "true";
     capabilities["tables"] = "true";
     browserCaps.AddBrowser("Chrome");
     this.ChromeProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.ChromeProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Ie6to9Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = (string) capabilities["majorversion"];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"[6-9]|[1-9]\d+"))
     {
         return false;
     }
     capabilities["ecmascriptversion"] = "3.0";
     capabilities["jscriptversion"] = "5.6";
     capabilities["javascript"] = "true";
     capabilities["javascriptversion"] = "1.5";
     capabilities["msdomversion"] = worker["${majorversion}.${minorversion}"];
     capabilities["w3cdomversion"] = "1.0";
     capabilities["ExchangeOmaSupported"] = "true";
     capabilities["activexcontrols"] = "true";
     capabilities["backgroundsounds"] = "true";
     capabilities["cookies"] = "true";
     capabilities["frames"] = "true";
     capabilities["javaapplets"] = "true";
     capabilities["supportsCallback"] = "true";
     capabilities["supportsFileUpload"] = "true";
     capabilities["supportsMultilineTextBoxDisplay"] = "true";
     capabilities["supportsMaintainScrollPositionOnPostback"] = "true";
     capabilities["supportsVCard"] = "true";
     capabilities["supportsXmlHttp"] = "true";
     capabilities["tables"] = "true";
     capabilities["supportsAccessKeyAttribute"] = "true";
     capabilities["tagwriter"] = "System.Web.UI.HtmlTextWriter";
     capabilities["vbscript"] = "true";
     browserCaps.AddBrowser("IE6to9");
     this.Ie6to9ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (!this.Ie7Process(headers, browserCaps) && !this.Ie8Process(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.Ie6to9ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool GenericdownlevelProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "^Generic Downlevel$"))
     {
         return false;
     }
     capabilities["cookies"] = "false";
     capabilities["ecmascriptversion"] = "1.0";
     capabilities["tables"] = "true";
     capabilities["type"] = "Downlevel";
     browserCaps.Adapters["System.Web.UI.WebControls.Menu, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"] = "System.Web.UI.WebControls.Adapters.MenuAdapter";
     browserCaps.AddBrowser("GenericDownlevel");
     this.GenericdownlevelProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.GenericdownlevelProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Firefox3Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = (string) capabilities["majorversion"];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, @"[3-9]|[1-9]\d+"))
     {
         return false;
     }
     capabilities["javascriptversion"] = "1.8";
     capabilities["supportsMaintainScrollPositionOnPostback"] = "true";
     browserCaps.AddBrowser("Firefox3");
     this.Firefox3ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (!this.Firefox35Process(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.Firefox3ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool Firefox35Process(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     string target = (string) browserCaps.Capabilities["minorversion"];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "^[5-9]"))
     {
         return false;
     }
     browserCaps.AddBrowser("Firefox35");
     this.Firefox35ProcessGateways(headers, browserCaps);
     bool ignoreApplicationBrowsers = false;
     this.Firefox35ProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool DefaultProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     capabilities["activexcontrols"] = "false";
     capabilities["aol"] = "false";
     capabilities["backgroundsounds"] = "false";
     capabilities["beta"] = "false";
     capabilities["browser"] = "Unknown";
     capabilities["canCombineFormsInDeck"] = "true";
     capabilities["canInitiateVoiceCall"] = "false";
     capabilities["canRenderAfterInputOrSelectElement"] = "true";
     capabilities["canRenderEmptySelects"] = "true";
     capabilities["canRenderInputAndSelectElementsTogether"] = "true";
     capabilities["canRenderMixedSelects"] = "true";
     capabilities["canRenderOneventAndPrevElementsTogether"] = "true";
     capabilities["canRenderPostBackCards"] = "true";
     capabilities["canRenderSetvarZeroWithMultiSelectionList"] = "true";
     capabilities["canSendMail"] = "true";
     capabilities["cdf"] = "false";
     capabilities["cookies"] = "true";
     capabilities["crawler"] = "false";
     capabilities["defaultSubmitButtonLimit"] = "1";
     capabilities["ecmascriptversion"] = "0.0";
     capabilities["frames"] = "false";
     capabilities["gatewayMajorVersion"] = "0";
     capabilities["gatewayMinorVersion"] = "0";
     capabilities["gatewayVersion"] = "None";
     capabilities["hasBackButton"] = "true";
     capabilities["hidesRightAlignedMultiselectScrollbars"] = "false";
     capabilities["inputType"] = "telephoneKeypad";
     capabilities["isColor"] = "false";
     capabilities["isMobileDevice"] = "false";
     capabilities["javaapplets"] = "false";
     capabilities["jscriptversion"] = "0.0";
     capabilities["javascript"] = "false";
     capabilities["majorversion"] = "0";
     capabilities["maximumHrefLength"] = "10000";
     capabilities["maximumRenderedPageSize"] = "2000";
     capabilities["maximumSoftkeyLabelLength"] = "5";
     capabilities["minorversion"] = "0";
     capabilities["mobileDeviceManufacturer"] = "Unknown";
     capabilities["mobileDeviceModel"] = "Unknown";
     capabilities["msdomversion"] = "0.0";
     capabilities["numberOfSoftkeys"] = "0";
     capabilities["platform"] = "Unknown";
     capabilities["preferredImageMime"] = "image/gif";
     capabilities["preferredRenderingMime"] = "text/html";
     capabilities["preferredRenderingType"] = "html32";
     capabilities["rendersBreakBeforeWmlSelectAndInput"] = "false";
     capabilities["rendersBreaksAfterHtmlLists"] = "true";
     capabilities["rendersBreaksAfterWmlAnchor"] = "false";
     capabilities["rendersBreaksAfterWmlInput"] = "false";
     capabilities["rendersWmlDoAcceptsInline"] = "true";
     capabilities["rendersWmlSelectsAsMenuCards"] = "false";
     capabilities["requiredMetaTagNameValue"] = "";
     capabilities["requiresAbsolutePostbackUrl"] = "false";
     capabilities["requiresAdaptiveErrorReporting"] = "false";
     capabilities["requiresAttributeColonSubstitution"] = "false";
     capabilities["requiresContentTypeMetaTag"] = "false";
     capabilities["requiresControlStateInSession"] = "false";
     capabilities["requiresDBCSCharacter"] = "false";
     capabilities["requiresFullyQualifiedRedirectUrl"] = "false";
     capabilities["requiresLeadingPageBreak"] = "false";
     capabilities["requiresNoBreakInFormatting"] = "false";
     capabilities["requiresOutputOptimization"] = "false";
     capabilities["requiresPhoneNumbersAsPlainText"] = "false";
     capabilities["requiresPostRedirectionHandling"] = "false";
     capabilities["requiresSpecialViewStateEncoding"] = "false";
     capabilities["requiresUniqueFilePathSuffix"] = "false";
     capabilities["requiresUniqueHtmlCheckboxNames"] = "false";
     capabilities["requiresUniqueHtmlInputNames"] = "false";
     capabilities["requiresUrlEncodedPostfieldValues"] = "false";
     capabilities["requiresXhtmlCssSuppression"] = "false";
     capabilities["screenBitDepth"] = "1";
     capabilities["supportsAccesskeyAttribute"] = "false";
     capabilities["supportsBodyColor"] = "true";
     capabilities["supportsBold"] = "false";
     capabilities["supportsCallback"] = "false";
     capabilities["supportsCacheControlMetaTag"] = "true";
     capabilities["supportsCss"] = "false";
     capabilities["supportsDivAlign"] = "true";
     capabilities["supportsDivNoWrap"] = "false";
     capabilities["supportsEmptyStringInCookieValue"] = "true";
     capabilities["supportsFileUpload"] = "false";
     capabilities["supportsFontColor"] = "true";
     capabilities["supportsFontName"] = "false";
     capabilities["supportsFontSize"] = "false";
     capabilities["supportsImageSubmit"] = "false";
     capabilities["supportsIModeSymbols"] = "false";
     capabilities["supportsInputIStyle"] = "false";
     capabilities["supportsInputMode"] = "false";
     capabilities["supportsItalic"] = "false";
     capabilities["supportsJPhoneMultiMediaAttributes"] = "false";
     capabilities["supportsJPhoneSymbols"] = "false";
     capabilities["SupportsMaintainScrollPositionOnPostback"] = "false";
     capabilities["supportsMultilineTextBoxDisplay"] = "false";
     capabilities["supportsQueryStringInFormAction"] = "true";
     capabilities["supportsRedirectWithCookie"] = "true";
     capabilities["supportsSelectMultiple"] = "true";
     capabilities["supportsUncheck"] = "true";
     capabilities["supportsVCard"] = "false";
     capabilities["tables"] = "false";
     capabilities["tagwriter"] = "System.Web.UI.Html32TextWriter";
     capabilities["type"] = "Unknown";
     capabilities["vbscript"] = "false";
     capabilities["version"] = "0.0";
     capabilities["w3cdomversion"] = "0.0";
     capabilities["win16"] = "false";
     capabilities["win32"] = "false";
     browserCaps.AddBrowser("Default");
     this.DefaultProcessGateways(headers, browserCaps);
     this.CrawlerProcess(headers, browserCaps);
     this.PlatformProcess(headers, browserCaps);
     this.WinProcess(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if ((!this.BlackberryProcess(headers, browserCaps) && !this.OperaProcess(headers, browserCaps)) && (!this.GenericdownlevelProcess(headers, browserCaps) && !this.MozillaProcess(headers, browserCaps)))
     {
         ignoreApplicationBrowsers = false;
     }
     this.DefaultProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }
 private bool SafariProcess(NameValueCollection headers, HttpBrowserCapabilities browserCaps)
 {
     IDictionary capabilities = browserCaps.Capabilities;
     string target = browserCaps[string.Empty];
     RegexWorker worker = new RegexWorker(browserCaps);
     if (!worker.ProcessRegex(target, "Safari"))
     {
         return false;
     }
     target = browserCaps[string.Empty];
     if (worker.ProcessRegex(target, "Chrome"))
     {
         return false;
     }
     worker.ProcessRegex(browserCaps[string.Empty], @"AppleWebKit/(?'layoutVersion'\d+)");
     capabilities["layoutEngine"] = "WebKit";
     capabilities["layoutEngineVersion"] = worker["${layoutVersion}"];
     capabilities["browser"] = "Safari";
     capabilities["type"] = "Safari";
     browserCaps.AddBrowser("Safari");
     this.SafariProcessGateways(headers, browserCaps);
     this.IphoneProcess(headers, browserCaps);
     this.IpodProcess(headers, browserCaps);
     bool ignoreApplicationBrowsers = true;
     if (!this.Safari3to4Process(headers, browserCaps))
     {
         ignoreApplicationBrowsers = false;
     }
     this.SafariProcessBrowsers(ignoreApplicationBrowsers, headers, browserCaps);
     return true;
 }