diff options
author | Alex Xu <alex_y_xu@yahoo.ca> | 2014-01-27 21:54:29 -0500 |
---|---|---|
committer | Alex Xu <alex_y_xu@yahoo.ca> | 2014-01-27 21:55:17 -0500 |
commit | 86b9f9a40a1549d275dc8a57bf192b97c6954eed (patch) | |
tree | e809770831fb651e317b8971afc9a44a72579772 | |
parent | 57d8ff65e38a056f96d82aba545aa2600f30751b (diff) | |
download | html5ks-86b9f9a40a1549d275dc8a57bf192b97c6954eed.tar.xz html5ks-86b9f9a40a1549d275dc8a57bf192b97c6954eed.zip |
Fix off-by-one error, update modernizr.
-rw-r--r-- | www/js/api.js | 1 | ||||
-rw-r--r-- | www/js/lib/modernizr-build.js | 1612 | ||||
-rw-r--r-- | www/js/lib/modernizr-build.min.js | 4 |
3 files changed, 153 insertions, 1464 deletions
diff --git a/www/js/api.js b/www/js/api.js index 74971ae..04267d3 100644 --- a/www/js/api.js +++ b/www/js/api.js @@ -37,6 +37,7 @@ window.html5ks.api = new (function () { var deferred = when.defer(); var i = 0; var _nextType = function () { + i++; for (; i < types.length; i++) { var type = types[i]; if (el.canPlayType(type[0])) { diff --git a/www/js/lib/modernizr-build.js b/www/js/lib/modernizr-build.js index 6349009..76f51c4 100644 --- a/www/js/lib/modernizr-build.js +++ b/www/js/lib/modernizr-build.js @@ -1701,26 +1701,6 @@ ModernizrProto['load'] = function() { ; /*! { - "name": "a[download] Attribute", - "property": "adownload", - "caniuse" : "download", - "tags": ["media", "attribute"], - "notes": [{ - "name": "WhatWG Reference", - "href": "http://developers.whatwg.org/links.html#downloading-resources" - }] -} -!*/ -/* DOC - -When used on an `<a>`, this attribute signifies that the resource it points to should be downloaded by the browser rather than navigating to it. - -*/ - - Modernizr.addTest('adownload', !window.externalHost && 'download' in createElement('a')); - -/*! -{ "name": "Application Cache", "property": "applicationcache", "caniuse": "offline-apps", @@ -1754,16 +1734,6 @@ The API has been [heavily criticized](http://alistapart.com/article/application- /*! { - "name": "Audio Preload Attribute", - "property": "audiopreload", - "tags": ["audio", "media"] -} -!*/ - - Modernizr.addTest('audiopreload', 'preload' in createElement('audio')); - -/*! -{ "name" : "HTML5 Audio Element", "property": "audio", "aliases" : [], @@ -1883,59 +1853,6 @@ Detects support for the text APIs for `<canvas>` elements. /*! { - "name": "Content Editable", - "property": "contenteditable", - "caniuse": "contenteditable", - "notes": [{ - "name": "WHATWG spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#contenteditable" - }] -} -!*/ -/* DOC - -Detects support for the `contenteditable` attribute of elements, allowing their DOM text contents to be edited directly by the user. - -*/ - - Modernizr.addTest('contenteditable', function() { - // early bail out - if (!('contentEditable' in docElement)) return; - - // some mobile browsers (android < 3.0, iOS < 5) claim to support - // contentEditable, but but don't really. This test checks to see - // confirms wether or not it actually supports it. - - var div = createElement('div'); - div.contentEditable = true; - return div.contentEditable === 'true'; - }); - -/*! -{ - "name": "Content Security Policy", - "property": "contentsecuritypolicy", - "caniuse": "contentsecuritypolicy", - "tags": ["security"], - "notes": [{ - "name": "W3C spec", - "href": "http://www.w3.org/TR/CSP/" - },{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/Security/CSP" - }] -} -!*/ -/* DOC - -Detects support for the Content Security Policy protocol for mitigating and reporting security attacks. - -*/ - - Modernizr.addTest('contentsecuritypolicy', ('securityPolicy' in document || 'SecurityPolicy' in document)); - -/*! -{ "name": "Context menus", "property": "contextmenu", "caniuse": "menu", @@ -2117,33 +2034,6 @@ Detects whether cookie support is enabled. /*! { - "name": "CSS Background Clip Text", - "property": "backgroundcliptext", - "authors": ["ausi"], - "tags": ["css"], - "notes": [ - { - "name": "CSS Tricks Article", - "href": "http://css-tricks.com/image-under-text/" - }, - { - "name": "MDN Docs", - "href": "http://developer.mozilla.org/en/CSS/background-clip" - }, - { - "name": "Related Github Issue", - "href": "http://github.com/Modernizr/Modernizr/issues/199" - } - ] -} -!*/ - - Modernizr.addTest('backgroundcliptext', function() { - return testAllProps('backgroundClip', 'text'); - }); - -/*! -{ "name": "Background Position Shorthand", "property": "bgpositionshorthand", "tags": ["css"], @@ -2276,7 +2166,10 @@ Detects whether cookie support is enabled. "property": "boxshadow", "caniuse": "css-boxshadow", "tags": ["css"], - "knownBugs": ["WebOS false positives on this test."] + "knownBugs": [ + "WebOS false positives on this test.", + "The Kindle Silk browser false positives" + ] } !*/ @@ -2493,6 +2386,28 @@ More testing neccessary perhaps. /*! { + "name": "CSS.escape()", + "property": "cssescape", + "polyfills": [ + "css-escape" + ], + "tags": [ + "css", + "cssom" + ] +} +!*/ +/* DOC + +Tests for `CSS.escape()` support. + +*/ + + var CSS = window.CSS; + Modernizr.addTest('cssescape', CSS ? typeof CSS.escape == 'function' : false); + +/*! +{ "name": "CSS Filters", "property": "cssfilters", "caniuse": "css-filters", @@ -3500,20 +3415,7 @@ Test for CSS 3 UI "resize" property } !*/ - Modernizr.addTest('shapes', function () { - var prefixedProperty = prefixed('shapeOutside'); - - if (!prefixedProperty) - return false; - - var shapeOutsideProperty = prefixedProperty.replace(/([A-Z])/g, function (str, m1) { return '-' + m1.toLowerCase(); }).replace(/^ms-/, '-ms-'); - - return testStyles('#modernizr { float: left; ' + shapeOutsideProperty + ':rectangle(0,0,0,0,0,0) }', function (elem) { - // Check against computed value - var styleObj = window.getComputedStyle ? getComputedStyle(elem, null) : elem.currentStyle; - return styleObj[prefixed('shapeOutside', docElement.style, false)] == 'rectangle(0px, 0px, 0px, 0px, 0px, 0px)'; - }); - }); + Modernizr.addTest('shapes', testAllProps('shapeOutside', 'content-box', true)); /*! { @@ -3721,180 +3623,6 @@ Detects support for `transform-style: preserve-3d`, for getting a proper 3D pers /*! { - "name": "CSS vh unit", - "property": "cssvhunit", - "caniuse": "viewport-units", - "tags": ["css"], - "notes": [{ - "name": "Related Modernizr Issue", - "href": "https://github.com/Modernizr/Modernizr/issues/572" - },{ - "name": "Similar JSFiddle", - "href": "http://jsfiddle.net/FWeinb/etnYC/" - }] -} -!*/ - - testStyles('#modernizr { height: 50vh; }', function( elem ) { - var height = parseInt(window.innerHeight/2,10); - var compStyle = parseInt((window.getComputedStyle ? - getComputedStyle(elem, null) : - elem.currentStyle)['height'],10); - Modernizr.addTest('cssvhunit', compStyle == height); - }); - -/*! -{ - "name": "CSS vmax unit", - "property": "cssvmaxunit", - "caniuse": "viewport-units", - "tags": ["css"], - "notes": [{ - "name": "Related Modernizr Issue", - "href": "https://github.com/Modernizr/Modernizr/issues/572" - },{ - "name": "JSFiddle Example", - "href": "http://jsfiddle.net/glsee/JDsWQ/4/" - }] -} -!*/ - - testStyles('#modernizr { width: 50vmax; }', function( elem ) { - var one_vw = docElement.clientWidth/100; - var one_vh = docElement.clientHeight/100; - var compWidth = parseInt((window.getComputedStyle ? - getComputedStyle(elem, null) : - elem.currentStyle)['width'],10); - Modernizr.addTest('cssvmaxunit', parseInt(Math.max(one_vw, one_vh)*50,10) == compWidth ); - }); - -/*! -{ - "name": "CSS vmin unit", - "property": "cssvminunit", - "caniuse": "viewport-units", - "tags": ["css"], - "notes": [{ - "name": "Related Modernizr Issue", - "href": "https://github.com/Modernizr/Modernizr/issues/572" - },{ - "name": "JSFiddle Example", - "href": "http://jsfiddle.net/glsee/JRmdq/8/" - }] -} -!*/ - - testStyles('#modernizr { width: 50vmin; }', function( elem ) { - var one_vw = docElement.clientWidth/100; - var one_vh = docElement.clientHeight/100; - var compWidth = parseInt((window.getComputedStyle ? - getComputedStyle(elem, null) : - elem.currentStyle)['width'],10); - Modernizr.addTest('cssvminunit', parseInt(Math.min(one_vw, one_vh)*50,10) == compWidth ); - }); - -/*! -{ - "name": "CSS vw unit", - "property": "cssvwunit", - "caniuse": "viewport-units", - "tags": ["css"], - "notes": [{ - "name": "Related Modernizr Issue", - "href": "https://github.com/Modernizr/Modernizr/issues/572" - },{ - "name": "JSFiddle Example", - "href": "http://jsfiddle.net/FWeinb/etnYC/" - }] -} -!*/ - - testStyles('#modernizr { width: 50vw; }', function( elem ) { - var width = parseInt(docElement.innerWidth/2,10); - var compStyle = parseInt((window.getComputedStyle ? - getComputedStyle(elem, null) : - elem.currentStyle)['width'],10); - - Modernizr.addTest('cssvwunit', compStyle == width); - }); - -/*! -{ - "name": "CSS wrap-flow", - "property": "wrapflow", - "tags": ["css"], - "notes": [ - "This is a separate test from the rest of CSS Exclusions as as IE10 has just implemented this alone.", - { - "name": "W3C Exclusions spec", - "href": "http://www.w3.org/TR/css3-exclusions" - }, - { - "name": "Example by Adobe", - "href": "http://html.adobe.com/webstandards/cssexclusions" - } - ] -} -!*/ - - Modernizr.addTest('wrapflow', function () { - var prefixedProperty = prefixed('wrapFlow'); - if (!prefixedProperty) - return false; - - var wrapFlowProperty = prefixedProperty.replace(/([A-Z])/g, function (str, m1) { return '-' + m1.toLowerCase(); }).replace(/^ms-/, '-ms-'); - - /* If the CSS parsing is there we need to determine if wrap-flow actually works to avoid false positive cases, e.g. the browser parses - the property, but it hasn't got the implementation for the functionality yet. */ - var container = createElement('div'); - var exclusion = createElement('div'); - var content = createElement('span'); - - /* First we create a div with two adjacent divs inside it. The first div will be the content, the second div will be the exclusion area. - We use the "wrap-flow: end" property to test the actual behavior. (http://dev.w3.org/csswg/css3-exclusions/#wrap-flow-property) - The wrap-flow property is applied to the exclusion area what has a 50px left offset and a 100px width. - If the wrap-flow property is working correctly then the content should start after the exclusion area, so the content's left offset should be 150px. */ - exclusion.style.cssText = 'position: absolute; left: 50px; width: 100px; height: 20px;' + wrapFlowProperty + ':end;'; - content.innerText = 'X'; - - container.appendChild(exclusion); - container.appendChild(content); - docElement.appendChild(container); - - var leftOffset = content.offsetLeft; - - docElement.removeChild(container); - exclusion = content = container = undefined; - - return (leftOffset == 150); - }); - -/*! -{ - "name": "Custom protocol handler", - "property": "customprotocolhandler", - "authors": ["Ben Schwarz"], - "notes": [{ - "name": "WHATWG overview", - "href": "http://developers.whatwg.org/timers.html#custom-handlers" - },{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/Web/API/navigator.registerProtocolHandler" - }], - "warnings": [], - "polyfills": [] -} -!*/ -/* DOC - -Detects support for the `window.registerProtocolHandler()` API to allow web sites to register themselves as possible handlers for particular protocols. - -*/ - - Modernizr.addTest('customprotocolhandler', !!navigator.registerProtocolHandler); - -/*! -{ "name": "Dart", "property": "dart", "authors": ["Theodoor van Donge"], @@ -4036,6 +3764,7 @@ Append multiple elements to the DOM within a single insertion. "name": "Drag & Drop", "property": "draganddrop", "caniuse": "dragndrop", + "knownBugs": ["Mobile browsers like Android, iOS < 6, and Firefox OS technically support the APIs, but don't expose it to the end user, resulting in a false positive."], "notes": [{ "name": "W3C spec", "href": "http://www.w3.org/TR/2010/WD-html5-20101019/dnd.html" @@ -4324,28 +4053,6 @@ Modernizr.input.step /*! { - "name": "Emoji", - "property": "emoji" -} -!*/ -/* DOC - -Detects support for emoji character sets. - -*/ - - Modernizr.addTest('emoji', function() { - if (!Modernizr.canvastext) return false; - var node = createElement('canvas'), - ctx = node.getContext('2d'); - ctx.textBaseline = 'top'; - ctx.font = '32px Arial'; - ctx.fillText('\ud83d\ude03', 0, 0); // "smiling face with open mouth" emoji - return ctx.getImageData(16, 16, 1, 1).data[0] !== 0; - }); - -/*! -{ "name": "ES5 Array", "property": "es5array", "notes": [{ @@ -4531,242 +4238,49 @@ Check if browser implements ECMAScript 6 `String.prototype.contains` per specifi /*! { - "name": "Device Orientation and Motion Events", - "property": ["devicemotion", "deviceorientation"], - "caniuse": "deviceorientation", - "notes": [{ - "name": "W3C Editor's Draft", - "href": "http://dev.w3.org/geo/api/spec-source-orientation.html" - },{ - "name": "Implementation by iOS Safari (Orientation)", - "href": "http://goo.gl/fhce3" - },{ - "name": "Implementation by iOS Safari (Motion)", - "href": "http://goo.gl/rLKz8" - }], - "authors": ["Shi Chuan"], - "tags": ["event"] -} -!*/ -/* DOC - -Part of Device Access aspect of HTML5, same category as geolocation. - -`devicemotion` tests for Device Motion Event support, returns boolean value true/false. - -`deviceorientation` tests for Device Orientation Event support, returns boolean value true/false - -*/ - - Modernizr.addTest('devicemotion', 'DeviceMotionEvent' in window); - Modernizr.addTest('deviceorientation', 'DeviceOrientationEvent' in window); - - - // isEventSupported determines if the given element supports the given event - // kangax.github.com/iseventsupported/ - // github.com/Modernizr/Modernizr/pull/636 - // - // Known incorrects: - // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative - // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333 - var isEventSupported = (function (undefined) { - - // Detect whether event support can be detected via `in`. Test on a DOM element - // using the "blur" event b/c it should always exist. bit.ly/event-detection - var needsFallback = !('onblur' in document.documentElement); - - /** - * @param {string|*} eventName is the name of an event to test for (e.g. "resize") - * @param {(Object|string|*)=} element is the element|document|window|tagName to test on - * @return {boolean} - */ - function isEventSupportedInner( eventName, element ) { - - var isSupported; - if ( !eventName ) { return false; } - if ( !element || typeof element === 'string' ) { - element = createElement(element || 'div'); - } - - // Testing via the `in` operator is sufficient for modern browsers and IE. - // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and - // "resize", whereas `in` "catches" those. - eventName = 'on' + eventName; - isSupported = eventName in element; - - // Fallback technique for old Firefox - bit.ly/event-detection - if ( !isSupported && needsFallback ) { - if ( !element.setAttribute ) { - // Switch to generic element if it lacks `setAttribute`. - // It could be the `document`, `window`, or something else. - element = createElement('div'); - } - if ( element.setAttribute && element.removeAttribute ) { - element.setAttribute(eventName, ''); - isSupported = typeof element[eventName] === 'function'; - - if ( element[eventName] !== undefined ) { - // If property was created, "remove it" by setting value to `undefined`. - element[eventName] = undefined; - } - element.removeAttribute(eventName); - } - } - - return isSupported; - } - return isEventSupportedInner; - })(); - - - - // Modernizr.hasEvent() detects support for a given event, with an optional element to test on - // Modernizr.hasEvent('gesturestart', elem) - var hasEvent = ModernizrProto.hasEvent = isEventSupported; - -/*! -{ - "name": "onInput Event", - "property": "oninput", + "name": "ES6 Promises", + "property": "promises", + "caniuse": "promises", + "polyfills": ["es6promises"], + "authors": ["Krister Kari", "Jake Archibald"], + "tags": ["es6"], "notes": [{ - "name": "MDN article", - "href": "https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput" + "name": "The ES6 promises spec", + "href": "https://github.com/domenic/promises-unwrapping" },{ - "name": "WHATWG spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/common-input-element-attributes.html#common-event-behaviors" + "name": "Chromium dashboard - ES6 Promises", + "href": "http://www.chromestatus.com/features/5681726336532480" },{ - "name": "Detecting onInput support", - "href": "http://danielfriesen.name/blog/2010/02/16/html5-browser-maze-oninput-support" - }], - "authors": ["Patrick Kettner"], - "tags": ["event"] -} -!*/ -/* DOC - -`oninput` tests if the browser is able to detect the input event - -*/ - - - Modernizr.addTest('oninput', function() { - var input = createElement('input'); - input.setAttribute('oninput', 'return'); - - if (hasEvent('oninput', docElement) || typeof input.oninput == 'function') { - return true; - } - - // IE doesn't support onInput, so we wrap up the non IE APIs - // (createEvent, addEventListener) in a try catch, rather than test for - // their trident equivalent. - try { - // Older Firefox didn't map oninput attribute to oninput property - var testEvent = document.createEvent('KeyboardEvent'); - var supportsOnInput = false; - var handler = function(e) { - supportsOnInput = true; - e.preventDefault(); - e.stopPropagation(); - }; - - testEvent.initKeyEvent('keypress', true, true, window, false, false, false, false, 0, 'e'.charCodeAt(0)); - docElement.appendChild(input); - input.addEventListener('input', handler, false); - input.focus(); - input.dispatchEvent(testEvent); - input.removeEventListener('input', handler, false); - docElement.removeChild(input); - return supportsOnInput; - } catch (e) {} - }); - -/*! -{ - "name": "EXIF Orientation", - "property": "exiforientation", - "tags": ["image"], - "async": true, - "authors": ["Paul Sayre"], - "notes": [{ - "name": "Article by Dave Perrett", - "href": "http://recursive-design.com/blog/2012/07/28/exif-orientation-handling-is-a-ghetto/" - },{ - "name": "Article by Calvin Hass", - "href": "http://www.impulseadventure.com/photo/exif-orientation.html" + "name": "JavaScript Promises: There and back again - HTML5 Rocks", + "href": "http://www.html5rocks.com/en/tutorials/es6/promises/" }] } !*/ /* DOC -Detects support for EXIF Orientation in JPEG images. - -iOS looks at the EXIF Orientation flag in JPEGs and rotates the image accordingly. Most desktop browsers just ignore this data. +Check if browser implements ECMAScript 6 Promises per specification. */ - // Bug trackers: - // bugzil.la/298619 (unimplemented) - // crbug.com/56845 (looks incomplete) - // webk.it/19688 (available upstream but its up all ports to turn on individually) - Modernizr.addAsyncTest(function() { - var img = new Image(); - - img.onerror = function() { - addTest('exiforientation', false, { aliases: ['exif-orientation'] }); - }; - - img.onload = function() { - addTest('exiforientation', img.width !== 2, { aliases: ['exif-orientation'] }); - }; - - // There may be a way to shrink this more, it's a 1x2 white jpg with the orientation flag set to 6 - img.src = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=='; + Modernizr.addTest('promises', function() { + return 'Promise' in window && + // Some of these methods are missing from + // Firefox/Chrome experimental implementations + 'cast' in window.Promise && + 'resolve' in window.Promise && + 'reject' in window.Promise && + 'all' in window.Promise && + 'race' in window.Promise && + // Older version of the spec had a resolver object + // as the arg rather than a function + (function() { + var resolve; + new window.Promise(function(r) { resolve = r; }); + return typeof resolve === 'function'; + }()); }); /*! -{ - "name": "File API", - "property": "filereader", - "caniuse": "fileapi", - "notes": [{ - "name": "W3C Working Draft", - "href": "http://www.w3.org/TR/FileAPI/" - }], - "tags": ["file"], - "knownBugs": ["Will fail in Safari 5 due to its lack of support for the standards defined FileReader object"] -} -!*/ -/* DOC - -`filereader` tests for the File API specification - -Tests for objects specific to the File API W3C specification without -being redundant (don't bother testing for Blob since it is assumed -to be the File object's prototype.) - -*/ - - Modernizr.addTest('filereader', !!(window.File && window.FileList && window.FileReader)); - -/*! -{ - "name": "Filesystem API", - "property": "filesystem", - "caniuse": "filesystem", - "notes": [{ - "name": "W3 Draft", - "href": "dev.w3.org/2009/dap/file-system/file-dir-sys.html" - }], - "authors": ["Eric Bidelman (@ebidel)"], - "tags": ["file"], - "knownBugs": ["The API will be present in Chrome incognito, but will throw an exception. See crbug.com/93417"] -} -!*/ - - Modernizr.addTest('filesystem', !!prefixed('requestFileSystem', window)); - -/*! { "name": "Flash", "property": "flash", @@ -4850,304 +4364,6 @@ to be the File object's prototype.) /*! { - "name": "input[capture] Attribute", - "property": "capture", - "tags": ["video", "image", "audio", "media", "attribute"], - "notes": [{ - "name": "W3C draft: HTML Media Capture", - "href": "http://www.w3.org/TR/html-media-capture/" - }] -} -!*/ -/* DOC - -When used on an `<input>`, this attribute signifies that the resource it takes should be generated via device's camera, camcorder, sound recorder. - -*/ - - // testing for capture attribute in inputs - Modernizr.addTest('capture', ('capture' in createElement('input'))); - -/*! -{ - "name": "input[file] Attribute", - "property": "fileinput", - "caniuse" : "forms", - "tags": ["file", "forms", "input"] -} -!*/ -/* DOC - -Detects whether input type="file" is available on the platform - -E.g. iOS < 6 and some android version don't support this - -*/ - - Modernizr.addTest('fileinput', function() { - if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) { - return false; - } - var elem = createElement('input'); - elem.type = 'file'; - return !elem.disabled; - }); - -/*! -{ - "name": "input[directory] Attribute", - "property": "directory", - "authors": ["silverwind"], - "tags": ["file", "input", "attribute"] -} -!*/ -/* DOC - -When used on an `<input type="file">`, the `directory` attribute instructs -the user agent to present a directory selection dialog instead of the usual -file selection dialog. - -*/ - - Modernizr.addTest('fileinputdirectory', function() { - var elem = createElement('input'), dir = 'directory'; - elem.type = 'file'; - if (dir in elem) { - return true; - } else { - for (var i = 0, len = domPrefixes.length; i < len; i++) { - if (domPrefixes[i] + dir in elem) { - return true; - } - } - } - return false; - }); - -/*! -{ - "name": "input[form] Attribute", - "property": "formattribute", - "tags": ["attribute", "forms", "input"] -} -!*/ -/* DOC - -Detects whether input form="form_id" is available on the platform -E.g. IE 10 (and below), don't support this - -*/ - - - Modernizr.addTest('formattribute', function() { - var form = createElement('form'); - var input = createElement('input'); - var div = createElement('div'); - var id = 'formtest' + (new Date()).getTime(); - var attr; - var bool = false; - - form.id = id; - - //IE6/7 confuses the form idl attribute and the form content attribute, so we use document.createAttribute - try { - input.setAttribute('form', id); - } - catch( e ) { - if( document.createAttribute ) { - attr = document.createAttribute('form'); - attr.nodeValue = id; - input.setAttributeNode(attr); - } - } - - div.appendChild(form); - div.appendChild(input); - - docElement.appendChild(div); - - bool = form.elements.length === 1 && input.form == form; - - div.parentNode.removeChild(div); - return bool; - }); - -/*! -{ - "name": "input[type=\"number\"] Localization", - "property": "localizednumber", - "tags": ["forms", "localization", "attribute"], - "authors": ["Peter Janes"], - "notes": [{ - "name": "Webkit Bug Tracker Listing", - "href": "https://bugs.webkit.org/show_bug.cgi?id=42484" - },{ - "name": "Based on This", - "href": "http://trac.webkit.org/browser/trunk/LayoutTests/fast/forms/script-tests/input-number-keyoperation.js?rev=80096#L9" - }] -} -!*/ -/* DOC - -Detects whether input type="number" is capable of receiving and -displaying localized numbers, e.g. with comma separator - -*/ - - Modernizr.addTest('localizednumber', function() { - var el = createElement('div'); - var diff; - var body = getBody(); - - var root = (function() { - return docElement.insertBefore(body, docElement.firstElementChild || docElement.firstChild); - }()); - el.innerHTML = '<input type="number" value="1.0" step="0.1"/>'; - var input = el.childNodes[0]; - root.appendChild(el); - input.focus(); - try { - document.execCommand('InsertText', false, '1,1'); - } catch(e) { // prevent warnings in IE - } - diff = input.type === 'number' && input.valueAsNumber === 1.1 && input.checkValidity(); - root.removeChild(el); - body.fake && root.parentNode.removeChild(root); - return diff; - }); - - -/*! -{ - "name": "placeholder attribute", - "property": "placeholder", - "tags": ["forms", "attribute"] -} -!*/ -/* DOC - -Tests for placeholder attribute in inputs and textareas - -*/ - - Modernizr.addTest('placeholder', ('placeholder' in createElement('input') && 'placeholder' in createElement('textarea'))); - -/*! -{ - "name": "form#requestAutocomplete()", - "property": "requestautocomplete", - "tags": ["form", "forms", "requestAutocomplete", "payments"], - "notes": [{ - "name": "WHATWG proposed spec", - "href": "http://wiki.whatwg.org/wiki/RequestAutocomplete" - }] -} -!*/ -/* DOC - -When used with input[autocomplete] to annotate a form, form.requestAutocomplete() shows a dialog in Chrome that speeds up -checkout flows (payments specific for now). - -*/ - - Modernizr.addTest('requestautocomplete', !!Modernizr.prefixed('requestAutocomplete', createElement('form'))); - -/*! -{ - "name": "Speech Input API", - "property": "speechinput", - "tags": ["forms", "speech", "attribute"], - "authors": ["Cătălin Mariș"], - "knownBugs": [ - "This detect only checks the webkit version because the Speech Input API was only implemented in Chrome and it was deprecated in favor of the Web Speech API." - ], - "notes": [{ - "name": "W3C Speech Input API Specification", - "href": "http://lists.w3.org/Archives/Public/public-xg-htmlspeech/2011Feb/att-0020/api-draft.html" - }], - "warnings": [ - "Do not use the Speech Input API as it was deprecated in favor of the Web Speech API.", - "Only Chrome ever implemented this API, and they are planning to deprecate and remove the related code: https://code.google.com/p/chromium/issues/detail?id=223198." - ] -} -!*/ - - - // `webkitSpeech` in elem doesn`t work correctly in all versions of Chromium based browsers. - // It can return false even if they have support for speech i.imgur.com/2Y40n.png - // Testing with 'onwebkitspeechchange' seems to fix this problem. - - Modernizr.addTest('speechinput', function() { - var elem = createElement('input'); - return 'speech' in elem || 'onwebkitspeechchange' in elem; - }); - -/*! -{ - "name": "Form Validation", - "property": "formvalidation", - "tags": ["forms", "validation", "attribute"] -} -!*/ -/* DOC - -This implementation only tests support for interactive form validation. -To check validation for a specific type or a specific other constraint, -the test can be combined: - -- `Modernizr.inputtypes.number && Modernizr.formvalidation` (browser supports rangeOverflow, typeMismatch etc. for type=number) -- `Modernizr.input.required && Modernizr.formvalidation` (browser supports valueMissing) - -*/ - - Modernizr.addTest('formvalidation', function() { - var form = createElement('form'); - if ( !('checkValidity' in form) || !('addEventListener' in form) ) { - return false; - } - var invaildFired = false; - var input; - - Modernizr.formvalidationapi = true; - - // Prevent form from being submitted - form.addEventListener('submit', function(e) { - //Opera does not validate form, if submit is prevented - if ( !window.opera ) { - e.preventDefault(); - } - e.stopPropagation(); - }, false); - - // Calling form.submit() doesn't trigger interactive validation, - // use a submit button instead - //older opera browsers need a name attribute - form.innerHTML = '<input name="modTest" required><button></button>'; - - testStyles('#modernizr form{position:absolute;top:-99999em}', function( node ) { - node.appendChild(form); - - input = form.getElementsByTagName('input')[0]; - - // Record whether "invalid" event is fired - input.addEventListener('invalid', function(e) { - invaildFired = true; - e.preventDefault(); - e.stopPropagation(); - }, false); - - //Opera does not fully support the validationMessage property - Modernizr.formvalidationmessage = !!input.validationMessage; - - // Submit form by clicking submit button - form.getElementsByTagName('button')[0].click(); - }); - - return invaildFired; - }); - -/*! -{ "name": "Fullscreen API", "property": "fullscreen", "caniuse": "fullscreen", @@ -5162,73 +4378,69 @@ the test can be combined: // github.com/Modernizr/Modernizr/issues/739 Modernizr.addTest('fullscreen', !!(prefixed('exitFullscreen', document, false) || prefixed('cancelFullScreen', document, false))); -/*! -{ - "name": "GamePad API", - "property": "gamepads", - "authors": ["Eric Bidelman"], - "tags": ["media"], - "notes": [{ - "name": "W3C spec", - "href": "http://www.w3.org/TR/gamepad/" - },{ - "name": "HTML5 Rocks tutorial", - "href": "http://www.html5rocks.com/en/tutorials/doodles/gamepad/#toc-featuredetect" - }], - "warnings": [], - "polyfills": [] -} -!*/ -/* DOC -Detects support for the Gamepad API, for access to gamepads and controllers. + // isEventSupported determines if the given element supports the given event + // kangax.github.com/iseventsupported/ + // github.com/Modernizr/Modernizr/pull/636 + // + // Known incorrects: + // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative + // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333 + var isEventSupported = (function (undefined) { -*/ + // Detect whether event support can be detected via `in`. Test on a DOM element + // using the "blur" event b/c it should always exist. bit.ly/event-detection + var needsFallback = !('onblur' in document.documentElement); - // FF has Gamepad API support only in special builds, but not in any release (even behind a flag) - // Their current implementation has no way to feature detect, only events to bind to, but a patch - // will bring them up to date with the spec when it lands (and they'll pass this test) - // https://bugzilla.mozilla.org/show_bug.cgi?id=690935 + /** + * @param {string|*} eventName is the name of an event to test for (e.g. "resize") + * @param {(Object|string|*)=} element is the element|document|window|tagName to test on + * @return {boolean} + */ + function isEventSupportedInner( eventName, element ) { - Modernizr.addTest('gamepads', !!prefixed('getGamepads', navigator)); + var isSupported; + if ( !eventName ) { return false; } + if ( !element || typeof element === 'string' ) { + element = createElement(element || 'div'); + } -/*! -{ - "name": "Geolocation API", - "property": "geolocation", - "caniuse": "geolocation", - "tags": ["media"], - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation" - }], - "polyfills": [ - "joshuabell-polyfill", - "webshims", - "geolocationshim", - "geo-location-javascript", - "geolocation-api-polyfill" - ] -} -!*/ -/* DOC + // Testing via the `in` operator is sufficient for modern browsers and IE. + // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and + // "resize", whereas `in` "catches" those. + eventName = 'on' + eventName; + isSupported = eventName in element; -Detects support for the Geolocation API for users to provide their location to web applications. + // Fallback technique for old Firefox - bit.ly/event-detection + if ( !isSupported && needsFallback ) { + if ( !element.setAttribute ) { + // Switch to generic element if it lacks `setAttribute`. + // It could be the `document`, `window`, or something else. + element = createElement('div'); + } + if ( element.setAttribute && element.removeAttribute ) { + element.setAttribute(eventName, ''); + isSupported = typeof element[eventName] === 'function'; -*/ + if ( element[eventName] !== undefined ) { + // If property was created, "remove it" by setting value to `undefined`. + element[eventName] = undefined; + } + element.removeAttribute(eventName); + } + } - // geolocation is often considered a trivial feature detect... - // Turns out, it's quite tricky to get right: - // - // Using !!navigator.geolocation does two things we don't want. It: - // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513 - // 2. Disables page caching in WebKit: webk.it/43956 - // - // Meanwhile, in Firefox < 8, an about:config setting could expose - // a false positive that would throw an exception: bugzil.la/688158 + return isSupported; + } + return isEventSupportedInner; + })(); - Modernizr.addTest('geolocation', 'geolocation' in navigator); + + // Modernizr.hasEvent() detects support for a given event, with an optional element to test on + // Modernizr.hasEvent('gesturestart', elem) + var hasEvent = ModernizrProto.hasEvent = isEventSupported; + /*! { "name": "Hashchange event", @@ -5296,9 +4508,9 @@ Detects support for the History API for manipulating the browser session history // We only want Android 2, stock browser, and not Chrome which identifies // itself as 'Mobile Safari' as well - if (ua.indexOf('Android 2') !== -1 && + if (ua.indexOf('Android 2.') !== -1 && ua.indexOf('Mobile Safari') !== -1 && - ua.indexOf('Chrome') === -1) { + ua.indexOf('Chrome') === -1) { return false; } @@ -5328,63 +4540,6 @@ Detects whether or not the current browser is IE8 in compatibility mode (i.e. ac /*! { - "name": "iframe[sandbox] Attribute", - "property": "sandbox", - "tags": ["iframe"], - "notes": [{ - "name": "WhatWG Spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-sandbox" - }] -} -!*/ -/* DOC - -Test for `sandbox` attribute in iframes. - -*/ - - Modernizr.addTest('sandbox', 'sandbox' in createElement('iframe')); - -/*! -{ - "name": "iframe[seamless] Attribute", - "property": "seamless", - "tags": ["iframe"], - "notes": [{ - "name": "WhatWG Spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-seamless" - }] -} -!*/ -/* DOC - -Test for `seamless` attribute in iframes. - -*/ - - Modernizr.addTest('seamless', 'seamless' in createElement('iframe')); - -/*! -{ - "name": "iframe[srcdoc] Attribute", - "property": "srcdoc", - "tags": ["iframe"], - "notes": [{ - "name": "WhatWG Spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#attr-iframe-srcdoc" - }] -} -!*/ -/* DOC - -Test for `srcdoc` attribute in iframes. - -*/ - - Modernizr.addTest('srcdoc', 'srcdoc' in createElement('iframe')); - -/*! -{ "name": "Animated PNG", "async": true, "property": "apng", @@ -5427,58 +4582,6 @@ Test for animated png support. /*! { - "name": "JPEG XR (extended range)", - "async": true, - "aliases": ["jpeg-xr"], - "property": "jpegxr", - "tags": ["image"], - "notes": [{ - "name": "Wikipedia Article", - "href": "http://en.wikipedia.org/wiki/JPEG_XR" - }] -} -!*/ -/* DOC - -Test for JPEG XR support - -*/ - - - Modernizr.addAsyncTest(function() { - var image = new Image(); - - image.onload = image.onerror = function() { - addTest('jpegxr', image.width == 1, { aliases: ['jpeg-xr'] }); - }; - - image.src = 'data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=='; - }); - -/*! -{ - "name": "srcset attribute", - "property": "srcset", - "tags": ["image"], - "notes": [{ - "name": "Smashing Magazine Article", - "href": "http://en.wikipedia.org/wiki/APNG" - },{ - "name": "Generate multi-resolution images for srcset with Grunt", - "href": "http://addyosmani.com/blog/generate-multi-resolution-images-for-srcset-with-grunt/" - }] -} -!*/ -/* DOC - -Test for the srcset attribute of images - -*/ - - Modernizr.addTest('srcset', 'srcset' in createElement('img')); - -/*! -{ "name": "Webp Lossless", "async": true, "property": ["webplossless", "webp-lossless"], @@ -5623,76 +4726,6 @@ Tests for lossy, non-alpha webp support. image.src = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA='; }); -/*! -{ - "name": "IndexedDB", - "property": "indexeddb", - "caniuse": "indexeddb", - "tags": ["storage"], - "polyfills": ["indexeddb"] -} -!*/ -/* DOC - -Detects support for the IndexedDB client-side storage API (final spec). - -*/ - - // Vendors had inconsistent prefixing with the experimental Indexed DB: - // - Webkit's implementation is accessible through webkitIndexedDB - // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB - // For speed, we don't test the legacy (and beta-only) indexedDB - - Modernizr.addTest('indexeddb', !!prefixed('indexedDB', window)); - -/*! -{ - "name": "input formaction", - "property": "inputformaction", - "aliases": ["input-formaction"], - "notes": [{ - "name": "WHATWG Spec", - "href": "http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#attr-fs-formaction" - }, { - "name": "Wufoo demo", - "href": "http://www.wufoo.com/html5/attributes/13-formaction.html" - }], - "polyfills": [ - "webshims" - ] -} -!*/ -/* DOC - -Detect support for the formaction attribute on form inputs - -*/ - - Modernizr.addTest('inputformaction', !!('formAction' in createElement('input')), { aliases: ['input-formaction'] }); - -/*! -{ - "name": "input[search] search event", - "property": "search", - "tags": ["input","search"], - "authors": ["Calvin Webster"], - "notes": [{ - "name": "Wufoo demo", - "href": "http://www.wufoo.com/html5/types/5-search.html?" - }, { - "name": "CSS Tricks", - "href": "http://css-tricks.com/webkit-html5-search-inputs/" - }] -} -!*/ -/* DOC - - There is a custom `search` event implemented in webkit browsers when using an `input[search]` element. - - */ - - Modernizr.addTest('inputsearchevent', hasEvent('search')); - var inputtypes = 'search tel url email datetime date month week time datetime-local number range color'.split(' '); @@ -5810,28 +4843,6 @@ Modernizr.inputtypes.week })(inputtypes); /*! - { - "name": "Internationalization API", - "property": "Intl", - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl" - },{ - "name": "ECMAScript spec", - "href": "http://www.ecma-international.org/ecma-402/1.0/" - }] - } - !*/ -/* DOC - - Detects support for the Internationalization API which allow easy formatting of number and dates and sorting string - based on a locale - - */ - - Modernizr.addTest('intl', !!prefixed('Intl', window)); - -/*! { "name": "JSON", "property": "json", @@ -5854,115 +4865,6 @@ Detects native support for JSON handling functions. Modernizr.addTest('json', 'JSON' in window && 'parse' in JSON); -/*! -{ - "name": "Reverse Ordered Lists", - "property": "olreversed", - "notes": [{ - "name": "Impressive Webs article", - "href": "http://impressivewebs.com/reverse-ordered-lists-html5" - }], - "polyfills": ["impressivewebs"] -} -!*/ -/* DOC - -Detects support for the `reversed` attribute on the `<ol>` element. - -*/ - - Modernizr.addTest('olreversed', 'reversed' in createElement('ol')); - -/*! -{ - "name": "MathML", - "property": "mathml", - "caniuse": "mathml", - "authors": ["Addy Osmani", "Davide P. Cervone", "David Carlisle"], - "notes": [{ - "name": "W3C spec", - "href": "http://www.w3.org/Math/" - }], - "polyfills": ["mathjax"] -} -!*/ -/* DOC - -Detects support for MathML, for mathematic equations in web pages. - -*/ - - // Based on work by Davide (@dpvc) and David (@davidcarlisle) - // in https://github.com/mathjax/MathJax/issues/182 - - Modernizr.addTest('mathml', function() { - var ret; - - Modernizr.testStyles('#modernizr{position:absolute}', function(node){ - node.innerHTML = '<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>'; - - ret = node.offsetHeight > node.offsetWidth; - }); - - return ret; - }); - -/*! -{ - "name": "Low Bandwidth Connection", - "property": "lowbandwidth", - "tags": ["network"] -} -!*/ -/* DOC - -Tests for determining low-bandwidth via `navigator.connection` - -There are two iterations of the `navigator.connection` interface. - -The first is present in Android 2.2+ and only in the Browser (not WebView) - -- http://docs.phonegap.com/en/1.2.0/phonegap_connection_connection.md.html#connection.type -- http://davidbcalhoun.com/2010/using-navigator-connection-android - -The second is specced at http://dev.w3.org/2009/dap/netinfo/ and perhaps landing in WebKit - -- http://bugs.webkit.org/show_bug.cgi?id=73528 - -Unknown devices are assumed as fast - -For more rigorous network testing, consider boomerang.js: http://github.com/bluesmoon/boomerang/ - -*/ - - Modernizr.addTest('lowbandwidth', function() { - // polyfill - var connection = navigator.connection || { type: 0 }; - - return connection.type == 3 || // connection.CELL_2G - connection.type == 4 || // connection.CELL_3G - /^[23]g$/.test(connection.type); // string value in new spec - }); - -/*! -{ - "name": "Server Sent Events", - "property": "eventsource", - "tags": ["network"], - "notes": [{ - "name": "W3 Spec", - "href": "http://dev.w3.org/html5/eventsource/" - }] -} -!*/ -/* DOC - -Tests for server sent events aka eventsource. - -*/ - - Modernizr.addTest('eventsource', 'EventSource' in window); - // http://mathiasbynens.be/notes/xhr-responsetype-json#comment-4 var testXhrType = function(type) { @@ -5982,44 +4884,6 @@ Tests for server sent events aka eventsource. /*! { - "name": "XMLHttpRequest xhr.responseType='arraybuffer'", - "property": "xhrresponsetypearraybuffer", - "tags": ["network"], - "notes": [{ - "name": "XMLHttpRequest Living Standard", - "href": "http://xhr.spec.whatwg.org/#the-responsetype-attribute" - }] -} -!*/ -/* DOC - -Tests for XMLHttpRequest xhr.responseType='arraybuffer'. - -*/ - - Modernizr.addTest('xhrresponsetypearraybuffer', testXhrType('arraybuffer')); - -/*! -{ - "name": "XMLHttpRequest xhr.responseType='document'", - "property": "xhrresponsetypedocument", - "tags": ["network"], - "notes": [{ - "name": "XMLHttpRequest Living Standard", - "href": "http://xhr.spec.whatwg.org/#the-responsetype-attribute" - }] -} -!*/ -/* DOC - -Tests for XMLHttpRequest xhr.responseType='document'. - -*/ - - Modernizr.addTest('xhrresponsetypedocument', testXhrType('document')); - -/*! -{ "name": "XMLHttpRequest xhr.responseType='json'", "property": "xhrresponsetypejson", "tags": ["network"], @@ -6087,31 +4951,6 @@ Tests for XMLHttpRequest xhr.responseType. /*! { - "name": "XML HTTP Request Level 2 XHR2", - "property": "xhr2", - "tags": ["network"], - "notes": [{ - "name": "W3 Spec", - "href": "http://www.w3.org/TR/XMLHttpRequest2/" - },{ - "name": "Details on Related Github Issue", - "href": "http://github.com/Modernizr/Modernizr/issues/385" - }] -} -!*/ -/* DOC - -Tests for XHR2. -*/ - - // all three of these details report consistently across all target browsers: - // !!(window.ProgressEvent); - // !!(window.FormData); - // window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest; - Modernizr.addTest('xhr2', 'FormData' in window); - -/*! -{ "name": "Notification", "property": "notification", "caniuse": "notifications", @@ -6345,64 +5184,6 @@ Detects support for the `defer` attribute on the `<script>` element. /*! { - "name": "ServiceWorker API", - "property": "serviceworker", - "notes": [{ - "name": "ServiceWorkers Explained", - "href": "https://developer.mozilla.org/en-US/docs/WebAPI/Using_geolocation" - }] -} -!*/ -/* DOC - -ServiceWorkers (formerly Navigation Controllers) are a way to persistently cache resources to built apps that work better offline. - -*/ - - Modernizr.addTest('serviceworker', 'serviceWorker' in navigator); - -/*! -{ - "authors": ["Cătălin Mariș"], - "name": "Speech Recognition API", - "notes": [ - { - "name": "W3C Web Speech API Specification - The SpeechRecognition Interface", - "href": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#speechreco-section" - }, - { - "name": "Introduction to the Web Speech API", - "href": "http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API" - } - ], - "property": "speechrecognition", - "tags": ["input", "speech"] -} -!*/ - - - Modernizr.addTest('speechrecognition', !!prefixed('SpeechRecognition', window)); - -/*! -{ - "authors": ["Cătălin Mariș"], - "name": "Speech Synthesis API", - "notes": [ - { - "name": "W3C Web Speech API Specification - The SpeechSynthesis Interface", - "href": "https://dvcs.w3.org/hg/speech-api/raw-file/tip/speechapi.html#tts-section" - } - ], - "property": "speechsynthesis", - "tags": ["input", "speech"] -} -!*/ - - - Modernizr.addTest('speechsynthesis', 'SpeechSynthesisUtterance' in window); - -/*! -{ "name": "Local Storage", "property": "localstorage", "caniuse": "namevalue-storage", @@ -6476,19 +5257,6 @@ ServiceWorkers (formerly Navigation Controllers) are a way to persistently cache /*! { - "name": "Web SQL Database", - "property": "websqldatabase", - "caniuse": "sql-storage", - "tags": ["storage"] -} -!*/ - - // Chrome incognito mode used to throw an exception when using openDatabase - // It doesn't anymore. - Modernizr.addTest('websqldatabase', 'openDatabase' in window); - -/*! -{ "name": "style[scoped]", "property": "stylescoped", "caniuse": "style-scoped", @@ -6619,25 +5387,6 @@ Detects support for inline SVG in HTML (not within XHTML). /*! { - "name": "SVG SMIL animation", - "property": "smil", - "caniuse": "svg-smil", - "tags": ["svg"], - "notes": [{ - "name": "W3C Synchronised Multimedia spec", - "href": "http://www.w3.org/AudioVideo/" - }] -} -!*/ - - // SVG SMIL animation - Modernizr.addTest('smil', function() { - return !!document.createElementNS && - /SVGAnimate/.test(toStringFn.call(document.createElementNS('http://www.w3.org/2000/svg', 'animate'))); - }); - -/*! -{ "name": "SVG", "property": "svg", "caniuse": "svg", @@ -6665,28 +5414,6 @@ Detects support for SVG in `<embed>` or `<object>` elements. /*! { - "name": "textarea maxlength", - "property": "textareamaxlength", - "aliases": ["textarea-maxlength"], - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea" - }], - "polyfills": [ - "maxlength" - ] -} -!*/ -/* DOC - -Detect support for the maxlength attribute of a textarea element - -*/ - - Modernizr.addTest('textareamaxlength', !!('maxLength' in createElement('textarea'))); - -/*! -{ "name": "Touch Events", "property": "touchevents", "caniuse" : "touch", @@ -6781,7 +5508,7 @@ Does not check for DataView support; use `Modernizr.dataview` for that. "property": "unicode", "tags": ["encoding"], "warnings": [ - "positive Unicode support doesn't mean you can use it inside <title>, this seams more related to OS & Language packs" + "positive Unicode support doesn't mean you can use it inside <title>, this seems more related to OS & Language packs" ] } !*/ @@ -6820,6 +5547,43 @@ Detects if unicode characters are supported in the current document. /*! { + "name": "Unicode Range", + "property": "unicoderange", + "notes": [{ + "name" : "W3C reference", + "href": "http://www.w3.org/TR/2013/CR-css-fonts-3-20131003/#descdef-unicode-range" + }, { + "name" : "24 Way article", + "href": "http://24ways.org/2011/creating-custom-font-stacks-with-unicode-range" + }] +} +!*/ + + Modernizr.addTest('unicoderange', function () { + + return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+002E}#modernizr span{font-size:10px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}', function (elem) { + + // we use specify a unicode-range of 002E (the `.` glyph, + // and a monospace font as the fallback. If the first of + // these test glyphs is a different width than the other + // the other three (which are all monospace), then we + // have a winner. + var testGlyphs = ['.', '.', 'm', 'm']; + + for (var i = 0; i < testGlyphs.length; i++) { + var elm = createElement('span'); + elm.innerHTML = testGlyphs[i]; + elm.className = i % 2 ? 'mono' : ''; + elem.appendChild(elm); + testGlyphs[i] = elm.clientWidth; + } + + return (testGlyphs[0] !== testGlyphs[1] && testGlyphs[2] === testGlyphs[3]); + }); + }); + +/*! +{ "name": "Data URI", "property": "datauri", "caniuse": "datauri", @@ -6921,27 +5685,6 @@ Detects support for IE userData for persisting data, an API similar to localStor /*! { - "name": "Vibration API", - "property": "vibrate", - "notes": [{ - "name": "MDN documentation", - "href": "https://developer.mozilla.org/en/DOM/window.navigator.mozVibrate" - },{ - "name": "W3C spec", - "href": "http://www.w3.org/TR/vibration/" - }] -} -!*/ -/* DOC - -Detects support for the API that provides access to the vibration mechanism of the hosting device, to provide tactile feedback. - -*/ - - Modernizr.addTest('vibrate', !!prefixed('vibrate', navigator)); - -/*! -{ "name": "HTML5 Video", "property": "video", "caniuse": "video", @@ -7092,29 +5835,6 @@ Checks for support of the autoplay attribute of the video element. /*! { - "name": "Web Intents", - "property": "webintents", - "authors": ["Eric Bidelman"], - "notes": [{ - "name": "Web Intents project site", - "href": "http://webintents.org/" - }], - "polyfills": ["webintents"] -} -!*/ -/* DOC - -Detects native support for the Web Intents APIs for service discovery and inter-application communication. - -Chrome added support for this in v19, but [removed it again in v24](http://lists.w3.org/Archives/Public/public-web-intents/2012Nov/0000.html) because of "a number of areas for -development in both the API and specific user experience in Chrome". No other browsers currently support it, however a [JavaScript shim](http://webintents.org/#javascriptshim) is available. - -*/ - - Modernizr.addTest('webintents', !!prefixed('startActivity', navigator)); - -/*! -{ "name": "Web Animation API", "property": "animation", "tags": ["webanimations"], @@ -7215,38 +5935,6 @@ if ('OES_vertex_array_object' in Modernizr.webglextensions) { /*! { - "name": "getUserMedia", - "property": "getusermedia", - "caniuse": "stream", - "tags": ["webrtc"], - "authors": ["Eric Bidelman"], - "notes": [{ - "name": "W3C Media Capture and Streams spec", - "href": "http://www.w3.org/TR/mediacapture-streams/" - }], - "polyfills": ["getusermedia"] -} -!*/ - - Modernizr.addTest('getusermedia', !!prefixed('getUserMedia', navigator)); - -/*! -{ - "name": "RTC Peer Connection", - "property": "peerconnection", - "tags": ["webrtc"], - "authors": ["Ankur Oberoi"], - "notes": [{ - "name": "W3C Web RTC spec", - "href": "http://www.w3.org/TR/webrtc/" - }] -} -!*/ - - Modernizr.addTest('peerconnection', !!prefixed('RTCPeerConnection', window)); - -/*! -{ "name": "Binary WebSockets", "property": "websocketsbinary", "tags": ["websockets"] diff --git a/www/js/lib/modernizr-build.min.js b/www/js/lib/modernizr-build.min.js index 44c9c55..9612d0b 100644 --- a/www/js/lib/modernizr-build.min.js +++ b/www/js/lib/modernizr-build.min.js @@ -1,2 +1,2 @@ -/*! modernizr 3.0.0pre (Custom Build) | MIT */!function(a,b,c){function d(a,b){return typeof a===b}function e(){var a,b,c,e,f,g,h;for(var i in q){if(a=[],b=q[i],b.name&&(a.push(b.name.toLowerCase()),b.options&&b.options.aliases&&b.options.aliases.length))for(c=0;c<b.options.aliases.length;c++)a.push(b.options.aliases[c].toLowerCase());for(e=d(b.fn,"function")?b.fn():b.fn,f=0;f<a.length;f++)g=a[f],h=g.split("."),1===h.length?Modernizr[h[0]]=e:2===h.length&&(Modernizr[h[0]][h[1]]=e),t.push((e?"":"no-")+h.join("-"))}}function f(a){var b=u.className,c=Modernizr._config.classPrefix||"",d=new RegExp("(^|\\s)"+c+"no-js(\\s|$)");b=b.replace(d,"$1"+c+"js$2"),Modernizr._config.enableClasses&&(b+=" "+c+a.join(" "+c),u.className=b)}function g(a,b){if("object"==typeof a)for(var c in a)s(a,c)&&g(c,a[c]);else{a=a.toLowerCase();var d=a.split("."),e=Modernizr[d[0]];if(2==d.length&&(e=e[d[1]]),"undefined"!=typeof e)return Modernizr;b="function"==typeof b?b():b,1==d.length?Modernizr[d[0]]=b:2==d.length&&(Modernizr[d[0]][d[1]]=b),f([(b?"":"no-")+d.join("-")]),Modernizr._trigger(a,b)}return Modernizr}function h(a,b){return!!~(""+a).indexOf(b)}function i(){var a=b.body;return a||(a=w("body"),a.fake=!0),a}function j(a,b,c,d){var e,f,g,h,j="modernizr",k=w("div"),l=i();if(parseInt(c,10))for(;c--;)g=w("div"),g.id=d?d[c]:j+(c+1),k.appendChild(g);return e=["­",'<style id="s',j,'">',a,"</style>"].join(""),k.id=j,(l.fake?l:k).innerHTML+=e,l.appendChild(k),l.fake&&(l.style.background="",l.style.overflow="hidden",h=u.style.overflow,u.style.overflow="hidden",u.appendChild(l)),f=b(k,a),l.fake?(l.parentNode.removeChild(l),u.style.overflow=h,u.offsetHeight):k.parentNode.removeChild(k),!!f}function k(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-")}function l(b,d){var e=b.length;if("CSS"in a&&"supports"in a.CSS){for(;e--;)if(a.CSS.supports(k(b[e]),d))return!0;return!1}if("CSSSupportsRule"in a){for(var f=[];e--;)f.push("("+k(b[e])+":"+d+")");return f=f.join(" or "),j("@supports ("+f+") { #modernizr { position: absolute; } }",function(b){return"absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position})}return c}function m(a,b,e,f){function g(){j&&(delete y.style,delete y.modElem)}if(f=d(f,"undefined")?!1:f,!d(e,"undefined")){var i=l(a,e);if(!d(i,"undefined"))return i}var j,k,m,n;y.style||(j=!0,y.modElem=w("modernizr"),y.style=y.modElem.style);for(k in a)if(m=a[k],n=y.style[m],!h(m,"-")&&y.style[m]!==c){if(f||d(e,"undefined"))return g(),"pfx"==b?m:!0;try{y.style[m]=e}catch(o){}if(y.style[m]!=n)return g(),"pfx"==b?m:!0}return g(),!1}function n(a,b,c){var e;for(var f in a)if(a[f]in b)return c===!1?a[f]:(e=b[a[f]],d(e,"function")&&"bind"in e?e.bind(c||b):e);return!1}function o(a,b,c,e,f){var g=a.charAt(0).toUpperCase()+a.slice(1),h=(a+" "+D.join(g+" ")+g).split(" ");return d(b,"string")||d(b,"undefined")?m(h,b,e,f):(h=(a+" "+E.join(g+" ")+g).split(" "),n(h,b,c))}function p(a,b,d){return o(a,c,c,b,d)}var q=[],r={_version:"v3.0.0pre",_config:{classPrefix:"",enableClasses:!0},_q:[],on:function(a,b){setTimeout(function(){b(this[a])},0)},addTest:function(a,b,c){q.push({name:a,fn:b,options:c})},addAsyncTest:function(a){q.push({name:null,fn:a})}},Modernizr=function(){};Modernizr.prototype=r,Modernizr=new Modernizr;var s,t=[],u=b.documentElement;!function(){var a={}.hasOwnProperty;s=d(a,"undefined")||d(a.call,"undefined")?function(a,b){return b in a&&d(a.constructor.prototype[b],"undefined")}:function(b,c){return a.call(b,c)}}(),r._l={},r.on=function(a,b){this._l[a]||(this._l[a]=[]),this._l[a].push(b),Modernizr.hasOwnProperty(a)&&setTimeout(function(){Modernizr._trigger(a,Modernizr[a])},0)},r._trigger=function(a,b){if(this._l[a]){var c=this._l[a];setTimeout(function(){var a,d;for(a=0;a<c.length;a++)d=c[a],d(b)},0),delete this._l[a]}},Modernizr._q.push(function(){r.addTest=g});var v;!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=v.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=x[a[u]];return b||(b={},w++,a[u]=w,x[w]=b),b}function f(a,c,d){if(c||(c=b),p)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():t.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),f.canHaveChildren&&!s.test(a)?d.frag.appendChild(f):f}function g(a,c){if(a||(a=b),p)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return v.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(v,b.frag)}function i(a){a||(a=b);var d=e(a);return!v.shivCSS||o||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}")),p||h(a,d),a}function j(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(k(b)));return g}function k(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(z+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function l(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+z+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){for(var b=a.length;b--;)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!A||a.printShived?a:("undefined"==typeof h[z]&&h.add(z),i.attachEvent("onbeforeprint",function(){b();for(var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);m--;)n[m]=i[m];for(;h=n.pop();)if(!h.disabled&&y.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;g>m;m++)n.push(e[m]);try{k.push(h.cssText)}catch(o){}}k=l(k.reverse().join("")),f=j(a),d=c(a,k)}),i.attachEvent("onafterprint",function(){m(f),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var o,p,q="3.6.2",r=a.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,t=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,u="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",o="hidden"in a,p=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){o=!0,p=!0}}(),v={elements:r.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:q,shivCSS:r.shivCSS!==!1,supportsUnknownElements:p,shivMethods:r.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g},a.html5=v,i(b);var y=/^$|\b(?:all|print)\b/,z="html5shiv",A=!p&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();v.type+=" print",v.shivPrint=n,n(b)}(this,b),function(a,b,c){function d(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function e(a,c,e,f,h,i){var j,k,m=b.createElement("script");f=f||l.errorTimeout,m.src=a;for(k in e)m.setAttribute(k,e[k]);c=i?g:c||s,m.onreadystatechange=m.onload=function(){!j&&d(m.readyState)&&(j=1,c(),m.onload=m.onreadystatechange=null)},n(function(){j||(j=1,c(1))},f),E(),h?m.onload():o.parentNode.insertBefore(m,o)}function f(a,c,d,e,f,h){var i,j=b.createElement("link");e=e||l.errorTimeout,c=h?g:c||s,j.href=a,j.rel="stylesheet",j.type="text/css";for(i in d)j.setAttribute(i,d[i]);f||(E(),o.parentNode.insertBefore(j,o),n(c,0))}function g(){var a=q.shift();r=1,a?a.t?n(function(){("c"==a.t?l.injectCss:l.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),g()):r=0}function h(a,c,e,f,h,i,j){function k(b){if(!p&&d(m.readyState)&&(t.r=p=1,!r&&g(),b)){"img"!=a&&n(function(){v.removeChild(m)},50);for(var e in G[c])G[c].hasOwnProperty(e)&&G[c][e].onload();m.onload=m.onreadystatechange=null}}j=j||l.errorTimeout;var m=b.createElement(a),p=0,s=0,t={t:e,s:c,e:h,a:i,x:j};1===G[c]&&(s=1,G[c]=[]),"object"==a?(m.data=c,m.setAttribute("type","text/css")):(m.src=c,m.type=a),m.width=m.height="0",m.onerror=m.onload=m.onreadystatechange=function(){k.call(this,s)},q.splice(f,0,t),"img"!=a&&(s||2===G[c]?(E(),v.insertBefore(m,u?null:o),n(k,j)):G[c].push(m))}function i(a,b,c,d,e){return r=0,b=b||"j",C(a)?h("c"==b?z:y,a,b,this.i++,c,d,e):(q.splice(this.i++,0,a),1==q.length&&g()),this}function j(){var a=l;return a.loader={load:i,i:0},a}var k,l,m=b.documentElement,n=a.setTimeout,o=b.getElementsByTagName("script")[0],p={}.toString,q=[],r=0,s=function(){},t="MozAppearance"in m.style,u=t&&!!b.createRange().compareNode,v=u?m:o.parentNode,w=a.opera&&"[object Opera]"==p.call(a.opera),x=!!b.attachEvent&&!w,y=t?"object":x?"script":"img",z=x?"script":y,A=Array.isArray||function(a){return"[object Array]"==p.call(a)},B=function(a){return Object(a)===a},C=function(a){return"string"==typeof a},D=function(a){return"[object Function]"==p.call(a)},E=function(){o&&o.parentNode||(o=b.getElementsByTagName("script")[0])},F=[],G={},H={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};l=function(a){function b(a){var b,c,d,e=a.split("!"),f=F.length,g=e.pop(),h=e.length,i={url:g,origUrl:g,prefixes:e};for(c=0;h>c;c++)d=e[c].split("="),b=H[d.shift()],b&&(i=b(i,d));for(c=0;f>c;c++)i=F[c](i);return i}function d(a){var b=a.split("?")[0];return b.substr(b.lastIndexOf(".")+1)}function e(a,e,f,g,h){{var i=b(a),k=i.autoCallback;d(i.url)}if(!i.bypass)return e&&(e=D(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(G[i.url]&&i.reexecute!==!0?i.noexec=!0:G[i.url]=1,a&&f.load(i.url,i.forceCSS||!i.forceJS&&"css"==d(i.url)?"c":c,i.noexec,i.attrs,i.timeout),(D(e)||D(k))&&f.load(function(){j(),e&&e(i.origUrl,h,g),k&&k(i.origUrl,h,g),G[i.url]=2}),void 0)}function f(a,b){function c(a,c){if(""===a||a){if(C(a))c||(i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}),e(a,i,b,0,f);else if(B(a)){d=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}();for(var g in a)a.hasOwnProperty(g)&&(c||--d||(D(i)?i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}:i[g]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),k()}}(j[g])),e(a[g],i,b,g,f))}}else!c&&k()}var d,f=!!a.test,g=f?a.yep:a.nope,h=a.load||a.both,i=a.callback||s,j=i,k=a.complete||s;c(g,!!h||!!a.complete),h&&c(h),!h&&!!a.complete&&c("")}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?l(h):B(h)&&f(h,i);else B(a)&&f(a,i)},l.addPrefix=function(a,b){H[a]=b},l.addFilter=function(a){F.push(a)},l.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",k=function(){b.removeEventListener("DOMContentLoaded",k,0),b.readyState="complete"},0)),a.yepnope=j(),a.yepnope.executeStack=g,a.yepnope.injectJs=e,a.yepnope.injectCss=f}(a,b),r.load=function(){a.yepnope.apply(a,[].slice.call(arguments,0))};var w=function(){return b.createElement.apply(b,arguments)},x={elem:w("modernizr")};Modernizr._q.push(function(){delete x.elem});var y={style:x.elem.style};Modernizr._q.unshift(function(){delete y.style});var z=r.testProp=function(a,b,d){return m([a],c,b,d)},A=t.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=A.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(A.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(A.call(arguments)))};return d}),Modernizr.addTest("adownload",!a.externalHost&&"download"in w("a")),Modernizr.addTest("applicationcache","applicationCache"in a),Modernizr.addTest("audioloop","loop"in w("audio")),Modernizr.addTest("audiopreload","preload"in w("audio")),Modernizr.addTest("audio",function(){var a=w("audio"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),b.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),b.opus=a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),b.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),b.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(c){}return b}),Modernizr.addTest("canvas",function(){var a=w("canvas");return!(!a.getContext||!a.getContext("2d"))});var B=w("canvas");Modernizr.addTest("todataurljpeg",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/jpeg").indexOf("data:image/jpeg")}),Modernizr.addTest("todataurlpng",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/png").indexOf("data:image/png")}),Modernizr.addTest("todataurlwebp",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/webp").indexOf("data:image/webp")}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof w("canvas").getContext("2d").fillText}),Modernizr.addTest("contenteditable",function(){if("contentEditable"in u){var a=w("div");return a.contentEditable=!0,"true"===a.contentEditable}}),Modernizr.addTest("contentsecuritypolicy","securityPolicy"in b||"SecurityPolicy"in b),Modernizr.addTest("contextmenu","contextMenu"in u&&"HTMLMenuItemElement"in a),Modernizr.addTest("cookies",function(){try{b.cookie="cookietest=1";var a=-1!=b.cookie.indexOf("cookietest=");return b.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",a}catch(c){return!1}});var C="Webkit Moz O ms",D=C.split(" ");r._cssomPrefixes=D;var E=C.toLowerCase().split(" ");r._domPrefixes=E,r.testAllProps=o,r.testAllProps=p,Modernizr.addTest("cssanimations",p("animationName","a",!0)),Modernizr.addTest("backgroundcliptext",function(){return p("backgroundClip","text")}),Modernizr.addTest("bgpositionshorthand",function(){var a=w("a"),b=a.style,c="right 10px bottom 10px";return b.cssText="background-position: "+c+";",b.backgroundPosition===c}),Modernizr.addTest("bgpositionxy",function(){return p("backgroundPositionX","3px",!0)&&p("backgroundPositionY","5px",!0)}),Modernizr.addTest("bgrepeatround",p("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",p("backgroundRepeat","space")),Modernizr.addTest("backgroundsize",p("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",p("backgroundSize","cover")),Modernizr.addTest("borderimage",p("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",p("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",p("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",p("boxSizing","border-box",!0)&&(b.documentMode===c||b.documentMode>7));var F=" -webkit- -moz- -o- -ms- ".split(" ");r._prefixes=F,Modernizr.addTest("csscalc",function(){var a="width:",b="calc(10px);",c=w("div");return c.style.cssText=a+F.join(b+a),!!c.style.length});var G=r.testStyles=j;Modernizr.addTest("checked",function(){return G("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(a){var b=w("input");return b.setAttribute("type","checkbox"),b.setAttribute("checked","checked"),a.appendChild(b),20===b.offsetLeft})}),function(){Modernizr.addTest("csscolumns",function(){var a=!1,b=p("columnCount");try{(a=!!b)&&(a=new Boolean(a))}catch(c){}return a});for(var a,b,c=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],d=0;d<c.length;d++)a=c[d].toLowerCase(),b=p("column"+c[d]),("breakbefore"===a||"breakafter"===a||"breakinside"==a)&&(b=b||p(c[d])),Modernizr.addTest("csscolumns."+a,b)}(),Modernizr.addTest("cubicbezierrange",function(){var a=w("div");return a.style.cssText=F.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "),!!a.style.length}),Modernizr.addTest("displayrunin",p("display","run-in"),{aliases:["display-runin"]}),G("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(a){var b,c=a.children;b=c[0].offsetLeft<c[1].offsetLeft,Modernizr.addTest("displaytable",b,{aliases:["display-table"]})},2),Modernizr.addTest("ellipsis",p("textOverflow","ellipsis")),Modernizr.addTest("cssfilters",function(){var a=w("div");return a.style.cssText=F.join("filter:blur(2px); "),!!a.style.length&&(b.documentMode===c||b.documentMode>9)}),Modernizr.addTest("flexbox",p("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",p("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",p("flexAlign","end",!0)),Modernizr.addTest("flexwrap",p("flexWrap","wrap",!0));var H=function(){var a=navigator.userAgent,b=a.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),c=a.match(/w(eb)?osbrowser/gi),d=a.match(/windows phone/gi)&&a.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,e=533>b&&a.match(/android/gi);return c||e||d}();H?Modernizr.addTest("fontface",!1):G('@font-face {font-family:"font";src:url("https://")}',function(a,c){var d=b.getElementById("smodernizr"),e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"",g=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0]);Modernizr.addTest("fontface",g)}),G('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(a){Modernizr.addTest("generatedcontent",a.offsetHeight>=7)}),Modernizr.addTest("cssgradients",function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);",d=(a+"-webkit- ".split(" ").join(b+a)+F.join(c+a)).slice(0,-a.length),e=w("div"),f=e.style;return f.cssText=d,(""+f.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("hsla",function(){var a=w("div"),b=a.style;return b.cssText="background-color:hsla(120,40%,100%,.5)",h(b.backgroundColor,"rgba")||h(b.backgroundColor,"hsla")}),Modernizr.addAsyncTest(function(){function c(){function e(){try{var a=w("div"),c=w("span"),d=a.style,e=0,f=0,g=!1,h=b.body.firstElementChild||b.body.firstChild;return a.appendChild(c),c.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",b.body.insertBefore(a,h),d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",e=c.offsetHeight,f=c.offsetWidth,d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+F.join("hyphens:auto; "),g=c.offsetHeight!=e||c.offsetWidth!=f,b.body.removeChild(a),a.removeChild(c),g}catch(i){return!1}}function f(a,c){try{var d=w("div"),e=w("span"),f=d.style,g=0,h=!1,i=!1,j=!1,k=b.body.firstElementChild||b.body.firstChild;return f.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.appendChild(e),b.body.insertBefore(d,k),e.innerHTML="mm",g=e.offsetHeight,e.innerHTML="m"+a+"m",i=e.offsetHeight>g,c?(e.innerHTML="m<br />m",g=e.offsetWidth,e.innerHTML="m"+a+"m",j=e.offsetWidth>g):j=!0,i===!0&&j===!0&&(h=!0),b.body.removeChild(d),d.removeChild(e),h}catch(l){return!1}}function h(c){try{var d,e=w("input"),f=w("div"),g="lebowski",h=!1,i=b.body.firstElementChild||b.body.firstChild;if(f.innerHTML=g+c+g,b.body.insertBefore(f,i),b.body.insertBefore(e,f),e.setSelectionRange?(e.focus(),e.setSelectionRange(0,0)):e.createTextRange&&(d=e.createTextRange(),d.collapse(!0),d.moveEnd("character",0),d.moveStart("character",0),d.select()),a.find)h=a.find(g+g);else try{d=a.self.document.body.createTextRange(),h=d.findText(g+g)}catch(j){h=!1}return b.body.removeChild(f),b.body.removeChild(e),h}catch(j){return!1}}return b.body||b.getElementsByTagName("body")[0]?(g("csshyphens",function(){if(!p("hyphens","auto",!0))return!1;try{return e()}catch(a){return!1}}),g("softhyphens",function(){try{return f("­",!0)&&f("​",!1)}catch(a){return!1}}),g("softhyphensfind",function(){try{return h("­")&&h("​")}catch(a){return!1}}),void 0):(setTimeout(c,d),void 0)}var d=300;setTimeout(c,d)}),G("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(a){Modernizr.addTest("lastchild",a.lastChild.offsetWidth>a.firstChild.offsetWidth)},2),Modernizr.addTest("cssmask",p("maskRepeat","repeat-x",!0));var I=function(){var b=a.matchMedia||a.msMatchMedia;return b?function(a){var c=b(a);return c&&c.matches||!1}:function(b){var c=!1;return j("@media "+b+" { #modernizr { position: absolute; } }",function(b){c="absolute"==(a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle).position}),c}}(),J=r.mq=I;Modernizr.addTest("mediaqueries",J("only all")),Modernizr.addTest("multiplebgs",function(){var a=w("div"),b=a.style;return b.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(b.background)}),G("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(a){Modernizr.addTest("nthchild",function(){for(var b=a.getElementsByTagName("div"),c=!0,d=0;5>d;d++)c=c&&b[d].offsetWidth===d%2+1;return c})},5);var K=r.prefixed=function(a,b,c){return b?o(a,b,c):o(a,"pfx")};Modernizr.addTest("objectfit",!!K("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("opacity",function(){var a=w("div"),b=a.style;return b.cssText=F.join("opacity:.55;"),/^0.55$/.test(b.opacity)}),Modernizr.addTest("overflowscrolling",p("overflowScrolling","touch",!0)),Modernizr.addTest("csspointerevents",function(){var a=w("x");return a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}),Modernizr.addTest("csspositionsticky",function(){var a="position:",b="sticky",c=w("modernizr"),d=c.style;return d.cssText=a+F.join(b+";"+a).slice(0,-a.length),-1!==d.position.indexOf(b)}),Modernizr.addTest("csspseudoanimations",function(){var b=!1;if(!Modernizr.cssanimations||!a.getComputedStyle)return b;var c=["@",Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/,""),'#modernizr:before { content:" "; font-size:5px;',Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"),"}"].join("");return Modernizr.testStyles(c,function(c){b="10px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("csstransitions",p("transition","all",!0)),Modernizr.addTest("csspseudotransitions",function(){var b=!1;if(!Modernizr.csstransitions||!a.getComputedStyle)return b;var c='#modernizr:before { content:" "; font-size:5px;'+Modernizr._prefixes.join("transition:0s 100s;")+"}#modernizr.trigger:before { font-size:10px; }";return Modernizr.testStyles(c,function(c){a.getComputedStyle(c,":before").getPropertyValue("font-size"),c.className+="trigger",b="5px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("cssreflections",p("boxReflect","above",!0)),Modernizr.addTest("regions",function(){var a=Modernizr.prefixed("flowFrom"),b=Modernizr.prefixed("flowInto");if(!a||!b)return!1;var d=w("div"),e=w("div"),f=w("div"),g="modernizr_flow_for_regions_check";e.innerText="M",d.style.cssText="top: 150px; left: 150px; padding: 0px;",f.style.cssText="width: 50px; height: 50px; padding: 42px;",f.style[a]=g,d.appendChild(e),d.appendChild(f),u.appendChild(d);var h,i,j=e.getBoundingClientRect();return e.style[b]=g,h=e.getBoundingClientRect(),i=parseInt(h.left-j.left,10),u.removeChild(d),e=f=d=c,42==i}),Modernizr.addTest("cssremunit",function(){var a=w("div");try{a.style.fontSize="3rem"}catch(b){}return/rem/.test(a.style.fontSize)}),Modernizr.addTest("cssresize",p("resize","both",!0)),Modernizr.addTest("rgba",function(){var a=w("div"),b=a.style;return b.cssText="background-color:rgba(150,255,150,.5)",(""+b.backgroundColor).indexOf("rgba")>-1}),G("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+F.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:0px}",function(a){Modernizr.addTest("cssscrollbar",40==a.scrollWidth)}),Modernizr.addTest("shapes",function(){var b=K("shapeOutside");if(!b)return!1;var c=b.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-");return G("#modernizr { float: left; "+c+":rectangle(0,0,0,0,0,0) }",function(b){var c=a.getComputedStyle?getComputedStyle(b,null):b.currentStyle;return"rectangle(0px, 0px, 0px, 0px, 0px, 0px)"==c[K("shapeOutside",u.style,!1)]})}),Modernizr.addTest("siblinggeneral",function(){return G("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}",function(a){return 200==a.lastChild.offsetWidth},2)}),G("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}",function(b){var c=b.firstChild;c.innerHTML="This is a text written in Arial",Modernizr.addTest("subpixelfont",a.getComputedStyle?"44px"!==a.getComputedStyle(c,null).getPropertyValue("width"):!1)},1,["subpixel"]),Modernizr.addTest("supports","CSSSupportsRule"in a),Modernizr.addTest("target",function(){var b=a.document;if(!("querySelectorAll"in b))return!1;try{return b.querySelectorAll(":target"),!0}catch(c){return!1}}),Modernizr.addTest("textshadow",z("textShadow","1px 1px")),Modernizr.addTest("csstransforms",p("transform","scale(1)",!0)),Modernizr.addTest("csstransforms3d",function(){var a=!!p("perspective","1px",!0);return a&&"webkitPerspective"in u.style&&G("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",function(b){a=9===b.offsetLeft&&5===b.offsetHeight}),a}),Modernizr.addTest("preserve3d",p("transformStyle","preserve-3d")),Modernizr.addTest("userselect",p("userSelect","none",!0)),G("#modernizr { height: 50vh; }",function(b){var c=parseInt(a.innerHeight/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).height,10);Modernizr.addTest("cssvhunit",d==c)}),G("#modernizr { width: 50vmax; }",function(b){var c=u.clientWidth/100,d=u.clientHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvmaxunit",parseInt(50*Math.max(c,d),10)==e)}),G("#modernizr { width: 50vmin; }",function(b){var c=u.clientWidth/100,d=u.clientHeight/100,e=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvminunit",parseInt(50*Math.min(c,d),10)==e)}),G("#modernizr { width: 50vw; }",function(b){var c=parseInt(u.innerWidth/2,10),d=parseInt((a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).width,10);Modernizr.addTest("cssvwunit",d==c)}),Modernizr.addTest("wrapflow",function(){var a=K("wrapFlow");if(!a)return!1;var b=a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-"),d=w("div"),e=w("div"),f=w("span");e.style.cssText="position: absolute; left: 50px; width: 100px; height: 20px;"+b+":end;",f.innerText="X",d.appendChild(e),d.appendChild(f),u.appendChild(d);var g=f.offsetLeft;return u.removeChild(d),e=f=d=c,150==g}),Modernizr.addTest("customprotocolhandler",!!navigator.registerProtocolHandler),Modernizr.addTest("dart",!!K("startDart",navigator)),Modernizr.addTest("dataview","undefined"!=typeof DataView&&"getFloat64"in DataView.prototype),Modernizr.addTest("classlist","classList"in u),Modernizr.addTest("createelementattrs",function(){try{return"test"==w('<input name="test" />').getAttribute("name")}catch(a){return!1}},{aliases:["createelement-attrs"]}),Modernizr.addTest("dataset",function(){var a=w("div");return a.setAttribute("data-a-b","c"),!(!a.dataset||"c"!==a.dataset.aB)}),Modernizr.addTest("documentfragment",function(){return"createDocumentFragment"in b&&"appendChild"in u}),Modernizr.addTest("microdata","getItems"in b),Modernizr.addTest("draganddrop",function(){var a=w("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a});var L={},M="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),N=w("input");Modernizr.input=function(b){for(var c=0,d=b.length;d>c;c++)L[b[c]]=!!(b[c]in N);return L.list&&(L.list=!(!w("datalist")||!a.HTMLDataListElement)),L}(M),Modernizr.addTest("datalistelem",Modernizr.input.list),Modernizr.addTest("details",function(){var a,b=w("details");return"open"in b?(G("#modernizr details{display:block}",function(c){c.appendChild(b),b.innerHTML="<summary>a</summary>b",a=b.offsetHeight,b.open=!0,a=a!=b.offsetHeight}),a):!1}),Modernizr.addTest("outputelem","value"in w("output")),Modernizr.addTest("progressbar",w("progress").max!==c),Modernizr.addTest("meter",w("meter").max!==c),Modernizr.addTest("ruby",function(){function c(c,d){var e;return a.getComputedStyle?e=b.defaultView.getComputedStyle(c,null).getPropertyValue(d):c.currentStyle&&(e=c.currentStyle[d]),e}function d(){u.removeChild(e),e=null,f=null,g=null}var e=w("ruby"),f=w("rt"),g=w("rp"),h="display",i="fontSize";return e.appendChild(g),e.appendChild(f),u.appendChild(e),"none"==c(g,h)||"ruby"==c(e,h)&&"ruby-text"==c(f,h)||"6pt"==c(g,i)&&"6pt"==c(f,i)?(d(),!0):(d(),!1)}),Modernizr.addTest("template","content"in w("template")),Modernizr.addTest("time","valueAsDate"in w("time")),Modernizr.addTest("texttrackapi","function"==typeof w("video").addTextTrack),Modernizr.addTest("track","kind"in w("track")),Modernizr.addTest("emoji",function(){if(!Modernizr.canvastext)return!1; -var a=w("canvas"),b=a.getContext("2d");return b.textBaseline="top",b.font="32px Arial",b.fillText("\ud83d\ude03",0,0),0!==b.getImageData(16,16,1,1).data[0]}),Modernizr.addTest("es5array",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest("es5date",function(){var a="2013-04-12T06:06:37.307Z",b=!1;try{b=!!Date.parse(a)}catch(c){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&b)}),Modernizr.addTest("es5function",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest("es5object",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("es5string",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest("contains",d(String.prototype.contains,"function")),Modernizr.addTest("devicemotion","DeviceMotionEvent"in a),Modernizr.addTest("deviceorientation","DeviceOrientationEvent"in a);var O=function(a){function c(b,c){var e;return b?(c&&"string"!=typeof c||(c=w(c||"div")),b="on"+b,e=b in c,!e&&d&&(c.setAttribute||(c=w("div")),c.setAttribute&&c.removeAttribute&&(c.setAttribute(b,""),e="function"==typeof c[b],c[b]!==a&&(c[b]=a),c.removeAttribute(b))),e):!1}var d=!("onblur"in b.documentElement);return c}(),P=r.hasEvent=O;Modernizr.addTest("oninput",function(){var c=w("input");if(c.setAttribute("oninput","return"),P("oninput",u)||"function"==typeof c.oninput)return!0;try{var d=b.createEvent("KeyboardEvent"),e=!1,f=function(a){e=!0,a.preventDefault(),a.stopPropagation()};return d.initKeyEvent("keypress",!0,!0,a,!1,!1,!1,!1,0,"e".charCodeAt(0)),u.appendChild(c),c.addEventListener("input",f,!1),c.focus(),c.dispatchEvent(d),c.removeEventListener("input",f,!1),u.removeChild(c),e}catch(g){}}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("exiforientation",!1,{aliases:["exif-orientation"]})},a.onload=function(){g("exiforientation",2!==a.width,{aliases:["exif-orientation"]})},a.src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QAiRXhpZgAASUkqAAgAAAABABIBAwABAAAABgASAAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+/iiiigD/2Q=="}),Modernizr.addTest("filereader",!!(a.File&&a.FileList&&a.FileReader)),Modernizr.addTest("filesystem",!!K("requestFileSystem",a)),Modernizr.addAsyncTest(function(){var b,c,d=function(a,b){var c=!!a;c&&(c=new Boolean(c),c.blocked="blocked"===a),g("flash",function(){return c}),b&&u.removeChild(b)};try{c="Pan"in new a.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}if(b=!("plugins"in navigator&&"Shockwave Flash"in navigator.plugins||c))d(!1);else{var f,h=w("embed");if(h.type="application/x-shockwave-flash",u.appendChild(h),!("Pan"in h||c))return d("blocked",h),void 0;setTimeout(function(){return u.contains(h)?(f=h.style.cssText,""!==f?(d("blocked",h),void 0):(d(!0,h),void 0)):(d("blocked"),void 0)},10)}}),Modernizr.addTest("capture","capture"in w("input")),Modernizr.addTest("fileinput",function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var a=w("input");return a.type="file",!a.disabled}),Modernizr.addTest("fileinputdirectory",function(){var a=w("input"),b="directory";if(a.type="file",b in a)return!0;for(var c=0,d=E.length;d>c;c++)if(E[c]+b in a)return!0;return!1}),Modernizr.addTest("formattribute",function(){var a,c=w("form"),d=w("input"),e=w("div"),f="formtest"+(new Date).getTime(),g=!1;c.id=f;try{d.setAttribute("form",f)}catch(h){b.createAttribute&&(a=b.createAttribute("form"),a.nodeValue=f,d.setAttributeNode(a))}return e.appendChild(c),e.appendChild(d),u.appendChild(e),g=1===c.elements.length&&d.form==c,e.parentNode.removeChild(e),g}),Modernizr.addTest("localizednumber",function(){var a,c=w("div"),d=i(),e=function(){return u.insertBefore(d,u.firstElementChild||u.firstChild)}();c.innerHTML='<input type="number" value="1.0" step="0.1"/>';var f=c.childNodes[0];e.appendChild(c),f.focus();try{b.execCommand("InsertText",!1,"1,1")}catch(g){}return a="number"===f.type&&1.1===f.valueAsNumber&&f.checkValidity(),e.removeChild(c),d.fake&&e.parentNode.removeChild(e),a}),Modernizr.addTest("placeholder","placeholder"in w("input")&&"placeholder"in w("textarea")),Modernizr.addTest("requestautocomplete",!!Modernizr.prefixed("requestAutocomplete",w("form"))),Modernizr.addTest("speechinput",function(){var a=w("input");return"speech"in a||"onwebkitspeechchange"in a}),Modernizr.addTest("formvalidation",function(){var b=w("form");if(!("checkValidity"in b&&"addEventListener"in b))return!1;var c,d=!1;return Modernizr.formvalidationapi=!0,b.addEventListener("submit",function(b){a.opera||b.preventDefault(),b.stopPropagation()},!1),b.innerHTML='<input name="modTest" required><button></button>',G("#modernizr form{position:absolute;top:-99999em}",function(a){a.appendChild(b),c=b.getElementsByTagName("input")[0],c.addEventListener("invalid",function(a){d=!0,a.preventDefault(),a.stopPropagation()},!1),Modernizr.formvalidationmessage=!!c.validationMessage,b.getElementsByTagName("button")[0].click()}),d}),Modernizr.addTest("fullscreen",!(!K("exitFullscreen",b,!1)&&!K("cancelFullScreen",b,!1))),Modernizr.addTest("gamepads",!!K("getGamepads",navigator)),Modernizr.addTest("geolocation","geolocation"in navigator),Modernizr.addTest("hashchange",function(){return P("hashchange",a)===!1?!1:b.documentMode===c||b.documentMode>7}),Modernizr.addTest("history",function(){var b=navigator.userAgent;return-1!==b.indexOf("Android 2")&&-1!==b.indexOf("Mobile Safari")&&-1===b.indexOf("Chrome")?!1:a.history&&"pushState"in a.history}),Modernizr.addTest("ie8compat",!a.addEventListener&&!!b.documentMode&&7===b.documentMode),Modernizr.addTest("sandbox","sandbox"in w("iframe")),Modernizr.addTest("seamless","seamless"in w("iframe")),Modernizr.addTest("srcdoc","srcdoc"in w("iframe")),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var a=new Image,b=w("canvas"),c=b.getContext("2d");a.onload=function(){g("apng",function(){return"undefined"==typeof b.getContext?!1:(c.drawImage(a,0,0),0===c.getImageData(0,0,1,1).data[3])})},a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onload=a.onerror=function(){g("jpegxr",1==a.width,{aliases:["jpeg-xr"]})},a.src="data:image/vnd.ms-photo;base64,SUm8AQgAAAAFAAG8AQAQAAAASgAAAIC8BAABAAAAAQAAAIG8BAABAAAAAQAAAMC8BAABAAAAWgAAAMG8BAABAAAAHwAAAAAAAAAkw91vA07+S7GFPXd2jckNV01QSE9UTwAZAYBxAAAAABP/gAAEb/8AAQAAAQAAAA=="}),Modernizr.addTest("srcset","srcset"in w("img")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webplossless",!1,{aliases:["webp-lossless"]})},a.onload=function(){g("webplossless",1==a.width,{aliases:["webp-lossless"]})},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpalpha",!1,{aliases:["webp-alpha"]})},a.onload=function(){g("webpalpha",1==a.width,{aliases:["webp-alpha"]})},a.src="data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpanimation",!1,{aliases:["webp-animation"]})},a.onload=function(){g("webpanimation",1==a.width,{aliases:["webp-animation"]})},a.src="data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webp",!1)},a.onload=function(){g("webp",1==a.width)},a.src="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="}),Modernizr.addTest("indexeddb",!!K("indexedDB",a)),Modernizr.addTest("inputformaction",!!("formAction"in w("input")),{aliases:["input-formaction"]}),Modernizr.addTest("inputsearchevent",P("search"));var Q="search tel url email datetime date month week time datetime-local number range color".split(" "),R={},S=":)";Modernizr.inputtypes=function(a){for(var d,e,f,g=a.length,h=0;g>h;h++)N.setAttribute("type",e=a[h]),d="text"!==N.type,d&&(N.value=S,N.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&N.style.WebkitAppearance!==c?(u.appendChild(N),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(N,null).WebkitAppearance&&0!==N.offsetHeight,u.removeChild(N)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?N.checkValidity&&N.checkValidity()===!1:N.value!=S)),R[a[h]]=!!d;return R}(Q),Modernizr.addTest("intl",!!K("Intl",a)),Modernizr.addTest("json","JSON"in a&&"parse"in JSON),Modernizr.addTest("olreversed","reversed"in w("ol")),Modernizr.addTest("mathml",function(){var a;return Modernizr.testStyles("#modernizr{position:absolute}",function(b){b.innerHTML="<math><mfrac><mi>xx</mi><mi>yy</mi></mfrac></math>",a=b.offsetHeight>b.offsetWidth}),a}),Modernizr.addTest("lowbandwidth",function(){var a=navigator.connection||{type:0};return 3==a.type||4==a.type||/^[23]g$/.test(a.type)}),Modernizr.addTest("eventsource","EventSource"in a);var T=function(a){if("undefined"==typeof XMLHttpRequest)return!1;var b=new XMLHttpRequest;b.open("get","/",!0);try{b.responseType=a}catch(c){return!1}return"response"in b&&b.responseType==a};Modernizr.addTest("xhrresponsetypearraybuffer",T("arraybuffer")),Modernizr.addTest("xhrresponsetypedocument",T("document")),Modernizr.addTest("xhrresponsetypejson",T("json")),Modernizr.addTest("xhrresponsetypetext",T("text")),Modernizr.addTest("xhrresponsetype",function(){if("undefined"==typeof XMLHttpRequest)return!1;var a=new XMLHttpRequest;return a.open("get","/",!0),"response"in a}()),Modernizr.addTest("xhr2","FormData"in a),Modernizr.addTest("notification","Notification"in a&&"permission"in a.Notification&&"requestPermission"in a.Notification),Modernizr.addTest("pagevisibility",!!K("hidden",b,!1)),Modernizr.addTest("performance",!!K("performance",a)),Modernizr.addTest("pointerevents",function(){var a=!1,b=E.length;for(a=Modernizr.hasEvent("pointerdown");b--&&!a;)P(E[b]+"pointerdown")&&(a=!0);return a}),Modernizr.addTest("pointerlock",!!K("exitPointerLock",b)),Modernizr.addTest("postmessage","postMessage"in a),Modernizr.addTest("quotamanagement",function(){var a=K("temporaryStorage",navigator),b=K("persistentStorage",navigator);return!(!a||!b)}),Modernizr.addTest("requestanimationframe",!!K("requestAnimationFrame",a),{aliases:["raf"]}),Modernizr.addTest("scriptasync","async"in w("script")),Modernizr.addTest("scriptdefer","defer"in w("script")),Modernizr.addTest("serviceworker","serviceWorker"in navigator),Modernizr.addTest("speechrecognition",!!K("SpeechRecognition",a)),Modernizr.addTest("speechsynthesis","SpeechSynthesisUtterance"in a),Modernizr.addTest("localstorage",function(){var a="modernizr";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("sessionstorage",function(){var a="modernizr";try{return sessionStorage.setItem(a,a),sessionStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("websqldatabase","openDatabase"in a),Modernizr.addTest("stylescoped","scoped"in w("style")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("svgasimg",!1)},a.onload=function(){g("svgasimg",1==a.width&&1==a.height)},a.src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg=="});var U={}.toString;Modernizr.addTest("svgclippaths",function(){return!!b.createElementNS&&/SVGClipPath/.test(U.call(b.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("svgfilters",function(){var b=!1;try{b="SVGFEColorMatrixElement"in a&&2==SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(c){}return b}),Modernizr.addTest("inlinesvg",function(){var a=w("div");return a.innerHTML="<svg/>","http://www.w3.org/2000/svg"==(a.firstChild&&a.firstChild.namespaceURI)}),Modernizr.addTest("smil",function(){return!!b.createElementNS&&/SVGAnimate/.test(U.call(b.createElementNS("http://www.w3.org/2000/svg","animate")))}),Modernizr.addTest("svg",!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("textareamaxlength",!!("maxLength"in w("textarea"))),Modernizr.addTest("touchevents",function(){var c;if("ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch)c=!0;else{var d=["@media (",F.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");G(d,function(a){c=9===a.offsetTop})}return c}),Modernizr.addTest("typedarrays","ArrayBuffer"in a),Modernizr.addTest("unicode",function(){var a,c=w("span"),d=b.createElement("span");return G("#modernizr{font-family:Arial,sans;font-size:300em;}",function(b){c.innerHTML="ᝣ",d.innerHTML="☆",b.appendChild(c),b.appendChild(d),a="offsetWidth"in c&&c.offsetWidth!==d.offsetWidth}),a}),Modernizr.addAsyncTest(function(){function a(){var a=new Image;a.onerror=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},a.onload=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==a.width&&1==a.height};for(var b="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";b.length<33e3;)b="\r\n"+b;a.src="data:image/gif;base64,"+b}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){g("datauri",!1)},10);var b=new Image;b.onerror=function(){g("datauri",!1)},b.onload=function(){1==b.width&&1==b.height?a():g("datauri",!1)},b.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("userdata",!!w("div").addBehavior),Modernizr.addTest("vibrate",!!K("vibrate",navigator)),Modernizr.addTest("video",function(){var a=w("video"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),b.vp9=a.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""))}catch(c){}return b}),Modernizr.addAsyncTest(function(){var a,b=300,c=w("video"),d=c.style,e=function(b){clearTimeout(a),c.removeEventListener("playing",e),g("videoautoplay",b||0!==c.currentTime),c.parentNode.removeChild(c)};if(!(Modernizr.video&&"autoplay"in c))return g("videoautoplay",!1),void 0;d.height=0,d.width=0;try{if(Modernizr.video.h264)c.src="data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU";else{if(!Modernizr.video.ogg)return g("videoautoplay",!1),void 0;c.src="data:video/ogg;base64,T2dnUwACAAAAAAAAAABmnCATAAAAAHDEixYBKoB0aGVvcmEDAgEAAQABAAAQAAAQAAAAAAAFAAAAAQAAAAAAAAAAAGIAYE9nZ1MAAAAAAAAAAAAAZpwgEwEAAAACrA7TDlj///////////////+QgXRoZW9yYSsAAABYaXBoLk9yZyBsaWJ0aGVvcmEgMS4xIDIwMDkwODIyIChUaHVzbmVsZGEpAQAAABoAAABFTkNPREVSPWZmbXBlZzJ0aGVvcmEtMC4yOYJ0aGVvcmG+zSj3uc1rGLWpSUoQc5zmMYxSlKQhCDGMYhCEIQhAAAAAAAAAAAAAEW2uU2eSyPxWEvx4OVts5ir1aKtUKBMpJFoQ/nk5m41mUwl4slUpk4kkghkIfDwdjgajQYC8VioUCQRiIQh8PBwMhgLBQIg4FRba5TZ5LI/FYS/Hg5W2zmKvVoq1QoEykkWhD+eTmbjWZTCXiyVSmTiSSCGQh8PB2OBqNBgLxWKhQJBGIhCHw8HAyGAsFAiDgUCw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDAwPEhQUFQ0NDhESFRUUDg4PEhQVFRUOEBETFBUVFRARFBUVFRUVEhMUFRUVFRUUFRUVFRUVFRUVFRUVFRUVEAwLEBQZGxwNDQ4SFRwcGw4NEBQZHBwcDhATFhsdHRwRExkcHB4eHRQYGxwdHh4dGxwdHR4eHh4dHR0dHh4eHRALChAYKDM9DAwOExo6PDcODRAYKDlFOA4RFh0zV1A+EhYlOkRtZ00YIzdAUWhxXDFATldneXhlSFxfYnBkZ2MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEhIVGRoaGhoSFBYaGhoaGhUWGRoaGhoaGRoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhESFh8kJCQkEhQYIiQkJCQWGCEkJCQkJB8iJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQREhgvY2NjYxIVGkJjY2NjGBo4Y2NjY2MvQmNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRISEhUXGBkbEhIVFxgZGxwSFRcYGRscHRUXGBkbHB0dFxgZGxwdHR0YGRscHR0dHhkbHB0dHR4eGxwdHR0eHh4REREUFxocIBERFBcaHCAiERQXGhwgIiUUFxocICIlJRcaHCAiJSUlGhwgIiUlJSkcICIlJSUpKiAiJSUlKSoqEBAQFBgcICgQEBQYHCAoMBAUGBwgKDBAFBgcICgwQEAYHCAoMEBAQBwgKDBAQEBgICgwQEBAYIAoMEBAQGCAgAfF5cdH1e3Ow/L66wGmYnfIUbwdUTe3LMRbqON8B+5RJEvcGxkvrVUjTMrsXYhAnIwe0dTJfOYbWrDYyqUrz7dw/JO4hpmV2LsQQvkUeGq1BsZLx+cu5iV0e0eScJ91VIQYrmqfdVSK7GgjOU0oPaPOu5IcDK1mNvnD+K8LwS87f8Jx2mHtHnUkTGAurWZlNQa74ZLSFH9oF6FPGxzLsjQO5Qe0edcpttd7BXBSqMCL4k/4tFrHIPuEQ7m1/uIWkbDMWVoDdOSuRQ9286kvVUlQjzOE6VrNguN4oRXYGkgcnih7t13/9kxvLYKQezwLTrO44sVmMPgMqORo1E0sm1/9SludkcWHwfJwTSybR4LeAz6ugWVgRaY8mV/9SluQmtHrzsBtRF/wPY+X0JuYTs+ltgrXAmlk10xQHmTu9VSIAk1+vcvU4ml2oNzrNhEtQ3CysNP8UeR35wqpKUBdGdZMSjX4WVi8nJpdpHnbhzEIdx7mwf6W1FKAiucMXrWUWVjyRf23chNtR9mIzDoT/6ZLYailAjhFlZuvPtSeZ+2oREubDoWmT3TguY+JHPdRVSLKxfKH3vgNqJ/9emeEYikGXDFNzaLjvTeGAL61mogOoeG3y6oU4rW55ydoj0lUTSR/mmRhPmF86uwIfzp3FtiufQCmppaHDlGE0r2iTzXIw3zBq5hvaTldjG4CPb9wdxAme0SyedVKczJ9AtYbgPOzYKJvZZImsN7ecrxWZg5dR6ZLj/j4qpWsIA+vYwE+Tca9ounMIsrXMB4Stiib2SPQtZv+FVIpfEbzv8ncZoLBXc3YBqTG1HsskTTotZOYTG+oVUjLk6zhP8bg4RhMUNtfZdO7FdpBuXzhJ5Fh8IKlJG7wtD9ik8rWOJxy6iQ3NwzBpQ219mlyv+FLicYs2iJGSE0u2txzed++D61ZWCiHD/cZdQVCqkO2gJpdpNaObhnDfAPrT89RxdWFZ5hO3MseBSIlANppdZNIV/Rwe5eLTDvkfWKzFnH+QJ7m9QWV1KdwnuIwTNtZdJMoXBf74OhRnh2t+OTGL+AVUnIkyYY+QG7g9itHXyF3OIygG2s2kud679ZWKqSFa9n3IHD6MeLv1lZ0XyduRhiDRtrNnKoyiFVLcBm0ba5Yy3fQkDh4XsFE34isVpOzpa9nR8iCpS4HoxG2rJpnRhf3YboVa1PcRouh5LIJv/uQcPNd095ickTaiGBnWLKVWRc0OnYTSyex/n2FofEPnDG8y3PztHrzOLK1xo6RAml2k9owKajOC0Wr4D5x+3nA0UEhK2m198wuBHF3zlWWVKWLN1CHzLClUfuoYBcx4b1llpeBKmbayaR58njtE9onD66lUcsg0Spm2snsb+8HaJRn4dYcLbCuBuYwziB8/5U1C1DOOz2gZjSZtrLJk6vrLF3hwY4Io9xuT/ruUFRSBkNtUzTOWhjh26irLEPx4jPZL3Fo3QrReoGTTM21xYTT9oFdhTUIvjqTkfkvt0bzgVUjq/hOYY8j60IaO/0AzRBtqkTS6R5ellZd5uKdzzhb8BFlDdAcrwkE0rbXTOPB+7Y0FlZO96qFL4Ykg21StJs8qIW7h16H5hGiv8V2Cflau7QVDepTAHa6Lgt6feiEvJDM21StJsmOH/hynURrKxvUpQ8BH0JF7BiyG2qZpnL/7AOU66gt+reLEXY8pVOCQvSsBtqZTNM8bk9ohRcwD18o/WVkbvrceVKRb9I59IEKysjBeTMmmbA21xu/6iHadLRxuIzkLpi8wZYmmbbWi32RVAUjruxWlJ//iFxE38FI9hNKOoCdhwf5fDe4xZ81lgREhK2m1j78vW1CqkuMu/AjBNK210kzRUX/B+69cMMUG5bYrIeZxVSEZISmkzbXOi9yxwIfPgdsov7R71xuJ7rFcACjG/9PzApqFq7wEgzNJm2suWESPuwrQvejj7cbnQxMkxpm21lUYJL0fKmogPPqywn7e3FvB/FCNxPJ85iVUkCE9/tLKx31G4CgNtWTTPFhMvlu8G4/TrgaZttTChljfNJGgOT2X6EqpETy2tYd9cCBI4lIXJ1/3uVUllZEJz4baqGF64yxaZ+zPLYwde8Uqn1oKANtUrSaTOPHkhvuQP3bBlEJ/LFe4pqQOHUI8T8q7AXx3fLVBgSCVpMba55YxN3rv8U1Dv51bAPSOLlZWebkL8vSMGI21lJmmeVxPRwFlZF1CpqCN8uLwymaZyjbXHCRytogPN3o/n74CNykfT+qqRv5AQlHcRxYrC5KvGmbbUwmZY/29BvF6C1/93x4WVglXDLFpmbapmF89HKTogRwqqSlGbu+oiAkcWFbklC6Zhf+NtTLFpn8oWz+HsNRVSgIxZWON+yVyJlE5tq/+GWLTMutYX9ekTySEQPLVNQQ3OfycwJBM0zNtZcse7CvcKI0V/zh16Dr9OSA21MpmmcrHC+6pTAPHPwoit3LHHqs7jhFNRD6W8+EBGoSEoaZttTCZljfduH/fFisn+dRBGAZYtMzbVMwvul/T/crK1NQh8gN0SRRa9cOux6clC0/mDLFpmbarmF8/e6CopeOLCNW6S/IUUg3jJIYiAcDoMcGeRbOvuTPjXR/tyo79LK3kqqkbxkkMRAOB0GODPItnX3Jnxro/25Ud+llbyVVSN4ySGIgHA6DHBnkWzr7kz410f7cqO/Syt5KqpFVJwn6gBEvBM0zNtZcpGOEPiysW8vvRd2R0f7gtjhqUvXL+gWVwHm4XJDBiMpmmZtrLfPwd/IugP5+fKVSysH1EXreFAcEhelGmbbUmZY4Xdo1vQWVnK19P4RuEnbf0gQnR+lDCZlivNM22t1ESmopPIgfT0duOfQrsjgG4tPxli0zJmF5trdL1JDUIUT1ZXSqQDeR4B8mX3TrRro/2McGeUvLtwo6jIEKMkCUXWsLyZROd9P/rFYNtXPBli0z398iVUlVKAjFlY437JXImUTm2r/4ZYtMy61hf16RPJIU9nZ1MABAwAAAAAAAAAZpwgEwIAAABhp658BScAAAAAAADnUFBQXIDGXLhwtttNHDhw5OcpQRMETBEwRPduylKVB0HRdF0A"}}catch(f){return g("videoautoplay",!1),void 0}c.setAttribute("autoplay",""),c.style="display:none",u.appendChild(c),setTimeout(function(){c.addEventListener("playing",function(){e(!0)}),a=setTimeout(e,b)},0)}),Modernizr.addTest("videoloop","loop"in w("video")),Modernizr.addTest("videopreload","preload"in w("video")),Modernizr.addTest("webintents",!!K("startActivity",navigator)),Modernizr.addTest("webanimations","Animation"in a),Modernizr.addTest("webgl","WebGLRenderingContext"in a),Modernizr.addAsyncTest(function(){if(Modernizr.webglextensions=new Boolean(!1),Modernizr.webgl){var a,b,d;try{a=w("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),d=b.getSupportedExtensions()}catch(e){return}b!==c&&(Modernizr.webglextensions=new Boolean(!0));for(var f=-1,g=d.length;++f<g;)Modernizr.webglextensions[d[f]]=!0;a=c}}),Modernizr.addTest("getusermedia",!!K("getUserMedia",navigator)),Modernizr.addTest("peerconnection",!!K("RTCPeerConnection",a)),Modernizr.addTest("websocketsbinary",function(){var b,c="https:"==location.protocol?"wss":"ws";if("WebSocket"in a){if(b="binaryType"in WebSocket.prototype)return b;try{return!!new WebSocket(c+"://.").binaryType}catch(d){}}return!1}),Modernizr.addTest("websockets","WebSocket"in a&&2===a.WebSocket.CLOSING),Modernizr.addTest("framed",a.location!=top.location),Modernizr.addAsyncTest(function(){try{var a="Modernizr",b=new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");b.onmessage=function(c){b.terminate(),g("dataworkers",a===c.data),b=null},b.onerror=function(){g("dataworkers",!1),b=null},setTimeout(function(){g("dataworkers",!1)},200),b.postMessage(a)}catch(c){setTimeout(function(){g("dataworkers",!1)},0)}}),Modernizr.addTest("sharedworkers","SharedWorker"in a),Modernizr.addTest("webworkers","Worker"in a),e(),f(t),delete r.addTest,delete r.addAsyncTest;for(var V=0;V<Modernizr._q.length;V++)Modernizr._q[V]();a.Modernizr=Modernizr}(this,document);
\ No newline at end of file +/*! modernizr 3.0.0pre (Custom Build) | MIT */!function(a,b,c){function d(a,b){return typeof a===b}function e(){var a,b,c,e,f,g,h;for(var i in q){if(a=[],b=q[i],b.name&&(a.push(b.name.toLowerCase()),b.options&&b.options.aliases&&b.options.aliases.length))for(c=0;c<b.options.aliases.length;c++)a.push(b.options.aliases[c].toLowerCase());for(e=d(b.fn,"function")?b.fn():b.fn,f=0;f<a.length;f++)g=a[f],h=g.split("."),1===h.length?Modernizr[h[0]]=e:2===h.length&&(Modernizr[h[0]][h[1]]=e),t.push((e?"":"no-")+h.join("-"))}}function f(a){var b=u.className,c=Modernizr._config.classPrefix||"",d=new RegExp("(^|\\s)"+c+"no-js(\\s|$)");b=b.replace(d,"$1"+c+"js$2"),Modernizr._config.enableClasses&&(b+=" "+c+a.join(" "+c),u.className=b)}function g(a,b){if("object"==typeof a)for(var c in a)s(a,c)&&g(c,a[c]);else{a=a.toLowerCase();var d=a.split("."),e=Modernizr[d[0]];if(2==d.length&&(e=e[d[1]]),"undefined"!=typeof e)return Modernizr;b="function"==typeof b?b():b,1==d.length?Modernizr[d[0]]=b:2==d.length&&(Modernizr[d[0]][d[1]]=b),f([(b?"":"no-")+d.join("-")]),Modernizr._trigger(a,b)}return Modernizr}function h(a,b){return!!~(""+a).indexOf(b)}function i(){var a=b.body;return a||(a=w("body"),a.fake=!0),a}function j(a,b,c,d){var e,f,g,h,j="modernizr",k=w("div"),l=i();if(parseInt(c,10))for(;c--;)g=w("div"),g.id=d?d[c]:j+(c+1),k.appendChild(g);return e=["­",'<style id="s',j,'">',a,"</style>"].join(""),k.id=j,(l.fake?l:k).innerHTML+=e,l.appendChild(k),l.fake&&(l.style.background="",l.style.overflow="hidden",h=u.style.overflow,u.style.overflow="hidden",u.appendChild(l)),f=b(k,a),l.fake?(l.parentNode.removeChild(l),u.style.overflow=h,u.offsetHeight):k.parentNode.removeChild(k),!!f}function k(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()}).replace(/^ms-/,"-ms-")}function l(b,d){var e=b.length;if("CSS"in a&&"supports"in a.CSS){for(;e--;)if(a.CSS.supports(k(b[e]),d))return!0;return!1}if("CSSSupportsRule"in a){for(var f=[];e--;)f.push("("+k(b[e])+":"+d+")");return f=f.join(" or "),j("@supports ("+f+") { #modernizr { position: absolute; } }",function(b){return"absolute"==(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle).position})}return c}function m(a,b,e,f){function g(){j&&(delete y.style,delete y.modElem)}if(f=d(f,"undefined")?!1:f,!d(e,"undefined")){var i=l(a,e);if(!d(i,"undefined"))return i}var j,k,m,n;y.style||(j=!0,y.modElem=w("modernizr"),y.style=y.modElem.style);for(k in a)if(m=a[k],n=y.style[m],!h(m,"-")&&y.style[m]!==c){if(f||d(e,"undefined"))return g(),"pfx"==b?m:!0;try{y.style[m]=e}catch(o){}if(y.style[m]!=n)return g(),"pfx"==b?m:!0}return g(),!1}function n(a,b,c){var e;for(var f in a)if(a[f]in b)return c===!1?a[f]:(e=b[a[f]],d(e,"function")&&"bind"in e?e.bind(c||b):e);return!1}function o(a,b,c,e,f){var g=a.charAt(0).toUpperCase()+a.slice(1),h=(a+" "+D.join(g+" ")+g).split(" ");return d(b,"string")||d(b,"undefined")?m(h,b,e,f):(h=(a+" "+E.join(g+" ")+g).split(" "),n(h,b,c))}function p(a,b,d){return o(a,c,c,b,d)}var q=[],r={_version:"v3.0.0pre",_config:{classPrefix:"",enableClasses:!0},_q:[],on:function(a,b){setTimeout(function(){b(this[a])},0)},addTest:function(a,b,c){q.push({name:a,fn:b,options:c})},addAsyncTest:function(a){q.push({name:null,fn:a})}},Modernizr=function(){};Modernizr.prototype=r,Modernizr=new Modernizr;var s,t=[],u=b.documentElement;!function(){var a={}.hasOwnProperty;s=d(a,"undefined")||d(a.call,"undefined")?function(a,b){return b in a&&d(a.constructor.prototype[b],"undefined")}:function(b,c){return a.call(b,c)}}(),r._l={},r.on=function(a,b){this._l[a]||(this._l[a]=[]),this._l[a].push(b),Modernizr.hasOwnProperty(a)&&setTimeout(function(){Modernizr._trigger(a,Modernizr[a])},0)},r._trigger=function(a,b){if(this._l[a]){var c=this._l[a];setTimeout(function(){var a,d;for(a=0;a<c.length;a++)(d=c[a])(b)},0),delete this._l[a]}},Modernizr._q.push(function(){r.addTest=g});var v;!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=v.elements;return"string"==typeof a?a.split(" "):a}function e(a){var b=x[a[u]];return b||(b={},w++,a[u]=w,x[w]=b),b}function f(a,c,d){if(c||(c=b),p)return c.createElement(a);d||(d=e(c));var f;return f=d.cache[a]?d.cache[a].cloneNode():t.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),f.canHaveChildren&&!s.test(a)?d.frag.appendChild(f):f}function g(a,c){if(a||(a=b),p)return a.createDocumentFragment();c=c||e(a);for(var f=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)f.createElement(h[g]);return f}function h(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return v.shivMethods?f(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(v,b.frag)}function i(a){a||(a=b);var d=e(a);return!v.shivCSS||o||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}")),p||h(a,d),a}function j(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(k(b)));return g}function k(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(z+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function l(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+z+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function m(a){for(var b=a.length;b--;)a[b].removeNode()}function n(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,f,g=e(a),h=a.namespaces,i=a.parentWindow;return!A||a.printShived?a:("undefined"==typeof h[z]&&h.add(z),i.attachEvent("onbeforeprint",function(){b();for(var e,g,h,i=a.styleSheets,k=[],m=i.length,n=Array(m);m--;)n[m]=i[m];for(;h=n.pop();)if(!h.disabled&&y.test(h.media)){try{e=h.imports,g=e.length}catch(o){g=0}for(m=0;g>m;m++)n.push(e[m]);try{k.push(h.cssText)}catch(o){}}k=l(k.reverse().join("")),f=j(a),d=c(a,k)}),i.attachEvent("onafterprint",function(){m(f),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var o,p,q="3.6.2",r=a.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,t=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,u="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",o="hidden"in a,p=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){o=!0,p=!0}}(),v={elements:r.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:q,shivCSS:r.shivCSS!==!1,supportsUnknownElements:p,shivMethods:r.shivMethods!==!1,type:"default",shivDocument:i,createElement:f,createDocumentFragment:g},a.html5=v,i(b);var y=/^$|\b(?:all|print)\b/,z="html5shiv",A=!p&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();v.type+=" print",v.shivPrint=n,n(b)}(this,b),function(a,b,c){function d(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function e(a,c,e,f,h,i){var j,k,m=b.createElement("script");f=f||l.errorTimeout,m.src=a;for(k in e)m.setAttribute(k,e[k]);c=i?g:c||s,m.onreadystatechange=m.onload=function(){!j&&d(m.readyState)&&(j=1,c(),m.onload=m.onreadystatechange=null)},n(function(){j||(j=1,c(1))},f),E(),h?m.onload():o.parentNode.insertBefore(m,o)}function f(a,c,d,e,f,h){var i,j=b.createElement("link");e=e||l.errorTimeout,c=h?g:c||s,j.href=a,j.rel="stylesheet",j.type="text/css";for(i in d)j.setAttribute(i,d[i]);f||(E(),o.parentNode.insertBefore(j,o),n(c,0))}function g(){var a=q.shift();r=1,a?a.t?n(function(){("c"==a.t?l.injectCss:l.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),g()):r=0}function h(a,c,e,f,h,i,j){function k(b){if(!p&&d(m.readyState)&&(t.r=p=1,!r&&g(),b)){"img"!=a&&n(function(){v.removeChild(m)},50);for(var e in G[c])G[c].hasOwnProperty(e)&&G[c][e].onload();m.onload=m.onreadystatechange=null}}j=j||l.errorTimeout;var m=b.createElement(a),p=0,s=0,t={t:e,s:c,e:h,a:i,x:j};1===G[c]&&(s=1,G[c]=[]),"object"==a?(m.data=c,m.setAttribute("type","text/css")):(m.src=c,m.type=a),m.width=m.height="0",m.onerror=m.onload=m.onreadystatechange=function(){k.call(this,s)},q.splice(f,0,t),"img"!=a&&(s||2===G[c]?(E(),v.insertBefore(m,u?null:o),n(k,j)):G[c].push(m))}function i(a,b,c,d,e){return r=0,b=b||"j",C(a)?h("c"==b?z:y,a,b,this.i++,c,d,e):(q.splice(this.i++,0,a),1==q.length&&g()),this}function j(){var a=l;return a.loader={load:i,i:0},a}var k,l,m=b.documentElement,n=a.setTimeout,o=b.getElementsByTagName("script")[0],p={}.toString,q=[],r=0,s=function(){},t="MozAppearance"in m.style,u=t&&!!b.createRange().compareNode,v=u?m:o.parentNode,w=a.opera&&"[object Opera]"==p.call(a.opera),x=!!b.attachEvent&&!w,y=t?"object":x?"script":"img",z=x?"script":y,A=Array.isArray||function(a){return"[object Array]"==p.call(a)},B=function(a){return Object(a)===a},C=function(a){return"string"==typeof a},D=function(a){return"[object Function]"==p.call(a)},E=function(){o&&o.parentNode||(o=b.getElementsByTagName("script")[0])},F=[],G={},H={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}};l=function(a){function b(a){var b,c,d,e=a.split("!"),f=F.length,g=e.pop(),h=e.length,i={url:g,origUrl:g,prefixes:e};for(c=0;h>c;c++)d=e[c].split("="),b=H[d.shift()],b&&(i=b(i,d));for(c=0;f>c;c++)i=F[c](i);return i}function d(a){var b=a.split("?")[0];return b.substr(b.lastIndexOf(".")+1)}function e(a,e,f,g,h){{var i=b(a),k=i.autoCallback;d(i.url)}if(!i.bypass)return e&&(e=D(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(G[i.url]&&i.reexecute!==!0?i.noexec=!0:G[i.url]=1,a&&f.load(i.url,i.forceCSS||!i.forceJS&&"css"==d(i.url)?"c":c,i.noexec,i.attrs,i.timeout),(D(e)||D(k))&&f.load(function(){j(),e&&e(i.origUrl,h,g),k&&k(i.origUrl,h,g),G[i.url]=2}),void 0)}function f(a,b){function c(a,c){if(""===a||a){if(C(a))c||(i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}),e(a,i,b,0,f);else if(B(a)){d=function(){var b,c=0;for(b in a)a.hasOwnProperty(b)&&c++;return c}();for(var g in a)a.hasOwnProperty(g)&&(c||--d||(D(i)?i=function(){var a=[].slice.call(arguments);j.apply(this,a),k()}:i[g]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),k()}}(j[g])),e(a[g],i,b,g,f))}}else!c&&k()}var d,f=!!a.test,g=f?a.yep:a.nope,h=a.load||a.both,i=a.callback||s,j=i,k=a.complete||s;c(g,!!h||!!a.complete),h&&c(h),!h&&!!a.complete&&c("")}var g,h,i=this.yepnope.loader;if(C(a))e(a,0,i,0);else if(A(a))for(g=0;g<a.length;g++)h=a[g],C(h)?e(h,0,i,0):A(h)?l(h):B(h)&&f(h,i);else B(a)&&f(a,i)},l.addPrefix=function(a,b){H[a]=b},l.addFilter=function(a){F.push(a)},l.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",k=function(){b.removeEventListener("DOMContentLoaded",k,0),b.readyState="complete"},0)),a.yepnope=j(),a.yepnope.executeStack=g,a.yepnope.injectJs=e,a.yepnope.injectCss=f}(a,b),r.load=function(){a.yepnope.apply(a,[].slice.call(arguments,0))};var w=function(){return b.createElement.apply(b,arguments)},x={elem:w("modernizr")};Modernizr._q.push(function(){delete x.elem});var y={style:x.elem.style};Modernizr._q.unshift(function(){delete y.style});var z=r.testProp=function(a,b,d){return m([a],c,b,d)},A=t.slice;Function.prototype.bind||(Function.prototype.bind=function(a){var b=this;if("function"!=typeof b)throw new TypeError;var c=A.call(arguments,1),d=function(){if(this instanceof d){var e=function(){};e.prototype=b.prototype;var f=new e,g=b.apply(f,c.concat(A.call(arguments)));return Object(g)===g?g:f}return b.apply(a,c.concat(A.call(arguments)))};return d}),Modernizr.addTest("applicationcache","applicationCache"in a),Modernizr.addTest("audioloop","loop"in w("audio")),Modernizr.addTest("audio",function(){var a=w("audio"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),b.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),b.opus=a.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),b.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),b.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,""))}catch(c){}return b}),Modernizr.addTest("canvas",function(){var a=w("canvas");return!(!a.getContext||!a.getContext("2d"))});var B=w("canvas");Modernizr.addTest("todataurljpeg",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/jpeg").indexOf("data:image/jpeg")}),Modernizr.addTest("todataurlpng",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/png").indexOf("data:image/png")}),Modernizr.addTest("todataurlwebp",function(){return!!Modernizr.canvas&&0===B.toDataURL("image/webp").indexOf("data:image/webp")}),Modernizr.addTest("canvastext",function(){return Modernizr.canvas===!1?!1:"function"==typeof w("canvas").getContext("2d").fillText}),Modernizr.addTest("contextmenu","contextMenu"in u&&"HTMLMenuItemElement"in a),Modernizr.addTest("cookies",function(){try{b.cookie="cookietest=1";var a=-1!=b.cookie.indexOf("cookietest=");return b.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT",a}catch(c){return!1}});var C="Webkit Moz O ms",D=C.split(" ");r._cssomPrefixes=D;var E=C.toLowerCase().split(" ");r._domPrefixes=E,r.testAllProps=o,r.testAllProps=p,Modernizr.addTest("cssanimations",p("animationName","a",!0)),Modernizr.addTest("bgpositionshorthand",function(){var a=w("a"),b=a.style,c="right 10px bottom 10px";return b.cssText="background-position: "+c+";",b.backgroundPosition===c}),Modernizr.addTest("bgpositionxy",function(){return p("backgroundPositionX","3px",!0)&&p("backgroundPositionY","5px",!0)}),Modernizr.addTest("bgrepeatround",p("backgroundRepeat","round")),Modernizr.addTest("bgrepeatspace",p("backgroundRepeat","space")),Modernizr.addTest("backgroundsize",p("backgroundSize","100%",!0)),Modernizr.addTest("bgsizecover",p("backgroundSize","cover")),Modernizr.addTest("borderimage",p("borderImage","url() 1",!0)),Modernizr.addTest("borderradius",p("borderRadius","0px",!0)),Modernizr.addTest("boxshadow",p("boxShadow","1px 1px",!0)),Modernizr.addTest("boxsizing",p("boxSizing","border-box",!0)&&(b.documentMode===c||b.documentMode>7));var F=" -webkit- -moz- -o- -ms- ".split(" ");r._prefixes=F,Modernizr.addTest("csscalc",function(){var a="width:",b="calc(10px);",c=w("div");return c.style.cssText=a+F.join(b+a),!!c.style.length});var G=r.testStyles=j;Modernizr.addTest("checked",function(){return G("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(a){var b=w("input");return b.setAttribute("type","checkbox"),b.setAttribute("checked","checked"),a.appendChild(b),20===b.offsetLeft})}),function(){Modernizr.addTest("csscolumns",function(){var a=!1,b=p("columnCount");try{(a=!!b)&&(a=new Boolean(a))}catch(c){}return a});for(var a,b,c=["Width","Span","Fill","Gap","Rule","RuleColor","RuleStyle","RuleWidth","BreakBefore","BreakAfter","BreakInside"],d=0;d<c.length;d++)a=c[d].toLowerCase(),b=p("column"+c[d]),("breakbefore"===a||"breakafter"===a||"breakinside"==a)&&(b=b||p(c[d])),Modernizr.addTest("csscolumns."+a,b)}(),Modernizr.addTest("cubicbezierrange",function(){var a=w("div");return a.style.cssText=F.join("transition-timing-function:cubic-bezier(1,0,0,1.1); "),!!a.style.length}),Modernizr.addTest("displayrunin",p("display","run-in"),{aliases:["display-runin"]}),G("#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}",function(a){var b,c=a.children;b=c[0].offsetLeft<c[1].offsetLeft,Modernizr.addTest("displaytable",b,{aliases:["display-table"]})},2),Modernizr.addTest("ellipsis",p("textOverflow","ellipsis"));var H=a.CSS;Modernizr.addTest("cssescape",H?"function"==typeof H.escape:!1),Modernizr.addTest("cssfilters",function(){var a=w("div");return a.style.cssText=F.join("filter:blur(2px); "),!!a.style.length&&(b.documentMode===c||b.documentMode>9)}),Modernizr.addTest("flexbox",p("flexBasis","1px",!0)),Modernizr.addTest("flexboxlegacy",p("boxDirection","reverse",!0)),Modernizr.addTest("flexboxtweener",p("flexAlign","end",!0)),Modernizr.addTest("flexwrap",p("flexWrap","wrap",!0));var I=function(){var a=navigator.userAgent,b=a.match(/applewebkit\/([0-9]+)/gi)&&parseFloat(RegExp.$1),c=a.match(/w(eb)?osbrowser/gi),d=a.match(/windows phone/gi)&&a.match(/iemobile\/([0-9])+/gi)&&parseFloat(RegExp.$1)>=9,e=533>b&&a.match(/android/gi);return c||e||d}();I?Modernizr.addTest("fontface",!1):G('@font-face {font-family:"font";src:url("https://")}',function(a,c){var d=b.getElementById("smodernizr"),e=d.sheet||d.styleSheet,f=e?e.cssRules&&e.cssRules[0]?e.cssRules[0].cssText:e.cssText||"":"",g=/src/i.test(f)&&0===f.indexOf(c.split(" ")[0]);Modernizr.addTest("fontface",g)}),G('#modernizr{font:0/0 a}#modernizr:after{content:":)";visibility:hidden;font:7px/1 a}',function(a){Modernizr.addTest("generatedcontent",a.offsetHeight>=7)}),Modernizr.addTest("cssgradients",function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);",d=(a+"-webkit- ".split(" ").join(b+a)+F.join(c+a)).slice(0,-a.length),e=w("div"),f=e.style;return f.cssText=d,(""+f.backgroundImage).indexOf("gradient")>-1}),Modernizr.addTest("hsla",function(){var a=w("div"),b=a.style;return b.cssText="background-color:hsla(120,40%,100%,.5)",h(b.backgroundColor,"rgba")||h(b.backgroundColor,"hsla")}),Modernizr.addAsyncTest(function(){function c(){function e(){try{var a=w("div"),c=w("span"),d=a.style,e=0,f=0,g=!1,h=b.body.firstElementChild||b.body.firstChild;return a.appendChild(c),c.innerHTML="Bacon ipsum dolor sit amet jerky velit in culpa hamburger et. Laborum dolor proident, enim dolore duis commodo et strip steak. Salami anim et, veniam consectetur dolore qui tenderloin jowl velit sirloin. Et ad culpa, fatback cillum jowl ball tip ham hock nulla short ribs pariatur aute. Pig pancetta ham bresaola, ut boudin nostrud commodo flank esse cow tongue culpa. Pork belly bresaola enim pig, ea consectetur nisi. Fugiat officia turkey, ea cow jowl pariatur ullamco proident do laborum velit sausage. Magna biltong sint tri-tip commodo sed bacon, esse proident aliquip. Ullamco ham sint fugiat, velit in enim sed mollit nulla cow ut adipisicing nostrud consectetur. Proident dolore beef ribs, laborum nostrud meatball ea laboris rump cupidatat labore culpa. Shankle minim beef, velit sint cupidatat fugiat tenderloin pig et ball tip. Ut cow fatback salami, bacon ball tip et in shank strip steak bresaola. In ut pork belly sed mollit tri-tip magna culpa veniam, short ribs qui in andouille ham consequat. Dolore bacon t-bone, velit short ribs enim strip steak nulla. Voluptate labore ut, biltong swine irure jerky. Cupidatat excepteur aliquip salami dolore. Ball tip strip steak in pork dolor. Ad in esse biltong. Dolore tenderloin exercitation ad pork loin t-bone, dolore in chicken ball tip qui pig. Ut culpa tongue, sint ribeye dolore ex shank voluptate hamburger. Jowl et tempor, boudin pork chop labore ham hock drumstick consectetur tri-tip elit swine meatball chicken ground round. Proident shankle mollit dolore. Shoulder ut duis t-bone quis reprehenderit. Meatloaf dolore minim strip steak, laboris ea aute bacon beef ribs elit shank in veniam drumstick qui. Ex laboris meatball cow tongue pork belly. Ea ball tip reprehenderit pig, sed fatback boudin dolore flank aliquip laboris eu quis. Beef ribs duis beef, cow corned beef adipisicing commodo nisi deserunt exercitation. Cillum dolor t-bone spare ribs, ham hock est sirloin. Brisket irure meatloaf in, boudin pork belly sirloin ball tip. Sirloin sint irure nisi nostrud aliqua. Nostrud nulla aute, enim officia culpa ham hock. Aliqua reprehenderit dolore sunt nostrud sausage, ea boudin pork loin ut t-bone ham tempor. Tri-tip et pancetta drumstick laborum. Ham hock magna do nostrud in proident. Ex ground round fatback, venison non ribeye in.",b.body.insertBefore(a,h),d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;",e=c.offsetHeight,f=c.offsetWidth,d.cssText="position:absolute;top:0;left:0;width:5em;text-align:justify;text-justification:newspaper;"+F.join("hyphens:auto; "),g=c.offsetHeight!=e||c.offsetWidth!=f,b.body.removeChild(a),a.removeChild(c),g}catch(i){return!1}}function f(a,c){try{var d=w("div"),e=w("span"),f=d.style,g=0,h=!1,i=!1,j=!1,k=b.body.firstElementChild||b.body.firstChild;return f.cssText="position:absolute;top:0;left:0;overflow:visible;width:1.25em;",d.appendChild(e),b.body.insertBefore(d,k),e.innerHTML="mm",g=e.offsetHeight,e.innerHTML="m"+a+"m",i=e.offsetHeight>g,c?(e.innerHTML="m<br />m",g=e.offsetWidth,e.innerHTML="m"+a+"m",j=e.offsetWidth>g):j=!0,i===!0&&j===!0&&(h=!0),b.body.removeChild(d),d.removeChild(e),h}catch(l){return!1}}function h(c){try{var d,e=w("input"),f=w("div"),g="lebowski",h=!1,i=b.body.firstElementChild||b.body.firstChild;if(f.innerHTML=g+c+g,b.body.insertBefore(f,i),b.body.insertBefore(e,f),e.setSelectionRange?(e.focus(),e.setSelectionRange(0,0)):e.createTextRange&&(d=e.createTextRange(),d.collapse(!0),d.moveEnd("character",0),d.moveStart("character",0),d.select()),a.find)h=a.find(g+g);else try{d=a.self.document.body.createTextRange(),h=d.findText(g+g)}catch(j){h=!1}return b.body.removeChild(f),b.body.removeChild(e),h}catch(j){return!1}}return b.body||b.getElementsByTagName("body")[0]?(g("csshyphens",function(){if(!p("hyphens","auto",!0))return!1;try{return e()}catch(a){return!1}}),g("softhyphens",function(){try{return f("­",!0)&&f("​",!1)}catch(a){return!1}}),void g("softhyphensfind",function(){try{return h("­")&&h("​")}catch(a){return!1}})):void setTimeout(c,d)}var d=300;setTimeout(c,d)}),G("#modernizr div {width:100px} #modernizr :last-child{width:200px;display:block}",function(a){Modernizr.addTest("lastchild",a.lastChild.offsetWidth>a.firstChild.offsetWidth)},2),Modernizr.addTest("cssmask",p("maskRepeat","repeat-x",!0));var J=function(){var b=a.matchMedia||a.msMatchMedia;return b?function(a){var c=b(a);return c&&c.matches||!1}:function(b){var c=!1;return j("@media "+b+" { #modernizr { position: absolute; } }",function(b){c="absolute"==(a.getComputedStyle?a.getComputedStyle(b,null):b.currentStyle).position}),c}}(),K=r.mq=J;Modernizr.addTest("mediaqueries",K("only all")),Modernizr.addTest("multiplebgs",function(){var a=w("div"),b=a.style;return b.cssText="background:url(https://),url(https://),red url(https://)",/(url\s*\(.*?){3}/.test(b.background)}),G("#modernizr div {width:1px} #modernizr div:nth-child(2n) {width:2px;}",function(a){Modernizr.addTest("nthchild",function(){for(var b=a.getElementsByTagName("div"),c=!0,d=0;5>d;d++)c=c&&b[d].offsetWidth===d%2+1;return c})},5);var L=r.prefixed=function(a,b,c){return b?o(a,b,c):o(a,"pfx")};Modernizr.addTest("objectfit",!!L("objectFit"),{aliases:["object-fit"]}),Modernizr.addTest("opacity",function(){var a=w("div"),b=a.style;return b.cssText=F.join("opacity:.55;"),/^0.55$/.test(b.opacity)}),Modernizr.addTest("overflowscrolling",p("overflowScrolling","touch",!0)),Modernizr.addTest("csspointerevents",function(){var a=w("x");return a.style.cssText="pointer-events:auto","auto"===a.style.pointerEvents}),Modernizr.addTest("csspositionsticky",function(){var a="position:",b="sticky",c=w("modernizr"),d=c.style;return d.cssText=a+F.join(b+";"+a).slice(0,-a.length),-1!==d.position.indexOf(b)}),Modernizr.addTest("csspseudoanimations",function(){var b=!1;if(!Modernizr.cssanimations||!a.getComputedStyle)return b;var c=["@",Modernizr._prefixes.join("keyframes csspseudoanimations { from { font-size: 10px; } }@").replace(/\@$/,""),'#modernizr:before { content:" "; font-size:5px;',Modernizr._prefixes.join("animation:csspseudoanimations 1ms infinite;"),"}"].join("");return Modernizr.testStyles(c,function(c){b="10px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("csstransitions",p("transition","all",!0)),Modernizr.addTest("csspseudotransitions",function(){var b=!1;if(!Modernizr.csstransitions||!a.getComputedStyle)return b;var c='#modernizr:before { content:" "; font-size:5px;'+Modernizr._prefixes.join("transition:0s 100s;")+"}#modernizr.trigger:before { font-size:10px; }";return Modernizr.testStyles(c,function(c){a.getComputedStyle(c,":before").getPropertyValue("font-size"),c.className+="trigger",b="5px"===a.getComputedStyle(c,":before").getPropertyValue("font-size")}),b}),Modernizr.addTest("cssreflections",p("boxReflect","above",!0)),Modernizr.addTest("regions",function(){var a=Modernizr.prefixed("flowFrom"),b=Modernizr.prefixed("flowInto");if(!a||!b)return!1;var d=w("div"),e=w("div"),f=w("div"),g="modernizr_flow_for_regions_check";e.innerText="M",d.style.cssText="top: 150px; left: 150px; padding: 0px;",f.style.cssText="width: 50px; height: 50px; padding: 42px;",f.style[a]=g,d.appendChild(e),d.appendChild(f),u.appendChild(d);var h,i,j=e.getBoundingClientRect();return e.style[b]=g,h=e.getBoundingClientRect(),i=parseInt(h.left-j.left,10),u.removeChild(d),e=f=d=c,42==i}),Modernizr.addTest("cssremunit",function(){var a=w("div");try{a.style.fontSize="3rem"}catch(b){}return/rem/.test(a.style.fontSize)}),Modernizr.addTest("cssresize",p("resize","both",!0)),Modernizr.addTest("rgba",function(){var a=w("div"),b=a.style;return b.cssText="background-color:rgba(150,255,150,.5)",(""+b.backgroundColor).indexOf("rgba")>-1}),G("#modernizr{overflow: scroll; width: 40px; height: 40px; }#"+F.join("scrollbar{width:0px} #modernizr::").split("#").slice(1).join("#")+"scrollbar{width:0px}",function(a){Modernizr.addTest("cssscrollbar",40==a.scrollWidth)}),Modernizr.addTest("shapes",p("shapeOutside","content-box",!0)),Modernizr.addTest("siblinggeneral",function(){return G("#modernizr div {width:100px} #modernizr div ~ div {width:200px;display:block}",function(a){return 200==a.lastChild.offsetWidth},2)}),G("#modernizr{position: absolute; top: -10em; visibility:hidden; font: normal 10px arial;}#subpixel{float: left; font-size: 33.3333%;}",function(b){var c=b.firstChild;c.innerHTML="This is a text written in Arial",Modernizr.addTest("subpixelfont",a.getComputedStyle?"44px"!==a.getComputedStyle(c,null).getPropertyValue("width"):!1)},1,["subpixel"]),Modernizr.addTest("supports","CSSSupportsRule"in a),Modernizr.addTest("target",function(){var b=a.document;if(!("querySelectorAll"in b))return!1;try{return b.querySelectorAll(":target"),!0}catch(c){return!1}}),Modernizr.addTest("textshadow",z("textShadow","1px 1px")),Modernizr.addTest("csstransforms",p("transform","scale(1)",!0)),Modernizr.addTest("csstransforms3d",function(){var a=!!p("perspective","1px",!0);return a&&"webkitPerspective"in u.style&&G("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0}}",function(b){a=9===b.offsetLeft&&5===b.offsetHeight}),a}),Modernizr.addTest("preserve3d",p("transformStyle","preserve-3d")),Modernizr.addTest("userselect",p("userSelect","none",!0)),Modernizr.addTest("dart",!!L("startDart",navigator)),Modernizr.addTest("dataview","undefined"!=typeof DataView&&"getFloat64"in DataView.prototype),Modernizr.addTest("classlist","classList"in u),Modernizr.addTest("createelementattrs",function(){try{return"test"==w('<input name="test" />').getAttribute("name")}catch(a){return!1}},{aliases:["createelement-attrs"]}),Modernizr.addTest("dataset",function(){var a=w("div");return a.setAttribute("data-a-b","c"),!(!a.dataset||"c"!==a.dataset.aB)}),Modernizr.addTest("documentfragment",function(){return"createDocumentFragment"in b&&"appendChild"in u}),Modernizr.addTest("microdata","getItems"in b),Modernizr.addTest("draganddrop",function(){var a=w("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a});var M={},N="autocomplete autofocus list placeholder max min multiple pattern required step".split(" "),O=w("input");Modernizr.input=function(b){for(var c=0,d=b.length;d>c;c++)M[b[c]]=!!(b[c]in O);return M.list&&(M.list=!(!w("datalist")||!a.HTMLDataListElement)),M}(N),Modernizr.addTest("datalistelem",Modernizr.input.list),Modernizr.addTest("details",function(){var a,b=w("details");return"open"in b?(G("#modernizr details{display:block}",function(c){c.appendChild(b),b.innerHTML="<summary>a</summary>b",a=b.offsetHeight,b.open=!0,a=a!=b.offsetHeight}),a):!1}),Modernizr.addTest("outputelem","value"in w("output")),Modernizr.addTest("progressbar",w("progress").max!==c),Modernizr.addTest("meter",w("meter").max!==c),Modernizr.addTest("ruby",function(){function c(c,d){var e;return a.getComputedStyle?e=b.defaultView.getComputedStyle(c,null).getPropertyValue(d):c.currentStyle&&(e=c.currentStyle[d]),e}function d(){u.removeChild(e),e=null,f=null,g=null}var e=w("ruby"),f=w("rt"),g=w("rp"),h="display",i="fontSize";return e.appendChild(g),e.appendChild(f),u.appendChild(e),"none"==c(g,h)||"ruby"==c(e,h)&&"ruby-text"==c(f,h)||"6pt"==c(g,i)&&"6pt"==c(f,i)?(d(),!0):(d(),!1)}),Modernizr.addTest("template","content"in w("template")),Modernizr.addTest("time","valueAsDate"in w("time")),Modernizr.addTest("texttrackapi","function"==typeof w("video").addTextTrack),Modernizr.addTest("track","kind"in w("track")),Modernizr.addTest("es5array",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest("es5date",function(){var a="2013-04-12T06:06:37.307Z",b=!1;try{b=!!Date.parse(a)}catch(c){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&b)}),Modernizr.addTest("es5function",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest("es5object",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest("strictmode",function(){return!this}()),Modernizr.addTest("es5string",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest("contains",d(String.prototype.contains,"function")),Modernizr.addTest("promises",function(){return"Promise"in a&&"cast"in a.Promise&&"resolve"in a.Promise&&"reject"in a.Promise&&"all"in a.Promise&&"race"in a.Promise&&function(){var b;return new a.Promise(function(a){b=a}),"function"==typeof b}()}),Modernizr.addAsyncTest(function(){var b,c,d=function(a,b){var c=!!a;c&&(c=new Boolean(c),c.blocked="blocked"===a),g("flash",function(){return c}),b&&u.removeChild(b)};try{c="Pan"in new a.ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}if(b=!("plugins"in navigator&&"Shockwave Flash"in navigator.plugins||c))d(!1);else{var f,h=w("embed");if(h.type="application/x-shockwave-flash",u.appendChild(h),!("Pan"in h||c))return void d("blocked",h);setTimeout(function(){return u.contains(h)?(f=h.style.cssText,""!==f?void d("blocked",h):void d(!0,h)):void d("blocked")},10)}}),Modernizr.addTest("fullscreen",!(!L("exitFullscreen",b,!1)&&!L("cancelFullScreen",b,!1))); +var P=function(a){function c(b,c){var e;return b?(c&&"string"!=typeof c||(c=w(c||"div")),b="on"+b,e=b in c,!e&&d&&(c.setAttribute||(c=w("div")),c.setAttribute&&c.removeAttribute&&(c.setAttribute(b,""),e="function"==typeof c[b],c[b]!==a&&(c[b]=a),c.removeAttribute(b))),e):!1}var d=!("onblur"in b.documentElement);return c}(),Q=r.hasEvent=P;Modernizr.addTest("hashchange",function(){return Q("hashchange",a)===!1?!1:b.documentMode===c||b.documentMode>7}),Modernizr.addTest("history",function(){var b=navigator.userAgent;return-1!==b.indexOf("Android 2.")&&-1!==b.indexOf("Mobile Safari")&&-1===b.indexOf("Chrome")?!1:a.history&&"pushState"in a.history}),Modernizr.addTest("ie8compat",!a.addEventListener&&!!b.documentMode&&7===b.documentMode),Modernizr.addAsyncTest(function(){if(!Modernizr.canvas)return!1;var a=new Image,b=w("canvas"),c=b.getContext("2d");a.onload=function(){g("apng",function(){return"undefined"==typeof b.getContext?!1:(c.drawImage(a,0,0),0===c.getImageData(0,0,1,1).data[3])})},a.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACGFjVEwAAAABAAAAAcMq2TYAAAANSURBVAiZY2BgYPgPAAEEAQB9ssjfAAAAGmZjVEwAAAAAAAAAAQAAAAEAAAAAAAAAAAD6A+gBAbNU+2sAAAARZmRBVAAAAAEImWNgYGBgAAAABQAB6MzFdgAAAABJRU5ErkJggg=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webplossless",!1,{aliases:["webp-lossless"]})},a.onload=function(){g("webplossless",1==a.width,{aliases:["webp-lossless"]})},a.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpalpha",!1,{aliases:["webp-alpha"]})},a.onload=function(){g("webpalpha",1==a.width,{aliases:["webp-alpha"]})},a.src="data:image/webp;base64,UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAABBxAR/Q9ERP8DAABWUDggGAAAADABAJ0BKgEAAQADADQlpAADcAD++/1QAA=="}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webpanimation",!1,{aliases:["webp-animation"]})},a.onload=function(){g("webpanimation",1==a.width,{aliases:["webp-animation"]})},a.src="data:image/webp;base64,UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA"}),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("webp",!1)},a.onload=function(){g("webp",1==a.width)},a.src="data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="});var R="search tel url email datetime date month week time datetime-local number range color".split(" "),S={},T=":)";Modernizr.inputtypes=function(a){for(var d,e,f,g=a.length,h=0;g>h;h++)O.setAttribute("type",e=a[h]),d="text"!==O.type,d&&(O.value=T,O.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(e)&&O.style.WebkitAppearance!==c?(u.appendChild(O),f=b.defaultView,d=f.getComputedStyle&&"textfield"!==f.getComputedStyle(O,null).WebkitAppearance&&0!==O.offsetHeight,u.removeChild(O)):/^(search|tel)$/.test(e)||(d=/^(url|email)$/.test(e)?O.checkValidity&&O.checkValidity()===!1:O.value!=T)),S[a[h]]=!!d;return S}(R),Modernizr.addTest("json","JSON"in a&&"parse"in JSON);var U=function(a){if("undefined"==typeof XMLHttpRequest)return!1;var b=new XMLHttpRequest;b.open("get","/",!0);try{b.responseType=a}catch(c){return!1}return"response"in b&&b.responseType==a};Modernizr.addTest("xhrresponsetypejson",U("json")),Modernizr.addTest("xhrresponsetypetext",U("text")),Modernizr.addTest("xhrresponsetype",function(){if("undefined"==typeof XMLHttpRequest)return!1;var a=new XMLHttpRequest;return a.open("get","/",!0),"response"in a}()),Modernizr.addTest("notification","Notification"in a&&"permission"in a.Notification&&"requestPermission"in a.Notification),Modernizr.addTest("pagevisibility",!!L("hidden",b,!1)),Modernizr.addTest("performance",!!L("performance",a)),Modernizr.addTest("pointerevents",function(){var a=!1,b=E.length;for(a=Modernizr.hasEvent("pointerdown");b--&&!a;)Q(E[b]+"pointerdown")&&(a=!0);return a}),Modernizr.addTest("pointerlock",!!L("exitPointerLock",b)),Modernizr.addTest("postmessage","postMessage"in a),Modernizr.addTest("quotamanagement",function(){var a=L("temporaryStorage",navigator),b=L("persistentStorage",navigator);return!(!a||!b)}),Modernizr.addTest("requestanimationframe",!!L("requestAnimationFrame",a),{aliases:["raf"]}),Modernizr.addTest("scriptasync","async"in w("script")),Modernizr.addTest("scriptdefer","defer"in w("script")),Modernizr.addTest("localstorage",function(){var a="modernizr";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("sessionstorage",function(){var a="modernizr";try{return sessionStorage.setItem(a,a),sessionStorage.removeItem(a),!0}catch(b){return!1}}),Modernizr.addTest("stylescoped","scoped"in w("style")),Modernizr.addAsyncTest(function(){var a=new Image;a.onerror=function(){g("svgasimg",!1)},a.onload=function(){g("svgasimg",1==a.width&&1==a.height)},a.src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg=="});var V={}.toString;Modernizr.addTest("svgclippaths",function(){return!!b.createElementNS&&/SVGClipPath/.test(V.call(b.createElementNS("http://www.w3.org/2000/svg","clipPath")))}),Modernizr.addTest("svgfilters",function(){var b=!1;try{b="SVGFEColorMatrixElement"in a&&2==SVGFEColorMatrixElement.SVG_FECOLORMATRIX_TYPE_SATURATE}catch(c){}return b}),Modernizr.addTest("inlinesvg",function(){var a=w("div");return a.innerHTML="<svg/>","http://www.w3.org/2000/svg"==(a.firstChild&&a.firstChild.namespaceURI)}),Modernizr.addTest("svg",!!b.createElementNS&&!!b.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect),Modernizr.addTest("touchevents",function(){var c;if("ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch)c=!0;else{var d=["@media (",F.join("touch-enabled),("),"heartz",")","{#modernizr{top:9px;position:absolute}}"].join("");G(d,function(a){c=9===a.offsetTop})}return c}),Modernizr.addTest("typedarrays","ArrayBuffer"in a),Modernizr.addTest("unicode",function(){var a,c=w("span"),d=b.createElement("span");return G("#modernizr{font-family:Arial,sans;font-size:300em;}",function(b){c.innerHTML="ᝣ",d.innerHTML="☆",b.appendChild(c),b.appendChild(d),a="offsetWidth"in c&&c.offsetWidth!==d.offsetWidth}),a}),Modernizr.addTest("unicoderange",function(){return Modernizr.testStyles('@font-face{font-family:"unicodeRange";src:local("Arial");unicode-range:U+002E}#modernizr span{font-size:10px;display:inline-block;font-family:"unicodeRange",monospace}#modernizr .mono{font-family:monospace}',function(a){for(var b=[".",".","m","m"],c=0;c<b.length;c++){var d=w("span");d.innerHTML=b[c],d.className=c%2?"mono":"",a.appendChild(d),b[c]=d.clientWidth}return b[0]!==b[1]&&b[2]===b[3]})}),Modernizr.addAsyncTest(function(){function a(){var a=new Image;a.onerror=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=!1},a.onload=function(){g("datauri",!0),Modernizr.datauri=new Boolean(!0),Modernizr.datauri.over32kb=1==a.width&&1==a.height};for(var b="R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";b.length<33e3;)b="\r\n"+b;a.src="data:image/gif;base64,"+b}-1!==navigator.userAgent.indexOf("MSIE 7.")&&setTimeout(function(){g("datauri",!1)},10);var b=new Image;b.onerror=function(){g("datauri",!1)},b.onload=function(){1==b.width&&1==b.height?a():g("datauri",!1)},b.src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="}),Modernizr.addTest("userdata",!!w("div").addBehavior),Modernizr.addTest("video",function(){var a=w("video"),b=!1;try{(b=!!a.canPlayType)&&(b=new Boolean(b),b.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),b.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),b.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,""),b.vp9=a.canPlayType('video/webm; codecs="vp9"').replace(/^no$/,""))}catch(c){}return b}),Modernizr.addAsyncTest(function(){var a,b=300,c=w("video"),d=c.style,e=function(b){clearTimeout(a),c.removeEventListener("playing",e),g("videoautoplay",b||0!==c.currentTime),c.parentNode.removeChild(c)};if(!(Modernizr.video&&"autoplay"in c))return void g("videoautoplay",!1);d.height=0,d.width=0;try{if(Modernizr.video.h264)c.src="data:video/mp4;base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29tYXZjMQAAAz5tb292AAAAbG12aGQAAAAAzaNacc2jWnEAAV+QAAFfkAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT////3//AAACQ3RyYWsAAABcdGtoZAAAAAHNo1pxzaNacQAAAAEAAAAAAAFfkAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAEAAAABAAAAAAAd9tZGlhAAAAIG1kaGQAAAAAzaNacc2jWnEAAV+QAAFfkFXEAAAAAAAhaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAAAAAAGWbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAABVnN0YmwAAACpc3RzZAAAAAAAAAABAAAAmWF2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAEAAQAEgAAABIAAAAAAAAAAEOSlZUL0FWQyBDb2RpbmcAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwH0AAr/4QAZZ/QACq609NQYBBkAAAMAAQAAAwAKjxImoAEABWjOAa8gAAAAEmNvbHJuY2xjAAYAAQAGAAAAGHN0dHMAAAAAAAAAAQAAAAUAAEZQAAAAKHN0c3oAAAAAAAAAAAAAAAUAAAIqAAAACAAAAAgAAAAIAAAACAAAAChzdHNjAAAAAAAAAAIAAAABAAAABAAAAAEAAAACAAAAAQAAAAEAAAAYc3RjbwAAAAAAAAACAAADYgAABaQAAAAUc3RzcwAAAAAAAAABAAAAAQAAABFzZHRwAAAAAAREREREAAAAb3VkdGEAAABnbWV0YQAAAAAAAAAhaGRscgAAAAAAAAAAbWRpcgAAAAAAAAAAAAAAAAAAAAA6aWxzdAAAADKpdG9vAAAAKmRhdGEAAAABAAAAAEhhbmRCcmFrZSAwLjkuOCAyMDEyMDcxODAwAAACUm1kYXQAAAHkBgX/4NxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxMjAgLSBILjI2NC9NUEVHLTQgQVZDIGNvZGVjIC0gQ29weWxlZnQgMjAwMy0yMDExIC0gaHR0cDovL3d3dy52aWRlb2xhbi5vcmcveDI2NC5odG1sIC0gb3B0aW9uczogY2FiYWM9MCByZWY9MSBkZWJsb2NrPTE6MDowIGFuYWx5c2U9MHgxOjAgbWU9ZXNhIHN1Ym1lPTkgcHN5PTAgbWl4ZWRfcmVmPTAgbWVfcmFuZ2U9NCBjaHJvbWFfbWU9MSB0cmVsbGlzPTAgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0wIGNocm9tYV9xcF9vZmZzZXQ9MCB0aHJlYWRzPTYgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTUwIGtleWludF9taW49NSBzY2VuZWN1dD00MCBpbnRyYV9yZWZyZXNoPTAgcmM9Y3FwIG1idHJlZT0wIHFwPTAAgAAAAD5liISscR8A+E4ACAACFoAAITAAAgsAAPgYCoKgoC+L4vi+KAvi+L4YfAEAACMzgABF9AAEUGUgABDJiXnf4AAAAARBmiKUAAAABEGaQpQAAAAEQZpilAAAAARBmoKU";else{if(!Modernizr.video.ogg)return void g("videoautoplay",!1);c.src="data:video/ogg;base64,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"}}catch(f){return void g("videoautoplay",!1)}c.setAttribute("autoplay",""),c.style="display:none",u.appendChild(c),setTimeout(function(){c.addEventListener("playing",function(){e(!0)}),a=setTimeout(e,b)},0)}),Modernizr.addTest("videoloop","loop"in w("video")),Modernizr.addTest("videopreload","preload"in w("video")),Modernizr.addTest("webanimations","Animation"in a),Modernizr.addTest("webgl","WebGLRenderingContext"in a),Modernizr.addAsyncTest(function(){if(Modernizr.webglextensions=new Boolean(!1),Modernizr.webgl){var a,b,d;try{a=w("canvas"),b=a.getContext("webgl")||a.getContext("experimental-webgl"),d=b.getSupportedExtensions()}catch(e){return}b!==c&&(Modernizr.webglextensions=new Boolean(!0));for(var f=-1,g=d.length;++f<g;)Modernizr.webglextensions[d[f]]=!0;a=c}}),Modernizr.addTest("websocketsbinary",function(){var b,c="https:"==location.protocol?"wss":"ws";if("WebSocket"in a){if(b="binaryType"in WebSocket.prototype)return b;try{return!!new WebSocket(c+"://.").binaryType}catch(d){}}return!1}),Modernizr.addTest("websockets","WebSocket"in a&&2===a.WebSocket.CLOSING),Modernizr.addTest("framed",a.location!=top.location),Modernizr.addAsyncTest(function(){try{var a="Modernizr",b=new Worker("data:text/javascript;base64,dGhpcy5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cG9zdE1lc3NhZ2UoZS5kYXRhKX0=");b.onmessage=function(c){b.terminate(),g("dataworkers",a===c.data),b=null},b.onerror=function(){g("dataworkers",!1),b=null},setTimeout(function(){g("dataworkers",!1)},200),b.postMessage(a)}catch(c){setTimeout(function(){g("dataworkers",!1)},0)}}),Modernizr.addTest("sharedworkers","SharedWorker"in a),Modernizr.addTest("webworkers","Worker"in a),e(),f(t),delete r.addTest,delete r.addAsyncTest;for(var W=0;W<Modernizr._q.length;W++)Modernizr._q[W]();a.Modernizr=Modernizr}(this,document);
\ No newline at end of file |