Useragent:

Warning: Cannot modify header information - headers already sent by (output started at /d2/httpd/php/51Degrees-PHP-3.1.5.1/example/Tester.php:27) in /d2/httpd/php/51Degrees-PHP-3.1.5.1/core/51Degrees_data_reader.php on line 1267

IsMobile: False

ScreenPixelsWidth: 0

ScreenPixelsHeight: 0

IsEmulatingDesktop: Unknown

LayoutEngine: Unknown

CssColumn: False

CssTransitions: True

AnimationTiming: True

BlobBuilder: True

CssBackground: True

CssBorderImage: True

CssCanvas: False

CssColor: True

CssFlexbox: True

CssFont: True

CssImages: True

CssMediaQueries: True

CssMinMax: True

CssOverflow: True

CssPosition: True

CssText: True

CssTransforms: True

CssUI: True

DataSet: True

DataUrl: True

DeviceOrientation: True

FileReader: True

FileSaver: False

FileWriter: False

FormData: True

Fullscreen: True

GeoLocation: True

History: True

Html-Media-Capture: True

Html5: True

Iframe: True

IndexedDB: True

Json: True

PostMessage: True

Progress: True

Prompts: True

Selector: True

Svg: True

TouchEvents: True

Track: True

Video: True

Viewport: True

WebWorkers: True

Xhr2: True

Masking: True

Canvas: True

JavascriptImageOptimiser: function FODIO(width_param, height_param) { var src_parameter = "src"; var width_parameter = "w"; if (typeof width_param !== "undefined") { width_parameter = width_param; } var height_parameter = "h"; if (typeof height_param !== "undefined") { height_parameter = height_param; } var auto_parameter = "auto"; //* (LoadImage) Loads the image based on measurements taken within the browser. */ function setImage(image_element, image_src) { // Get the query string parameters for the image element src. var qs = (function (a) { var b = {}; if (a != "") { for (var i = 0; i < a.length; ++i) { var p = a[i].split('='); if (p.length != 2) continue; b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " ")); } } return b; })(image_src.split(/[&\?]+/)); // Does the control have a 1 by 1 image displayed? var startWithParent = (image_element.parentNode.nodeName == "A" || (image_element.offsetWidth == 1 && image_element.offsetHeight == 1)); // Get the width of the image. var width = qs[width_parameter]; if (width != undefined && isNaN(width)) { width = getWidth(startWithParent ? image_element.parentNode : image_element); if (startWithParent) image_element.parentNode.style.width = width + "px"; } // Get the height of the image. var height = qs[height_parameter]; if (height != undefined && isNaN(height)) { height = getHeight(startWithParent ? image_element.parentNode : image_element); if (startWithParent) image_element.parentNode.style.height = height + "px"; } // Change the image source to the selected width and height. var parameters = []; if (width > 0) parameters.push(width_parameter + "=" + width); if (height > 0) parameters.push(height_parameter + "=" + height); if(qs[src_parameter] != undefined) parameters.push(src_parameter + "=" + qs[src_parameter]); image_element.src = image_src.substring(0, image_src.indexOf("?")) + "?" + parameters.join("&"); } function getWidth(element) { if (element != undefined) { if (element.nodeName != "A" && element.offsetWidth != 0) return element.offsetWidth; return getWidth(element.parentNode); } return 0; } function getHeight(element) { if (element != undefined) { if (element.nodeName != "A" && element.offsetHeight != 0) return element.offsetHeight; return getHeight(element.parentNode); } return 0; } function setImageSource(image_element, image_src) { if (image_src.indexOf("?") >= 0 && ( image_src.indexOf(width_parameter + "=" + auto_parameter, image_src.indexOf("?")) >= 0 || image_src.indexOf(height_parameter + "=" + auto_parameter, image_src.indexOf("?")) >= 0)) { setImage(image_element, image_src); return true; } return false; } // Loop through all the img elements finding any with the data src // attribute set. var images = document.getElementsByTagName("img"); for (var i = 0, max = images.length; i < max; i++) { var image_element = images[i]; if (!setImageSource(image_element, image_element.src)) { var data_src = image_element.attributes["data-src"]; if (data_src != undefined) { setImageSource(image_element, data_src.value); } } } }

BrowserPropertySource: RingMark

DeviceId: 15364-17017-17470-18092

SignaturesChecked: 2

Method: closest

Confidence: 0

Time: 0.023581981658936

debug_timings - node_match_time: 0.0085151195526123

debug_timings - signature_match_time: 0.01244592666626

debug_timings - numeric_match_time: 0.01154613494873

debug_timings - get_closest_sigs_time: 8.392333984375E-5

debug_timings - closest_match_node_sort_time: 5.9604644775391E-6

debug_timings - closest_match_node_fill_signatures_time: 3.9100646972656E-5

debug_timings - closest_match_filling_linked_list_time: 1.0967254638672E-5

debug_timings - closest_match_sorting_signature_ranks: 2.8610229492188E-6

debug_timings - get_sig_from_rank_time: 1.5974044799805E-5

debug_timings - eval_nearest_sigs_time: 8.2015991210938E-5

debug_timings - nearest_match_evaluate_signatures: 7.9870223999023E-5

debug_timings - eval_closest_sigs_time: 0.00030279159545898

debug_timings - closest_match_evaluate_signatures: 0.00030183792114258

debug_timings - profile_fetch_time: 8.1777572631836E-5

debug_timings - property_fetch_time: 0.0024881362915039

debug_info - root_nodes_evaluated: 154

debug_info - nodes_evaluated: 954

debug_info - string_read: 51

debug_info - signatures_read: 35

debug_info - signatures_compared: 2

debug_info - difference: 2

debug_info - signature_string: Python-urllib______AppEngine_Google____http://code.google.com/appengine______________bot

DataFile: /d2/httpd/php/51Degrees-PHP-3.1.5.1/core/51Degrees-Lite.dat