window.Modernizr = function(e, t, n) {
        function r(e) {
            b.cssText = e
        }

        function o(e, t) {
            return r(S.join(e + ";") + (t || ""))
        }

        function i(e, t) {
            return typeof e === t
        }

        function a(e, t) {
            return !!~("" + e).indexOf(t)
        }

        function c(e, t) {
            for (var r in e) {
                var o = e[r];
                if (!a(o, "-") && b[o] !== n) return "pfx" != t || o
            }
            return !1
        }

        function s(e, t, r) {
            for (var o in e) {
                var a = t[e[o]];
                if (a !== n) return r === !1 ? e[o] : i(a, "function") ? a.bind(r || t) : a
            }
            return !1
        }

        function l(e, t, n) {
            var r = e.charAt(0).toUpperCase() + e.slice(1),
                o = (e + " " + k.join(r + " ") + r).split(" ");
            return i(t, "string") || i(t, "undefined") ? c(o, t) : (o = (e + " " + T.join(r + " ") + r).split(" "), s(o, t, n))
        }

        function u() {
            m.input = function(n) {
                for (var r = 0, o = n.length; r < o; r++) P[n[r]] = n[r] in E;
                return P.list && (P.list = !!t.createElement("datalist") && !!e.HTMLDataListElement), P
            }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")), m.inputtypes = function(e) {
                for (var r, o, i, a = 0, c = e.length; a < c; a++) E.setAttribute("type", o = e[a]), r = "text" !== E.type, r && (E.value = w, E.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(o) && E.style.WebkitAppearance !== n ? (g.appendChild(E), i = t.defaultView, r = i.getComputedStyle && "textfield" !== i.getComputedStyle(E, null).WebkitAppearance && 0 !== E.offsetHeight, g.removeChild(E)) : /^(search|tel)$/.test(o) || (r = /^(url|email)$/.test(o) ? E.checkValidity && E.checkValidity() === !1 : E.value != w)), M[e[a]] = !!r;
                return M
            }("search tel url email datetime date month week time datetime-local number range color".split(" "))
        }
        var f, d, p = "2.6.2",
            m = {},
            h = !0,
            g = t.documentElement,
            v = "modernizr",
            y = t.createElement(v),
            b = y.style,
            E = t.createElement("input"),
            w = ":)",
            x = {}.toString,
            S = " -webkit- -moz- -o- -ms- ".split(" "),
            C = "Webkit Moz O ms",
            k = C.split(" "),
            T = C.toLowerCase().split(" "),
            j = {
                svg: "http://www.w3.org/2000/svg"
            },
            N = {},
            M = {},
            P = {},
            A = [],
            L = A.slice,
            $ = function(e, n, r, o) {
                var i, a, c, s, l = t.createElement("div"),
                    u = t.body,
                    f = u || t.createElement("body");
                if (parseInt(r, 10))
                    for (; r--;) c = t.createElement("div"), c.id = o ? o[r] : v + (r + 1), l.appendChild(c);
                return i = ["&#173;", '<style id="s', v, '">', e, "</style>"].join(""), l.id = v, (u ? l : f).innerHTML += i, f.appendChild(l), u || (f.style.background = "", f.style.overflow = "hidden", s = g.style.overflow, g.style.overflow = "hidden", g.appendChild(f)), a = n(l, e), u ? l.parentNode.removeChild(l) : (f.parentNode.removeChild(f), g.style.overflow = s), !!a
            },
            z = function(t) {
                var n = e.matchMedia || e.msMatchMedia;
                if (n) return n(t).matches;
                var r;
                return $("@media " + t + " { #" + v + " { position: absolute; } }", function(t) {
                    r = "absolute" == (e.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position
                }), r
            },
            D = function() {
                function e(e, o) {
                    o = o || t.createElement(r[e] || "div"), e = "on" + e;
                    var a = e in o;
                    return a || (o.setAttribute || (o = t.createElement("div")), o.setAttribute && o.removeAttribute && (o.setAttribute(e, ""), a = i(o[e], "function"), i(o[e], "undefined") || (o[e] = n), o.removeAttribute(e))), o = null, a
                }
                var r = {
                    select: "input",
                    change: "input",
                    submit: "form",
                    reset: "form",
                    error: "img",
                    load: "img",
                    abort: "img"
                };
                return e
            }(),
            F = {}.hasOwnProperty;
        d = i(F, "undefined") || i(F.call, "undefined") ? function(e, t) {
            return t in e && i(e.constructor.prototype[t], "undefined")
        } : function(e, t) {
            return F.call(e, t)
        }, Function.prototype.bind || (Function.prototype.bind = function(e) {
            var t = this;
            if ("function" != typeof t) throw new TypeError;
            var n = L.call(arguments, 1),
                r = function() {
                    if (this instanceof r) {
                        var o = function() {};
                        o.prototype = t.prototype;
                        var i = new o,
                            a = t.apply(i, n.concat(L.call(arguments)));
                        return Object(a) === a ? a : i
                    }
                    return t.apply(e, n.concat(L.call(arguments)))
                };
            return r
        }), N.flexbox = function() {
            return l("flexWrap")
        }, N.canvas = function() {
            var e = t.createElement("canvas");
            return !!e.getContext && !!e.getContext("2d")
        }, N.canvastext = function() {
            return !!m.canvas && !!i(t.createElement("canvas").getContext("2d").fillText, "function")
        }, N.webgl = function() {
            return !!e.WebGLRenderingContext
        }, N.touch = function() {
            var n;
            return "ontouchstart" in e || e.DocumentTouch && t instanceof DocumentTouch ? n = !0 : $(["@media (", S.join("touch-enabled),("), v, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(e) {
                n = 9 === e.offsetTop
            }), n
        }, N.geolocation = function() {
            return "geolocation" in navigator
        }, N.postmessage = function() {
            return !!e.postMessage
        }, N.websqldatabase = function() {
            return !!e.openDatabase
        }, N.indexedDB = function() {
            return !!l("indexedDB", e)
        }, N.hashchange = function() {
            return D("hashchange", e) && (t.documentMode === n || t.documentMode > 7)
        }, N.history = function() {
            return !!e.history && !!history.pushState
        }, N.draganddrop = function() {
            var e = t.createElement("div");
            return "draggable" in e || "ondragstart" in e && "ondrop" in e
        }, N.websockets = function() {
            return "WebSocket" in e || "MozWebSocket" in e
        }, N.rgba = function() {
            return r("background-color:rgba(150,255,150,.5)"), a(b.backgroundColor, "rgba")
        }, N.hsla = function() {
            return r("background-color:hsla(120,40%,100%,.5)"), a(b.backgroundColor, "rgba") || a(b.backgroundColor, "hsla")
        }, N.multiplebgs = function() {
            return r("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(b.background)
        }, N.backgroundsize = function() {
            return l("backgroundSize")
        }, N.borderimage = function() {
            return l("borderImage")
        }, N.borderradius = function() {
            return l("borderRadius")
        }, N.boxshadow = function() {
            return l("boxShadow")
        }, N.textshadow = function() {
            return "" === t.createElement("div").style.textShadow
        }, N.opacity = function() {
            return o("opacity:.55"), /^0.55$/.test(b.opacity)
        }, N.cssanimations = function() {
            return l("animationName")
        }, N.csscolumns = function() {
            return l("columnCount")
        }, N.cssgradients = function() {
            var e = "background-image:",
                t = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
                n = "linear-gradient(left top,#9f9, white);";
            return r((e + "-webkit- ".split(" ").join(t + e) + S.join(n + e)).slice(0, -e.length)), a(b.backgroundImage, "gradient")
        }, N.cssreflections = function() {
            return l("boxReflect")
        }, N.csstransforms = function() {
            return !!l("transform")
        }, N.csstransforms3d = function() {
            var e = !!l("perspective");
            return e && "webkitPerspective" in g.style && $("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function(t, n) {
                e = 9 === t.offsetLeft && 3 === t.offsetHeight
            }), e
        }, N.csstransitions = function() {
            return l("transition")
        }, N.fontface = function() {
            var e;
            return $('@font-face {font-family:"font";src:url("https://")}', function(n, r) {
                var o = t.getElementById("smodernizr"),
                    i = o.sheet || o.styleSheet,
                    a = i ? i.cssRules && i.cssRules[0] ? i.cssRules[0].cssText : i.cssText || "" : "";
                e = /src/i.test(a) && 0 === a.indexOf(r.split(" ")[0])
            }), e
        }, N.generatedcontent = function() {
            var e;
            return $(["#", v, "{font:0/0 a}#", v, ':after{content:"', w, '";visibility:hidden;font:3px/1 a}'].join(""), function(t) {
                e = t.offsetHeight >= 3
            }), e
        }, N.video = function() {
            var e = t.createElement("video"),
                n = !1;
            try {
                (n = !!e.canPlayType) && (n = new Boolean(n), n.ogg = e.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), n.h264 = e.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), n.webm = e.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""))
            } catch (e) {}
            return n
        }, N.audio = function() {
            var e = t.createElement("audio"),
                n = !1;
            try {
                (n = !!e.canPlayType) && (n = new Boolean(n), n.ogg = e.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), n.mp3 = e.canPlayType("audio/mpeg;").replace(/^no$/, ""), n.wav = e.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), n.m4a = (e.canPlayType("audio/x-m4a;") || e.canPlayType("audio/aac;")).replace(/^no$/, ""))
            } catch (e) {}
            return n
        }, N.localstorage = function() {
            try {
                return localStorage.setItem(v, v), localStorage.removeItem(v), !0
            } catch (e) {
                return !1
            }
        }, N.sessionstorage = function() {
            try {
                return sessionStorage.setItem(v, v), sessionStorage.removeItem(v), !0
            } catch (e) {
                return !1
            }
        }, N.webworkers = function() {
            return !!e.Worker
        }, N.applicationcache = function() {
            return !!e.applicationCache
        }, N.svg = function() {
            return !!t.createElementNS && !!t.createElementNS(j.svg, "svg").createSVGRect
        }, N.inlinesvg = function() {
            var e = t.createElement("div");
            return e.innerHTML = "<svg/>", (e.firstChild && e.firstChild.namespaceURI) == j.svg
        }, N.smil = function() {
            return !!t.createElementNS && /SVGAnimate/.test(x.call(t.createElementNS(j.svg, "animate")))
        }, N.svgclippaths = function() {
            return !!t.createElementNS && /SVGClipPath/.test(x.call(t.createElementNS(j.svg, "clipPath")))
        };
        for (var O in N) d(N, O) && (f = O.toLowerCase(), m[f] = N[O](), A.push((m[f] ? "" : "no-") + f));
        return m.input || u(), m.addTest = function(e, t) {
                if ("object" == typeof e)
                    for (var r in e) d(e, r) && m.addTest(r, e[r]);
                else {
                    if (e = e.toLowerCase(), m[e] !== n) return m;
                    t = "function" == typeof t ? t() : t, "undefined" != typeof h && h && (g.className += " " + (t ? "" : "no-") + e), m[e] = t
                }
                return m
            }, r(""), y = E = null,
            function(e, t) {
                function n(e, t) {
                    var n = e.createElement("p"),
                        r = e.getElementsByTagName("head")[0] || e.documentElement;
                    return n.innerHTML = "x<style>" + t + "</style>", r.insertBefore(n.lastChild, r.firstChild)
                }

                function r() {
                    var e = v.elements;
                    return "string" == typeof e ? e.split(" ") : e
                }

                function o(e) {
                    var t = g[e[m]];
                    return t || (t = {}, h++, e[m] = h, g[h] = t), t
                }

                function i(e, n, r) {
                    if (n || (n = t), u) return n.createElement(e);
                    r || (r = o(n));
                    var i;
                    return i = r.cache[e] ? r.cache[e].cloneNode() : p.test(e) ? (r.cache[e] = r.createElem(e)).cloneNode() : r.createElem(e), i.canHaveChildren && !d.test(e) ? r.frag.appendChild(i) : i
                }

                function a(e, n) {
                    if (e || (e = t), u) return e.createDocumentFragment();
                    n = n || o(e);
                    for (var i = n.frag.cloneNode(), a = 0, c = r(), s = c.length; a < s; a++) i.createElement(c[a]);
                    return i
                }

                function c(e, t) {
                    t.cache || (t.cache = {}, t.createElem = e.createElement, t.createFrag = e.createDocumentFragment, t.frag = t.createFrag()), e.createElement = function(n) {
                        return v.shivMethods ? i(n, e, t) : t.createElem(n)
                    }, e.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + r().join().replace(/\w+/g, function(e) {
                        return t.createElem(e), t.frag.createElement(e), 'c("' + e + '")'
                    }) + ");return n}")(v, t.frag)
                }

                function s(e) {
                    e || (e = t);
                    var r = o(e);
                    return v.shivCSS && !l && !r.hasCSS && (r.hasCSS = !!n(e, "article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")), u || c(e, r), e
                }
                var l, u, f = e.html5 || {},
                    d = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
                    p = /^(?: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,
                    m = "_html5shiv",
                    h = 0,
                    g = {};
                ! function() {
                    try {
                        var e = t.createElement("a");
                        e.innerHTML = "<xyz></xyz>", l = "hidden" in e, u = 1 == e.childNodes.length || function() {
                            t.createElement("a");
                            var e = t.createDocumentFragment();
                            return "undefined" == typeof e.cloneNode || "undefined" == typeof e.createDocumentFragment || "undefined" == typeof e.createElement
                        }()
                    } catch (e) {
                        l = !0, u = !0
                    }
                }();
                var v = {
                    elements: f.elements || "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",
                    shivCSS: f.shivCSS !== !1,
                    supportsUnknownElements: u,
                    shivMethods: f.shivMethods !== !1,
                    type: "default",
                    shivDocument: s,
                    createElement: i,
                    createDocumentFragment: a
                };
                e.html5 = v, s(t)
            }(this, t), m._version = p, m._prefixes = S, m._domPrefixes = T, m._cssomPrefixes = k, m.mq = z, m.hasEvent = D, m.testProp = function(e) {
                return c([e])
            }, m.testAllProps = l, m.testStyles = $, m.prefixed = function(e, t, n) {
                return t ? l(e, t, n) : l(e, "pfx")
            }, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (h ? " js " + A.join(" ") : ""), m
    }(this, this.document),
    function(e, t, n) {
        function r(e) {
            return "[object Function]" == g.call(e)
        }

        function o(e) {
            return "string" == typeof e
        }

        function i() {}

        function a(e) {
            return !e || "loaded" == e || "complete" == e || "uninitialized" == e
        }

        function c() {
            var e = v.shift();
            y = 1, e ? e.t ? m(function() {
                ("c" == e.t ? d.injectCss : d.injectJs)(e.s, 0, e.a, e.x, e.e, 1)
            }, 0) : (e(), c()) : y = 0
        }

        function s(e, n, r, o, i, s, l) {
            function u(t) {
                if (!p && a(f.readyState) && (b.r = p = 1, !y && c(), f.onload = f.onreadystatechange = null, t)) {
                    "img" != e && m(function() {
                        w.removeChild(f)
                    }, 50);
                    for (var r in T[n]) T[n].hasOwnProperty(r) && T[n][r].onload()
                }
            }
            var l = l || d.errorTimeout,
                f = t.createElement(e),
                p = 0,
                g = 0,
                b = {
                    t: r,
                    s: n,
                    e: i,
                    a: s,
                    x: l
                };
            1 === T[n] && (g = 1, T[n] = []), "object" == e ? f.data = n : (f.src = n, f.type = e), f.width = f.height = "0", f.onerror = f.onload = f.onreadystatechange = function() {
                u.call(this, g)
            }, v.splice(o, 0, b), "img" != e && (g || 2 === T[n] ? (w.insertBefore(f, E ? null : h), m(u, l)) : T[n].push(f))
        }

        function l(e, t, n, r, i) {
            return y = 0, t = t || "j", o(e) ? s("c" == t ? S : x, e, t, this.i++, n, r, i) : (v.splice(this.i++, 0, e), 1 == v.length && c()), this
        }

        function u() {
            var e = d;
            return e.loader = {
                load: l,
                i: 0
            }, e
        }
        var f, d, p = t.documentElement,
            m = e.setTimeout,
            h = t.getElementsByTagName("script")[0],
            g = {}.toString,
            v = [],
            y = 0,
            b = "MozAppearance" in p.style,
            E = b && !!t.createRange().compareNode,
            w = E ? p : h.parentNode,
            p = e.opera && "[object Opera]" == g.call(e.opera),
            p = !!t.attachEvent && !p,
            x = b ? "object" : p ? "script" : "img",
            S = p ? "script" : x,
            C = Array.isArray || function(e) {
                return "[object Array]" == g.call(e)
            },
            k = [],
            T = {},
            j = {
                timeout: function(e, t) {
                    return t.length && (e.timeout = t[0]), e
                }
            };
        d = function(e) {
            function t(e) {
                var t, n, r, e = e.split("!"),
                    o = k.length,
                    i = e.pop(),
                    a = e.length,
                    i = {
                        url: i,
                        origUrl: i,
                        prefixes: e
                    };
                for (n = 0; n < a; n++) r = e[n].split("="), (t = j[r.shift()]) && (i = t(i, r));
                for (n = 0; n < o; n++) i = k[n](i);
                return i
            }

            function a(e, o, i, a, c) {
                var s = t(e),
                    l = s.autoCallback;
                s.url.split(".").pop().split("?").shift(), s.bypass || (o && (o = r(o) ? o : o[e] || o[a] || o[e.split("/").pop().split("?")[0]]), s.instead ? s.instead(e, o, i, a, c) : (T[s.url] ? s.noexec = !0 : T[s.url] = 1, i.load(s.url, s.forceCSS || !s.forceJS && "css" == s.url.split(".").pop().split("?").shift() ? "c" : n, s.noexec, s.attrs, s.timeout), (r(o) || r(l)) && i.load(function() {
                    u(), o && o(s.origUrl, c, a), l && l(s.origUrl, c, a), T[s.url] = 2
                })))
            }

            function c(e, t) {
                function n(e, n) {
                    if (e) {
                        if (o(e)) n || (f = function() {
                            var e = [].slice.call(arguments);
                            d.apply(this, e), p()
                        }), a(e, f, t, 0, l);
                        else if (Object(e) === e)
                            for (s in c = function() {
                                    var t, n = 0;
                                    for (t in e) e.hasOwnProperty(t) && n++;
                                    return n
                                }(), e) e.hasOwnProperty(s) && (!n && !--c && (r(f) ? f = function() {
                                var e = [].slice.call(arguments);
                                d.apply(this, e), p()
                            } : f[s] = function(e) {
                                return function() {
                                    var t = [].slice.call(arguments);
                                    e && e.apply(this, t), p()
                                }
                            }(d[s])), a(e[s], f, t, s, l))
                    } else !n && p()
                }
                var c, s, l = !!e.test,
                    u = e.load || e.both,
                    f = e.callback || i,
                    d = f,
                    p = e.complete || i;
                n(l ? e.yep : e.nope, !!u), u && n(u)
            }
            var s, l, f = this.yepnope.loader;
            if (o(e)) a(e, 0, f, 0);
            else if (C(e))
                for (s = 0; s < e.length; s++) l = e[s], o(l) ? a(l, 0, f, 0) : C(l) ? d(l) : Object(l) === l && c(l, f);
            else Object(e) === e && c(e, f)
        }, d.addPrefix = function(e, t) {
            j[e] = t
        }, d.addFilter = function(e) {
            k.push(e)
        }, d.errorTimeout = 1e4, null == t.readyState && t.addEventListener && (t.readyState = "loading", t.addEventListener("DOMContentLoaded", f = function() {
            t.removeEventListener("DOMContentLoaded", f, 0), t.readyState = "complete"
        }, 0)), e.yepnope = u(), e.yepnope.executeStack = c, e.yepnope.injectJs = function(e, n, r, o, s, l) {
            var u, f, p = t.createElement("script"),
                o = o || d.errorTimeout;
            p.src = e;
            for (f in r) p.setAttribute(f, r[f]);
            n = l ? c : n || i, p.onreadystatechange = p.onload = function() {
                !u && a(p.readyState) && (u = 1, n(), p.onload = p.onreadystatechange = null)
            }, m(function() {
                u || (u = 1, n(1))
            }, o), s ? p.onload() : h.parentNode.insertBefore(p, h)
        }, e.yepnope.injectCss = function(e, n, r, o, a, s) {
            var l, o = t.createElement("link"),
                n = s ? c : n || i;
            o.href = e, o.rel = "stylesheet", o.type = "text/css";
            for (l in r) o.setAttribute(l, r[l]);
            a || (h.parentNode.insertBefore(o, h), m(n, 0))
        }
    }(this, document), Modernizr.load = function() {
        yepnope.apply(window, [].slice.call(arguments, 0))
    };