vendor: 18,692 bytes, lines 1-746
1/* Modernizr 2.6.1 (Custom Build) | MIT & BSD 2 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexbox_legacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load 3 */ 4; 5 6 7window.Modernizr = (function (window, document, undefined) { 8 9 var version = '2.6.1', 10 11 Modernizr = {}, 12 13 enableClasses = true, 14 15 docElement = document.documentElement, 16 17 mod = 'modernizr', 18 modElem = document.createElement(mod), 19 mStyle = modElem.style, 20 21 inputElem = document.createElement('input') , 22 23 smile = ':)', 24 25 toString = {}.toString, 26 27 prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), 28 29 30 omPrefixes = 'Webkit Moz O ms', 31 32 cssomPrefixes = omPrefixes.split(' '), 33 34 domPrefixes = omPrefixes.toLowerCase().split(' '), 35 36 ns = {'svg': 'http://www.w3.org/2000/svg'}, 37 38 tests = {}, 39 inputs = {}, 40 attrs = {}, 41 42 classes = [], 43 44 slice = classes.slice, 45 46 featureName, 47 48 49 injectElementWithStyles = function (rule, callback, nodes, testnames) { 50 51 var style, ret, node, 52 div = document.createElement('div'), 53 body = document.body, 54 fakeBody = body ? body : document.createElement('body'); 55 56 if (parseInt(nodes, 10)) { 57 while (nodes--) { 58 node = document.createElement('div'); 59 node.id = testnames ? testnames[nodes] : mod + (nodes + 1); 60 div.appendChild(node); 61 } 62 } 63 64 style = ['­', '<style id="s', mod, '">', rule, '</style>'].join(''); 65 div.id = mod; 66 (body ? div : fakeBody).innerHTML += style; 67 fakeBody.appendChild(div); 68 if (!body) { 69 fakeBody.style.background = ""; 70 docElement.appendChild(fakeBody); 71 } 72 73 ret = callback(div, rule); 74 !body ? fakeBody.parentNode.removeChild(fakeBody) : div.parentNode.removeChild(div); 75 76 return !!ret; 77 78 }, 79 80 81 isEventSupported = (function () { 82 83 var TAGNAMES = { 84 'select': 'input', 'change': 'input', 85 'submit': 'form', 'reset': 'form', 86 'error': 'img', 'load': 'img', 'abort': 'img' 87 }; 88 89 function isEventSupported(eventName, element) { 90 91 element = element || document.createElement(TAGNAMES[eventName] || 'div'); 92 eventName = 'on' + eventName; 93 94 var isSupported = eventName in element; 95 96 if (!isSupported) { 97 if (!element.setAttribute) { 98 element = document.createElement('div'); 99 } 100 if (element.setAttribute && element.removeAttribute) { 101 element.setAttribute(eventName, ''); 102 isSupported = is(element[eventName], 'function'); 103 104 if (!is(element[eventName], 'undefined')) { 105 element[eventName] = undefined; 106 } 107 element.removeAttribute(eventName); 108 } 109 } 110 111 element = null; 112 return isSupported; 113 } 114 115 return isEventSupported; 116 })(), 117 118 119 _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; 120 121 if (!is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined')) { 122 hasOwnProp = function (object, property) { 123 return _hasOwnProperty.call(object, property); 124 }; 125 } 126 else { 127 hasOwnProp = function (object, property) { 128 return ((property in object) && is(object.constructor.prototype[property], 'undefined')); 129 }; 130 } 131 132 133 if (!Function.prototype.bind) { 134 Function.prototype.bind = function bind(that) { 135 136 var target = this; 137 138 if (typeof target != "function") { 139 throw new TypeError(); 140 } 141 142 var args = slice.call(arguments, 1), 143 bound = function () { 144 145 if (this instanceof bound) { 146 147 var F = function () { 148 }; 149 F.prototype = target.prototype; 150 var self = new F(); 151 152 var result = target.apply( 153 self, 154 args.concat(slice.call(arguments)) 155 ); 156 if (Object(result) === result) { 157 return result; 158 } 159 return self; 160 161 } else { 162 163 return target.apply( 164 that, 165 args.concat(slice.call(arguments)) 166 ); 167 168 } 169 170 }; 171 172 return bound; 173 }; 174 } 175 176 function setCss(str) { 177 mStyle.cssText = str; 178 } 179 180 function setCssAll(str1, str2) { 181 return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); 182 } 183 184 function is(obj, type) { 185 return typeof obj === type; 186 } 187 188 function contains(str, substr) { 189 return !!~('' + str).indexOf(substr); 190 } 191 192 function testProps(props, prefixed) { 193 for (var i in props) { 194 var prop = props[i]; 195 if (!contains(prop, "-") && mStyle[prop] !== undefined) { 196 return prefixed == 'pfx' ? prop : true; 197 } 198 } 199 return false; 200 } 201 202 function testDOMProps(props, obj, elem) { 203 for (var i in props) { 204 var item = obj[props[i]]; 205 if (item !== undefined) { 206 207 if (elem === false) return props[i]; 208 209 if (is(item, 'function')) { 210 return item.bind(elem || obj); 211 } 212 213 return item; 214 } 215 } 216 return false; 217 } 218 219 function testPropsAll(prop, prefixed, elem) { 220 221 var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), 222 props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); 223 224 if (is(prefixed, "string") || is(prefixed, "undefined")) { 225 return testProps(props, prefixed); 226 227 } else { 228 props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); 229 return testDOMProps(props, prefixed, elem); 230 } 231 } 232 233 tests['flexbox'] = function () { 234 return testPropsAll('flexWrap'); 235 }; 236 tests['canvas'] = function () { 237 var elem = document.createElement('canvas'); 238 return !!(elem.getContext && elem.getContext('2d')); 239 }; 240 241 tests['canvastext'] = function () { 242 return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); 243 }; 244 245 246 tests['webgl'] = function () { 247 return !!window.WebGLRenderingContext; 248 }; 249 250 251 tests['touch'] = function () { 252 var bool; 253 254 if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { 255 bool = true; 256 } else { 257 injectElementWithStyles(['@media (', prefixes.join('touch-enabled),('), mod, ')', '{#modernizr{top:9px;position:absolute}}'].join(''), function (node) { 258 bool = node.offsetTop === 9; 259 }); 260 } 261 262 return bool; 263 }; 264 265 266 tests['geolocation'] = function () { 267 return 'geolocation' in navigator; 268 }; 269 270 271 tests['postmessage'] = function () { 272 return !!window.postMessage; 273 }; 274 275 276 tests['websqldatabase'] = function () { 277 return !!window.openDatabase; 278 }; 279 280 tests['indexedDB'] = function () { 281 return !!testPropsAll("indexedDB", window); 282 }; 283 284 tests['hashchange'] = function () { 285 return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); 286 }; 287 288 tests['history'] = function () { 289 return !!(window.history && history.pushState); 290 }; 291 292 tests['draganddrop'] = function () { 293 var div = document.createElement('div'); 294 return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); 295 }; 296 297 tests['websockets'] = function () { 298 return 'WebSocket' in window || 'MozWebSocket' in window; 299 }; 300 301 302 tests['rgba'] = function () { 303 setCss('background-color:rgba(150,255,150,.5)'); 304 305 return contains(mStyle.backgroundColor, 'rgba'); 306 }; 307 308 tests['hsla'] = function () { 309 setCss('background-color:hsla(120,40%,100%,.5)'); 310 311 return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); 312 }; 313 314 tests['multiplebgs'] = function () { 315 setCss('background:url(https://),url(https://),red url(https://)'); 316 317 return (/(url\s*\(.*?){3}/).test(mStyle.background); 318 }; 319 tests['backgroundsize'] = function () { 320 return testPropsAll('backgroundSize'); 321 }; 322 323 tests['borderimage'] = function () { 324 return testPropsAll('borderImage'); 325 }; 326 327 328 tests['borderradius'] = function () { 329 return testPropsAll('borderRadius'); 330 }; 331 332 tests['boxshadow'] = function () { 333 return testPropsAll('boxShadow'); 334 }; 335 336 tests['textshadow'] = function () { 337 return document.createElement('div').style.textShadow === ''; 338 }; 339 340 341 tests['opacity'] = function () { 342 setCssAll('opacity:.55'); 343 344 return (/^0.55$/).test(mStyle.opacity); 345 }; 346 347 348 tests['cssanimations'] = function () { 349 return testPropsAll('animationName'); 350 }; 351 352 353 tests['csscolumns'] = function () { 354 return testPropsAll('columnCount'); 355 }; 356 357 358 tests['cssgradients'] = function () { 359 var str1 = 'background-image:', 360 str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', 361 str3 = 'linear-gradient(left top,#9f9, white);'; 362 363 setCss( 364 (str1 + '-webkit- '.split(' ').join(str2 + str1) + 365 prefixes.join(str3 + str1)).slice(0, -str1.length) 366 ); 367 368 return contains(mStyle.backgroundImage, 'gradient'); 369 }; 370 371 372 tests['cssreflections'] = function () { 373 return testPropsAll('boxReflect'); 374 }; 375 376 377 tests['csstransforms'] = function () { 378 return !!testPropsAll('transform'); 379 }; 380 381 382 tests['csstransforms3d'] = function () { 383 384 var ret = !!testPropsAll('perspective'); 385 386 if (ret && 'webkitPerspective' in docElement.style) { 387 388 injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function (node, rule) { 389 ret = node.offsetLeft === 9 && node.offsetHeight === 3; 390 }); 391 } 392 return ret; 393 }; 394 395 396 tests['csstransitions'] = function () { 397 return testPropsAll('transition'); 398 }; 399 400 401 tests['fontface'] = function () { 402 var bool; 403 404 injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function (node, rule) { 405 var style = document.getElementById('smodernizr'), 406 sheet = style.sheet || style.styleSheet, 407 cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; 408 409 bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; 410 }); 411 412 return bool; 413 }; 414 415 tests['generatedcontent'] = function () { 416 var bool; 417 418 injectElementWithStyles(['#modernizr:after{content:"', smile, '";visibility:hidden}'].join(''), function (node) { 419 bool = node.offsetHeight >= 1; 420 }); 421 422 return bool; 423 }; 424 tests['video'] = function () { 425 var elem = document.createElement('video'), 426 bool = false; 427 428 try { 429 if (bool = !!elem.canPlayType) { 430 bool = new Boolean(bool); 431 bool.ogg = elem.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ''); 432 433 bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ''); 434 435 bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ''); 436 } 437 438 } catch (e) { 439 } 440 441 return bool; 442 }; 443 444 tests['audio'] = function () { 445 var elem = document.createElement('audio'), 446 bool = false; 447 448 try { 449 if (bool = !!elem.canPlayType) { 450 bool = new Boolean(bool); 451 bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ''); 452 bool.mp3 = elem.canPlayType('audio/mpeg;').replace(/^no$/, ''); 453 454 bool.wav = elem.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ''); 455 bool.m4a = ( elem.canPlayType('audio/x-m4a;') || 456 elem.canPlayType('audio/aac;')).replace(/^no$/, ''); 457 } 458 } catch (e) { 459 } 460 461 return bool; 462 }; 463 464 465 tests['localstorage'] = function () { 466 try { 467 localStorage.setItem(mod, mod); 468 localStorage.removeItem(mod); 469 return true; 470 } catch (e) { 471 return false; 472 } 473 }; 474 475 tests['sessionstorage'] = function () { 476 try { 477 sessionStorage.setItem(mod, mod); 478 sessionStorage.removeItem(mod); 479 return true; 480 } catch (e) { 481 return false; 482 } 483 }; 484 485 486 tests['webworkers'] = function () { 487 return !!window.Worker; 488 }; 489 490 491 tests['applicationcache'] = function () { 492 return !!window.applicationCache; 493 }; 494 495 496 tests['svg'] = function () { 497 return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; 498 }; 499 500 tests['inlinesvg'] = function () { 501 var div = document.createElement('div'); 502 div.innerHTML = '<svg/>'; 503 return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; 504 }; 505 506 tests['smil'] = function () { 507 return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); 508 }; 509 510 511 tests['svgclippaths'] = function () { 512 return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); 513 }; 514 515 function webforms() { 516 Modernizr['input'] = (function (props) { 517 for (var i = 0, len = props.length; i < len; i++) { 518 attrs[ props[i] ] = !!(props[i] in inputElem); 519 } 520 if (attrs.list) { 521 attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); 522 } 523 return attrs; 524 })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); 525 Modernizr['inputtypes'] = (function (props) { 526 527 for (var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++) { 528 529 inputElem.setAttribute('type', inputElemType = props[i]); 530 bool = inputElem.type !== 'text'; 531 532 if (bool) { 533 534 inputElem.value = smile; 535 inputElem.style.cssText = 'position:absolute;visibility:hidden;'; 536 537 if (/^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined) { 538 539 docElement.appendChild(inputElem); 540 defaultView = document.defaultView; 541 542 bool = defaultView.getComputedStyle && 543 defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && 544 (inputElem.offsetHeight !== 0); 545 546 docElement.removeChild(inputElem); 547 548 } else if (/^(search|tel)$/.test(inputElemType)) { 549 } else if (/^(url|email)$/.test(inputElemType)) { 550 bool = inputElem.checkValidity && inputElem.checkValidity() === false; 551 552 } else { 553 bool = inputElem.value != smile; 554 } 555 } 556 557 inputs[ props[i] ] = !!bool; 558 } 559 return inputs; 560 })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); 561 } 562 563 for (var feature in tests) { 564 if (hasOwnProp(tests, feature)) { 565 featureName = feature.toLowerCase(); 566 Modernizr[featureName] = tests[feature](); 567 568 classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); 569 } 570 } 571 572 Modernizr.input || webforms(); 573 574 575 Modernizr.addTest = function (feature, test) { 576 if (typeof feature == 'object') { 577 for (var key in feature) { 578 if (hasOwnProp(feature, key)) { 579 Modernizr.addTest(key, feature[ key ]); 580 } 581 } 582 } else { 583 584 feature = feature.toLowerCase(); 585 586 if (Modernizr[feature] !== undefined) { 587 return Modernizr; 588 } 589 590 test = typeof test == 'function' ? test() : test; 591 592 if (enableClasses) { 593 docElement.className += ' ' + (test ? '' : 'no-') + feature; 594 } 595 Modernizr[feature] = test; 596 597 } 598 599 return Modernizr; 600 }; 601 602 603 setCss(''); 604 modElem = inputElem = null; 605 606 ; 607 (function (window, document) { 608 var options = window.html5 || {}; 609 610 var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; 611 612 var saveClones = /^<|^(?:a|b|button|code|div|fieldset|form|h1|h2|h3|h4|h5|h6|i|iframe|img|input|label|li|link|ol|option|p|param|q|script|select|span|strong|style|table|tbody|td|textarea|tfoot|th|thead|tr|ul)$/i; 613 614 var supportsHtml5Styles; 615 616 var expando = '_html5shiv'; 617 618 var expanID = 0; 619 620 var expandoData = {}; 621 622 var supportsUnknownElements; 623 624 (function () { 625 try { 626 var a = document.createElement('a'); 627 a.innerHTML = '<xyz></xyz>'; 628 supportsHtml5Styles = ('hidden' in a); 629 630 supportsUnknownElements = a.childNodes.length == 1 || (function () { 631 (document.createElement)('a'); 632 var frag = document.createDocumentFragment(); 633 return ( 634 typeof frag.cloneNode == 'undefined' || 635 typeof frag.createDocumentFragment == 'undefined' || 636 typeof frag.createElement == 'undefined' 637 ); 638 }()); 639 } catch (e) { 640 supportsHtml5Styles = true; 641 supportsUnknownElements = true; 642 } 643 644 }()); 645 function addStyleSheet(ownerDocument, cssText) { 646 var p = ownerDocument.createElement('p'), 647 parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; 648 649 p.innerHTML = 'x<style>' + cssText + '</style>'; 650 return parent.insertBefore(p.lastChild, parent.firstChild); 651 } 652 653 function getElements() { 654 var elements = html5.elements; 655 return typeof elements == 'string' ? elements.split(' ') : elements; 656 } 657 658 function getExpandoData(ownerDocument) { 659 var data = expandoData[ownerDocument[expando]]; 660 if (!data) { 661 data = {}; 662 expanID++; 663 ownerDocument[expando] = expanID; 664 expandoData[expanID] = data; 665 } 666 return data; 667 } 668 669 function createElement(nodeName, ownerDocument, data) { 670 if (!ownerDocument) { 671 ownerDocument = document; 672 } 673 if (supportsUnknownElements) { 674 return ownerDocument.createElement(nodeName); 675 } 676 if (!data) { 677 data = getExpandoData(ownerDocument); 678 } 679 var node; 680 681 if (data.cache[nodeName]) { 682 node = data.cache[nodeName].cloneNode(); 683 } else if (saveClones.test(nodeName)) { 684 node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); 685 } else { 686 node = data.createElem(nodeName); 687 } 688 689 return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node; 690 } 691 692 function createDocumentFragment(ownerDocument, data) { 693 if (!ownerDocument) { 694 ownerDocument = document; 695 } 696 if (supportsUnknownElements) { 697 return ownerDocument.createDocumentFragment(); 698 } 699 data = data || getExpandoData(ownerDocument); 700 var clone = data.frag.cloneNode(), 701 i = 0, 702 elems = getElements(), 703 l = elems.length; 704 for (; i < l; i++) { 705 clone.createElement(elems[i]); 706 } 707 return clone; 708 } 709 710 function shivMethods(ownerDocument, data) { 711 if (!data.cache) { 712 data.cache = {}; 713 data.createElem = ownerDocument.createElement; 714 data.createFrag = ownerDocument.createDocumentFragment; 715 data.frag = data.createFrag(); 716 } 717 718 719 ownerDocument.createElement = function (nodeName) { 720 if (!html5.shivMethods) { 721 return data.createElem(nodeName); 722 } 723 return createElement(nodeName, ownerDocument, data); 724 }; 725 726 ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + 727 'var n=f.cloneNode(),c=n.createElement;' + 728 'h.shivMethods&&(' + 729 getElements().join().replace(/\w+/g, function (nodeName) { 730 data.createElem(nodeName); 731 data.frag.createElement(nodeName); 732 return 'c("' + nodeName + '")'; 733 }) + 734 ');return n}' 735 )(html5, data.frag); 736 } 737 738 function shivDocument(ownerDocument) { 739 if (!ownerDocument) { 740 ownerDocument = document; 741 } 742 var data = getExpandoData(ownerDocument); 743 744 if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { 745 data.hasCSS = !!addStyleSheet(ownerDocument, 746 'article,aside,figcaption,figure,footer,header,hgroup,nav,section{dis
vendor: 6,440 bytes, lines 746-935
746play:block}' + 747 'mark{background:#FF0;color:#000}' 748 ); 749 } 750 if (!supportsUnknownElements) { 751 shivMethods(ownerDocument, data); 752 } 753 return ownerDocument; 754 } 755 756 var html5 = { 757 758 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video', 759 760 'shivCSS': (options.shivCSS !== false), 761 762 'supportsUnknownElements': supportsUnknownElements, 763 764 'shivMethods': (options.shivMethods !== false), 765 766 'type': 'default', 767 768 'shivDocument': shivDocument, 769 770 createElement: createElement, 771 772 createDocumentFragment: createDocumentFragment 773 }; 774 window.html5 = html5; 775 776 shivDocument(document); 777 778 }(this, document)); 779 780 Modernizr._version = version; 781 782 Modernizr._prefixes = prefixes; 783 Modernizr._domPrefixes = domPrefixes; 784 Modernizr._cssomPrefixes = cssomPrefixes; 785 786 787 Modernizr.hasEvent = isEventSupported; 788 789 Modernizr.testProp = function (prop) { 790 return testProps([prop]); 791 }; 792 793 Modernizr.testAllProps = testPropsAll; 794 795 796 Modernizr.testStyles = injectElementWithStyles; 797 Modernizr.prefixed = function (prop, obj, elem) { 798 if (!obj) { 799 return testPropsAll(prop, 'pfx'); 800 } else { 801 return testPropsAll(prop, obj, elem); 802 } 803 }; 804 805 806 docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') + 807 808 (enableClasses ? ' js ' + classes.join(' ') : ''); 809 810 return Modernizr; 811 812})(this, this.document); 813/*yepnope1.5.4|WTFPL*/ 814(function (a, b, c) { 815 function d(a) { 816 return"[object Function]" == o.call(a) 817 } 818 819 function e(a) { 820 return"string" == typeof a 821 } 822 823 function f() { 824 } 825 826 function g(a) { 827 return!a || "loaded" == a || "complete" == a || "uninitialized" == a 828 } 829 830 function h() { 831 var a = p.shift(); 832 q = 1, a ? a.t ? m(function () { 833 ("c" == a.t ? B.injectCss : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1) 834 }, 0) : (a(), h()) : q = 0 835 } 836 837 function i(a, c, d, e, f, i, j) { 838 function k(b) { 839 if (!o && g(l.readyState) && (u.r = o = 1, !q && h(), l.onload = l.onreadystatechange = null, b)) { 840 "img" != a && m(function () { 841 t.removeChild(l) 842 }, 50); 843 for (var d in y[c])y[c].hasOwnProperty(d) && y[c][d].onload() 844 } 845 } 846 847 var j = j || B.errorTimeout, l = b.createElement(a), o = 0, r = 0, u = {t: d, s: c, e: f, a: i, x: j}; 848 1 === y[c] && (r = 1, y[c] = []), "object" == a ? l.data = c : (l.src = c, l.type = a), l.width = l.height = "0", l.onerror = l.onload = l.onreadystatechange = function () { 849 k.call(this, r) 850 }, p.splice(e, 0, u), "img" != a && (r || 2 === y[c] ? (t.insertBefore(l, s ? null : n), m(k, j)) : y[c].push(l)) 851 } 852 853 function j(a, b, c, d, f) { 854 return q = 0, b = b || "j", e(a) ? i("c" == b ? v : u, a, b, this.i++, c, d, f) : (p.splice(this.i++, 0, a), 1 == p.length && h()), this 855 } 856 857 function k() { 858 var a = B; 859 return a.loader = {load: j, i: 0}, a 860 } 861 862 var l = b.documentElement, m = a.setTimeout, n = b.getElementsByTagName("script")[0], o = {}.toString, p = [], q = 0, r = "MozAppearance"in l.style, s = r && !!b.createRange().compareNode, t = s ? l : n.parentNode, l = a.opera && "[object Opera]" == o.call(a.opera), l = !!b.attachEvent && !l, u = r ? "object" : l ? "script" : "img", v = l ? "script" : u, w = Array.isArray || function (a) { 863 return"[object Array]" == o.call(a) 864 }, x = [], y = {}, z = {timeout: function (a, b) { 865 return b.length && (a.timeout = b[0]), a 866 }}, A, B; 867 B = function (a) { 868 function b(a) { 869 var a = a.split("!"), b = x.length, c = a.pop(), d = a.length, c = {url: c, origUrl: c, prefixes: a}, e, f, g; 870 for (f = 0; f < d; f++)g = a[f].split("="), (e = z[g.shift()]) && (c = e(c, g)); 871 for (f = 0; f < b; f++)c = x[f](c); 872 return c 873 } 874 875 function g(a, e, f, g, h) { 876 var i = b(a), j = i.autoCallback; 877 i.url.split(".").pop().split("?").shift(), i.bypass || (e && (e = d(e) ? e : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]), i.instead ? i.instead(a, e, f, g, h) : (y[i.url] ? i.noexec = !0 : y[i.url] = 1, f.load(i.url, i.forceCSS || !i.forceJS && "css" == i.url.split(".").pop().split("?").shift() ? "c" : c, i.noexec, i.attrs, i.timeout), (d(e) || d(j)) && f.load(function () { 878 k(), e && e(i.origUrl, h, g), j && j(i.origUrl, h, g), y[i.url] = 2 879 }))) 880 } 881 882 function h(a, b) { 883 function c(a, c) { 884 if (a) { 885 if (e(a))c || (j = function () { 886 var a = [].slice.call(arguments); 887 k.apply(this, a), l() 888 }), g(a, j, b, 0, h); else if (Object(a) === a)for (n in m = function () { 889 var b = 0, c; 890 for (c in a)a.hasOwnProperty(c) && b++; 891 return b 892 }(), a)a.hasOwnProperty(n) && (!c && !--m && (d(j) ? j = function () { 893 var a = [].slice.call(arguments); 894 k.apply(this, a), l() 895 } : j[n] = function (a) { 896 return function () { 897 var b = [].slice.call(arguments); 898 a && a.apply(this, b), l() 899 } 900 }(k[n])), g(a[n], j, b, n, h)) 901 } else!c && l() 902 } 903 904 var h = !!a.test, i = a.load || a.both, j = a.callback || f, k = j, l = a.complete || f, m, n; 905 c(h ? a.yep : a.nope, !!i), i && c(i) 906 } 907 908 var i, j, l = this.yepnope.loader; 909 if (e(a))g(a, 0, l, 0); else if (w(a))for (i = 0; i < a.length; i++)j = a[i], e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l); else Object(a) === a && h(a, l) 910 }, B.addPrefix = function (a, b) { 911 z[a] = b 912 }, B.addFilter = function (a) { 913 x.push(a) 914 }, B.errorTimeout = 1e4, null == b.readyState && b.addEventListener && (b.readyState = "loading", b.addEventListener("DOMContentLoaded", A = function () { 915 b.removeEventListener("DOMContentLoaded", A, 0), b.readyState = "complete" 916 }, 0)), a.yepnope = k(), a.yepnope.executeStack = h, a.yepnope.injectJs = function (a, c, d, e, i, j) { 917 var k = b.createElement("script"), l, o, e = e || B.errorTimeout; 918 k.src = a; 919 for (o in d)k.setAttribute(o, d[o]); 920 c = j ? h : c || f, k.onreadystatechange = k.onload = function () { 921 !l && g(k.readyState) && (l = 1, c(), k.onload = k.onreadystatechange = null) 922 }, m(function () { 923 l || (l = 1, c(1)) 924 }, e), i ? k.onload() : n.parentNode.insertBefore(k, n) 925 }, a.yepnope.injectCss = function (a, c, d, e, g, i) { 926 var e = b.createElement("link"), j, c = i ? h : c || f; 927 e.href = a, e.rel = "stylesheet", e.type = "text/css"; 928 for (j in d)e.setAttribute(j, d[j]); 929 g || (n.parentNode.insertBefore(e, n), m(c, 0)) 930 } 931})(this, document); 932Modernizr.load = function () { 933 yepnope.apply(window, [].slice.call(arguments, 0)); 934}; 935;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.