(function($) {
    function modalFactoryFactory(e, t, n, r, i, o, a) {
        return function(s) {
            function u(e) {
                return p.then(function(t) {
                    m || l(t, e)
                })
            }

            function l(i, o) {
                if (m = angular.element(i), 0 === m.length) throw new Error("The template contains no elements; you need to wrap text nodes");
                if (h = n.$new(), d) {
                    o || (o = {}), o.$scope = h;
                    var a = r(d, o);
                    g && (h[g] = a)
                } else if (o)
                    for (var s in o) h[s] = o[s];
                return t(m)(h), e.enter(m, v)
            }

            function c() {
                return m ? e.leave(m).then(function() {
                    h.$destroy(), h = null, m.remove(), m = null
                }) : i.when()
            }

            function f() {
                return !!m
            }
            if (!(!s.template ^ !s.templateUrl)) throw new Error("Expected modal to have exacly one of either `template` or `templateUrl`");
            var p, h, d = (s.template, s.controller || null),
                g = s.controllerAs,
                v = angular.element(s.container || document.body),
                m = null;
            return p = s.template ? i.when(s.template) : o.get(s.templateUrl, {
                cache: a
            }).then(function(e) {
                return e.data
            }), {
                activate: u,
                deactivate: c,
                active: f
            }
        }
    }! function(e, t, n) {
        "use strict";

        function r(e, t) {
            return t = t || Error,
                function() {
                    var n, r, i = 2,
                        o = arguments,
                        a = o[0],
                        s = "[" + (e ? e + ":" : "") + a + "] ",
                        u = o[1];
                    for (s += u.replace(/\{\d+\}/g, function(e) {
                            var t = +e.slice(1, -1),
                                n = t + i;
                            return n < o.length ? yt(o[n]) : e
                        }), s += "\nhttp://errors.angularjs.org/1.4.14/" + (e ? e + "/" : "") + a, r = i, n = "?"; r < o.length; r++, n = "&") s += n + "p" + (r - i) + "=" + encodeURIComponent(yt(o[r]));
                    return new t(s)
                }
        }

        function i(e) {
            if (null == e || A(e)) return !1;
            if (Bi(e) || S(e) || ji && e instanceof ji) return !0;
            var t = "length" in Object(e) && e.length;
            return _(t) && (t >= 0 && (t - 1 in e || e instanceof Array) || "function" == typeof e.item)
        }

        function o(e, t, n) {
            var r, a;
            if (e)
                if (C(e))
                    for (r in e) "prototype" == r || "length" == r || "name" == r || e.hasOwnProperty && !e.hasOwnProperty(r) || t.call(n, e[r], r, e);
                else if (Bi(e) || i(e)) {
                var s = "object" != typeof e;
                for (r = 0, a = e.length; a > r; r++)(s || r in e) && t.call(n, e[r], r, e)
            } else if (e.forEach && e.forEach !== o) e.forEach(t, n, e);
            else if (x(e))
                for (r in e) t.call(n, e[r], r, e);
            else if ("function" == typeof e.hasOwnProperty)
                for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
            else
                for (r in e) Ei.call(e, r) && t.call(n, e[r], r, e);
            return e
        }

        function a(e, t, n) {
            for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
            return r
        }

        function s(e) {
            return function(t, n) {
                e(n, t)
            }
        }

        function u() {
            return ++Li
        }

        function l(e, t) {
            t ? e.$$hashKey = t : delete e.$$hashKey
        }

        function c(e, t, n) {
            for (var r = e.$$hashKey, i = 0, o = t.length; o > i; ++i) {
                var a = t[i];
                if (w(a) || C(a))
                    for (var s = Object.keys(a), u = 0, f = s.length; f > u; u++) {
                        var p = s[u],
                            h = a[p];
                        n && w(h) ? k(h) ? e[p] = new Date(h.valueOf()) : E(h) ? e[p] = new RegExp(h) : h.nodeName ? e[p] = h.cloneNode(!0) : N(h) ? e[p] = h.clone() : (w(e[p]) || (e[p] = Bi(h) ? [] : {}), c(e[p], [h], !0)) : e[p] = h
                    }
            }
            return l(e, r), e
        }

        function f(e) {
            return c(e, Mi.call(arguments, 1), !1)
        }

        function p(e) {
            return c(e, Mi.call(arguments, 1), !0)
        }

        function h(e) {
            return parseInt(e, 10)
        }

        function d(e, t) {
            return f(Object.create(e), t)
        }

        function g() {}

        function v(e) {
            return e
        }

        function m(e) {
            return function() {
                return e
            }
        }

        function $(e) {
            return C(e.toString) && e.toString !== Vi
        }

        function y(e) {
            return "undefined" == typeof e
        }

        function b(e) {
            return "undefined" != typeof e
        }

        function w(e) {
            return null !== e && "object" == typeof e
        }

        function x(e) {
            return null !== e && "object" == typeof e && !qi(e)
        }

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

        function _(e) {
            return "number" == typeof e
        }

        function k(e) {
            return "[object Date]" === Vi.call(e)
        }

        function C(e) {
            return "function" == typeof e
        }

        function E(e) {
            return "[object RegExp]" === Vi.call(e)
        }

        function A(e) {
            return e && e.window === e
        }

        function R(e) {
            return e && e.$evalAsync && e.$watch
        }

        function T(e) {
            return "[object File]" === Vi.call(e)
        }

        function O(e) {
            return "[object FormData]" === Vi.call(e)
        }

        function j(e) {
            return "[object Blob]" === Vi.call(e)
        }

        function I(e) {
            return "boolean" == typeof e
        }

        function P(e) {
            return e && C(e.then)
        }

        function M(e) {
            return e && _(e.length) && zi.test(Vi.call(e))
        }

        function N(e) {
            return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
        }

        function D(e) {
            var t, n = {},
                r = e.split(",");
            for (t = 0; t < r.length; t++) n[r[t]] = !0;
            return n
        }

        function V(e) {
            return Ci(e.nodeName || e[0] && e[0].nodeName)
        }

        function q(e, t) {
            var n = e.indexOf(t);
            return n >= 0 && e.splice(n, 1), n
        }

        function F(e, t) {
            function n(e, t) {
                var n, i = t.$$hashKey;
                if (Bi(e))
                    for (var o = 0, a = e.length; a > o; o++) t.push(r(e[o]));
                else if (x(e))
                    for (n in e) t[n] = r(e[n]);
                else if (e && "function" == typeof e.hasOwnProperty)
                    for (n in e) e.hasOwnProperty(n) && (t[n] = r(e[n]));
                else
                    for (n in e) Ei.call(e, n) && (t[n] = r(e[n]));
                return l(t, i), t
            }

            function r(e) {
                if (!w(e)) return e;
                var t = i.indexOf(e);
                if (-1 !== t) return a[t];
                if (A(e) || R(e)) throw Fi("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
                var r, o = !1;
                return Bi(e) ? (r = [], o = !0) : M(e) ? r = new e.constructor(e) : k(e) ? r = new Date(e.getTime()) : E(e) ? (r = new RegExp(e.source, e.toString().match(/[^\/]*$/)[0]), r.lastIndex = e.lastIndex) : j(e) ? r = new e.constructor([e], {
                    type: e.type
                }) : C(e.cloneNode) ? r = e.cloneNode(!0) : (r = Object.create(qi(e)), o = !0), i.push(e), a.push(r), o ? n(e, r) : r
            }
            var i = [],
                a = [];
            if (t) {
                if (M(t)) throw Fi("cpta", "Can't copy! TypedArray destination cannot be mutated.");
                if (e === t) throw Fi("cpi", "Can't copy! Source and destination are identical.");
                return Bi(t) ? t.length = 0 : o(t, function(e, n) {
                    "$$hashKey" !== n && delete t[n]
                }), i.push(e), a.push(t), n(e, t)
            }
            return r(e)
        }

        function U(e, t) {
            if (Bi(e)) {
                t = t || [];
                for (var n = 0, r = e.length; r > n; n++) t[n] = e[n]
            } else if (w(e)) {
                t = t || {};
                for (var i in e)("$" !== i.charAt(0) || "$" !== i.charAt(1)) && (t[i] = e[i])
            }
            return t || e
        }

        function L(e, t) {
            if (e === t) return !0;
            if (null === e || null === t) return !1;
            if (e !== e && t !== t) return !0;
            var n, r, i, o = typeof e,
                a = typeof t;
            if (o == a && "object" == o) {
                if (!Bi(e)) {
                    if (k(e)) return k(t) ? L(e.getTime(), t.getTime()) : !1;
                    if (E(e)) return E(t) ? e.toString() == t.toString() : !1;
                    if (R(e) || R(t) || A(e) || A(t) || Bi(t) || k(t) || E(t)) return !1;
                    i = vt();
                    for (r in e)
                        if ("$" !== r.charAt(0) && !C(e[r])) {
                            if (!L(e[r], t[r])) return !1;
                            i[r] = !0
                        } for (r in t)
                        if (!(r in i) && "$" !== r.charAt(0) && b(t[r]) && !C(t[r])) return !1;
                    return !0
                }
                if (!Bi(t)) return !1;
                if ((n = e.length) == t.length) {
                    for (r = 0; n > r; r++)
                        if (!L(e[r], t[r])) return !1;
                    return !0
                }
            }
            return !1
        }

        function H(e, t, n) {
            return e.concat(Mi.call(t, n))
        }

        function B(e, t) {
            return Mi.call(e, t || 0)
        }

        function z(e, t) {
            var n = arguments.length > 2 ? B(arguments, 2) : [];
            return !C(t) || t instanceof RegExp ? t : n.length ? function() {
                return arguments.length ? t.apply(e, H(n, arguments, 0)) : t.apply(e, n)
            } : function() {
                return arguments.length ? t.apply(e, arguments) : t.call(e)
            }
        }

        function W(e, r) {
            var i = r;
            return "string" == typeof e && "$" === e.charAt(0) && "$" === e.charAt(1) ? i = n : A(r) ? i = "$WINDOW" : r && t === r ? i = "$DOCUMENT" : R(r) && (i = "$SCOPE"), i
        }

        function K(e, t) {
            return y(e) ? n : (_(t) || (t = t ? 2 : null), JSON.stringify(e, W, t))
        }

        function G(e) {
            return S(e) ? JSON.parse(e) : e
        }

        function Y(e, t) {
            e = e.replace(Ji, "");
            var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
            return isNaN(n) ? t : n
        }

        function J(e, t) {
            return e = new Date(e.getTime()), e.setMinutes(e.getMinutes() + t), e
        }

        function Z(e, t, n) {
            n = n ? -1 : 1;
            var r = e.getTimezoneOffset(),
                i = Y(t, r);
            return J(e, n * (i - r))
        }

        function X(e) {
            e = ji(e).clone();
            try {
                e.empty()
            } catch (t) {}
            var n = ji("<div>").append(e).html();
            try {
                return e[0].nodeType === no ? Ci(n) : n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, function(e, t) {
                    return "<" + Ci(t)
                })
            } catch (t) {
                return Ci(n)
            }
        }

        function Q(e) {
            try {
                return decodeURIComponent(e)
            } catch (t) {}
        }

        function et(e) {
            var t = {};
            return o((e || "").split("&"), function(e) {
                var n, r, i;
                e && (r = e = e.replace(/\+/g, "%20"), n = e.indexOf("="), -1 !== n && (r = e.substring(0, n), i = e.substring(n + 1)), r = Q(r), b(r) && (i = b(i) ? Q(i) : !0, Ei.call(t, r) ? Bi(t[r]) ? t[r].push(i) : t[r] = [t[r], i] : t[r] = i))
            }), t
        }

        function tt(e) {
            var t = [];
            return o(e, function(e, n) {
                Bi(e) ? o(e, function(e) {
                    t.push(rt(n, !0) + (e === !0 ? "" : "=" + rt(e, !0)))
                }) : t.push(rt(n, !0) + (e === !0 ? "" : "=" + rt(e, !0)))
            }), t.length ? t.join("&") : ""
        }

        function nt(e) {
            return rt(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
        }

        function rt(e, t) {
            return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
        }

        function it(e, t) {
            var n, r, i = Zi.length;
            for (r = 0; i > r; ++r)
                if (n = Zi[r] + t, S(n = e.getAttribute(n))) return n;
            return null
        }

        function ot(e, t) {
            var n, r, i = {};
            o(Zi, function(t) {
                var i = t + "app";
                !n && e.hasAttribute && e.hasAttribute(i) && (n = e, r = e.getAttribute(i))
            }), o(Zi, function(t) {
                var i, o = t + "app";
                !n && (i = e.querySelector("[" + o.replace(":", "\\:") + "]")) && (n = i, r = i.getAttribute(o))
            }), n && (i.strictDi = null !== it(n, "strict-di"), t(n, r ? [r] : [], i))
        }

        function at(n, r, i) {
            w(i) || (i = {});
            var a = {
                strictDi: !1
            };
            i = f(a, i);
            var s = function() {
                    if (n = ji(n), n.injector()) {
                        var e = n[0] === t ? "document" : X(n);
                        throw Fi("btstrpd", "App already bootstrapped with this element '{0}'", e.replace(/</, "&lt;").replace(/>/, "&gt;"))
                    }
                    r = r || [], r.unshift(["$provide", function(e) {
                        e.value("$rootElement", n)
                    }]), i.debugInfoEnabled && r.push(["$compileProvider", function(e) {
                        e.debugInfoEnabled(!0)
                    }]), r.unshift("ng");
                    var o = tn(r, i.strictDi);
                    return o.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
                        e.$apply(function() {
                            t.data("$injector", r), n(t)(e)
                        })
                    }]), o
                },
                u = /^NG_ENABLE_DEBUG_INFO!/,
                l = /^NG_DEFER_BOOTSTRAP!/;
            return e && u.test(e.name) && (i.debugInfoEnabled = !0, e.name = e.name.replace(u, "")), e && !l.test(e.name) ? s() : (e.name = e.name.replace(l, ""), Ui.resumeBootstrap = function(e) {
                return o(e, function(e) {
                    r.push(e)
                }), s()
            }, void(C(Ui.resumeDeferredBootstrap) && Ui.resumeDeferredBootstrap()))
        }

        function st() {
            e.name = "NG_ENABLE_DEBUG_INFO!" + e.name, e.location.reload()
        }

        function ut(e) {
            var t = Ui.element(e).injector();
            if (!t) throw Fi("test", "no injector found for element argument to getTestability");
            return t.get("$$testability")
        }

        function lt(e, t) {
            return t = t || "_", e.replace(Xi, function(e, n) {
                return (n ? t : "") + e.toLowerCase()
            })
        }

        function ct() {
            var t;
            if (!Qi) {
                var r = Yi();
                Ii = y(r) ? e.jQuery : r ? e[r] : n, Ii && Ii.fn.on ? (ji = Ii, f(Ii.fn, {
                    scope: xo.scope,
                    isolateScope: xo.isolateScope,
                    controller: xo.controller,
                    injector: xo.injector,
                    inheritedData: xo.inheritedData
                }), t = Ii.cleanData, Ii.cleanData = function(e) {
                    var n;
                    if (Hi) Hi = !1;
                    else
                        for (var r, i = 0; null != (r = e[i]); i++) n = Ii._data(r, "events"), n && n.$destroy && Ii(r).triggerHandler("$destroy");
                    t(e)
                }) : ji = Rt, Ui.element = ji, Qi = !0
            }
        }

        function ft(e, t, n) {
            if (!e) throw Fi("areq", "Argument '{0}' is {1}", t || "?", n || "required");
            return e
        }

        function pt(e, t, n) {
            return n && Bi(e) && (e = e[e.length - 1]), ft(C(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
        }

        function ht(e, t) {
            if ("hasOwnProperty" === e) throw Fi("badname", "hasOwnProperty is not a valid {0} name", t)
        }

        function dt(e, t, n) {
            if (!t) return e;
            for (var r, i = t.split("."), o = e, a = i.length, s = 0; a > s; s++) r = i[s], e && (e = (o = e)[r]);
            return !n && C(e) ? z(o, e) : e
        }

        function gt(e) {
            for (var t, n = e[0], r = e[e.length - 1], i = 1; n !== r && (n = n.nextSibling); i++)(t || e[i] !== n) && (t || (t = ji(Mi.call(e, 0, i))), t.push(n));
            return t || e
        }

        function vt() {
            return Object.create(null)
        }

        function mt(e) {
            function t(e, t, n) {
                return e[t] || (e[t] = n())
            }
            var n = r("$injector"),
                i = r("ng"),
                o = t(e, "angular", Object);
            return o.$$minErr = o.$$minErr || r, t(o, "module", function() {
                var e = {};
                return function(r, o, a) {
                    var s = function(e, t) {
                        if ("hasOwnProperty" === e) throw i("badname", "hasOwnProperty is not a valid {0} name", t)
                    };
                    return s(r, "module"), o && e.hasOwnProperty(r) && (e[r] = null), t(e, r, function() {
                        function e(e, t, n, r) {
                            return r || (r = i),
                                function() {
                                    return r[n || "push"]([e, t, arguments]), c
                                }
                        }

                        function t(e, t) {
                            return function(n, o) {
                                return o && C(o) && (o.$$moduleName = r), i.push([e, t, arguments]), c
                            }
                        }
                        if (!o) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
                        var i = [],
                            s = [],
                            u = [],
                            l = e("$injector", "invoke", "push", s),
                            c = {
                                _invokeQueue: i,
                                _configBlocks: s,
                                _runBlocks: u,
                                requires: o,
                                name: r,
                                provider: t("$provide", "provider"),
                                factory: t("$provide", "factory"),
                                service: t("$provide", "service"),
                                value: e("$provide", "value"),
                                constant: e("$provide", "constant", "unshift"),
                                decorator: t("$provide", "decorator"),
                                animation: t("$animateProvider", "register"),
                                filter: t("$filterProvider", "register"),
                                controller: t("$controllerProvider", "register"),
                                directive: t("$compileProvider", "directive"),
                                config: l,
                                run: function(e) {
                                    return u.push(e), this
                                }
                            };
                        return a && l(a), c
                    })
                }
            })
        }

        function $t(e) {
            var t = [];
            return JSON.stringify(e, function(e, n) {
                if (n = W(e, n), w(n)) {
                    if (t.indexOf(n) >= 0) return "...";
                    t.push(n)
                }
                return n
            })
        }

        function yt(e) {
            return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : y(e) ? "undefined" : "string" != typeof e ? $t(e) : e
        }

        function bt(t) {
            f(t, {
                bootstrap: at,
                copy: F,
                extend: f,
                merge: p,
                equals: L,
                element: ji,
                forEach: o,
                injector: tn,
                noop: g,
                bind: z,
                toJson: K,
                fromJson: G,
                identity: v,
                isUndefined: y,
                isDefined: b,
                isString: S,
                isFunction: C,
                isObject: w,
                isNumber: _,
                isElement: N,
                isArray: Bi,
                version: ao,
                isDate: k,
                lowercase: Ci,
                uppercase: Ai,
                callbacks: {
                    counter: 0
                },
                getTestability: ut,
                $$minErr: r,
                $$csp: Gi,
                reloadWithDebugInfo: st
            }), (Pi = mt(e))("ng", ["ngLocale"], ["$provide", function(e) {
                e.provider({
                    $$sanitizeUri: br
                }), e.provider("$compile", pn).directive({
                    a: Ca,
                    input: za,
                    textarea: za,
                    form: Oa,
                    script: Ds,
                    select: Fs,
                    style: Ls,
                    option: Us,
                    ngBind: Ga,
                    ngBindHtml: Ja,
                    ngBindTemplate: Ya,
                    ngClass: Xa,
                    ngClassEven: es,
                    ngClassOdd: Qa,
                    ngCloak: ts,
                    ngController: ns,
                    ngForm: ja,
                    ngHide: Os,
                    ngIf: os,
                    ngInclude: as,
                    ngInit: us,
                    ngNonBindable: xs,
                    ngPluralize: Cs,
                    ngRepeat: Es,
                    ngShow: Ts,
                    ngStyle: js,
                    ngSwitch: Is,
                    ngSwitchWhen: Ps,
                    ngSwitchDefault: Ms,
                    ngOptions: ks,
                    ngTransclude: Ns,
                    ngModel: ys,
                    ngList: ls,
                    ngChange: Za,
                    pattern: Bs,
                    ngPattern: Bs,
                    required: Hs,
                    ngRequired: Hs,
                    minlength: Ws,
                    ngMinlength: Ws,
                    maxlength: zs,
                    ngMaxlength: zs,
                    ngValue: Ka,
                    ngModelOptions: ws
                }).directive({
                    ngInclude: ss
                }).directive(Ea).directive(rs), e.provider({
                    $anchorScroll: nn,
                    $animate: Do,
                    $animateCss: Fo,
                    $$animateJs: Mo,
                    $$animateQueue: No,
                    $$AnimateRunner: qo,
                    $$animateAsyncRun: Vo,
                    $browser: ln,
                    $cacheFactory: cn,
                    $controller: mn,
                    $document: $n,
                    $exceptionHandler: yn,
                    $filter: Pr,
                    $$forceReflow: zo,
                    $interpolate: In,
                    $interval: Pn,
                    $http: Rn,
                    $httpParamSerializer: wn,
                    $httpParamSerializerJQLike: xn,
                    $httpBackend: On,
                    $xhrFactory: Tn,
                    $location: Gn,
                    $log: Yn,
                    $parse: dr,
                    $rootScope: yr,
                    $q: gr,
                    $$q: vr,
                    $sce: _r,
                    $sceDelegate: Sr,
                    $sniffer: kr,
                    $templateCache: fn,
                    $templateRequest: Cr,
                    $$testability: Er,
                    $timeout: Ar,
                    $window: Or,
                    $$rAF: $r,
                    $$jqLite: Jt,
                    $$HashMap: Co,
                    $$cookieReader: Ir
                })
            }])
        }

        function wt() {
            return ++uo
        }

        function xt(e) {
            return e.replace(fo, function(e, t, n, r) {
                return r ? n.toUpperCase() : n
            }).replace(po, "Moz$1")
        }

        function St(e) {
            return !mo.test(e)
        }

        function _t(e) {
            var t = e.nodeType;
            return t === eo || !t || t === io
        }

        function kt(e) {
            for (var t in so[e.ng339]) return !0;
            return !1
        }

        function Ct(e, t) {
            var n, r, i, a, s = t.createDocumentFragment(),
                u = [];
            if (St(e)) u.push(t.createTextNode(e));
            else {
                for (n = n || s.appendChild(t.createElement("div")), r = ($o.exec(e) || ["", ""])[1].toLowerCase(), i = bo[r] || bo._default, n.innerHTML = i[1] + e.replace(yo, "<$1></$2>") + i[2], a = i[0]; a--;) n = n.lastChild;
                u = H(u, n.childNodes), n = s.firstChild, n.textContent = ""
            }
            return s.textContent = "", s.innerHTML = "", o(u, function(e) {
                s.appendChild(e)
            }), s
        }

        function Et(e, n) {
            n = n || t;
            var r;
            return (r = vo.exec(e)) ? [n.createElement(r[1])] : (r = Ct(e, n)) ? r.childNodes : []
        }

        function At(e, t) {
            var n = e.parentNode;
            n && n.replaceChild(t, e), t.appendChild(e)
        }

        function Rt(e) {
            if (e instanceof Rt) return e;
            var t;
            if (S(e) && (e = Wi(e), t = !0), !(this instanceof Rt)) {
                if (t && "<" != e.charAt(0)) throw go("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
                return new Rt(e)
            }
            t ? qt(this, Et(e)) : qt(this, e)
        }

        function Tt(e) {
            return e.cloneNode(!0)
        }

        function Ot(e, t) {
            if (t || It(e), e.querySelectorAll)
                for (var n = e.querySelectorAll("*"), r = 0, i = n.length; i > r; r++) It(n[r])
        }

        function jt(e, t, n, r) {
            if (b(r)) throw go("offargs", "jqLite#off() does not support the `selector` argument");
            var i = Pt(e),
                a = i && i.events,
                s = i && i.handle;
            if (s)
                if (t) {
                    var u = function(t) {
                        var r = a[t];
                        b(n) && q(r || [], n), b(n) && r && r.length > 0 || (co(e, t, s), delete a[t])
                    };
                    o(t.split(" "), function(e) {
                        u(e), ho[e] && u(ho[e])
                    })
                } else
                    for (t in a) "$destroy" !== t && co(e, t, s), delete a[t]
        }

        function It(e, t) {
            var r = e.ng339,
                i = r && so[r];
            if (i) {
                if (t) return void delete i.data[t];
                i.handle && (i.events.$destroy && i.handle({}, "$destroy"), jt(e)), delete so[r], e.ng339 = n
            }
        }

        function Pt(e, t) {
            var r = e.ng339,
                i = r && so[r];
            return t && !i && (e.ng339 = r = wt(), i = so[r] = {
                events: {},
                data: {},
                handle: n
            }), i
        }

        function Mt(e, t, n) {
            if (_t(e)) {
                var r = b(n),
                    i = !r && t && !w(t),
                    o = !t,
                    a = Pt(e, !i),
                    s = a && a.data;
                if (r) s[t] = n;
                else {
                    if (o) return s;
                    if (i) return s && s[t];
                    f(s, t)
                }
            }
        }

        function Nt(e, t) {
            return e.getAttribute ? (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ") > -1 : !1
        }

        function Dt(e, t) {
            t && e.setAttribute && o(t.split(" "), function(t) {
                e.setAttribute("class", Wi((" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + Wi(t) + " ", " ")))
            })
        }

        function Vt(e, t) {
            if (t && e.setAttribute) {
                var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
                o(t.split(" "), function(e) {
                    e = Wi(e), -1 === n.indexOf(" " + e + " ") && (n += e + " ")
                }), e.setAttribute("class", Wi(n))
            }
        }

        function qt(e, t) {
            if (t)
                if (t.nodeType) e[e.length++] = t;
                else {
                    var n = t.length;
                    if ("number" == typeof n && t.window !== t) {
                        if (n)
                            for (var r = 0; n > r; r++) e[e.length++] = t[r]
                    } else e[e.length++] = t
                }
        }

        function Ft(e, t) {
            return Ut(e, "$" + (t || "ngController") + "Controller")
        }

        function Ut(e, t, n) {
            e.nodeType == io && (e = e.documentElement);
            for (var r = Bi(t) ? t : [t]; e;) {
                for (var i = 0, o = r.length; o > i; i++)
                    if (b(n = ji.data(e, r[i]))) return n;
                e = e.parentNode || e.nodeType === oo && e.host
            }
        }

        function Lt(e) {
            for (Ot(e, !0); e.firstChild;) e.removeChild(e.firstChild)
        }

        function Ht(e, t) {
            t || Ot(e);
            var n = e.parentNode;
            n && n.removeChild(e)
        }

        function Bt(t, n) {
            n = n || e, "complete" === n.document.readyState ? n.setTimeout(t) : ji(n).on("load", t)
        }

        function zt(e, t) {
            var n = So[t.toLowerCase()];
            return n && _o[V(e)] && n
        }

        function Wt(e) {
            return ko[e]
        }

        function Kt(e, t) {
            var n = function(n, r) {
                n.isDefaultPrevented = function() {
                    return n.defaultPrevented
                };
                var i = t[r || n.type],
                    o = i ? i.length : 0;
                if (o) {
                    if (y(n.immediatePropagationStopped)) {
                        var a = n.stopImmediatePropagation;
                        n.stopImmediatePropagation = function() {
                            n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), a && a.call(n)
                        }
                    }
                    n.isImmediatePropagationStopped = function() {
                        return n.immediatePropagationStopped === !0
                    };
                    var s = i.specialHandlerWrapper || Gt;
                    o > 1 && (i = U(i));
                    for (var u = 0; o > u; u++) n.isImmediatePropagationStopped() || s(e, n, i[u])
                }
            };
            return n.elem = e, n
        }

        function Gt(e, t, n) {
            n.call(e, t)
        }

        function Yt(e, t, n) {
            var r = t.relatedTarget;
            (!r || r !== e && !wo.call(e, r)) && n.call(e, t)
        }

        function Jt() {
            this.$get = function() {
                return f(Rt, {
                    hasClass: function(e, t) {
                        return e.attr && (e = e[0]), Nt(e, t)
                    },
                    addClass: function(e, t) {
                        return e.attr && (e = e[0]), Vt(e, t)
                    },
                    removeClass: function(e, t) {
                        return e.attr && (e = e[0]), Dt(e, t)
                    }
                })
            }
        }

        function Zt(e, t) {
            var n = e && e.$$hashKey;
            if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
            var r = typeof e;
            return n = "function" == r || "object" == r && null !== e ? e.$$hashKey = r + ":" + (t || u)() : r + ":" + e
        }

        function Xt(e, t) {
            if (t) {
                var n = 0;
                this.nextUid = function() {
                    return ++n
                }
            }
            o(e, this.put, this)
        }

        function Qt(e) {
            var t = e.toString().replace(To, ""),
                n = t.match(Eo);
            return n ? "function(" + (n[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
        }

        function en(e, t, n) {
            var r, i, a, s;
            if ("function" == typeof e) {
                if (!(r = e.$inject)) {
                    if (r = [], e.length) {
                        if (t) throw S(n) && n || (n = e.name || Qt(e)), Oo("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
                        i = e.toString().replace(To, ""), a = i.match(Eo), o(a[1].split(Ao), function(e) {
                            e.replace(Ro, function(e, t, n) {
                                r.push(n)
                            })
                        })
                    }
                    e.$inject = r
                }
            } else Bi(e) ? (s = e.length - 1, pt(e[s], "fn"), r = e.slice(0, s)) : pt(e, "fn", !0);
            return r
        }

        function tn(e, t) {
            function r(e) {
                return function(t, n) {
                    return w(t) ? void o(t, s(e)) : e(t, n)
                }
            }

            function i(e, t) {
                if (ht(e, "service"), (C(t) || Bi(t)) && (t = _.instantiate(t)), !t.$get) throw Oo("pget", "Provider '{0}' must define $get factory method.", e);
                return x[e + v] = t
            }

            function a(e, t) {
                return function() {
                    var n = E.invoke(t, this);
                    if (y(n)) throw Oo("undef", "Provider '{0}' must return a value from $get factory method.", e);
                    return n
                }
            }

            function u(e, t, n) {
                return i(e, {
                    $get: n !== !1 ? a(e, t) : t
                })
            }

            function l(e, t) {
                return u(e, ["$injector", function(e) {
                    return e.instantiate(t)
                }])
            }

            function c(e, t) {
                return u(e, m(t), !1)
            }

            function f(e, t) {
                ht(e, "constant"), x[e] = t, k[e] = t
            }

            function p(e, t) {
                var n = _.get(e + v),
                    r = n.$get;
                n.$get = function() {
                    var e = E.invoke(r, n);
                    return E.invoke(t, null, {
                        $delegate: e
                    })
                }
            }

            function h(e) {
                ft(y(e) || Bi(e), "modulesToLoad", "not an array");
                var t, n = [];
                return o(e, function(e) {
                    function r(e) {
                        var t, n;
                        for (t = 0, n = e.length; n > t; t++) {
                            var r = e[t],
                                i = _.get(r[0]);
                            i[r[1]].apply(i, r[2])
                        }
                    }
                    if (!b.get(e)) {
                        b.put(e, !0);
                        try {
                            S(e) ? (t = Pi(e), n = n.concat(h(t.requires)).concat(t._runBlocks), r(t._invokeQueue), r(t._configBlocks)) : C(e) ? n.push(_.invoke(e)) : Bi(e) ? n.push(_.invoke(e)) : pt(e, "module")
                        } catch (i) {
                            throw Bi(e) && (e = e[e.length - 1]), i.message && i.stack && -1 == i.stack.indexOf(i.message) && (i = i.message + "\n" + i.stack), Oo("modulerr", "Failed to instantiate module {0} due to:\n{1}", e, i.stack || i.message || i)
                        }
                    }
                }), n
            }

            function d(e, n) {
                function r(t, r) {
                    if (e.hasOwnProperty(t)) {
                        if (e[t] === g) throw Oo("cdep", "Circular dependency found: {0}", t + " <- " + $.join(" <- "));
                        return e[t]
                    }
                    try {
                        return $.unshift(t), e[t] = g, e[t] = n(t, r)
                    } catch (i) {
                        throw e[t] === g && delete e[t], i
                    } finally {
                        $.shift()
                    }
                }

                function i(e, n, i, o) {
                    "string" == typeof i && (o = i, i = null);
                    var a, s, u, l = [],
                        c = tn.$$annotate(e, t, o);
                    for (s = 0, a = c.length; a > s; s++) {
                        if (u = c[s], "string" != typeof u) throw Oo("itkn", "Incorrect injection token! Expected service name as string, got {0}", u);
                        l.push(i && i.hasOwnProperty(u) ? i[u] : r(u, o))
                    }
                    return Bi(e) && (e = e[a]), e.apply(n, l)
                }

                function o(e, t, n) {
                    var r = Object.create((Bi(e) ? e[e.length - 1] : e).prototype || null),
                        o = i(e, r, t, n);
                    return w(o) || C(o) ? o : r
                }
                return {
                    invoke: i,
                    instantiate: o,
                    get: r,
                    annotate: tn.$$annotate,
                    has: function(t) {
                        return x.hasOwnProperty(t + v) || e.hasOwnProperty(t)
                    }
                }
            }
            t = t === !0;
            var g = {},
                v = "Provider",
                $ = [],
                b = new Xt([], !0),
                x = {
                    $provide: {
                        provider: r(i),
                        factory: r(u),
                        service: r(l),
                        value: r(c),
                        constant: r(f),
                        decorator: p
                    }
                },
                _ = x.$injector = d(x, function(e, t) {
                    throw Ui.isString(t) && $.push(t), Oo("unpr", "Unknown provider: {0}", $.join(" <- "))
                }),
                k = {},
                E = k.$injector = d(k, function(e, t) {
                    var r = _.get(e + v, t);
                    return E.invoke(r.$get, r, n, e)
                });
            return o(h(e), function(e) {
                e && E.invoke(e)
            }), E
        }

        function nn() {
            var e = !0;
            this.disableAutoScrolling = function() {
                e = !1
            }, this.$get = ["$window", "$location", "$rootScope", function(t, n, r) {
                function i(e) {
                    var t = null;
                    return Array.prototype.some.call(e, function(e) {
                        return "a" === V(e) ? (t = e, !0) : void 0
                    }), t
                }

                function o() {
                    var e = s.yOffset;
                    if (C(e)) e = e();
                    else if (N(e)) {
                        var n = e[0],
                            r = t.getComputedStyle(n);
                        e = "fixed" !== r.position ? 0 : n.getBoundingClientRect().bottom
                    } else _(e) || (e = 0);
                    return e
                }

                function a(e) {
                    if (e) {
                        e.scrollIntoView();
                        var n = o();
                        if (n) {
                            var r = e.getBoundingClientRect().top;
                            t.scrollBy(0, r - n)
                        }
                    } else t.scrollTo(0, 0)
                }

                function s(e) {
                    e = S(e) ? e : n.hash();
                    var t;
                    e ? (t = u.getElementById(e)) ? a(t) : (t = i(u.getElementsByName(e))) ? a(t) : "top" === e && a(null) : a(null)
                }
                var u = t.document;
                return e && r.$watch(function() {
                    return n.hash()
                }, function(e, t) {
                    (e !== t || "" !== e) && Bt(function() {
                        r.$evalAsync(s)
                    })
                }), s
            }]
        }

        function rn(e, t) {
            return e || t ? e ? t ? (Bi(e) && (e = e.join(" ")), Bi(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
        }

        function on(e) {
            for (var t = 0; t < e.length; t++) {
                var n = e[t];
                if (n.nodeType === Io) return n
            }
        }

        function an(e) {
            S(e) && (e = e.split(" "));
            var t = vt();
            return o(e, function(e) {
                e.length && (t[e] = !0)
            }), t
        }

        function sn(e) {
            return w(e) ? e : {}
        }

        function un(e, t, n, r) {
            function i(e) {
                try {
                    e.apply(null, B(arguments, 1))
                } finally {
                    if ($--, 0 === $)
                        for (; b.length;) try {
                            b.pop()()
                        } catch (t) {
                            n.error(t)
                        }
                }
            }

            function a(e) {
                var t = e.indexOf("#");
                return -1 === t ? "" : e.substr(t)
            }

            function s() {
                k = null, l(), c()
            }

            function u() {
                try {
                    return h.state
                } catch (e) {}
            }

            function l() {
                w = u(), w = y(w) ? null : w, L(w, A) && (w = A), A = w
            }

            function c() {
                (S !== f.url() || x !== w) && (S = f.url(), x = w, o(C, function(e) {
                    e(f.url(), w)
                }))
            }
            var f = this,
                p = (t[0], e.location),
                h = e.history,
                d = e.setTimeout,
                v = e.clearTimeout,
                m = {};
            f.isMock = !1;
            var $ = 0,
                b = [];
            f.$$completeOutstandingRequest = i, f.$$incOutstandingRequestCount = function() {
                $++
            }, f.notifyWhenNoOutstandingRequests = function(e) {
                0 === $ ? e() : b.push(e)
            };
            var w, x, S = p.href,
                _ = t.find("base"),
                k = null;
            l(), x = w, f.url = function(t, n, i) {
                if (y(i) && (i = null), p !== e.location && (p = e.location), h !== e.history && (h = e.history), t) {
                    var o = x === i;
                    if (S === t && (!r.history || o)) return f;
                    var s = S && qn(S) === qn(t);
                    return S = t, x = i, !r.history || s && o ? ((!s || k) && (k = t), n ? p.replace(t) : s ? p.hash = a(t) : p.href = t, p.href !== t && (k = t)) : (h[n ? "replaceState" : "pushState"](i, "", t), l(), x = w), f
                }
                return k || p.href.replace(/%27/g, "'")
            }, f.state = function() {
                return w
            };
            var C = [],
                E = !1,
                A = null;
            f.onUrlChange = function(t) {
                return E || (r.history && ji(e).on("popstate", s), ji(e).on("hashchange", s), E = !0), C.push(t), t
            }, f.$$applicationDestroyed = function() {
                ji(e).off("hashchange popstate", s)
            }, f.$$checkUrlChange = c, f.baseHref = function() {
                var e = _.attr("href");
                return e ? e.replace(/^(https?\:)?\/\/[^\/]*/, "") : ""
            }, f.defer = function(e, t) {
                var n;
                return $++, n = d(function() {
                    delete m[n], i(e)
                }, t || 0), m[n] = !0, n
            }, f.defer.cancel = function(e) {
                return m[e] ? (delete m[e], v(e), i(g), !0) : !1
            }
        }

        function ln() {
            this.$get = ["$window", "$log", "$sniffer", "$document", function(e, t, n, r) {
                return new un(e, r, t, n)
            }]
        }

        function cn() {
            this.$get = function() {
                function e(e, n) {
                    function i(e) {
                        e != p && (h ? h == e && (h = e.n) : h = e, o(e.n, e.p), o(e, p), p = e, p.n = null)
                    }

                    function o(e, t) {
                        e != t && (e && (e.p = t), t && (t.n = e))
                    }
                    if (e in t) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
                    var a = 0,
                        s = f({}, n, {
                            id: e
                        }),
                        u = vt(),
                        l = n && n.capacity || Number.MAX_VALUE,
                        c = vt(),
                        p = null,
                        h = null;
                    return t[e] = {
                        put: function(e, t) {
                            if (!y(t)) {
                                if (l < Number.MAX_VALUE) {
                                    var n = c[e] || (c[e] = {
                                        key: e
                                    });
                                    i(n)
                                }
                                return e in u || a++, u[e] = t, a > l && this.remove(h.key), t
                            }
                        },
                        get: function(e) {
                            if (l < Number.MAX_VALUE) {
                                var t = c[e];
                                if (!t) return;
                                i(t)
                            }
                            return u[e]
                        },
                        remove: function(e) {
                            if (l < Number.MAX_VALUE) {
                                var t = c[e];
                                if (!t) return;
                                t == p && (p = t.p), t == h && (h = t.n), o(t.n, t.p), delete c[e]
                            }
                            e in u && (delete u[e], a--)
                        },
                        removeAll: function() {
                            u = vt(), a = 0, c = vt(), p = h = null
                        },
                        destroy: function() {
                            u = null, s = null, c = null, delete t[e]
                        },
                        info: function() {
                            return f({}, s, {
                                size: a
                            })
                        }
                    }
                }
                var t = {};
                return e.info = function() {
                    var e = {};
                    return o(t, function(t, n) {
                        e[n] = t.info()
                    }), e
                }, e.get = function(e) {
                    return t[e]
                }, e
            }
        }

        function fn() {
            this.$get = ["$cacheFactory", function(e) {
                return e("templates")
            }]
        }

        function pn(e, r) {
            function i(e, t, n) {
                var r = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,
                    i = vt();
                return o(e, function(e, o) {
                    if (e in k) return void(i[o] = k[e]);
                    var a = e.match(r);
                    if (!a) throw Uo("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", t, o, e, n ? "controller bindings definition" : "isolate scope definition");
                    i[o] = {
                        mode: a[1][0],
                        collection: "*" === a[2],
                        optional: "?" === a[3],
                        attrName: a[4] || o
                    }, a[4] && (k[e] = i[o])
                }), i
            }

            function a(e, t) {
                var n = {
                    isolateScope: null,
                    bindToController: null
                };
                if (w(e.scope) && (e.bindToController === !0 ? (n.bindToController = i(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = i(e.scope, t, !1)), w(e.bindToController) && (n.bindToController = i(e.bindToController, t, !0)), w(n.bindToController)) {
                    var r = e.controller,
                        o = e.controllerAs;
                    if (!r) throw Uo("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
                    if (!vn(r, o)) throw Uo("noident", "Cannot bind to controller without identifier for directive '{0}'.", t)
                }
                return n
            }

            function u(e) {
                var t = e.charAt(0);
                if (!t || t !== Ci(t)) throw Uo("baddir", "Directive name '{0}' is invalid. The first character must be a lowercase letter", e);
                if (e !== e.trim()) throw Uo("baddir", "Directive name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
            }
            var l = {},
                c = "Directive",
                p = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
                h = /(([\w\-]+)(?:\:([^;]+))?;?)/,
                $ = D("ngSrc,ngSrcset,src,srcset"),
                x = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
                _ = /^(on[a-z]+|formaction)$/,
                k = vt();
            this.directive = function A(t, n) {
                return ht(t, "directive"), S(t) ? (u(t), ft(n, "directiveFactory"), l.hasOwnProperty(t) || (l[t] = [], e.factory(t + c, ["$injector", "$exceptionHandler", function(e, n) {
                    var r = [];
                    return o(l[t], function(i, o) {
                        try {
                            var a = e.invoke(i);
                            C(a) ? a = {
                                compile: m(a)
                            } : !a.compile && a.link && (a.compile = m(a.link)), a.priority = a.priority || 0, a.index = o, a.name = a.name || t, a.require = a.require || a.controller && a.name, a.restrict = a.restrict || "EA", a.$$moduleName = i.$$moduleName, r.push(a)
                        } catch (s) {
                            n(s)
                        }
                    }), r
                }])), l[t].push(n)) : o(t, s(A)), this
            }, this.aHrefSanitizationWhitelist = function(e) {
                return b(e) ? (r.aHrefSanitizationWhitelist(e), this) : r.aHrefSanitizationWhitelist()
            }, this.imgSrcSanitizationWhitelist = function(e) {
                return b(e) ? (r.imgSrcSanitizationWhitelist(e), this) : r.imgSrcSanitizationWhitelist()
            };
            var E = !0;
            this.debugInfoEnabled = function(e) {
                return b(e) ? (E = e, this) : E
            }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", "$$sanitizeUri", function(e, r, i, s, u, m, k, A, T, O) {
                function j(e, t) {
                    try {
                        e.addClass(t)
                    } catch (n) {}
                }

                function P(e, n, r, i, o) {
                    e instanceof ji || (e = ji(e));
                    for (var a = /\S+/, s = 0, u = e.length; u > s; s++) {
                        var l = e[s];
                        l.nodeType === no && l.nodeValue.match(a) && At(l, e[s] = t.createElement("span"))
                    }
                    var c = N(e, n, e, r, i, o);
                    P.$$addScopeClass(e);
                    var f = null;
                    return function(t, n, r) {
                        ft(t, "scope"), o && o.needsNewScope && (t = t.$parent.$new()), r = r || {};
                        var i = r.parentBoundTranscludeFn,
                            a = r.transcludeControllers,
                            s = r.futureParentElement;
                        i && i.$$boundTransclude && (i = i.$$boundTransclude), f || (f = M(s));
                        var u;
                        if (u = "html" !== f ? ji(tt(f, ji("<div>").append(e).html())) : n ? xo.clone.call(e) : e, a)
                            for (var l in a) u.data("$" + l + "Controller", a[l].instance);
                        return P.$$addScopeInfo(u, t), n && n(u, t), c && c(t, u, u, i), u
                    }
                }

                function M(e) {
                    var t = e && e[0];
                    return t && "foreignobject" !== V(t) && t.toString().match(/SVG/) ? "svg" : "html"
                }

                function N(e, t, r, i, o, a) {
                    function s(e, r, i, o) {
                        var a, s, u, l, c, f, p, h, v;
                        if (d) {
                            var m = r.length;
                            for (v = new Array(m), c = 0; c < g.length; c += 3) p = g[c], v[p] = r[p]
                        } else v = r;
                        for (c = 0, f = g.length; f > c;) u = v[g[c++]], a = g[c++], s = g[c++], a ? (a.scope ? (l = e.$new(), P.$$addScopeInfo(ji(u), l)) : l = e, h = a.transcludeOnThisElement ? D(e, a.transclude, o) : !a.templateOnThisElement && o ? o : !o && t ? D(e, t) : null, a(s, l, u, i, h)) : s && s(e, u.childNodes, n, o)
                    }
                    for (var u, l, c, f, p, h, d, g = [], v = 0; v < e.length; v++) u = new ut, l = F(e[v], [], u, 0 === v ? i : n, o), c = l.length ? z(l, e[v], u, t, r, null, [], [], a) : null, c && c.scope && P.$$addScopeClass(u.$$element), p = c && c.terminal || !(f = e[v].childNodes) || !f.length ? null : N(f, c ? (c.transcludeOnThisElement || !c.templateOnThisElement) && c.transclude : t), (c || p) && (g.push(v, c, p), h = !0, d = d || c), a = null;
                    return h ? s : null
                }

                function D(e, t, n) {
                    var r = function(r, i, o, a, s) {
                        return r || (r = e.$new(!1, s), r.$$transcluded = !0), t(r, i, {
                            parentBoundTranscludeFn: n,
                            transcludeControllers: o,
                            futureParentElement: a
                        })
                    };
                    return r
                }

                function F(e, t, n, r, i) {
                    var o, a, s, u = e.nodeType,
                        l = n.$attr;
                    switch (u) {
                        case eo:
                            a = V(e), K(t, hn(a), "E", r, i);
                            for (var c, f, d, g, v, m, $ = e.attributes, y = 0, b = $ && $.length; b > y; y++) {
                                var x = !1,
                                    _ = !1;
                                c = $[y], f = c.name, v = Wi(c.value), g = hn(f), (m = dt.test(g)) && (f = f.replace(Lo, "").substr(8).replace(/_(.)/g, function(e, t) {
                                    return t.toUpperCase()
                                }));
                                var k = g.match(gt);
                                k && G(k[1]) && (x = f, _ = f.substr(0, f.length - 5) + "end", f = f.substr(0, f.length - 6)), d = hn(f.toLowerCase()), l[d] = f, (m || !n.hasOwnProperty(d)) && (n[d] = v, zt(e, d) && (n[d] = !0)), rt(e, t, v, d, m), K(t, d, "A", r, i, x, _)
                            }
                            if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), s = e.className, w(s) && (s = s.animVal), S(s) && "" !== s)
                                for (; o = h.exec(s);) d = hn(o[2]), K(t, d, "C", r, i) && (n[d] = Wi(o[3])), s = s.substr(o.index + o[0].length);
                            break;
                        case no:
                            if (11 === Oi)
                                for (; e.parentNode && e.nextSibling && e.nextSibling.nodeType === no;) e.nodeValue = e.nodeValue + e.nextSibling.nodeValue, e.parentNode.removeChild(e.nextSibling);
                            et(t, e.nodeValue);
                            break;
                        case ro:
                            try {
                                o = p.exec(e.nodeValue), o && (d = hn(o[1]), K(t, d, "M", r, i) && (n[d] = Wi(o[2])))
                            } catch (C) {}
                    }
                    return t.sort(Z), t
                }

                function U(e, t, n) {
                    var r = [],
                        i = 0;
                    if (t && e.hasAttribute && e.hasAttribute(t)) {
                        do {
                            if (!e) throw Uo("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
                            e.nodeType == eo && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
                        } while (i > 0)
                    } else r.push(e);
                    return ji(r)
                }

                function H(e, t, n) {
                    return function(r, i, o, a, s) {
                        return i = U(i[0], t, n), e(r, i, o, a, s)
                    }
                }

                function z(e, r, o, a, s, u, l, c, f) {
                    function p(e, t, n, r) {
                        e && (n && (e = H(e, n, r)), e.require = v.require, e.directiveName = $, (T === v || v.$$isolateScope) && (e = ot(e, {
                            isolateScope: !0
                        })), l.push(e)), t && (n && (t = H(t, n, r)), t.require = v.require, t.directiveName = $, (T === v || v.$$isolateScope) && (t = ot(t, {
                            isolateScope: !0
                        })), c.push(t))
                    }

                    function h(e, t, n, r) {
                        var i;
                        if (S(t)) {
                            var o = t.match(x),
                                a = t.substring(o[0].length),
                                s = o[1] || o[3],
                                u = "?" === o[2];
                            if ("^^" === s ? n = n.parent() : (i = r && r[a], i = i && i.instance), !i) {
                                var l = "$" + a + "Controller";
                                i = s ? n.inheritedData(l) : n.data(l)
                            }
                            if (!i && !u) throw Uo("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", a, e)
                        } else if (Bi(t)) {
                            i = [];
                            for (var c = 0, f = t.length; f > c; c++) i[c] = h(e, t[c], n, r)
                        }
                        return i || null
                    }

                    function d(e, t, n, r, i, o) {
                        var a = vt();
                        for (var s in r) {
                            var u = r[s],
                                l = {
                                    $scope: u === T || u.$$isolateScope ? i : o,
                                    $element: e,
                                    $attrs: t,
                                    $transclude: n
                                },
                                c = u.controller;
                            "@" == c && (c = t[u.name]);
                            var f = m(c, l, !0, u.controllerAs);
                            a[u.name] = f, e.data("$" + u.name + "Controller", f.instance)
                        }
                        return a
                    }

                    function g(e, t, i, a, s) {
                        function u(e, t, r) {
                            var i;
                            return R(e) || (r = t, t = e, e = n), N && (i = v), r || (r = N ? $.parent() : $), s(e, t, i, r, j)
                        }
                        var f, p, g, v, m, $, y, b, w;
                        r === i ? (y = o, $ = o.$$element) : ($ = ji(i), y = new ut($, o)), g = t, T ? p = t.$new(!0) : E && (g = t.$parent), s && (m = u, m.$$boundTransclude = s), A && (v = d($, y, m, A, p, t)), T && (P.$$addScopeInfo($, p, !0, !(O && (O === T || O === T.$$originalDirective))), P.$$addScopeClass($, !0), p.$$isolateBindings = T.$$isolateBindings, b = st(t, y, p, p.$$isolateBindings, T), b && p.$on("$destroy", b));
                        for (var x in v) {
                            var S = A[x],
                                _ = v[x],
                                k = S.$$bindings.bindToController;
                            _.identifier && k && (w = st(g, y, _.instance, k, S));
                            var C = _();
                            C !== _.instance && (_.instance = C, $.data("$" + S.name + "Controller", C), w && w(), w = st(g, y, _.instance, k, S))
                        }
                        for (L = 0, z = l.length; z > L; L++) f = l[L], at(f, f.isolateScope ? p : t, $, y, f.require && h(f.directiveName, f.require, $, v), m);
                        var j = t;
                        for (T && (T.template || null === T.templateUrl) && (j = p), e && e(j, i.childNodes, n, s), L = c.length - 1; L >= 0; L--) f = c[L], at(f, f.isolateScope ? p : t, $, y, f.require && h(f.directiveName, f.require, $, v), m)
                    }
                    f = f || {};
                    for (var v, $, y, b, _, k = -Number.MAX_VALUE, E = f.newScopeDirective, A = f.controllerDirectives, T = f.newIsolateScopeDirective, O = f.templateDirective, j = f.nonTlbTranscludeDirective, I = !1, M = !1, N = f.hasElementTranscludeDirective, D = o.$$element = ji(r), V = u, q = a, L = 0, z = e.length; z > L; L++) {
                        v = e[L];
                        var K = v.$$start,
                            G = v.$$end;
                        if (K && (D = U(r, K, G)), y = n, k > v.priority) break;
                        if ((_ = v.scope) && (v.templateUrl || (w(_) ? (Q("new/isolated scope", T || E, v, D), T = v) : Q("new/isolated scope", T, v, D)), E = E || v), $ = v.name, !v.templateUrl && v.controller && (_ = v.controller, A = A || vt(), Q("'" + $ + "' controller", A[$], v, D), A[$] = v), (_ = v.transclude) && (I = !0, v.$$tlb || (Q("transclusion", j, v, D), j = v), "element" == _ ? (N = !0, k = v.priority, y = D, D = o.$$element = ji(t.createComment(" " + $ + ": " + o[$] + " ")), r = D[0], it(s, B(y), r), q = P(y, a, k, V && V.name, {
                                nonTlbTranscludeDirective: j
                            })) : (y = ji(Tt(r)).contents(), D.empty(), q = P(y, a, n, n, {
                                needsNewScope: v.$$isolateScope || v.$$newScope
                            }))), v.template)
                            if (M = !0, Q("template", O, v, D), O = v, _ = C(v.template) ? v.template(D, o) : v.template, _ = ht(_), v.replace) {
                                if (V = v, y = St(_) ? [] : gn(tt(v.templateNamespace, Wi(_))), r = y[0], 1 != y.length || r.nodeType !== eo) throw Uo("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", $, "");
                                it(s, D, r);
                                var Z = {
                                        $attr: {}
                                    },
                                    et = F(r, [], Z),
                                    nt = e.splice(L + 1, e.length - (L + 1));
                                (T || E) && W(et, T, E), e = e.concat(et).concat(nt), Y(o, Z), z = e.length
                            } else D.html(_);
                        if (v.templateUrl) M = !0, Q("template", O, v, D), O = v, v.replace && (V = v), g = J(e.splice(L, e.length - L), D, o, s, I && q, l, c, {
                            controllerDirectives: A,
                            newScopeDirective: E !== v && E,
                            newIsolateScopeDirective: T,
                            templateDirective: O,
                            nonTlbTranscludeDirective: j
                        }), z = e.length;
                        else if (v.compile) try {
                            b = v.compile(D, o, q), C(b) ? p(null, b, K, G) : b && p(b.pre, b.post, K, G)
                        } catch (rt) {
                            i(rt, X(D))
                        }
                        v.terminal && (g.terminal = !0, k = Math.max(k, v.priority))
                    }
                    return g.scope = E && E.scope === !0, g.transcludeOnThisElement = I, g.templateOnThisElement = M, g.transclude = q, f.hasElementTranscludeDirective = N, g
                }

                function W(e, t, n) {
                    for (var r = 0, i = e.length; i > r; r++) e[r] = d(e[r], {
                        $$isolateScope: t,
                        $$newScope: n
                    })
                }

                function K(t, n, r, o, s, u, f) {
                    if (n === s) return null;
                    var p = null;
                    if (l.hasOwnProperty(n))
                        for (var h, g = e.get(n + c), v = 0, m = g.length; m > v; v++) try {
                            if (h = g[v], (y(o) || o > h.priority) && -1 != h.restrict.indexOf(r)) {
                                if (u && (h = d(h, {
                                        $$start: u,
                                        $$end: f
                                    })), !h.$$bindings) {
                                    var $ = h.$$bindings = a(h, h.name);
                                    w($.isolateScope) && (h.$$isolateBindings = $.isolateScope)
                                }
                                t.push(h), p = h
                            }
                        } catch (b) {
                            i(b)
                        }
                    return p
                }

                function G(t) {
                    if (l.hasOwnProperty(t))
                        for (var n, r = e.get(t + c), i = 0, o = r.length; o > i; i++)
                            if (n = r[i], n.multiElement) return !0;
                    return !1
                }

                function Y(e, t) {
                    var n = t.$attr,
                        r = e.$attr,
                        i = e.$$element;
                    o(e, function(r, i) {
                        "$" != i.charAt(0) && (t[i] && t[i] !== r && (r += ("style" === i ? ";" : " ") + t[i]), e.$set(i, r, !0, n[i]))
                    }), o(t, function(t, o) {
                        "class" == o ? (j(i, t), e["class"] = (e["class"] ? e["class"] + " " : "") + t) : "style" == o ? (i.attr("style", i.attr("style") + ";" + t), e.style = (e.style ? e.style + ";" : "") + t) : "$" == o.charAt(0) || e.hasOwnProperty(o) || (e[o] = t, r[o] = n[o])
                    })
                }

                function J(e, t, n, r, i, a, u, l) {
                    var c, f, p = [],
                        h = t[0],
                        g = e.shift(),
                        v = d(g, {
                            templateUrl: null,
                            transclude: null,
                            replace: null,
                            $$originalDirective: g
                        }),
                        m = C(g.templateUrl) ? g.templateUrl(t, n) : g.templateUrl,
                        $ = g.templateNamespace;
                    return t.empty(), s(m).then(function(s) {
                            var d, y, b, x;
                            if (s = ht(s), g.replace) {
                                if (b = St(s) ? [] : gn(tt($, Wi(s))), d = b[0], 1 != b.length || d.nodeType !== eo) throw Uo("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", g.name, m);
                                y = {
                                    $attr: {}
                                }, it(r, t, d);
                                var S = F(d, [], y);
                                w(g.scope) && W(S, !0), e = S.concat(e), Y(n, y)
                            } else d = h, t.html(s);
                            for (e.unshift(v), c = z(e, d, n, i, t, g, a, u, l), o(r, function(e, n) {
                                    e == d && (r[n] = t[0])
                                }), f = N(t[0].childNodes, i); p.length;) {
                                var _ = p.shift(),
                                    k = p.shift(),
                                    C = p.shift(),
                                    E = p.shift(),
                                    A = t[0];
                                if (!_.$$destroyed) {
                                    if (k !== h) {
                                        var R = k.className;
                                        l.hasElementTranscludeDirective && g.replace || (A = Tt(d)), it(C, ji(k), A), j(ji(A), R)
                                    }
                                    x = c.transcludeOnThisElement ? D(_, c.transclude, E) : E, c(f, _, A, r, x)
                                }
                            }
                            p = null
                        }),
                        function(e, t, n, r, i) {
                            var o = i;
                            t.$$destroyed || (p ? p.push(t, n, r, o) : (c.transcludeOnThisElement && (o = D(t, c.transclude, i)), c(f, t, n, r, o)))
                        }
                }

                function Z(e, t) {
                    var n = t.priority - e.priority;
                    return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
                }

                function Q(e, t, n, r) {
                    function i(e) {
                        return e ? " (module: " + e + ")" : ""
                    }
                    if (t) throw Uo("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, X(r))
                }

                function et(e, t) {
                    var n = r(t, !0);
                    n && e.push({
                        priority: 0,
                        compile: function(e) {
                            var t = e.parent(),
                                r = !!t.length;
                            return r && P.$$addBindingClass(t),
                                function(e, t) {
                                    var i = t.parent();
                                    r || P.$$addBindingClass(i), P.$$addBindingInfo(i, n.expressions), e.$watch(n, function(e) {
                                        t[0].nodeValue = e
                                    })
                                }
                        }
                    })
                }

                function tt(e, n) {
                    switch (e = Ci(e || "html")) {
                        case "svg":
                        case "math":
                            var r = t.createElement("div");
                            return r.innerHTML = "<" + e + ">" + n + "</" + e + ">", r.childNodes[0].childNodes;
                        default:
                            return n
                    }
                }

                function nt(e, t) {
                    if ("srcdoc" == t) return A.HTML;
                    var n = V(e);
                    return "xlinkHref" == t || "form" == n && "action" == t || "img" != n && ("src" == t || "ngSrc" == t) ? A.RESOURCE_URL : void 0
                }

                function rt(e, t, n, i, o) {
                    var a = nt(e, i);
                    o = $[i] || o;
                    var s = r(n, !0, a, o);
                    if (s) {
                        if ("multiple" === i && "select" === V(e)) throw Uo("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", X(e));
                        t.push({
                            priority: 100,
                            compile: function() {
                                return {
                                    pre: function(e, t, u) {
                                        var l = u.$$observers || (u.$$observers = vt());
                                        if (_.test(i)) throw Uo("nodomevents", "Interpolations for HTML DOM event attributes are disallowed.  Please use the ng- versions (such as ng-click instead of onclick) instead.");
                                        var c = u[i];
                                        c !== n && (s = c && r(c, !0, a, o), n = c), s && (u[i] = s(e), (l[i] || (l[i] = [])).$$inter = !0, (u.$$observers && u.$$observers[i].$$scope || e).$watch(s, function(e, t) {
                                            "class" === i && e != t ? u.$updateClass(e, t) : u.$set(i, e)
                                        }))
                                    }
                                }
                            }
                        })
                    }
                }

                function it(e, n, r) {
                    var i, o, a = n[0],
                        s = n.length,
                        u = a.parentNode;
                    if (e)
                        for (i = 0, o = e.length; o > i; i++)
                            if (e[i] == a) {
                                e[i++] = r;
                                for (var l = i, c = l + s - 1, f = e.length; f > l; l++, c++) f > c ? e[l] = e[c] : delete e[l];
                                e.length -= s - 1, e.context === a && (e.context = r);
                                break
                            } u && u.replaceChild(r, a);
                    var p = t.createDocumentFragment();
                    p.appendChild(a), ji.hasData(a) && (ji.data(r, ji.data(a)), Ii ? (Hi = !0, Ii.cleanData([a])) : delete ji.cache[a[ji.expando]]);
                    for (var h = 1, d = n.length; d > h; h++) {
                        var g = n[h];
                        ji(g).remove(), p.appendChild(g), delete n[h]
                    }
                    n[0] = r, n.length = 1
                }

                function ot(e, t) {
                    return f(function() {
                        return e.apply(null, arguments)
                    }, e, t)
                }

                function at(e, t, n, r, o, a) {
                    try {
                        e(t, n, r, o, a)
                    } catch (s) {
                        i(s, X(n))
                    }
                }

                function st(e, t, n, i, a) {
                    var s = [];
                    return o(i, function(i, o) {
                        var l, c, f, p, h = i.attrName,
                            d = i.optional,
                            v = i.mode;
                        switch (v) {
                            case "@":
                                d || Ei.call(t, h) || (n[o] = t[h] = void 0), t.$observe(h, function(e) {
                                    S(e) && (n[o] = e)
                                }), t.$$observers[h].$$scope = e, l = t[h], S(l) ? n[o] = r(l)(e) : I(l) && (n[o] = l);
                                break;
                            case "=":
                                if (!Ei.call(t, h)) {
                                    if (d) break;
                                    t[h] = void 0
                                }
                                if (d && !t[h]) break;
                                c = u(t[h]), p = c.literal ? L : function(e, t) {
                                    return e === t || e !== e && t !== t
                                }, f = c.assign || function() {
                                    throw l = n[o] = c(e), Uo("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", t[h], h, a.name)
                                }, l = n[o] = c(e);
                                var m = function(t) {
                                    return p(t, n[o]) || (p(t, l) ? f(e, t = n[o]) : n[o] = t), l = t
                                };
                                m.$stateful = !0;
                                var $;
                                $ = i.collection ? e.$watchCollection(t[h], m) : e.$watch(u(t[h], m), null, c.literal), s.push($);
                                break;
                            case "&":
                                if (c = t.hasOwnProperty(h) ? u(t[h]) : g, c === g && d) break;
                                n[o] = function(t) {
                                    return c(e, t)
                                }
                        }
                    }), s.length && function() {
                        for (var e = 0, t = s.length; t > e; ++e) s[e]()
                    }
                }
                var ut = function(e, t) {
                    if (t) {
                        var n, r, i, o = Object.keys(t);
                        for (n = 0, r = o.length; r > n; n++) i = o[n], this[i] = t[i]
                    } else this.$attr = {};
                    this.$$element = e
                };
                ut.prototype = {
                    $normalize: hn,
                    $addClass: function(e) {
                        e && e.length > 0 && T.addClass(this.$$element, e)
                    },
                    $removeClass: function(e) {
                        e && e.length > 0 && T.removeClass(this.$$element, e)
                    },
                    $updateClass: function(e, t) {
                        var n = dn(e, t);
                        n && n.length && T.addClass(this.$$element, n);
                        var r = dn(t, e);
                        r && r.length && T.removeClass(this.$$element, r)
                    },
                    $set: function(e, t, n, r) {
                        var a, s = this.$$element[0],
                            u = zt(s, e),
                            l = Wt(e),
                            c = e;
                        if (u ? (this.$$element.prop(e, t), r = u) : l && (this[l] = t, c = l), this[e] = t, r ? this.$attr[e] = r : (r = this.$attr[e], r || (this.$attr[e] = r = lt(e, "-"))), a = V(this.$$element), "a" === a && "href" === e || "img" === a && "src" === e) this[e] = t = O(t, "src" === e);
                        else if ("img" === a && "srcset" === e && b(t)) {
                            for (var f = "", p = Wi(t), h = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, d = /\s/.test(p) ? h : /(,)/, g = p.split(d), v = Math.floor(g.length / 2), m = 0; v > m; m++) {
                                var $ = 2 * m;
                                f += O(Wi(g[$]), !0), f += " " + Wi(g[$ + 1])
                            }
                            var w = Wi(g[2 * m]).split(/\s/);
                            f += O(Wi(w[0]), !0), 2 === w.length && (f += " " + Wi(w[1])), this[e] = t = f
                        }
                        n !== !1 && (null === t || y(t) ? this.$$element.removeAttr(r) : this.$$element.attr(r, t));
                        var x = this.$$observers;
                        x && o(x[c], function(e) {
                            try {
                                e(t)
                            } catch (n) {
                                i(n)
                            }
                        })
                    },
                    $observe: function(e, t) {
                        var n = this,
                            r = n.$$observers || (n.$$observers = vt()),
                            i = r[e] || (r[e] = []);
                        return i.push(t), k.$evalAsync(function() {
                                i.$$inter || !n.hasOwnProperty(e) || y(n[e]) || t(n[e])
                            }),
                            function() {
                                q(i, t)
                            }
                    }
                };
                var ct = r.startSymbol(),
                    pt = r.endSymbol(),
                    ht = "{{" == ct && "}}" == pt ? v : function(e) {
                        return e.replace(/\{\{/g, ct).replace(/}}/g, pt)
                    },
                    dt = /^ngAttr[A-Z]/,
                    gt = /^(.+)Start$/;
                return P.$$addBindingInfo = E ? function(e, t) {
                    var n = e.data("$binding") || [];
                    Bi(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
                } : g, P.$$addBindingClass = E ? function(e) {
                    j(e, "ng-binding")
                } : g, P.$$addScopeInfo = E ? function(e, t, n, r) {
                    var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
                    e.data(i, t)
                } : g, P.$$addScopeClass = E ? function(e, t) {
                    j(e, t ? "ng-isolate-scope" : "ng-scope")
                } : g, P
            }]
        }

        function hn(e) {
            return xt(e.replace(Lo, ""))
        }

        function dn(e, t) {
            var n = "",
                r = e.split(/\s+/),
                i = t.split(/\s+/);
            e: for (var o = 0; o < r.length; o++) {
                for (var a = r[o], s = 0; s < i.length; s++)
                    if (a == i[s]) continue e;
                n += (n.length > 0 ? " " : "") + a
            }
            return n
        }

        function gn(e) {
            e = ji(e);
            var t = e.length;
            if (1 >= t) return e;
            for (; t--;) {
                var n = e[t];
                n.nodeType === ro && Ni.call(e, t, 1)
            }
            return e
        }

        function vn(e, t) {
            if (t && S(t)) return t;
            if (S(e)) {
                var n = Bo.exec(e);
                if (n) return n[3]
            }
        }

        function mn() {
            var e = {},
                t = !1;
            this.register = function(t, n) {
                ht(t, "controller"), w(t) ? f(e, t) : e[t] = n
            }, this.allowGlobals = function() {
                t = !0
            }, this.$get = ["$injector", "$window", function(i, o) {
                function a(e, t, n, i) {
                    if (!e || !w(e.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, t);
                    e.$scope[t] = n
                }
                return function(r, s, u, l) {
                    var c, p, h, d;
                    if (u = u === !0, l && S(l) && (d = l), S(r)) {
                        if (p = r.match(Bo), !p) throw Ho("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
                        h = p[1], d = d || p[3], r = e.hasOwnProperty(h) ? e[h] : dt(s.$scope, h, !0) || (t ? dt(o, h, !0) : n), pt(r, h, !0)
                    }
                    if (u) {
                        var g = (Bi(r) ? r[r.length - 1] : r).prototype;
                        c = Object.create(g || null), d && a(s, d, c, h || r.name);
                        var v;
                        return v = f(function() {
                            var e = i.invoke(r, c, s, h);
                            return e !== c && (w(e) || C(e)) && (c = e, d && a(s, d, c, h || r.name)), c
                        }, {
                            instance: c,
                            identifier: d
                        })
                    }
                    return c = i.instantiate(r, s, h), d && a(s, d, c, h || r.name), c
                }
            }]
        }

        function $n() {
            this.$get = ["$window", function(e) {
                return ji(e.document)
            }]
        }

        function yn() {
            this.$get = ["$log", function(e) {
                return function() {
                    e.error.apply(e, arguments)
                }
            }]
        }

        function bn(e) {
            return w(e) ? k(e) ? e.toISOString() : K(e) : e
        }

        function wn() {
            this.$get = function() {
                return function(e) {
                    if (!e) return "";
                    var t = [];
                    return a(e, function(e, n) {
                        null === e || y(e) || (Bi(e) ? o(e, function(e) {
                            t.push(rt(n) + "=" + rt(bn(e)))
                        }) : t.push(rt(n) + "=" + rt(bn(e))))
                    }), t.join("&")
                }
            }
        }

        function xn() {
            this.$get = function() {
                return function(e) {
                    function t(e, r, i) {
                        null === e || y(e) || (Bi(e) ? o(e, function(e, n) {
                            t(e, r + "[" + (w(e) ? n : "") + "]")
                        }) : w(e) && !k(e) ? a(e, function(e, n) {
                            t(e, r + (i ? "" : "[") + n + (i ? "" : "]"))
                        }) : n.push(rt(r) + "=" + rt(bn(e))))
                    }
                    if (!e) return "";
                    var n = [];
                    return t(e, "", !0), n.join("&")
                }
            }
        }

        function Sn(e, t) {
            if (S(e)) {
                var n = e.replace(Jo, "").trim();
                if (n) {
                    var r = t("Content-Type");
                    (r && 0 === r.indexOf(Wo) || _n(n)) && (e = G(n))
                }
            }
            return e
        }

        function _n(e) {
            var t = e.match(Go);
            return t && Yo[t[0]].test(e)
        }

        function kn(e) {
            function t(e, t) {
                e && (r[e] = r[e] ? r[e] + ", " + t : t)
            }
            var n, r = vt();
            return S(e) ? o(e.split("\n"), function(e) {
                n = e.indexOf(":"), t(Ci(Wi(e.substr(0, n))), Wi(e.substr(n + 1)))
            }) : w(e) && o(e, function(e, n) {
                t(Ci(n), Wi(e))
            }), r
        }

        function Cn(e) {
            var t;
            return function(n) {
                if (t || (t = kn(e)), n) {
                    var r = t[Ci(n)];
                    return void 0 === r && (r = null), r
                }
                return t
            }
        }

        function En(e, t, n, r) {
            return C(r) ? r(e, t, n) : (o(r, function(r) {
                e = r(e, t, n)
            }), e)
        }

        function An(e) {
            return e >= 200 && 300 > e
        }

        function Rn() {
            var e = this.defaults = {
                    transformResponse: [Sn],
                    transformRequest: [function(e) {
                        return !w(e) || T(e) || j(e) || O(e) ? e : K(e)
                    }],
                    headers: {
                        common: {
                            Accept: "application/json, text/plain, */*"
                        },
                        post: U(Ko),
                        put: U(Ko),
                        patch: U(Ko)
                    },
                    xsrfCookieName: "XSRF-TOKEN",
                    xsrfHeaderName: "X-XSRF-TOKEN",
                    paramSerializer: "$httpParamSerializer"
                },
                t = !1;
            this.useApplyAsync = function(e) {
                return b(e) ? (t = !!e, this) : t
            };
            var i = !0;
            this.useLegacyPromiseExtensions = function(e) {
                return b(e) ? (i = !!e, this) : i
            };
            var a = this.interceptors = [];
            this.$get = ["$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", function(s, u, l, c, p, h) {
                function d(t) {
                    function a(e) {
                        var t = f({}, e);
                        return t.data = En(e.data, e.headers, e.status, l.transformResponse), An(e.status) ? t : p.reject(t)
                    }

                    function s(e, t) {
                        var n, r = {};
                        return o(e, function(e, i) {
                            C(e) ? (n = e(t), null != n && (r[i] = n)) : r[i] = e
                        }), r
                    }

                    function u(t) {
                        var n, r, i, o = e.headers,
                            a = f({}, t.headers);
                        o = f({}, o.common, o[Ci(t.method)]);
                        e: for (n in o) {
                            r = Ci(n);
                            for (i in a)
                                if (Ci(i) === r) continue e;
                            a[n] = o[n]
                        }
                        return s(a, U(t))
                    }
                    if (!Ui.isObject(t)) throw r("$http")("badreq", "Http request configuration must be an object.  Received: {0}", t);
                    if (!S(t.url)) throw r("$http")("badreq", "Http request configuration url must be a string.  Received: {0}", t.url);
                    var l = f({
                        method: "get",
                        transformRequest: e.transformRequest,
                        transformResponse: e.transformResponse,
                        paramSerializer: e.paramSerializer
                    }, t);
                    l.headers = u(t), l.method = Ai(l.method), l.paramSerializer = S(l.paramSerializer) ? h.get(l.paramSerializer) : l.paramSerializer;
                    var c = function(t) {
                            var r = t.headers,
                                i = En(t.data, Cn(r), n, t.transformRequest);
                            return y(i) && o(r, function(e, t) {
                                "content-type" === Ci(t) && delete r[t]
                            }), y(t.withCredentials) && !y(e.withCredentials) && (t.withCredentials = e.withCredentials), m(t, i).then(a, a)
                        },
                        d = [c, n],
                        g = p.when(l);
                    for (o(_, function(e) {
                            (e.request || e.requestError) && d.unshift(e.request, e.requestError), (e.response || e.responseError) && d.push(e.response, e.responseError)
                        }); d.length;) {
                        var v = d.shift(),
                            $ = d.shift();
                        g = g.then(v, $)
                    }
                    return i ? (g.success = function(e) {
                        return pt(e, "fn"), g.then(function(t) {
                            e(t.data, t.status, t.headers, l)
                        }), g
                    }, g.error = function(e) {
                        return pt(e, "fn"), g.then(null, function(t) {
                            e(t.data, t.status, t.headers, l)
                        }), g
                    }) : (g.success = Xo("success"), g.error = Xo("error")), g
                }

                function g() {
                    o(arguments, function(e) {
                        d[e] = function(t, n) {
                            return d(f({}, n || {}, {
                                method: e,
                                url: t
                            }))
                        }
                    })
                }

                function v() {
                    o(arguments, function(e) {
                        d[e] = function(t, n, r) {
                            return d(f({}, r || {}, {
                                method: e,
                                url: t,
                                data: n
                            }))
                        }
                    })
                }

                function m(r, i) {
                    function o(e, n, r, i) {
                        function o() {
                            a(n, e, r, i)
                        }
                        h && (An(e) ? h.put(_, [e, n, kn(r), i]) : h.remove(_)), t ? c.$applyAsync(o) : (o(), c.$$phase || c.$apply())
                    }

                    function a(e, t, n, i) {
                        t = t >= -1 ? t : 0, (An(t) ? v.resolve : v.reject)({
                            data: e,
                            status: t,
                            headers: Cn(n),
                            config: r,
                            statusText: i
                        })
                    }

                    function l(e) {
                        a(e.data, e.status, U(e.headers()), e.statusText)
                    }

                    function f() {
                        var e = d.pendingRequests.indexOf(r); - 1 !== e && d.pendingRequests.splice(e, 1)
                    }
                    var h, g, v = p.defer(),
                        m = v.promise,
                        S = r.headers,
                        _ = $(r.url, r.paramSerializer(r.params));
                    if (d.pendingRequests.push(r), m.then(f, f), !r.cache && !e.cache || r.cache === !1 || "GET" !== r.method && "JSONP" !== r.method || (h = w(r.cache) ? r.cache : w(e.cache) ? e.cache : x), h && (g = h.get(_), b(g) ? P(g) ? g.then(l, l) : Bi(g) ? a(g[1], g[0], U(g[2]), g[3]) : a(g, 200, {}, "OK") : h.put(_, m)), y(g)) {
                        var k = Tr(r.url) ? u()[r.xsrfCookieName || e.xsrfCookieName] : n;
                        k && (S[r.xsrfHeaderName || e.xsrfHeaderName] = k), s(r.method, _, i, o, S, r.timeout, r.withCredentials, r.responseType)
                    }
                    return m
                }

                function $(e, t) {
                    return t.length > 0 && (e += (-1 == e.indexOf("?") ? "?" : "&") + t), e
                }
                var x = l("$http");
                e.paramSerializer = S(e.paramSerializer) ? h.get(e.paramSerializer) : e.paramSerializer;
                var _ = [];
                return o(a, function(e) {
                    _.unshift(S(e) ? h.get(e) : h.invoke(e))
                }), d.pendingRequests = [], g("get", "delete", "head", "jsonp"), v("post", "put", "patch"), d.defaults = e, d
            }]
        }

        function Tn() {
            this.$get = function() {
                return function() {
                    return new e.XMLHttpRequest
                }
            }
        }

        function On() {
            this.$get = ["$browser", "$window", "$document", "$xhrFactory", function(e, t, n, r) {
                return jn(e, r, e.defer, t.angular.callbacks, n[0])
            }]
        }

        function jn(e, t, n, r, i) {
            function a(e, t, n) {
                var o = i.createElement("script"),
                    a = null;
                return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
                    co(o, "load", a), co(o, "error", a), i.body.removeChild(o), o = null;
                    var s = -1,
                        u = "unknown";
                    e && ("load" !== e.type || r[t].called || (e = {
                        type: "error"
                    }), u = e.type, s = "error" === e.type ? 404 : 200), n && n(s, u)
                }, lo(o, "load", a), lo(o, "error", a), i.body.appendChild(o), a
            }
            return function(i, s, u, l, c, f, p, h) {
                function d() {
                    $ && $(), w && w.abort()
                }

                function v(t, r, i, o, a) {
                    b(_) && n.cancel(_), $ = w = null, t(r, i, o, a), e.$$completeOutstandingRequest(g)
                }
                if (e.$$incOutstandingRequestCount(), s = s || e.url(), "jsonp" == Ci(i)) {
                    var m = "_" + (r.counter++).toString(36);
                    r[m] = function(e) {
                        r[m].data = e, r[m].called = !0
                    };
                    var $ = a(s.replace("JSON_CALLBACK", "angular.callbacks." + m), m, function(e, t) {
                        v(l, e, r[m].data, "", t), r[m] = g
                    })
                } else {
                    var w = t(i, s);
                    w.open(i, s, !0), o(c, function(e, t) {
                        b(e) && w.setRequestHeader(t, e)
                    }), w.onload = function() {
                        var e = w.statusText || "",
                            t = "response" in w ? w.response : w.responseText,
                            n = 1223 === w.status ? 204 : w.status;
                        0 === n && (n = t ? 200 : "file" == Rr(s).protocol ? 404 : 0), v(l, n, t, w.getAllResponseHeaders(), e)
                    };
                    var x = function() {
                        v(l, -1, null, null, "")
                    };
                    if (w.onerror = x, w.onabort = x, p && (w.withCredentials = !0), h) try {
                        w.responseType = h
                    } catch (S) {
                        if ("json" !== h) throw S
                    }
                    w.send(y(u) ? null : u)
                }
                if (f > 0) var _ = n(d, f);
                else P(f) && f.then(d)
            }
        }

        function In() {
            var e = "{{",
                t = "}}";
            this.startSymbol = function(t) {
                return t ? (e = t, this) : e
            }, this.endSymbol = function(e) {
                return e ? (t = e, this) : t
            }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
                function o(e) {
                    return "\\\\\\" + e
                }

                function a(n) {
                    return n.replace(p, e).replace(h, t)
                }

                function s(e) {
                    if (null == e) return "";
                    switch (typeof e) {
                        case "string":
                            break;
                        case "number":
                            e = "" + e;
                            break;
                        default:
                            e = K(e)
                    }
                    return e
                }

                function u(o, u, p, h) {
                    function d(e) {
                        try {
                            return e = A(e), h && !b(e) ? e : s(e)
                        } catch (t) {
                            r(Qo.interr(o, t))
                        }
                    }
                    h = !!h;
                    for (var g, v, m, $ = 0, w = [], x = [], S = o.length, _ = [], k = []; S > $;) {
                        if (-1 == (g = o.indexOf(e, $)) || -1 == (v = o.indexOf(t, g + l))) {
                            $ !== S && _.push(a(o.substring($)));
                            break
                        }
                        $ !== g && _.push(a(o.substring($, g))), m = o.substring(g + l, v), w.push(m), x.push(n(m, d)), $ = v + c, k.push(_.length), _.push("")
                    }
                    if (p && _.length > 1 && Qo.throwNoconcat(o), !u || w.length) {
                        var E = function(e) {
                                for (var t = 0, n = w.length; n > t; t++) {
                                    if (h && y(e[t])) return;
                                    _[k[t]] = e[t]
                                }
                                return _.join("")
                            },
                            A = function(e) {
                                return p ? i.getTrusted(p, e) : i.valueOf(e)
                            };
                        return f(function(e) {
                            var t = 0,
                                n = w.length,
                                i = new Array(n);
                            try {
                                for (; n > t; t++) i[t] = x[t](e);
                                return E(i)
                            } catch (a) {
                                r(Qo.interr(o, a))
                            }
                        }, {
                            exp: o,
                            expressions: w,
                            $$watchDelegate: function(e, t) {
                                var n;
                                return e.$watchGroup(x, function(r, i) {
                                    var o = E(r);
                                    C(t) && t.call(this, o, r !== i ? n : o, e), n = o
                                })
                            }
                        })
                    }
                }
                var l = e.length,
                    c = t.length,
                    p = new RegExp(e.replace(/./g, o), "g"),
                    h = new RegExp(t.replace(/./g, o), "g");
                return u.startSymbol = function() {
                    return e
                }, u.endSymbol = function() {
                    return t
                }, u
            }]
        }

        function Pn() {
            this.$get = ["$rootScope", "$window", "$q", "$$q", function(e, t, n, r) {
                function i(i, a, s, u) {
                    var l = arguments.length > 4,
                        c = l ? B(arguments, 4) : [],
                        f = t.setInterval,
                        p = t.clearInterval,
                        h = 0,
                        d = b(u) && !u,
                        g = (d ? r : n).defer(),
                        v = g.promise;
                    return s = b(s) ? s : 0, v.then(null, null, l ? function() {
                        i.apply(null, c)
                    } : i), v.$$intervalId = f(function() {
                        g.notify(h++), s > 0 && h >= s && (g.resolve(h), p(v.$$intervalId), delete o[v.$$intervalId]), d || e.$apply()
                    }, a), o[v.$$intervalId] = g, v
                }
                var o = {};
                return i.cancel = function(e) {
                    return e && e.$$intervalId in o ? (o[e.$$intervalId].reject("canceled"), t.clearInterval(e.$$intervalId), delete o[e.$$intervalId], !0) : !1
                }, i
            }]
        }

        function Mn(e) {
            for (var t = e.split("/"), n = t.length; n--;) t[n] = nt(t[n]);
            return t.join("/")
        }

        function Nn(e, t) {
            var n = Rr(e);
            t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = h(n.port) || ta[n.protocol] || null
        }

        function Dn(e, t) {
            var n = "/" !== e.charAt(0);
            n && (e = "/" + e);
            var r = Rr(e);
            t.$$path = decodeURIComponent(n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname), t.$$search = et(r.search), t.$$hash = decodeURIComponent(r.hash), t.$$path && "/" != t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
        }

        function Vn(e, t) {
            return 0 === t.indexOf(e) ? t.substr(e.length) : void 0
        }

        function qn(e) {
            var t = e.indexOf("#");
            return -1 == t ? e : e.substr(0, t)
        }

        function Fn(e) {
            return e.replace(/(#.+)|#$/, "$1")
        }

        function Un(e) {
            return e.substr(0, qn(e).lastIndexOf("/") + 1)
        }

        function Ln(e) {
            return e.substring(0, e.indexOf("/", e.indexOf("//") + 2))
        }

        function Hn(e, t, n) {
            this.$$html5 = !0, n = n || "", Nn(e, this), this.$$parse = function(e) {
                var n = Vn(t, e);
                if (!S(n)) throw na("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, t);
                Dn(n, this), this.$$path || (this.$$path = "/"), this.$$compose()
            }, this.$$compose = function() {
                var e = tt(this.$$search),
                    n = this.$$hash ? "#" + nt(this.$$hash) : "";
                this.$$url = Mn(this.$$path) + (e ? "?" + e : "") + n, this.$$absUrl = t + this.$$url.substr(1)
            }, this.$$parseLinkUrl = function(r, i) {
                if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
                var o, a, s;
                return b(o = Vn(e, r)) ? (a = o, s = b(o = Vn(n, o)) ? t + (Vn("/", o) || o) : e + a) : b(o = Vn(t, r)) ? s = t + o : t == r + "/" && (s = t), s && this.$$parse(s), !!s
            }
        }

        function Bn(e, t, n) {
            Nn(e, this), this.$$parse = function(r) {
                function i(e, t, n) {
                    var r, i = /^\/[A-Z]:(\/.*)/;
                    return 0 === t.indexOf(n) && (t = t.replace(n, "")), i.exec(t) ? e : (r = i.exec(e), r ? r[1] : e)
                }
                var o, a = Vn(e, r) || Vn(t, r);
                y(a) || "#" !== a.charAt(0) ? this.$$html5 ? o = a : (o = "", y(a) && (e = r, this.replace())) : (o = Vn(n, a), y(o) && (o = a)), Dn(o, this), this.$$path = i(this.$$path, o, e), this.$$compose()
            }, this.$$compose = function() {
                var t = tt(this.$$search),
                    r = this.$$hash ? "#" + nt(this.$$hash) : "";
                this.$$url = Mn(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + (this.$$url ? n + this.$$url : "")
            }, this.$$parseLinkUrl = function(t) {
                return qn(e) == qn(t) ? (this.$$parse(t), !0) : !1
            }
        }

        function zn(e, t, n) {
            this.$$html5 = !0, Bn.apply(this, arguments), this.$$parseLinkUrl = function(r, i) {
                if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
                var o, a;
                return e == qn(r) ? o = r : (a = Vn(t, r)) ? o = e + n + a : t === r + "/" && (o = t), o && this.$$parse(o), !!o
            }, this.$$compose = function() {
                var t = tt(this.$$search),
                    r = this.$$hash ? "#" + nt(this.$$hash) : "";
                this.$$url = Mn(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + n + this.$$url
            }
        }

        function Wn(e) {
            return function() {
                return this[e]
            }
        }

        function Kn(e, t) {
            return function(n) {
                return y(n) ? this[e] : (this[e] = t(n), this.$$compose(), this)
            }
        }

        function Gn() {
            var e = "",
                t = {
                    enabled: !1,
                    requireBase: !0,
                    rewriteLinks: !0
                };
            this.hashPrefix = function(t) {
                return b(t) ? (e = t, this) : e
            }, this.html5Mode = function(e) {
                return I(e) ? (t.enabled = e, this) : w(e) ? (I(e.enabled) && (t.enabled = e.enabled), I(e.requireBase) && (t.requireBase = e.requireBase), I(e.rewriteLinks) && (t.rewriteLinks = e.rewriteLinks), this) : t
            }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, o, a) {
                function s(e, t, n) {
                    var i = l.url(),
                        o = l.$$state;
                    try {
                        r.url(e, t, n), l.$$state = r.state()
                    } catch (a) {
                        throw l.url(i), l.$$state = o, a
                    }
                }

                function u(e, t) {
                    n.$broadcast("$locationChangeSuccess", l.absUrl(), e, l.$$state, t)
                }
                var l, c, f, p = r.baseHref(),
                    h = r.url();
                if (t.enabled) {
                    if (!p && t.requireBase) throw na("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
                    f = Ln(h) + (p || "/"), c = i.history ? Hn : zn
                } else f = qn(h), c = Bn;
                var d = Un(f);
                l = new c(f, d, "#" + e), l.$$parseLinkUrl(h, h), l.$$state = r.state();
                var g = /^\s*(javascript|mailto):/i;
                o.on("click", function(e) {
                    if (t.rewriteLinks && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 != e.which && 2 != e.button) {
                        for (var i = ji(e.target);
                            "a" !== V(i[0]);)
                            if (i[0] === o[0] || !(i = i.parent())[0]) return;
                        var s = i.prop("href"),
                            u = i.attr("href") || i.attr("xlink:href");
                        w(s) && "[object SVGAnimatedString]" === s.toString() && (s = Rr(s.animVal).href), g.test(s) || !s || i.attr("target") || e.isDefaultPrevented() || l.$$parseLinkUrl(s, u) && (e.preventDefault(), l.absUrl() != r.url() && (n.$apply(), a.angular["ff-684208-preventDefault"] = !0))
                    }
                }), Fn(l.absUrl()) != Fn(h) && r.url(l.absUrl(), !0);
                var v = !0;
                return r.onUrlChange(function(e, t) {
                    return y(Vn(d, e)) ? void(a.location.href = e) : (n.$evalAsync(function() {
                        var r, i = l.absUrl(),
                            o = l.$$state;
                        e = Fn(e), l.$$parse(e), l.$$state = t, r = n.$broadcast("$locationChangeStart", e, i, t, o).defaultPrevented, l.absUrl() === e && (r ? (l.$$parse(i), l.$$state = o, s(i, !1, o)) : (v = !1, u(i, o)))
                    }), void(n.$$phase || n.$digest()))
                }), n.$watch(function() {
                    var e = Fn(r.url()),
                        t = Fn(l.absUrl()),
                        o = r.state(),
                        a = l.$$replace,
                        c = e !== t || l.$$html5 && i.history && o !== l.$$state;
                    (v || c) && (v = !1, n.$evalAsync(function() {
                        var t = l.absUrl(),
                            r = n.$broadcast("$locationChangeStart", t, e, l.$$state, o).defaultPrevented;
                        l.absUrl() === t && (r ? (l.$$parse(e), l.$$state = o) : (c && s(t, a, o === l.$$state ? null : l.$$state), u(e, o)))
                    })), l.$$replace = !1
                }), l
            }]
        }

        function Yn() {
            var e = !0,
                t = this;
            this.debugEnabled = function(t) {
                return b(t) ? (e = t, this) : e
            }, this.$get = ["$window", function(n) {
                function r(e) {
                    return e instanceof Error && (e.stack ? e = e.message && -1 === e.stack.indexOf(e.message) ? "Error: " + e.message + "\n" + e.stack : e.stack : e.sourceURL && (e = e.message + "\n" + e.sourceURL + ":" + e.line)), e
                }

                function i(e) {
                    var t = n.console || {},
                        i = t[e] || t.log || g,
                        a = !1;
                    try {
                        a = !!i.apply
                    } catch (s) {}
                    return a ? function() {
                        var e = [];
                        return o(arguments, function(t) {
                            e.push(r(t))
                        }), i.apply(t, e)
                    } : function(e, t) {
                        i(e, null == t ? "" : t)
                    }
                }
                return {
                    log: i("log"),
                    info: i("info"),
                    warn: i("warn"),
                    error: i("error"),
                    debug: function() {
                        var n = i("debug");
                        return function() {
                            e && n.apply(t, arguments)
                        }
                    }()
                }
            }]
        }

        function Jn(e, t) {
            if ("__defineGetter__" === e || "__defineSetter__" === e || "__lookupGetter__" === e || "__lookupSetter__" === e || "__proto__" === e) throw ia("isecfld", "Attempting to access a disallowed field in Angular expressions! Expression: {0}", t);
            return e
        }

        function Zn(e, t) {
            if (e += "", !S(e)) throw ia("iseccst", "Cannot convert object to primitive value! Expression: {0}", t);
            return e
        }

        function Xn(e, t) {
            if (e) {
                if (e.constructor === e) throw ia("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", t);
                if (e.window === e) throw ia("isecwindow", "Referencing the Window in Angular expressions is disallowed! Expression: {0}", t);
                if (e.children && (e.nodeName || e.prop && e.attr && e.find)) throw ia("isecdom", "Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}", t);
                if (e === Object) throw ia("isecobj", "Referencing Object in Angular expressions is disallowed! Expression: {0}", t)
            }
            return e
        }

        function Qn(e, t) {
            if (e) {
                if (e.constructor === e) throw ia("isecfn", "Referencing Function in Angular expressions is disallowed! Expression: {0}", t);
                if (e === oa || e === aa || e === sa) throw ia("isecff", "Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}", t)
            }
        }

        function er(e, t) {
            if (e && (e === 0..constructor || e === (!1).constructor || e === "".constructor || e === {}.constructor || e === [].constructor || e === Function.constructor)) throw ia("isecaf", "Assigning to a constructor is disallowed! Expression: {0}", t)
        }

        function tr(e, t) {
            return "undefined" != typeof e ? e : t
        }

        function nr(e, t) {
            return "undefined" == typeof e ? t : "undefined" == typeof t ? e : e + t
        }

        function rr(e, t) {
            var n = e(t);
            return !n.$stateful
        }

        function ir(e, t) {
            var n, r;
            switch (e.type) {
                case fa.Program:
                    n = !0, o(e.body, function(e) {
                        ir(e.expression, t), n = n && e.expression.constant
                    }), e.constant = n;
                    break;
                case fa.Literal:
                    e.constant = !0, e.toWatch = [];
                    break;
                case fa.UnaryExpression:
                    ir(e.argument, t), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
                    break;
                case fa.BinaryExpression:
                    ir(e.left, t), ir(e.right, t), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
                    break;
                case fa.LogicalExpression:
                    ir(e.left, t), ir(e.right, t), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
                    break;
                case fa.ConditionalExpression:
                    ir(e.test, t), ir(e.alternate, t), ir(e.consequent, t), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
                    break;
                case fa.Identifier:
                    e.constant = !1, e.toWatch = [e];
                    break;
                case fa.MemberExpression:
                    ir(e.object, t), e.computed && ir(e.property, t), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = [e];
                    break;
                case fa.CallExpression:
                    n = e.filter ? rr(t, e.callee.name) : !1, r = [], o(e.arguments, function(e) {
                        ir(e, t), n = n && e.constant, e.constant || r.push.apply(r, e.toWatch)
                    }), e.constant = n, e.toWatch = e.filter && rr(t, e.callee.name) ? r : [e];
                    break;
                case fa.AssignmentExpression:
                    ir(e.left, t), ir(e.right, t), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
                    break;
                case fa.ArrayExpression:
                    n = !0, r = [], o(e.elements, function(e) {
                        ir(e, t), n = n && e.constant, e.constant || r.push.apply(r, e.toWatch)
                    }), e.constant = n, e.toWatch = r;
                    break;
                case fa.ObjectExpression:
                    n = !0, r = [], o(e.properties, function(e) {
                        ir(e.value, t), n = n && e.value.constant, e.value.constant || r.push.apply(r, e.value.toWatch)
                    }), e.constant = n, e.toWatch = r;
                    break;
                case fa.ThisExpression:
                    e.constant = !1, e.toWatch = []
            }
        }

        function or(e) {
            if (1 == e.length) {
                var t = e[0].expression,
                    r = t.toWatch;
                return 1 !== r.length ? r : r[0] !== t ? r : n
            }
        }

        function ar(e) {
            return e.type === fa.Identifier || e.type === fa.MemberExpression
        }

        function sr(e) {
            return 1 === e.body.length && ar(e.body[0].expression) ? {
                type: fa.AssignmentExpression,
                left: e.body[0].expression,
                right: {
                    type: fa.NGValueParameter
                },
                operator: "="
            } : void 0
        }

        function ur(e) {
            return 0 === e.body.length || 1 === e.body.length && (e.body[0].expression.type === fa.Literal || e.body[0].expression.type === fa.ArrayExpression || e.body[0].expression.type === fa.ObjectExpression)
        }

        function lr(e) {
            return e.constant
        }

        function cr(e, t) {
            this.astBuilder = e, this.$filter = t
        }

        function fr(e, t) {
            this.astBuilder = e, this.$filter = t
        }

        function pr(e) {
            return "constructor" == e
        }

        function hr(e) {
            return C(e.valueOf) ? e.valueOf() : ha.call(e)
        }

        function dr() {
            var e = vt(),
                t = vt();
            this.$get = ["$filter", function(r) {
                function i(n, i, o) {
                    var s, h, $;
                    switch (o = o || m, typeof n) {
                        case "string":
                            n = n.trim(), $ = n;
                            var y = o ? t : e;
                            if (s = y[$], !s) {
                                ":" === n.charAt(0) && ":" === n.charAt(1) && (h = !0, n = n.substring(2));
                                var b = o ? v : d,
                                    w = new ca(b),
                                    x = new pa(w, r, b);
                                s = x.parse(n), s.constant ? s.$$watchDelegate = f : h ? s.$$watchDelegate = s.literal ? c : l : s.inputs && (s.$$watchDelegate = u), o && (s = a(s)), y[$] = s
                            }
                            return p(s, i);
                        case "function":
                            return p(n, i);
                        default:
                            return p(g, i)
                    }
                }

                function a(e) {
                    function t(t, n, r, i) {
                        var o = m;
                        m = !0;
                        try {
                            return e(t, n, r, i)
                        } finally {
                            m = o
                        }
                    }
                    if (!e) return e;
                    t.$$watchDelegate = e.$$watchDelegate, t.assign = a(e.assign), t.constant = e.constant, t.literal = e.literal;
                    for (var n = 0; e.inputs && n < e.inputs.length; ++n) e.inputs[n] = a(e.inputs[n]);
                    return t.inputs = e.inputs, t
                }

                function s(e, t) {
                    return null == e || null == t ? e === t : "object" == typeof e && (e = hr(e), "object" == typeof e) ? !1 : e === t || e !== e && t !== t
                }

                function u(e, t, r, i, o) {
                    var a, u = i.inputs;
                    if (1 === u.length) {
                        var l = s;
                        return u = u[0], e.$watch(function(e) {
                            var t = u(e);
                            return s(t, l) || (a = i(e, n, n, [t]), l = t && hr(t)), a
                        }, t, r, o)
                    }
                    for (var c = [], f = [], p = 0, h = u.length; h > p; p++) c[p] = s, f[p] = null;
                    return e.$watch(function(e) {
                        for (var t = !1, r = 0, o = u.length; o > r; r++) {
                            var l = u[r](e);
                            (t || (t = !s(l, c[r]))) && (f[r] = l, c[r] = l && hr(l))
                        }
                        return t && (a = i(e, n, n, f)), a
                    }, t, r, o)
                }

                function l(e, t, n, r) {
                    var i, o;
                    return i = e.$watch(function(e) {
                        return r(e)
                    }, function(e, n, r) {
                        o = e, C(t) && t.apply(this, arguments), b(e) && r.$$postDigest(function() {
                            b(o) && i()
                        })
                    }, n)
                }

                function c(e, t, n, r) {
                    function i(e) {
                        var t = !0;
                        return o(e, function(e) {
                            b(e) || (t = !1)
                        }), t
                    }
                    var a, s;
                    return a = e.$watch(function(e) {
                        return r(e)
                    }, function(e, n, r) {
                        s = e, C(t) && t.call(this, e, n, r), i(e) && r.$$postDigest(function() {
                            i(s) && a()
                        })
                    }, n)
                }

                function f(e, t, n, r) {
                    var i;
                    return i = e.$watch(function(e) {
                        return r(e)
                    }, function() {
                        C(t) && t.apply(this, arguments), i()
                    }, n)
                }

                function p(e, t) {
                    if (!t) return e;
                    var n = e.$$watchDelegate,
                        r = !1,
                        i = n !== c && n !== l,
                        o = i ? function(n, i, o, a) {
                            var s = r && a ? a[0] : e(n, i, o, a);
                            return t(s, n, i)
                        } : function(n, r, i, o) {
                            var a = e(n, r, i, o),
                                s = t(a, n, r);
                            return b(a) ? s : a
                        };
                    return e.$$watchDelegate && e.$$watchDelegate !== u ? o.$$watchDelegate = e.$$watchDelegate : t.$stateful || (o.$$watchDelegate = u, r = !e.inputs, o.inputs = e.inputs ? e.inputs : [e]), o
                }
                var h = Gi().noUnsafeEval,
                    d = {
                        csp: h,
                        expensiveChecks: !1
                    },
                    v = {
                        csp: h,
                        expensiveChecks: !0
                    },
                    m = !1;
                return i.$$runningExpensiveChecks = function() {
                    return m
                }, i
            }]
        }

        function gr() {
            this.$get = ["$rootScope", "$exceptionHandler", function(e, t) {
                return mr(function(t) {
                    e.$evalAsync(t)
                }, t)
            }]
        }

        function vr() {
            this.$get = ["$browser", "$exceptionHandler", function(e, t) {
                return mr(function(t) {
                    e.defer(t)
                }, t)
            }]
        }

        function mr(e, t) {
            function i(e, t, n) {
                function r(t) {
                    return function(n) {
                        i || (i = !0, t.call(e, n))
                    }
                }
                var i = !1;
                return [r(t), r(n)]
            }

            function a() {
                this.$$state = {
                    status: 0
                }
            }

            function s(e, t) {
                return function(n) {
                    t.call(e, n)
                }
            }

            function u(e) {
                var r, i, o;
                o = e.pending, e.processScheduled = !1, e.pending = n;
                for (var a = 0, s = o.length; s > a; ++a) {
                    i = o[a][0], r = o[a][e.status];
                    try {
                        C(r) ? i.resolve(r(e.value)) : 1 === e.status ? i.resolve(e.value) : i.reject(e.value)
                    } catch (u) {
                        i.reject(u), t(u)
                    }
                }
            }

            function l(t) {
                !t.processScheduled && t.pending && (t.processScheduled = !0, e(function() {
                    u(t)
                }))
            }

            function c() {
                this.promise = new a, this.resolve = s(this, this.resolve), this.reject = s(this, this.reject), this.notify = s(this, this.notify)
            }

            function p(e) {
                var t = new c,
                    n = 0,
                    r = Bi(e) ? [] : {};
                return o(e, function(e, i) {
                    n++, $(e).then(function(e) {
                        r.hasOwnProperty(i) || (r[i] = e, --n || t.resolve(r))
                    }, function(e) {
                        r.hasOwnProperty(i) || t.reject(e)
                    })
                }), 0 === n && t.resolve(r), t.promise
            }
            var h = r("$q", TypeError),
                d = function() {
                    return new c
                };
            f(a.prototype, {
                then: function(e, t, n) {
                    if (y(e) && y(t) && y(n)) return this;
                    var r = new c;
                    return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), this.$$state.status > 0 && l(this.$$state), r.promise
                },
                "catch": function(e) {
                    return this.then(null, e)
                },
                "finally": function(e, t) {
                    return this.then(function(t) {
                        return m(t, !0, e)
                    }, function(t) {
                        return m(t, !1, e)
                    }, t)
                }
            }), f(c.prototype, {
                resolve: function(e) {
                    this.promise.$$state.status || (e === this.promise ? this.$$reject(h("qcycle", "Expected promise to be resolved with value other than itself '{0}'", e)) : this.$$resolve(e))
                },
                $$resolve: function(e) {
                    var n, r;
                    r = i(this, this.$$resolve, this.$$reject);
                    try {
                        (w(e) || C(e)) && (n = e && e.then), C(n) ? (this.promise.$$state.status = -1, n.call(e, r[0], r[1], this.notify)) : (this.promise.$$state.value = e, this.promise.$$state.status = 1, l(this.promise.$$state))
                    } catch (o) {
                        r[1](o), t(o)
                    }
                },
                reject: function(e) {
                    this.promise.$$state.status || this.$$reject(e)
                },
                $$reject: function(e) {
                    this.promise.$$state.value = e, this.promise.$$state.status = 2, l(this.promise.$$state)
                },
                notify: function(n) {
                    var r = this.promise.$$state.pending;
                    this.promise.$$state.status <= 0 && r && r.length && e(function() {
                        for (var e, i, o = 0, a = r.length; a > o; o++) {
                            i = r[o][0], e = r[o][3];
                            try {
                                i.notify(C(e) ? e(n) : n)
                            } catch (s) {
                                t(s)
                            }
                        }
                    })
                }
            });
            var g = function(e) {
                    var t = new c;
                    return t.reject(e), t.promise
                },
                v = function(e, t) {
                    var n = new c;
                    return t ? n.resolve(e) : n.reject(e), n.promise
                },
                m = function(e, t, n) {
                    var r = null;
                    try {
                        C(n) && (r = n())
                    } catch (i) {
                        return v(i, !1)
                    }
                    return P(r) ? r.then(function() {
                        return v(e, t)
                    }, function(e) {
                        return v(e, !1)
                    }) : v(e, t)
                },
                $ = function(e, t, n, r) {
                    var i = new c;
                    return i.resolve(e), i.promise.then(t, n, r)
                },
                b = $,
                x = function S(e) {
                    function t(e) {
                        r.resolve(e)
                    }

                    function n(e) {
                        r.reject(e)
                    }
                    if (!C(e)) throw h("norslvr", "Expected resolverFn, got '{0}'", e);
                    if (!(this instanceof S)) return new S(e);
                    var r = new c;
                    return e(t, n), r.promise
                };
            return x.defer = d, x.reject = g, x.when = $, x.resolve = b, x.all = p, x
        }

        function $r() {
            this.$get = ["$window", "$timeout", function(e, t) {
                var n = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
                    r = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
                    i = !!n,
                    o = i ? function(e) {
                        var t = n(e);
                        return function() {
                            r(t)
                        }
                    } : function(e) {
                        var n = t(e, 16.66, !1);
                        return function() {
                            t.cancel(n)
                        }
                    };
                return o.supported = i, o
            }]
        }

        function yr() {
            function e(e) {
                function t() {
                    this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = u(), this.$$ChildScope = null
                }
                return t.prototype = e, t
            }
            var t = 10,
                n = r("$rootScope"),
                a = null,
                s = null;
            this.digestTtl = function(e) {
                return arguments.length && (t = e), t
            }, this.$get = ["$injector", "$exceptionHandler", "$parse", "$browser", function(r, l, c, f) {
                function p(e) {
                    e.currentScope.$$destroyed = !0
                }

                function h(e) {
                    9 === Oi && (e.$$childHead && h(e.$$childHead), e.$$nextSibling && h(e.$$nextSibling)), e.$parent = e.$$nextSibling = e.$$prevSibling = e.$$childHead = e.$$childTail = e.$root = e.$$watchers = null
                }

                function d() {
                    this.$id = u(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this.$root = this, this.$$destroyed = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
                }

                function v(e) {
                    if (k.$$phase) throw n("inprog", "{0} already in progress", k.$$phase);
                    k.$$phase = e
                }

                function m() {
                    k.$$phase = null
                }

                function $(e, t) {
                    do e.$$watchersCount += t; while (e = e.$parent)
                }

                function b(e, t, n) {
                    do e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n]; while (e = e.$parent)
                }

                function x() {}

                function S() {
                    for (; R.length;) try {
                        R.shift()()
                    } catch (e) {
                        l(e)
                    }
                    s = null
                }

                function _() {
                    null === s && (s = f.defer(function() {
                        k.$apply(S)
                    }))
                }
                d.prototype = {
                    constructor: d,
                    $new: function(t, n) {
                        var r;
                        return n = n || this, t ? (r = new d, r.$root = this.$root) : (this.$$ChildScope || (this.$$ChildScope = e(this)), r = new this.$$ChildScope), r.$parent = n, r.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = r, n.$$childTail = r) : n.$$childHead = n.$$childTail = r, (t || n != this) && r.$on("$destroy", p), r
                    },
                    $watch: function(e, t, n, r) {
                        var i = c(e);
                        if (i.$$watchDelegate) return i.$$watchDelegate(this, t, n, i, e);
                        var o = this,
                            s = o.$$watchers,
                            u = {
                                fn: t,
                                last: x,
                                get: i,
                                exp: r || e,
                                eq: !!n
                            };
                        return a = null, C(t) || (u.fn = g), s || (s = o.$$watchers = []), s.unshift(u), $(this, 1),
                            function() {
                                q(s, u) >= 0 && $(o, -1), a = null
                            }
                    },
                    $watchGroup: function(e, t) {
                        function n() {
                            u = !1, l ? (l = !1, t(i, i, s)) : t(i, r, s)
                        }
                        var r = new Array(e.length),
                            i = new Array(e.length),
                            a = [],
                            s = this,
                            u = !1,
                            l = !0;
                        if (!e.length) {
                            var c = !0;
                            return s.$evalAsync(function() {
                                    c && t(i, i, s)
                                }),
                                function() {
                                    c = !1
                                }
                        }
                        return 1 === e.length ? this.$watch(e[0], function(e, n, o) {
                            i[0] = e, r[0] = n, t(i, e === n ? i : r, o)
                        }) : (o(e, function(e, t) {
                            var o = s.$watch(e, function(e, o) {
                                i[t] = e, r[t] = o, u || (u = !0, s.$evalAsync(n))
                            });
                            a.push(o)
                        }), function() {
                            for (; a.length;) a.shift()()
                        })
                    },
                    $watchCollection: function(e, t) {
                        function n(e) {
                            o = e;
                            var t, n, r, s, u;
                            if (!y(o)) {
                                if (w(o))
                                    if (i(o)) {
                                        a !== h && (a = h, v = a.length = 0, f++), t = o.length, v !== t && (f++, a.length = v = t);
                                        for (var l = 0; t > l; l++) u = a[l], s = o[l], r = u !== u && s !== s, r || u === s || (f++, a[l] = s)
                                    } else {
                                        a !== d && (a = d = {}, v = 0, f++), t = 0;
                                        for (n in o) Ei.call(o, n) && (t++, s = o[n], u = a[n], n in a ? (r = u !== u && s !== s, r || u === s || (f++, a[n] = s)) : (v++, a[n] = s, f++));
                                        if (v > t) {
                                            f++;
                                            for (n in a) Ei.call(o, n) || (v--, delete a[n])
                                        }
                                    }
                                else a !== o && (a = o, f++);
                                return f
                            }
                        }

                        function r() {
                            if (g ? (g = !1, t(o, o, u)) : t(o, s, u), l)
                                if (w(o))
                                    if (i(o)) {
                                        s = new Array(o.length);
                                        for (var e = 0; e < o.length; e++) s[e] = o[e]
                                    } else {
                                        s = {};
                                        for (var n in o) Ei.call(o, n) && (s[n] = o[n])
                                    }
                            else s = o
                        }
                        n.$stateful = !0;
                        var o, a, s, u = this,
                            l = t.length > 1,
                            f = 0,
                            p = c(e, n),
                            h = [],
                            d = {},
                            g = !0,
                            v = 0;
                        return this.$watch(p, r)
                    },
                    $digest: function() {
                        var e, r, i, o, u, c, p, h, d, g, $, y, b = t,
                            w = this,
                            _ = [];
                        v("$digest"), f.$$checkUrlChange(), this === k && null !== s && (f.defer.cancel(s), S()), a = null;
                        do {
                            for (h = !1, g = w; E.length;) {
                                try {
                                    y = E.shift(), y.scope.$eval(y.expression, y.locals)
                                } catch (R) {
                                    l(R)
                                }
                                a = null
                            }
                            e: do {
                                if (c = g.$$watchers)
                                    for (p = c.length; p--;) try {
                                        if (e = c[p])
                                            if (u = e.get, (r = u(g)) === (i = e.last) || (e.eq ? L(r, i) : "number" == typeof r && "number" == typeof i && isNaN(r) && isNaN(i))) {
                                                if (e === a) {
                                                    h = !1;
                                                    break e
                                                }
                                            } else h = !0, a = e, e.last = e.eq ? F(r, null) : r, o = e.fn, o(r, i === x ? r : i, g), 5 > b && ($ = 4 - b, _[$] || (_[$] = []), _[$].push({
                                                msg: C(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
                                                newVal: r,
                                                oldVal: i
                                            }))
                                    } catch (R) {
                                        l(R)
                                    }
                                if (!(d = g.$$watchersCount && g.$$childHead || g !== w && g.$$nextSibling))
                                    for (; g !== w && !(d = g.$$nextSibling);) g = g.$parent
                            } while (g = d);
                            if ((h || E.length) && !b--) throw m(), n("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, _)
                        } while (h || E.length);
                        for (m(); A.length;) try {
                            A.shift()()
                        } catch (R) {
                            l(R)
                        }
                    },
                    $destroy: function() {
                        if (!this.$$destroyed) {
                            var e = this.$parent;
                            this.$broadcast("$destroy"), this.$$destroyed = !0, this === k && f.$$applicationDestroyed(), $(this, -this.$$watchersCount);
                            for (var t in this.$$listenerCount) b(this, this.$$listenerCount[t], t);
                            e && e.$$childHead == this && (e.$$childHead = this.$$nextSibling), e && e.$$childTail == this && (e.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = g, this.$on = this.$watch = this.$watchGroup = function() {
                                return g
                            }, this.$$listeners = {}, this.$$nextSibling = null, h(this)
                        }
                    },
                    $eval: function(e, t) {
                        return c(e)(this, t)
                    },
                    $evalAsync: function(e, t) {
                        k.$$phase || E.length || f.defer(function() {
                            E.length && k.$digest()
                        }), E.push({
                            scope: this,
                            expression: c(e),
                            locals: t
                        })
                    },
                    $$postDigest: function(e) {
                        A.push(e)
                    },
                    $apply: function(e) {
                        try {
                            v("$apply");
                            try {
                                return this.$eval(e)
                            } finally {
                                m()
                            }
                        } catch (t) {
                            l(t)
                        } finally {
                            try {
                                k.$digest()
                            } catch (t) {
                                throw l(t), t
                            }
                        }
                    },
                    $applyAsync: function(e) {
                        function t() {
                            n.$eval(e)
                        }
                        var n = this;
                        e && R.push(t), e = c(e), _()
                    },
                    $on: function(e, t) {
                        var n = this.$$listeners[e];
                        n || (this.$$listeners[e] = n = []), n.push(t);
                        var r = this;
                        do r.$$listenerCount[e] || (r.$$listenerCount[e] = 0), r.$$listenerCount[e]++; while (r = r.$parent);
                        var i = this;
                        return function() {
                            var r = n.indexOf(t); - 1 !== r && (n[r] = null, b(i, 1, e))
                        }
                    },
                    $emit: function(e) {
                        var t, n, r, i = [],
                            o = this,
                            a = !1,
                            s = {
                                name: e,
                                targetScope: o,
                                stopPropagation: function() {
                                    a = !0
                                },
                                preventDefault: function() {
                                    s.defaultPrevented = !0
                                },
                                defaultPrevented: !1
                            },
                            u = H([s], arguments, 1);
                        do {
                            for (t = o.$$listeners[e] || i, s.currentScope = o, n = 0, r = t.length; r > n; n++)
                                if (t[n]) try {
                                    t[n].apply(null, u)
                                } catch (c) {
                                    l(c)
                                } else t.splice(n, 1), n--, r--;
                            if (a) return s.currentScope = null, s;
                            o = o.$parent
                        } while (o);
                        return s.currentScope = null, s
                    },
                    $broadcast: function(e) {
                        var t = this,
                            n = t,
                            r = t,
                            i = {
                                name: e,
                                targetScope: t,
                                preventDefault: function() {
                                    i.defaultPrevented = !0
                                },
                                defaultPrevented: !1
                            };
                        if (!t.$$listenerCount[e]) return i;
                        for (var o, a, s, u = H([i], arguments, 1); n = r;) {
                            for (i.currentScope = n, o = n.$$listeners[e] || [], a = 0, s = o.length; s > a; a++)
                                if (o[a]) try {
                                    o[a].apply(null, u)
                                } catch (c) {
                                    l(c)
                                } else o.splice(a, 1), a--, s--;
                            if (!(r = n.$$listenerCount[e] && n.$$childHead || n !== t && n.$$nextSibling))
                                for (; n !== t && !(r = n.$$nextSibling);) n = n.$parent
                        }
                        return i.currentScope = null, i
                    }
                };
                var k = new d,
                    E = k.$$asyncQueue = [],
                    A = k.$$postDigestQueue = [],
                    R = k.$$applyAsyncQueue = [];
                return k
            }]
        }

        function br() {
            var e = /^\s*(https?|ftp|mailto|tel|file):/,
                t = /^\s*((https?|ftp|file|blob):|data:image\/)/;
            this.aHrefSanitizationWhitelist = function(t) {
                return b(t) ? (e = t, this) : e
            }, this.imgSrcSanitizationWhitelist = function(e) {
                return b(e) ? (t = e, this) : t
            }, this.$get = function() {
                return function(n, r) {
                    var i, o = r ? t : e;
                    return i = Rr(n).href, "" === i || i.match(o) ? n : "unsafe:" + i
                }
            }
        }

        function wr(e) {
            if ("self" === e) return e;
            if (S(e)) {
                if (e.indexOf("***") > -1) throw da("iwcard", "Illegal sequence *** in string matcher.  String: {0}", e);
                return e = Ki(e).replace("\\*\\*", ".*").replace("\\*", "[^:/.?&;]*"), new RegExp("^" + e + "$")
            }
            if (E(e)) return new RegExp("^" + e.source + "$");
            throw da("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
        }

        function xr(e) {
            var t = [];
            return b(e) && o(e, function(e) {
                t.push(wr(e))
            }), t
        }

        function Sr() {
            this.SCE_CONTEXTS = ga;
            var e = ["self"],
                t = [];
            this.resourceUrlWhitelist = function(t) {
                return arguments.length && (e = xr(t)), e
            }, this.resourceUrlBlacklist = function(e) {
                return arguments.length && (t = xr(e)), t
            }, this.$get = ["$injector", function(n) {
                function r(e, t) {
                    return "self" === e ? Tr(t) : !!e.exec(t.href)
                }

                function i(n) {
                    var i, o, a = Rr(n.toString()),
                        s = !1;
                    for (i = 0, o = e.length; o > i; i++)
                        if (r(e[i], a)) {
                            s = !0;
                            break
                        } if (s)
                        for (i = 0, o = t.length; o > i; i++)
                            if (r(t[i], a)) {
                                s = !1;
                                break
                            } return s
                }

                function o(e) {
                    var t = function(e) {
                        this.$$unwrapTrustedValue = function() {
                            return e
                        }
                    };
                    return e && (t.prototype = new e), t.prototype.valueOf = function() {
                        return this.$$unwrapTrustedValue()
                    }, t.prototype.toString = function() {
                        return this.$$unwrapTrustedValue().toString()
                    }, t
                }

                function a(e, t) {
                    var n = f.hasOwnProperty(e) ? f[e] : null;
                    if (!n) throw da("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
                    if (null === t || y(t) || "" === t) return t;
                    if ("string" != typeof t) throw da("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
                    return new n(t)
                }

                function s(e) {
                    return e instanceof c ? e.$$unwrapTrustedValue() : e
                }

                function u(e, t) {
                    if (null === t || y(t) || "" === t) return t;
                    var n = f.hasOwnProperty(e) ? f[e] : null;
                    if (n && t instanceof n) return t.$$unwrapTrustedValue();
                    if (e === ga.RESOURCE_URL) {
                        if (i(t)) return t;
                        throw da("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}", t.toString())
                    }
                    if (e === ga.HTML) return l(t);
                    throw da("unsafe", "Attempting to use an unsafe value in a safe context.")
                }
                var l = function() {
                    throw da("unsafe", "Attempting to use an unsafe value in a safe context.")
                };
                n.has("$sanitize") && (l = n.get("$sanitize"));
                var c = o(),
                    f = {};
                return f[ga.HTML] = o(c), f[ga.CSS] = o(c), f[ga.URL] = o(c), f[ga.JS] = o(c), f[ga.RESOURCE_URL] = o(f[ga.URL]), {
                    trustAs: a,
                    getTrusted: u,
                    valueOf: s
                }
            }]
        }

        function _r() {
            var e = !0;
            this.enabled = function(t) {
                return arguments.length && (e = !!t), e
            }, this.$get = ["$parse", "$sceDelegate", function(t, n) {
                if (e && 8 > Oi) throw da("iequirks", "Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode.  You can fix this by adding the text <!doctype html> to the top of your HTML document.  See http://docs.angularjs.org/api/ng.$sce for more information.");
                var r = U(ga);
                r.isEnabled = function() {
                    return e
                }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, e || (r.trustAs = r.getTrusted = function(e, t) {
                    return t
                }, r.valueOf = v), r.parseAs = function(e, n) {
                    var i = t(n);
                    return i.literal && i.constant ? i : t(n, function(t) {
                        return r.getTrusted(e, t)
                    })
                };
                var i = r.parseAs,
                    a = r.getTrusted,
                    s = r.trustAs;
                return o(ga, function(e, t) {
                    var n = Ci(t);
                    r[xt("parse_as_" + n)] = function(t) {
                        return i(e, t)
                    }, r[xt("get_trusted_" + n)] = function(t) {
                        return a(e, t)
                    }, r[xt("trust_as_" + n)] = function(t) {
                        return s(e, t)
                    }
                }), r
            }]
        }

        function kr() {
            this.$get = ["$window", "$document", function(e, t) {
                var n, r, i = {},
                    o = h((/android (\d+)/.exec(Ci((e.navigator || {}).userAgent)) || [])[1]),
                    a = /Boxee/i.test((e.navigator || {}).userAgent),
                    s = t[0] || {},
                    u = /^(Moz|webkit|ms)(?=[A-Z])/,
                    l = s.body && s.body.style,
                    c = !1,
                    f = !1;
                if (l) {
                    for (var p in l)
                        if (r = u.exec(p)) {
                            n = r[0], n = n.substr(0, 1).toUpperCase() + n.substr(1);
                            break
                        } n || (n = "WebkitOpacity" in l && "webkit"), c = !!("transition" in l || n + "Transition" in l), f = !!("animation" in l || n + "Animation" in l), !o || c && f || (c = S(l.webkitTransition), f = S(l.webkitAnimation))
                }
                return {
                    history: !(!e.history || !e.history.pushState || 4 > o || a),
                    hasEvent: function(e) {
                        if ("input" === e && 11 >= Oi) return !1;
                        if (y(i[e])) {
                            var t = s.createElement("div");
                            i[e] = "on" + e in t
                        }
                        return i[e]
                    },
                    csp: Gi(),
                    vendorPrefix: n,
                    transitions: c,
                    animations: f,
                    android: o
                }
            }]
        }

        function Cr() {
            this.$get = ["$templateCache", "$http", "$q", "$sce", function(e, t, n, r) {
                function i(o, a) {
                    function s(e) {
                        if (!a) throw Uo("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", o, e.status, e.statusText);
                        return n.reject(e)
                    }
                    i.totalPendingRequests++, (!S(o) || y(e.get(o))) && (o = r.getTrustedResourceUrl(o));
                    var u = t.defaults && t.defaults.transformResponse;
                    Bi(u) ? u = u.filter(function(e) {
                        return e !== Sn
                    }) : u === Sn && (u = null);
                    var l = {
                        cache: e,
                        transformResponse: u
                    };
                    return t.get(o, l)["finally"](function() {
                        i.totalPendingRequests--
                    }).then(function(t) {
                        return e.put(o, t.data), t.data
                    }, s)
                }
                return i.totalPendingRequests = 0, i
            }]
        }

        function Er() {
            this.$get = ["$rootScope", "$browser", "$location", function(e, t, n) {
                var r = {};
                return r.findBindings = function(e, t, n) {
                    var r = e.getElementsByClassName("ng-binding"),
                        i = [];
                    return o(r, function(e) {
                        var r = Ui.element(e).data("$binding");
                        r && o(r, function(r) {
                            if (n) {
                                var o = new RegExp("(^|\\s)" + Ki(t) + "(\\s|\\||$)");
                                o.test(r) && i.push(e)
                            } else -1 != r.indexOf(t) && i.push(e)
                        })
                    }), i
                }, r.findModels = function(e, t, n) {
                    for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
                        var o = n ? "=" : "*=",
                            a = "[" + r[i] + "model" + o + '"' + t + '"]',
                            s = e.querySelectorAll(a);
                        if (s.length) return s
                    }
                }, r.getLocation = function() {
                    return n.url()
                }, r.setLocation = function(t) {
                    t !== n.url() && (n.url(t), e.$digest())
                }, r.whenStable = function(e) {
                    t.notifyWhenNoOutstandingRequests(e)
                }, r
            }]
        }

        function Ar() {
            this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(e, t, n, r, i) {
                function o(o, s, u) {
                    C(o) || (u = s, s = o, o = g);
                    var l, c = B(arguments, 3),
                        f = b(u) && !u,
                        p = (f ? r : n).defer(),
                        h = p.promise;
                    return l = t.defer(function() {
                        try {
                            p.resolve(o.apply(null, c))
                        } catch (t) {
                            p.reject(t), i(t)
                        } finally {
                            delete a[h.$$timeoutId]
                        }
                        f || e.$apply()
                    }, s), h.$$timeoutId = l, a[l] = p, h
                }
                var a = {};
                return o.cancel = function(e) {
                    return e && e.$$timeoutId in a ? (a[e.$$timeoutId].reject("canceled"), delete a[e.$$timeoutId], t.defer.cancel(e.$$timeoutId)) : !1
                }, o
            }]
        }

        function Rr(e) {
            var t = e;
            return Oi && (va.setAttribute("href", t), t = va.href), va.setAttribute("href", t), {
                href: va.href,
                protocol: va.protocol ? va.protocol.replace(/:$/, "") : "",
                host: va.host,
                search: va.search ? va.search.replace(/^\?/, "") : "",
                hash: va.hash ? va.hash.replace(/^#/, "") : "",
                hostname: va.hostname,
                port: va.port,
                pathname: "/" === va.pathname.charAt(0) ? va.pathname : "/" + va.pathname
            }
        }

        function Tr(e) {
            var t = S(e) ? Rr(e) : e;
            return t.protocol === ma.protocol && t.host === ma.host
        }

        function Or() {
            this.$get = m(e)
        }

        function jr(e) {
            function t(e) {
                try {
                    return decodeURIComponent(e)
                } catch (t) {
                    return e
                }
            }
            var n = e[0] || {},
                r = {},
                i = "";
            return function() {
                var e, o, a, s, u, l = n.cookie || "";
                if (l !== i)
                    for (i = l, e = i.split("; "), r = {}, a = 0; a < e.length; a++) o = e[a], s = o.indexOf("="), s > 0 && (u = t(o.substring(0, s)), y(r[u]) && (r[u] = t(o.substring(s + 1))));
                return r
            }
        }

        function Ir() {
            this.$get = jr
        }

        function Pr(e) {
            function t(r, i) {
                if (w(r)) {
                    var a = {};
                    return o(r, function(e, n) {
                        a[n] = t(n, e)
                    }), a
                }
                return e.factory(r + n, i)
            }
            var n = "Filter";
            this.register = t, this.$get = ["$injector", function(e) {
                return function(t) {
                    return e.get(t + n)
                }
            }], t("currency", qr), t("date", ei), t("filter", Mr), t("json", ti), t("limitTo", ni), t("lowercase", _a), t("number", Fr), t("orderBy", ri), t("uppercase", ka)
        }

        function Mr() {
            return function(e, t, n) {
                if (!i(e)) {
                    if (null == e) return e;
                    throw r("filter")("notarray", "Expected array but received: {0}", e)
                }
                var o, a, s = Vr(t);
                switch (s) {
                    case "function":
                        o = t;
                        break;
                    case "boolean":
                    case "null":
                    case "number":
                    case "string":
                        a = !0;
                    case "object":
                        o = Nr(t, n, a);
                        break;
                    default:
                        return e
                }
                return Array.prototype.filter.call(e, o)
            }
        }

        function Nr(e, t, n) {
            var r, i = w(e) && "$" in e;
            return t === !0 ? t = L : C(t) || (t = function(e, t) {
                return y(e) ? !1 : null === e || null === t ? e === t : w(t) || w(e) && !$(e) ? !1 : (e = Ci("" + e), t = Ci("" + t), -1 !== e.indexOf(t))
            }), r = function(r) {
                return i && !w(r) ? Dr(r, e.$, t, !1) : Dr(r, e, t, n)
            }
        }

        function Dr(e, t, n, r, i) {
            var o = Vr(e),
                a = Vr(t);
            if ("string" === a && "!" === t.charAt(0)) return !Dr(e, t.substring(1), n, r);
            if (Bi(e)) return e.some(function(e) {
                return Dr(e, t, n, r)
            });
            switch (o) {
                case "object":
                    var s;
                    if (r) {
                        for (s in e)
                            if ("$" !== s.charAt(0) && Dr(e[s], t, n, !0)) return !0;
                        return i ? !1 : Dr(e, t, n, !1)
                    }
                    if ("object" === a) {
                        for (s in t) {
                            var u = t[s];
                            if (!C(u) && !y(u)) {
                                var l = "$" === s,
                                    c = l ? e : e[s];
                                if (!Dr(c, u, n, l, l)) return !1
                            }
                        }
                        return !0
                    }
                    return n(e, t);
                case "function":
                    return !1;
                default:
                    return n(e, t)
            }
        }

        function Vr(e) {
            return null === e ? "null" : typeof e
        }

        function qr(e) {
            var t = e.NUMBER_FORMATS;
            return function(e, n, r) {
                return y(n) && (n = t.CURRENCY_SYM), y(r) && (r = t.PATTERNS[1].maxFrac), null == e ? e : Hr(e, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, r).replace(/\u00A4/g, n)
            }
        }

        function Fr(e) {
            var t = e.NUMBER_FORMATS;
            return function(e, n) {
                return null == e ? e : Hr(e, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, n)
            }
        }

        function Ur(e) {
            var t, n, r, i, o, a = 0;
            for ((n = e.indexOf(ya)) > -1 && (e = e.replace(ya, "")), (r = e.search(/e/i)) > 0 ? (0 > n && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : 0 > n && (n = e.length), r = 0; e.charAt(r) == ba; r++);
            if (r == (o = e.length)) t = [0], n = 1;
            else {
                for (o--; e.charAt(o) == ba;) o--;
                for (n -= r, t = [], i = 0; o >= r; r++, i++) t[i] = +e.charAt(r)
            }
            return n > $a && (t = t.splice(0, $a - 1), a = n - 1, n = 1), {
                d: t,
                e: a,
                i: n
            }
        }

        function Lr(e, t, n, r) {
            var i = e.d,
                o = i.length - e.i;
            t = y(t) ? Math.min(Math.max(n, o), r) : +t;
            var a = t + e.i,
                s = i[a];
            if (a > 0) i.splice(a);
            else {
                e.i = 1, i.length = a = t + 1;
                for (var u = 0; a > u; u++) i[u] = 0
            }
            for (s >= 5 && i[a - 1]++; t > o; o++) i.push(0);
            var l = i.reduceRight(function(e, t, n, r) {
                return t += e, r[n] = t % 10, Math.floor(t / 10)
            }, 0);
            l && (i.unshift(l), e.i++)
        }

        function Hr(e, t, n, r, i) {
            if (!S(e) && !_(e) || isNaN(e)) return "";
            var o, a = !isFinite(e),
                s = !1,
                u = Math.abs(e) + "",
                l = "";
            if (a) l = "∞";
            else {
                o = Ur(u), Lr(o, i, t.minFrac, t.maxFrac);
                var c = o.d,
                    f = o.i,
                    p = o.e,
                    h = [];
                for (s = c.reduce(function(e, t) {
                        return e && !t
                    }, !0); 0 > f;) c.unshift(0), f++;
                f > 0 ? h = c.splice(f, c.length) : (h = c, c = [0]);
                var d = [];
                for (c.length >= t.lgSize && d.unshift(c.splice(-t.lgSize, c.length).join("")); c.length > t.gSize;) d.unshift(c.splice(-t.gSize, c.length).join(""));
                c.length && d.unshift(c.join("")), l = d.join(n), h.length && (l += r + h.join("")), p && (l += "e+" + p)
            }
            return 0 > e && !s ? t.negPre + l + t.negSuf : t.posPre + l + t.posSuf
        }

        function Br(e, t, n) {
            var r = "";
            for (0 > e && (r = "-", e = -e), e = "" + e; e.length < t;) e = ba + e;
            return n && (e = e.substr(e.length - t)), r + e
        }

        function zr(e, t, n, r) {
            return n = n || 0,
                function(i) {
                    var o = i["get" + e]();
                    return (n > 0 || o > -n) && (o += n), 0 === o && -12 == n && (o = 12), Br(o, t, r)
                }
        }

        function Wr(e, t) {
            return function(n, r) {
                var i = n["get" + e](),
                    o = Ai(t ? "SHORT" + e : e);
                return r[o][i]
            }
        }

        function Kr(e, t, n) {
            var r = -1 * n,
                i = r >= 0 ? "+" : "";
            return i += Br(Math[r > 0 ? "floor" : "ceil"](r / 60), 2) + Br(Math.abs(r % 60), 2)
        }

        function Gr(e) {
            var t = new Date(e, 0, 1).getDay();
            return new Date(e, 0, (4 >= t ? 5 : 12) - t)
        }

        function Yr(e) {
            return new Date(e.getFullYear(), e.getMonth(), e.getDate() + (4 - e.getDay()))
        }

        function Jr(e) {
            return function(t) {
                var n = Gr(t.getFullYear()),
                    r = Yr(t),
                    i = +r - +n,
                    o = 1 + Math.round(i / 6048e5);
                return Br(o, e)
            }
        }

        function Zr(e, t) {
            return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
        }

        function Xr(e, t) {
            return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
        }

        function Qr(e, t) {
            return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
        }

        function ei(e) {
            function t(e) {
                var t;
                if (t = e.match(n)) {
                    var r = new Date(0),
                        i = 0,
                        o = 0,
                        a = t[8] ? r.setUTCFullYear : r.setFullYear,
                        s = t[8] ? r.setUTCHours : r.setHours;
                    t[9] && (i = h(t[9] + t[10]), o = h(t[9] + t[11])), a.call(r, h(t[1]), h(t[2]) - 1, h(t[3]));
                    var u = h(t[4] || 0) - i,
                        l = h(t[5] || 0) - o,
                        c = h(t[6] || 0),
                        f = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
                    return s.call(r, u, l, c, f), r
                }
                return e
            }
            var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
            return function(n, r, i) {
                var a, s, u = "",
                    l = [];
                if (r = r || "mediumDate", r = e.DATETIME_FORMATS[r] || r, S(n) && (n = Sa.test(n) ? h(n) : t(n)), _(n) && (n = new Date(n)), !k(n) || !isFinite(n.getTime())) return n;
                for (; r;) s = xa.exec(r), s ? (l = H(l, s, 1), r = l.pop()) : (l.push(r), r = null);
                var c = n.getTimezoneOffset();
                return i && (c = Y(i, c), n = Z(n, i, !0)), o(l, function(t) {
                    a = wa[t], u += a ? a(n, e.DATETIME_FORMATS, c) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
                }), u
            }
        }

        function ti() {
            return function(e, t) {
                return y(t) && (t = 2), K(e, t)
            }
        }

        function ni() {
            return function(e, t, n) {
                return t = 1 / 0 === Math.abs(Number(t)) ? Number(t) : h(t), isNaN(t) ? e : (_(e) && (e = e.toString()), Bi(e) || S(e) ? (n = !n || isNaN(n) ? 0 : h(n), n = 0 > n ? Math.max(0, e.length + n) : n, t >= 0 ? e.slice(n, n + t) : 0 === n ? e.slice(t, e.length) : e.slice(Math.max(0, n + t), n)) : e)
            }
        }

        function ri(e) {
            function t(t, n) {
                return n = n ? -1 : 1, t.map(function(t) {
                    var r = 1,
                        i = v;
                    if (C(t)) i = t;
                    else if (S(t) && (("+" == t.charAt(0) || "-" == t.charAt(0)) && (r = "-" == t.charAt(0) ? -1 : 1, t = t.substring(1)), "" !== t && (i = e(t), i.constant))) {
                        var o = i();
                        i = function(e) {
                            return e[o]
                        }
                    }
                    return {
                        get: i,
                        descending: r * n
                    }
                })
            }

            function n(e) {
                switch (typeof e) {
                    case "number":
                    case "boolean":
                    case "string":
                        return !0;
                    default:
                        return !1
                }
            }

            function r(e, t) {
                return "function" == typeof e.valueOf && (e = e.valueOf(), n(e)) ? e : $(e) && (e = e.toString(), n(e)) ? e : t
            }

            function o(e, t) {
                var n = typeof e;
                return null === e ? (n = "string", e = "null") : "string" === n ? e = e.toLowerCase() : "object" === n && (e = r(e, t)), {
                    value: e,
                    type: n
                }
            }

            function a(e, t) {
                var n = 0;
                return e.type === t.type ? e.value !== t.value && (n = e.value < t.value ? -1 : 1) : n = e.type < t.type ? -1 : 1, n
            }
            return function(e, n, r) {
                function s(e, t) {
                    return {
                        value: e,
                        predicateValues: l.map(function(n) {
                            return o(n.get(e), t)
                        })
                    }
                }

                function u(e, t) {
                    for (var n = 0, r = 0, i = l.length; i > r && !(n = a(e.predicateValues[r], t.predicateValues[r]) * l[r].descending); ++r);
                    return n
                }
                if (!i(e)) return e;
                Bi(n) || (n = [n]), 0 === n.length && (n = ["+"]);
                var l = t(n, r);
                l.push({
                    get: function() {
                        return {}
                    },
                    descending: r ? -1 : 1
                });
                var c = Array.prototype.map.call(e, s);
                return c.sort(u), e = c.map(function(e) {
                    return e.value
                })
            }
        }

        function ii(e) {
            return C(e) && (e = {
                link: e
            }), e.restrict = e.restrict || "AC", m(e)
        }

        function oi(e, t) {
            e.$name = t
        }

        function ai(e, t, r, i, a) {
            var s = this,
                u = [];
            s.$error = {}, s.$$success = {}, s.$pending = n, s.$name = a(t.name || t.ngForm || "")(r), s.$dirty = !1, s.$pristine = !0, s.$valid = !0, s.$invalid = !1, s.$submitted = !1, s.$$parentForm = Aa, s.$rollbackViewValue = function() {
                o(u, function(e) {
                    e.$rollbackViewValue()
                })
            }, s.$commitViewValue = function() {
                o(u, function(e) {
                    e.$commitViewValue()
                })
            }, s.$addControl = function(e) {
                ht(e.$name, "input"), u.push(e), e.$name && (s[e.$name] = e), e.$$parentForm = s
            }, s.$$renameControl = function(e, t) {
                var n = e.$name;
                s[n] === e && delete s[n], s[t] = e, e.$name = t
            }, s.$removeControl = function(e) {
                e.$name && s[e.$name] === e && delete s[e.$name], o(s.$pending, function(t, n) {
                    s.$setValidity(n, null, e)
                }), o(s.$error, function(t, n) {
                    s.$setValidity(n, null, e)
                }), o(s.$$success, function(t, n) {
                    s.$setValidity(n, null, e)
                }), q(u, e), e.$$parentForm = Aa
            }, wi({
                ctrl: this,
                $element: e,
                set: function(e, t, n) {
                    var r = e[t];
                    if (r) {
                        var i = r.indexOf(n); - 1 === i && r.push(n)
                    } else e[t] = [n]
                },
                unset: function(e, t, n) {
                    var r = e[t];
                    r && (q(r, n), 0 === r.length && delete e[t])
                },
                $animate: i
            }), s.$setDirty = function() {
                i.removeClass(e, ps), i.addClass(e, hs), s.$dirty = !0, s.$pristine = !1, s.$$parentForm.$setDirty()
            }, s.$setPristine = function() {
                i.setClass(e, ps, hs + " " + Ra), s.$dirty = !1, s.$pristine = !0, s.$submitted = !1, o(u, function(e) {
                    e.$setPristine()
                })
            }, s.$setUntouched = function() {
                o(u, function(e) {
                    e.$setUntouched()
                })
            }, s.$setSubmitted = function() {
                i.addClass(e, Ra), s.$submitted = !0, s.$$parentForm.$setSubmitted()
            }
        }

        function si(e) {
            e.$formatters.push(function(t) {
                return e.$isEmpty(t) ? t : t.toString()
            })
        }

        function ui(e, t, n, r, i, o) {
            li(e, t, n, r, i, o), si(r)
        }

        function li(e, t, n, r, i, o) {
            var a = Ci(t[0].type);
            if (!i.android) {
                var s = !1;
                t.on("compositionstart", function() {
                    s = !0
                }), t.on("compositionend", function() {
                    s = !1, l()
                })
            }
            var u, l = function(e) {
                if (u && (o.defer.cancel(u), u = null), !s) {
                    var i = t.val(),
                        l = e && e.type;
                    "password" === a || n.ngTrim && "false" === n.ngTrim || (i = Wi(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, l)
                }
            };
            if (i.hasEvent("input")) t.on("input", l);
            else {
                var c = function(e, t, n) {
                    u || (u = o.defer(function() {
                        u = null, t && t.value === n || l(e)
                    }))
                };
                t.on("keydown", function(e) {
                    var t = e.keyCode;
                    91 === t || t > 15 && 19 > t || t >= 37 && 40 >= t || c(e, this, this.value)
                }), i.hasEvent("paste") && t.on("paste cut", c)
            }
            t.on("change", l), Ha[a] && r.$$hasNativeValidators && a === n.type && t.on(La, function(e) {
                if (!u) {
                    var t = this[ki],
                        n = t.badInput,
                        r = t.typeMismatch;
                    u = o.defer(function() {
                        u = null, (t.badInput !== n || t.typeMismatch !== r) && l(e)
                    })
                }
            }), r.$render = function() {
                var e = r.$isEmpty(r.$viewValue) ? "" : r.$viewValue;
                t.val() !== e && t.val(e)
            }
        }

        function ci(e, t) {
            if (k(e)) return e;
            if (S(e)) {
                qa.lastIndex = 0;
                var n = qa.exec(e);
                if (n) {
                    var r = +n[1],
                        i = +n[2],
                        o = 0,
                        a = 0,
                        s = 0,
                        u = 0,
                        l = Gr(r),
                        c = 7 * (i - 1);
                    return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), u = t.getMilliseconds()), new Date(r, 0, l.getDate() + c, o, a, s, u)
                }
            }
            return 0 / 0
        }

        function fi(e, t) {
            return function(n, r) {
                var i, a;
                if (k(n)) return n;
                if (S(n)) {
                    if ('"' == n.charAt(0) && '"' == n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), Ia.test(n)) return new Date(n);
                    if (e.lastIndex = 0, i = e.exec(n)) return i.shift(), a = r ? {
                        yyyy: r.getFullYear(),
                        MM: r.getMonth() + 1,
                        dd: r.getDate(),
                        HH: r.getHours(),
                        mm: r.getMinutes(),
                        ss: r.getSeconds(),
                        sss: r.getMilliseconds() / 1e3
                    } : {
                        yyyy: 1970,
                        MM: 1,
                        dd: 1,
                        HH: 0,
                        mm: 0,
                        ss: 0,
                        sss: 0
                    }, o(i, function(e, n) {
                        n < t.length && (a[t[n]] = +e)
                    }), new Date(a.yyyy, a.MM - 1, a.dd, a.HH, a.mm, a.ss || 0, 1e3 * a.sss || 0)
                }
                return 0 / 0
            }
        }

        function pi(e, t, r, i) {
            return function(o, a, s, u, l, c, f) {
                function p(e) {
                    return e && !(e.getTime && e.getTime() !== e.getTime())
                }

                function h(e) {
                    return b(e) && !k(e) ? r(e) || n : e
                }
                hi(o, a, s, u), li(o, a, s, u, l, c);
                var d, g = u && u.$options && u.$options.timezone;
                if (u.$$parserName = e, u.$parsers.push(function(e) {
                        if (u.$isEmpty(e)) return null;
                        if (t.test(e)) {
                            var i = r(e, d);
                            return g && (i = Z(i, g)), i
                        }
                        return n
                    }), u.$formatters.push(function(e) {
                        if (e && !k(e)) throw ms("datefmt", "Expected `{0}` to be a date", e);
                        return p(e) ? (d = e, d && g && (d = Z(d, g, !0)), f("date")(e, i, g)) : (d = null, "")
                    }), b(s.min) || s.ngMin) {
                    var v;
                    u.$validators.min = function(e) {
                        return !p(e) || y(v) || r(e) >= v
                    }, s.$observe("min", function(e) {
                        v = h(e), u.$validate()
                    })
                }
                if (b(s.max) || s.ngMax) {
                    var m;
                    u.$validators.max = function(e) {
                        return !p(e) || y(m) || r(e) <= m
                    }, s.$observe("max", function(e) {
                        m = h(e), u.$validate()
                    })
                }
            }
        }

        function hi(e, t, r, i) {
            var o = t[0],
                a = i.$$hasNativeValidators = w(o.validity);
            a && i.$parsers.push(function(e) {
                var r = t.prop(ki) || {};
                return r.badInput && !r.typeMismatch ? n : e
            })
        }

        function di(e, t, r, i, o, a) {
            if (hi(e, t, r, i), li(e, t, r, i, o, a), i.$$parserName = "number", i.$parsers.push(function(e) {
                    return i.$isEmpty(e) ? null : Na.test(e) ? parseFloat(e) : n
                }), i.$formatters.push(function(e) {
                    if (!i.$isEmpty(e)) {
                        if (!_(e)) throw ms("numfmt", "Expected `{0}` to be a number", e);
                        e = e.toString()
                    }
                    return e
                }), b(r.min) || r.ngMin) {
                var s;
                i.$validators.min = function(e) {
                    return i.$isEmpty(e) || y(s) || e >= s
                }, r.$observe("min", function(e) {
                    b(e) && !_(e) && (e = parseFloat(e, 10)), s = _(e) && !isNaN(e) ? e : n, i.$validate()
                })
            }
            if (b(r.max) || r.ngMax) {
                var u;
                i.$validators.max = function(e) {
                    return i.$isEmpty(e) || y(u) || u >= e
                }, r.$observe("max", function(e) {
                    b(e) && !_(e) && (e = parseFloat(e, 10)), u = _(e) && !isNaN(e) ? e : n, i.$validate()
                })
            }
        }

        function gi(e, t, n, r, i, o) {
            li(e, t, n, r, i, o), si(r), r.$$parserName = "url", r.$validators.url = function(e, t) {
                var n = e || t;
                return r.$isEmpty(n) || Pa.test(n)
            }
        }

        function vi(e, t, n, r, i, o) {
            li(e, t, n, r, i, o), si(r), r.$$parserName = "email", r.$validators.email = function(e, t) {
                var n = e || t;
                return r.$isEmpty(n) || Ma.test(n)
            }
        }

        function mi(e, t, n, r) {
            y(n.name) && t.attr("name", u());
            var i = function(e) {
                t[0].checked && r.$setViewValue(n.value, e && e.type)
            };
            t.on("click", i), r.$render = function() {
                var e = n.value;
                t[0].checked = e == r.$viewValue
            }, n.$observe("value", r.$render)
        }

        function $i(e, t, n, r, i) {
            var o;
            if (b(r)) {
                if (o = e(r), !o.constant) throw ms("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
                return o(t)
            }
            return i
        }

        function yi(e, t, n, r, i, o, a, s) {
            var u = $i(s, e, "ngTrueValue", n.ngTrueValue, !0),
                l = $i(s, e, "ngFalseValue", n.ngFalseValue, !1),
                c = function(e) {
                    r.$setViewValue(t[0].checked, e && e.type)
                };
            t.on("click", c), r.$render = function() {
                t[0].checked = r.$viewValue
            }, r.$isEmpty = function(e) {
                return e === !1
            }, r.$formatters.push(function(e) {
                return L(e, u)
            }), r.$parsers.push(function(e) {
                return e ? u : l
            })
        }

        function bi(e, t) {
            return e = "ngClass" + e, ["$animate", function(n) {
                function r(e, t) {
                    var n = [];
                    e: for (var r = 0; r < e.length; r++) {
                        for (var i = e[r], o = 0; o < t.length; o++)
                            if (i == t[o]) continue e;
                        n.push(i)
                    }
                    return n
                }

                function i(e) {
                    var t = [];
                    return Bi(e) ? (o(e, function(e) {
                        t = t.concat(i(e))
                    }), t) : S(e) ? e.split(" ") : w(e) ? (o(e, function(e, n) {
                        e && (t = t.concat(n.split(" ")))
                    }), t) : e
                }
                return {
                    restrict: "AC",
                    link: function(a, s, u) {
                        function l(e) {
                            var t = f(e, 1);
                            u.$addClass(t)
                        }

                        function c(e) {
                            var t = f(e, -1);
                            u.$removeClass(t)
                        }

                        function f(e, t) {
                            var n = s.data("$classCounts") || vt(),
                                r = [];
                            return o(e, function(e) {
                                (t > 0 || n[e]) && (n[e] = (n[e] || 0) + t, n[e] === +(t > 0) && r.push(e))
                            }), s.data("$classCounts", n), r.join(" ")
                        }

                        function p(e, t) {
                            var i = r(t, e),
                                o = r(e, t);
                            i = f(i, 1), o = f(o, -1), i && i.length && n.addClass(s, i), o && o.length && n.removeClass(s, o)
                        }

                        function h(e) {
                            if (t === !0 || a.$index % 2 === t) {
                                var n = i(e || []);
                                if (d) {
                                    if (!L(e, d)) {
                                        var r = i(d);
                                        p(r, n)
                                    }
                                } else l(n)
                            }
                            d = Bi(e) ? e.map(function(e) {
                                return U(e)
                            }) : U(e)
                        }
                        var d;
                        a.$watch(u[e], h, !0), u.$observe("class", function() {
                            h(a.$eval(u[e]))
                        }), "ngClass" !== e && a.$watch("$index", function(n, r) {
                            var o = 1 & n;
                            if (o !== (1 & r)) {
                                var s = i(a.$eval(u[e]));
                                o === t ? l(s) : c(s)
                            }
                        })
                    }
                }
            }]
        }

        function wi(e) {
            function t(e, t, u) {
                y(t) ? r("$pending", e, u) : i("$pending", e, u), I(t) ? t ? (f(s.$error, e, u), c(s.$$success, e, u)) : (c(s.$error, e, u), f(s.$$success, e, u)) : (f(s.$error, e, u), f(s.$$success, e, u)), s.$pending ? (o(vs, !0), s.$valid = s.$invalid = n, a("", null)) : (o(vs, !1), s.$valid = xi(s.$error), s.$invalid = !s.$valid, a("", s.$valid));
                var l;
                l = s.$pending && s.$pending[e] ? n : s.$error[e] ? !1 : s.$$success[e] ? !0 : null, a(e, l), s.$$parentForm.$setValidity(e, l, s)
            }

            function r(e, t, n) {
                s[e] || (s[e] = {}), c(s[e], t, n)
            }

            function i(e, t, r) {
                s[e] && f(s[e], t, r), xi(s[e]) && (s[e] = n)
            }

            function o(e, t) {
                t && !l[e] ? (p.addClass(u, e), l[e] = !0) : !t && l[e] && (p.removeClass(u, e), l[e] = !1)
            }

            function a(e, t) {
                e = e ? "-" + lt(e, "-") : "", o(cs + e, t === !0), o(fs + e, t === !1)
            }
            var s = e.ctrl,
                u = e.$element,
                l = {},
                c = e.set,
                f = e.unset,
                p = e.$animate;
            l[fs] = !(l[cs] = u.hasClass(cs)), s.$setValidity = t
        }

        function xi(e) {
            if (e)
                for (var t in e)
                    if (e.hasOwnProperty(t)) return !1;
            return !0
        }

        function Si(e) {
            e[0].hasAttribute("selected") && (e[0].selected = !0)
        }
        var _i = /^\/(.+)\/([a-z]*)$/,
            ki = "validity",
            Ci = function(e) {
                return S(e) ? e.toLowerCase() : e
            },
            Ei = Object.prototype.hasOwnProperty,
            Ai = function(e) {
                return S(e) ? e.toUpperCase() : e
            },
            Ri = function(e) {
                return S(e) ? e.replace(/[A-Z]/g, function(e) {
                    return String.fromCharCode(32 | e.charCodeAt(0))
                }) : e
            },
            Ti = function(e) {
                return S(e) ? e.replace(/[a-z]/g, function(e) {
                    return String.fromCharCode(-33 & e.charCodeAt(0))
                }) : e
            };
        "i" !== "I".toLowerCase() && (Ci = Ri, Ai = Ti);
        var Oi, ji, Ii, Pi, Mi = [].slice,
            Ni = [].splice,
            Di = [].push,
            Vi = Object.prototype.toString,
            qi = Object.getPrototypeOf,
            Fi = r("ng"),
            Ui = e.angular || (e.angular = {}),
            Li = 0;
        Oi = t.documentMode, g.$inject = [], v.$inject = [];
        var Hi, Bi = Array.isArray,
            zi = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/,
            Wi = function(e) {
                return S(e) ? e.trim() : e
            },
            Ki = function(e) {
                return e.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
            },
            Gi = function() {
                function e() {
                    try {
                        return new Function(""), !1
                    } catch (e) {
                        return !0
                    }
                }
                if (!b(Gi.rules)) {
                    var n = t.querySelector("[ng-csp]") || t.querySelector("[data-ng-csp]");
                    if (n) {
                        var r = n.getAttribute("ng-csp") || n.getAttribute("data-ng-csp");
                        Gi.rules = {
                            noUnsafeEval: !r || -1 !== r.indexOf("no-unsafe-eval"),
                            noInlineStyle: !r || -1 !== r.indexOf("no-inline-style")
                        }
                    } else Gi.rules = {
                        noUnsafeEval: e(),
                        noInlineStyle: !1
                    }
                }
                return Gi.rules
            },
            Yi = function() {
                if (b(Yi.name_)) return Yi.name_;
                var e, n, r, i, o = Zi.length;
                for (n = 0; o > n; ++n)
                    if (r = Zi[n], e = t.querySelector("[" + r.replace(":", "\\:") + "jq]")) {
                        i = e.getAttribute(r + "jq");
                        break
                    } return Yi.name_ = i
            },
            Ji = /:/g,
            Zi = ["ng-", "data-ng-", "ng:", "x-ng-"],
            Xi = /[A-Z]/g,
            Qi = !1,
            eo = 1,
            to = 2,
            no = 3,
            ro = 8,
            io = 9,
            oo = 11,
            ao = {
                full: "1.4.14",
                major: 1,
                minor: 4,
                dot: 14,
                codeName: "material-distinction"
            };
        Rt.expando = "ng339";
        var so = Rt.cache = {},
            uo = 1,
            lo = function(e, t, n) {
                e.addEventListener(t, n, !1)
            },
            co = function(e, t, n) {
                e.removeEventListener(t, n, !1)
            };
        Rt._data = function(e) {
            return this.cache[e[this.expando]] || {}
        };
        var fo = /([\:\-\_]+(.))/g,
            po = /^moz([A-Z])/,
            ho = {
                mouseleave: "mouseout",
                mouseenter: "mouseover"
            },
            go = r("jqLite"),
            vo = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
            mo = /<|&#?\w+;/,
            $o = /<([\w:-]+)/,
            yo = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
            bo = {
                option: [1, '<select multiple="multiple">', "</select>"],
                thead: [1, "<table>", "</table>"],
                col: [2, "<table><colgroup>", "</colgroup></table>"],
                tr: [2, "<table><tbody>", "</tbody></table>"],
                td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
                _default: [0, "", ""]
            };
        bo.optgroup = bo.option, bo.tbody = bo.tfoot = bo.colgroup = bo.caption = bo.thead, bo.th = bo.td;
        var wo = Node.prototype.contains || function(e) {
                return !!(16 & this.compareDocumentPosition(e))
            },
            xo = Rt.prototype = {
                ready: function(n) {
                    function r() {
                        i || (i = !0, n())
                    }
                    var i = !1;
                    "complete" === t.readyState ? setTimeout(r) : (this.on("DOMContentLoaded", r), Rt(e).on("load", r))
                },
                toString: function() {
                    var e = [];
                    return o(this, function(t) {
                        e.push("" + t)
                    }), "[" + e.join(", ") + "]"
                },
                eq: function(e) {
                    return ji(e >= 0 ? this[e] : this[this.length + e])
                },
                length: 0,
                push: Di,
                sort: [].sort,
                splice: [].splice
            },
            So = {};
        o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
            So[Ci(e)] = e
        });
        var _o = {};
        o("input,select,option,textarea,button,form,details".split(","), function(e) {
            _o[e] = !0
        });
        var ko = {
            ngMinlength: "minlength",
            ngMaxlength: "maxlength",
            ngMin: "min",
            ngMax: "max",
            ngPattern: "pattern"
        };
        o({
            data: Mt,
            removeData: It,
            hasData: kt
        }, function(e, t) {
            Rt[t] = e
        }), o({
            data: Mt,
            inheritedData: Ut,
            scope: function(e) {
                return ji.data(e, "$scope") || Ut(e.parentNode || e, ["$isolateScope", "$scope"])
            },
            isolateScope: function(e) {
                return ji.data(e, "$isolateScope") || ji.data(e, "$isolateScopeNoTemplate")
            },
            controller: Ft,
            injector: function(e) {
                return Ut(e, "$injector")
            },
            removeAttr: function(e, t) {
                e.removeAttribute(t)
            },
            hasClass: Nt,
            css: function(e, t, n) {
                return t = xt(t), b(n) ? void(e.style[t] = n) : e.style[t]
            },
            attr: function(e, t, r) {
                var i = e.nodeType;
                if (i !== no && i !== to && i !== ro) {
                    var o = Ci(t);
                    if (So[o]) {
                        if (!b(r)) return e[t] || (e.attributes.getNamedItem(t) || g).specified ? o : n;
                        r ? (e[t] = !0, e.setAttribute(t, o)) : (e[t] = !1, e.removeAttribute(o))
                    } else if (b(r)) e.setAttribute(t, r);
                    else if (e.getAttribute) {
                        var a = e.getAttribute(t, 2);
                        return null === a ? n : a
                    }
                }
            },
            prop: function(e, t, n) {
                return b(n) ? void(e[t] = n) : e[t]
            },
            text: function() {
                function e(e, t) {
                    if (y(t)) {
                        var n = e.nodeType;
                        return n === eo || n === no ? e.textContent : ""
                    }
                    e.textContent = t
                }
                return e.$dv = "", e
            }(),
            val: function(e, t) {
                if (y(t)) {
                    if (e.multiple && "select" === V(e)) {
                        var n = [];
                        return o(e.options, function(e) {
                            e.selected && n.push(e.value || e.text)
                        }), 0 === n.length ? null : n
                    }
                    return e.value
                }
                e.value = t
            },
            html: function(e, t) {
                return y(t) ? e.innerHTML : (Ot(e, !0), void(e.innerHTML = t))
            },
            empty: Lt
        }, function(e, t) {
            Rt.prototype[t] = function(t, n) {
                var r, i, o = this.length;
                if (e !== Lt && y(2 == e.length && e !== Nt && e !== Ft ? t : n)) {
                    if (w(t)) {
                        for (r = 0; o > r; r++)
                            if (e === Mt) e(this[r], t);
                            else
                                for (i in t) e(this[r], i, t[i]);
                        return this
                    }
                    for (var a = e.$dv, s = y(a) ? Math.min(o, 1) : o, u = 0; s > u; u++) {
                        var l = e(this[u], t, n);
                        a = a ? a + l : l
                    }
                    return a
                }
                for (r = 0; o > r; r++) e(this[r], t, n);
                return this
            }
        }), o({
            removeData: It,
            on: function(e, t, r, i) {
                if (b(i)) throw go("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
                if (_t(e)) {
                    var o = Pt(e, !0),
                        a = o.events,
                        s = o.handle;
                    s || (s = o.handle = Kt(e, a));
                    for (var u = t.indexOf(" ") >= 0 ? t.split(" ") : [t], l = u.length, c = function(t, n, i) {
                            var o = a[t];
                            o || (o = a[t] = [], o.specialHandlerWrapper = n, "$destroy" === t || i || lo(e, t, s)), o.push(r)
                        }; l--;) t = u[l], ho[t] ? (c(ho[t], Yt), c(t, n, !0)) : c(t)
                }
            },
            off: jt,
            one: function(e, t, n) {
                e = ji(e), e.on(t, function r() {
                    e.off(t, n), e.off(t, r)
                }), e.on(t, n)
            },
            replaceWith: function(e, t) {
                var n, r = e.parentNode;
                Ot(e), o(new Rt(t), function(t) {
                    n ? r.insertBefore(t, n.nextSibling) : r.replaceChild(t, e), n = t
                })
            },
            children: function(e) {
                var t = [];
                return o(e.childNodes, function(e) {
                    e.nodeType === eo && t.push(e)
                }), t
            },
            contents: function(e) {
                return e.contentDocument || e.childNodes || []
            },
            append: function(e, t) {
                var n = e.nodeType;
                if (n === eo || n === oo) {
                    t = new Rt(t);
                    for (var r = 0, i = t.length; i > r; r++) {
                        var o = t[r];
                        e.appendChild(o)
                    }
                }
            },
            prepend: function(e, t) {
                if (e.nodeType === eo) {
                    var n = e.firstChild;
                    o(new Rt(t), function(t) {
                        e.insertBefore(t, n)
                    })
                }
            },
            wrap: function(e, t) {
                At(e, ji(t).eq(0).clone()[0])
            },
            remove: Ht,
            detach: function(e) {
                Ht(e, !0)
            },
            after: function(e, t) {
                var n = e,
                    r = e.parentNode;
                t = new Rt(t);
                for (var i = 0, o = t.length; o > i; i++) {
                    var a = t[i];
                    r.insertBefore(a, n.nextSibling), n = a
                }
            },
            addClass: Vt,
            removeClass: Dt,
            toggleClass: function(e, t, n) {
                t && o(t.split(" "), function(t) {
                    var r = n;
                    y(r) && (r = !Nt(e, t)), (r ? Vt : Dt)(e, t)
                })
            },
            parent: function(e) {
                var t = e.parentNode;
                return t && t.nodeType !== oo ? t : null
            },
            next: function(e) {
                return e.nextElementSibling
            },
            find: function(e, t) {
                return e.getElementsByTagName ? e.getElementsByTagName(t) : []
            },
            clone: Tt,
            triggerHandler: function(e, t, n) {
                var r, i, a, s = t.type || t,
                    u = Pt(e),
                    l = u && u.events,
                    c = l && l[s];
                c && (r = {
                    preventDefault: function() {
                        this.defaultPrevented = !0
                    },
                    isDefaultPrevented: function() {
                        return this.defaultPrevented === !0
                    },
                    stopImmediatePropagation: function() {
                        this.immediatePropagationStopped = !0
                    },
                    isImmediatePropagationStopped: function() {
                        return this.immediatePropagationStopped === !0
                    },
                    stopPropagation: g,
                    type: s,
                    target: e
                }, t.type && (r = f(r, t)), i = U(c), a = n ? [r].concat(n) : [r], o(i, function(t) {
                    r.isImmediatePropagationStopped() || t.apply(e, a)
                }))
            }
        }, function(e, t) {
            Rt.prototype[t] = function(t, n, r) {
                for (var i, o = 0, a = this.length; a > o; o++) y(i) ? (i = e(this[o], t, n, r), b(i) && (i = ji(i))) : qt(i, e(this[o], t, n, r));
                return b(i) ? i : this
            }, Rt.prototype.bind = Rt.prototype.on, Rt.prototype.unbind = Rt.prototype.off
        }), Xt.prototype = {
            put: function(e, t) {
                this[Zt(e, this.nextUid)] = t
            },
            get: function(e) {
                return this[Zt(e, this.nextUid)]
            },
            remove: function(e) {
                var t = this[e = Zt(e, this.nextUid)];
                return delete this[e], t
            }
        };
        var Co = [function() {
                this.$get = [function() {
                    return Xt
                }]
            }],
            Eo = /^[^\(]*\(\s*([^\)]*)\)/m,
            Ao = /,/,
            Ro = /^\s*(_?)(\S+?)\1\s*$/,
            To = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
            Oo = r("$injector");
        tn.$$annotate = en;
        var jo = r("$animate"),
            Io = 1,
            Po = "ng-animate",
            Mo = function() {
                this.$get = function() {}
            },
            No = function() {
                var e = new Xt,
                    t = [];
                this.$get = ["$$AnimateRunner", "$rootScope", function(n, r) {
                    function i(e, t, n) {
                        var r = !1;
                        return t && (t = S(t) ? t.split(" ") : Bi(t) ? t : [], o(t, function(t) {
                            t && (r = !0, e[t] = n)
                        })), r
                    }

                    function a() {
                        o(t, function(t) {
                            var n = e.get(t);
                            if (n) {
                                var r = an(t.attr("class")),
                                    i = "",
                                    a = "";
                                o(n, function(e, t) {
                                    var n = !!r[t];
                                    e !== n && (e ? i += (i.length ? " " : "") + t : a += (a.length ? " " : "") + t)
                                }), o(t, function(e) {
                                    i && Vt(e, i), a && Dt(e, a)
                                }), e.remove(t)
                            }
                        }), t.length = 0
                    }

                    function s(n, o, s) {
                        var u = e.get(n) || {},
                            l = i(u, o, !0),
                            c = i(u, s, !1);
                        (l || c) && (e.put(n, u), t.push(n), 1 === t.length && r.$$postDigest(a))
                    }
                    return {
                        enabled: g,
                        on: g,
                        off: g,
                        pin: g,
                        push: function(e, t, r, i) {
                            i && i(), r = r || {}, r.from && e.css(r.from), r.to && e.css(r.to), (r.addClass || r.removeClass) && s(e, r.addClass, r.removeClass);
                            var o = new n;
                            return o.complete(), o
                        }
                    }
                }]
            },
            Do = ["$provide", function(e) {
                var t = this;
                this.$$registeredAnimations = Object.create(null), this.register = function(n, r) {
                    if (n && "." !== n.charAt(0)) throw jo("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
                    var i = n + "-animation";
                    t.$$registeredAnimations[n.substr(1)] = i, e.factory(i, r)
                }, this.classNameFilter = function(e) {
                    if (1 === arguments.length && (this.$$classNameFilter = e instanceof RegExp ? e : null, this.$$classNameFilter)) {
                        var t = new RegExp("(\\s+|\\/)" + Po + "(\\s+|\\/)");
                        if (t.test(this.$$classNameFilter.toString())) throw jo("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', Po)
                    }
                    return this.$$classNameFilter
                }, this.$get = ["$$animateQueue", function(e) {
                    function t(e, t, n) {
                        if (n) {
                            var r = on(n);
                            !r || r.parentNode || r.previousElementSibling || (n = null)
                        }
                        n ? n.after(e) : t.prepend(e)
                    }
                    return {
                        on: e.on,
                        off: e.off,
                        pin: e.pin,
                        enabled: e.enabled,
                        cancel: function(e) {
                            e.end && e.end()
                        },
                        enter: function(n, r, i, o) {
                            return r = r && ji(r), i = i && ji(i), r = r || i.parent(), t(n, r, i), e.push(n, "enter", sn(o))
                        },
                        move: function(n, r, i, o) {
                            return r = r && ji(r), i = i && ji(i), r = r || i.parent(), t(n, r, i), e.push(n, "move", sn(o))
                        },
                        leave: function(t, n) {
                            return e.push(t, "leave", sn(n), function() {
                                t.remove()
                            })
                        },
                        addClass: function(t, n, r) {
                            return r = sn(r), r.addClass = rn(r.addclass, n), e.push(t, "addClass", r)
                        },
                        removeClass: function(t, n, r) {
                            return r = sn(r), r.removeClass = rn(r.removeClass, n), e.push(t, "removeClass", r)
                        },
                        setClass: function(t, n, r, i) {
                            return i = sn(i), i.addClass = rn(i.addClass, n), i.removeClass = rn(i.removeClass, r), e.push(t, "setClass", i)
                        },
                        animate: function(t, n, r, i, o) {
                            return o = sn(o), o.from = o.from ? f(o.from, n) : n, o.to = o.to ? f(o.to, r) : r, i = i || "ng-inline-animate", o.tempClasses = rn(o.tempClasses, i), e.push(t, "animate", o)
                        }
                    }
                }]
            }],
            Vo = function() {
                this.$get = ["$$rAF", function(e) {
                    function t(t) {
                        n.push(t), n.length > 1 || e(function() {
                            for (var e = 0; e < n.length; e++) n[e]();
                            n = []
                        })
                    }
                    var n = [];
                    return function() {
                        var e = !1;
                        return t(function() {
                                e = !0
                            }),
                            function(n) {
                                e ? n() : t(n)
                            }
                    }
                }]
            },
            qo = function() {
                this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$document", "$timeout", function(e, t, n, r, i) {
                    function a(e) {
                        this.setHost(e);
                        var t = n(),
                            o = function(e) {
                                i(e, 0, !1)
                            };
                        this._doneCallbacks = [], this._tick = function(e) {
                            var n = r[0];
                            n && n.hidden ? o(e) : t(e)
                        }, this._state = 0
                    }
                    var s = 0,
                        u = 1,
                        l = 2;
                    return a.chain = function(e, t) {
                        function n() {
                            return r === e.length ? void t(!0) : void e[r](function(e) {
                                return e === !1 ? void t(!1) : (r++, void n())
                            })
                        }
                        var r = 0;
                        n()
                    }, a.all = function(e, t) {
                        function n(n) {
                            i = i && n, ++r === e.length && t(i)
                        }
                        var r = 0,
                            i = !0;
                        o(e, function(e) {
                            e.done(n)
                        })
                    }, a.prototype = {
                        setHost: function(e) {
                            this.host = e || {}
                        },
                        done: function(e) {
                            this._state === l ? e() : this._doneCallbacks.push(e)
                        },
                        progress: g,
                        getPromise: function() {
                            if (!this.promise) {
                                var t = this;
                                this.promise = e(function(e, n) {
                                    t.done(function(t) {
                                        t === !1 ? n() : e()
                                    })
                                })
                            }
                            return this.promise
                        },
                        then: function(e, t) {
                            return this.getPromise().then(e, t)
                        },
                        "catch": function(e) {
                            return this.getPromise()["catch"](e)
                        },
                        "finally": function(e) {
                            return this.getPromise()["finally"](e)
                        },
                        pause: function() {
                            this.host.pause && this.host.pause()
                        },
                        resume: function() {
                            this.host.resume && this.host.resume()
                        },
                        end: function() {
                            this.host.end && this.host.end(), this._resolve(!0)
                        },
                        cancel: function() {
                            this.host.cancel && this.host.cancel(), this._resolve(!1)
                        },
                        complete: function(e) {
                            var t = this;
                            t._state === s && (t._state = u, t._tick(function() {
                                t._resolve(e)
                            }))
                        },
                        _resolve: function(e) {
                            this._state !== l && (o(this._doneCallbacks, function(t) {
                                t(e)
                            }), this._doneCallbacks.length = 0, this._state = l)
                        }
                    }, a
                }]
            },
            Fo = function() {
                this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(e, t, n) {
                    return function(t, r) {
                        function i() {
                            return e(function() {
                                o(), s || u.complete(), s = !0
                            }), u
                        }

                        function o() {
                            a.addClass && (t.addClass(a.addClass), a.addClass = null), a.removeClass && (t.removeClass(a.removeClass), a.removeClass = null), a.to && (t.css(a.to), a.to = null)
                        }
                        var a = r || {};
                        a.$$prepared || (a = F(a)), a.cleanupStyles && (a.from = a.to = null), a.from && (t.css(a.from), a.from = null);
                        var s, u = new n;
                        return {
                            start: i,
                            end: i
                        }
                    }
                }]
            },
            Uo = r("$compile");
        pn.$inject = ["$provide", "$$sanitizeUriProvider"];
        var Lo = /^((?:x|data)[\:\-_])/i,
            Ho = r("$controller"),
            Bo = /^(\S+)(\s+as\s+([\w$]+))?$/,
            zo = function() {
                this.$get = ["$document", function(e) {
                    return function(t) {
                        return t ? !t.nodeType && t instanceof ji && (t = t[0]) : t = e[0].body, t.offsetWidth + 1
                    }
                }]
            },
            Wo = "application/json",
            Ko = {
                "Content-Type": Wo + ";charset=utf-8"
            },
            Go = /^\[|^\{(?!\{)/,
            Yo = {
                "[": /]$/,
                "{": /}$/
            },
            Jo = /^\)\]\}',?\n/,
            Zo = r("$http"),
            Xo = function(e) {
                return function() {
                    throw Zo("legacy", "The method `{0}` on the promise returned from `$http` has been disabled.", e)
                }
            },
            Qo = Ui.$interpolateMinErr = r("$interpolate");
        Qo.throwNoconcat = function(e) {
            throw Qo("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.  See http://docs.angularjs.org/api/ng.$sce", e)
        }, Qo.interr = function(e, t) {
            return Qo("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
        };
        var ea = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
            ta = {
                http: 80,
                https: 443,
                ftp: 21
            },
            na = r("$location"),
            ra = {
                $$html5: !1,
                $$replace: !1,
                absUrl: Wn("$$absUrl"),
                url: function(e) {
                    if (y(e)) return this.$$url;
                    var t = ea.exec(e);
                    return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
                },
                protocol: Wn("$$protocol"),
                host: Wn("$$host"),
                port: Wn("$$port"),
                path: Kn("$$path", function(e) {
                    return e = null !== e ? e.toString() : "", "/" == e.charAt(0) ? e : "/" + e
                }),
                search: function(e, t) {
                    switch (arguments.length) {
                        case 0:
                            return this.$$search;
                        case 1:
                            if (S(e) || _(e)) e = e.toString(), this.$$search = et(e);
                            else {
                                if (!w(e)) throw na("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
                                e = F(e, {}), o(e, function(t, n) {
                                    null == t && delete e[n]
                                }), this.$$search = e
                            }
                            break;
                        default:
                            y(t) || null === t ? delete this.$$search[e] : this.$$search[e] = t
                    }
                    return this.$$compose(), this
                },
                hash: Kn("$$hash", function(e) {
                    return null !== e ? e.toString() : ""
                }),
                replace: function() {
                    return this.$$replace = !0, this
                }
            };
        o([zn, Bn, Hn], function(e) {
            e.prototype = Object.create(ra), e.prototype.state = function(t) {
                if (!arguments.length) return this.$$state;
                if (e !== Hn || !this.$$html5) throw na("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
                return this.$$state = y(t) ? null : t, this
            }
        });
        var ia = r("$parse"),
            oa = Function.prototype.call,
            aa = Function.prototype.apply,
            sa = Function.prototype.bind,
            ua = vt();
        o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
            ua[e] = !0
        });
        var la = {
                n: "\n",
                f: "\f",
                r: "\r",
                t: "	",
                v: "",
                "'": "'",
                '"': '"'
            },
            ca = function(e) {
                this.options = e
            };
        ca.prototype = {
            constructor: ca,
            lex: function(e) {
                for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
                    var t = this.text.charAt(this.index);
                    if ('"' === t || "'" === t) this.readString(t);
                    else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
                    else if (this.isIdent(t)) this.readIdent();
                    else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
                        index: this.index,
                        text: t
                    }), this.index++;
                    else if (this.isWhitespace(t)) this.index++;
                    else {
                        var n = t + this.peek(),
                            r = n + this.peek(2),
                            i = ua[t],
                            o = ua[n],
                            a = ua[r];
                        if (i || o || a) {
                            var s = a ? r : o ? n : t;
                            this.tokens.push({
                                index: this.index,
                                text: s,
                                operator: !0
                            }), this.index += s.length
                        } else this.throwError("Unexpected next character ", this.index, this.index + 1)
                    }
                }
                return this.tokens
            },
            is: function(e, t) {
                return -1 !== t.indexOf(e)
            },
            peek: function(e) {
                var t = e || 1;
                return this.index + t < this.text.length ? this.text.charAt(this.index + t) : !1
            },
            isNumber: function(e) {
                return e >= "0" && "9" >= e && "string" == typeof e
            },
            isWhitespace: function(e) {
                return " " === e || "\r" === e || "	" === e || "\n" === e || "" === e || " " === e
            },
            isIdent: function(e) {
                return e >= "a" && "z" >= e || e >= "A" && "Z" >= e || "_" === e || "$" === e
            },
            isExpOperator: function(e) {
                return "-" === e || "+" === e || this.isNumber(e)
            },
            throwError: function(e, t, n) {
                n = n || this.index;
                var r = b(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
                throw ia("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
            },
            readNumber: function() {
                for (var e = "", t = this.index; this.index < this.text.length;) {
                    var n = Ci(this.text.charAt(this.index));
                    if ("." == n || this.isNumber(n)) e += n;
                    else {
                        var r = this.peek();
                        if ("e" == n && this.isExpOperator(r)) e += n;
                        else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" == e.charAt(e.length - 1)) e += n;
                        else {
                            if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" != e.charAt(e.length - 1)) break;
                            this.throwError("Invalid exponent")
                        }
                    }
                    this.index++
                }
                this.tokens.push({
                    index: t,
                    text: e,
                    constant: !0,
                    value: Number(e)
                })
            },
            readIdent: function() {
                for (var e = this.index; this.index < this.text.length;) {
                    var t = this.text.charAt(this.index);
                    if (!this.isIdent(t) && !this.isNumber(t)) break;
                    this.index++
                }
                this.tokens.push({
                    index: e,
                    text: this.text.slice(e, this.index),
                    identifier: !0
                })
            },
            readString: function(e) {
                var t = this.index;
                this.index++;
                for (var n = "", r = e, i = !1; this.index < this.text.length;) {
                    var o = this.text.charAt(this.index);
                    if (r += o, i) {
                        if ("u" === o) {
                            var a = this.text.substring(this.index + 1, this.index + 5);
                            a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
                        } else {
                            var s = la[o];
                            n += s || o
                        }
                        i = !1
                    } else if ("\\" === o) i = !0;
                    else {
                        if (o === e) return this.index++, void this.tokens.push({
                            index: t,
                            text: r,
                            constant: !0,
                            value: n
                        });
                        n += o
                    }
                    this.index++
                }
                this.throwError("Unterminated quote", t)
            }
        };
        var fa = function(e, t) {
            this.lexer = e, this.options = t
        };
        fa.Program = "Program", fa.ExpressionStatement = "ExpressionStatement", fa.AssignmentExpression = "AssignmentExpression", fa.ConditionalExpression = "ConditionalExpression", fa.LogicalExpression = "LogicalExpression", fa.BinaryExpression = "BinaryExpression", fa.UnaryExpression = "UnaryExpression", fa.CallExpression = "CallExpression", fa.MemberExpression = "MemberExpression", fa.Identifier = "Identifier", fa.Literal = "Literal", fa.ArrayExpression = "ArrayExpression", fa.Property = "Property", fa.ObjectExpression = "ObjectExpression", fa.ThisExpression = "ThisExpression", fa.NGValueParameter = "NGValueParameter", fa.prototype = {
            ast: function(e) {
                this.text = e, this.tokens = this.lexer.lex(e);
                var t = this.program();
                return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
            },
            program: function() {
                for (var e = [];;)
                    if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
                        type: fa.Program,
                        body: e
                    }
            },
            expressionStatement: function() {
                return {
                    type: fa.ExpressionStatement,
                    expression: this.filterChain()
                }
            },
            filterChain: function() {
                for (var e, t = this.expression(); e = this.expect("|");) t = this.filter(t);
                return t
            },
            expression: function() {
                return this.assignment()
            },
            assignment: function() {
                var e = this.ternary();
                return this.expect("=") && (e = {
                    type: fa.AssignmentExpression,
                    left: e,
                    right: this.assignment(),
                    operator: "="
                }), e
            },
            ternary: function() {
                var e, t, n = this.logicalOR();
                return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
                    type: fa.ConditionalExpression,
                    test: n,
                    alternate: e,
                    consequent: t
                }) : n
            },
            logicalOR: function() {
                for (var e = this.logicalAND(); this.expect("||");) e = {
                    type: fa.LogicalExpression,
                    operator: "||",
                    left: e,
                    right: this.logicalAND()
                };
                return e
            },
            logicalAND: function() {
                for (var e = this.equality(); this.expect("&&");) e = {
                    type: fa.LogicalExpression,
                    operator: "&&",
                    left: e,
                    right: this.equality()
                };
                return e
            },
            equality: function() {
                for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
                    type: fa.BinaryExpression,
                    operator: e.text,
                    left: t,
                    right: this.relational()
                };
                return t
            },
            relational: function() {
                for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
                    type: fa.BinaryExpression,
                    operator: e.text,
                    left: t,
                    right: this.additive()
                };
                return t
            },
            additive: function() {
                for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
                    type: fa.BinaryExpression,
                    operator: e.text,
                    left: t,
                    right: this.multiplicative()
                };
                return t
            },
            multiplicative: function() {
                for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
                    type: fa.BinaryExpression,
                    operator: e.text,
                    left: t,
                    right: this.unary()
                };
                return t
            },
            unary: function() {
                var e;
                return (e = this.expect("+", "-", "!")) ? {
                    type: fa.UnaryExpression,
                    operator: e.text,
                    prefix: !0,
                    argument: this.unary()
                } : this.primary()
            },
            primary: function() {
                var e;
                this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.constants.hasOwnProperty(this.peek().text) ? e = F(this.constants[this.consume().text]) : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek());
                for (var t; t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
                    type: fa.CallExpression,
                    callee: e,
                    arguments: this.parseArguments()
                }, this.consume(")")) : "[" === t.text ? (e = {
                    type: fa.MemberExpression,
                    object: e,
                    property: this.expression(),
                    computed: !0
                }, this.consume("]")) : "." === t.text ? e = {
                    type: fa.MemberExpression,
                    object: e,
                    property: this.identifier(),
                    computed: !1
                } : this.throwError("IMPOSSIBLE");
                return e
            },
            filter: function(e) {
                for (var t = [e], n = {
                        type: fa.CallExpression,
                        callee: this.identifier(),
                        arguments: t,
                        filter: !0
                    }; this.expect(":");) t.push(this.expression());
                return n
            },
            parseArguments: function() {
                var e = [];
                if (")" !== this.peekToken().text)
                    do e.push(this.expression()); while (this.expect(","));
                return e
            },
            identifier: function() {
                var e = this.consume();
                return e.identifier || this.throwError("is not a valid identifier", e), {
                    type: fa.Identifier,
                    name: e.text
                }
            },
            constant: function() {
                return {
                    type: fa.Literal,
                    value: this.consume().value
                }
            },
            arrayDeclaration: function() {
                var e = [];
                if ("]" !== this.peekToken().text)
                    do {
                        if (this.peek("]")) break;
                        e.push(this.expression())
                    } while (this.expect(","));
                return this.consume("]"), {
                    type: fa.ArrayExpression,
                    elements: e
                }
            },
            object: function() {
                var e, t = [];
                if ("}" !== this.peekToken().text)
                    do {
                        if (this.peek("}")) break;
                        e = {
                            type: fa.Property,
                            kind: "init"
                        }, this.peek().constant ? e.key = this.constant() : this.peek().identifier ? e.key = this.identifier() : this.throwError("invalid key", this.peek()), this.consume(":"), e.value = this.expression(), t.push(e)
                    } while (this.expect(","));
                return this.consume("}"), {
                    type: fa.ObjectExpression,
                    properties: t
                }
            },
            throwError: function(e, t) {
                throw ia("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, e, t.index + 1, this.text, this.text.substring(t.index))
            },
            consume: function(e) {
                if (0 === this.tokens.length) throw ia("ueoe", "Unexpected end of expression: {0}", this.text);
                var t = this.expect(e);
                return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
            },
            peekToken: function() {
                if (0 === this.tokens.length) throw ia("ueoe", "Unexpected end of expression: {0}", this.text);
                return this.tokens[0]
            },
            peek: function(e, t, n, r) {
                return this.peekAhead(0, e, t, n, r)
            },
            peekAhead: function(e, t, n, r, i) {
                if (this.tokens.length > e) {
                    var o = this.tokens[e],
                        a = o.text;
                    if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
                }
                return !1
            },
            expect: function(e, t, n, r) {
                var i = this.peek(e, t, n, r);
                return i ? (this.tokens.shift(), i) : !1
            },
            constants: {
                "true": {
                    type: fa.Literal,
                    value: !0
                },
                "false": {
                    type: fa.Literal,
                    value: !1
                },
                "null": {
                    type: fa.Literal,
                    value: null
                },
                undefined: {
                    type: fa.Literal,
                    value: n
                },
                "this": {
                    type: fa.ThisExpression
                }
            }
        }, cr.prototype = {
            compile: function(e, t) {
                var r = this,
                    i = this.astBuilder.ast(e);
                this.state = {
                    nextId: 0,
                    filters: {},
                    expensiveChecks: t,
                    fn: {
                        vars: [],
                        body: [],
                        own: {}
                    },
                    assign: {
                        vars: [],
                        body: [],
                        own: {}
                    },
                    inputs: []
                }, ir(i, r.$filter);
                var a, s = "";
                if (this.stage = "assign", a = sr(i)) {
                    this.state.computing = "assign";
                    var u = this.nextId();
                    this.recurse(a, u), this.return_(u), s = "fn.assign=" + this.generateFunction("assign", "s,v,l")
                }
                var l = or(i.body);
                r.stage = "inputs", o(l, function(e, t) {
                    var n = "fn" + t;
                    r.state[n] = {
                        vars: [],
                        body: [],
                        own: {}
                    }, r.state.computing = n;
                    var i = r.nextId();
                    r.recurse(e, i), r.return_(i), r.state.inputs.push(n), e.watchId = t
                }), this.state.computing = "fn", this.stage = "main", this.recurse(i);
                var c = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + s + this.watchFns() + "return fn;",
                    f = new Function("$filter", "ensureSafeMemberName", "ensureSafeObject", "ensureSafeFunction", "getStringValue", "ensureSafeAssignContext", "ifDefined", "plus", "text", c)(this.$filter, Jn, Xn, Qn, Zn, er, tr, nr, e);
                return this.state = this.stage = n, f.literal = ur(i), f.constant = lr(i), f
            },
            USE: "use",
            STRICT: "strict",
            watchFns: function() {
                var e = [],
                    t = this.state.inputs,
                    n = this;
                return o(t, function(t) {
                    e.push("var " + t + "=" + n.generateFunction(t, "s"))
                }), t.length && e.push("fn.inputs=[" + t.join(",") + "];"), e.join("")
            },
            generateFunction: function(e, t) {
                return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
            },
            filterPrefix: function() {
                var e = [],
                    t = this;
                return o(this.state.filters, function(n, r) {
                    e.push(n + "=$filter(" + t.escape(r) + ")")
                }), e.length ? "var " + e.join(",") + ";" : ""
            },
            varsPrefix: function(e) {
                return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
            },
            body: function(e) {
                return this.state[e].body.join("")
            },
            recurse: function(e, t, r, i, a, s) {
                var u, l, c, f, p = this;
                if (i = i || g, !s && b(e.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", e.watchId)), this.lazyRecurse(e, t, r, i, a, !0));
                switch (e.type) {
                    case fa.Program:
                        o(e.body, function(t, r) {
                            p.recurse(t.expression, n, n, function(e) {
                                l = e
                            }), r !== e.body.length - 1 ? p.current().body.push(l, ";") : p.return_(l)
                        });
                        break;
                    case fa.Literal:
                        f = this.escape(e.value), this.assign(t, f), i(f);
                        break;
                    case fa.UnaryExpression:
                        this.recurse(e.argument, n, n, function(e) {
                            l = e
                        }), f = e.operator + "(" + this.ifDefined(l, 0) + ")", this.assign(t, f), i(f);
                        break;
                    case fa.BinaryExpression:
                        this.recurse(e.left, n, n, function(e) {
                            u = e
                        }), this.recurse(e.right, n, n, function(e) {
                            l = e
                        }), f = "+" === e.operator ? this.plus(u, l) : "-" === e.operator ? this.ifDefined(u, 0) + e.operator + this.ifDefined(l, 0) : "(" + u + ")" + e.operator + "(" + l + ")", this.assign(t, f), i(f);
                        break;
                    case fa.LogicalExpression:
                        t = t || this.nextId(), p.recurse(e.left, t), p.if_("&&" === e.operator ? t : p.not(t), p.lazyRecurse(e.right, t)), i(t);
                        break;
                    case fa.ConditionalExpression:
                        t = t || this.nextId(), p.recurse(e.test, t), p.if_(t, p.lazyRecurse(e.alternate, t), p.lazyRecurse(e.consequent, t)), i(t);
                        break;
                    case fa.Identifier:
                        t = t || this.nextId(), r && (r.context = "inputs" === p.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", e.name) + "?l:s"), r.computed = !1, r.name = e.name), Jn(e.name), p.if_("inputs" === p.stage || p.not(p.getHasOwnProperty("l", e.name)), function() {
                            p.if_("inputs" === p.stage || "s", function() {
                                a && 1 !== a && p.if_(p.not(p.nonComputedMember("s", e.name)), p.lazyAssign(p.nonComputedMember("s", e.name), "{}")), p.assign(t, p.nonComputedMember("s", e.name))
                            })
                        }, t && p.lazyAssign(t, p.nonComputedMember("l", e.name))), (p.state.expensiveChecks || pr(e.name)) && p.addEnsureSafeObject(t), i(t);
                        break;
                    case fa.MemberExpression:
                        u = r && (r.context = this.nextId()) || this.nextId(), t = t || this.nextId(), p.recurse(e.object, u, n, function() {
                            p.if_(p.notNull(u), function() {
                                a && 1 !== a && p.addEnsureSafeAssignContext(u), e.computed ? (l = p.nextId(), p.recurse(e.property, l), p.getStringValue(l), p.addEnsureSafeMemberName(l), a && 1 !== a && p.if_(p.not(p.computedMember(u, l)), p.lazyAssign(p.computedMember(u, l), "{}")), f = p.ensureSafeObject(p.computedMember(u, l)), p.assign(t, f), r && (r.computed = !0, r.name = l)) : (Jn(e.property.name), a && 1 !== a && p.if_(p.not(p.nonComputedMember(u, e.property.name)), p.lazyAssign(p.nonComputedMember(u, e.property.name), "{}")), f = p.nonComputedMember(u, e.property.name), (p.state.expensiveChecks || pr(e.property.name)) && (f = p.ensureSafeObject(f)), p.assign(t, f), r && (r.computed = !1, r.name = e.property.name))
                            }, function() {
                                p.assign(t, "undefined")
                            }), i(t)
                        }, !!a);
                        break;
                    case fa.CallExpression:
                        t = t || this.nextId(), e.filter ? (l = p.filter(e.callee.name), c = [], o(e.arguments, function(e) {
                            var t = p.nextId();
                            p.recurse(e, t), c.push(t)
                        }), f = l + "(" + c.join(",") + ")", p.assign(t, f), i(t)) : (l = p.nextId(), u = {}, c = [], p.recurse(e.callee, l, u, function() {
                            p.if_(p.notNull(l), function() {
                                p.addEnsureSafeFunction(l), o(e.arguments, function(e) {
                                    p.recurse(e, p.nextId(), n, function(e) {
                                        c.push(p.ensureSafeObject(e))
                                    })
                                }), u.name ? (p.state.expensiveChecks || p.addEnsureSafeObject(u.context), f = p.member(u.context, u.name, u.computed) + "(" + c.join(",") + ")") : f = l + "(" + c.join(",") + ")", f = p.ensureSafeObject(f), p.assign(t, f)
                            }, function() {
                                p.assign(t, "undefined")
                            }), i(t)
                        }));
                        break;
                    case fa.AssignmentExpression:
                        if (l = this.nextId(), u = {}, !ar(e.left)) throw ia("lval", "Trying to assign a value to a non l-value");
                        this.recurse(e.left, n, u, function() {
                            p.if_(p.notNull(u.context), function() {
                                p.recurse(e.right, l), p.addEnsureSafeObject(p.member(u.context, u.name, u.computed)), p.addEnsureSafeAssignContext(u.context), f = p.member(u.context, u.name, u.computed) + e.operator + l, p.assign(t, f), i(t || f)
                            })
                        }, 1);
                        break;
                    case fa.ArrayExpression:
                        c = [], o(e.elements, function(e) {
                            p.recurse(e, p.nextId(), n, function(e) {
                                c.push(e)
                            })
                        }), f = "[" + c.join(",") + "]", this.assign(t, f), i(f);
                        break;
                    case fa.ObjectExpression:
                        c = [], o(e.properties, function(e) {
                            p.recurse(e.value, p.nextId(), n, function(t) {
                                c.push(p.escape(e.key.type === fa.Identifier ? e.key.name : "" + e.key.value) + ":" + t)
                            })
                        }), f = "{" + c.join(",") + "}", this.assign(t, f), i(f);
                        break;
                    case fa.ThisExpression:
                        this.assign(t, "s"), i("s");
                        break;
                    case fa.NGValueParameter:
                        this.assign(t, "v"), i("v")
                }
            },
            getHasOwnProperty: function(e, t) {
                var n = e + "." + t,
                    r = this.current().own;
                return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
            },
            assign: function(e, t) {
                return e ? (this.current().body.push(e, "=", t, ";"), e) : void 0
            },
            filter: function(e) {
                return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
            },
            ifDefined: function(e, t) {
                return "ifDefined(" + e + "," + this.escape(t) + ")"
            },
            plus: function(e, t) {
                return "plus(" + e + "," + t + ")"
            },
            return_: function(e) {
                this.current().body.push("return ", e, ";")
            },
            if_: function(e, t, n) {
                if (e === !0) t();
                else {
                    var r = this.current().body;
                    r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
                }
            },
            not: function(e) {
                return "!(" + e + ")"
            },
            notNull: function(e) {
                return e + "!=null"
            },
            nonComputedMember: function(e, t) {
                return e + "." + t
            },
            computedMember: function(e, t) {
                return e + "[" + t + "]"
            },
            member: function(e, t, n) {
                return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
            },
            addEnsureSafeObject: function(e) {
                this.current().body.push(this.ensureSafeObject(e), ";")
            },
            addEnsureSafeMemberName: function(e) {
                this.current().body.push(this.ensureSafeMemberName(e), ";")
            },
            addEnsureSafeFunction: function(e) {
                this.current().body.push(this.ensureSafeFunction(e), ";")
            },
            addEnsureSafeAssignContext: function(e) {
                this.current().body.push(this.ensureSafeAssignContext(e), ";")
            },
            ensureSafeObject: function(e) {
                return "ensureSafeObject(" + e + ",text)"
            },
            ensureSafeMemberName: function(e) {
                return "ensureSafeMemberName(" + e + ",text)"
            },
            ensureSafeFunction: function(e) {
                return "ensureSafeFunction(" + e + ",text)"
            },
            getStringValue: function(e) {
                this.assign(e, "getStringValue(" + e + ",text)")
            },
            ensureSafeAssignContext: function(e) {
                return "ensureSafeAssignContext(" + e + ",text)"
            },
            lazyRecurse: function(e, t, n, r, i, o) {
                var a = this;
                return function() {
                    a.recurse(e, t, n, r, i, o)
                }
            },
            lazyAssign: function(e, t) {
                var n = this;
                return function() {
                    n.assign(e, t)
                }
            },
            stringEscapeRegex: /[^ a-zA-Z0-9]/g,
            stringEscapeFn: function(e) {
                return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
            },
            escape: function(e) {
                if (S(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
                if (_(e)) return e.toString();
                if (e === !0) return "true";
                if (e === !1) return "false";
                if (null === e) return "null";
                if ("undefined" == typeof e) return "undefined";
                throw ia("esc", "IMPOSSIBLE")
            },
            nextId: function(e, t) {
                var n = "v" + this.state.nextId++;
                return e || this.current().vars.push(n + (t ? "=" + t : "")), n
            },
            current: function() {
                return this.state[this.state.computing]
            }
        }, fr.prototype = {
            compile: function(e, t) {
                var n = this,
                    r = this.astBuilder.ast(e);
                this.expression = e, this.expensiveChecks = t, ir(r, n.$filter);
                var i, a;
                (i = sr(r)) && (a = this.recurse(i));
                var s, u = or(r.body);
                u && (s = [], o(u, function(e, t) {
                    var r = n.recurse(e);
                    e.input = r, s.push(r), e.watchId = t
                }));
                var l = [];
                o(r.body, function(e) {
                    l.push(n.recurse(e.expression))
                });
                var c = 0 === r.body.length ? function() {} : 1 === r.body.length ? l[0] : function(e, t) {
                    var n;
                    return o(l, function(r) {
                        n = r(e, t)
                    }), n
                };
                return a && (c.assign = function(e, t, n) {
                    return a(e, n, t)
                }), s && (c.inputs = s), c.literal = ur(r), c.constant = lr(r), c
            },
            recurse: function(e, t, r) {
                var i, a, s, u = this;
                if (e.input) return this.inputs(e.input, e.watchId);
                switch (e.type) {
                    case fa.Literal:
                        return this.value(e.value, t);
                    case fa.UnaryExpression:
                        return a = this.recurse(e.argument), this["unary" + e.operator](a, t);
                    case fa.BinaryExpression:
                        return i = this.recurse(e.left), a = this.recurse(e.right), this["binary" + e.operator](i, a, t);
                    case fa.LogicalExpression:
                        return i = this.recurse(e.left), a = this.recurse(e.right), this["binary" + e.operator](i, a, t);
                    case fa.ConditionalExpression:
                        return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), t);
                    case fa.Identifier:
                        return Jn(e.name, u.expression), u.identifier(e.name, u.expensiveChecks || pr(e.name), t, r, u.expression);
                    case fa.MemberExpression:
                        return i = this.recurse(e.object, !1, !!r), e.computed || (Jn(e.property.name, u.expression), a = e.property.name), e.computed && (a = this.recurse(e.property)), e.computed ? this.computedMember(i, a, t, r, u.expression) : this.nonComputedMember(i, a, u.expensiveChecks, t, r, u.expression);
                    case fa.CallExpression:
                        return s = [], o(e.arguments, function(e) {
                            s.push(u.recurse(e))
                        }), e.filter && (a = this.$filter(e.callee.name)), e.filter || (a = this.recurse(e.callee, !0)), e.filter ? function(e, r, i, o) {
                            for (var u = [], l = 0; l < s.length; ++l) u.push(s[l](e, r, i, o));
                            var c = a.apply(n, u, o);
                            return t ? {
                                context: n,
                                name: n,
                                value: c
                            } : c
                        } : function(e, n, r, i) {
                            var o, l = a(e, n, r, i);
                            if (null != l.value) {
                                Xn(l.context, u.expression), Qn(l.value, u.expression);
                                for (var c = [], f = 0; f < s.length; ++f) c.push(Xn(s[f](e, n, r, i), u.expression));
                                o = Xn(l.value.apply(l.context, c), u.expression)
                            }
                            return t ? {
                                value: o
                            } : o
                        };
                    case fa.AssignmentExpression:
                        return i = this.recurse(e.left, !0, 1), a = this.recurse(e.right),
                            function(e, n, r, o) {
                                var s = i(e, n, r, o),
                                    l = a(e, n, r, o);
                                return Xn(s.value, u.expression), er(s.context), s.context[s.name] = l, t ? {
                                    value: l
                                } : l
                            };
                    case fa.ArrayExpression:
                        return s = [], o(e.elements, function(e) {
                                s.push(u.recurse(e))
                            }),
                            function(e, n, r, i) {
                                for (var o = [], a = 0; a < s.length; ++a) o.push(s[a](e, n, r, i));
                                return t ? {
                                    value: o
                                } : o
                            };
                    case fa.ObjectExpression:
                        return s = [], o(e.properties, function(e) {
                                s.push({
                                    key: e.key.type === fa.Identifier ? e.key.name : "" + e.key.value,
                                    value: u.recurse(e.value)
                                })
                            }),
                            function(e, n, r, i) {
                                for (var o = {}, a = 0; a < s.length; ++a) o[s[a].key] = s[a].value(e, n, r, i);
                                return t ? {
                                    value: o
                                } : o
                            };
                    case fa.ThisExpression:
                        return function(e) {
                            return t ? {
                                value: e
                            } : e
                        };
                    case fa.NGValueParameter:
                        return function(e, n, r) {
                            return t ? {
                                value: r
                            } : r
                        }
                }
            },
            "unary+": function(e, t) {
                return function(n, r, i, o) {
                    var a = e(n, r, i, o);
                    return a = b(a) ? +a : 0, t ? {
                        value: a
                    } : a
                }
            },
            "unary-": function(e, t) {
                return function(n, r, i, o) {
                    var a = e(n, r, i, o);
                    return a = b(a) ? -a : 0, t ? {
                        value: a
                    } : a
                }
            },
            "unary!": function(e, t) {
                return function(n, r, i, o) {
                    var a = !e(n, r, i, o);
                    return t ? {
                        value: a
                    } : a
                }
            },
            "binary+": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a),
                        u = t(r, i, o, a),
                        l = nr(s, u);
                    return n ? {
                        value: l
                    } : l
                }
            },
            "binary-": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a),
                        u = t(r, i, o, a),
                        l = (b(s) ? s : 0) - (b(u) ? u : 0);
                    return n ? {
                        value: l
                    } : l
                }
            },
            "binary*": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) * t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary/": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) / t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary%": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) % t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary===": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) === t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary!==": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) !== t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary==": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) == t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary!=": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) != t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary<": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) < t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary>": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) > t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary<=": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) <= t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary>=": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) >= t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary&&": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) && t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "binary||": function(e, t, n) {
                return function(r, i, o, a) {
                    var s = e(r, i, o, a) || t(r, i, o, a);
                    return n ? {
                        value: s
                    } : s
                }
            },
            "ternary?:": function(e, t, n, r) {
                return function(i, o, a, s) {
                    var u = e(i, o, a, s) ? t(i, o, a, s) : n(i, o, a, s);
                    return r ? {
                        value: u
                    } : u
                }
            },
            value: function(e, t) {
                return function() {
                    return t ? {
                        context: n,
                        name: n,
                        value: e
                    } : e
                }
            },
            identifier: function(e, t, r, i, o) {
                return function(a, s) {
                    var u = s && e in s ? s : a;
                    i && 1 !== i && u && !u[e] && (u[e] = {});
                    var l = u ? u[e] : n;
                    return t && Xn(l, o), r ? {
                        context: u,
                        name: e,
                        value: l
                    } : l
                }
            },
            computedMember: function(e, t, n, r, i) {
                return function(o, a, s, u) {
                    var l, c, f = e(o, a, s, u);
                    return null != f && (l = t(o, a, s, u), l = Zn(l), Jn(l, i), r && 1 !== r && (er(f), f && !f[l] && (f[l] = {})), c = f[l], Xn(c, i)), n ? {
                        context: f,
                        name: l,
                        value: c
                    } : c
                }
            },
            nonComputedMember: function(e, t, r, i, o, a) {
                return function(s, u, l, c) {
                    var f = e(s, u, l, c);
                    o && 1 !== o && (er(f), f && !f[t] && (f[t] = {}));
                    var p = null != f ? f[t] : n;
                    return (r || pr(t)) && Xn(p, a), i ? {
                        context: f,
                        name: t,
                        value: p
                    } : p
                }
            },
            inputs: function(e, t) {
                return function(n, r, i, o) {
                    return o ? o[t] : e(n, r, i)
                }
            }
        };
        var pa = function(e, t, n) {
            this.lexer = e, this.$filter = t, this.options = n, this.ast = new fa(this.lexer), this.astCompiler = n.csp ? new fr(this.ast, t) : new cr(this.ast, t)
        };
        pa.prototype = {
            constructor: pa,
            parse: function(e) {
                return this.astCompiler.compile(e, this.options.expensiveChecks)
            }
        };
        var ha = Object.prototype.valueOf,
            da = r("$sce"),
            ga = {
                HTML: "html",
                CSS: "css",
                URL: "url",
                RESOURCE_URL: "resourceUrl",
                JS: "js"
            },
            Uo = r("$compile"),
            va = t.createElement("a"),
            ma = Rr(e.location.href);
        jr.$inject = ["$document"], Pr.$inject = ["$provide"];
        var $a = 22,
            ya = ".",
            ba = "0";
        qr.$inject = ["$locale"], Fr.$inject = ["$locale"];
        var wa = {
                yyyy: zr("FullYear", 4),
                yy: zr("FullYear", 2, 0, !0),
                y: zr("FullYear", 1),
                MMMM: Wr("Month"),
                MMM: Wr("Month", !0),
                MM: zr("Month", 2, 1),
                M: zr("Month", 1, 1),
                dd: zr("Date", 2),
                d: zr("Date", 1),
                HH: zr("Hours", 2),
                H: zr("Hours", 1),
                hh: zr("Hours", 2, -12),
                h: zr("Hours", 1, -12),
                mm: zr("Minutes", 2),
                m: zr("Minutes", 1),
                ss: zr("Seconds", 2),
                s: zr("Seconds", 1),
                sss: zr("Milliseconds", 3),
                EEEE: Wr("Day"),
                EEE: Wr("Day", !0),
                a: Zr,
                Z: Kr,
                ww: Jr(2),
                w: Jr(1),
                G: Xr,
                GG: Xr,
                GGG: Xr,
                GGGG: Qr
            },
            xa = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,
            Sa = /^\-?\d+$/;
        ei.$inject = ["$locale"];
        var _a = m(Ci),
            ka = m(Ai);
        ri.$inject = ["$parse"];
        var Ca = m({
                restrict: "E",
                compile: function(e, t) {
                    return t.href || t.xlinkHref ? void 0 : function(e, t) {
                        if ("a" === t[0].nodeName.toLowerCase()) {
                            var n = "[object SVGAnimatedString]" === Vi.call(t.prop("href")) ? "xlink:href" : "href";
                            t.on("click", function(e) {
                                t.attr(n) || e.preventDefault()
                            })
                        }
                    }
                }
            }),
            Ea = {};
        o(So, function(e, t) {
            function n(e, n, i) {
                e.$watch(i[r], function(e) {
                    i.$set(t, !!e)
                })
            }
            if ("multiple" != e) {
                var r = hn("ng-" + t),
                    i = n;
                "checked" === e && (i = function(e, t, i) {
                    i.ngModel !== i[r] && n(e, t, i)
                }), Ea[r] = function() {
                    return {
                        restrict: "A",
                        priority: 100,
                        link: i
                    }
                }
            }
        }), o(ko, function(e, t) {
            Ea[t] = function() {
                return {
                    priority: 100,
                    link: function(e, n, r) {
                        if ("ngPattern" === t && "/" == r.ngPattern.charAt(0)) {
                            var i = r.ngPattern.match(_i);
                            if (i) return void r.$set("ngPattern", new RegExp(i[1], i[2]))
                        }
                        e.$watch(r[t], function(e) {
                            r.$set(t, e)
                        })
                    }
                }
            }
        }), o(["src", "srcset", "href"], function(e) {
            var t = hn("ng-" + e);
            Ea[t] = function() {
                return {
                    priority: 99,
                    link: function(n, r, i) {
                        var o = e,
                            a = e;
                        "href" === e && "[object SVGAnimatedString]" === Vi.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(t, function(t) {
                            return t ? (i.$set(a, t), void(Oi && o && r.prop(o, i[a]))) : void("href" === e && i.$set(a, null))
                        })
                    }
                }
            }
        });
        var Aa = {
                $addControl: g,
                $$renameControl: oi,
                $removeControl: g,
                $setValidity: g,
                $setDirty: g,
                $setPristine: g,
                $setSubmitted: g
            },
            Ra = "ng-submitted";
        ai.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"];
        var Ta = function(e) {
                return ["$timeout", "$parse", function(t, r) {
                    function i(e) {
                        return "" === e ? r('this[""]').assign : r(e).assign || g
                    }
                    var o = {
                        name: "form",
                        restrict: e ? "EAC" : "E",
                        require: ["form", "^^?form"],
                        controller: ai,
                        compile: function(r, o) {
                            r.addClass(ps).addClass(cs);
                            var a = o.name ? "name" : e && o.ngForm ? "ngForm" : !1;
                            return {
                                pre: function(e, r, o, s) {
                                    var u = s[0];
                                    if (!("action" in o)) {
                                        var l = function(t) {
                                            e.$apply(function() {
                                                u.$commitViewValue(), u.$setSubmitted()
                                            }), t.preventDefault()
                                        };
                                        lo(r[0], "submit", l), r.on("$destroy", function() {
                                            t(function() {
                                                co(r[0], "submit", l)
                                            }, 0, !1)
                                        })
                                    }
                                    var c = s[1] || u.$$parentForm;
                                    c.$addControl(u);
                                    var p = a ? i(u.$name) : g;
                                    a && (p(e, u), o.$observe(a, function(t) {
                                        u.$name !== t && (p(e, n), u.$$parentForm.$$renameControl(u, t), (p = i(u.$name))(e, u))
                                    })), r.on("$destroy", function() {
                                        u.$$parentForm.$removeControl(u), p(e, n), f(u, Aa)
                                    })
                                }
                            }
                        }
                    };
                    return o
                }]
            },
            Oa = Ta(),
            ja = Ta(!0),
            Ia = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
            Pa = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:\/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
            Ma = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
            Na = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
            Da = /^(\d{4})-(\d{2})-(\d{2})$/,
            Va = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
            qa = /^(\d{4})-W(\d\d)$/,
            Fa = /^(\d{4})-(\d\d)$/,
            Ua = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
            La = "keydown wheel mousedown",
            Ha = vt();
        o("date,datetime-local,month,time,week".split(","), function(e) {
            Ha[e] = !0
        });
        var Ba = {
                text: ui,
                date: pi("date", Da, fi(Da, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
                "datetime-local": pi("datetimelocal", Va, fi(Va, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
                time: pi("time", Ua, fi(Ua, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
                week: pi("week", qa, ci, "yyyy-Www"),
                month: pi("month", Fa, fi(Fa, ["yyyy", "MM"]), "yyyy-MM"),
                number: di,
                url: gi,
                email: vi,
                radio: mi,
                checkbox: yi,
                hidden: g,
                button: g,
                submit: g,
                reset: g,
                file: g
            },
            za = ["$browser", "$sniffer", "$filter", "$parse", function(e, t, n, r) {
                return {
                    restrict: "E",
                    require: ["?ngModel"],
                    link: {
                        pre: function(i, o, a, s) {
                            s[0] && (Ba[Ci(a.type)] || Ba.text)(i, o, a, s[0], t, e, n, r)
                        }
                    }
                }
            }],
            Wa = /^(true|false|\d+)$/,
            Ka = function() {
                return {
                    restrict: "A",
                    priority: 100,
                    compile: function(e, t) {
                        return Wa.test(t.ngValue) ? function(e, t, n) {
                            n.$set("value", e.$eval(n.ngValue))
                        } : function(e, t, n) {
                            e.$watch(n.ngValue, function(e) {
                                n.$set("value", e)
                            })
                        }
                    }
                }
            },
            Ga = ["$compile", function(e) {
                return {
                    restrict: "AC",
                    compile: function(t) {
                        return e.$$addBindingClass(t),
                            function(t, n, r) {
                                e.$$addBindingInfo(n, r.ngBind), n = n[0], t.$watch(r.ngBind, function(e) {
                                    n.textContent = y(e) ? "" : e
                                })
                            }
                    }
                }
            }],
            Ya = ["$interpolate", "$compile", function(e, t) {
                return {
                    compile: function(n) {
                        return t.$$addBindingClass(n),
                            function(n, r, i) {
                                var o = e(r.attr(i.$attr.ngBindTemplate));
                                t.$$addBindingInfo(r, o.expressions), r = r[0], i.$observe("ngBindTemplate", function(e) {
                                    r.textContent = y(e) ? "" : e
                                })
                            }
                    }
                }
            }],
            Ja = ["$sce", "$parse", "$compile", function(e, t, n) {
                return {
                    restrict: "A",
                    compile: function(r, i) {
                        var o = t(i.ngBindHtml),
                            a = t(i.ngBindHtml, function(t) {
                                return e.valueOf(t)
                            });
                        return n.$$addBindingClass(r),
                            function(t, r, i) {
                                n.$$addBindingInfo(r, i.ngBindHtml), t.$watch(a, function() {
                                    var n = o(t);
                                    r.html(e.getTrustedHtml(n) || "")
                                })
                            }
                    }
                }
            }],
            Za = m({
                restrict: "A",
                require: "ngModel",
                link: function(e, t, n, r) {
                    r.$viewChangeListeners.push(function() {
                        e.$eval(n.ngChange)
                    })
                }
            }),
            Xa = bi("", !0),
            Qa = bi("Odd", 0),
            es = bi("Even", 1),
            ts = ii({
                compile: function(e, t) {
                    t.$set("ngCloak", n), e.removeClass("ng-cloak")
                }
            }),
            ns = [function() {
                return {
                    restrict: "A",
                    scope: !0,
                    controller: "@",
                    priority: 500
                }
            }],
            rs = {},
            is = {
                blur: !0,
                focus: !0
            };
        o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(e) {
            var t = hn("ng-" + e);
            rs[t] = ["$parse", "$rootScope", function(n, r) {
                return {
                    restrict: "A",
                    compile: function(i, o) {
                        var a = n(o[t], null, !0);
                        return function(t, n) {
                            n.on(e, function(n) {
                                var i = function() {
                                    a(t, {
                                        $event: n
                                    })
                                };
                                is[e] && r.$$phase ? t.$evalAsync(i) : t.$apply(i)
                            })
                        }
                    }
                }
            }]
        });
        var os = ["$animate", function(e) {
                return {
                    multiElement: !0,
                    transclude: "element",
                    priority: 600,
                    terminal: !0,
                    restrict: "A",
                    $$tlb: !0,
                    link: function(n, r, i, o, a) {
                        var s, u, l;
                        n.$watch(i.ngIf, function(n) {
                            n ? u || a(function(n, o) {
                                u = o, n[n.length++] = t.createComment(" end ngIf: " + i.ngIf + " "), s = {
                                    clone: n
                                }, e.enter(n, r.parent(), r)
                            }) : (l && (l.remove(), l = null), u && (u.$destroy(), u = null), s && (l = gt(s.clone), e.leave(l).then(function() {
                                l = null
                            }), s = null))
                        })
                    }
                }
            }],
            as = ["$templateRequest", "$anchorScroll", "$animate", function(e, t, n) {
                return {
                    restrict: "ECA",
                    priority: 400,
                    terminal: !0,
                    transclude: "element",
                    controller: Ui.noop,
                    compile: function(r, i) {
                        var o = i.ngInclude || i.src,
                            a = i.onload || "",
                            s = i.autoscroll;
                        return function(r, i, u, l, c) {
                            var f, p, h, d = 0,
                                g = function() {
                                    p && (p.remove(), p = null), f && (f.$destroy(), f = null), h && (n.leave(h).then(function() {
                                        p = null
                                    }), p = h, h = null)
                                };
                            r.$watch(o, function(o) {
                                var u = function() {
                                        !b(s) || s && !r.$eval(s) || t()
                                    },
                                    p = ++d;
                                o ? (e(o, !0).then(function(e) {
                                    if (!r.$$destroyed && p === d) {
                                        var t = r.$new();
                                        l.template = e;
                                        var s = c(t, function(e) {
                                            g(), n.enter(e, null, i).then(u)
                                        });
                                        f = t, h = s, f.$emit("$includeContentLoaded", o), r.$eval(a)
                                    }
                                }, function() {
                                    r.$$destroyed || p === d && (g(), r.$emit("$includeContentError", o))
                                }), r.$emit("$includeContentRequested", o)) : (g(), l.template = null)
                            })
                        }
                    }
                }
            }],
            ss = ["$compile", function(e) {
                return {
                    restrict: "ECA",
                    priority: -400,
                    require: "ngInclude",
                    link: function(n, r, i, o) {
                        return /SVG/.test(r[0].toString()) ? (r.empty(), void e(Ct(o.template, t).childNodes)(n, function(e) {
                            r.append(e)
                        }, {
                            futureParentElement: r
                        })) : (r.html(o.template), void e(r.contents())(n))
                    }
                }
            }],
            us = ii({
                priority: 450,
                compile: function() {
                    return {
                        pre: function(e, t, n) {
                            e.$eval(n.ngInit)
                        }
                    }
                }
            }),
            ls = function() {
                return {
                    restrict: "A",
                    priority: 100,
                    require: "ngModel",
                    link: function(e, t, r, i) {
                        var a = t.attr(r.$attr.ngList) || ", ",
                            s = "false" !== r.ngTrim,
                            u = s ? Wi(a) : a,
                            l = function(e) {
                                if (!y(e)) {
                                    var t = [];
                                    return e && o(e.split(u), function(e) {
                                        e && t.push(s ? Wi(e) : e)
                                    }), t
                                }
                            };
                        i.$parsers.push(l), i.$formatters.push(function(e) {
                            return Bi(e) ? e.join(a) : n
                        }), i.$isEmpty = function(e) {
                            return !e || !e.length
                        }
                    }
                }
            },
            cs = "ng-valid",
            fs = "ng-invalid",
            ps = "ng-pristine",
            hs = "ng-dirty",
            ds = "ng-untouched",
            gs = "ng-touched",
            vs = "ng-pending",
            ms = r("ngModel"),
            $s = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$rootScope", "$q", "$interpolate", function(e, t, r, i, a, s, u, l, c, f) {
                this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = n, this.$validators = {}, this.$asyncValidators = {}, this.$parsers = [], this.$formatters = [], this.$viewChangeListeners = [], this.$untouched = !0, this.$touched = !1, this.$pristine = !0, this.$dirty = !1, this.$valid = !0, this.$invalid = !1, this.$error = {}, this.$$success = {}, this.$pending = n, this.$name = f(r.name || "", !1)(e), this.$$parentForm = Aa;
                var p, h = a(r.ngModel),
                    d = h.assign,
                    v = h,
                    m = d,
                    $ = null,
                    w = this;
                this.$$setOptions = function(e) {
                    if (w.$options = e, e && e.getterSetter) {
                        var t = a(r.ngModel + "()"),
                            n = a(r.ngModel + "($$$p)");
                        v = function(e) {
                            var n = h(e);
                            return C(n) && (n = t(e)), n
                        }, m = function(e) {
                            C(h(e)) ? n(e, {
                                $$$p: w.$modelValue
                            }) : d(e, w.$modelValue)
                        }
                    } else if (!h.assign) throw ms("nonassign", "Expression '{0}' is non-assignable. Element: {1}", r.ngModel, X(i))
                }, this.$render = g, this.$isEmpty = function(e) {
                    return y(e) || "" === e || null === e || e !== e
                };
                var x = 0;
                wi({
                    ctrl: this,
                    $element: i,
                    set: function(e, t) {
                        e[t] = !0
                    },
                    unset: function(e, t) {
                        delete e[t]
                    },
                    $animate: s
                }), this.$setPristine = function() {
                    w.$dirty = !1, w.$pristine = !0, s.removeClass(i, hs), s.addClass(i, ps)
                }, this.$setDirty = function() {
                    w.$dirty = !0, w.$pristine = !1, s.removeClass(i, ps), s.addClass(i, hs), w.$$parentForm.$setDirty()
                }, this.$setUntouched = function() {
                    w.$touched = !1, w.$untouched = !0, s.setClass(i, ds, gs)
                }, this.$setTouched = function() {
                    w.$touched = !0, w.$untouched = !1, s.setClass(i, gs, ds)
                }, this.$rollbackViewValue = function() {
                    u.cancel($), w.$viewValue = w.$$lastCommittedViewValue, w.$render()
                }, this.$validate = function() {
                    if (!_(w.$modelValue) || !isNaN(w.$modelValue)) {
                        var e = w.$$lastCommittedViewValue,
                            t = w.$$rawModelValue,
                            r = w.$valid,
                            i = w.$modelValue,
                            o = w.$options && w.$options.allowInvalid;
                        w.$$runValidators(t, e, function(e) {
                            o || r === e || (w.$modelValue = e ? t : n, w.$modelValue !== i && w.$$writeModelToScope())
                        })
                    }
                }, this.$$runValidators = function(e, t, r) {
                    function i() {
                        var e = w.$$parserName || "parse";
                        return y(p) ? (u(e, null), !0) : (p || (o(w.$validators, function(e, t) {
                            u(t, null)
                        }), o(w.$asyncValidators, function(e, t) {
                            u(t, null)
                        })), u(e, p), p)
                    }

                    function a() {
                        var n = !0;
                        return o(w.$validators, function(r, i) {
                            var o = r(e, t);
                            n = n && o, u(i, o)
                        }), n ? !0 : (o(w.$asyncValidators, function(e, t) {
                            u(t, null)
                        }), !1)
                    }

                    function s() {
                        var r = [],
                            i = !0;
                        o(w.$asyncValidators, function(o, a) {
                            var s = o(e, t);
                            if (!P(s)) throw ms("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
                            u(a, n), r.push(s.then(function() {
                                u(a, !0)
                            }, function() {
                                i = !1, u(a, !1)
                            }))
                        }), r.length ? c.all(r).then(function() {
                            l(i)
                        }, g) : l(!0)
                    }

                    function u(e, t) {
                        f === x && w.$setValidity(e, t)
                    }

                    function l(e) {
                        f === x && r(e)
                    }
                    x++;
                    var f = x;
                    return i() && a() ? void s() : void l(!1)
                }, this.$commitViewValue = function() {
                    var e = w.$viewValue;
                    u.cancel($), (w.$$lastCommittedViewValue !== e || "" === e && w.$$hasNativeValidators) && (w.$$lastCommittedViewValue = e, w.$pristine && this.$setDirty(), this.$$parseAndValidate())
                }, this.$$parseAndValidate = function() {
                    function t() {
                        w.$modelValue !== a && w.$$writeModelToScope()
                    }
                    var r = w.$$lastCommittedViewValue,
                        i = r;
                    if (p = y(i) ? n : !0)
                        for (var o = 0; o < w.$parsers.length; o++)
                            if (i = w.$parsers[o](i), y(i)) {
                                p = !1;
                                break
                            } _(w.$modelValue) && isNaN(w.$modelValue) && (w.$modelValue = v(e));
                    var a = w.$modelValue,
                        s = w.$options && w.$options.allowInvalid;
                    w.$$rawModelValue = i, s && (w.$modelValue = i, t()), w.$$runValidators(i, w.$$lastCommittedViewValue, function(e) {
                        s || (w.$modelValue = e ? i : n, t())
                    })
                }, this.$$writeModelToScope = function() {
                    m(e, w.$modelValue), o(w.$viewChangeListeners, function(e) {
                        try {
                            e()
                        } catch (n) {
                            t(n)
                        }
                    })
                }, this.$setViewValue = function(e, t) {
                    w.$viewValue = e, (!w.$options || w.$options.updateOnDefault) && w.$$debounceViewValueCommit(t)
                }, this.$$debounceViewValueCommit = function(t) {
                    var n, r = 0,
                        i = w.$options;
                    i && b(i.debounce) && (n = i.debounce, _(n) ? r = n : _(n[t]) ? r = n[t] : _(n["default"]) && (r = n["default"])), u.cancel($), r ? $ = u(function() {
                        w.$commitViewValue()
                    }, r) : l.$$phase ? w.$commitViewValue() : e.$apply(function() {
                        w.$commitViewValue()
                    })
                }, e.$watch(function() {
                    var t = v(e);
                    if (t !== w.$modelValue && (w.$modelValue === w.$modelValue || t === t)) {
                        w.$modelValue = w.$$rawModelValue = t, p = n;
                        for (var r = w.$formatters, i = r.length, o = t; i--;) o = r[i](o);
                        w.$viewValue !== o && (w.$viewValue = w.$$lastCommittedViewValue = o, w.$render(), w.$$runValidators(t, o, g))
                    }
                    return t
                })
            }],
            ys = ["$rootScope", function(e) {
                return {
                    restrict: "A",
                    require: ["ngModel", "^?form", "^?ngModelOptions"],
                    controller: $s,
                    priority: 1,
                    compile: function(t) {
                        return t.addClass(ps).addClass(ds).addClass(cs), {
                            pre: function(e, t, n, r) {
                                var i = r[0],
                                    o = r[1] || i.$$parentForm;
                                i.$$setOptions(r[2] && r[2].$options), o.$addControl(i), n.$observe("name", function(e) {
                                    i.$name !== e && i.$$parentForm.$$renameControl(i, e)
                                }), e.$on("$destroy", function() {
                                    i.$$parentForm.$removeControl(i)
                                })
                            },
                            post: function(t, n, r, i) {
                                var o = i[0];
                                o.$options && o.$options.updateOn && n.on(o.$options.updateOn, function(e) {
                                    o.$$debounceViewValueCommit(e && e.type)
                                }), n.on("blur", function() {
                                    o.$touched || (e.$$phase ? t.$evalAsync(o.$setTouched) : t.$apply(o.$setTouched))
                                })
                            }
                        }
                    }
                }
            }],
            bs = /(\s+|^)default(\s+|$)/,
            ws = function() {
                return {
                    restrict: "A",
                    controller: ["$scope", "$attrs", function(e, t) {
                        var n = this;
                        this.$options = F(e.$eval(t.ngModelOptions)), b(this.$options.updateOn) ? (this.$options.updateOnDefault = !1, this.$options.updateOn = Wi(this.$options.updateOn.replace(bs, function() {
                            return n.$options.updateOnDefault = !0, " "
                        }))) : this.$options.updateOnDefault = !0
                    }]
                }
            },
            xs = ii({
                terminal: !0,
                priority: 1e3
            }),
            Ss = r("ngOptions"),
            _s = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
            ks = ["$compile", "$parse", function(e, n) {
                function r(e, t, r) {
                    function o(e, t, n, r, i) {
                        this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
                    }

                    function a(e) {
                        var t;
                        if (!l && i(e)) t = e;
                        else {
                            t = [];
                            for (var n in e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n)
                        }
                        return t
                    }
                    var s = e.match(_s);
                    if (!s) throw Ss("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, X(t));
                    var u = s[5] || s[7],
                        l = s[6],
                        c = / as /.test(s[0]) && s[1],
                        f = s[9],
                        p = n(s[2] ? s[1] : u),
                        h = c && n(c),
                        d = h || p,
                        g = f && n(f),
                        v = f ? function(e, t) {
                            return g(r, t)
                        } : function(e) {
                            return Zt(e)
                        },
                        m = function(e, t) {
                            return v(e, S(e, t))
                        },
                        $ = n(s[2] || s[1]),
                        y = n(s[3] || ""),
                        b = n(s[4] || ""),
                        w = n(s[8]),
                        x = {},
                        S = l ? function(e, t) {
                            return x[l] = t, x[u] = e, x
                        } : function(e) {
                            return x[u] = e, x
                        };
                    return {
                        trackBy: f,
                        getTrackByValue: m,
                        getWatchables: n(w, function(e) {
                            var t = [];
                            e = e || [];
                            for (var n = a(e), i = n.length, o = 0; i > o; o++) {
                                var u = e === n ? o : n[o],
                                    l = (e[u], S(e[u], u)),
                                    c = v(e[u], l);
                                if (t.push(c), s[2] || s[1]) {
                                    var f = $(r, l);
                                    t.push(f)
                                }
                                if (s[4]) {
                                    var p = b(r, l);
                                    t.push(p)
                                }
                            }
                            return t
                        }),
                        getOptions: function() {
                            for (var e = [], t = {}, n = w(r) || [], i = a(n), s = i.length, u = 0; s > u; u++) {
                                var l = n === i ? u : i[u],
                                    c = n[l],
                                    p = S(c, l),
                                    h = d(r, p),
                                    g = v(h, p),
                                    x = $(r, p),
                                    _ = y(r, p),
                                    k = b(r, p),
                                    C = new o(g, h, x, _, k);
                                e.push(C), t[g] = C
                            }
                            return {
                                items: e,
                                selectValueMap: t,
                                getOptionFromViewValue: function(e) {
                                    return t[m(e)]
                                },
                                getViewValueFromOption: function(e) {
                                    return f ? Ui.copy(e.viewValue) : e.viewValue
                                }
                            }
                        }
                    }
                }

                function a(t, n, i, a) {
                    function l(e, t) {
                        e.element = t, t.disabled = e.disabled, e.label !== t.label && (t.label = e.label, t.textContent = e.label), e.value !== t.value && (t.value = e.selectValue)
                    }

                    function c(e, t, n, r) {
                        var i;
                        return t && Ci(t.nodeName) === n ? i = t : (i = r.cloneNode(!1), t ? e.insertBefore(i, t) : e.appendChild(i)), i
                    }

                    function f(e) {
                        for (var t; e;) t = e.nextSibling, Ht(e), e = t
                    }

                    function p(e) {
                        var t = g && g[0],
                            n = x && x[0];
                        if (t || n)
                            for (; e && (e === t || e === n || e.nodeType === ro || "option" === V(e) && "" === e.value);) e = e.nextSibling;
                        return e
                    }

                    function h() {
                        var e = S && v.readValue();
                        S = _.getOptions();
                        var t = {},
                            r = n[0].firstChild;
                        if (w && n.prepend(g), r = p(r), S.items.forEach(function(e) {
                                var i, o, a;
                                e.group ? (i = t[e.group], i || (o = c(n[0], r, "optgroup", u), r = o.nextSibling, o.label = e.group, i = t[e.group] = {
                                    groupElement: o,
                                    currentOptionElement: o.firstChild
                                }), a = c(i.groupElement, i.currentOptionElement, "option", s), l(e, a), i.currentOptionElement = a.nextSibling) : (a = c(n[0], r, "option", s), l(e, a), r = a.nextSibling)
                            }), Object.keys(t).forEach(function(e) {
                                f(t[e].currentOptionElement)
                            }), f(r), d.$render(), !d.$isEmpty(e)) {
                            var i = v.readValue(),
                                o = _.trackBy || m;
                            (o ? L(e, i) : e === i) || (d.$setViewValue(i), d.$render())
                        }
                    }
                    var d = a[1];
                    if (d) {
                        for (var g, v = a[0], m = i.multiple, $ = 0, y = n.children(), b = y.length; b > $; $++)
                            if ("" === y[$].value) {
                                g = y.eq($);
                                break
                            } var w = !!g,
                            x = ji(s.cloneNode(!1));
                        x.val("?");
                        var S, _ = r(i.ngOptions, n, t),
                            k = function() {
                                w || n.prepend(g), n.val(""), g.prop("selected", !0), g.attr("selected", !0)
                            },
                            C = function() {
                                w || g.remove()
                            },
                            E = function() {
                                n.prepend(x), n.val("?"), x.prop("selected", !0), x.attr("selected", !0)
                            },
                            A = function() {
                                x.remove()
                            };
                        m ? (d.$isEmpty = function(e) {
                            return !e || 0 === e.length
                        }, v.writeValue = function(e) {
                            S.items.forEach(function(e) {
                                e.element.selected = !1
                            }), e && e.forEach(function(e) {
                                var t = S.getOptionFromViewValue(e);
                                t && !t.disabled && (t.element.selected = !0)
                            })
                        }, v.readValue = function() {
                            var e = n.val() || [],
                                t = [];
                            return o(e, function(e) {
                                var n = S.selectValueMap[e];
                                n && !n.disabled && t.push(S.getViewValueFromOption(n))
                            }), t
                        }, _.trackBy && t.$watchCollection(function() {
                            return Bi(d.$viewValue) ? d.$viewValue.map(function(e) {
                                return _.getTrackByValue(e)
                            }) : void 0
                        }, function() {
                            d.$render()
                        })) : (v.writeValue = function(e) {
                            var t = S.getOptionFromViewValue(e);
                            t && !t.disabled ? (n[0].value !== t.selectValue && (A(), C(), n[0].value = t.selectValue, t.element.selected = !0), t.element.setAttribute("selected", "selected")) : null === e || w ? (A(), k()) : (C(), E())
                        }, v.readValue = function() {
                            var e = S.selectValueMap[n.val()];
                            return e && !e.disabled ? (C(), A(), S.getViewValueFromOption(e)) : null
                        }, _.trackBy && t.$watch(function() {
                            return _.getTrackByValue(d.$viewValue)
                        }, function() {
                            d.$render()
                        })), w ? (g.remove(), e(g)(t), g.removeClass("ng-scope")) : g = ji(s.cloneNode(!1)), h(), t.$watchCollection(_.getWatchables, h)
                    }
                }
                var s = t.createElement("option"),
                    u = t.createElement("optgroup");
                return {
                    restrict: "A",
                    terminal: !0,
                    require: ["select", "?ngModel"],
                    link: {
                        pre: function(e, t, n, r) {
                            r[0].registerOption = g
                        },
                        post: a
                    }
                }
            }],
            Cs = ["$locale", "$interpolate", "$log", function(e, t, n) {
                var r = /{}/g,
                    i = /^when(Minus)?(.+)$/;
                return {
                    link: function(a, s, u) {
                        function l(e) {
                            s.text(e || "")
                        }
                        var c, f = u.count,
                            p = u.$attr.when && s.attr(u.$attr.when),
                            h = u.offset || 0,
                            d = a.$eval(p) || {},
                            v = {},
                            m = t.startSymbol(),
                            $ = t.endSymbol(),
                            b = m + f + "-" + h + $,
                            w = Ui.noop;
                        o(u, function(e, t) {
                            var n = i.exec(t);
                            if (n) {
                                var r = (n[1] ? "-" : "") + Ci(n[2]);
                                d[r] = s.attr(u.$attr[t])
                            }
                        }), o(d, function(e, n) {
                            v[n] = t(e.replace(r, b))
                        }), a.$watch(f, function(t) {
                            var r = parseFloat(t),
                                i = isNaN(r);
                            if (i || r in d || (r = e.pluralCat(r - h)), r !== c && !(i && _(c) && isNaN(c))) {
                                w();
                                var o = v[r];
                                y(o) ? (null != t && n.debug("ngPluralize: no rule defined for '" + r + "' in " + p), w = g, l()) : w = a.$watch(o, l), c = r
                            }
                        })
                    }
                }
            }],
            Es = ["$parse", "$animate", function(e, a) {
                var s = "$$NG_REMOVED",
                    u = r("ngRepeat"),
                    l = function(e, t, n, r, i, o, a) {
                        e[n] = r, i && (e[i] = o), e.$index = t, e.$first = 0 === t, e.$last = t === a - 1, e.$middle = !(e.$first || e.$last), e.$odd = !(e.$even = 0 === (1 & t))
                    },
                    c = function(e) {
                        return e.clone[0]
                    },
                    f = function(e) {
                        return e.clone[e.clone.length - 1]
                    };
                return {
                    restrict: "A",
                    multiElement: !0,
                    transclude: "element",
                    priority: 1e3,
                    terminal: !0,
                    $$tlb: !0,
                    compile: function(r, p) {
                        var h = p.ngRepeat,
                            d = t.createComment(" end ngRepeat: " + h + " "),
                            g = h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
                        if (!g) throw u("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", h);
                        var v = g[1],
                            m = g[2],
                            $ = g[3],
                            y = g[4];
                        if (g = v.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/), !g) throw u("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", v);
                        var b = g[3] || g[1],
                            w = g[2];
                        if ($ && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test($) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test($))) throw u("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", $);
                        var x, S, _, k, C = {
                            $id: Zt
                        };
                        return y ? x = e(y) : (_ = function(e, t) {
                                return Zt(t)
                            }, k = function(e) {
                                return e
                            }),
                            function(e, t, r, p, g) {
                                x && (S = function(t, n, r) {
                                    return w && (C[w] = t), C[b] = n, C.$index = r, x(e, C)
                                });
                                var v = vt();
                                e.$watchCollection(m, function(r) {
                                    var p, m, y, x, C, E, A, R, T, O, j, I, P = t[0],
                                        M = vt();
                                    if ($ && (e[$] = r), i(r)) T = r, R = S || _;
                                    else {
                                        R = S || k, T = [];
                                        for (var N in r) Ei.call(r, N) && "$" !== N.charAt(0) && T.push(N)
                                    }
                                    for (x = T.length, j = new Array(x), p = 0; x > p; p++)
                                        if (C = r === T ? p : T[p], E = r[C], A = R(C, E, p), v[A]) O = v[A], delete v[A], M[A] = O, j[p] = O;
                                        else {
                                            if (M[A]) throw o(j, function(e) {
                                                e && e.scope && (v[e.id] = e)
                                            }), u("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", h, A, E);
                                            j[p] = {
                                                id: A,
                                                scope: n,
                                                clone: n
                                            }, M[A] = !0
                                        } for (var D in v) {
                                        if (O = v[D], I = gt(O.clone), a.leave(I), I[0].parentNode)
                                            for (p = 0, m = I.length; m > p; p++) I[p][s] = !0;
                                        O.scope.$destroy()
                                    }
                                    for (p = 0; x > p; p++)
                                        if (C = r === T ? p : T[p], E = r[C], O = j[p], O.scope) {
                                            y = P;
                                            do y = y.nextSibling; while (y && y[s]);
                                            c(O) != y && a.move(gt(O.clone), null, P), P = f(O), l(O.scope, p, b, E, w, C, x)
                                        } else g(function(e, t) {
                                            O.scope = t;
                                            var n = d.cloneNode(!1);
                                            e[e.length++] = n, a.enter(e, null, P), P = n, O.clone = e, M[O.id] = O, l(O.scope, p, b, E, w, C, x)
                                        });
                                    v = M
                                })
                            }
                    }
                }
            }],
            As = "ng-hide",
            Rs = "ng-hide-animate",
            Ts = ["$animate", function(e) {
                return {
                    restrict: "A",
                    multiElement: !0,
                    link: function(t, n, r) {
                        t.$watch(r.ngShow, function(t) {
                            e[t ? "removeClass" : "addClass"](n, As, {
                                tempClasses: Rs
                            })
                        })
                    }
                }
            }],
            Os = ["$animate", function(e) {
                return {
                    restrict: "A",
                    multiElement: !0,
                    link: function(t, n, r) {
                        t.$watch(r.ngHide, function(t) {
                            e[t ? "addClass" : "removeClass"](n, As, {
                                tempClasses: Rs
                            })
                        })
                    }
                }
            }],
            js = ii(function(e, t, n) {
                e.$watch(n.ngStyle, function(e, n) {
                    n && e !== n && o(n, function(e, n) {
                        t.css(n, "")
                    }), e && t.css(e)
                }, !0)
            }),
            Is = ["$animate", function(e) {
                return {
                    require: "ngSwitch",
                    controller: ["$scope", function() {
                        this.cases = {}
                    }],
                    link: function(n, r, i, a) {
                        var s = i.ngSwitch || i.on,
                            u = [],
                            l = [],
                            c = [],
                            f = [],
                            p = function(e, t) {
                                return function() {
                                    e.splice(t, 1)
                                }
                            };
                        n.$watch(s, function(n) {
                            var r, i;
                            for (r = 0, i = c.length; i > r; ++r) e.cancel(c[r]);
                            for (c.length = 0, r = 0, i = f.length; i > r; ++r) {
                                var s = gt(l[r].clone);
                                f[r].$destroy();
                                var h = c[r] = e.leave(s);
                                h.then(p(c, r))
                            }
                            l.length = 0, f.length = 0, (u = a.cases["!" + n] || a.cases["?"]) && o(u, function(n) {
                                n.transclude(function(r, i) {
                                    f.push(i);
                                    var o = n.element;
                                    r[r.length++] = t.createComment(" end ngSwitchWhen: ");
                                    var a = {
                                        clone: r
                                    };
                                    l.push(a), e.enter(r, o.parent(), o)
                                })
                            })
                        })
                    }
                }
            }],
            Ps = ii({
                transclude: "element",
                priority: 1200,
                require: "^ngSwitch",
                multiElement: !0,
                link: function(e, t, n, r, i) {
                    r.cases["!" + n.ngSwitchWhen] = r.cases["!" + n.ngSwitchWhen] || [], r.cases["!" + n.ngSwitchWhen].push({
                        transclude: i,
                        element: t
                    })
                }
            }),
            Ms = ii({
                transclude: "element",
                priority: 1200,
                require: "^ngSwitch",
                multiElement: !0,
                link: function(e, t, n, r, i) {
                    r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
                        transclude: i,
                        element: t
                    })
                }
            }),
            Ns = ii({
                restrict: "EAC",
                link: function(e, t, n, i, o) {
                    if (!o) throw r("ngTransclude")("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", X(t));
                    o(function(e) {
                        t.empty(), t.append(e)
                    })
                }
            }),
            Ds = ["$templateCache", function(e) {
                return {
                    restrict: "E",
                    terminal: !0,
                    compile: function(t, n) {
                        if ("text/ng-template" == n.type) {
                            var r = n.id,
                                i = t[0].text;
                            e.put(r, i)
                        }
                    }
                }
            }],
            Vs = {
                $setViewValue: g,
                $render: g
            },
            qs = ["$element", "$scope", "$attrs", function(e, r) {
                var i = this,
                    o = new Xt;
                i.ngModelCtrl = Vs, i.unknownOption = ji(t.createElement("option")), i.renderUnknownOption = function(t) {
                    var n = "? " + Zt(t) + " ?";
                    i.unknownOption.val(n), e.prepend(i.unknownOption), e.val(n)
                }, r.$on("$destroy", function() {
                    i.renderUnknownOption = g
                }), i.removeUnknownOption = function() {
                    i.unknownOption.parent() && i.unknownOption.remove()
                }, i.readValue = function() {
                    return i.removeUnknownOption(), e.val()
                }, i.writeValue = function(t) {
                    i.hasOption(t) ? (i.removeUnknownOption(), e.val(t), "" === t && i.emptyOption.prop("selected", !0)) : null == t && i.emptyOption ? (i.removeUnknownOption(), e.val("")) : i.renderUnknownOption(t)
                }, i.addOption = function(e, t) {
                    if (t[0].nodeType !== ro) {
                        ht(e, '"option value"'), "" === e && (i.emptyOption = t);
                        var n = o.get(e) || 0;
                        o.put(e, n + 1), i.ngModelCtrl.$render(), Si(t)
                    }
                }, i.removeOption = function(e) {
                    var t = o.get(e);
                    t && (1 === t ? (o.remove(e), "" === e && (i.emptyOption = n)) : o.put(e, t - 1))
                }, i.hasOption = function(e) {
                    return !!o.get(e)
                }, i.registerOption = function(e, t, n, r, o) {
                    if (r) {
                        var a;
                        n.$observe("value", function(e) {
                            b(a) && i.removeOption(a), a = e, i.addOption(e, t)
                        })
                    } else o ? e.$watch(o, function(e, r) {
                        n.$set("value", e), r !== e && i.removeOption(r), i.addOption(e, t)
                    }) : i.addOption(n.value, t);
                    t.on("$destroy", function() {
                        i.removeOption(n.value), i.ngModelCtrl.$render()
                    })
                }
            }],
            Fs = function() {
                function e(e, t, n, r) {
                    var i = r[1];
                    if (i) {
                        var a = r[0];
                        if (a.ngModelCtrl = i, t.on("change", function() {
                                e.$apply(function() {
                                    i.$setViewValue(a.readValue())
                                })
                            }), n.multiple) {
                            a.readValue = function() {
                                var e = [];
                                return o(t.find("option"), function(t) {
                                    t.selected && e.push(t.value)
                                }), e
                            }, a.writeValue = function(e) {
                                var n = new Xt(e);
                                o(t.find("option"), function(e) {
                                    e.selected = b(n.get(e.value))
                                })
                            };
                            var s, u = 0 / 0;
                            e.$watch(function() {
                                u !== i.$viewValue || L(s, i.$viewValue) || (s = U(i.$viewValue), i.$render()), u = i.$viewValue
                            }), i.$isEmpty = function(e) {
                                return !e || 0 === e.length
                            }
                        }
                    }
                }

                function t(e, t, n, r) {
                    var i = r[1];
                    if (i) {
                        var o = r[0];
                        i.$render = function() {
                            o.writeValue(i.$viewValue)
                        }
                    }
                }
                return {
                    restrict: "E",
                    require: ["select", "?ngModel"],
                    controller: qs,
                    priority: 1,
                    link: {
                        pre: e,
                        post: t
                    }
                }
            },
            Us = ["$interpolate", function(e) {
                return {
                    restrict: "E",
                    priority: 100,
                    compile: function(t, n) {
                        if (b(n.value)) var r = e(n.value, !0);
                        else {
                            var i = e(t.text(), !0);
                            i || n.$set("value", t.text())
                        }
                        return function(e, t, n) {
                            var o = "$selectController",
                                a = t.parent(),
                                s = a.data(o) || a.parent().data(o);
                            s && s.registerOption(e, t, n, r, i)
                        }
                    }
                }
            }],
            Ls = m({
                restrict: "E",
                terminal: !1
            }),
            Hs = function() {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, t, n, r) {
                        r && (n.required = !0, r.$validators.required = function(e, t) {
                            return !n.required || !r.$isEmpty(t)
                        }, n.$observe("required", function() {
                            r.$validate()
                        }))
                    }
                }
            },
            Bs = function() {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, t, i, o) {
                        if (o) {
                            var a, s = i.ngPattern || i.pattern;
                            i.$observe("pattern", function(e) {
                                if (S(e) && e.length > 0 && (e = new RegExp("^" + e + "$")), e && !e.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", s, e, X(t));
                                a = e || n, o.$validate()
                            }), o.$validators.pattern = function(e, t) {
                                return o.$isEmpty(t) || y(a) || a.test(t)
                            }
                        }
                    }
                }
            },
            zs = function() {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, t, n, r) {
                        if (r) {
                            var i = -1;
                            n.$observe("maxlength", function(e) {
                                var t = h(e);
                                i = isNaN(t) ? -1 : t, r.$validate()
                            }), r.$validators.maxlength = function(e, t) {
                                return 0 > i || r.$isEmpty(t) || t.length <= i
                            }
                        }
                    }
                }
            },
            Ws = function() {
                return {
                    restrict: "A",
                    require: "?ngModel",
                    link: function(e, t, n, r) {
                        if (r) {
                            var i = 0;
                            n.$observe("minlength", function(e) {
                                i = h(e) || 0, r.$validate()
                            }), r.$validators.minlength = function(e, t) {
                                return r.$isEmpty(t) || t.length >= i
                            }
                        }
                    }
                }
            };
        return e.angular.bootstrap ? void e.console : (ct(), bt(Ui), Ui.module("ngLocale", [], ["$provide", function(e) {
            function t(e) {
                e += "";
                var t = e.indexOf(".");
                return -1 == t ? 0 : e.length - t - 1
            }

            function r(e, r) {
                var i = r;
                n === i && (i = Math.min(t(e), 3));
                var o = Math.pow(10, i),
                    a = (e * o | 0) % o;
                return {
                    v: i,
                    f: a
                }
            }
            var i = {
                ZERO: "zero",
                ONE: "one",
                TWO: "two",
                FEW: "few",
                MANY: "many",
                OTHER: "other"
            };
            e.value("$locale", {
                DATETIME_FORMATS: {
                    AMPMS: ["AM", "PM"],
                    DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    ERANAMES: ["Before Christ", "Anno Domini"],
                    ERAS: ["BC", "AD"],
                    FIRSTDAYOFWEEK: 6,
                    MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                    SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
                    SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
                    STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                    WEEKENDRANGE: [5, 6],
                    fullDate: "EEEE, MMMM d, y",
                    longDate: "MMMM d, y",
                    medium: "MMM d, y h:mm:ss a",
                    mediumDate: "MMM d, y",
                    mediumTime: "h:mm:ss a",
                    "short": "M/d/yy h:mm a",
                    shortDate: "M/d/yy",
                    shortTime: "h:mm a"
                },
                NUMBER_FORMATS: {
                    CURRENCY_SYM: "$",
                    DECIMAL_SEP: ".",
                    GROUP_SEP: ",",
                    PATTERNS: [{
                        gSize: 3,
                        lgSize: 3,
                        maxFrac: 3,
                        minFrac: 0,
                        minInt: 1,
                        negPre: "-",
                        negSuf: "",
                        posPre: "",
                        posSuf: ""
                    }, {
                        gSize: 3,
                        lgSize: 3,
                        maxFrac: 2,
                        minFrac: 2,
                        minInt: 1,
                        negPre: "-¤",
                        negSuf: "",
                        posPre: "¤",
                        posSuf: ""
                    }]
                },
                id: "en-us",
                localeID: "en_US",
                pluralCat: function(e, t) {
                    var n = 0 | e,
                        o = r(e, t);
                    return 1 == n && 0 == o.v ? i.ONE : i.OTHER
                }
            })
        }]), void ji(t).ready(function() {
            ot(t, at)
        }))
    }(window, document), !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),
        function(e, t) {
            "use strict";

            function n() {
                function n(e, t) {
                    var n, r = {},
                        i = e.split(",");
                    for (n = 0; n < i.length; n++) r[t ? u(i[n]) : i[n]] = !0;
                    return r
                }

                function r(t, n) {
                    null === t || void 0 === t ? t = "" : "string" != typeof t && (t = "" + t), $.innerHTML = t;
                    var r = 5;
                    do {
                        if (0 === r) throw p("uinput", "Failed to sanitize html because the input is unstable");
                        r--, e.document.documentMode && v($), t = $.innerHTML, $.innerHTML = t
                    } while (t !== $.innerHTML);
                    for (var i = $.firstChild; i;) {
                        switch (i.nodeType) {
                            case 1:
                                n.start(i.nodeName.toLowerCase(), h(i.attributes));
                                break;
                            case 3:
                                n.chars(i.textContent)
                        }
                        var o;
                        if (!(o = i.firstChild) && (1 == i.nodeType && n.end(i.nodeName.toLowerCase()), o = i.nextSibling, !o))
                            for (; null == o && (i = i.parentNode, i !== $);) o = i.nextSibling, 1 == i.nodeType && n.end(i.nodeName.toLowerCase());
                        i = o
                    }
                    for (; i = $.firstChild;) $.removeChild(i)
                }

                function h(e) {
                    for (var t = {}, n = 0, r = e.length; r > n; n++) {
                        var i = e[n];
                        t[i.name] = i.value
                    }
                    return t
                }

                function d(e) {
                    return e.replace(/&/g, "&amp;").replace(y, function(e) {
                        var t = e.charCodeAt(0),
                            n = e.charCodeAt(1);
                        return "&#" + (1024 * (t - 55296) + (n - 56320) + 65536) + ";"
                    }).replace(b, function(e) {
                        return "&#" + e.charCodeAt(0) + ";"
                    }).replace(/</g, "&lt;").replace(/>/g, "&gt;")
                }

                function g(e, t) {
                    var n = !1,
                        r = i(e, e.push);
                    return {
                        start: function(e, i) {
                            e = u(e), !n && A[e] && (n = e), n || R[e] !== !0 || (r("<"), r(e), a(i, function(n, i) {
                                var o = u(i),
                                    a = "img" === e && "src" === o || "background" === o;
                                I[o] !== !0 || T[o] === !0 && !t(n, a) || (r(" "), r(i), r('="'), r(d(n)), r('"'))
                            }), r(">"))
                        },
                        end: function(e) {
                            e = u(e), n || R[e] !== !0 || w[e] === !0 || (r("</"), r(e), r(">")), e == n && (n = !1)
                        },
                        chars: function(e) {
                            n || r(d(e))
                        }
                    }
                }

                function v(t) {
                    if (t.nodeType === e.Node.ELEMENT_NODE)
                        for (var n = t.attributes, r = 0, i = n.length; i > r; r++) {
                            var o = n[r],
                                a = o.name.toLowerCase();
                            ("xmlns:ns1" === a || 0 === a.lastIndexOf("ns1:", 0)) && (t.removeAttributeNode(o), r--, i--)
                        }
                    var s = t.firstChild;
                    s && v(s), s = t.nextSibling, s && v(s)
                }
                var m = !1;
                this.$get = ["$$sanitizeUri", function(e) {
                    return m && o(R, E),
                        function(t) {
                            var n = [];
                            return c(t, f(n, function(t, n) {
                                return !/^unsafe:/.test(e(t, n))
                            })), n.join("")
                        }
                }], this.enableSvg = function(e) {
                    return s(e) ? (m = e, this) : m
                }, i = t.bind, o = t.extend, a = t.forEach, s = t.isDefined, u = t.lowercase, l = t.noop, c = r, f = g;
                var $, y = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
                    b = /([^\#-~ |!])/g,
                    w = n("area,br,col,hr,img,wbr"),
                    x = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
                    S = n("rp,rt"),
                    _ = o({}, S, x),
                    k = o({}, x, n("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
                    C = o({}, S, n("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
                    E = n("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
                    A = n("script,style"),
                    R = o({}, w, k, C, _),
                    T = n("background,cite,href,longdesc,src,xlink:href"),
                    O = n("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
                    j = n("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0),
                    I = o({}, T, j, O);
                ! function(e) {
                    var t;
                    if (!e.document || !e.document.implementation) throw p("noinert", "Can't create an inert html document");
                    t = e.document.implementation.createHTMLDocument("inert");
                    var n = t.documentElement || t.getDocumentElement(),
                        r = n.getElementsByTagName("body");
                    if (1 === r.length) $ = r[0];
                    else {
                        var i = t.createElement("html");
                        $ = t.createElement("body"), i.appendChild($), t.appendChild(i)
                    }
                }(e)
            }

            function r(e) {
                var t = [],
                    n = f(t, l);
                return n.chars(e), t.join("")
            }
            var i, o, a, s, u, l, c, f, p = t.$$minErr("$sanitize");
            t.module("ngSanitize", []).provider("$sanitize", n), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
                var n = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
                    i = /^mailto:/i,
                    o = t.$$minErr("linky"),
                    a = t.isDefined,
                    s = t.isFunction,
                    u = t.isObject,
                    l = t.isString;
                return function(t, c, f) {
                    function p(e) {
                        e && y.push(r(e))
                    }

                    function h(e, t) {
                        var n, r = m(e);
                        y.push("<a ");
                        for (n in r) y.push(n + '="' + r[n] + '" ');
                        !a(c) || "target" in r || y.push('target="', c, '" '), y.push('href="', e.replace(/"/g, "&quot;"), '">'), p(t), y.push("</a>")
                    }
                    if (null == t || "" === t) return t;
                    if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
                    for (var d, g, v, m = s(f) ? f : u(f) ? function() {
                            return f
                        } : function() {
                            return {}
                        }, $ = t, y = []; d = $.match(n);) g = d[0], d[2] || d[4] || (g = (d[3] ? "http://" : "mailto:") + g), v = d.index, p($.substr(0, v)), h(g, d[0].replace(i, "")), $ = $.substring(v + d[0].length);
                    return p($), e(y.join(""))
                }
            }])
        }(window, window.angular),
        function(e, t) {
            "use strict";

            function n() {
                function e(e, n) {
                    return t.extend(Object.create(e), n)
                }

                function n(e, t) {
                    var n = t.caseInsensitiveMatch,
                        r = {
                            originalPath: e,
                            regexp: e
                        },
                        i = r.keys = [];
                    return e = e.replace(/([().])/g, "\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g, function(e, t, n, r) {
                        var o = "?" === r || "*?" === r ? "?" : null,
                            a = "*" === r || "*?" === r ? "*" : null;
                        return i.push({
                            name: n,
                            optional: !!o
                        }), t = t || "", "" + (o ? "" : t) + "(?:" + (o ? t : "") + (a && "(.+?)" || "([^/]+)") + (o || "") + ")" + (o || "")
                    }).replace(/([\/$\*])/g, "\\$1"), r.regexp = new RegExp("^" + e + "$", n ? "i" : ""), r
                }
                var r = {};
                this.when = function(e, i) {
                    var o = t.copy(i);
                    if (t.isUndefined(o.reloadOnSearch) && (o.reloadOnSearch = !0), t.isUndefined(o.caseInsensitiveMatch) && (o.caseInsensitiveMatch = this.caseInsensitiveMatch), r[e] = t.extend(o, e && n(e, o)), e) {
                        var a = "/" == e[e.length - 1] ? e.substr(0, e.length - 1) : e + "/";
                        r[a] = t.extend({
                            redirectTo: e
                        }, n(a, o))
                    }
                    return this
                }, this.caseInsensitiveMatch = !1, this.otherwise = function(e) {
                    return "string" == typeof e && (e = {
                        redirectTo: e
                    }), this.when(null, e), this
                }, this.$get = ["$rootScope", "$location", "$routeParams", "$q", "$injector", "$templateRequest", "$sce", function(n, i, o, a, u, l, c) {
                    function f(e, t) {
                        var n = t.keys,
                            r = {};
                        if (!t.regexp) return null;
                        var i = t.regexp.exec(e);
                        if (!i) return null;
                        for (var o = 1, a = i.length; a > o; ++o) {
                            var s = n[o - 1],
                                u = i[o];
                            s && u && (r[s.name] = u)
                        }
                        return r
                    }

                    function p(e) {
                        var r = y.current;
                        v = d(), m = v && r && v.$$route === r.$$route && t.equals(v.pathParams, r.pathParams) && !v.reloadOnSearch && !$, m || !r && !v || n.$broadcast("$routeChangeStart", v, r).defaultPrevented && e && e.preventDefault()
                    }

                    function h() {
                        var e = y.current,
                            r = v;
                        m ? (e.params = r.params, t.copy(e.params, o), n.$broadcast("$routeUpdate", e)) : (r || e) && ($ = !1, y.current = r, r && r.redirectTo && (t.isString(r.redirectTo) ? i.path(g(r.redirectTo, r.params)).search(r.params).replace() : i.url(r.redirectTo(r.pathParams, i.path(), i.search())).replace()), a.when(r).then(function() {
                            if (r) {
                                var e, n, i = t.extend({}, r.resolve);
                                return t.forEach(i, function(e, n) {
                                    i[n] = t.isString(e) ? u.get(e) : u.invoke(e, null, null, n)
                                }), t.isDefined(e = r.template) ? t.isFunction(e) && (e = e(r.params)) : t.isDefined(n = r.templateUrl) && (t.isFunction(n) && (n = n(r.params)), t.isDefined(n) && (r.loadedTemplateUrl = c.valueOf(n), e = l(n))), t.isDefined(e) && (i.$template = e), a.all(i)
                            }
                        }).then(function(i) {
                            r == y.current && (r && (r.locals = i, t.copy(r.params, o)), n.$broadcast("$routeChangeSuccess", r, e))
                        }, function(t) {
                            r == y.current && n.$broadcast("$routeChangeError", r, e, t)
                        }))
                    }

                    function d() {
                        var n, o;
                        return t.forEach(r, function(r) {
                            !o && (n = f(i.path(), r)) && (o = e(r, {
                                params: t.extend({}, i.search(), n),
                                pathParams: n
                            }), o.$$route = r)
                        }), o || r[null] && e(r[null], {
                            params: {},
                            pathParams: {}
                        })
                    }

                    function g(e, n) {
                        var r = [];
                        return t.forEach((e || "").split(":"), function(e, t) {
                            if (0 === t) r.push(e);
                            else {
                                var i = e.match(/(\w+)(?:[?*])?(.*)/),
                                    o = i[1];
                                r.push(n[o]), r.push(i[2] || ""), delete n[o]
                            }
                        }), r.join("")
                    }
                    var v, m, $ = !1,
                        y = {
                            routes: r,
                            reload: function() {
                                $ = !0;
                                var e = {
                                    defaultPrevented: !1,
                                    preventDefault: function() {
                                        this.defaultPrevented = !0, $ = !1
                                    }
                                };
                                n.$evalAsync(function() {
                                    p(e), e.defaultPrevented || h()
                                })
                            },
                            updateParams: function(e) {
                                if (!this.current || !this.current.$$route) throw s("norout", "Tried updating route when with no current route");
                                e = t.extend({}, this.current.params, e), i.path(g(this.current.$$route.originalPath, e)), i.search(e)
                            }
                        };
                    return n.$on("$locationChangeStart", p), n.$on("$locationChangeSuccess", h), y
                }]
            }

            function r() {
                this.$get = function() {
                    return {}
                }
            }

            function i(e, n, r) {
                return {
                    restrict: "ECA",
                    terminal: !0,
                    priority: 400,
                    transclude: "element",
                    link: function(i, o, a, s, u) {
                        function l() {
                            h && (r.cancel(h), h = null), f && (f.$destroy(), f = null), p && (h = r.leave(p), h.then(function() {
                                h = null
                            }), p = null)
                        }

                        function c() {
                            var a = e.current && e.current.locals,
                                s = a && a.$template;
                            if (t.isDefined(s)) {
                                var c = i.$new(),
                                    h = e.current,
                                    v = u(c, function(e) {
                                        r.enter(e, null, p || o).then(function() {
                                            !t.isDefined(d) || d && !i.$eval(d) || n()
                                        }), l()
                                    });
                                p = v, f = h.scope = c, f.$emit("$viewContentLoaded"), f.$eval(g)
                            } else l()
                        }
                        var f, p, h, d = a.autoscroll,
                            g = a.onload || "";
                        i.$on("$routeChangeSuccess", c), c()
                    }
                }
            }

            function o(e, t, n) {
                return {
                    restrict: "ECA",
                    priority: -400,
                    link: function(r, i) {
                        var o = n.current,
                            a = o.locals;
                        i.html(a.$template);
                        var s = e(i.contents());
                        if (o.controller) {
                            a.$scope = r;
                            var u = t(o.controller, a);
                            o.controllerAs && (r[o.controllerAs] = u), i.data("$ngControllerController", u), i.children().data("$ngControllerController", u)
                        }
                        s(r)
                    }
                }
            }
            var a = t.module("ngRoute", ["ng"]).provider("$route", n),
                s = t.$$minErr("ngRoute");
            a.provider("$routeParams", r), a.directive("ngView", i), a.directive("ngView", o), i.$inject = ["$route", "$anchorScroll", "$animate"], o.$inject = ["$compile", "$controller", "$route"]
        }(window, window.angular),
        function(e, t, n) {
            "use strict";

            function r(e, n, r) {
                function i(e, r, i) {
                    var a, s;
                    i = i || {}, s = i.expires, a = t.isDefined(i.path) ? i.path : o, t.isUndefined(r) && (s = "Thu, 01 Jan 1970 00:00:00 GMT", r = ""), t.isString(s) && (s = new Date(s));
                    var u = encodeURIComponent(e) + "=" + encodeURIComponent(r);
                    u += a ? ";path=" + a : "", u += i.domain ? ";domain=" + i.domain : "", u += s ? ";expires=" + s.toUTCString() : "", u += i.secure ? ";secure" : "";
                    var l = u.length + 1;
                    return l > 4096 && n.warn("Cookie '" + e + "' possibly not set or overflowed because it was too large (" + l + " > 4096 bytes)!"), u
                }
                var o = r.baseHref(),
                    a = e[0];
                return function(e, t, n) {
                    a.cookie = i(e, t, n)
                }
            }
            t.module("ngCookies", ["ng"]).provider("$cookies", [function() {
                function e(e) {
                    return e ? t.extend({}, r, e) : r
                }
                var r = this.defaults = {};
                this.$get = ["$$cookieReader", "$$cookieWriter", function(r, i) {
                    return {
                        get: function(e) {
                            return r()[e]
                        },
                        getObject: function(e) {
                            var n = this.get(e);
                            return n ? t.fromJson(n) : n
                        },
                        getAll: function() {
                            return r()
                        },
                        put: function(t, n, r) {
                            i(t, n, e(r))
                        },
                        putObject: function(e, n, r) {
                            this.put(e, t.toJson(n), r)
                        },
                        remove: function(t, r) {
                            i(t, n, e(r))
                        }
                    }
                }]
            }]), t.module("ngCookies").factory("$cookieStore", ["$cookies", function(e) {
                return {
                    get: function(t) {
                        return e.getObject(t)
                    },
                    put: function(t, n) {
                        e.putObject(t, n)
                    },
                    remove: function(t) {
                        e.remove(t)
                    }
                }
            }]), r.$inject = ["$document", "$log", "$browser"], t.module("ngCookies").provider("$$cookieWriter", function() {
                this.$get = r
            })
        }(window, window.angular), "undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ui.router"),
        function(e, t, n) {
            "use strict";

            function r(e, t) {
                return H(new(H(function() {}, {
                    prototype: e
                })), t)
            }

            function i(e) {
                return L(arguments, function(t) {
                    t !== e && L(t, function(t, n) {
                        e.hasOwnProperty(n) || (e[n] = t)
                    })
                }), e
            }

            function o(e, t) {
                var n = [];
                for (var r in e.path) {
                    if (e.path[r] !== t.path[r]) break;
                    n.push(e.path[r])
                }
                return n
            }

            function a(e) {
                if (Object.keys) return Object.keys(e);
                var t = [];
                return L(e, function(e, n) {
                    t.push(n)
                }), t
            }

            function s(e, t) {
                if (Array.prototype.indexOf) return e.indexOf(t, Number(arguments[2]) || 0);
                var n = e.length >>> 0,
                    r = Number(arguments[2]) || 0;
                for (r = 0 > r ? Math.ceil(r) : Math.floor(r), 0 > r && (r += n); n > r; r++)
                    if (r in e && e[r] === t) return r;
                return -1
            }

            function u(e, t, n, r) {
                var i, u = o(n, r),
                    l = {},
                    c = [];
                for (var f in u)
                    if (u[f] && u[f].params && (i = a(u[f].params), i.length))
                        for (var p in i) s(c, i[p]) >= 0 || (c.push(i[p]), l[i[p]] = e[i[p]]);
                return H({}, l, t)
            }

            function l(e, t, n) {
                if (!n) {
                    n = [];
                    for (var r in e) n.push(r)
                }
                for (var i = 0; i < n.length; i++) {
                    var o = n[i];
                    if (e[o] != t[o]) return !1
                }
                return !0
            }

            function c(e, t) {
                var n = {};
                return L(e, function(e) {
                    n[e] = t[e]
                }), n
            }

            function f(e) {
                var t = {},
                    n = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
                return L(n, function(n) {
                    n in e && (t[n] = e[n])
                }), t
            }

            function p(e) {
                var t = {},
                    n = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
                for (var r in e) - 1 == s(n, r) && (t[r] = e[r]);
                return t
            }

            function h(e, t) {
                var n = U(e),
                    r = n ? [] : {};
                return L(e, function(e, i) {
                    t(e, i) && (r[n ? r.length : i] = e)
                }), r
            }

            function d(e, t) {
                var n = U(e) ? [] : {};
                return L(e, function(e, r) {
                    n[r] = t(e, r)
                }), n
            }

            function g(e, t) {
                var r = 1,
                    o = 2,
                    u = {},
                    l = [],
                    c = u,
                    f = H(e.when(u), {
                        $$promises: u,
                        $$values: u
                    });
                this.study = function(u) {
                    function h(e, n) {
                        if ($[n] !== o) {
                            if (m.push(n), $[n] === r) throw m.splice(0, s(m, n)), new Error("Cyclic dependency: " + m.join(" -> "));
                            if ($[n] = r, q(e)) v.push(n, [function() {
                                return t.get(e)
                            }], l);
                            else {
                                var i = t.annotate(e);
                                L(i, function(e) {
                                    e !== n && u.hasOwnProperty(e) && h(u[e], e)
                                }), v.push(n, e, i)
                            }
                            m.pop(), $[n] = o
                        }
                    }

                    function d(e) {
                        return F(e) && e.then && e.$$promises
                    }
                    if (!F(u)) throw new Error("'invocables' must be an object");
                    var g = a(u || {}),
                        v = [],
                        m = [],
                        $ = {};
                    return L(u, h), u = m = $ = null,
                        function(r, o, a) {
                            function s() {
                                --b || (w || i(y, o.$$values), m.$$values = y, m.$$promises = m.$$promises || !0, delete m.$$inheritedValues, h.resolve(y))
                            }

                            function u(e) {
                                m.$$failure = e, h.reject(e)
                            }

                            function l(n, i, o) {
                                function l(e) {
                                    f.reject(e), u(e)
                                }

                                function c() {
                                    if (!D(m.$$failure)) try {
                                        f.resolve(t.invoke(i, a, y)), f.promise.then(function(e) {
                                            y[n] = e, s()
                                        }, l)
                                    } catch (e) {
                                        l(e)
                                    }
                                }
                                var f = e.defer(),
                                    p = 0;
                                L(o, function(e) {
                                    $.hasOwnProperty(e) && !r.hasOwnProperty(e) && (p++, $[e].then(function(t) {
                                        y[e] = t, --p || c()
                                    }, l))
                                }), p || c(), $[n] = f.promise
                            }
                            if (d(r) && a === n && (a = o, o = r, r = null), r) {
                                if (!F(r)) throw new Error("'locals' must be an object")
                            } else r = c;
                            if (o) {
                                if (!d(o)) throw new Error("'parent' must be a promise returned by $resolve.resolve()")
                            } else o = f;
                            var h = e.defer(),
                                m = h.promise,
                                $ = m.$$promises = {},
                                y = H({}, r),
                                b = 1 + v.length / 3,
                                w = !1;
                            if (D(o.$$failure)) return u(o.$$failure), m;
                            o.$$inheritedValues && i(y, p(o.$$inheritedValues, g)), H($, o.$$promises), o.$$values ? (w = i(y, p(o.$$values, g)), m.$$inheritedValues = p(o.$$values, g), s()) : (o.$$inheritedValues && (m.$$inheritedValues = p(o.$$inheritedValues, g)), o.then(s, u));
                            for (var x = 0, S = v.length; S > x; x += 3) r.hasOwnProperty(v[x]) ? s() : l(v[x], v[x + 1], v[x + 2]);
                            return m
                        }
                }, this.resolve = function(e, t, n, r) {
                    return this.study(e)(t, n, r)
                }
            }

            function v(e, t, n) {
                this.fromConfig = function(e, t, n) {
                    return D(e.template) ? this.fromString(e.template, t) : D(e.templateUrl) ? this.fromUrl(e.templateUrl, t) : D(e.templateProvider) ? this.fromProvider(e.templateProvider, t, n) : null
                }, this.fromString = function(e, t) {
                    return V(e) ? e(t) : e
                }, this.fromUrl = function(n, r) {
                    return V(n) && (n = n(r)), null == n ? null : e.get(n, {
                        cache: t,
                        headers: {
                            Accept: "text/html"
                        }
                    }).then(function(e) {
                        return e.data
                    })
                }, this.fromProvider = function(e, t, r) {
                    return n.invoke(e, null, r || {
                        params: t
                    })
                }
            }

            function m(e, t, i) {
                function o(t, n, r, i) {
                    if (v.push(t), d[t]) return d[t];
                    if (!/^\w+([-.]+\w+)*(?:\[\])?$/.test(t)) throw new Error("Invalid parameter name '" + t + "' in pattern '" + e + "'");
                    if (g[t]) throw new Error("Duplicate parameter name '" + t + "' in pattern '" + e + "'");
                    return g[t] = new W.Param(t, n, r, i), g[t]
                }

                function a(e, t, n, r) {
                    var i = ["", ""],
                        o = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
                    if (!t) return o;
                    switch (n) {
                        case !1:
                            i = ["(", ")" + (r ? "?" : "")];
                            break;
                        case !0:
                            o = o.replace(/\/$/, ""), i = ["(?:/(", ")|/)?"];
                            break;
                        default:
                            i = ["(" + n + "|", ")?"]
                    }
                    return o + i[0] + t + i[1]
                }

                function s(i, o) {
                    var a, s, u, l, c;
                    return a = i[2] || i[3], c = t.params[a], u = e.substring(p, i.index), s = o ? i[4] : i[4] || ("*" == i[1] ? ".*" : null), s && (l = W.type(s) || r(W.type("string"), {
                        pattern: new RegExp(s, t.caseInsensitive ? "i" : n)
                    })), {
                        id: a,
                        regexp: s,
                        segment: u,
                        type: l,
                        cfg: c
                    }
                }
                t = H({
                    params: {}
                }, F(t) ? t : {});
                var u, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
                    c = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,
                    f = "^",
                    p = 0,
                    h = this.segments = [],
                    d = i ? i.params : {},
                    g = this.params = i ? i.params.$$new() : new W.ParamSet,
                    v = [];
                this.source = e;
                for (var m, $, y;
                    (u = l.exec(e)) && (m = s(u, !1), !(m.segment.indexOf("?") >= 0));) $ = o(m.id, m.type, m.cfg, "path"), f += a(m.segment, $.type.pattern.source, $.squash, $.isOptional), h.push(m.segment), p = l.lastIndex;
                y = e.substring(p);
                var b = y.indexOf("?");
                if (b >= 0) {
                    var w = this.sourceSearch = y.substring(b);
                    if (y = y.substring(0, b), this.sourcePath = e.substring(0, p + b), w.length > 0)
                        for (p = 0; u = c.exec(w);) m = s(u, !0), $ = o(m.id, m.type, m.cfg, "search"), p = l.lastIndex
                } else this.sourcePath = e, this.sourceSearch = "";
                f += a(y) + (t.strict === !1 ? "/?" : "") + "$", h.push(y), this.regexp = new RegExp(f, t.caseInsensitive ? "i" : n), this.prefix = h[0], this.$$paramNames = v
            }

            function $(e) {
                H(this, e)
            }

            function y() {
                function e(e) {
                    return null != e ? e.toString().replace(/~/g, "~~").replace(/\//g, "~2F") : e
                }

                function i(e) {
                    return null != e ? e.toString().replace(/~2F/g, "/").replace(/~~/g, "~") : e
                }

                function o() {
                    return {
                        strict: g,
                        caseInsensitive: p
                    }
                }

                function u(e) {
                    return V(e) || U(e) && V(e[e.length - 1])
                }

                function l() {
                    for (; x.length;) {
                        var e = x.shift();
                        if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
                        t.extend(b[e.name], f.invoke(e.def))
                    }
                }

                function c(e) {
                    H(this, e || {})
                }
                W = this;
                var f, p = !1,
                    g = !0,
                    v = !1,
                    b = {},
                    w = !0,
                    x = [],
                    S = {
                        string: {
                            encode: e,
                            decode: i,
                            is: function(e) {
                                return null == e || !D(e) || "string" == typeof e
                            },
                            pattern: /[^\/]*/
                        },
                        "int": {
                            encode: e,
                            decode: function(e) {
                                return parseInt(e, 10)
                            },
                            is: function(e) {
                                return D(e) && this.decode(e.toString()) === e
                            },
                            pattern: /\d+/
                        },
                        bool: {
                            encode: function(e) {
                                return e ? 1 : 0
                            },
                            decode: function(e) {
                                return 0 !== parseInt(e, 10)
                            },
                            is: function(e) {
                                return e === !0 || e === !1
                            },
                            pattern: /0|1/
                        },
                        date: {
                            encode: function(e) {
                                return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : n
                            },
                            decode: function(e) {
                                if (this.is(e)) return e;
                                var t = this.capture.exec(e);
                                return t ? new Date(t[1], t[2] - 1, t[3]) : n
                            },
                            is: function(e) {
                                return e instanceof Date && !isNaN(e.valueOf())
                            },
                            equals: function(e, t) {
                                return this.is(e) && this.is(t) && e.toISOString() === t.toISOString()
                            },
                            pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
                            capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
                        },
                        json: {
                            encode: t.toJson,
                            decode: t.fromJson,
                            is: t.isObject,
                            equals: t.equals,
                            pattern: /[^\/]*/
                        },
                        any: {
                            encode: t.identity,
                            decode: t.identity,
                            equals: t.equals,
                            pattern: /.*/
                        }
                    };
                y.$$getDefaultValue = function(e) {
                    if (!u(e.value)) return e.value;
                    if (!f) throw new Error("Injectable functions cannot be called at configuration time");
                    return f.invoke(e.value)
                }, this.caseInsensitive = function(e) {
                    return D(e) && (p = e), p
                }, this.strictMode = function(e) {
                    return D(e) && (g = e), g
                }, this.defaultSquashPolicy = function(e) {
                    if (!D(e)) return v;
                    if (e !== !0 && e !== !1 && !q(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
                    return v = e, e
                }, this.compile = function(e, t) {
                    return new m(e, H(o(), t))
                }, this.isMatcher = function(e) {
                    if (!F(e)) return !1;
                    var t = !0;
                    return L(m.prototype, function(n, r) {
                        V(n) && (t = t && D(e[r]) && V(e[r]))
                    }), t
                }, this.type = function(e, t, n) {
                    if (!D(t)) return b[e];
                    if (b.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
                    return b[e] = new $(H({
                        name: e
                    }, t)), n && (x.push({
                        name: e,
                        def: n
                    }), w || l()), this
                }, L(S, function(e, t) {
                    b[t] = new $(H({
                        name: t
                    }, e))
                }), b = r(b, {}), this.$get = ["$injector", function(e) {
                    return f = e, w = !1, l(), L(S, function(e, t) {
                        b[t] || (b[t] = new $(e))
                    }), this
                }], this.Param = function(e, r, i, o) {
                    function l(e) {
                        var t = F(e) ? a(e) : [],
                            n = -1 === s(t, "value") && -1 === s(t, "type") && -1 === s(t, "squash") && -1 === s(t, "array");
                        return n && (e = {
                            value: e
                        }), e.$$fn = u(e.value) ? e.value : function() {
                            return e.value
                        }, e
                    }

                    function c(n, r, i) {
                        if (n.type && r) throw new Error("Param '" + e + "' has two type configurations.");
                        return r ? r : n.type ? t.isString(n.type) ? b[n.type] : n.type instanceof $ ? n.type : new $(n.type) : "config" === i ? b.any : b.string
                    }

                    function p() {
                        var t = {
                                array: "search" === o ? "auto" : !1
                            },
                            n = e.match(/\[\]$/) ? {
                                array: !0
                            } : {};
                        return H(t, n, i).array
                    }

                    function g(e, t) {
                        var n = e.squash;
                        if (!t || n === !1) return !1;
                        if (!D(n) || null == n) return v;
                        if (n === !0 || q(n)) return n;
                        throw new Error("Invalid squash policy: '" + n + "'. Valid policies: false, true, or arbitrary string")
                    }

                    function m(e, t, r, i) {
                        var o, a, u = [{
                            from: "",
                            to: r || t ? n : ""
                        }, {
                            from: null,
                            to: r || t ? n : ""
                        }];
                        return o = U(e.replace) ? e.replace : [], q(i) && o.push({
                            from: i,
                            to: n
                        }), a = d(o, function(e) {
                            return e.from
                        }), h(u, function(e) {
                            return -1 === s(a, e.from)
                        }).concat(o)
                    }

                    function y() {
                        if (!f) throw new Error("Injectable functions cannot be called at configuration time");
                        var e = f.invoke(i.$$fn);
                        if (null !== e && e !== n && !S.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + S.id + "' is not an instance of Type (" + S.type.name + ")");
                        return e
                    }

                    function w(e) {
                        function t(e) {
                            return function(t) {
                                return t.from === e
                            }
                        }

                        function n(e) {
                            var n = d(h(S.replace, t(e)), function(e) {
                                return e.to
                            });
                            return n.length ? n[0] : e
                        }
                        return e = n(e), D(e) ? S.type.$normalize(e) : y()
                    }

                    function x() {
                        return "{Param:" + e + " " + r + " squash: '" + C + "' optional: " + k + "}"
                    }
                    var S = this;
                    i = l(i), r = c(i, r, o);
                    var _ = p();
                    r = _ ? r.$asArray(_, "search" === o) : r, "string" !== r.name || _ || "path" !== o || i.value !== n || (i.value = "");
                    var k = i.value !== n,
                        C = g(i, k),
                        E = m(i, _, k, C);
                    H(this, {
                        id: e,
                        type: r,
                        location: o,
                        array: _,
                        squash: C,
                        replace: E,
                        isOptional: k,
                        value: w,
                        dynamic: n,
                        config: i,
                        toString: x
                    })
                }, c.prototype = {
                    $$new: function() {
                        return r(this, H(new c, {
                            $$parent: this
                        }))
                    },
                    $$keys: function() {
                        for (var e = [], t = [], n = this, r = a(c.prototype); n;) t.push(n), n = n.$$parent;
                        return t.reverse(), L(t, function(t) {
                            L(a(t), function(t) {
                                -1 === s(e, t) && -1 === s(r, t) && e.push(t)
                            })
                        }), e
                    },
                    $$values: function(e) {
                        var t = {},
                            n = this;
                        return L(n.$$keys(), function(r) {
                            t[r] = n[r].value(e && e[r])
                        }), t
                    },
                    $$equals: function(e, t) {
                        var n = !0,
                            r = this;
                        return L(r.$$keys(), function(i) {
                            var o = e && e[i],
                                a = t && t[i];
                            r[i].type.equals(o, a) || (n = !1)
                        }), n
                    },
                    $$validates: function(e) {
                        var r, i, o, a, s, u = this.$$keys();
                        for (r = 0; r < u.length && (i = this[u[r]], o = e[u[r]], o !== n && null !== o || !i.isOptional); r++) {
                            if (a = i.type.$normalize(o), !i.type.is(a)) return !1;
                            if (s = i.type.encode(a), t.isString(s) && !i.type.pattern.exec(s)) return !1
                        }
                        return !0
                    },
                    $$parent: n
                }, this.ParamSet = c
            }

            function b(e, r) {
                function i(e) {
                    var t = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(e.source);
                    return null != t ? t[1].replace(/\\(.)/g, "$1") : ""
                }

                function o(e, t) {
                    return e.replace(/\$(\$|\d{1,2})/, function(e, n) {
                        return t["$" === n ? 0 : Number(n)]
                    })
                }

                function a(e, t, n) {
                    if (!n) return !1;
                    var r = e.invoke(t, t, {
                        $match: n
                    });
                    return D(r) ? r : !0
                }

                function s(r, i, o, a, s) {
                    function p(e, t, n) {
                        return "/" === v ? e : t ? v.slice(0, -1) + e : n ? v.slice(1) + e : e
                    }

                    function h(e) {
                        function t(e) {
                            var t = e(o, r);
                            return t ? (q(t) && r.replace().url(t), !0) : !1
                        }
                        if (!e || !e.defaultPrevented) {
                            g && r.url() === g, g = n;
                            var i, a = l.length;
                            for (i = 0; a > i; i++)
                                if (t(l[i])) return;
                            c && t(c)
                        }
                    }

                    function d() {
                        return u = u || i.$on("$locationChangeSuccess", h)
                    }
                    var g, v = a.baseHref(),
                        m = r.url();
                    return f || d(), {
                        sync: function() {
                            h()
                        },
                        listen: function() {
                            return d()
                        },
                        update: function(e) {
                            return e ? void(m = r.url()) : void(r.url() !== m && (r.url(m), r.replace()))
                        },
                        push: function(e, t, i) {
                            var o = e.format(t || {});
                            null !== o && t && t["#"] && (o += "#" + t["#"]), r.url(o), g = i && i.$$avoidResync ? r.url() : n, i && i.replace && r.replace()
                        },
                        href: function(n, i, o) {
                            if (!n.validates(i)) return null;
                            var a = e.html5Mode();
                            t.isObject(a) && (a = a.enabled), a = a && s.history;
                            var u = n.format(i);
                            if (o = o || {}, a || null === u || (u = "#" + e.hashPrefix() + u), null !== u && i && i["#"] && (u += "#" + i["#"]), u = p(u, a, o.absolute), !o.absolute || !u) return u;
                            var l = !a && u ? "/" : "",
                                c = r.port();
                            return c = 80 === c || 443 === c ? "" : ":" + c, [r.protocol(), "://", r.host(), c, l, u].join("")
                        }
                    }
                }
                var u, l = [],
                    c = null,
                    f = !1;
                this.rule = function(e) {
                    if (!V(e)) throw new Error("'rule' must be a function");
                    return l.push(e), this
                }, this.otherwise = function(e) {
                    if (q(e)) {
                        var t = e;
                        e = function() {
                            return t
                        }
                    } else if (!V(e)) throw new Error("'rule' must be a function");
                    return c = e, this
                }, this.when = function(e, t) {
                    var n, s = q(t);
                    if (q(e) && (e = r.compile(e)), !s && !V(t) && !U(t)) throw new Error("invalid 'handler' in when()");
                    var u = {
                            matcher: function(e, t) {
                                return s && (n = r.compile(t), t = ["$match", function(e) {
                                    return n.format(e)
                                }]), H(function(n, r) {
                                    return a(n, t, e.exec(r.path(), r.search()))
                                }, {
                                    prefix: q(e.prefix) ? e.prefix : ""
                                })
                            },
                            regex: function(e, t) {
                                if (e.global || e.sticky) throw new Error("when() RegExp must not be global or sticky");
                                return s && (n = t, t = ["$match", function(e) {
                                    return o(n, e)
                                }]), H(function(n, r) {
                                    return a(n, t, e.exec(r.path()))
                                }, {
                                    prefix: i(e)
                                })
                            }
                        },
                        l = {
                            matcher: r.isMatcher(e),
                            regex: e instanceof RegExp
                        };
                    for (var c in l)
                        if (l[c]) return this.rule(u[c](e, t));
                    throw new Error("invalid 'what' in when()")
                }, this.deferIntercept = function(e) {
                    e === n && (e = !0), f = e
                }, this.$get = s, s.$inject = ["$location", "$rootScope", "$injector", "$browser", "$sniffer"]
            }

            function w(e, i) {
                function o(e) {
                    return 0 === e.indexOf(".") || 0 === e.indexOf("^")
                }

                function p(e, t) {
                    if (!e) return n;
                    var r = q(e),
                        i = r ? e : e.name,
                        a = o(i);
                    if (a) {
                        if (!t) throw new Error("No reference point given for path '" + i + "'");
                        t = p(t);
                        for (var s = i.split("."), u = 0, l = s.length, c = t; l > u; u++)
                            if ("" !== s[u] || 0 !== u) {
                                if ("^" !== s[u]) break;
                                if (!c.parent) throw new Error("Path '" + i + "' not valid for state '" + t.name + "'");
                                c = c.parent
                            } else c = t;
                        s = s.slice(u).join("."), i = c.name + (c.name && s ? "." : "") + s
                    }
                    var f = k[i];
                    return !f || !r && (r || f !== e && f.self !== e) ? n : f
                }

                function h(e, t) {
                    C[e] || (C[e] = []), C[e].push(t)
                }

                function g(e) {
                    for (var t = C[e] || []; t.length;) v(t.shift())
                }

                function v(t) {
                    t = r(t, {
                        self: t,
                        resolve: t.resolve || {},
                        toString: function() {
                            return this.name
                        }
                    });
                    var n = t.name;
                    if (!q(n) || n.indexOf("@") >= 0) throw new Error("State must have a valid name");
                    if (k.hasOwnProperty(n)) throw new Error("State '" + n + "' is already defined");
                    var i = -1 !== n.indexOf(".") ? n.substring(0, n.lastIndexOf(".")) : q(t.parent) ? t.parent : F(t.parent) && q(t.parent.name) ? t.parent.name : "";
                    if (i && !k[i]) return h(i, t.self);
                    for (var o in A) V(A[o]) && (t[o] = A[o](t, A.$delegates[o]));
                    return k[n] = t, !t[E] && t.url && e.when(t.url, ["$match", "$stateParams", function(e, n) {
                        _.$current.navigable == t && l(e, n) || _.transitionTo(t, e, {
                            inherit: !0,
                            location: !1
                        })
                    }]), g(n), t
                }

                function m(e) {
                    return e.indexOf("*") > -1
                }

                function $(e) {
                    for (var t = e.split("."), n = _.$current.name.split("."), r = 0, i = t.length; i > r; r++) "*" === t[r] && (n[r] = "*");
                    return "**" === t[0] && (n = n.slice(s(n, t[1])), n.unshift("**")), "**" === t[t.length - 1] && (n.splice(s(n, t[t.length - 2]) + 1, Number.MAX_VALUE), n.push("**")), t.length != n.length ? !1 : n.join("") === t.join("")
                }

                function y(e, t) {
                    return q(e) && !D(t) ? A[e] : V(t) && q(e) ? (A[e] && !A.$delegates[e] && (A.$delegates[e] = A[e]), A[e] = t, this) : this
                }

                function b(e, t) {
                    return F(e) ? t = e : t.name = e, v(t), this
                }

                function w(e, i, o, s, f, h, g) {
                    function v(t, n, r, o) {
                        var a = e.$broadcast("$stateNotFound", t, n, r);
                        if (a.defaultPrevented) return g.update(), C;
                        if (!a.retry) return null;
                        if (o.$retry) return g.update(), A;
                        var s = _.transition = i.when(a.retry);
                        return s.then(function() {
                            return s !== _.transition ? b : (t.options.$retry = !0, _.transitionTo(t.to, t.toParams, t.options))
                        }, function() {
                            return C
                        }), g.update(), s
                    }

                    function y(e, n, r, a, u, l) {
                        function p() {
                            var n = [];
                            return L(e.views, function(r, i) {
                                var a = r.resolve && r.resolve !== e.resolve ? r.resolve : {};
                                a.$template = [function() {
                                    return o.load(i, {
                                        view: r,
                                        locals: u.globals,
                                        params: h,
                                        notify: l.notify
                                    }) || ""
                                }], n.push(f.resolve(a, u.globals, u.resolve, e).then(function(n) {
                                    if (V(r.controllerProvider) || U(r.controllerProvider)) {
                                        var o = t.extend({}, a, u.globals);
                                        n.$$controller = s.invoke(r.controllerProvider, null, o)
                                    } else n.$$controller = r.controller;
                                    n.$$state = e, n.$$controllerAs = r.controllerAs, u[i] = n
                                }))
                            }), i.all(n).then(function() {
                                return u.globals
                            })
                        }
                        var h = r ? n : c(e.params.$$keys(), n),
                            d = {
                                $stateParams: h
                            };
                        u.resolve = f.resolve(e.resolve, d, u.resolve, e);
                        var g = [u.resolve.then(function(e) {
                            u.globals = e
                        })];
                        return a && g.push(a), i.all(g).then(p).then(function() {
                            return u
                        })
                    }
                    var b = i.reject(new Error("transition superseded")),
                        w = i.reject(new Error("transition prevented")),
                        C = i.reject(new Error("transition aborted")),
                        A = i.reject(new Error("transition failed"));
                    return S.locals = {
                        resolve: null,
                        globals: {
                            $stateParams: {}
                        }
                    }, _ = {
                        params: {},
                        current: S.self,
                        $current: S,
                        transition: null
                    }, _.reload = function(e) {
                        return _.transitionTo(_.current, h, {
                            reload: e || !0,
                            inherit: !1,
                            notify: !0
                        })
                    }, _.go = function(e, t, n) {
                        return _.transitionTo(e, t, H({
                            inherit: !0,
                            relative: _.$current
                        }, n))
                    }, _.transitionTo = function(t, n, o) {
                        n = n || {}, o = H({
                            location: !0,
                            inherit: !1,
                            relative: null,
                            notify: !0,
                            reload: !1,
                            $retry: !1
                        }, o || {});
                        var a, l = _.$current,
                            f = _.params,
                            d = l.path,
                            m = p(t, o.relative),
                            $ = n["#"];
                        if (!D(m)) {
                            var k = {
                                    to: t,
                                    toParams: n,
                                    options: o
                                },
                                C = v(k, l.self, f, o);
                            if (C) return C;
                            if (t = k.to, n = k.toParams, o = k.options, m = p(t, o.relative), !D(m)) {
                                if (!o.relative) throw new Error("No such state '" + t + "'");
                                throw new Error("Could not resolve '" + t + "' from state '" + o.relative + "'")
                            }
                        }
                        if (m[E]) throw new Error("Cannot transition to abstract state '" + t + "'");
                        if (o.inherit && (n = u(h, n || {}, _.$current, m)), !m.params.$$validates(n)) return A;
                        n = m.params.$$values(n), t = m;
                        var R = t.path,
                            T = 0,
                            O = R[T],
                            j = S.locals,
                            I = [];
                        if (o.reload) {
                            if (q(o.reload) || F(o.reload)) {
                                if (F(o.reload) && !o.reload.name) throw new Error("Invalid reload state object");
                                var P = o.reload === !0 ? d[0] : p(o.reload);
                                if (o.reload && !P) throw new Error("No such reload state '" + (q(o.reload) ? o.reload : o.reload.name) + "'");
                                for (; O && O === d[T] && O !== P;) j = I[T] = O.locals, T++, O = R[T]
                            }
                        } else
                            for (; O && O === d[T] && O.ownParams.$$equals(n, f);) j = I[T] = O.locals, T++, O = R[T];
                        if (x(t, n, l, f, j, o)) return $ && (n["#"] = $), _.params = n, B(_.params, h), B(c(t.params.$$keys(), h), t.locals.globals.$stateParams), o.location && t.navigable && t.navigable.url && (g.push(t.navigable.url, n, {
                            $$avoidResync: !0,
                            replace: "replace" === o.location
                        }), g.update(!0)), _.transition = null, i.when(_.current);
                        if (n = c(t.params.$$keys(), n || {}), $ && (n["#"] = $), o.notify && e.$broadcast("$stateChangeStart", t.self, n, l.self, f, o).defaultPrevented) return e.$broadcast("$stateChangeCancel", t.self, n, l.self, f), null == _.transition && g.update(), w;
                        for (var M = i.when(j), N = T; N < R.length; N++, O = R[N]) j = I[N] = r(j), M = y(O, n, O === t, M, j, o);
                        var V = _.transition = M.then(function() {
                            var r, i, a;
                            if (_.transition !== V) return b;
                            for (r = d.length - 1; r >= T; r--) a = d[r], a.self.onExit && s.invoke(a.self.onExit, a.self, a.locals.globals), a.locals = null;
                            for (r = T; r < R.length; r++) i = R[r], i.locals = I[r], i.self.onEnter && s.invoke(i.self.onEnter, i.self, i.locals.globals);
                            return _.transition !== V ? b : (_.$current = t, _.current = t.self, _.params = n, B(_.params, h), _.transition = null, o.location && t.navigable && g.push(t.navigable.url, t.navigable.locals.globals.$stateParams, {
                                $$avoidResync: !0,
                                replace: "replace" === o.location
                            }), o.notify && e.$broadcast("$stateChangeSuccess", t.self, n, l.self, f), g.update(!0), _.current)
                        }, function(r) {
                            return _.transition !== V ? b : (_.transition = null, a = e.$broadcast("$stateChangeError", t.self, n, l.self, f, r), a.defaultPrevented || g.update(), i.reject(r))
                        });
                        return V
                    }, _.is = function(e, t, r) {
                        r = H({
                            relative: _.$current
                        }, r || {});
                        var i = p(e, r.relative);
                        return D(i) ? _.$current !== i ? !1 : t ? l(i.params.$$values(t), h) : !0 : n
                    }, _.includes = function(e, t, r) {
                        if (r = H({
                                relative: _.$current
                            }, r || {}), q(e) && m(e)) {
                            if (!$(e)) return !1;
                            e = _.$current.name
                        }
                        var i = p(e, r.relative);
                        return D(i) ? D(_.$current.includes[i.name]) ? t ? l(i.params.$$values(t), h, a(t)) : !0 : !1 : n
                    }, _.href = function(e, t, r) {
                        r = H({
                            lossy: !0,
                            inherit: !0,
                            absolute: !1,
                            relative: _.$current
                        }, r || {});
                        var i = p(e, r.relative);
                        if (!D(i)) return null;
                        r.inherit && (t = u(h, t || {}, _.$current, i));
                        var o = i && r.lossy ? i.navigable : i;
                        return o && o.url !== n && null !== o.url ? g.href(o.url, c(i.params.$$keys().concat("#"), t || {}), {
                            absolute: r.absolute
                        }) : null
                    }, _.get = function(e, t) {
                        if (0 === arguments.length) return d(a(k), function(e) {
                            return k[e].self
                        });
                        var n = p(e, t || _.$current);
                        return n && n.self ? n.self : null
                    }, _
                }

                function x(e, t, n, r, i, o) {
                    function a(e, t, n) {
                        function r(t) {
                            return "search" != e.params[t].location
                        }
                        var i = e.params.$$keys().filter(r),
                            o = f.apply({}, [e.params].concat(i)),
                            a = new W.ParamSet(o);
                        return a.$$equals(t, n)
                    }
                    return !o.reload && e === n && (i === n.locals || e.self.reloadOnSearch === !1 && a(n, r, t)) ? !0 : void 0
                }
                var S, _, k = {},
                    C = {},
                    E = "abstract",
                    A = {
                        parent: function(e) {
                            if (D(e.parent) && e.parent) return p(e.parent);
                            var t = /^(.+)\.[^.]+$/.exec(e.name);
                            return t ? p(t[1]) : S
                        },
                        data: function(e) {
                            return e.parent && e.parent.data && (e.data = e.self.data = r(e.parent.data, e.data)), e.data
                        },
                        url: function(e) {
                            var t = e.url,
                                n = {
                                    params: e.params || {}
                                };
                            if (q(t)) return "^" == t.charAt(0) ? i.compile(t.substring(1), n) : (e.parent.navigable || S).url.concat(t, n);
                            if (!t || i.isMatcher(t)) return t;
                            throw new Error("Invalid url '" + t + "' in state '" + e + "'")
                        },
                        navigable: function(e) {
                            return e.url ? e : e.parent ? e.parent.navigable : null
                        },
                        ownParams: function(e) {
                            var t = e.url && e.url.params || new W.ParamSet;
                            return L(e.params || {}, function(e, n) {
                                t[n] || (t[n] = new W.Param(n, null, e, "config"))
                            }), t
                        },
                        params: function(e) {
                            var t = f(e.ownParams, e.ownParams.$$keys());
                            return e.parent && e.parent.params ? H(e.parent.params.$$new(), t) : new W.ParamSet
                        },
                        views: function(e) {
                            var t = {};
                            return L(D(e.views) ? e.views : {
                                "": e
                            }, function(n, r) {
                                r.indexOf("@") < 0 && (r += "@" + e.parent.name), t[r] = n
                            }), t
                        },
                        path: function(e) {
                            return e.parent ? e.parent.path.concat(e) : []
                        },
                        includes: function(e) {
                            var t = e.parent ? H({}, e.parent.includes) : {};
                            return t[e.name] = !0, t
                        },
                        $delegates: {}
                    };
                S = v({
                    name: "",
                    url: "^",
                    views: null,
                    "abstract": !0
                }), S.navigable = null, this.decorator = y, this.state = b, this.$get = w, w.$inject = ["$rootScope", "$q", "$view", "$injector", "$resolve", "$stateParams", "$urlRouter", "$location", "$urlMatcherFactory"]
            }

            function x() {
                function e(e, t) {
                    return {
                        load: function(e, n) {
                            var r, i = {
                                template: null,
                                controller: null,
                                view: null,
                                locals: null,
                                notify: !0,
                                async: !0,
                                params: {}
                            };
                            return n = H(i, n), n.view && (r = t.fromConfig(n.view, n.params, n.locals)), r
                        }
                    }
                }
                this.$get = e, e.$inject = ["$rootScope", "$templateFactory"]
            }

            function S() {
                var e = !1;
                this.useAnchorScroll = function() {
                    e = !0
                }, this.$get = ["$anchorScroll", "$timeout", function(t, n) {
                    return e ? t : function(e) {
                        return n(function() {
                            e[0].scrollIntoView()
                        }, 0, !1)
                    }
                }]
            }

            function _(e, n, r, i) {
                function o() {
                    return n.has ? function(e) {
                        return n.has(e) ? n.get(e) : null
                    } : function(e) {
                        try {
                            return n.get(e)
                        } catch (t) {
                            return null
                        }
                    }
                }

                function a(e, n) {
                    function r(e) {
                        return 1 === K && G >= 4 ? !!l.enabled(e) : 1 === K && G >= 2 ? !!l.enabled() : !!u
                    }
                    var i = {
                        enter: function(e, t, n) {
                            t.after(e), n()
                        },
                        leave: function(e, t) {
                            e.remove(), t()
                        }
                    };
                    if (e.noanimation) return i;
                    if (l) return {
                        enter: function(e, n, o) {
                            r(e) ? t.version.minor > 2 ? l.enter(e, null, n).then(o) : l.enter(e, null, n, o) : i.enter(e, n, o)
                        },
                        leave: function(e, n) {
                            r(e) ? t.version.minor > 2 ? l.leave(e).then(n) : l.leave(e, n) : i.leave(e, n)
                        }
                    };
                    if (u) {
                        var o = u && u(n, e);
                        return {
                            enter: function(e, t, n) {
                                o.enter(e, null, t), n()
                            },
                            leave: function(e, t) {
                                o.leave(e), t()
                            }
                        }
                    }
                    return i
                }
                var s = o(),
                    u = s("$animator"),
                    l = s("$animate"),
                    c = {
                        restrict: "ECA",
                        terminal: !0,
                        priority: 400,
                        transclude: "element",
                        compile: function(n, o, s) {
                            return function(n, o, u) {
                                function l() {
                                    function e() {
                                        t && t.remove(), n && n.$destroy()
                                    }
                                    var t = f,
                                        n = h;
                                    n && (n._willBeDestroyed = !0), p ? (m.leave(p, function() {
                                        e(), f = null
                                    }), f = p) : (e(), f = null), p = null, h = null
                                }

                                function c(a) {
                                    var c, f = C(n, u, o, i),
                                        $ = f && e.$current && e.$current.locals[f];
                                    if ((a || $ !== d) && !n._willBeDestroyed) {
                                        c = n.$new(), d = e.$current.locals[f], c.$emit("$viewContentLoading", f);
                                        var y = s(c, function(e) {
                                            m.enter(e, o, function() {
                                                h && h.$emit("$viewContentAnimationEnded"), (t.isDefined(v) && !v || n.$eval(v)) && r(e)
                                            }), l()
                                        });
                                        p = y, h = c, h.$emit("$viewContentLoaded", f), h.$eval(g)
                                    }
                                }
                                var f, p, h, d, g = u.onload || "",
                                    v = u.autoscroll,
                                    m = a(u, n);
                                n.$on("$stateChangeSuccess", function() {
                                    c(!1)
                                }), c(!0)
                            }
                        }
                    };
                return c
            }

            function k(e, t, n, r) {
                return {
                    restrict: "ECA",
                    priority: -400,
                    compile: function(i) {
                        var o = i.html();
                        return function(i, a, s) {
                            var u = n.$current,
                                l = C(i, s, a, r),
                                c = u && u.locals[l];
                            if (c) {
                                a.data("$uiView", {
                                    name: l,
                                    state: c.$$state
                                }), a.html(c.$template ? c.$template : o);
                                var f = e(a.contents());
                                if (c.$$controller) {
                                    c.$scope = i, c.$element = a;
                                    var p = t(c.$$controller, c);
                                    c.$$controllerAs && (i[c.$$controllerAs] = p), a.data("$ngControllerController", p), a.children().data("$ngControllerController", p)
                                }
                                f(i)
                            }
                        }
                    }
                }
            }

            function C(e, t, n, r) {
                var i = r(t.uiView || t.name || "")(e),
                    o = n.inheritedData("$uiView");
                return i.indexOf("@") >= 0 ? i : i + "@" + (o ? o.state.name : "")
            }

            function E(e, t) {
                var n, r = e.match(/^\s*({[^}]*})\s*$/);
                if (r && (e = t + "(" + r[1] + ")"), n = e.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/), !n || 4 !== n.length) throw new Error("Invalid state ref '" + e + "'");
                return {
                    state: n[1],
                    paramExpr: n[3] || null
                }
            }

            function A(e) {
                var t = e.parent().inheritedData("$uiView");
                return t && t.state && t.state.name ? t.state : void 0
            }

            function R(e) {
                var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
                    n = "FORM" === e[0].nodeName;
                return {
                    attr: n ? "action" : t ? "xlink:href" : "href",
                    isAnchor: "A" === e.prop("tagName").toUpperCase(),
                    clickable: !n
                }
            }

            function T(e, t, n, r, i) {
                return function(o) {
                    var a = o.which || o.button,
                        s = i();
                    if (!(a > 1 || o.ctrlKey || o.metaKey || o.shiftKey || e.attr("target"))) {
                        var u = n(function() {
                            t.go(s.state, s.params, s.options)
                        });
                        o.preventDefault();
                        var l = r.isAnchor && !s.href ? 1 : 0;
                        o.preventDefault = function() {
                            l-- <= 0 && n.cancel(u)
                        }
                    }
                }
            }

            function O(e, t) {
                return {
                    relative: A(e) || t.$current,
                    inherit: !0
                }
            }

            function j(e, n) {
                return {
                    restrict: "A",
                    require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
                    link: function(r, i, o, a) {
                        var s = E(o.uiSref, e.current.name),
                            u = {
                                state: s.state,
                                href: null,
                                params: null
                            },
                            l = R(i),
                            c = a[1] || a[0];
                        u.options = H(O(i, e), o.uiSrefOpts ? r.$eval(o.uiSrefOpts) : {});
                        var f = function(n) {
                            n && (u.params = t.copy(n)), u.href = e.href(s.state, u.params, u.options), c && c.$$addStateInfo(s.state, u.params), null !== u.href && o.$set(l.attr, u.href)
                        };
                        s.paramExpr && (r.$watch(s.paramExpr, function(e) {
                            e !== u.params && f(e)
                        }, !0), u.params = t.copy(r.$eval(s.paramExpr))), f(), l.clickable && i.bind("click", T(i, e, n, l, function() {
                            return u
                        }))
                    }
                }
            }

            function I(e, t) {
                return {
                    restrict: "A",
                    require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
                    link: function(n, r, i, o) {
                        function a(t) {
                            f.state = t[0], f.params = t[1], f.options = t[2], f.href = e.href(f.state, f.params, f.options), u && u.$$addStateInfo(f.state, f.params), f.href && i.$set(s.attr, f.href)
                        }
                        var s = R(r),
                            u = o[1] || o[0],
                            l = [i.uiState, i.uiStateParams || null, i.uiStateOpts || null],
                            c = "[" + l.map(function(e) {
                                return e || "null"
                            }).join(", ") + "]",
                            f = {
                                state: null,
                                params: null,
                                options: null,
                                href: null
                            };
                        n.$watch(c, a, !0), a(n.$eval(c)), s.clickable && r.bind("click", T(r, e, t, s, function() {
                            return f
                        }))
                    }
                }
            }

            function P(e, t, n) {
                return {
                    restrict: "A",
                    controller: ["$scope", "$element", "$attrs", "$timeout", function(t, r, i, o) {
                        function a(t, n, i) {
                            var o = e.get(t, A(r)),
                                a = s(t, n);
                            g.push({
                                state: o || {
                                    name: t
                                },
                                params: n,
                                hash: a
                            }), v[a] = i
                        }

                        function s(e, n) {
                            if (!q(e)) throw new Error("state should be a string");
                            return F(n) ? e + z(n) : (n = t.$eval(n), F(n) ? e + z(n) : e)
                        }

                        function u() {
                            for (var e = 0; e < g.length; e++) f(g[e].state, g[e].params) ? l(r, v[g[e].hash]) : c(r, v[g[e].hash]), p(g[e].state, g[e].params) ? l(r, h) : c(r, h)
                        }

                        function l(e, t) {
                            o(function() {
                                e.addClass(t)
                            })
                        }

                        function c(e, t) {
                            e.removeClass(t)
                        }

                        function f(t, n) {
                            return e.includes(t.name, n)
                        }

                        function p(t, n) {
                            return e.is(t.name, n)
                        }
                        var h, d, g = [],
                            v = {};
                        h = n(i.uiSrefActiveEq || "", !1)(t);
                        try {
                            d = t.$eval(i.uiSrefActive)
                        } catch (m) {}
                        d = d || n(i.uiSrefActive || "", !1)(t), F(d) && L(d, function(n, r) {
                            if (q(n)) {
                                var i = E(n, e.current.name);
                                a(i.state, t.$eval(i.paramExpr), r)
                            }
                        }), this.$$addStateInfo = function(e, t) {
                            F(d) && g.length > 0 || (a(e, t, d), u())
                        }, t.$on("$stateChangeSuccess", u), u()
                    }]
                }
            }

            function M(e) {
                var t = function(t, n) {
                    return e.is(t, n)
                };
                return t.$stateful = !0, t
            }

            function N(e) {
                var t = function(t, n, r) {
                    return e.includes(t, n, r)
                };
                return t.$stateful = !0, t
            }
            var D = t.isDefined,
                V = t.isFunction,
                q = t.isString,
                F = t.isObject,
                U = t.isArray,
                L = t.forEach,
                H = t.extend,
                B = t.copy,
                z = t.toJson;
            t.module("ui.router.util", ["ng"]), t.module("ui.router.router", ["ui.router.util"]), t.module("ui.router.state", ["ui.router.router", "ui.router.util"]), t.module("ui.router", ["ui.router.state"]), t.module("ui.router.compat", ["ui.router"]), g.$inject = ["$q", "$injector"], t.module("ui.router.util").service("$resolve", g), v.$inject = ["$http", "$templateCache", "$injector"], t.module("ui.router.util").service("$templateFactory", v);
            var W;
            m.prototype.concat = function(e, t) {
                var n = {
                    caseInsensitive: W.caseInsensitive(),
                    strict: W.strictMode(),
                    squash: W.defaultSquashPolicy()
                };
                return new m(this.sourcePath + e + this.sourceSearch, H(n, t), this)
            }, m.prototype.toString = function() {
                return this.source
            }, m.prototype.exec = function(e, t) {
                function n(e) {
                    function t(e) {
                        return e.split("").reverse().join("")
                    }

                    function n(e) {
                        return e.replace(/\\-/g, "-")
                    }
                    var r = t(e).split(/-(?!\\)/),
                        i = d(r, t);
                    return d(i, n).reverse()
                }
                var r = this.regexp.exec(e);
                if (!r) return null;
                t = t || {};
                var i, o, a, s = this.parameters(),
                    u = s.length,
                    l = this.segments.length - 1,
                    c = {};
                if (l !== r.length - 1) throw new Error("Unbalanced capture group in route '" + this.source + "'");
                var f, p;
                for (i = 0; l > i; i++) {
                    for (a = s[i], f = this.params[a], p = r[i + 1], o = 0; o < f.replace.length; o++) f.replace[o].from === p && (p = f.replace[o].to);
                    p && f.array === !0 && (p = n(p)), D(p) && (p = f.type.decode(p)), c[a] = f.value(p)
                }
                for (; u > i; i++) {
                    for (a = s[i], c[a] = this.params[a].value(t[a]), f = this.params[a], p = t[a], o = 0; o < f.replace.length; o++) f.replace[o].from === p && (p = f.replace[o].to);
                    D(p) && (p = f.type.decode(p)), c[a] = f.value(p)
                }
                return c
            }, m.prototype.parameters = function(e) {
                return D(e) ? this.params[e] || null : this.$$paramNames
            }, m.prototype.validates = function(e) {
                return this.params.$$validates(e)
            }, m.prototype.format = function(e) {
                function t(e) {
                    return encodeURIComponent(e).replace(/-/g, function(e) {
                        return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
                    })
                }
                e = e || {};
                var n = this.segments,
                    r = this.parameters(),
                    i = this.params;
                if (!this.validates(e)) return null;
                var o, a = !1,
                    s = n.length - 1,
                    u = r.length,
                    l = n[0];
                for (o = 0; u > o; o++) {
                    var c = s > o,
                        f = r[o],
                        p = i[f],
                        h = p.value(e[f]),
                        g = p.isOptional && p.type.equals(p.value(), h),
                        v = g ? p.squash : !1,
                        m = p.type.encode(h);
                    if (c) {
                        var $ = n[o + 1],
                            y = o + 1 === s;
                        if (v === !1) null != m && (l += U(m) ? d(m, t).join("-") : encodeURIComponent(m)), l += $;
                        else if (v === !0) {
                            var b = l.match(/\/$/) ? /\/?(.*)/ : /(.*)/;
                            l += $.match(b)[1]
                        } else q(v) && (l += v + $);
                        y && p.squash === !0 && "/" === l.slice(-1) && (l = l.slice(0, -1))
                    } else {
                        if (null == m || g && v !== !1) continue;
                        if (U(m) || (m = [m]), 0 === m.length) continue;
                        m = d(m, encodeURIComponent).join("&" + f + "="), l += (a ? "&" : "?") + (f + "=" + m), a = !0
                    }
                }
                return l
            }, $.prototype.is = function() {
                return !0
            }, $.prototype.encode = function(e) {
                return e
            }, $.prototype.decode = function(e) {
                return e
            }, $.prototype.equals = function(e, t) {
                return e == t
            }, $.prototype.$subPattern = function() {
                var e = this.pattern.toString();
                return e.substr(1, e.length - 2)
            }, $.prototype.pattern = /.*/, $.prototype.toString = function() {
                return "{Type:" + this.name + "}"
            }, $.prototype.$normalize = function(e) {
                return this.is(e) ? e : this.decode(e)
            }, $.prototype.$asArray = function(e, t) {
                function r(e, t) {
                    function r(e, t) {
                        return function() {
                            return e[t].apply(e, arguments)
                        }
                    }

                    function i(e) {
                        return U(e) ? e : D(e) ? [e] : []
                    }

                    function o(e) {
                        switch (e.length) {
                            case 0:
                                return n;
                            case 1:
                                return "auto" === t ? e[0] : e;
                            default:
                                return e
                        }
                    }

                    function a(e) {
                        return !e
                    }

                    function s(e, t) {
                        return function(n) {
                            if (U(n) && 0 === n.length) return n;
                            n = i(n);
                            var r = d(n, e);
                            return t === !0 ? 0 === h(r, a).length : o(r)
                        }
                    }

                    function u(e) {
                        return function(t, n) {
                            var r = i(t),
                                o = i(n);
                            if (r.length !== o.length) return !1;
                            for (var a = 0; a < r.length; a++)
                                if (!e(r[a], o[a])) return !1;
                            return !0
                        }
                    }
                    this.encode = s(r(e, "encode")), this.decode = s(r(e, "decode")), this.is = s(r(e, "is"), !0), this.equals = u(r(e, "equals")), this.pattern = e.pattern, this.$normalize = s(r(e, "$normalize")), this.name = e.name, this.$arrayMode = t
                }
                if (!e) return this;
                if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
                return new r(this, e)
            }, t.module("ui.router.util").provider("$urlMatcherFactory", y), t.module("ui.router.util").run(["$urlMatcherFactory", function() {}]), b.$inject = ["$locationProvider", "$urlMatcherFactoryProvider"], t.module("ui.router.router").provider("$urlRouter", b), w.$inject = ["$urlRouterProvider", "$urlMatcherFactoryProvider"], t.module("ui.router.state").factory("$stateParams", function() {
                return {}
            }).provider("$state", w), x.$inject = [], t.module("ui.router.state").provider("$view", x), t.module("ui.router.state").provider("$uiViewScroll", S);
            var K = t.version.major,
                G = t.version.minor;
            _.$inject = ["$state", "$injector", "$uiViewScroll", "$interpolate"], k.$inject = ["$compile", "$controller", "$state", "$interpolate"], t.module("ui.router.state").directive("uiView", _), t.module("ui.router.state").directive("uiView", k), j.$inject = ["$state", "$timeout"], I.$inject = ["$state", "$timeout"], P.$inject = ["$state", "$stateParams", "$interpolate"], t.module("ui.router.state").directive("uiSref", j).directive("uiSrefActive", P).directive("uiSrefActiveEq", P).directive("uiState", I), M.$inject = ["$state"], N.$inject = ["$state"], t.module("ui.router.state").filter("isState", M).filter("includedByState", N)
        }(window, window.angular),
        function(e, t) {
            "undefined" != typeof module && module.exports ? module.exports = t(require("angular")) : "function" == typeof define && define.amd ? define(["angular"], t) : t(e.angular)
        }(window, function(e) {
            e.module("angucomplete-alt", []).directive("angucompleteAlt", ["$q", "$parse", "$http", "$sce", "$timeout", "$templateCache", "$interpolate", function(e, t, n, r, i, o, a) {
                function s(t, o, a, s) {
                    function x(e) {
                        e && ("object" == typeof e ? (t.searchStr = A(e), k({
                            originalObject: e
                        })) : "string" == typeof e && e.length > 0 ? t.searchStr = e : console && console.error, O(!0))
                    }

                    function S(e) {
                        pt = null, t.hideResults(e), document.body.removeEventListener("click", S)
                    }

                    function _(e) {
                        return e.which ? e.which : e.keyCode
                    }

                    function k(e) {
                        "function" == typeof t.selectedObject ? t.selectedObject(e) : t.selectedObject = e, O(e ? !0 : !1)
                    }

                    function C(e) {
                        return function(n) {
                            return t[e] ? t[e](n) : n
                        }
                    }

                    function E(e) {
                        k({
                            originalObject: e
                        }), t.clearSelected && (t.searchStr = null), W()
                    }

                    function A(e) {
                        return t.titleField.split(",").map(function(t) {
                            return R(e, t)
                        }).join(" ")
                    }

                    function R(e, t) {
                        var n, r;
                        if (t) {
                            n = t.split("."), r = e;
                            for (var i = 0; i < n.length; i++) r = r[n[i]]
                        } else r = e;
                        return r
                    }

                    function T(e, n) {
                        var i, o, a;
                        return a = new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "i"), e ? (e.match && e.replace || (e = e.toString()), o = e.match(a), i = o ? e.replace(a, '<span class="' + t.matchClass + '">' + o[0] + "</span>") : e, r.trustAsHtml(i)) : void 0
                    }

                    function O(e) {
                        t.notEmpty = e, ut = t.searchStr, t.fieldRequired && s && t.inputName && s[t.inputName].$setValidity(st, e)
                    }

                    function j(e) {
                        var n = _(e);
                        if (n !== f && n !== l)
                            if (n === c || n === h) e.preventDefault();
                            else if (n === u) e.preventDefault(), !t.showDropdown && t.searchStr && t.searchStr.length >= ot && (K(), t.searching = !0, J(t.searchStr));
                        else if (n === p) W(), t.$apply(function() {
                            it.val(t.searchStr)
                        });
                        else {
                            if (0 === ot && !t.searchStr) return;
                            t.searchStr && "" !== t.searchStr ? t.searchStr.length >= ot && (K(), at && i.cancel(at), t.searching = !0, at = i(function() {
                                J(t.searchStr)
                            }, t.pause)) : t.showDropdown = !1, ut && ut !== t.searchStr && !t.clearSelected && t.$apply(function() {
                                k()
                            })
                        }
                    }

                    function I(e) {
                        !t.overrideSuggestions || t.selectedObject && t.selectedObject.originalObject === t.searchStr || (e && e.preventDefault(), i.cancel(at), H(), E(t.searchStr))
                    }

                    function P(e) {
                        var t = getComputedStyle(e);
                        return e.offsetHeight + parseInt(t.marginTop, 10) + parseInt(t.marginBottom, 10)
                    }

                    function M() {
                        return ct.getBoundingClientRect().top + parseInt(getComputedStyle(ct).maxHeight, 10)
                    }

                    function N() {
                        return o[0].querySelectorAll(".angucomplete-row")[t.currentIndex]
                    }

                    function D() {
                        return N().getBoundingClientRect().top - (ct.getBoundingClientRect().top + parseInt(getComputedStyle(ct).paddingTop, 10))
                    }

                    function V(e) {
                        ct.scrollTop = ct.scrollTop + e
                    }

                    function q() {
                        var e = t.results[t.currentIndex];
                        it.val(t.matchClass ? A(e.originalObject) : e.title)
                    }

                    function F(e) {
                        var n = _(e),
                            r = null,
                            i = null;
                        n === h && t.results ? (t.currentIndex >= 0 && t.currentIndex < t.results.length ? (e.preventDefault(), t.selectResult(t.results[t.currentIndex])) : (I(e), W()), t.$apply()) : n === u && t.results ? (e.preventDefault(), t.currentIndex + 1 < t.results.length && t.showDropdown && (t.$apply(function() {
                            t.currentIndex++, q()
                        }), ft && (r = N(), M() < r.getBoundingClientRect().bottom && V(P(r))))) : n === c && t.results ? (e.preventDefault(), t.currentIndex >= 1 ? (t.$apply(function() {
                            t.currentIndex--, q()
                        }), ft && (i = D(), 0 > i && V(i - 1))) : 0 === t.currentIndex && t.$apply(function() {
                            t.currentIndex = -1, it.val(t.searchStr)
                        })) : n === d ? t.results && t.results.length > 0 && t.showDropdown ? -1 === t.currentIndex && t.overrideSuggestions ? I() : (-1 === t.currentIndex && (t.currentIndex = 0), t.selectResult(t.results[t.currentIndex]), t.$digest()) : t.searchStr && t.searchStr.length > 0 && I() : n === p && e.preventDefault()
                    }

                    function U(e) {
                        return function(n, r, i, o) {
                            r || i || o || !n.data || (n = n.data), t.searching = !1, Z(R(et(n), t.remoteUrlDataField), e)
                        }
                    }

                    function L(e, n, r, i) {
                        0 !== n && -1 !== n && (n || r || i || (n = e.status), t.remoteUrlErrorCallback ? t.remoteUrlErrorCallback(e, n, r, i) : console && console.error)
                    }

                    function H() {
                        lt && lt.resolve()
                    }

                    function B(r) {
                        var i = {},
                            o = t.remoteUrl + encodeURIComponent(r);
                        t.remoteUrlRequestFormatter && (i = {
                            params: t.remoteUrlRequestFormatter(r)
                        }, o = t.remoteUrl), t.remoteUrlRequestWithCredentials && (i.withCredentials = !0), H(), lt = e.defer(), i.timeout = lt.promise, n.get(o, i).success(U(r)).error(L)
                    }

                    function z(n) {
                        H(), lt = e.defer(), t.remoteApiHandler(n, lt.promise).then(U(n)).catch(L)
                    }

                    function W() {
                        t.showDropdown = !1, t.results = [], ct && (ct.scrollTop = 0)
                    }

                    function K() {
                        t.showDropdown = nt, t.currentIndex = t.focusFirst ? 0 : -1, t.results = []
                    }

                    function G(e) {
                        var n, r, i, o, a = t.searchFields.split(","),
                            s = [];
                        for (n = 0; n < t.localData.length; n++) {
                            for (r = !1, i = 0; i < a.length; i++) o = R(t.localData[n], a[i]) || "", r = r || o.toString().toLowerCase().indexOf(e.toString().toLowerCase()) >= 0;
                            r && (s[s.length] = t.localData[n])
                        }
                        t.searching = !1, Z(s, e)
                    }

                    function Y(e, n, r) {
                        if (!r) return !1;
                        for (var i in n)
                            if (n[i].toLowerCase() === r.toLowerCase()) return t.selectResult(e), !0;
                        return !1
                    }

                    function J(e) {
                        !e || e.length < ot || (t.localData ? t.$apply(function() {
                            G(e)
                        }) : t.remoteApiHandler ? z(e) : B(e))
                    }

                    function Z(e, n) {
                        var r, i, o, a, s, u;
                        if (e && e.length > 0)
                            for (t.results = [], r = 0; r < e.length; r++) t.titleField && "" !== t.titleField && (a = s = A(e[r])), i = "", t.descriptionField && (i = u = R(e[r], t.descriptionField)), o = "", t.imageField && (o = R(e[r], t.imageField)), t.matchClass && (s = T(a, n), u = T(i, n)), t.results[t.results.length] = {
                                title: s,
                                description: u,
                                image: o,
                                originalObject: e[r]
                            };
                        else t.results = [];
                        t.showDropdown = t.autoMatch && 1 === t.results.length && Y(t.results[0], {
                            title: a,
                            desc: i || ""
                        }, t.searchStr) ? !1 : 0 !== t.results.length || rt ? !0 : !1
                    }

                    function X() {
                        t.localData ? Z(t.localData, "") : t.remoteApiHandler ? z("") : B("")
                    }
                    var Q, et, tt, nt, rt, it = o.find("input"),
                        ot = g,
                        at = null,
                        st = y,
                        ut = null,
                        lt = null,
                        ct = o[0].querySelector(".angucomplete-dropdown"),
                        ft = !1,
                        pt = null;
                    o.on("mousedown", function(e) {
                        e.target.id ? (pt = e.target.id, pt === t.id + "_dropdown" && document.body.addEventListener("click", S)) : pt = e.target.className
                    }), t.currentIndex = t.focusFirst ? 0 : null, t.searching = !1, tt = t.$watch("initialValue", function(e) {
                        e && (tt(), x(e, !0))
                    }), t.$watch("fieldRequired", function(e, n) {
                        e !== n && (e ? O(ut && -1 !== t.currentIndex ? !0 : !1) : s[t.inputName].$setValidity(st, !0))
                    }), t.$on("angucomplete-alt:clearInput", function(e, n) {
                        n && n !== t.id || (t.searchStr = null, k(), O(!1), W())
                    }), t.$on("angucomplete-alt:changeInput", function(e, n, r) {
                        n && n === t.id && x(r)
                    }), t.onFocusHandler = function() {
                        t.focusIn && t.focusIn(), 0 !== ot || t.searchStr && 0 !== t.searchStr.length || (t.currentIndex = t.focusFirst ? 0 : t.currentIndex, t.showDropdown = !0, X())
                    }, t.hideResults = function() {
                        pt && (pt === t.id + "_dropdown" || pt.indexOf("angucomplete") >= 0) ? pt = null : (Q = i(function() {
                            W(), t.$apply(function() {
                                t.searchStr && t.searchStr.length > 0 && it.val(t.searchStr)
                            })
                        }, $), H(), t.focusOut && t.focusOut(), t.overrideSuggestions && t.searchStr && t.searchStr.length > 0 && -1 === t.currentIndex && I())
                    }, t.resetHideResults = function() {
                        Q && i.cancel(Q)
                    }, t.hoverRow = function(e) {
                        t.currentIndex = e
                    }, t.selectResult = function(e) {
                        t.matchClass && (e.title = A(e.originalObject), e.description = R(e.originalObject, t.descriptionField)), t.searchStr = t.clearSelected ? null : e.title, k(e), W()
                    }, t.inputChangeHandler = function(e) {
                        return e.length < ot ? (H(), W()) : 0 === e.length && 0 === ot && (t.searching = !1, X()), t.inputChanged && (e = t.inputChanged(e)), e
                    }, t.fieldRequiredClass && "" !== t.fieldRequiredClass && (st = t.fieldRequiredClass), t.minlength && "" !== t.minlength && (ot = parseInt(t.minlength, 10)), t.pause || (t.pause = m), t.clearSelected || (t.clearSelected = !1), t.overrideSuggestions || (t.overrideSuggestions = !1), t.fieldRequired && s && O(t.initialValue ? !0 : !1), t.inputType = a.type ? a.type : "text", t.textSearching = a.textSearching ? a.textSearching : b, t.textNoResults = a.textNoResults ? a.textNoResults : w, nt = "false" === t.textSearching ? !1 : !0, rt = "false" === t.textNoResults ? !1 : !0, t.maxlength = a.maxlength ? a.maxlength : v, it.on("keydown", F), it.on("keyup", j), et = C("remoteUrlResponseFormatter"), i(function() {
                        var e = getComputedStyle(ct);
                        ft = e.maxHeight && "auto" === e.overflowY
                    })
                }
                var u = 40,
                    l = 39,
                    c = 38,
                    f = 37,
                    p = 27,
                    h = 13,
                    d = 9,
                    g = 3,
                    v = 524288,
                    m = 500,
                    $ = 200,
                    y = "autocomplete-required",
                    b = "Searching...",
                    w = "No results found",
                    x = "/angucomplete-alt/index.html";
                return o.put(x, '<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">  <input id="{{id}}_value" name="{{inputName}}" ng-class="{\'angucomplete-input-not-empty\': notEmpty}" ng-model="searchStr" ng-disabled="disableInput" type="{{inputType}}" placeholder="{{placeholder}}" maxlength="{{maxlength}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)"/>  <div id="{{id}}_dropdown" class="angucomplete-dropdown" ng-show="showDropdown">    <div class="angucomplete-searching" ng-show="searching" ng-bind="textSearching"></div>    <div class="angucomplete-searching" ng-show="!searching && (!results || results.length == 0)" ng-bind="textNoResults"></div>    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">      <div ng-if="imageField" class="angucomplete-image-holder">        <img ng-if="result.image && result.image != \'\'" ng-src="{{result.image}}" class="angucomplete-image"/>        <div ng-if="!result.image && result.image != \'\'" class="angucomplete-image-default"></div>      </div>      <div class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title"></div>      <div class="angucomplete-title" ng-if="!matchClass">{{ result.title }}</div>      <div ng-if="matchClass && result.description && result.description != \'\'" class="angucomplete-description" ng-bind-html="result.description"></div>      <div ng-if="!matchClass && result.description && result.description != \'\'" class="angucomplete-description">{{result.description}}</div>    </div>  </div></div>'), {
                    restrict: "EA",
                    require: "^?form",
                    scope: {
                        selectedObject: "=",
                        disableInput: "=",
                        initialValue: "=",
                        localData: "=",
                        remoteUrlRequestFormatter: "=",
                        remoteUrlRequestWithCredentials: "@",
                        remoteUrlResponseFormatter: "=",
                        remoteUrlErrorCallback: "=",
                        remoteApiHandler: "=",
                        id: "@",
                        type: "@",
                        placeholder: "@",
                        remoteUrl: "@",
                        remoteUrlDataField: "@",
                        titleField: "@",
                        descriptionField: "@",
                        imageField: "@",
                        inputClass: "@",
                        pause: "@",
                        searchFields: "@",
                        minlength: "@",
                        matchClass: "@",
                        clearSelected: "@",
                        overrideSuggestions: "@",
                        fieldRequired: "=",
                        fieldRequiredClass: "@",
                        inputChanged: "=",
                        autoMatch: "@",
                        focusOut: "&",
                        focusIn: "&",
                        inputName: "@",
                        focusFirst: "@"
                    },
                    templateUrl: function(e, t) {
                        return t.templateUrl || x
                    },
                    compile: function(e) {
                        var t = a.startSymbol(),
                            n = a.endSymbol();
                        if ("{{" !== t || "}}" !== n) {
                            var r = e.html().replace(/\{\{/g, t).replace(/\}\}/g, n);
                            e.html(r)
                        }
                        return s
                    }
                }
            }])
        }),
        function() {
            function e(e, t) {
                if (e !== t) {
                    var n = null === e,
                        r = e === b,
                        i = e === e,
                        o = null === t,
                        a = t === b,
                        s = t === t;
                    if (e > t && !o || !i || n && !a && s || r && s) return 1;
                    if (t > e && !n || !s || o && !r && i || a && i) return -1
                }
                return 0
            }

            function t(e, t, n) {
                for (var r = e.length, i = n ? r : -1; n ? i-- : ++i < r;)
                    if (t(e[i], i, e)) return i;
                return -1
            }

            function n(e, t, n) {
                if (t !== t) return p(e, n);
                n -= 1;
                for (var r = e.length; ++n < r;)
                    if (e[n] === t) return n;
                return -1
            }

            function r(e) {
                return "function" == typeof e || !1
            }

            function i(e) {
                return null == e ? "" : e + ""
            }

            function o(e, t) {
                for (var n = -1, r = e.length; ++n < r && -1 < t.indexOf(e.charAt(n)););
                return n
            }

            function a(e, t) {
                for (var n = e.length; n-- && -1 < t.indexOf(e.charAt(n)););
                return n
            }

            function s(t, n) {
                return e(t.a, n.a) || t.b - n.b
            }

            function u(e) {
                return Mt[e]
            }

            function l(e) {
                return Nt[e]
            }

            function c(e, t, n) {
                return t ? e = qt[e] : n && (e = Ft[e]), "\\" + e
            }

            function f(e) {
                return "\\" + Ft[e]
            }

            function p(e, t, n) {
                var r = e.length;
                for (t += n ? 0 : -1; n ? t-- : ++t < r;) {
                    var i = e[t];
                    if (i !== i) return t
                }
                return -1
            }

            function h(e) {
                return !!e && "object" == typeof e
            }

            function d(e) {
                return 160 >= e && e >= 9 && 13 >= e || 32 == e || 160 == e || 5760 == e || 6158 == e || e >= 8192 && (8202 >= e || 8232 == e || 8233 == e || 8239 == e || 8287 == e || 12288 == e || 65279 == e)
            }

            function g(e, t) {
                for (var n = -1, r = e.length, i = -1, o = []; ++n < r;) e[n] === t && (e[n] = q, o[++i] = n);
                return o
            }

            function v(e) {
                for (var t = -1, n = e.length; ++t < n && d(e.charCodeAt(t)););
                return t
            }

            function m(e) {
                for (var t = e.length; t-- && d(e.charCodeAt(t)););
                return t
            }

            function $(e) {
                return Dt[e]
            }

            function y(d) {
                function Mt(e) {
                    if (h(e) && !(Aa(e) || e instanceof Vt)) {
                        if (e instanceof Dt) return e;
                        if (eo.call(e, "__chain__") && eo.call(e, "__wrapped__")) return Lr(e)
                    }
                    return new Dt(e)
                }

                function Nt() {}

                function Dt(e, t, n) {
                    this.__wrapped__ = e, this.__actions__ = n || [], this.__chain__ = !!t
                }

                function Vt(e) {
                    this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Ao, this.__views__ = []
                }

                function qt() {
                    this.__data__ = {}
                }

                function Ft(e) {
                    var t = e ? e.length : 0;
                    for (this.data = {
                            hash: mo(null),
                            set: new co
                        }; t--;) this.push(e[t])
                }

                function Ut(e, t) {
                    var n = e.data;
                    return ("string" == typeof t || vi(t) ? n.set.has(t) : n.hash[t]) ? 0 : -1
                }

                function Lt(e, t) {
                    var n = -1,
                        r = e.length;
                    for (t || (t = Fi(r)); ++n < r;) t[n] = e[n];
                    return t
                }

                function Ht(e, t) {
                    for (var n = -1, r = e.length; ++n < r && !1 !== t(e[n], n, e););
                    return e
                }

                function Bt(e, t) {
                    for (var n = -1, r = e.length; ++n < r;)
                        if (!t(e[n], n, e)) return !1;
                    return !0
                }

                function zt(e, t) {
                    for (var n = -1, r = e.length, i = -1, o = []; ++n < r;) {
                        var a = e[n];
                        t(a, n, e) && (o[++i] = a)
                    }
                    return o
                }

                function Gt(e, t) {
                    for (var n = -1, r = e.length, i = Fi(r); ++n < r;) i[n] = t(e[n], n, e);
                    return i
                }

                function Yt(e, t) {
                    for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
                    return e
                }

                function Jt(e, t, n, r) {
                    var i = -1,
                        o = e.length;
                    for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
                    return n
                }

                function Zt(e, t) {
                    for (var n = -1, r = e.length; ++n < r;)
                        if (t(e[n], n, e)) return !0;
                    return !1
                }

                function Xt(e, t, n, r) {
                    return e !== b && eo.call(r, n) ? e : t
                }

                function Qt(e, t, n) {
                    for (var r = -1, i = qa(t), o = i.length; ++r < o;) {
                        var a = i[r],
                            s = e[a],
                            u = n(s, t[a], a, e, t);
                        (u === u ? u === s : s !== s) && (s !== b || a in e) || (e[a] = u)
                    }
                    return e
                }

                function en(e, t) {
                    return null == t ? e : nn(t, qa(t), e)
                }

                function tn(e, t) {
                    for (var n = -1, r = null == e, i = !r && Rr(e), o = i ? e.length : 0, a = t.length, s = Fi(a); ++n < a;) {
                        var u = t[n];
                        s[n] = i ? Tr(u, o) ? e[u] : b : r ? b : e[u]
                    }
                    return s
                }

                function nn(e, t, n) {
                    n || (n = {});
                    for (var r = -1, i = t.length; ++r < i;) {
                        var o = t[r];
                        n[o] = e[o]
                    }
                    return n
                }

                function rn(e, t, n) {
                    var r = typeof e;
                    return "function" == r ? t === b ? e : Fn(e, t, n) : null == e ? Mi : "object" == r ? wn(e) : t === b ? qi(e) : xn(e, t)
                }

                function on(e, t, n, r, i, o, a) {
                    var s;
                    if (n && (s = i ? n(e, r, i) : n(e)), s !== b) return s;
                    if (!vi(e)) return e;
                    if (r = Aa(e)) {
                        if (s = kr(e), !t) return Lt(e, s)
                    } else {
                        var u = no.call(e),
                            l = u == z;
                        if (u != K && u != F && (!l || i)) return Pt[u] ? Er(e, u, t) : i ? e : {};
                        if (s = Cr(l ? {} : e), !t) return en(s, e)
                    }
                    for (o || (o = []), a || (a = []), i = o.length; i--;)
                        if (o[i] == e) return a[i];
                    return o.push(e), a.push(s), (r ? Ht : dn)(e, function(r, i) {
                        s[i] = on(r, t, n, i, e, o, a)
                    }), s
                }

                function an(e, t, n) {
                    if ("function" != typeof e) throw new Yi(V);
                    return fo(function() {
                        e.apply(b, n)
                    }, t)
                }

                function sn(e, t) {
                    var r = e ? e.length : 0,
                        i = [];
                    if (!r) return i;
                    var o = -1,
                        a = xr(),
                        s = a === n,
                        u = s && t.length >= M && mo && co ? new Ft(t) : null,
                        l = t.length;
                    u && (a = Ut, s = !1, t = u);
                    e: for (; ++o < r;)
                        if (u = e[o], s && u === u) {
                            for (var c = l; c--;)
                                if (t[c] === u) continue e;
                            i.push(u)
                        } else 0 > a(t, u, 0) && i.push(u);
                    return i
                }

                function un(e, t) {
                    var n = !0;
                    return Mo(e, function(e, r, i) {
                        return n = !!t(e, r, i)
                    }), n
                }

                function ln(e, t, n, r) {
                    var i = r,
                        o = i;
                    return Mo(e, function(e, a, s) {
                        a = +t(e, a, s), (n(a, i) || a === r && a === o) && (i = a, o = e)
                    }), o
                }

                function cn(e, t) {
                    var n = [];
                    return Mo(e, function(e, r, i) {
                        t(e, r, i) && n.push(e)
                    }), n
                }

                function fn(e, t, n, r) {
                    var i;
                    return n(e, function(e, n, o) {
                        return t(e, n, o) ? (i = r ? n : e, !1) : void 0
                    }), i
                }

                function pn(e, t, n, r) {
                    r || (r = []);
                    for (var i = -1, o = e.length; ++i < o;) {
                        var a = e[i];
                        h(a) && Rr(a) && (n || Aa(a) || pi(a)) ? t ? pn(a, t, n, r) : Yt(r, a) : n || (r[r.length] = a)
                    }
                    return r
                }

                function hn(e, t) {
                    Do(e, t, Ei)
                }

                function dn(e, t) {
                    return Do(e, t, qa)
                }

                function gn(e, t) {
                    return Vo(e, t, qa)
                }

                function vn(e, t) {
                    for (var n = -1, r = t.length, i = -1, o = []; ++n < r;) {
                        var a = t[n];
                        gi(e[a]) && (o[++i] = a)
                    }
                    return o
                }

                function mn(e, t, n) {
                    if (null != e) {
                        n !== b && n in Fr(e) && (t = [n]), n = 0;
                        for (var r = t.length; null != e && r > n;) e = e[t[n++]];
                        return n && n == r ? e : b
                    }
                }

                function $n(e, t, n, r, i, o) {
                    if (e === t) e = !0;
                    else if (null == e || null == t || !vi(e) && !h(t)) e = e !== e && t !== t;
                    else e: {
                        var a = $n,
                            s = Aa(e),
                            u = Aa(t),
                            l = U,
                            c = U;s || (l = no.call(e), l == F ? l = K : l != K && (s = xi(e))),
                        u || (c = no.call(t), c == F ? c = K : c != K && xi(t));
                        var f = l == K,
                            u = c == K,
                            c = l == c;
                        if (!c || s || f) {
                            if (!r && (l = f && eo.call(e, "__wrapped__"), u = u && eo.call(t, "__wrapped__"), l || u)) {
                                e = a(l ? e.value() : e, u ? t.value() : t, n, r, i, o);
                                break e
                            }
                            if (c) {
                                for (i || (i = []), o || (o = []), l = i.length; l--;)
                                    if (i[l] == e) {
                                        e = o[l] == t;
                                        break e
                                    } i.push(e), o.push(t), e = (s ? mr : yr)(e, t, a, n, r, i, o), i.pop(), o.pop()
                            } else e = !1
                        } else e = $r(e, t, l)
                    }
                    return e
                }

                function yn(e, t, n) {
                    var r = t.length,
                        i = r,
                        o = !n;
                    if (null == e) return !i;
                    for (e = Fr(e); r--;) {
                        var a = t[r];
                        if (o && a[2] ? a[1] !== e[a[0]] : !(a[0] in e)) return !1
                    }
                    for (; ++r < i;) {
                        var a = t[r],
                            s = a[0],
                            u = e[s],
                            l = a[1];
                        if (o && a[2]) {
                            if (u === b && !(s in e)) return !1
                        } else if (a = n ? n(u, l, s) : b, a === b ? !$n(l, u, n, !0) : !a) return !1
                    }
                    return !0
                }

                function bn(e, t) {
                    var n = -1,
                        r = Rr(e) ? Fi(e.length) : [];
                    return Mo(e, function(e, i, o) {
                        r[++n] = t(e, i, o)
                    }), r
                }

                function wn(e) {
                    var t = Sr(e);
                    if (1 == t.length && t[0][2]) {
                        var n = t[0][0],
                            r = t[0][1];
                        return function(e) {
                            return null == e ? !1 : e[n] === r && (r !== b || n in Fr(e))
                        }
                    }
                    return function(e) {
                        return yn(e, t)
                    }
                }

                function xn(e, t) {
                    var n = Aa(e),
                        r = jr(e) && t === t && !vi(t),
                        i = e + "";
                    return e = Ur(e),
                        function(o) {
                            if (null == o) return !1;
                            var a = i;
                            if (o = Fr(o), !(!n && r || a in o)) {
                                if (o = 1 == e.length ? o : mn(o, Rn(e, 0, -1)), null == o) return !1;
                                a = Kr(e), o = Fr(o)
                            }
                            return o[a] === t ? t !== b || a in o : $n(t, o[a], b, !0)
                        }
                }

                function Sn(e, t, n, r, i) {
                    if (!vi(e)) return e;
                    var o = Rr(t) && (Aa(t) || xi(t)),
                        a = o ? b : qa(t);
                    return Ht(a || t, function(s, u) {
                        if (a && (u = s, s = t[u]), h(s)) {
                            r || (r = []), i || (i = []);
                            e: {
                                for (var l = u, c = r, f = i, p = c.length, d = t[l]; p--;)
                                    if (c[p] == d) {
                                        e[l] = f[p];
                                        break e
                                    } var p = e[l],
                                    g = n ? n(p, d, l, e, t) : b,
                                    v = g === b;v && (g = d, Rr(d) && (Aa(d) || xi(d)) ? g = Aa(p) ? p : Rr(p) ? Lt(p) : [] : yi(d) || pi(d) ? g = pi(p) ? ki(p) : yi(p) ? p : {} : v = !1),
                                c.push(d),
                                f.push(g),
                                v ? e[l] = Sn(g, d, n, c, f) : (g === g ? g !== p : p === p) && (e[l] = g)
                            }
                        } else l = e[u], c = n ? n(l, s, u, e, t) : b, (f = c === b) && (c = s), c === b && (!o || u in e) || !f && (c === c ? c === l : l !== l) || (e[u] = c)
                    }), e
                }

                function _n(e) {
                    return function(t) {
                        return null == t ? b : t[e]
                    }
                }

                function kn(e) {
                    var t = e + "";
                    return e = Ur(e),
                        function(n) {
                            return mn(n, e, t)
                        }
                }

                function Cn(e, t) {
                    for (var n = e ? t.length : 0; n--;) {
                        var r = t[n];
                        if (r != i && Tr(r)) {
                            var i = r;
                            po.call(e, r, 1)
                        }
                    }
                }

                function En(e, t) {
                    return e + $o(Co() * (t - e + 1))
                }

                function An(e, t, n, r, i) {
                    return i(e, function(e, i, o) {
                        n = r ? (r = !1, e) : t(n, e, i, o)
                    }), n
                }

                function Rn(e, t, n) {
                    var r = -1,
                        i = e.length;
                    for (t = null == t ? 0 : +t || 0, 0 > t && (t = -t > i ? 0 : i + t), n = n === b || n > i ? i : +n || 0, 0 > n && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0, n = Fi(i); ++r < i;) n[r] = e[r + t];
                    return n
                }

                function Tn(e, t) {
                    var n;
                    return Mo(e, function(e, r, i) {
                        return n = t(e, r, i), !n
                    }), !!n
                }

                function On(e, t) {
                    var n = e.length;
                    for (e.sort(t); n--;) e[n] = e[n].c;
                    return e
                }

                function jn(t, n, r) {
                    var i = br(),
                        o = -1;
                    return n = Gt(n, function(e) {
                        return i(e)
                    }), t = bn(t, function(e) {
                        return {
                            a: Gt(n, function(t) {
                                return t(e)
                            }),
                            b: ++o,
                            c: e
                        }
                    }), On(t, function(t, n) {
                        var i;
                        e: {
                            for (var o = -1, a = t.a, s = n.a, u = a.length, l = r.length; ++o < u;)
                                if (i = e(a[o], s[o])) {
                                    if (o >= l) break e;
                                    o = r[o], i *= "asc" === o || !0 === o ? 1 : -1;
                                    break e
                                } i = t.b - n.b
                        }
                        return i
                    })
                }

                function In(e, t) {
                    var n = 0;
                    return Mo(e, function(e, r, i) {
                        n += +t(e, r, i) || 0
                    }), n
                }

                function Pn(e, t) {
                    var r = -1,
                        i = xr(),
                        o = e.length,
                        a = i === n,
                        s = a && o >= M,
                        u = s && mo && co ? new Ft(void 0) : null,
                        l = [];
                    u ? (i = Ut, a = !1) : (s = !1, u = t ? [] : l);
                    e: for (; ++r < o;) {
                        var c = e[r],
                            f = t ? t(c, r, e) : c;
                        if (a && c === c) {
                            for (var p = u.length; p--;)
                                if (u[p] === f) continue e;
                            t && u.push(f), l.push(c)
                        } else 0 > i(u, f, 0) && ((t || s) && u.push(f), l.push(c))
                    }
                    return l
                }

                function Mn(e, t) {
                    for (var n = -1, r = t.length, i = Fi(r); ++n < r;) i[n] = e[t[n]];
                    return i
                }

                function Nn(e, t, n, r) {
                    for (var i = e.length, o = r ? i : -1;
                        (r ? o-- : ++o < i) && t(e[o], o, e););
                    return n ? Rn(e, r ? 0 : o, r ? o + 1 : i) : Rn(e, r ? o + 1 : 0, r ? i : o)
                }

                function Dn(e, t) {
                    var n = e;
                    n instanceof Vt && (n = n.value());
                    for (var r = -1, i = t.length; ++r < i;) var o = t[r],
                        n = o.func.apply(o.thisArg, Yt([n], o.args));
                    return n
                }

                function Vn(e, t, n) {
                    var r = 0,
                        i = e ? e.length : r;
                    if ("number" == typeof t && t === t && To >= i) {
                        for (; i > r;) {
                            var o = r + i >>> 1,
                                a = e[o];
                            (n ? t >= a : t > a) && null !== a ? r = o + 1 : i = o
                        }
                        return i
                    }
                    return qn(e, t, Mi, n)
                }

                function qn(e, t, n, r) {
                    t = n(t);
                    for (var i = 0, o = e ? e.length : 0, a = t !== t, s = null === t, u = t === b; o > i;) {
                        var l = $o((i + o) / 2),
                            c = n(e[l]),
                            f = c !== b,
                            p = c === c;
                        (a ? p || r : s ? p && f && (r || null != c) : u ? p && (r || f) : null == c ? 0 : r ? t >= c : t > c) ? i = l + 1: o = l
                    }
                    return So(o, Ro)
                }

                function Fn(e, t, n) {
                    if ("function" != typeof e) return Mi;
                    if (t === b) return e;
                    switch (n) {
                        case 1:
                            return function(n) {
                                return e.call(t, n)
                            };
                        case 3:
                            return function(n, r, i) {
                                return e.call(t, n, r, i)
                            };
                        case 4:
                            return function(n, r, i, o) {
                                return e.call(t, n, r, i, o)
                            };
                        case 5:
                            return function(n, r, i, o, a) {
                                return e.call(t, n, r, i, o, a)
                            }
                    }
                    return function() {
                        return e.apply(t, arguments)
                    }
                }

                function Un(e) {
                    var t = new oo(e.byteLength);
                    return new ho(t).set(new ho(e)), t
                }

                function Ln(e, t, n) {
                    for (var r = n.length, i = -1, o = xo(e.length - r, 0), a = -1, s = t.length, u = Fi(s + o); ++a < s;) u[a] = t[a];
                    for (; ++i < r;) u[n[i]] = e[i];
                    for (; o--;) u[a++] = e[i++];
                    return u
                }

                function Hn(e, t, n) {
                    for (var r = -1, i = n.length, o = -1, a = xo(e.length - i, 0), s = -1, u = t.length, l = Fi(a + u); ++o < a;) l[o] = e[o];
                    for (a = o; ++s < u;) l[a + s] = t[s];
                    for (; ++r < i;) l[a + n[r]] = e[o++];
                    return l
                }

                function Bn(e, t) {
                    return function(n, r, i) {
                        var o = t ? t() : {};
                        if (r = br(r, i, 3), Aa(n)) {
                            i = -1;
                            for (var a = n.length; ++i < a;) {
                                var s = n[i];
                                e(o, s, r(s, i, n), n)
                            }
                        } else Mo(n, function(t, n, i) {
                            e(o, t, r(t, n, i), i)
                        });
                        return o
                    }
                }

                function zn(e) {
                    return ci(function(t, n) {
                        var r = -1,
                            i = null == t ? 0 : n.length,
                            o = i > 2 ? n[i - 2] : b,
                            a = i > 2 ? n[2] : b,
                            s = i > 1 ? n[i - 1] : b;
                        for ("function" == typeof o ? (o = Fn(o, s, 5), i -= 2) : (o = "function" == typeof s ? s : b, i -= o ? 1 : 0), a && Or(n[0], n[1], a) && (o = 3 > i ? b : o, i = 1); ++r < i;)(a = n[r]) && e(t, a, o);
                        return t
                    })
                }

                function Wn(e, t) {
                    return function(n, r) {
                        var i = n ? Uo(n) : 0;
                        if (!Pr(i)) return e(n, r);
                        for (var o = t ? i : -1, a = Fr(n);
                            (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
                        return n
                    }
                }

                function Kn(e) {
                    return function(t, n, r) {
                        var i = Fr(t);
                        r = r(t);
                        for (var o = r.length, a = e ? o : -1; e ? a-- : ++a < o;) {
                            var s = r[a];
                            if (!1 === n(i[s], s, i)) break
                        }
                        return t
                    }
                }

                function Gn(e, t) {
                    function n() {
                        return (this && this !== Wt && this instanceof n ? r : e).apply(t, arguments)
                    }
                    var r = Jn(e);
                    return n
                }

                function Yn(e) {
                    return function(t) {
                        var n = -1;
                        t = Ii(Ti(t));
                        for (var r = t.length, i = ""; ++n < r;) i = e(i, t[n], n);
                        return i
                    }
                }

                function Jn(e) {
                    return function() {
                        var t = arguments;
                        switch (t.length) {
                            case 0:
                                return new e;
                            case 1:
                                return new e(t[0]);
                            case 2:
                                return new e(t[0], t[1]);
                            case 3:
                                return new e(t[0], t[1], t[2]);
                            case 4:
                                return new e(t[0], t[1], t[2], t[3]);
                            case 5:
                                return new e(t[0], t[1], t[2], t[3], t[4]);
                            case 6:
                                return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
                            case 7:
                                return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
                        }
                        var n = Po(e.prototype),
                            t = e.apply(n, t);
                        return vi(t) ? t : n
                    }
                }

                function Zn(e) {
                    function t(n, r, i) {
                        return i && Or(n, r, i) && (r = b), n = vr(n, e, b, b, b, b, b, r), n.placeholder = t.placeholder, n
                    }
                    return t
                }

                function Xn(e, t) {
                    return ci(function(n) {
                        var r = n[0];
                        return null == r ? r : (n.push(t), e.apply(b, n))
                    })
                }

                function Qn(e, t) {
                    return function(n, r, i) {
                        if (i && Or(n, r, i) && (r = b), r = br(r, i, 3), 1 == r.length) {
                            i = n = Aa(n) ? n : qr(n);
                            for (var o = r, a = -1, s = i.length, u = t, l = u; ++a < s;) {
                                var c = i[a],
                                    f = +o(c);
                                e(f, u) && (u = f, l = c)
                            }
                            if (i = l, !n.length || i !== t) return i
                        }
                        return ln(n, r, e, t)
                    }
                }

                function er(e, n) {
                    return function(r, i, o) {
                        return i = br(i, o, 3), Aa(r) ? (i = t(r, i, n), i > -1 ? r[i] : b) : fn(r, i, e)
                    }
                }

                function tr(e) {
                    return function(n, r, i) {
                        return n && n.length ? (r = br(r, i, 3), t(n, r, e)) : -1
                    }
                }

                function nr(e) {
                    return function(t, n, r) {
                        return n = br(n, r, 3), fn(t, n, e, !0)
                    }
                }

                function rr(e) {
                    return function() {
                        for (var t, n = arguments.length, r = e ? n : -1, i = 0, o = Fi(n); e ? r-- : ++r < n;) {
                            var a = o[i++] = arguments[r];
                            if ("function" != typeof a) throw new Yi(V);
                            !t && Dt.prototype.thru && "wrapper" == wr(a) && (t = new Dt([], !0))
                        }
                        for (r = t ? -1 : n; ++r < n;) {
                            var a = o[r],
                                i = wr(a),
                                s = "wrapper" == i ? Fo(a) : b;
                            t = s && Ir(s[0]) && s[1] == (R | k | E | T) && !s[4].length && 1 == s[9] ? t[wr(s[0])].apply(t, s[3]) : 1 == a.length && Ir(a) ? t[i]() : t.thru(a)
                        }
                        return function() {
                            var e = arguments,
                                r = e[0];
                            if (t && 1 == e.length && Aa(r) && r.length >= M) return t.plant(r).value();
                            for (var i = 0, e = n ? o[i].apply(this, e) : r; ++i < n;) e = o[i].call(this, e);
                            return e
                        }
                    }
                }

                function ir(e, t) {
                    return function(n, r, i) {
                        return "function" == typeof r && i === b && Aa(n) ? e(n, r) : t(n, Fn(r, i, 3))
                    }
                }

                function or(e) {
                    return function(t, n, r) {
                        return ("function" != typeof n || r !== b) && (n = Fn(n, r, 3)), e(t, n, Ei)
                    }
                }

                function ar(e) {
                    return function(t, n, r) {
                        return ("function" != typeof n || r !== b) && (n = Fn(n, r, 3)), e(t, n)
                    }
                }

                function sr(e) {
                    return function(t, n, r) {
                        var i = {};
                        return n = br(n, r, 3), dn(t, function(t, r, o) {
                            o = n(t, r, o), r = e ? o : r, t = e ? t : o, i[r] = t
                        }), i
                    }
                }

                function ur(e) {
                    return function(t, n, r) {
                        return t = i(t), (e ? t : "") + pr(t, n, r) + (e ? "" : t)
                    }
                }

                function lr(e) {
                    var t = ci(function(n, r) {
                        var i = g(r, t.placeholder);
                        return vr(n, e, b, r, i)
                    });
                    return t
                }

                function cr(e, t) {
                    return function(n, r, i, o) {
                        var a = 3 > arguments.length;
                        return "function" == typeof r && o === b && Aa(n) ? e(n, r, i, a) : An(n, br(r, o, 4), i, a, t)
                    }
                }

                function fr(e, t, n, r, i, o, a, s, u, l) {
                    function c() {
                        for (var y = arguments.length, w = y, _ = Fi(y); w--;) _[w] = arguments[w];
                        if (r && (_ = Ln(_, r, i)), o && (_ = Hn(_, o, a)), d || m) {
                            var w = c.placeholder,
                                k = g(_, w),
                                y = y - k.length;
                            if (l > y) {
                                var C = s ? Lt(s) : b,
                                    y = xo(l - y, 0),
                                    R = d ? k : b,
                                    k = d ? b : k,
                                    T = d ? _ : b,
                                    _ = d ? b : _;
                                return t |= d ? E : A, t &= ~(d ? A : E), v || (t &= ~(x | S)), _ = [e, t, n, T, R, _, k, C, u, y], C = fr.apply(b, _), Ir(e) && Lo(C, _), C.placeholder = w, C
                            }
                        }
                        if (w = p ? n : this, C = h ? w[e] : e, s)
                            for (y = _.length, R = So(s.length, y), k = Lt(_); R--;) T = s[R], _[R] = Tr(T, y) ? k[T] : b;
                        return f && u < _.length && (_.length = u), this && this !== Wt && this instanceof c && (C = $ || Jn(e)), C.apply(w, _)
                    }
                    var f = t & R,
                        p = t & x,
                        h = t & S,
                        d = t & k,
                        v = t & _,
                        m = t & C,
                        $ = h ? b : Jn(e);
                    return c
                }

                function pr(e, t, n) {
                    return e = e.length, t = +t, t > e && bo(t) ? (t -= e, n = null == n ? " " : n + "", Oi(n, vo(t / n.length)).slice(0, t)) : ""
                }

                function hr(e, t, n, r) {
                    function i() {
                        for (var t = -1, s = arguments.length, u = -1, l = r.length, c = Fi(l + s); ++u < l;) c[u] = r[u];
                        for (; s--;) c[u++] = arguments[++t];
                        return (this && this !== Wt && this instanceof i ? a : e).apply(o ? n : this, c)
                    }
                    var o = t & x,
                        a = Jn(e);
                    return i
                }

                function dr(e) {
                    var t = Bi[e];
                    return function(e, n) {
                        return (n = n === b ? 0 : +n || 0) ? (n = uo(10, n), t(e * n) / n) : t(e)
                    }
                }

                function gr(e) {
                    return function(t, n, r, i) {
                        var o = br(r);
                        return null == r && o === rn ? Vn(t, n, e) : qn(t, n, o(r, i, 1), e)
                    }
                }

                function vr(e, t, n, r, i, o, a, s) {
                    var u = t & S;
                    if (!u && "function" != typeof e) throw new Yi(V);
                    var l = r ? r.length : 0;
                    if (l || (t &= ~(E | A), r = i = b), l -= i ? i.length : 0, t & A) {
                        var c = r,
                            f = i;
                        r = i = b
                    }
                    var p = u ? b : Fo(e);
                    return n = [e, t, n, r, i, c, f, o, a, s], p && (r = n[1], t = p[1], s = r | t, i = t == R && r == k || t == R && r == T && n[7].length <= p[8] || t == (R | T) && r == k, (R > s || i) && (t & x && (n[2] = p[2], s |= r & x ? 0 : _), (r = p[3]) && (i = n[3], n[3] = i ? Ln(i, r, p[4]) : Lt(r), n[4] = i ? g(n[3], q) : Lt(p[4])), (r = p[5]) && (i = n[5], n[5] = i ? Hn(i, r, p[6]) : Lt(r), n[6] = i ? g(n[5], q) : Lt(p[6])), (r = p[7]) && (n[7] = Lt(r)), t & R && (n[8] = null == n[8] ? p[8] : So(n[8], p[8])), null == n[9] && (n[9] = p[9]), n[0] = p[0], n[1] = s), t = n[1], s = n[9]), n[9] = null == s ? u ? 0 : e.length : xo(s - l, 0) || 0, (p ? qo : Lo)(t == x ? Gn(n[0], n[2]) : t != E && t != (x | E) || n[4].length ? fr.apply(b, n) : hr.apply(b, n), n)
                }

                function mr(e, t, n, r, i, o, a) {
                    var s = -1,
                        u = e.length,
                        l = t.length;
                    if (u != l && (!i || u >= l)) return !1;
                    for (; ++s < u;) {
                        var c = e[s],
                            l = t[s],
                            f = r ? r(i ? l : c, i ? c : l, s) : b;
                        if (f !== b) {
                            if (f) continue;
                            return !1
                        }
                        if (i) {
                            if (!Zt(t, function(e) {
                                    return c === e || n(c, e, r, i, o, a)
                                })) return !1
                        } else if (c !== l && !n(c, l, r, i, o, a)) return !1
                    }
                    return !0
                }

                function $r(e, t, n) {
                    switch (n) {
                        case L:
                        case H:
                            return +e == +t;
                        case B:
                            return e.name == t.name && e.message == t.message;
                        case W:
                            return e != +e ? t != +t : e == +t;
                        case G:
                        case Y:
                            return e == t + ""
                    }
                    return !1
                }

                function yr(e, t, n, r, i, o, a) {
                    var s = qa(e),
                        u = s.length,
                        l = qa(t).length;
                    if (u != l && !i) return !1;
                    for (l = u; l--;) {
                        var c = s[l];
                        if (!(i ? c in t : eo.call(t, c))) return !1
                    }
                    for (var f = i; ++l < u;) {
                        var c = s[l],
                            p = e[c],
                            h = t[c],
                            d = r ? r(i ? h : p, i ? p : h, c) : b;
                        if (d === b ? !n(p, h, r, i, o, a) : !d) return !1;
                        f || (f = "constructor" == c)
                    }
                    return f || (n = e.constructor, r = t.constructor, !(n != r && "constructor" in e && "constructor" in t) || "function" == typeof n && n instanceof n && "function" == typeof r && r instanceof r) ? !0 : !1
                }

                function br(e, t, n) {
                    var r = Mt.callback || Pi,
                        r = r === Pi ? rn : r;
                    return n ? r(e, t, n) : r
                }

                function wr(e) {
                    for (var t = e.name + "", n = Io[t], r = n ? n.length : 0; r--;) {
                        var i = n[r],
                            o = i.func;
                        if (null == o || o == e) return i.name
                    }
                    return t
                }

                function xr(e, t, r) {
                    var i = Mt.indexOf || Wr,
                        i = i === Wr ? n : i;
                    return e ? i(e, t, r) : i
                }

                function Sr(e) {
                    e = Ai(e);
                    for (var t = e.length; t--;) {
                        var n = e[t][1];
                        e[t][2] = n === n && !vi(n)
                    }
                    return e
                }

                function _r(e, t) {
                    var n = null == e ? b : e[t];
                    return mi(n) ? n : b
                }

                function kr(e) {
                    var t = e.length,
                        n = new e.constructor(t);
                    return t && "string" == typeof e[0] && eo.call(e, "index") && (n.index = e.index, n.input = e.input), n
                }

                function Cr(e) {
                    return e = e.constructor, "function" == typeof e && e instanceof e || (e = Wi), new e
                }

                function Er(e, t, n) {
                    var r = e.constructor;
                    switch (t) {
                        case J:
                            return Un(e);
                        case L:
                        case H:
                            return new r(+e);
                        case Z:
                        case X:
                        case Q:
                        case et:
                        case tt:
                        case nt:
                        case rt:
                        case it:
                        case ot:
                            return t = e.buffer, new r(n ? Un(t) : t, e.byteOffset, e.length);
                        case W:
                        case Y:
                            return new r(e);
                        case G:
                            var i = new r(e.source, _t.exec(e));
                            i.lastIndex = e.lastIndex
                    }
                    return i
                }

                function Ar(e, t, n) {
                    return null == e || jr(t, e) || (t = Ur(t), e = 1 == t.length ? e : mn(e, Rn(t, 0, -1)), t = Kr(t)), t = null == e ? e : e[t], null == t ? b : t.apply(e, n)
                }

                function Rr(e) {
                    return null != e && Pr(Uo(e))
                }

                function Tr(e, t) {
                    return e = "number" == typeof e || Et.test(e) ? +e : -1, t = null == t ? Oo : t, e > -1 && 0 == e % 1 && t > e
                }

                function Or(e, t, n) {
                    if (!vi(n)) return !1;
                    var r = typeof t;
                    return ("number" == r ? Rr(n) && Tr(t, n.length) : "string" == r && t in n) ? (t = n[t], e === e ? e === t : t !== t) : !1
                }

                function jr(e, t) {
                    var n = typeof e;
                    return "string" == n && mt.test(e) || "number" == n ? !0 : Aa(e) ? !1 : !vt.test(e) || null != t && e in Fr(t)
                }

                function Ir(e) {
                    var t = wr(e),
                        n = Mt[t];
                    return "function" == typeof n && t in Vt.prototype ? e === n ? !0 : (t = Fo(n), !!t && e === t[0]) : !1
                }

                function Pr(e) {
                    return "number" == typeof e && e > -1 && 0 == e % 1 && Oo >= e
                }

                function Mr(e, t) {
                    return e === b ? t : Ra(e, t, Mr)
                }

                function Nr(e, t) {
                    e = Fr(e);
                    for (var n = -1, r = t.length, i = {}; ++n < r;) {
                        var o = t[n];
                        o in e && (i[o] = e[o])
                    }
                    return i
                }

                function Dr(e, t) {
                    var n = {};
                    return hn(e, function(e, r, i) {
                        t(e, r, i) && (n[r] = e)
                    }), n
                }

                function Vr(e) {
                    for (var t = Ei(e), n = t.length, r = n && e.length, i = !!r && Pr(r) && (Aa(e) || pi(e)), o = -1, a = []; ++o < n;) {
                        var s = t[o];
                        (i && Tr(s, r) || eo.call(e, s)) && a.push(s)
                    }
                    return a
                }

                function qr(e) {
                    return null == e ? [] : Rr(e) ? vi(e) ? e : Wi(e) : Ri(e)
                }

                function Fr(e) {
                    return vi(e) ? e : Wi(e)
                }

                function Ur(e) {
                    if (Aa(e)) return e;
                    var t = [];
                    return i(e).replace($t, function(e, n, r, i) {
                        t.push(r ? i.replace(xt, "$1") : n || e)
                    }), t
                }

                function Lr(e) {
                    return e instanceof Vt ? e.clone() : new Dt(e.__wrapped__, e.__chain__, Lt(e.__actions__))
                }

                function Hr(e, t, n) {
                    return e && e.length ? ((n ? Or(e, t, n) : null == t) && (t = 1), Rn(e, 0 > t ? 0 : t)) : []
                }

                function Br(e, t, n) {
                    var r = e ? e.length : 0;
                    return r ? ((n ? Or(e, t, n) : null == t) && (t = 1), t = r - (+t || 0), Rn(e, 0, 0 > t ? 0 : t)) : []
                }

                function zr(e) {
                    return e ? e[0] : b
                }

                function Wr(e, t, r) {
                    var i = e ? e.length : 0;
                    if (!i) return -1;
                    if ("number" == typeof r) r = 0 > r ? xo(i + r, 0) : r;
                    else if (r) return r = Vn(e, t), i > r && (t === t ? t === e[r] : e[r] !== e[r]) ? r : -1;
                    return n(e, t, r || 0)
                }

                function Kr(e) {
                    var t = e ? e.length : 0;
                    return t ? e[t - 1] : b
                }

                function Gr(e) {
                    return Hr(e, 1)
                }

                function Yr(e, t, r, i) {
                    if (!e || !e.length) return [];
                    null != t && "boolean" != typeof t && (i = r, r = Or(e, t, i) ? b : t, t = !1);
                    var o = br();
                    if ((null != r || o !== rn) && (r = o(r, i, 3)), t && xr() === n) {
                        t = r;
                        var a;
                        r = -1, i = e.length;
                        for (var o = -1, s = []; ++r < i;) {
                            var u = e[r],
                                l = t ? t(u, r, e) : u;
                            r && a === l || (a = l, s[++o] = u)
                        }
                        e = s
                    } else e = Pn(e, r);
                    return e
                }

                function Jr(e) {
                    if (!e || !e.length) return [];
                    var t = -1,
                        n = 0;
                    e = zt(e, function(e) {
                        return Rr(e) ? (n = xo(e.length, n), !0) : void 0
                    });
                    for (var r = Fi(n); ++t < n;) r[t] = Gt(e, _n(t));
                    return r
                }

                function Zr(e, t, n) {
                    return e && e.length ? (e = Jr(e), null == t ? e : (t = Fn(t, n, 4), Gt(e, function(e) {
                        return Jt(e, t, b, !0)
                    }))) : []
                }

                function Xr(e, t) {
                    var n = -1,
                        r = e ? e.length : 0,
                        i = {};
                    for (!r || t || Aa(e[0]) || (t = []); ++n < r;) {
                        var o = e[n];
                        t ? i[o] = t[n] : o && (i[o[0]] = o[1])
                    }
                    return i
                }

                function Qr(e) {
                    return e = Mt(e), e.__chain__ = !0, e
                }

                function ei(e, t, n) {
                    return t.call(n, e)
                }

                function ti(e, t, n) {
                    var r = Aa(e) ? Bt : un;
                    return n && Or(e, t, n) && (t = b), ("function" != typeof t || n !== b) && (t = br(t, n, 3)), r(e, t)
                }

                function ni(e, t, n) {
                    var r = Aa(e) ? zt : cn;
                    return t = br(t, n, 3), r(e, t)
                }

                function ri(e, t, n, r) {
                    var i = e ? Uo(e) : 0;
                    return Pr(i) || (e = Ri(e), i = e.length), n = "number" != typeof n || r && Or(t, n, r) ? 0 : 0 > n ? xo(i + n, 0) : n || 0, "string" == typeof e || !Aa(e) && wi(e) ? i >= n && -1 < e.indexOf(t, n) : !!i && -1 < xr(e, t, n)
                }

                function ii(e, t, n) {
                    var r = Aa(e) ? Gt : bn;
                    return t = br(t, n, 3), r(e, t)
                }

                function oi(e, t, n) {
                    if (n ? Or(e, t, n) : null == t) {
                        e = qr(e);
                        var r = e.length;
                        return r > 0 ? e[En(0, r - 1)] : b
                    }
                    n = -1, e = _i(e);
                    var r = e.length,
                        i = r - 1;
                    for (t = So(0 > t ? 0 : +t || 0, r); ++n < t;) {
                        var r = En(n, i),
                            o = e[r];
                        e[r] = e[n], e[n] = o
                    }
                    return e.length = t, e
                }

                function ai(e, t, n) {
                    var r = Aa(e) ? Zt : Tn;
                    return n && Or(e, t, n) && (t = b), ("function" != typeof t || n !== b) && (t = br(t, n, 3)), r(e, t)
                }

                function si(e, t) {
                    var n;
                    if ("function" != typeof t) {
                        if ("function" != typeof e) throw new Yi(V);
                        var r = e;
                        e = t, t = r
                    }
                    return function() {
                        return 0 < --e && (n = t.apply(this, arguments)), 1 >= e && (t = b), n
                    }
                }

                function ui(e, t, n) {
                    function r(t, n) {
                        n && ao(n), u = p = h = b, t && (d = da(), l = e.apply(f, s), p || u || (s = f = b))
                    }

                    function i() {
                        var e = t - (da() - c);
                        0 >= e || e > t ? r(h, u) : p = fo(i, e)
                    }

                    function o() {
                        r(v, p)
                    }

                    function a() {
                        if (s = arguments, c = da(), f = this, h = v && (p || !m), !1 === g) var n = m && !p;
                        else {
                            u || m || (d = c);
                            var r = g - (c - d),
                                a = 0 >= r || r > g;
                            a ? (u && (u = ao(u)), d = c, l = e.apply(f, s)) : u || (u = fo(o, r))
                        }
                        return a && p ? p = ao(p) : p || t === g || (p = fo(i, t)), n && (a = !0, l = e.apply(f, s)), !a || p || u || (s = f = b), l
                    }
                    var s, u, l, c, f, p, h, d = 0,
                        g = !1,
                        v = !0;
                    if ("function" != typeof e) throw new Yi(V);
                    if (t = 0 > t ? 0 : +t || 0, !0 === n) var m = !0,
                        v = !1;
                    else vi(n) && (m = !!n.leading, g = "maxWait" in n && xo(+n.maxWait || 0, t), v = "trailing" in n ? !!n.trailing : v);
                    return a.cancel = function() {
                        p && ao(p), u && ao(u), d = 0, u = p = h = b
                    }, a
                }

                function li(e, t) {
                    function n() {
                        var r = arguments,
                            i = t ? t.apply(this, r) : r[0],
                            o = n.cache;
                        return o.has(i) ? o.get(i) : (r = e.apply(this, r), n.cache = o.set(i, r), r)
                    }
                    if ("function" != typeof e || t && "function" != typeof t) throw new Yi(V);
                    return n.cache = new li.Cache, n
                }

                function ci(e, t) {
                    if ("function" != typeof e) throw new Yi(V);
                    return t = xo(t === b ? e.length - 1 : +t || 0, 0),
                        function() {
                            for (var n = arguments, r = -1, i = xo(n.length - t, 0), o = Fi(i); ++r < i;) o[r] = n[t + r];
                            switch (t) {
                                case 0:
                                    return e.call(this, o);
                                case 1:
                                    return e.call(this, n[0], o);
                                case 2:
                                    return e.call(this, n[0], n[1], o)
                            }
                            for (i = Fi(t + 1), r = -1; ++r < t;) i[r] = n[r];
                            return i[t] = o, e.apply(this, i)
                        }
                }

                function fi(e, t) {
                    return e > t
                }

                function pi(e) {
                    return h(e) && Rr(e) && eo.call(e, "callee") && !lo.call(e, "callee")
                }

                function hi(e, t, n, r) {
                    return r = (n = "function" == typeof n ? Fn(n, r, 3) : b) ? n(e, t) : b, r === b ? $n(e, t, n) : !!r
                }

                function di(e) {
                    return h(e) && "string" == typeof e.message && no.call(e) == B
                }

                function gi(e) {
                    return vi(e) && no.call(e) == z
                }

                function vi(e) {
                    var t = typeof e;
                    return !!e && ("object" == t || "function" == t)
                }

                function mi(e) {
                    return null == e ? !1 : gi(e) ? io.test(Qi.call(e)) : h(e) && Ct.test(e)
                }

                function $i(e) {
                    return "number" == typeof e || h(e) && no.call(e) == W
                }

                function yi(e) {
                    var t;
                    if (!h(e) || no.call(e) != K || pi(e) || !(eo.call(e, "constructor") || (t = e.constructor, "function" != typeof t || t instanceof t))) return !1;
                    var n;
                    return hn(e, function(e, t) {
                        n = t
                    }), n === b || eo.call(e, n)
                }

                function bi(e) {
                    return vi(e) && no.call(e) == G
                }

                function wi(e) {
                    return "string" == typeof e || h(e) && no.call(e) == Y
                }

                function xi(e) {
                    return h(e) && Pr(e.length) && !!It[no.call(e)]
                }

                function Si(e, t) {
                    return t > e
                }

                function _i(e) {
                    var t = e ? Uo(e) : 0;
                    return Pr(t) ? t ? Lt(e) : [] : Ri(e)
                }

                function ki(e) {
                    return nn(e, Ei(e))
                }

                function Ci(e) {
                    return vn(e, Ei(e))
                }

                function Ei(e) {
                    if (null == e) return [];
                    vi(e) || (e = Wi(e));
                    for (var t = e.length, t = t && Pr(t) && (Aa(e) || pi(e)) && t || 0, n = e.constructor, r = -1, n = "function" == typeof n && n.prototype === e, i = Fi(t), o = t > 0; ++r < t;) i[r] = r + "";
                    for (var a in e) o && Tr(a, t) || "constructor" == a && (n || !eo.call(e, a)) || i.push(a);
                    return i
                }

                function Ai(e) {
                    e = Fr(e);
                    for (var t = -1, n = qa(e), r = n.length, i = Fi(r); ++t < r;) {
                        var o = n[t];
                        i[t] = [o, e[o]]
                    }
                    return i
                }

                function Ri(e) {
                    return Mn(e, qa(e))
                }

                function Ti(e) {
                    return (e = i(e)) && e.replace(At, u).replace(wt, "")
                }

                function Oi(e, t) {
                    var n = "";
                    if (e = i(e), t = +t, 1 > t || !e || !bo(t)) return n;
                    do t % 2 && (n += e), t = $o(t / 2), e += e; while (t);
                    return n
                }

                function ji(e, t, n) {
                    var r = e;
                    return (e = i(e)) ? (n ? Or(r, t, n) : null == t) ? e.slice(v(e), m(e) + 1) : (t += "", e.slice(o(e, t), a(e, t) + 1)) : e
                }

                function Ii(e, t, n) {
                    return n && Or(e, t, n) && (t = b), e = i(e), e.match(t || Ot) || []
                }

                function Pi(e, t, n) {
                    return n && Or(e, t, n) && (t = b), h(e) ? Ni(e) : rn(e, t)
                }

                function Mi(e) {
                    return e
                }

                function Ni(e) {
                    return wn(on(e, !0))
                }

                function Di(e, t, n) {
                    if (null == n) {
                        var r = vi(t),
                            i = r ? qa(t) : b;
                        ((i = i && i.length ? vn(t, i) : b) ? i.length : r) || (i = !1, n = t, t = e, e = this)
                    }
                    i || (i = vn(t, qa(t)));
                    var o = !0,
                        r = -1,
                        a = gi(e),
                        s = i.length;
                    !1 === n ? o = !1 : vi(n) && "chain" in n && (o = n.chain);
                    for (; ++r < s;) {
                        n = i[r];
                        var u = t[n];
                        e[n] = u, a && (e.prototype[n] = function(t) {
                            return function() {
                                var n = this.__chain__;
                                if (o || n) {
                                    var r = e(this.__wrapped__);
                                    return (r.__actions__ = Lt(this.__actions__)).push({
                                        func: t,
                                        args: arguments,
                                        thisArg: e
                                    }), r.__chain__ = n, r
                                }
                                return t.apply(e, Yt([this.value()], arguments))
                            }
                        }(u))
                    }
                    return e
                }

                function Vi() {}

                function qi(e) {
                    return jr(e) ? _n(e) : kn(e)
                }
                d = d ? Kt.defaults(Wt.Object(), d, Kt.pick(Wt, jt)) : Wt;
                var Fi = d.Array,
                    Ui = d.Date,
                    Li = d.Error,
                    Hi = d.Function,
                    Bi = d.Math,
                    zi = d.Number,
                    Wi = d.Object,
                    Ki = d.RegExp,
                    Gi = d.String,
                    Yi = d.TypeError,
                    Ji = Fi.prototype,
                    Zi = Wi.prototype,
                    Xi = Gi.prototype,
                    Qi = Hi.prototype.toString,
                    eo = Zi.hasOwnProperty,
                    to = 0,
                    no = Zi.toString,
                    ro = Wt._,
                    io = Ki("^" + Qi.call(eo).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
                    oo = d.ArrayBuffer,
                    ao = d.clearTimeout,
                    so = d.parseFloat,
                    uo = Bi.pow,
                    lo = Zi.propertyIsEnumerable,
                    co = _r(d, "Set"),
                    fo = d.setTimeout,
                    po = Ji.splice,
                    ho = d.Uint8Array,
                    go = _r(d, "WeakMap"),
                    vo = Bi.ceil,
                    mo = _r(Wi, "create"),
                    $o = Bi.floor,
                    yo = _r(Fi, "isArray"),
                    bo = d.isFinite,
                    wo = _r(Wi, "keys"),
                    xo = Bi.max,
                    So = Bi.min,
                    _o = _r(Ui, "now"),
                    ko = d.parseInt,
                    Co = Bi.random,
                    Eo = zi.NEGATIVE_INFINITY,
                    Ao = zi.POSITIVE_INFINITY,
                    Ro = 4294967294,
                    To = 2147483647,
                    Oo = 9007199254740991,
                    jo = go && new go,
                    Io = {};
                Mt.support = {}, Mt.templateSettings = {
                    escape: ht,
                    evaluate: dt,
                    interpolate: gt,
                    variable: "",
                    imports: {
                        _: Mt
                    }
                };
                var Po = function() {
                        function e() {}
                        return function(t) {
                            if (vi(t)) {
                                e.prototype = t;
                                var n = new e;
                                e.prototype = b
                            }
                            return n || {}
                        }
                    }(),
                    Mo = Wn(dn),
                    No = Wn(gn, !0),
                    Do = Kn(),
                    Vo = Kn(!0),
                    qo = jo ? function(e, t) {
                        return jo.set(e, t), e
                    } : Mi,
                    Fo = jo ? function(e) {
                        return jo.get(e)
                    } : Vi,
                    Uo = _n("length"),
                    Lo = function() {
                        var e = 0,
                            t = 0;
                        return function(n, r) {
                            var i = da(),
                                o = P - (i - t);
                            if (t = i, o > 0) {
                                if (++e >= I) return n
                            } else e = 0;
                            return qo(n, r)
                        }
                    }(),
                    Ho = ci(function(e, t) {
                        return h(e) && Rr(e) ? sn(e, pn(t, !1, !0)) : []
                    }),
                    Bo = tr(),
                    zo = tr(!0),
                    Wo = ci(function(e) {
                        for (var t = e.length, r = t, i = Fi(c), o = xr(), a = o === n, s = []; r--;) {
                            var u = e[r] = Rr(u = e[r]) ? u : [];
                            i[r] = a && 120 <= u.length && mo && co ? new Ft(r && u) : null
                        }
                        var a = e[0],
                            l = -1,
                            c = a ? a.length : 0,
                            f = i[0];
                        e: for (; ++l < c;)
                            if (u = a[l], 0 > (f ? Ut(f, u) : o(s, u, 0))) {
                                for (r = t; --r;) {
                                    var p = i[r];
                                    if (0 > (p ? Ut(p, u) : o(e[r], u, 0))) continue e
                                }
                                f && f.push(u), s.push(u)
                            }
                        return s
                    }),
                    Ko = ci(function(t, n) {
                        n = pn(n);
                        var r = tn(t, n);
                        return Cn(t, n.sort(e)), r
                    }),
                    Go = gr(),
                    Yo = gr(!0),
                    Jo = ci(function(e) {
                        return Pn(pn(e, !1, !0))
                    }),
                    Zo = ci(function(e, t) {
                        return Rr(e) ? sn(e, t) : []
                    }),
                    Xo = ci(Jr),
                    Qo = ci(function(e) {
                        var t = e.length,
                            n = t > 2 ? e[t - 2] : b,
                            r = t > 1 ? e[t - 1] : b;
                        return t > 2 && "function" == typeof n ? t -= 2 : (n = t > 1 && "function" == typeof r ? (--t, r) : b, r = b), e.length = t, Zr(e, n, r)
                    }),
                    ea = ci(function(e) {
                        return e = pn(e), this.thru(function(t) {
                            t = Aa(t) ? t : [Fr(t)];
                            for (var n = e, r = -1, i = t.length, o = -1, a = n.length, s = Fi(i + a); ++r < i;) s[r] = t[r];
                            for (; ++o < a;) s[r++] = n[o];
                            return s
                        })
                    }),
                    ta = ci(function(e, t) {
                        return tn(e, pn(t))
                    }),
                    na = Bn(function(e, t, n) {
                        eo.call(e, n) ? ++e[n] : e[n] = 1
                    }),
                    ra = er(Mo),
                    ia = er(No, !0),
                    oa = ir(Ht, Mo),
                    aa = ir(function(e, t) {
                        for (var n = e.length; n-- && !1 !== t(e[n], n, e););
                        return e
                    }, No),
                    sa = Bn(function(e, t, n) {
                        eo.call(e, n) ? e[n].push(t) : e[n] = [t]
                    }),
                    ua = Bn(function(e, t, n) {
                        e[n] = t
                    }),
                    la = ci(function(e, t, n) {
                        var r = -1,
                            i = "function" == typeof t,
                            o = jr(t),
                            a = Rr(e) ? Fi(e.length) : [];
                        return Mo(e, function(e) {
                            var s = i ? t : o && null != e ? e[t] : b;
                            a[++r] = s ? s.apply(e, n) : Ar(e, t, n)
                        }), a
                    }),
                    ca = Bn(function(e, t, n) {
                        e[n ? 0 : 1].push(t)
                    }, function() {
                        return [
                            [],
                            []
                        ]
                    }),
                    fa = cr(Jt, Mo),
                    pa = cr(function(e, t, n, r) {
                        var i = e.length;
                        for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
                        return n
                    }, No),
                    ha = ci(function(e, t) {
                        if (null == e) return [];
                        var n = t[2];
                        return n && Or(t[0], t[1], n) && (t.length = 1), jn(e, pn(t), [])
                    }),
                    da = _o || function() {
                        return (new Ui).getTime()
                    },
                    ga = ci(function(e, t, n) {
                        var r = x;
                        if (n.length) var i = g(n, ga.placeholder),
                            r = r | E;
                        return vr(e, r, t, n, i)
                    }),
                    va = ci(function(e, t) {
                        t = t.length ? pn(t) : Ci(e);
                        for (var n = -1, r = t.length; ++n < r;) {
                            var i = t[n];
                            e[i] = vr(e[i], x, e)
                        }
                        return e
                    }),
                    ma = ci(function(e, t, n) {
                        var r = x | S;
                        if (n.length) var i = g(n, ma.placeholder),
                            r = r | E;
                        return vr(t, r, e, n, i)
                    }),
                    $a = Zn(k),
                    ya = Zn(C),
                    ba = ci(function(e, t) {
                        return an(e, 1, t)
                    }),
                    wa = ci(function(e, t, n) {
                        return an(e, t, n)
                    }),
                    xa = rr(),
                    Sa = rr(!0),
                    _a = ci(function(e, t) {
                        if (t = pn(t), "function" != typeof e || !Bt(t, r)) throw new Yi(V);
                        var n = t.length;
                        return ci(function(r) {
                            for (var i = So(r.length, n); i--;) r[i] = t[i](r[i]);
                            return e.apply(this, r)
                        })
                    }),
                    ka = lr(E),
                    Ca = lr(A),
                    Ea = ci(function(e, t) {
                        return vr(e, T, b, b, b, pn(t))
                    }),
                    Aa = yo || function(e) {
                        return h(e) && Pr(e.length) && no.call(e) == U
                    },
                    Ra = zn(Sn),
                    Ta = zn(function(e, t, n) {
                        return n ? Qt(e, t, n) : en(e, t)
                    }),
                    Oa = Xn(Ta, function(e, t) {
                        return e === b ? t : e
                    }),
                    ja = Xn(Ra, Mr),
                    Ia = nr(dn),
                    Pa = nr(gn),
                    Ma = or(Do),
                    Na = or(Vo),
                    Da = ar(dn),
                    Va = ar(gn),
                    qa = wo ? function(e) {
                        var t = null == e ? b : e.constructor;
                        return "function" == typeof t && t.prototype === e || "function" != typeof e && Rr(e) ? Vr(e) : vi(e) ? wo(e) : []
                    } : Vr,
                    Fa = sr(!0),
                    Ua = sr(),
                    La = ci(function(e, t) {
                        if (null == e) return {};
                        if ("function" != typeof t[0]) return t = Gt(pn(t), Gi), Nr(e, sn(Ei(e), t));
                        var n = Fn(t[0], t[1], 3);
                        return Dr(e, function(e, t, r) {
                            return !n(e, t, r)
                        })
                    }),
                    Ha = ci(function(e, t) {
                        return null == e ? {} : "function" == typeof t[0] ? Dr(e, Fn(t[0], t[1], 3)) : Nr(e, pn(t))
                    }),
                    Ba = Yn(function(e, t, n) {
                        return t = t.toLowerCase(), e + (n ? t.charAt(0).toUpperCase() + t.slice(1) : t)
                    }),
                    za = Yn(function(e, t, n) {
                        return e + (n ? "-" : "") + t.toLowerCase()
                    }),
                    Wa = ur(),
                    Ka = ur(!0),
                    Ga = Yn(function(e, t, n) {
                        return e + (n ? "_" : "") + t.toLowerCase()
                    }),
                    Ya = Yn(function(e, t, n) {
                        return e + (n ? " " : "") + (t.charAt(0).toUpperCase() + t.slice(1))
                    }),
                    Ja = ci(function(e, t) {
                        try {
                            return e.apply(b, t)
                        } catch (n) {
                            return di(n) ? n : new Li(n)
                        }
                    }),
                    Za = ci(function(e, t) {
                        return function(n) {
                            return Ar(n, e, t)
                        }
                    }),
                    Xa = ci(function(e, t) {
                        return function(n) {
                            return Ar(e, n, t)
                        }
                    }),
                    Qa = dr("ceil"),
                    es = dr("floor"),
                    ts = Qn(fi, Eo),
                    ns = Qn(Si, Ao),
                    rs = dr("round");
                return Mt.prototype = Nt.prototype, Dt.prototype = Po(Nt.prototype), Dt.prototype.constructor = Dt, Vt.prototype = Po(Nt.prototype), Vt.prototype.constructor = Vt, qt.prototype["delete"] = function(e) {
                    return this.has(e) && delete this.__data__[e]
                }, qt.prototype.get = function(e) {
                    return "__proto__" == e ? b : this.__data__[e]
                }, qt.prototype.has = function(e) {
                    return "__proto__" != e && eo.call(this.__data__, e)
                }, qt.prototype.set = function(e, t) {
                    return "__proto__" != e && (this.__data__[e] = t), this
                }, Ft.prototype.push = function(e) {
                    var t = this.data;
                    "string" == typeof e || vi(e) ? t.set.add(e) : t.hash[e] = !0
                }, li.Cache = qt, Mt.after = function(e, t) {
                    if ("function" != typeof t) {
                        if ("function" != typeof e) throw new Yi(V);
                        var n = e;
                        e = t, t = n
                    }
                    return e = bo(e = +e) ? e : 0,
                        function() {
                            return 1 > --e ? t.apply(this, arguments) : void 0
                        }
                }, Mt.ary = function(e, t, n) {
                    return n && Or(e, t, n) && (t = b), t = e && null == t ? e.length : xo(+t || 0, 0), vr(e, R, b, b, b, b, t)
                }, Mt.assign = Ta, Mt.at = ta, Mt.before = si, Mt.bind = ga, Mt.bindAll = va, Mt.bindKey = ma, Mt.callback = Pi, Mt.chain = Qr, Mt.chunk = function(e, t, n) {
                    t = (n ? Or(e, t, n) : null == t) ? 1 : xo($o(t) || 1, 1), n = 0;
                    for (var r = e ? e.length : 0, i = -1, o = Fi(vo(r / t)); r > n;) o[++i] = Rn(e, n, n += t);
                    return o
                }, Mt.compact = function(e) {
                    for (var t = -1, n = e ? e.length : 0, r = -1, i = []; ++t < n;) {
                        var o = e[t];
                        o && (i[++r] = o)
                    }
                    return i
                }, Mt.constant = function(e) {
                    return function() {
                        return e
                    }
                }, Mt.countBy = na, Mt.create = function(e, t, n) {
                    var r = Po(e);
                    return n && Or(e, t, n) && (t = b), t ? en(r, t) : r
                }, Mt.curry = $a, Mt.curryRight = ya, Mt.debounce = ui, Mt.defaults = Oa, Mt.defaultsDeep = ja, Mt.defer = ba, Mt.delay = wa, Mt.difference = Ho, Mt.drop = Hr, Mt.dropRight = Br, Mt.dropRightWhile = function(e, t, n) {
                    return e && e.length ? Nn(e, br(t, n, 3), !0, !0) : []
                }, Mt.dropWhile = function(e, t, n) {
                    return e && e.length ? Nn(e, br(t, n, 3), !0) : []
                }, Mt.fill = function(e, t, n, r) {
                    var i = e ? e.length : 0;
                    if (!i) return [];
                    for (n && "number" != typeof n && Or(e, t, n) && (n = 0, r = i), i = e.length, n = null == n ? 0 : +n || 0, 0 > n && (n = -n > i ? 0 : i + n), r = r === b || r > i ? i : +r || 0, 0 > r && (r += i), i = n > r ? 0 : r >>> 0, n >>>= 0; i > n;) e[n++] = t;
                    return e
                }, Mt.filter = ni, Mt.flatten = function(e, t, n) {
                    var r = e ? e.length : 0;
                    return n && Or(e, t, n) && (t = !1), r ? pn(e, t) : []
                }, Mt.flattenDeep = function(e) {
                    return e && e.length ? pn(e, !0) : []
                }, Mt.flow = xa, Mt.flowRight = Sa, Mt.forEach = oa, Mt.forEachRight = aa, Mt.forIn = Ma, Mt.forInRight = Na, Mt.forOwn = Da, Mt.forOwnRight = Va, Mt.functions = Ci, Mt.groupBy = sa, Mt.indexBy = ua, Mt.initial = function(e) {
                    return Br(e, 1)
                }, Mt.intersection = Wo, Mt.invert = function(e, t, n) {
                    n && Or(e, t, n) && (t = b), n = -1;
                    for (var r = qa(e), i = r.length, o = {}; ++n < i;) {
                        var a = r[n],
                            s = e[a];
                        t ? eo.call(o, s) ? o[s].push(a) : o[s] = [a] : o[s] = a
                    }
                    return o
                }, Mt.invoke = la, Mt.keys = qa, Mt.keysIn = Ei, Mt.map = ii, Mt.mapKeys = Fa, Mt.mapValues = Ua, Mt.matches = Ni, Mt.matchesProperty = function(e, t) {
                    return xn(e, on(t, !0))
                }, Mt.memoize = li, Mt.merge = Ra, Mt.method = Za, Mt.methodOf = Xa, Mt.mixin = Di, Mt.modArgs = _a, Mt.negate = function(e) {
                    if ("function" != typeof e) throw new Yi(V);
                    return function() {
                        return !e.apply(this, arguments)
                    }
                }, Mt.omit = La, Mt.once = function(e) {
                    return si(2, e)
                }, Mt.pairs = Ai, Mt.partial = ka, Mt.partialRight = Ca, Mt.partition = ca, Mt.pick = Ha, Mt.pluck = function(e, t) {
                    return ii(e, qi(t))
                }, Mt.property = qi, Mt.propertyOf = function(e) {
                    return function(t) {
                        return mn(e, Ur(t), t + "")
                    }
                }, Mt.pull = function() {
                    var e = arguments,
                        t = e[0];
                    if (!t || !t.length) return t;
                    for (var n = 0, r = xr(), i = e.length; ++n < i;)
                        for (var o = 0, a = e[n]; - 1 < (o = r(t, a, o));) po.call(t, o, 1);
                    return t
                }, Mt.pullAt = Ko, Mt.range = function(e, t, n) {
                    n && Or(e, t, n) && (t = n = b), e = +e || 0, n = null == n ? 1 : +n || 0, null == t ? (t = e, e = 0) : t = +t || 0;
                    var r = -1;
                    t = xo(vo((t - e) / (n || 1)), 0);
                    for (var i = Fi(t); ++r < t;) i[r] = e, e += n;
                    return i
                }, Mt.rearg = Ea, Mt.reject = function(e, t, n) {
                    var r = Aa(e) ? zt : cn;
                    return t = br(t, n, 3), r(e, function(e, n, r) {
                        return !t(e, n, r)
                    })
                }, Mt.remove = function(e, t, n) {
                    var r = [];
                    if (!e || !e.length) return r;
                    var i = -1,
                        o = [],
                        a = e.length;
                    for (t = br(t, n, 3); ++i < a;) n = e[i], t(n, i, e) && (r.push(n), o.push(i));
                    return Cn(e, o), r
                }, Mt.rest = Gr, Mt.restParam = ci, Mt.set = function(e, t, n) {
                    if (null == e) return e;
                    var r = t + "";
                    t = null != e[r] || jr(t, e) ? [r] : Ur(t);
                    for (var r = -1, i = t.length, o = i - 1, a = e; null != a && ++r < i;) {
                        var s = t[r];
                        vi(a) && (r == o ? a[s] = n : null == a[s] && (a[s] = Tr(t[r + 1]) ? [] : {})), a = a[s]
                    }
                    return e
                }, Mt.shuffle = function(e) {
                    return oi(e, Ao)
                }, Mt.slice = function(e, t, n) {
                    var r = e ? e.length : 0;
                    return r ? (n && "number" != typeof n && Or(e, t, n) && (t = 0, n = r), Rn(e, t, n)) : []
                }, Mt.sortBy = function(e, t, n) {
                    if (null == e) return [];
                    n && Or(e, t, n) && (t = b);
                    var r = -1;
                    return t = br(t, n, 3), e = bn(e, function(e, n, i) {
                        return {
                            a: t(e, n, i),
                            b: ++r,
                            c: e
                        }
                    }), On(e, s)
                }, Mt.sortByAll = ha, Mt.sortByOrder = function(e, t, n, r) {
                    return null == e ? [] : (r && Or(t, n, r) && (n = b), Aa(t) || (t = null == t ? [] : [t]), Aa(n) || (n = null == n ? [] : [n]), jn(e, t, n))
                }, Mt.spread = function(e) {
                    if ("function" != typeof e) throw new Yi(V);
                    return function(t) {
                        return e.apply(this, t)
                    }
                }, Mt.take = function(e, t, n) {
                    return e && e.length ? ((n ? Or(e, t, n) : null == t) && (t = 1), Rn(e, 0, 0 > t ? 0 : t)) : []
                }, Mt.takeRight = function(e, t, n) {
                    var r = e ? e.length : 0;
                    return r ? ((n ? Or(e, t, n) : null == t) && (t = 1), t = r - (+t || 0), Rn(e, 0 > t ? 0 : t)) : []
                }, Mt.takeRightWhile = function(e, t, n) {
                    return e && e.length ? Nn(e, br(t, n, 3), !1, !0) : []
                }, Mt.takeWhile = function(e, t, n) {
                    return e && e.length ? Nn(e, br(t, n, 3)) : []
                }, Mt.tap = function(e, t, n) {
                    return t.call(n, e), e
                }, Mt.throttle = function(e, t, n) {
                    var r = !0,
                        i = !0;
                    if ("function" != typeof e) throw new Yi(V);
                    return !1 === n ? r = !1 : vi(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), ui(e, t, {
                        leading: r,
                        maxWait: +t,
                        trailing: i
                    })
                }, Mt.thru = ei, Mt.times = function(e, t, n) {
                    if (e = $o(e), 1 > e || !bo(e)) return [];
                    var r = -1,
                        i = Fi(So(e, 4294967295));
                    for (t = Fn(t, n, 1); ++r < e;) 4294967295 > r ? i[r] = t(r) : t(r);
                    return i
                }, Mt.toArray = _i, Mt.toPlainObject = ki, Mt.transform = function(e, t, n, r) {
                    var i = Aa(e) || xi(e);
                    return t = br(t, r, 4), null == n && (i || vi(e) ? (r = e.constructor, n = i ? Aa(e) ? new r : [] : Po(gi(r) ? r.prototype : b)) : n = {}), (i ? Ht : dn)(e, function(e, r, i) {
                        return t(n, e, r, i)
                    }), n
                }, Mt.union = Jo, Mt.uniq = Yr, Mt.unzip = Jr, Mt.unzipWith = Zr, Mt.values = Ri, Mt.valuesIn = function(e) {
                    return Mn(e, Ei(e))
                }, Mt.where = function(e, t) {
                    return ni(e, wn(t))
                }, Mt.without = Zo, Mt.wrap = function(e, t) {
                    return t = null == t ? Mi : t, vr(t, E, b, [e], [])
                }, Mt.xor = function() {
                    for (var e = -1, t = arguments.length; ++e < t;) {
                        var n = arguments[e];
                        if (Rr(n)) var r = r ? Yt(sn(r, n), sn(n, r)) : n
                    }
                    return r ? Pn(r) : []
                }, Mt.zip = Xo, Mt.zipObject = Xr, Mt.zipWith = Qo, Mt.backflow = Sa, Mt.collect = ii, Mt.compose = Sa, Mt.each = oa, Mt.eachRight = aa, Mt.extend = Ta, Mt.iteratee = Pi, Mt.methods = Ci, Mt.object = Xr, Mt.select = ni, Mt.tail = Gr, Mt.unique = Yr, Di(Mt, Mt), Mt.add = function(e, t) {
                    return (+e || 0) + (+t || 0)
                }, Mt.attempt = Ja, Mt.camelCase = Ba, Mt.capitalize = function(e) {
                    return (e = i(e)) && e.charAt(0).toUpperCase() + e.slice(1)
                }, Mt.ceil = Qa, Mt.clone = function(e, t, n, r) {
                    return t && "boolean" != typeof t && Or(e, t, n) ? t = !1 : "function" == typeof t && (r = n, n = t, t = !1), "function" == typeof n ? on(e, t, Fn(n, r, 3)) : on(e, t)
                }, Mt.cloneDeep = function(e, t, n) {
                    return "function" == typeof t ? on(e, !0, Fn(t, n, 3)) : on(e, !0)
                }, Mt.deburr = Ti, Mt.endsWith = function(e, t, n) {
                    e = i(e), t += "";
                    var r = e.length;
                    return n = n === b ? r : So(0 > n ? 0 : +n || 0, r), n -= t.length, n >= 0 && e.indexOf(t, n) == n
                }, Mt.escape = function(e) {
                    return (e = i(e)) && pt.test(e) ? e.replace(ct, l) : e
                }, Mt.escapeRegExp = function(e) {
                    return (e = i(e)) && bt.test(e) ? e.replace(yt, c) : e || "(?:)"
                }, Mt.every = ti, Mt.find = ra, Mt.findIndex = Bo, Mt.findKey = Ia, Mt.findLast = ia, Mt.findLastIndex = zo, Mt.findLastKey = Pa, Mt.findWhere = function(e, t) {
                    return ra(e, wn(t))
                }, Mt.first = zr, Mt.floor = es, Mt.get = function(e, t, n) {
                    return e = null == e ? b : mn(e, Ur(t), t + ""), e === b ? n : e
                }, Mt.gt = fi, Mt.gte = function(e, t) {
                    return e >= t
                }, Mt.has = function(e, t) {
                    if (null == e) return !1;
                    var n = eo.call(e, t);
                    if (!n && !jr(t)) {
                        if (t = Ur(t), e = 1 == t.length ? e : mn(e, Rn(t, 0, -1)), null == e) return !1;
                        t = Kr(t), n = eo.call(e, t)
                    }
                    return n || Pr(e.length) && Tr(t, e.length) && (Aa(e) || pi(e))
                }, Mt.identity = Mi, Mt.includes = ri, Mt.indexOf = Wr, Mt.inRange = function(e, t, n) {
                    return t = +t || 0, n === b ? (n = t, t = 0) : n = +n || 0, e >= So(t, n) && e < xo(t, n)
                }, Mt.isArguments = pi, Mt.isArray = Aa, Mt.isBoolean = function(e) {
                    return !0 === e || !1 === e || h(e) && no.call(e) == L
                }, Mt.isDate = function(e) {
                    return h(e) && no.call(e) == H
                }, Mt.isElement = function(e) {
                    return !!e && 1 === e.nodeType && h(e) && !yi(e)
                }, Mt.isEmpty = function(e) {
                    return null == e ? !0 : Rr(e) && (Aa(e) || wi(e) || pi(e) || h(e) && gi(e.splice)) ? !e.length : !qa(e).length
                }, Mt.isEqual = hi, Mt.isError = di, Mt.isFinite = function(e) {
                    return "number" == typeof e && bo(e)
                }, Mt.isFunction = gi, Mt.isMatch = function(e, t, n, r) {
                    return n = "function" == typeof n ? Fn(n, r, 3) : b, yn(e, Sr(t), n)
                }, Mt.isNaN = function(e) {
                    return $i(e) && e != +e
                }, Mt.isNative = mi, Mt.isNull = function(e) {
                    return null === e
                }, Mt.isNumber = $i, Mt.isObject = vi, Mt.isPlainObject = yi, Mt.isRegExp = bi, Mt.isString = wi, Mt.isTypedArray = xi, Mt.isUndefined = function(e) {
                    return e === b
                }, Mt.kebabCase = za, Mt.last = Kr, Mt.lastIndexOf = function(e, t, n) {
                    var r = e ? e.length : 0;
                    if (!r) return -1;
                    var i = r;
                    if ("number" == typeof n) i = (0 > n ? xo(r + n, 0) : So(n || 0, r - 1)) + 1;
                    else if (n) return i = Vn(e, t, !0) - 1, e = e[i], (t === t ? t === e : e !== e) ? i : -1;
                    if (t !== t) return p(e, i, !0);
                    for (; i--;)
                        if (e[i] === t) return i;
                    return -1
                }, Mt.lt = Si, Mt.lte = function(e, t) {
                    return t >= e
                }, Mt.max = ts, Mt.min = ns, Mt.noConflict = function() {
                    return Wt._ = ro, this
                }, Mt.noop = Vi, Mt.now = da, Mt.pad = function(e, t, n) {
                    e = i(e), t = +t;
                    var r = e.length;
                    return t > r && bo(t) ? (r = (t - r) / 2, t = $o(r), r = vo(r), n = pr("", r, n), n.slice(0, t) + e + n) : e
                }, Mt.padLeft = Wa, Mt.padRight = Ka, Mt.parseInt = function(e, t, n) {
                    return (n ? Or(e, t, n) : null == t) ? t = 0 : t && (t = +t), e = ji(e), ko(e, t || (kt.test(e) ? 16 : 10))
                }, Mt.random = function(e, t, n) {
                    n && Or(e, t, n) && (t = n = b);
                    var r = null == e,
                        i = null == t;
                    return null == n && (i && "boolean" == typeof e ? (n = e, e = 1) : "boolean" == typeof t && (n = t, i = !0)), r && i && (t = 1, i = !1), e = +e || 0, i ? (t = e, e = 0) : t = +t || 0, n || e % 1 || t % 1 ? (n = Co(), So(e + n * (t - e + so("1e-" + ((n + "").length - 1))), t)) : En(e, t)
                }, Mt.reduce = fa, Mt.reduceRight = pa, Mt.repeat = Oi, Mt.result = function(e, t, n) {
                    var r = null == e ? b : e[t];
                    return r === b && (null == e || jr(t, e) || (t = Ur(t), e = 1 == t.length ? e : mn(e, Rn(t, 0, -1)), r = null == e ? b : e[Kr(t)]), r = r === b ? n : r), gi(r) ? r.call(e) : r
                }, Mt.round = rs, Mt.runInContext = y, Mt.size = function(e) {
                    var t = e ? Uo(e) : 0;
                    return Pr(t) ? t : qa(e).length
                }, Mt.snakeCase = Ga, Mt.some = ai, Mt.sortedIndex = Go, Mt.sortedLastIndex = Yo, Mt.startCase = Ya, Mt.startsWith = function(e, t, n) {
                    return e = i(e), n = null == n ? 0 : So(0 > n ? 0 : +n || 0, e.length), e.lastIndexOf(t, n) == n
                }, Mt.sum = function(e, t, n) {
                    if (n && Or(e, t, n) && (t = b), t = br(t, n, 3), 1 == t.length) {
                        e = Aa(e) ? e : qr(e), n = e.length;
                        for (var r = 0; n--;) r += +t(e[n]) || 0;
                        e = r
                    } else e = In(e, t);
                    return e
                }, Mt.template = function(e, t, n) {
                    var r = Mt.templateSettings;
                    n && Or(e, t, n) && (t = n = b), e = i(e), t = Qt(en({}, n || t), r, Xt), n = Qt(en({}, t.imports), r.imports, Xt);
                    var o, a, s = qa(n),
                        u = Mn(n, s),
                        l = 0;
                    n = t.interpolate || Rt;
                    var c = "__p+='";
                    n = Ki((t.escape || Rt).source + "|" + n.source + "|" + (n === gt ? St : Rt).source + "|" + (t.evaluate || Rt).source + "|$", "g");
                    var p = "sourceURL" in t ? "//# sourceURL=" + t.sourceURL + "\n" : "";
                    if (e.replace(n, function(t, n, r, i, s, u) {
                            return r || (r = i), c += e.slice(l, u).replace(Tt, f), n && (o = !0, c += "'+__e(" + n + ")+'"), s && (a = !0, c += "';" + s + ";\n__p+='"), r && (c += "'+((__t=(" + r + "))==null?'':__t)+'"), l = u + t.length, t
                        }), c += "';", (t = t.variable) || (c = "with(obj){" + c + "}"), c = (a ? c.replace(at, "") : c).replace(st, "$1").replace(ut, "$1;"), c = "function(" + (t || "obj") + "){" + (t ? "" : "obj||(obj={});") + "var __t,__p=''" + (o ? ",__e=_.escape" : "") + (a ? ",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}" : ";") + c + "return __p}", t = Ja(function() {
                            return Hi(s, p + "return " + c).apply(b, u)
                        }), t.source = c, di(t)) throw t;
                    return t
                }, Mt.trim = ji, Mt.trimLeft = function(e, t, n) {
                    var r = e;
                    return (e = i(e)) ? e.slice((n ? Or(r, t, n) : null == t) ? v(e) : o(e, t + "")) : e
                }, Mt.trimRight = function(e, t, n) {
                    var r = e;
                    return (e = i(e)) ? (n ? Or(r, t, n) : null == t) ? e.slice(0, m(e) + 1) : e.slice(0, a(e, t + "") + 1) : e
                }, Mt.trunc = function(e, t, n) {
                    n && Or(e, t, n) && (t = b);
                    var r = O;
                    if (n = j, null != t)
                        if (vi(t)) {
                            var o = "separator" in t ? t.separator : o,
                                r = "length" in t ? +t.length || 0 : r;
                            n = "omission" in t ? i(t.omission) : n
                        } else r = +t || 0;
                    if (e = i(e), r >= e.length) return e;
                    if (r -= n.length, 1 > r) return n;
                    if (t = e.slice(0, r), null == o) return t + n;
                    if (bi(o)) {
                        if (e.slice(r).search(o)) {
                            var a, s = e.slice(0, r);
                            for (o.global || (o = Ki(o.source, (_t.exec(o) || "") + "g")), o.lastIndex = 0; e = o.exec(s);) a = e.index;
                            t = t.slice(0, null == a ? r : a)
                        }
                    } else e.indexOf(o, r) != r && (o = t.lastIndexOf(o), o > -1 && (t = t.slice(0, o)));
                    return t + n
                }, Mt.unescape = function(e) {
                    return (e = i(e)) && ft.test(e) ? e.replace(lt, $) : e
                }, Mt.uniqueId = function(e) {
                    var t = ++to;
                    return i(e) + t
                }, Mt.words = Ii, Mt.all = ti, Mt.any = ai, Mt.contains = ri, Mt.eq = hi, Mt.detect = ra, Mt.foldl = fa, Mt.foldr = pa, Mt.head = zr, Mt.include = ri, Mt.inject = fa, Di(Mt, function() {
                    var e = {};
                    return dn(Mt, function(t, n) {
                        Mt.prototype[n] || (e[n] = t)
                    }), e
                }(), !1), Mt.sample = oi, Mt.prototype.sample = function(e) {
                    return this.__chain__ || null != e ? this.thru(function(t) {
                        return oi(t, e)
                    }) : oi(this.value())
                }, Mt.VERSION = w, Ht("bind bindKey curry curryRight partial partialRight".split(" "), function(e) {
                    Mt[e].placeholder = Mt
                }), Ht(["drop", "take"], function(e, t) {
                    Vt.prototype[e] = function(n) {
                        var r = this.__filtered__;
                        if (r && !t) return new Vt(this);
                        n = null == n ? 1 : xo($o(n) || 0, 0);
                        var i = this.clone();
                        return r ? i.__takeCount__ = So(i.__takeCount__, n) : i.__views__.push({
                            size: n,
                            type: e + (0 > i.__dir__ ? "Right" : "")
                        }), i
                    }, Vt.prototype[e + "Right"] = function(t) {
                        return this.reverse()[e](t).reverse()
                    }
                }), Ht(["filter", "map", "takeWhile"], function(e, t) {
                    var n = t + 1,
                        r = n != D;
                    Vt.prototype[e] = function(e, t) {
                        var i = this.clone();
                        return i.__iteratees__.push({
                            iteratee: br(e, t, 1),
                            type: n
                        }), i.__filtered__ = i.__filtered__ || r, i
                    }
                }), Ht(["first", "last"], function(e, t) {
                    var n = "take" + (t ? "Right" : "");
                    Vt.prototype[e] = function() {
                        return this[n](1).value()[0]
                    }
                }), Ht(["initial", "rest"], function(e, t) {
                    var n = "drop" + (t ? "" : "Right");
                    Vt.prototype[e] = function() {
                        return this.__filtered__ ? new Vt(this) : this[n](1)
                    }
                }), Ht(["pluck", "where"], function(e, t) {
                    var n = t ? "filter" : "map",
                        r = t ? wn : qi;
                    Vt.prototype[e] = function(e) {
                        return this[n](r(e))
                    }
                }), Vt.prototype.compact = function() {
                    return this.filter(Mi)
                }, Vt.prototype.reject = function(e, t) {
                    return e = br(e, t, 1), this.filter(function(t) {
                        return !e(t)
                    })
                }, Vt.prototype.slice = function(e, t) {
                    e = null == e ? 0 : +e || 0;
                    var n = this;
                    return n.__filtered__ && (e > 0 || 0 > t) ? new Vt(n) : (0 > e ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== b && (t = +t || 0, n = 0 > t ? n.dropRight(-t) : n.take(t - e)), n)
                }, Vt.prototype.takeRightWhile = function(e, t) {
                    return this.reverse().takeWhile(e, t).reverse()
                }, Vt.prototype.toArray = function() {
                    return this.take(Ao)
                }, dn(Vt.prototype, function(e, t) {
                    var n = /^(?:filter|map|reject)|While$/.test(t),
                        r = /^(?:first|last)$/.test(t),
                        i = Mt[r ? "take" + ("last" == t ? "Right" : "") : t];
                    i && (Mt.prototype[t] = function() {
                        function t(e) {
                            return r && a ? i(e, 1)[0] : i.apply(b, Yt([e], o))
                        }
                        var o = r ? [1] : arguments,
                            a = this.__chain__,
                            s = this.__wrapped__,
                            u = !!this.__actions__.length,
                            l = s instanceof Vt,
                            c = o[0],
                            f = l || Aa(s);
                        return f && n && "function" == typeof c && 1 != c.length && (l = f = !1), c = {
                            func: ei,
                            args: [t],
                            thisArg: b
                        }, u = l && !u, r && !a ? u ? (s = s.clone(), s.__actions__.push(c), e.call(s)) : i.call(b, this.value())[0] : !r && f ? (s = u ? s : new Vt(this), s = e.apply(s, o), s.__actions__.push(c), new Dt(s, a)) : this.thru(t)
                    })
                }), Ht("join pop push replace shift sort splice split unshift".split(" "), function(e) {
                    var t = (/^(?:replace|split)$/.test(e) ? Xi : Ji)[e],
                        n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
                        r = /^(?:join|pop|replace|shift)$/.test(e);
                    Mt.prototype[e] = function() {
                        var e = arguments;
                        return r && !this.__chain__ ? t.apply(this.value(), e) : this[n](function(n) {
                            return t.apply(n, e)
                        })
                    }
                }), dn(Vt.prototype, function(e, t) {
                    var n = Mt[t];
                    if (n) {
                        var r = n.name + "";
                        (Io[r] || (Io[r] = [])).push({
                            name: t,
                            func: n
                        })
                    }
                }), Io[fr(b, S).name] = [{
                    name: "wrapper",
                    func: b
                }], Vt.prototype.clone = function() {
                    var e = new Vt(this.__wrapped__);
                    return e.__actions__ = Lt(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = Lt(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = Lt(this.__views__), e
                }, Vt.prototype.reverse = function() {
                    if (this.__filtered__) {
                        var e = new Vt(this);
                        e.__dir__ = -1, e.__filtered__ = !0
                    } else e = this.clone(), e.__dir__ *= -1;
                    return e
                }, Vt.prototype.value = function() {
                    var e, t = this.__wrapped__.value(),
                        n = this.__dir__,
                        r = Aa(t),
                        i = 0 > n,
                        o = r ? t.length : 0;
                    e = o;
                    for (var a = this.__views__, s = 0, u = -1, l = a.length; ++u < l;) {
                        var c = a[u],
                            f = c.size;
                        switch (c.type) {
                            case "drop":
                                s += f;
                                break;
                            case "dropRight":
                                e -= f;
                                break;
                            case "take":
                                e = So(e, s + f);
                                break;
                            case "takeRight":
                                s = xo(s, e - f)
                        }
                    }
                    if (e = {
                            start: s,
                            end: e
                        }, a = e.start, s = e.end, e = s - a, i = i ? s : a - 1, a = this.__iteratees__, s = a.length, u = 0, l = So(e, this.__takeCount__), !r || M > o || o == e && l == e) return Dn(t, this.__actions__);
                    r = [];
                    e: for (; e-- && l > u;) {
                        for (i += n, o = -1, c = t[i]; ++o < s;) {
                            var p = a[o],
                                f = p.type,
                                p = p.iteratee(c);
                            if (f == D) c = p;
                            else if (!p) {
                                if (f == N) continue e;
                                break e
                            }
                        }
                        r[u++] = c
                    }
                    return r
                }, Mt.prototype.chain = function() {
                    return Qr(this)
                }, Mt.prototype.commit = function() {
                    return new Dt(this.value(), this.__chain__)
                }, Mt.prototype.concat = ea, Mt.prototype.plant = function(e) {
                    for (var t, n = this; n instanceof Nt;) {
                        var r = Lr(n);
                        t ? i.__wrapped__ = r : t = r;
                        var i = r,
                            n = n.__wrapped__
                    }
                    return i.__wrapped__ = e, t
                }, Mt.prototype.reverse = function() {
                    function e(e) {
                        return e.reverse()
                    }
                    var t = this.__wrapped__;
                    return t instanceof Vt ? (this.__actions__.length && (t = new Vt(this)), t = t.reverse(), t.__actions__.push({
                        func: ei,
                        args: [e],
                        thisArg: b
                    }), new Dt(t, this.__chain__)) : this.thru(e)
                }, Mt.prototype.toString = function() {
                    return this.value() + ""
                }, Mt.prototype.run = Mt.prototype.toJSON = Mt.prototype.valueOf = Mt.prototype.value = function() {
                    return Dn(this.__wrapped__, this.__actions__)
                }, Mt.prototype.collect = Mt.prototype.map, Mt.prototype.head = Mt.prototype.first, Mt.prototype.select = Mt.prototype.filter, Mt.prototype.tail = Mt.prototype.rest, Mt
            }
            var b, w = "3.10.1",
                x = 1,
                S = 2,
                _ = 4,
                k = 8,
                C = 16,
                E = 32,
                A = 64,
                R = 128,
                T = 256,
                O = 30,
                j = "...",
                I = 150,
                P = 16,
                M = 200,
                N = 1,
                D = 2,
                V = "Expected a function",
                q = "__lodash_placeholder__",
                F = "[object Arguments]",
                U = "[object Array]",
                L = "[object Boolean]",
                H = "[object Date]",
                B = "[object Error]",
                z = "[object Function]",
                W = "[object Number]",
                K = "[object Object]",
                G = "[object RegExp]",
                Y = "[object String]",
                J = "[object ArrayBuffer]",
                Z = "[object Float32Array]",
                X = "[object Float64Array]",
                Q = "[object Int8Array]",
                et = "[object Int16Array]",
                tt = "[object Int32Array]",
                nt = "[object Uint8Array]",
                rt = "[object Uint8ClampedArray]",
                it = "[object Uint16Array]",
                ot = "[object Uint32Array]",
                at = /\b__p\+='';/g,
                st = /\b(__p\+=)''\+/g,
                ut = /(__e\(.*?\)|\b__t\))\+'';/g,
                lt = /&(?:amp|lt|gt|quot|#39|#96);/g,
                ct = /[&<>"'`]/g,
                ft = RegExp(lt.source),
                pt = RegExp(ct.source),
                ht = /<%-([\s\S]+?)%>/g,
                dt = /<%([\s\S]+?)%>/g,
                gt = /<%=([\s\S]+?)%>/g,
                vt = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,
                mt = /^\w*$/,
                $t = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,
                yt = /^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,
                bt = RegExp(yt.source),
                wt = /[\u0300-\u036f\ufe20-\ufe23]/g,
                xt = /\\(\\)?/g,
                St = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
                _t = /\w*$/,
                kt = /^0[xX]/,
                Ct = /^\[object .+?Constructor\]$/,
                Et = /^\d+$/,
                At = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,
                Rt = /($^)/,
                Tt = /['\n\r\u2028\u2029\\]/g,
                Ot = RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+", "g"),
                jt = "Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap".split(" "),
                It = {};
            It[Z] = It[X] = It[Q] = It[et] = It[tt] = It[nt] = It[rt] = It[it] = It[ot] = !0, It[F] = It[U] = It[J] = It[L] = It[H] = It[B] = It[z] = It["[object Map]"] = It[W] = It[K] = It[G] = It["[object Set]"] = It[Y] = It["[object WeakMap]"] = !1;
            var Pt = {};
            Pt[F] = Pt[U] = Pt[J] = Pt[L] = Pt[H] = Pt[Z] = Pt[X] = Pt[Q] = Pt[et] = Pt[tt] = Pt[W] = Pt[K] = Pt[G] = Pt[Y] = Pt[nt] = Pt[rt] = Pt[it] = Pt[ot] = !0, Pt[B] = Pt[z] = Pt["[object Map]"] = Pt["[object Set]"] = Pt["[object WeakMap]"] = !1;
            var Mt = {
                    "À": "A",
                    "Á": "A",
                    "Â": "A",
                    "Ã": "A",
                    "Ä": "A",
                    "Å": "A",
                    "à": "a",
                    "á": "a",
                    "â": "a",
                    "ã": "a",
                    "ä": "a",
                    "å": "a",
                    "Ç": "C",
                    "ç": "c",
                    "Ð": "D",
                    "ð": "d",
                    "È": "E",
                    "É": "E",
                    "Ê": "E",
                    "Ë": "E",
                    "è": "e",
                    "é": "e",
                    "ê": "e",
                    "ë": "e",
                    "Ì": "I",
                    "Í": "I",
                    "Î": "I",
                    "Ï": "I",
                    "ì": "i",
                    "í": "i",
                    "î": "i",
                    "ï": "i",
                    "Ñ": "N",
                    "ñ": "n",
                    "Ò": "O",
                    "Ó": "O",
                    "Ô": "O",
                    "Õ": "O",
                    "Ö": "O",
                    "Ø": "O",
                    "ò": "o",
                    "ó": "o",
                    "ô": "o",
                    "õ": "o",
                    "ö": "o",
                    "ø": "o",
                    "Ù": "U",
                    "Ú": "U",
                    "Û": "U",
                    "Ü": "U",
                    "ù": "u",
                    "ú": "u",
                    "û": "u",
                    "ü": "u",
                    "Ý": "Y",
                    "ý": "y",
                    "ÿ": "y",
                    "Æ": "Ae",
                    "æ": "ae",
                    "Þ": "Th",
                    "þ": "th",
                    "ß": "ss"
                },
                Nt = {
                    "&": "&amp;",
                    "<": "&lt;",
                    ">": "&gt;",
                    '"': "&quot;",
                    "'": "&#39;",
                    "`": "&#96;"
                },
                Dt = {
                    "&amp;": "&",
                    "&lt;": "<",
                    "&gt;": ">",
                    "&quot;": '"',
                    "&#39;": "'",
                    "&#96;": "`"
                },
                Vt = {
                    "function": !0,
                    object: !0
                },
                qt = {
                    0: "x30",
                    1: "x31",
                    2: "x32",
                    3: "x33",
                    4: "x34",
                    5: "x35",
                    6: "x36",
                    7: "x37",
                    8: "x38",
                    9: "x39",
                    A: "x41",
                    B: "x42",
                    C: "x43",
                    D: "x44",
                    E: "x45",
                    F: "x46",
                    a: "x61",
                    b: "x62",
                    c: "x63",
                    d: "x64",
                    e: "x65",
                    f: "x66",
                    n: "x6e",
                    r: "x72",
                    t: "x74",
                    u: "x75",
                    v: "x76",
                    x: "x78"
                },
                Ft = {
                    "\\": "\\",
                    "'": "'",
                    "\n": "n",
                    "\r": "r",
                    "\u2028": "u2028",
                    "\u2029": "u2029"
                },
                Ut = Vt[typeof exports] && exports && !exports.nodeType && exports,
                Lt = Vt[typeof module] && module && !module.nodeType && module,
                Ht = Vt[typeof self] && self && self.Object && self,
                Bt = Vt[typeof window] && window && window.Object && window,
                zt = Lt && Lt.exports === Ut && Ut,
                Wt = Ut && Lt && "object" == typeof global && global && global.Object && global || Bt !== (this && this.window) && Bt || Ht || this,
                Kt = y();
            "function" == typeof define && "object" == typeof define.amd && define.amd ? (Wt._ = Kt, define(function() {
                return Kt
            })) : Ut && Lt ? zt ? (Lt.exports = Kt)._ = Kt : Ut._ = Kt : Wt._ = Kt
        }.call(this), angular.module("btford.modal", []).factory("btfModal", ["$animate", "$compile", "$rootScope", "$controller", "$q", "$http", "$templateCache", modalFactoryFactory]), angular.module("ngScrollTo", []), angular.module("ngScrollTo").directive("scrollTo", ["ScrollTo", function(e) {
            return {
                restrict: "AC",
                compile: function() {
                    return function(t, n, r) {
                        var i = function(t) {
                            t.preventDefault(), e.idOrName(r.scrollTo, r.offset)
                        };
                        n.bind("click", i), t.$on("$destroy", function() {
                            n.unbind("click", i)
                        })
                    }
                }
            }
        }]).service("ScrollTo", ["$window", "ngScrollToOptions", function(e, t) {
            this.idOrName = function(n, r, i) {
                var o = e.document;
                n || e.scrollTo(0, 0), void 0 === i && (i = !0);
                var a = o.getElementById(n);
                a || (a = o.getElementsByName(n), a = a && a.length ? a[0] : null), a && (i && a.focus(), t.handler(a, r))
            }
        }]).provider("ngScrollToOptions", function() {
            this.options = {
                handler: function(e, t) {
                    if (t) {
                        var n = e.ownerDocument,
                            r = n.defaultView || n.parentWindow,
                            i = r.pageYOffset || n.documentElement.scrollTop || n.body.scrollTop || 0,
                            o = e.getBoundingClientRect().top + i - t;
                        r.scrollTo(0, o)
                    } else e.scrollIntoView()
                }
            }, this.$get = function() {
                return this.options
            }, this.extend = function(e) {
                this.options = angular.extend(this.options, e)
            }
        }),
        function() {
            function e(e, t, n) {
                function r(r, c) {
                    var f = c.dirPaginate,
                        p = f.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),
                        h = /\|\s*itemsPerPage\s*:[^|\)]*/;
                    if (null === p[2].match(h)) throw "pagination directive: the 'itemsPerPage' filter must be set.";
                    var d = p[2].replace(h, ""),
                        g = t(d);
                    a(r);
                    var v = c.paginationId || l;
                    return n.registerInstance(v),
                        function(r, a, c) {
                            var p = t(c.paginationId)(r) || c.paginationId || l;
                            n.registerInstance(p);
                            var h = i(f, p);
                            o(a, c, h), s(a);
                            var d = e(a),
                                v = u(r, c, p);
                            n.setCurrentPageParser(p, v, r), "undefined" != typeof c.totalItems ? (n.setAsyncModeTrue(p), r.$watch(function() {
                                return t(c.totalItems)(r)
                            }, function(e) {
                                e >= 0 && n.setCollectionLength(p, e)
                            })) : r.$watchCollection(function() {
                                return g(r)
                            }, function(e) {
                                e && n.setCollectionLength(p, e.length)
                            }), d(r)
                        }
                }

                function i(e, t) {
                    var n, r = !!e.match(/(\|\s*itemsPerPage\s*:[^|]*:[^|]*)/);
                    return n = t === l || r ? e : e.replace(/(\|\s*itemsPerPage\s*:[^|]*)/, "$1 : '" + t + "'")
                }

                function o(e, t, n) {
                    e[0].hasAttribute("dir-paginate-start") || e[0].hasAttribute("data-dir-paginate-start") ? (t.$set("ngRepeatStart", n), e.eq(e.length - 1).attr("ng-repeat-end", !0)) : t.$set("ngRepeat", n)
                }

                function a(e) {
                    angular.forEach(e, function(e) {
                        1 === e.nodeType && angular.element(e).attr("dir-paginate-no-compile", !0)
                    })
                }

                function s(e) {
                    angular.forEach(e, function(e) {
                        1 === e.nodeType && angular.element(e).removeAttr("dir-paginate-no-compile")
                    }), e.eq(0).removeAttr("dir-paginate-start").removeAttr("dir-paginate").removeAttr("data-dir-paginate-start").removeAttr("data-dir-paginate"), e.eq(e.length - 1).removeAttr("dir-paginate-end").removeAttr("data-dir-paginate-end")
                }

                function u(e, n, r) {
                    var i;
                    if (n.currentPage) i = t(n.currentPage);
                    else {
                        var o = r + "__currentPage";
                        e[o] = 1, i = t(o)
                    }
                    return i
                }
                return {
                    terminal: !0,
                    multiElement: !0,
                    compile: r
                }
            }

            function t() {
                return {
                    priority: 5e3,
                    terminal: !0
                }
            }

            function n(e) {
                e.put("angularUtils.directives.dirPagination.template", '<ul class="pagination" ng-if="1 < pages.length || !autoHide"><li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(1)">&laquo;</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }"><a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a></li><li ng-repeat="pageNumber in pages track by tracker(pageNumber, $index)" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' || ( ! autoHide && pages.length === 1 ) }"><a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a></li><li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a></li><li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }"><a href="" ng-click="setCurrent(pagination.last)">&raquo;</a></li></ul>')
            }

            function r(e, t) {
                function n(t, n, i) {
                    function a(n) {
                        e.isRegistered(p) && c(n) && (t.pages = r(n, e.getCollectionLength(p), e.getItemsPerPage(p), h), t.pagination.current = n, u(), t.onPageChange && t.onPageChange({
                            newPageNumber: n
                        }))
                    }

                    function s() {
                        if (e.isRegistered(p)) {
                            var n = parseInt(e.getCurrentPage(p)) || 1;
                            t.pages = r(n, e.getCollectionLength(p), e.getItemsPerPage(p), h), t.pagination.current = n, t.pagination.last = t.pages[t.pages.length - 1], t.pagination.last < t.pagination.current ? t.setCurrent(t.pagination.last) : u()
                        }
                    }

                    function u() {
                        if (e.isRegistered(p)) {
                            var n = e.getCurrentPage(p),
                                r = e.getItemsPerPage(p),
                                i = e.getCollectionLength(p);
                            t.range.lower = (n - 1) * r + 1, t.range.upper = Math.min(n * r, i), t.range.total = i
                        }
                    }

                    function c(e) {
                        return o.test(e) && e > 0 && e <= t.pagination.last
                    }
                    var f = i.paginationId || l,
                        p = t.paginationId || i.paginationId || l;
                    if (!e.isRegistered(p) && !e.isRegistered(f));
                    t.maxSize || (t.maxSize = 9), t.autoHide = void 0 === t.autoHide ? !0 : t.autoHide, t.directionLinks = angular.isDefined(i.directionLinks) ? t.$parent.$eval(i.directionLinks) : !0, t.boundaryLinks = angular.isDefined(i.boundaryLinks) ? t.$parent.$eval(i.boundaryLinks) : !1;
                    var h = Math.max(t.maxSize, 5);
                    t.pages = [], t.pagination = {
                        last: 1,
                        current: 1
                    }, t.range = {
                        lower: 1,
                        upper: 1,
                        total: 1
                    }, t.$watch(function() {
                        return e.isRegistered(p) ? (e.getCollectionLength(p) + 1) * e.getItemsPerPage(p) : void 0
                    }, function(e) {
                        e > 0 && s()
                    }), t.$watch(function() {
                        return e.isRegistered(p) ? e.getItemsPerPage(p) : void 0
                    }, function(e, n) {
                        e != n && "undefined" != typeof n && a(t.pagination.current)
                    }), t.$watch(function() {
                        return e.isRegistered(p) ? e.getCurrentPage(p) : void 0
                    }, function(e, t) {
                        e != t && a(e)
                    }), t.setCurrent = function(t) {
                        e.isRegistered(p) && c(t) && (t = parseInt(t, 10), e.setCurrentPage(p, t))
                    }, t.tracker = function(e, t) {
                        return e + "_" + t
                    }
                }

                function r(e, t, n, r) {
                    var o, a = [],
                        s = Math.ceil(t / n),
                        u = Math.ceil(r / 2);
                    o = u >= e ? "start" : e > s - u ? "end" : "middle";
                    for (var l = s > r, c = 1; s >= c && r >= c;) {
                        var f = i(c, e, r, s),
                            p = 2 === c && ("middle" === o || "end" === o),
                            h = c === r - 1 && ("middle" === o || "start" === o);
                        a.push(l && (p || h) ? "..." : f), c++
                    }
                    return a
                }

                function i(e, t, n, r) {
                    var i = Math.ceil(n / 2);
                    return e === n ? r : 1 === e ? e : r > n ? t > r - i ? r - n + e : t > i ? t - i + e : e : e
                }
                var o = /^\d+$/;
                return {
                    restrict: "AE",
                    templateUrl: function(e, n) {
                        return n.templateUrl || t.getPath()
                    },
                    scope: {
                        maxSize: "=?",
                        onPageChange: "&?",
                        paginationId: "=?",
                        autoHide: "=?"
                    },
                    link: n
                }
            }

            function i(e) {
                return function(t, n, r) {
                    if ("undefined" == typeof r && (r = l), !e.isRegistered(r)) throw "pagination directive: the itemsPerPage id argument (id: " + r + ") does not match a registered pagination-id.";
                    var i, o;
                    return t instanceof Array ? (n = parseInt(n) || 9999999999, o = e.isAsyncMode(r) ? 0 : (e.getCurrentPage(r) - 1) * n, i = o + n, e.setItemsPerPage(r, n), t.slice(o, i)) : t
                }
            }

            function o() {
                var e, t = {};
                this.registerInstance = function(n) {
                    "undefined" == typeof t[n] && (t[n] = {
                        asyncMode: !1
                    }, e = n)
                }, this.isRegistered = function(e) {
                    return "undefined" != typeof t[e]
                }, this.getLastInstanceId = function() {
                    return e
                }, this.setCurrentPageParser = function(e, n, r) {
                    t[e].currentPageParser = n, t[e].context = r
                }, this.setCurrentPage = function(e, n) {
                    t[e].currentPageParser.assign(t[e].context, n)
                }, this.getCurrentPage = function(e) {
                    var n = t[e].currentPageParser;
                    return n ? n(t[e].context) : 1
                }, this.setItemsPerPage = function(e, n) {
                    t[e].itemsPerPage = n
                }, this.getItemsPerPage = function(e) {
                    return t[e].itemsPerPage
                }, this.setCollectionLength = function(e, n) {
                    t[e].collectionLength = n
                }, this.getCollectionLength = function(e) {
                    return t[e].collectionLength
                }, this.setAsyncModeTrue = function(e) {
                    t[e].asyncMode = !0
                }, this.isAsyncMode = function(e) {
                    return t[e].asyncMode
                }
            }

            function a() {
                var e = "angularUtils.directives.dirPagination.template";
                this.setPath = function(t) {
                    e = t
                }, this.$get = function() {
                    return {
                        getPath: function() {
                            return e
                        }
                    }
                }
            }
            var s, u = "angularUtils.directives.dirPagination",
                l = "__default";
            try {
                s = angular.module(u)
            } catch (c) {
                s = angular.module(u, [])
            }
            s.directive("dirPaginate", ["$compile", "$parse", "paginationService", e]).directive("dirPaginateNoCompile", t).directive("dirPaginationControls", ["paginationService", "paginationTemplate", r]).filter("itemsPerPage", ["paginationService", i]).service("paginationService", o).provider("paginationTemplate", a).run(["$templateCache", n])
        }(),
        function(e) {
            function t(e) {
                var t = 0,
                    n = e,
                    r = "hidden_element";
                return n = n.clone().attr("class", r).appendTo("body"), t = n.width(!0), n.remove(), t
            }

            function n(e) {
                e && window.console && window.console.log
            }

            function r(e, t, n, r, i, o, a) {
                var s, u, l, c = "";
                return null == i ? u = l = "" : (u = i[0], l = null == i[1] ? u : i[1]), c = null == t ? "" : 'tabindex="0" role="' + r + '" aria-checked="' + n + '" aria-label="' + t + '"', s = 1 == o && 1 == a ? '<label for="' + e + '" ' + c + '><span class="labelauty-unchecked-image"></span><span class="labelauty-unchecked">' + u + '</span><span class="labelauty-checked-image"></span><span class="labelauty-checked">' + l + "</span></label>" : 1 == o ? '<label for="' + e + '" ' + c + '><span class="labelauty-unchecked">' + u + '</span><span class="labelauty-checked">' + l + "</span></label>" : '<label for="' + e + '" ' + c + '><span class="labelauty-unchecked-image"></span><span class="labelauty-checked-image"></span></label>'
            }
            e.fn.labelauty = function(i) {
                var o = e.extend({
                    development: !1,
                    "class": "labelauty",
                    icon: !0,
                    label: !0,
                    separator: "|",
                    checked_label: "Checked",
                    unchecked_label: "Unchecked",
                    force_random_id: !1,
                    minimum_width: !1,
                    same_width: !0
                }, i);
                return this.each(function() {
                    var i, a, s, u = e(this),
                        l = u.is(":checked"),
                        c = u.attr("type"),
                        f = !0,
                        p = !0,
                        h = u.attr("aria-label");
                    if (u.attr("aria-hidden", !0), u.is(":checkbox") === !1 && u.is(":radio") === !1) return this;
                    if (u.addClass(o["class"]), i = u.attr("data-labelauty"), p = o.label, f = o.icon, p === !0 && (null == i || 0 === i.length ? a = [o.unchecked_label, o.checked_label] : (a = i.split(o.separator), a.length > 2 ? (p = !1, n(o.development, "There's more than two labels. LABELAUTY will not use labels.")) : 1 === a.length && n(o.development, "There's just one label. LABELAUTY will use this one for both cases."))), u.css({
                            display: "none"
                        }), u.removeAttr("data-labelauty"), s = u.attr("id"), o.force_random_id || null == s || "" === s.trim()) {
                        var d = 1 + Math.floor(1024e3 * Math.random());
                        for (s = "labelauty-" + d; 0 !== e(s).length;) d++, s = "labelauty-" + d, n(o.development, "Holy crap, between 1024 thousand numbers, one raised a conflict. Trying again.");
                        u.attr("id", s)
                    }
                    var g = jQuery(r(s, h, l, c, a, p, f));
                    if (g.click(function() {
                            u.is(":checked") ? e(g).attr("aria-checked", !1) : e(g).attr("aria-checked", !0)
                        }), g.keypress(function(t) {
                            t.preventDefault(), (32 === t.keyCode || 13 === t.keyCode) && (u.is(":checked") ? (u.prop("checked", !1), e(g).attr("aria-checked", !1)) : (u.prop("checked", !0), e(g).attr("aria-checked", !0)))
                        }), u.after(g), o.minimum_width !== !1 && u.next("label[for=" + s + "]").css({
                            "min-width": o.minimum_width
                        }), 0 != o.same_width && 1 == o.label) {
                        var v = u.next("label[for=" + s + "]"),
                            m = t(v.find("span.labelauty-unchecked")),
                            $ = t(v.find("span.labelauty-checked"));
                        m > $ ? v.find("span.labelauty-checked").width(m) : v.find("span.labelauty-unchecked").width($)
                    }
                })
            }
        }(jQuery), ! function(e) {
            "use strict";
            e.module("720kb.tooltips", []).provider("tooltipsConfig", function() {
                var t = {
                    scroll: !1,
                    showTrigger: "mouseover",
                    hideTrigger: "mouseleave",
                    hideTarget: "element",
                    side: "top",
                    size: "medium",
                    "try": !0,
                    "class": "",
                    speed: "medium",
                    delay: 0,
                    lazy: !0,
                    closeButton: null
                };
                this.options = function() {
                    return 1 === arguments.length && e.extend(t, arguments[0]), e.copy(t)
                }, this.$get = function() {
                    return t
                }
            }).directive("tooltips", ["$window", "$compile", "$interpolate", "$interval", "$sce", "tooltipsConfig", function(t, n, r, i, o, a) {
                var s = 8,
                    u = 9,
                    l = 10,
                    c = 20,
                    f = "_720kb-tooltip-",
                    p = r.startSymbol(),
                    h = r.endSymbol();
                return {
                    restrict: "A",
                    scope: {
                        tooltipViewModel: "="
                    },
                    link: function(r, d, g) {
                        function v() {
                            W && R || (R = !0, r.initTooltip(F)), L && r.tooltipTryPosition(), r.showTooltip()
                        }

                        function m() {
                            r.hideTooltip()
                        }

                        function $() {
                            r.hideTooltip(), r.initTooltip(q)
                        }
                        var y, b, w, x, S, _, k, C, E, A, R = !1,
                            T = e.element(d[0]),
                            O = e.element(t.document.getElementsByTagName("body")[0]),
                            j = g.tooltipTitle || g.title || "",
                            I = g.tooltipScroll || a.scroll,
                            P = g.tooltipContent || "",
                            M = g.tooltipHtml || "",
                            N = g.tooltipShowTrigger || a.showTrigger,
                            D = g.tooltipHideTrigger || a.hideTrigger,
                            V = "undefined" != typeof g.tooltipHideTarget && null !== g.tooltipHideTarget ? g.tooltipHideTarget : a.hideTarget,
                            q = g.tooltipSide || a.side,
                            F = q,
                            U = g.tooltipSize || a.size,
                            L = "undefined" != typeof g.tooltipTry && null !== g.tooltipTry ? r.$eval(g.tooltipTry) : a["try"],
                            H = g.tooltipClass || a["class"],
                            B = (g.tooltipSpeed || a.speed).toLowerCase(),
                            z = g.tooltipDelay || a.delay,
                            W = "undefined" != typeof g.tooltipLazy && null !== g.tooltipLazy ? r.$eval(g.tooltipLazy) : a.lazy,
                            K = g.tooltipCloseButton || a.closeButton,
                            G = "undefined" != typeof K && null !== K,
                            Y = '<div class="_720kb-tooltip ' + f + U + '">';
                        "element" !== V && "tooltip" !== V && (V = "element"), G && (Y = Y + '<span class="' + f + 'close-button" ng-click="hideTooltip()"> ' + K + " </span>"), g.tooltipView && (Y = g.tooltipViewCtrl ? Y + '<div ng-controller="' + g.tooltipViewCtrl + '" ng-include="\'' + g.tooltipView + "'\"></div>" : Y + "<div ng-include=\"'" + g.tooltipView + "'\"></div>"), Y = Y + '<div class="' + f + 'title"> ' + p + "title" + h + "</div>" + p + "content" + h + ' <span class="' + f + 'html_content" ng-bind-html="getHtml()"></span> <span class="' + f + 'caret"></span></div>', r.title = j, r.content = P, r.html = M, r.getHtml = function() {
                            return o.trustAsHtml(r.html)
                        }, r.parseSpeed = function() {
                            switch (B) {
                                case "fast":
                                    B = 100;
                                    break;
                                case "medium":
                                    B = 450;
                                    break;
                                case "slow":
                                    B = 800;
                                    break;
                                default:
                                    B = Number(B)
                            }
                        }, y = n(Y)(r), y.addClass(H), O.append(y), r.isTooltipEmpty = function() {
                            return r.title || r.content || r.html || g.tooltipView ? void 0 : !0
                        }, r.initTooltip = function(e) {
                            r.isTooltipEmpty() ? y.css("visibility", "hidden") : (y.css("visibility", "visible"), S = T[0].offsetHeight, _ = T[0].offsetWidth, b = y[0].offsetHeight, w = y[0].offsetWidth, r.parseSpeed(), r.tooltipPositioning(e))
                        }, r.getOffsets = function() {
                            k = r.getOffsetTop(T[0]), C = r.getOffsetLeft(T[0])
                        }, r.getOffsetTop = function(e) {
                            var n = e.getBoundingClientRect().top + t.scrollY;
                            return isNaN(n) && (n = e.getBoundingClientRect().top + t.pageYOffset), n
                        }, r.getOffsetLeft = function(e) {
                            var n = e.getBoundingClientRect().left + t.scrollX;
                            return isNaN(n) && (n = e.getBoundingClientRect().left + t.pageXOffset), n
                        }, r.bindShowTriggers = function() {
                            T.bind(N, v)
                        }, r.bindHideTriggers = function() {
                            "tooltip" === V ? y.bind(D, m) : T.bind(D, m)
                        }, r.clearTriggers = function() {
                            T.unbind(N, v), T.unbind(D, m)
                        }, r.bindShowTriggers(), r.showTooltip = function() {
                            I && (A = T[0].getBoundingClientRect(), E = i(function() {
                                var t = T[0].getBoundingClientRect();
                                e.equals(A, t) || r.tooltipPositioning(F), A = t
                            }, c)), y.addClass(f + "open"), y.css("transition", "opacity " + B + "ms linear"), z && y.css("transition-delay", z + "ms"), r.clearTriggers(), r.bindHideTriggers()
                        }, r.hideTooltip = function() {
                            y.css("transition", "opacity " + B + "ms linear, visibility 0s linear " + B + "ms"), y.removeClass(f + "open"), r.clearTriggers(), r.bindShowTriggers(), e.isDefined(r.positionInterval) && (i.cancel(E), E = void 0)
                        }, r.removePosition = function() {
                            y.removeClass(f + "left").removeClass(f + "right").removeClass(f + "top").removeClass(f + "bottom ")
                        }, r.tooltipPositioning = function(e) {
                            r.removePosition(), r.getOffsets();
                            var t, n;
                            "small" === U ? x = s : "medium" === U ? x = u : "large" === U && (x = l), "left" === e && (t = k + S / 2 - b / 2, n = C - (w + x), y.css("top", t + "px"), y.css("left", n + "px"), y.addClass(f + "left")), "right" === e && (t = k + S / 2 - b / 2, n = C + _ + x, y.css("top", t + "px"), y.css("left", n + "px"), y.addClass(f + "right")), "top" === e && (t = k - x - b, n = C + _ / 2 - w / 2, y.css("top", t + "px"), y.css("left", n + "px"), y.addClass(f + "top")), "bottom" === e && (t = k + S + x, n = C + _ / 2 - w / 2, y.css("top", t + "px"), y.css("left", n + "px"), y.addClass(f + "bottom"))
                        }, r.tooltipTryPosition = function() {
                            var e = y[0].offsetHeight,
                                n = y[0].offsetWidth,
                                i = y[0].offsetTop,
                                o = y[0].offsetLeft,
                                a = t.innerWidth,
                                s = t.innerHeight,
                                u = a - (n + o),
                                l = s - (e + i),
                                c = T[0].offsetHeight,
                                f = T[0].offsetWidth,
                                p = T[0].offsetLeft,
                                h = T[0].offsetTop,
                                d = a - (p + f),
                                g = s - (c + h),
                                v = {
                                    left: o,
                                    top: i,
                                    bottom: l,
                                    right: u
                                },
                                m = {
                                    left: p,
                                    right: d,
                                    top: h,
                                    bottom: g
                                },
                                $ = Object.keys(m).reduce(function(e, t) {
                                    return m[e] > m[t] ? e : t
                                }),
                                b = Object.keys(v).reduce(function(e, t) {
                                    return v[e] < v[t] ? e : t
                                });
                            q !== $ && v[b] < 20 && (F = $, r.tooltipPositioning(F), r.initTooltip($))
                        }, e.element(t).bind("resize", $), r.$on("$destroy", function() {
                            e.element(t).unbind("resize", $), r.clearTriggers(), y.remove()
                        }), g.tooltipTitle && g.$observe("tooltipTitle", function(e) {
                            r.title = e, r.initTooltip(F)
                        }), g.title && g.$observe("title", function(e) {
                            r.title = e, r.initTooltip(F)
                        }), g.tooltipContent && g.$observe("tooltipContent", function(e) {
                            r.content = e, r.initTooltip(F)
                        }), g.tooltipHtml && g.$observe("tooltipHtml", function(e) {
                            r.html = e, r.initTooltip(F)
                        })
                    }
                }
            }])
        }(angular),
        function(e, t) {
            "function" == typeof define && "object" == typeof define.amd && define.amd ? define(function() {
                return t(e)
            }) : "object" == typeof module && module && module.exports ? module.exports = t(e) : e.Levenshtein = t(e)
        }(this, function() {
            function e(e, t) {
                var n, r;
                for (n = -1, r = e.length; ++n < r;) t(e[n], n, e)
            }

            function t(t, n) {
                var r;
                return r = Array(t.length), e(t, function(e, t, i) {
                    r[t] = n(e, t, i)
                }), r
            }

            function n(t, n, r) {
                return e(t, function(e, t, i) {
                    r = n(e, t, i)
                }), r
            }

            function r(t, n) {
                var r, i, o;
                return o = this._matrix = [], t == n ? this.distance = 0 : "" == t ? this.distance = n.length : "" == n ? this.distance = t.length : (r = [0], e(t, function(e, t) {
                    t++, r[t] = t
                }), o[0] = r, e(n, function(a, s) {
                    i = [++s], e(t, function(e, o) {
                        o++, i[o] = t.charAt(o - 1) == n.charAt(s - 1) ? r[o - 1] : Math.min(r[o] + 1, i[o - 1] + 1, r[o - 1] + 1)
                    }), r = i, o[o.length] = r
                }), this.distance = i[i.length - 1])
            }
            return r.prototype.toString = r.prototype.inspect = function() {
                var e, r, i, o, a;
                for (e = this.getMatrix(), r = n(e, function(e, t) {
                        return Math.max(e, n(t, Math.max, 0))
                    }, 0), i = Array((r + "").length).join(" "), o = []; o.length < (e[0] && e[0].length || 0);) o[o.length] = Array(i.length + 1).join("-");
                return o = o.join("-+") + "-", a = t(e, function(e) {
                    var n;
                    return n = t(e, function(e) {
                        return (i + e).slice(-i.length)
                    }), n.join(" |") + " "
                }), a.join("\n" + o + "\n")
            }, r.prototype.getMatrix = function() {
                return this._matrix.slice()
            }, r.prototype.valueOf = function() {
                return this.distance
            }, r
        });
    var duScrollDefaultEasing = function(e) {
            "use strict";
            return .5 > e ? Math.pow(2 * e, 2) / 2 : 1 - Math.pow(2 * (1 - e), 2) / 2
        },
        duScroll = angular.module("duScroll", ["duScroll.scrollspy", "duScroll.smoothScroll", "duScroll.scrollContainer", "duScroll.spyContext", "duScroll.scrollHelpers"]).value("duScrollDuration", 350).value("duScrollSpyWait", 100).value("duScrollSpyRefreshInterval", 0).value("duScrollGreedy", !1).value("duScrollOffset", 0).value("duScrollEasing", duScrollDefaultEasing).value("duScrollCancelOnEvents", "scroll mousedown mousewheel touchmove keydown").value("duScrollBottomSpy", !1).value("duScrollActiveClass", "active");
    "undefined" != typeof module && module && module.exports && (module.exports = duScroll), angular.module("duScroll.scrollHelpers", ["duScroll.requestAnimation"]).run(["$window", "$q", "cancelAnimation", "requestAnimation", "duScrollEasing", "duScrollDuration", "duScrollOffset", "duScrollCancelOnEvents", function(e, t, n, r, i, o, a, s) {
            "use strict";
            var u = {},
                l = function(e) {
                    return "undefined" != typeof HTMLDocument && e instanceof HTMLDocument || e.nodeType && e.nodeType === e.DOCUMENT_NODE
                },
                c = function(e) {
                    return "undefined" != typeof HTMLElement && e instanceof HTMLElement || e.nodeType && e.nodeType === e.ELEMENT_NODE
                },
                f = function(e) {
                    return c(e) || l(e) ? e : e[0]
                };
            u.duScrollTo = function(t, n, r) {
                var i;
                if (angular.isElement(t) ? i = this.duScrollToElement : angular.isDefined(r) && (i = this.duScrollToAnimated), i) return i.apply(this, arguments);
                var o = f(this);
                return l(o) ? e.scrollTo(t, n) : (o.scrollLeft = t, void(o.scrollTop = n))
            };
            var p, h;
            u.duScrollToAnimated = function(e, o, a, u) {
                a && !u && (u = i);
                var l = this.duScrollLeft(),
                    c = this.duScrollTop(),
                    f = Math.round(e - l),
                    d = Math.round(o - c),
                    g = null,
                    v = 0,
                    m = this,
                    $ = function(e) {
                        (!e || v && e.which > 0) && (s && m.unbind(s, $), n(p), h.reject(), p = null)
                    };
                if (p && $(), h = t.defer(), 0 === a || !f && !d) return 0 === a && m.duScrollTo(e, o), h.resolve(), h.promise;
                var y = function(e) {
                    null === g && (g = e), v = e - g;
                    var t = v >= a ? 1 : u(v / a);
                    m.scrollTo(l + Math.ceil(f * t), c + Math.ceil(d * t)), 1 > t ? p = r(y) : (s && m.unbind(s, $), p = null, h.resolve())
                };
                return m.duScrollTo(l, c), s && m.bind(s, $), p = r(y), h.promise
            }, u.duScrollToElement = function(e, t, n, r) {
                var i = f(this);
                (!angular.isNumber(t) || isNaN(t)) && (t = a);
                var o = this.duScrollTop() + f(e).getBoundingClientRect().top - t;
                return c(i) && (o -= i.getBoundingClientRect().top), this.duScrollTo(0, o, n, r)
            }, u.duScrollLeft = function(t, n, r) {
                if (angular.isNumber(t)) return this.duScrollTo(t, this.duScrollTop(), n, r);
                var i = f(this);
                return l(i) ? e.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft : i.scrollLeft
            }, u.duScrollTop = function(t, n, r) {
                if (angular.isNumber(t)) return this.duScrollTo(this.duScrollLeft(), t, n, r);
                var i = f(this);
                return l(i) ? e.scrollY || document.documentElement.scrollTop || document.body.scrollTop : i.scrollTop
            }, u.duScrollToElementAnimated = function(e, t, n, r) {
                return this.duScrollToElement(e, t, n || o, r)
            }, u.duScrollTopAnimated = function(e, t, n) {
                return this.duScrollTop(e, t || o, n)
            }, u.duScrollLeftAnimated = function(e, t, n) {
                return this.duScrollLeft(e, t || o, n)
            }, angular.forEach(u, function(e, t) {
                angular.element.prototype[t] = e;
                var n = t.replace(/^duScroll/, "scroll");
                angular.isUndefined(angular.element.prototype[n]) && (angular.element.prototype[n] = e)
            })
        }]), angular.module("duScroll.polyfill", []).factory("polyfill", ["$window", function(e) {
            "use strict";
            var t = ["webkit", "moz", "o", "ms"];
            return function(n, r) {
                if (e[n]) return e[n];
                for (var i, o = n.substr(0, 1).toUpperCase() + n.substr(1), a = 0; a < t.length; a++)
                    if (i = t[a] + o, e[i]) return e[i];
                return r
            }
        }]), angular.module("duScroll.requestAnimation", ["duScroll.polyfill"]).factory("requestAnimation", ["polyfill", "$timeout", function(e, t) {
            "use strict";
            var n = 0,
                r = function(e) {
                    var r = (new Date).getTime(),
                        i = Math.max(0, 16 - (r - n)),
                        o = t(function() {
                            e(r + i)
                        }, i);
                    return n = r + i, o
                };
            return e("requestAnimationFrame", r)
        }]).factory("cancelAnimation", ["polyfill", "$timeout", function(e, t) {
            "use strict";
            var n = function(e) {
                t.cancel(e)
            };
            return e("cancelAnimationFrame", n)
        }]), angular.module("duScroll.spyAPI", ["duScroll.scrollContainerAPI"]).factory("spyAPI", ["$rootScope", "$timeout", "$interval", "$window", "$document", "scrollContainerAPI", "duScrollGreedy", "duScrollSpyWait", "duScrollSpyRefreshInterval", "duScrollBottomSpy", "duScrollActiveClass", function(e, t, n, r, i, o, a, s, u, l, c) {
            "use strict";
            var f = function(n) {
                    var o = !1,
                        u = !1,
                        f = function() {
                            u = !1;
                            var t, o = n.container,
                                s = o[0],
                                f = 0;
                            if ("undefined" != typeof HTMLElement && s instanceof HTMLElement || s.nodeType && s.nodeType === s.ELEMENT_NODE) f = s.getBoundingClientRect().top, t = Math.round(s.scrollTop + s.clientHeight) >= s.scrollHeight;
                            else {
                                var p = i[0].body.scrollHeight || i[0].documentElement.scrollHeight;
                                t = Math.round(r.pageYOffset + r.innerHeight) >= p
                            }
                            var h, d, g, v, m, $, y = l && t ? "bottom" : "top";
                            for (v = n.spies, d = n.currentlyActive, g = void 0, h = 0; h < v.length; h++) m = v[h], $ = m.getTargetPosition(), $ && m.$element && (l && t || $.top + m.offset - f < 20 && (a || -1 * $.top + f) < $.height) && (!g || g[y] < $[y]) && (g = {
                                spy: m
                            }, g[y] = $[y]);
                            g && (g = g.spy), d === g || a && !g || (d && d.$element && (d.$element.removeClass(c), e.$broadcast("duScrollspy:becameInactive", d.$element, angular.element(d.getTargetElement()))), g && (g.$element.addClass(c), e.$broadcast("duScrollspy:becameActive", g.$element, angular.element(g.getTargetElement()))), n.currentlyActive = g)
                        };
                    return s ? function() {
                        o ? u = !0 : (f(), o = t(function() {
                            o = !1, u && f()
                        }, s, !1))
                    } : f
                },
                p = {},
                h = function(e) {
                    var t = e.$id,
                        n = {
                            spies: []
                        };
                    return n.handler = f(n), p[t] = n, e.$on("$destroy", function() {
                        d(e)
                    }), t
                },
                d = function(e) {
                    var t = e.$id,
                        r = p[t],
                        i = r.container;
                    r.intervalPromise && n.cancel(r.intervalPromise), i && i.off("scroll", r.handler), delete p[t]
                },
                g = h(e),
                v = function(e) {
                    return p[e.$id] ? p[e.$id] : e.$parent ? v(e.$parent) : p[g]
                },
                m = function(e) {
                    var t, n, r = e.$scope;
                    if (r) return v(r);
                    for (n in p)
                        if (t = p[n], -1 !== t.spies.indexOf(e)) return t
                },
                $ = function(e) {
                    for (; e.parentNode;)
                        if (e = e.parentNode, e === document) return !0;
                    return !1
                },
                y = function(e) {
                    var t = m(e);
                    t && (t.spies.push(e), t.container && $(t.container) || (t.container && t.container.off("scroll", t.handler), t.container = o.getContainer(e.$scope), u && !t.intervalPromise && (t.intervalPromise = n(t.handler, u, 0, !1)), t.container.on("scroll", t.handler).triggerHandler("scroll")))
                },
                b = function(t) {
                    var n = m(t);
                    t === n.currentlyActive && (e.$broadcast("duScrollspy:becameInactive", n.currentlyActive.$element), n.currentlyActive = null);
                    var r = n.spies.indexOf(t); - 1 !== r && n.spies.splice(r, 1), t.$element = null
                };
            return {
                addSpy: y,
                removeSpy: b,
                createContext: h,
                destroyContext: d,
                getContextForScope: v
            }
        }]), angular.module("duScroll.scrollContainerAPI", []).factory("scrollContainerAPI", ["$document", function(e) {
            "use strict";
            var t = {},
                n = function(e, n) {
                    var r = e.$id;
                    return t[r] = n, r
                },
                r = function(e) {
                    return t[e.$id] ? e.$id : e.$parent ? r(e.$parent) : void 0
                },
                i = function(n) {
                    var i = r(n);
                    return i ? t[i] : e
                },
                o = function(e) {
                    var n = r(e);
                    n && delete t[n]
                };
            return {
                getContainerId: r,
                getContainer: i,
                setContainer: n,
                removeContainer: o
            }
        }]), angular.module("duScroll.smoothScroll", ["duScroll.scrollHelpers", "duScroll.scrollContainerAPI"]).directive("duSmoothScroll", ["duScrollDuration", "duScrollOffset", "scrollContainerAPI", function(e, t, n) {
            "use strict";
            return {
                link: function(r, i, o) {
                    i.on("click", function(i) {
                        if (o.href && -1 !== o.href.indexOf("#") || "" !== o.duSmoothScroll) {
                            var a = o.href ? o.href.replace(/.*(?=#[^\s]+$)/, "").substring(1) : o.duSmoothScroll,
                                s = document.getElementById(a) || document.getElementsByName(a)[0];
                            if (s && s.getBoundingClientRect) {
                                i.stopPropagation && i.stopPropagation(), i.preventDefault && i.preventDefault();
                                var u = o.offset ? parseInt(o.offset, 10) : t,
                                    l = o.duration ? parseInt(o.duration, 10) : e,
                                    c = n.getContainer(r);
                                c.duScrollToElement(angular.element(s), isNaN(u) ? 0 : u, isNaN(l) ? 0 : l)
                            }
                        }
                    })
                }
            }
        }]), angular.module("duScroll.spyContext", ["duScroll.spyAPI"]).directive("duSpyContext", ["spyAPI", function(e) {
            "use strict";
            return {
                restrict: "A",
                scope: !0,
                compile: function() {
                    return {
                        pre: function(t) {
                            e.createContext(t)
                        }
                    }
                }
            }
        }]), angular.module("duScroll.scrollContainer", ["duScroll.scrollContainerAPI"]).directive("duScrollContainer", ["scrollContainerAPI", function(e) {
            "use strict";
            return {
                restrict: "A",
                scope: !0,
                compile: function() {
                    return {
                        pre: function(t, n, r) {
                            r.$observe("duScrollContainer", function(r) {
                                angular.isString(r) && (r = document.getElementById(r)), r = angular.isElement(r) ? angular.element(r) : n, e.setContainer(t, r), t.$on("$destroy", function() {
                                    e.removeContainer(t)
                                })
                            })
                        }
                    }
                }
            }
        }]), angular.module("duScroll.scrollspy", ["duScroll.spyAPI"]).directive("duScrollspy", ["spyAPI", "duScrollOffset", "$timeout", "$rootScope", function(e, t, n, r) {
            "use strict";
            var i = function(e, t, n, r) {
                angular.isElement(e) ? this.target = e : angular.isString(e) && (this.targetId = e), this.$scope = t, this.$element = n, this.offset = r
            };
            return i.prototype.getTargetElement = function() {
                return !this.target && this.targetId && (this.target = document.getElementById(this.targetId) || document.getElementsByName(this.targetId)[0]), this.target
            }, i.prototype.getTargetPosition = function() {
                var e = this.getTargetElement();
                return e ? e.getBoundingClientRect() : void 0
            }, i.prototype.flushTargetCache = function() {
                this.targetId && (this.target = void 0)
            }, {
                link: function(o, a, s) {
                    var u, l = s.ngHref || s.href;
                    if (l && -1 !== l.indexOf("#") ? u = l.replace(/.*(?=#[^\s]+$)/, "").substring(1) : s.duScrollspy ? u = s.duScrollspy : s.duSmoothScroll && (u = s.duSmoothScroll), u) {
                        var c = n(function() {
                            var n = new i(u, o, a, -(s.offset ? parseInt(s.offset, 10) : t));
                            e.addSpy(n), o.$on("$locationChangeSuccess", n.flushTargetCache.bind(n));
                            var l = r.$on("$stateChangeSuccess", n.flushTargetCache.bind(n));
                            o.$on("$destroy", function() {
                                e.removeSpy(n), l()
                            })
                        }, 0, !1);
                        o.$on("$destroy", function() {
                            n.cancel(c)
                        })
                    }
                }
            }
        }]),
        function() {
            "use strict";
            angular.module("WlSearch", ["ngRoute", "ngSanitize", "ngCookies", "ui.router", "angucomplete-alt", "wl-type-labels", "ngEnter", "btford.modal", "ngScrollTo", "theaquaNg", "720kb.tooltips", "duScroll", "angularUtils.directives.dirPagination"]).constant("wlConfig", {
                api: {
                    uri: "/api-proxy/"
                }
            }).config(["$logProvider", "$sceProvider", "$httpProvider", "wlConfig", function(e, t) {
                t.enabled(!0), e.debugEnabled(!1)
            }])
        }(),
        function() {
            "use strict";

            function e(e, t) {
                t.otherwise("/"), e.state("home", {
                    url: "/?q&f",
                    views: {
                        "search-box": {
                            controller: "AppController",
                            templateUrl: "templates/search-box.html"
                        },
                        sub: {
                            controller: "SearchResultsController",
                            templateUrl: "templates/search.html"
                        }
                    }
                })
            }
            angular.module("WlSearch").config(e), e.$inject = ["$stateProvider", "$urlRouterProvider", "$locationProvider"]
        }(),
        function() {
            "use strict";

            function e(e, t) {
                function n(e) {
                    return e.replace(/\\x([0-9A-Fa-f]{2})/g, function() {
                        return String.fromCharCode(parseInt(arguments[1], 16))
                    })
                }

                function r(e, t) {
                    t = t || "suggestions";
                    var n = [];
                    return angular.forEach(e.data._embedded[t], function(e) {
                        n.push({
                            lemma: e.lemma
                        })
                    }), n
                }

                function i(e) {
                    return t.format(e)
                }
                var o = this;
                o.formatAutoCompleteItems = function(e) {
                    var t = [];
                    return angular.forEach(e.results, function(e) {
                        t.push({
                            title: n(e)
                        })
                    }), {
                        data: t
                    }
                }, o.formatEntry = function(e) {
                    return i(e.data)
                }, o.suggestions = function(e) {
                    var t = [];
                    return t = t.concat(r(e, "insensitive")).concat(r(e, "suggestions")).concat(o.formatKnownMistakes(e)), t = _.uniq(t, "lemma"), t = _.sortBy(t, "lemma")
                }, o.formatKnownMistakes = function(e, t) {
                    var n, r = e.data.searchedFor,
                        i = [];
                    _.each(e.data._embedded.knownmistakes, function(e) {
                        _.each(e.positions, function(e) {
                            n = _.find(e.forms, {
                                orth: r
                            }), n && _.has(n, "correctForm") && i.push(_.result(_.find(e.forms, {
                                id: n.correctForm
                            }), "orth"))
                        })
                    }), _.each(t, function(e) {
                        _.includes(i, e.lemma) && (i = _.remove(i, e.lemma))
                    });
                    var o = function(e) {
                        return {
                            lemma: e
                        }
                    };
                    return i = _.sortBy(_.map(_.uniq(i), o), "lemma")
                }, o.formatSimilarResults = function(e, t, n) {
                    function r(e, t) {
                        return _.find(t, function(t) {
                            return t.id === e.entryId
                        })
                    }
                    var i = [],
                        o = e.data._embedded[t];
                    return angular.forEach(o, function(e) {
                        r(e, n) || i.push({
                            lemma: e.lemma
                        })
                    }), i = _.sortBy(_.uniq(i, "lemma"), "lemma")
                }, o.formatSearchResult = function(e) {
                    var n = [],
                        r = e.data.searchedFor;
                    if (_.has(e, "data._embedded.exact")) var i = e.data._embedded.exact;
                    else if (_.has(e, "data._embedded.entries")) var i = e.data._embedded.entries;
                    else var i = [];
                    angular.forEach(i, function(e) {
                        n.push(t.format(e))
                    });
                    var o = function(e) {
                        var t = new Levenshtein(e.lemma, r),
                            n = t.distance;
                        return n
                    };
                    return n = _.sortByAll(n, [o, "lemma", "wordTypeSortPos", "hyph", "id"])
                }
            }
            angular.module("WlSearch").service("ApiDataFormatter", e), e.$inject = ["$log", "Item"]
        }(),
        function() {
            "use strict";

            function e(e, t, n, r, i, o) {
                function a(e, n) {
                    var n = n || {},
                        i = angular.extend(r, {
                            cache: !1,
                            params: n
                        });
                    return t.get(e, i)
                }

                function s() {
                    var e = [],
                        t = l + "?m=entries";
                    return _.each(c.searchResults, function(n) {
                        n.groupId && e.push(a(t, {
                            groupId: n.groupId
                        }))
                    }), e.length ? i.all(e).then(function(e) {
                        _.each(e, function(e) {
                            _.has(e, 'data._embedded["spel:entryResourceList"]') && _.each(e.data._embedded["spel:entryResourceList"], function(e) {
                                c.searchedFor !== e.lemma && (_.find(c.similarResults, function(t) {
                                    return t.lemma === e.lemma
                                }) || c.moreResults.push({
                                    lemma: e.lemma
                                }))
                            })
                        }), c.moreResults = _.sortBy(_.uniq(c.moreResults, "lemma"), "lemma")
                    }) : i(function(e) {
                        e([])
                    })
                }

                function u(e) {
                    var t = e.substring(0, 3).match(/[\?\*\/]/);
                    return t
                }
                var l = o.api.uri,
                    c = this;
                c.searchResults = [], c.similarResults = [], c.moreResults = [], c.suggestions = [], c.searchedFor = "", c.wildCardSearch = !1, c.search = function(e) {
                    if (c.searchResults = [], c.suggestions = [], c.similarResults = [], c.moreResults = [], c.searchedFor = "", angular.isUndefined(e) || 0 === e.trim().length) return i(function(e) {
                        e([])
                    });
                    var t = l + "?m=search",
                        r = {
                            searchValue: e,
                            tactical: !0
                        },
                        o = a(t, r).then(function(e) {
                            if (c.searchedFor = e.data.searchedFor, c.searchResults = n.formatSearchResult(e), 0 === c.searchResults.length) {
                                var t = n.suggestions(e, "insensitive"),
                                    r = n.formatSimilarResults(e, "partOfGroup", c.searchResults);
                                c.suggestions = _.merge(t, r)
                            } else if (c.similarResults = n.formatSimilarResults(e, "insensitive", c.searchResults), 0 === c.similarResults.length && (c.similarResults = n.formatKnownMistakes(e, c.searchResults)), c.moreResults = n.formatSimilarResults(e, "partOfGroup", c.searchResults, c.similarResults), !c.wildCardSearch) return s()
                        });
                    return o
                }, c.autoComplete = function(e) {
                    if (u(e)) return i(function(e) {
                        e([])
                    });
                    var t = l + "?m=autocomplete";
                    return a(t, {
                        searchValue: e
                    }).then(function(e) {
                        return n.formatAutoCompleteItems(e.data)
                    })
                }
            }
            angular.module("WlSearch").value("httpDefaults", {
                timeout: 3e4
            }).service("ApiService", e), e.$inject = ["$log", "$http", "ApiDataFormatter", "httpDefaults", "$q", "wlConfig"]
        }(),
        function() {
            "use strict";

            function e() {
                function e(e) {
                    return e ? e.replace(/\|/g, "&#183;").trim() : ""
                }

                function t(e) {
                    var t = /(\[((http.*?))\])/g;
                    return e.replace(t, '<a href="$2">$2</a>')
                }
                return {
                    hyph: e,
                    replaceLinks: t
                }
            }
            angular.module("WlSearch").factory("DataFormatter", e), e.$inject = []
        }(),
        function() {
            "use strict";

            function e() {
                function e(e) {
                    if (!_.has(e, "gram.gender")) return !1;
                    var t = [{
                            code: "m",
                            text: "(m)",
                            tip: "mannelijk"
                        }, {
                            code: "f",
                            text: "(v)",
                            tip: "vrouwelijk"
                        }, {
                            code: "n",
                            text: "(o)",
                            tip: "onzijdig"
                        }, {
                            code: "m/f",
                            text: "(m/v)",
                            tip: "mannelijk/vrouwelijk"
                        }, {
                            code: "m/f/n",
                            text: "(m/v/o)",
                            tip: "mannelijk/vrouwelijk/onzijdig"
                        }, {
                            code: "f/n",
                            text: "(v/o)",
                            tip: "vrouwelijk/onzijdig"
                        }, {
                            code: "m/n",
                            text: "(m/o)",
                            tip: "mannelijk/onzijdig"
                        }],
                        n = _.find(t, {
                            code: e.gram.gender
                        });
                    return n
                }
                return {
                    format: e
                }
            }
            angular.module("WlSearch").factory("Gender", e), e.$inject = ["$log"]
        }(),
        function() {
            "use strict";

            function e(e, t, n, r, i, o) {
                function a(e) {
                    return {
                        detail: r.findDetailedWordType(e),
                        main: r.findMainWordType(e)
                    }
                }

                function s(e) {
                    return _.has(e, "gram.art") ? e.gram.art : ""
                }

                function u(e) {
                    return _.get(e, "gloss") || ""
                }

                function l(e) {
                    var t = _.get(e, "lemmaHyph");
                    return t ? n.hyph(t) : ""
                }

                function c(e) {
                    function n(e, n) {
                        "taaladvies" === e && r.push({
                            label: "Taaladvies",
                            url: "http://taaladvies.net/taal/advies/" + n
                        }), "leidraad" === e && r.push({
                            label: "Leidraad",
                            url: t.protocol() + "://" + t.host() + "/leidraad/" + n
                        })
                    }
                    var r = [],
                        i = _.get(e, "spellingInfo.link.type"),
                        o = _.get(e, "spellingInfo.link.value");
                    if (!i) return r;
                    if (-1 !== i.indexOf("|")) {
                        var a = i.split("|"),
                            s = o.split("|");
                        _.each(a, function(e, t) {
                            n(e, s[t])
                        })
                    } else n(i, o);
                    var u = _.groupBy(r, function(e) {
                            return e.label
                        }),
                        l = [];
                    return _.each(u, function(e, t) {
                        l.push({
                            label: t,
                            links: e
                        })
                    }), l
                }

                function f(e) {
                    var t = {
                            nuance: ""
                        },
                        r = _.get(e, "spellingInfo.comment.type"),
                        i = _.get(e, "spellingInfo.comment.value");
                    return "nuance" === r && (t.nuance = n.replaceLinks(i)), t
                }

                function p(e) {
                    var t = e.lemma.trim();
                    return e.trademark && (t += "<sup>&reg;</sup>"), t
                }

                function h(e) {
                    var t = s(e),
                        n = p(e);
                    return t && (n = t + " " + n), n
                }

                function d(e) {
                    var t = {
                        id: e.entryId,
                        lemma: p(e),
                        word: h(e),
                        hyph: l(e),
                        gloss: u(e),
                        article: s(e),
                        info: i.format(e),
                        links: c(e),
                        groupId: e.groupId,
                        spellingInfo: f(e),
                        wordType: a(e),
                        wordTypeSortPos: r.findSortPos(e),
                        gender: o.format(e),
                        typeCode: _.get(e, "gram.pos"),
                        hasContent: function() {
                            return this.info.data.length || "" !== this.gloss || "" !== this.spellingInfo.nuance || this.links.length
                        },
                        isVerb: function() {
                            return "VRB" === e.gram.pos
                        }
                    };
                    return t
                }
                return {
                    format: d
                }
            }
            angular.module("WlSearch").factory("Item", e), e.$inject = ["$log", "$location", "DataFormatter", "WordTypeMapping", "Positions", "Gender"]
        }(),
        function() {
            "use strict";

            function e(e, t) {
                function n(e, n, r, i, o) {
                    var i = i || "",
                        o = o || "",
                        r = r || "",
                        n = n || "";
                    e.push({
                        label: n,
                        labelOptional: r,
                        orth: i.trim(),
                        hyph: t.hyph(o)
                    })
                }

                function r(e, r, i, o) {
                    var a = 0,
                        s = _.find(e.positions, {
                            label: o
                        });
                    if (_.has(s, "forms")) {
                        var u = _.filter(s.forms, function(e) {
                            return e.approved
                        });
                        _.each(u, function(e) {
                            n(r, {
                                label_1: i,
                                label_2: 0 == a++ ? i : ""
                            }, {
                                label_1: "",
                                label_2: ""
                            }, e.orth ? e.orth.trim() : "", t.hyph(e.hyph))
                        })
                    }
                }

                function i(e, r, i, o, s) {
                    function u(e, t) {
                        var n = _.find(a, {
                            full: e
                        });
                        if ("bs" === e) return {
                            full: "",
                            abbr: ""
                        };
                        if (n && t.bijzin) {
                            var r = "2mvovt" === t.pos || "2evovt" === t.pos ? "/u" : "";
                            return {
                                full: "dat " + n.full + r,
                                abbr: "dat " + n.abbr + r
                            }
                        }
                        return "2evovt" === t.pos ? {
                            full: n.full + "/u",
                            abbr: n.abbr + "/u"
                        } : n
                    }

                    function l(e, t) {
                        if ("bs" === e && -1 !== t.type.indexOf("position=bs")) {
                            var n = t.orth ? t.orth.trim() : "";
                            if (!n) return "";
                            if (-1 === n.indexOf(" ")) return n + " jij?";
                            var r = n.split(" ");
                            return r[0] + " jij " + r[1] + "?"
                        }
                        return t.orth ? t.orth.trim() : ""
                    }
                    s = s ? !0 : !1;
                    var c, f, p, h = 0,
                        d = [];
                    _.forEach(a, function(t, n) {
                        f = _.find(e.positions, {
                            label: t.data[o]
                        }), f && (c = _.filter(f.forms, function(e) {
                            return e.approved
                        }).map(function(e) {
                            return e.pos = f.label, e
                        }), s ? c = _.filter(c, function(t) {
                            return _.has(e.gram, "sep") && -1 === t.type.indexOf("separated=yes")
                        }).map(function(e) {
                            return e.bijzin = 1, e
                        }) : _.has(e.gram, "sep") && (c = _.filter(c, function(e) {
                            return -1 !== e.type.indexOf("separated=yes")
                        })), "u" === n && (c = _.filter(c, function(e) {
                            return -1 !== e.type.indexOf("usage=u")
                        })), "jij" === n && (c = _.filter(c, function(e) {
                            return -1 === e.type.indexOf("usage=u") && -1 === e.type.indexOf("bs")
                        })), "bs" === n && (c = _.filter(c, function(e) {
                            return -1 !== e.type.indexOf("bs")
                        })), _.each(c, function(e) {
                            _.isUndefined(d[n]) && (d[n] = []), d[n].push(e)
                        }))
                    }), _.forOwn(d, function(e, o) {
                        e = _.sortBy(e, "orth"), _.each(e, function(e) {
                            n(r, {
                                label_1: i,
                                label_2: 0 == h++ ? i : ""
                            }, {
                                label_1: u(o, e),
                                label_2: p == o ? "" : u(o, e)
                            }, l(o, e), t.hyph(e.hyph)), p = o
                        })
                    })
                }

                function o(e) {
                    var o = [],
                        a = _.get(e, "gram.pos");
                    if ("VRB" == a) r(e, o, {
                        full: "infinitief",
                        abbr: "inf."
                    }, "inf"), i(e, o, {
                        full: "tegenwoordige tijd",
                        abbr: "tegenw. tijd"
                    }, 0), i(e, o, {
                        full: "tegenwoordige tijd bijzinvolgorde",
                        abbr: "tegenw. t. bijzinv."
                    }, 0, !0), i(e, o, {
                        full: "verleden tijd",
                        abbr: "verl. tijd"
                    }, 1), i(e, o, {
                        full: "verleden tijd bijzinvolgorde",
                        abbr: "verl. t. bijzinv."
                    }, 1, !0), r(e, o, {
                        full: "voltooid deelwoord",
                        abbr: "volt. deelw."
                    }, "vtd"), r(e, o, {
                        full: "tegenwoordig deelwoord",
                        abbr: "tegenw. deelw."
                    }, "twd");
                    else if ("AA" == a) r(e, o, {
                        full: "stellende trap",
                        abbr: "stel. trap"
                    }, "basis"), r(e, o, {
                        full: "verbogen stellende trap",
                        abbr: "verb. stel. trap."
                    }, "verbogen"), r(e, o, {
                        full: "s-vorm",
                        abbr: "s-vorm"
                    }, "gen"), r(e, o, {
                        full: "vergrotende trap",
                        abbr: "vergr. trap"
                    }, "com"), r(e, o, {
                        full: "verbogen vergrotende trap",
                        abbr: "verb. vergr. trap"
                    }, "com_verbogen"), r(e, o, {
                        full: "overtreffende trap",
                        abbr: "overtr. trap"
                    }, "sup"), r(e, o, {
                        full: "verbogen overtreffende trap",
                        abbr: "verb. overtr. trap"
                    }, "sup_verbogen");
                    else {
                        var s, u, l, o = [];
                        _.forEach(e.positions, function(e) {
                            if (s = _.get(e, "form.orth"), l = _.get(e, "label"), u = _.get(e, "form.hyph"), s) {
                                var r = {
                                    orth: s,
                                    label: l,
                                    hyph: ""
                                };
                                u && (r.hyph = t.hyph(u)), n(o, r.label, "", r.orth, r.hyph)
                            }
                        })
                    }
                    _.includes(["NOU-C", "NOU-P"], e.gram.pos) && (r(e, o, {
                        full: "enkelvoud",
                        abbr: "ev."
                    }, "ev"), r(e, o, {
                        full: "meervoud",
                        abbr: "mv."
                    }, "mv"), r(e, o, {
                        full: "enkelvoud verkleinvorm",
                        abbr: "env. verkl."
                    }, "dim_ev"), r(e, o, {
                        full: "meervoud verkleinvorm",
                        abbr: "mv. verkl."
                    }, "dim_mv"));
                    var c, f = {};
                    return _.each(o, function(e) {
                        c = e.label.label_1.full, _.has(f, c) || (f[c] = {
                            label: e.label.label_1,
                            data: []
                        }), f[c].data.push(e)
                    }), {
                        data: o,
                        grouped: f
                    }
                }
                var a = {
                    ik: {
                        abbr: "ik",
                        full: "ik",
                        data: ["1evott", "1evovt"]
                    },
                    jij: {
                        abbr: "jij",
                        full: "jij",
                        data: ["2evott", "2evovt"]
                    },
                    bs: {
                        abbr: "bs",
                        full: "bs",
                        data: ["2evott"]
                    },
                    u: {
                        abbr: "u",
                        full: "u",
                        data: ["2evott"]
                    },
                    "hij/zij/het": {
                        abbr: "hij/...",
                        full: "hij/zij/het",
                        data: ["3evott", "3evovt"]
                    },
                    wij: {
                        abbr: "wij",
                        full: "wij",
                        data: ["1mvott", "1mvovt"]
                    },
                    jullie: {
                        abbr: "jullie",
                        full: "jullie",
                        data: ["2mvott", "2mvovt"]
                    },
                    zij: {
                        abbr: "zij",
                        full: "zij",
                        data: ["3mvott", "3mvovt"]
                    }
                };
                return {
                    format: o
                }
            }
            angular.module("WlSearch").factory("Positions", e), e.$inject = ["$log", "DataFormatter"]
        }(),
        function() {
            "use strict";

            function e(e, t, n, r) {
                function i(e) {
                    var t = e.match(/[\?\*]/);
                    return t
                }

                function o() {
                    a.searchedKeyword = "", a.searchResults = [], a.searchType = "", a.error = "", a.suggestions = [], a.similarResults = [], a.moreResults = []
                }
                var a = this;
                return a.searchedKeyword = "", a.searchResults = [], a.searchType = "", a.error = "", a.suggestions = [], a.similarResults = [], a.moreResults = [], a.isWildcardSearch = i, a.setKeyword = function(e) {
                    e = e.trim(), r.$broadcast("keyword:set", e)
                }, a.isWildcard = function() {
                    return "wildcard" == a.searchType
                }, a.isSearch = function() {
                    return "search" == a.searchType
                }, a.isSuggestions = function() {
                    return "suggestions" == a.searchType
                }, a.hasSuggestions = function() {
                    return a.suggestions.length > 0 || a.moreResults.length > 0
                }, a.fetchResults = function(e) {
                    return o(), r.$broadcast("angucomplete-alt:clearInput"), setTimeout(function() {
                        $("#kw_value").val(e)
                    }, 10), r.$broadcast("results-loading", !0), n.wildCardSearch = i(e), n.search(e).then(function() {
                        a.searchedKeyword = n.searchedFor, n.suggestions.length && (a.suggestions = n.suggestions), n.wildCardSearch ? (a.searchResults = _.uniq(n.searchResults, "lemma"), a.searchType = "wildcard") : (a.searchResults = n.searchResults, a.similarResults = n.similarResults, a.moreResults = n.moreResults, a.searchType = "search")
                    }).catch(function() {
                        a.error = "We konden de gegevens niet ophalen. Gelieve later opnieuw te proberen."
                    }).finally(function() {
                        r.$broadcast("results-loading", !1)
                    })
                }, a
            }
            angular.module("WlSearch").factory("Search", e), e.$inject = ["$log", "$q", "ApiService", "$rootScope", "$location", "$window"]
        }(),
        function() {
            "use strict";

            function e(e) {
                function filteredWordTypes(t) {
                    return _.filter(e, function(e, n) {
                        return _.contains(t, n)
                    })
                }

                function findMainWordType(t) {
                    var n = _.get(t, "gram.pos"),
                        r = {
                            full: _.get(e, n).label,
                            abbr: _.get(e, n).abbr
                        };
                    return r
                }

                function findDetailedWordType(t) {
                    var n, langGramtype, afkGramtype, type = _.get(t, "gram.pos"),
                        gramType = _.get(t, "gram.type"),
                        scheidbaar = _.get(t, "gram.sep"),
                        lidwoordSubtype = _.get(t, "gram.subtypeArt"),
                        subtype = _.get(t, "gram.subtype");
                    type || (n = {
                        full: "",
                        abbr: ""
                    }), "NOU-P" === type && "language" === gramType && (n = {
                        full: "taalnaam",
                        abbr: "taaln"
                    }), "NUM" === type && ("ord" === gramType && (n = {
                        full: "rangtelwoord",
                        abbr: "rangtelw"
                    }), "card" === gramType && (n = {
                        full: "hoofdtelwoord",
                        abbr: "hoofdtelw"
                    }, "fraction" === subtype && (n = {
                        full: "breuk",
                        abbr: "brk"
                    }))), "ADV" === type && "pron" === gramType && (n = {
                        full: "voornaamwoordelijk bijwoord",
                        abbr: "vnw bw"
                    }), "PD" === type && ("indef" === gramType && (langGramtype = "onbepaald ", afkGramtype = "onbep "), "int" === gramType && (langGramtype = "vragend ", afkGramtype = "vragend "), "recip" === gramType && (langGramtype = "wederkerig ", afkGramtype = "wederk "), "refl" === gramType && (langGramtype = "reflexief ", afkGramtype = "refl "), "poss" === gramType && (langGramtype = "bezittelijk ", afkGramtype = "bez "), "rel" === gramType && (langGramtype = "betrekkelijk ", afkGramtype = "bet "), "dem" === gramType && (langGramtype = "aanwijzend ", afkGramtype = "aanw "), "pers" === gramType && (langGramtype = "persoonlijk ", afkGramtype = "pers "), n = {
                        full: langGramtype + _.get(e, type).label,
                        abbr: afkGramtype + _.get(e, type).abbr
                    }), "VRB" === type && "yes" === scheidbaar && (n = {
                        full: "scheidbaar werkwoord",
                        abbr: "sch ww"
                    }), "ART" === type && ("def" === lidwoordSubtype && (n = {
                        full: "bepaald lidwoord",
                        abbr: "bep lidw"
                    }), "indef" === lidwoordSubtype && (n = {
                        full: "onbepaald lidwoord",
                        abbr: "onbep lidw"
                    })), _.isEmpty(n) && (n = {
                        full: _.get(e, type).label,
                        abbr: _.get(e, type).abbr
                    });
                    var c = {
                        full: [],
                        abbr: []
                    };
                    "abbr" === _.get(t, "gram.wf") && (c.full.push("afkorting"), c.abbr.push("afk")), "symb" === _.get(t, "gram.wf") && (c.full.push("symbool"), c.abbr.push("symb")), ("COLL" === type || "ADV" === type) && "arch" === gramType && (c.full.push("archaïsch"), c.abbr.push("arch"));
                    var f = {
                        main: n,
                        extra: c
                    };
                    return f
                }
                return {
                    findDetailedWordType: findDetailedWordType,
                    findMainWordType: findMainWordType,
                    filteredWordTypes: filteredWordTypes,
                    findSortPos: function(t) {
                        var n = _.get(t, "gram.pos");
                        return _.get(e, n).pos
                    }
                }
            }
            var woordtype = {
                AA: {
                    code: "AA",
                    label: "bijvoeglijk naamwoord",
                    abbr: "bnw",
                    pos: 3
                },
                ADV: {
                    code: "ADV",
                    label: "bijwoord",
                    abbr: "bw",
                    pos: 7
                },
                ADP: {
                    code: "ADP",
                    label: "voorzetsel",
                    abbr: "voorz",
                    pos: 8
                },
                ART: {
                    code: "ART",
                    label: "lidwoord",
                    abbr: "lidw",
                    pos: 6
                },
                COLL: {
                    code: "COLL",
                    label: "verbinding",
                    abbr: "verb",
                    pos: 12
                },
                CONJ: {
                    code: "CONJ",
                    label: "voegwoord",
                    abbr: "voegw",
                    pos: 9
                },
                INT: {
                    code: "INT",
                    label: "tussenwerpsel",
                    abbr: "tussenw",
                    pos: 11
                },
                RES: {
                    code: "RES",
                    label: "",
                    abbr: "",
                    pos: 13
                },
                "NOU-C": {
                    code: "NOU-C",
                    label: "zelfstandig naamwoord",
                    abbr: "znw",
                    pos: 1
                },
                "NOU-P": {
                    code: "NOU-P",
                    label: "naam",
                    abbr: "naam",
                    pos: 2
                },
                NUM: {
                    code: "NUM",
                    label: "telwoord",
                    abbr: "telw",
                    pos: 10
                },
                VRB: {
                    code: "VRB",
                    label: "werkwoord",
                    abbr: "ww",
                    pos: 4
                },
                PD: {
                    code: "PD",
                    label: "voornaamwoord",
                    abbr: "vnw",
                    pos: 5
                }
            };
            angular.module("WlSearch").value("wordTypeMappingData", woordtype).factory("WordTypeMapping", e), e.$inject = ["wordTypeMappingData"]
        }(),
        function() {
            "use strict";
            angular.module("ngEnter", []).directive("ngEnter", function() {
                return function(e, t, n) {
                    t.bind("keydown keypress", function(t) {
                        13 === t.which && (e.$apply(function() {
                            e.$eval(n.ngEnter, {
                                $event: t
                            })
                        }), t.preventDefault())
                    })
                }
            })
        }(),
        function() {
            "use strict";
            angular.module("theaquaNg", ["ng"]).directive("ngSwitcher", ["$rootScope", function(e) {
                return {
                    require: "ngModel",
                    restrict: "AE",
                    scope: {},
                    template: '<div class="switch" ng-class="{\'switch-left\': !model, \'switch-right\': model}" ng-click="toggle()">\n  <div class="switch-button">&nbsp;</div>\n</div>',
                    link: function(t, n, r, i) {
                        var o;
                        return o = function() {
                            return t.model = i.$viewValue
                        }, t.toggle = function() {
                            return i.$setViewValue(!i.$viewValue), e.$broadcast("ng-switch-toggle", i.$viewValue), o()
                        }, i.$render = function() {
                            return o()
                        }
                    }
                }
            }])
        }.call(this),
        function() {
            "use strict";

            function e() {
                function e(e, t) {
                    t.bind("click", function(t) {
                        $(t.target).closest("ul").hide();
                        var n = $(t.target).closest("li");
                        e.setSelected({
                            value: n.data("id"),
                            label: n.text()
                        }), e.$apply()
                    })
                }
                return {
                    restrict: "A",
                    link: e,
                    require: "^wlDropdown"
                }
            }

            function t() {
                function e(e) {
                    function t(t) {
                        e.selected = t.value, e.selectedLabel = t.label
                    }
                    e.sources = [{
                        id: "wl",
                        label: "Woordenlijst"
                    }, {
                        id: "ld",
                        label: "Leidraad"
                    }], e.setSelected = t, e.selected && (e.selectedLabel = _.result(_.find(e.sources, {
                        id: e.selected
                    }), "label")), e.selectedLabel || (e.selectedLabel = _.result(_.first(e.sources), "label"))
                }

                function t() {
                    function e() {
                        var e = $(".search-block-container-dropdown"),
                            t = $(".search-block-container-dropdown ul");
                        t.css("top", e.find(".active-nav").css("height")), t.css("width", parseInt(t.parent().css("width")))
                    }
                    e(), $(".search-block-container-dropdown").hoverIntent(function() {
                        $(".search-block-container-dropdown ul").show()
                    }, function() {
                        $(".search-block-container-dropdown ul").hide()
                    }), $(".search-block-container-dropdown .active-nav").click(function() {
                        $(".search-block-container-dropdown ul").show()
                    })
                }
                return e.$inject = ["$scope"], {
                    restrict: "EA",
                    scope: {
                        selected: "=",
                        selectedLabel: "="
                    },
                    template: '<div class="search-block-container-dropdown"><div class="active-nav cr"><div class="selected">{{ selectedLabel }}</div><div class="arr">&#9660;</div></div><ul class="type-nav"><li ng-repeat="sourceItem in sources" wl-dropdown-select data-id="{{ sourceItem.id }}">{{ sourceItem.label }}</li></ul></div>',
                    controller: e,
                    link: t
                }
            }
            angular.module("wl-dropdown", []).directive("wlDropdownSelect", e).directive("wlDropdown", t), t.$inject = ["$log"]
        }(),
        function() {
            "use strict";

            function e(e, t, n) {
                function r(e) {
                    function t() {
                        var t = [];
                        return _.each(e.searchResults, function(e) {
                            _.has(e, "typeCode") && t.push(e.typeCode)
                        }), _.uniq(t)
                    }

                    function r(t) {
                        _.contains(e.wordType, t) ? _.remove(e.wordType, function(e) {
                            return e == t
                        }) : e.wordType.push(t)
                    }
                    e.wordType = e.wordType || [], e.setWordType = r;
                    var i = t();
                    e.wordTypes = n.filteredWordTypes(i), _.each(e.wordTypes, function(t) {
                        e.setWordType(t.code)
                    })
                }

                function i() {
                    t(function() {
                        $(".type-label").labelauty()
                    })
                }
                return r.$inject = ["$scope"], {
                    restrict: "E",
                    scope: {
                        wordType: "=",
                        searchResults: "="
                    },
                    template: '<div ng-show="wordTypes.length > 1" ng-repeat="wordType in wordTypes | orderBy: \'pos\'"><div style="margin-bottom: 5px"><input checked="true" ng-click="setWordType(wordType.code)" data-labelauty="{{ wordType.label }}" name="wordType" class="type-label" type="checkbox"></div></div>',
                    controller: r,
                    link: i
                }
            }
            angular.module("wl-type-labels", []).directive("wlTypeLabels", e), e.$inject = ["$log", "$timeout", "WordTypeMapping"]
        }(),
        function() {
            "use strict";
            angular.module("WlSearch").filter("highlight", ["$sce", function(e) {
                return function(t, n) {
                    return n && t && (t = t.replace(new RegExp("(\\b" + n + "\\b)"), '<span class="highlighted">$1</span>')), e.trustAsHtml(t)
                }
            }])
        }(),
        function() {
            "use strict";
            angular.module("WlSearch").filter("wordType", function() {
                return function(e, t) {
                    if (0 === t.length) return [];
                    if (!t || 0 === t.length) return e;
                    var n = [];
                    return angular.forEach(e, function(e) {
                        _.contains(t, e.typeCode) && n.push(e)
                    }), n
                }
            })
        }(),
        function() {
            "use strict";

            function e(e) {
                return e({
                    controller: "WildCardModalController",
                    templateUrl: "templates/wildcard-modal.html"
                })
            }

            function t(e, t) {
                e.closeMe = t.deactivate
            }

            function n(e, t, n, r, i, o) {
                function a() {
                    setTimeout(function() {
                        $("#kw_value").focus()
                    })
                }

                function s() {
                    o.activate()
                }

                function u(e) {
                    r.go("detail", {
                        q: e.title
                    })
                }

                function l(e) {
                    return n.autoComplete(e)
                }

                function c() {
                    var e = $("#kw_value").val();
                    i.setKeyword(e)
                }

                function f(e) {
                    if (!angular.isUndefined(e)) {
                        var e = e.originalObject.title;
                        i.setKeyword(e)
                    }
                }
                t.loadingResults = !1, t.toDetail = u, t.keyword = "", t.autocompleteSelect = f, t.autocomplete = l, t.searchButtonClick = c, t.showWildCardModal = s, t.selectedSource = "", t.$on("results-loading", function(e, n) {
                    t.loadingResults = n
                }), a()
            }
            angular.module("WlSearch").factory("WildCardModal", e).controller("WildCardModalController", t).controller("AppController", n), e.$inject = ["btfModal"], t.$inject = ["$scope", "WildCardModal"], n.$inject = ["$log", "$scope", "ApiService", "$state", "Search", "WildCardModal"]
        }(),
        function() {
            "use strict";

            function e(e, t, n, r, i, o, a, s, u) {
                function l() {
                    if (a.showDetails = "undefined" == typeof o.get("showDetails") ? 1 : parseInt(o.get("showDetails")), u.q) {
                        $("#mini-panel-taalblokken").hide();
                        var e = decodeURIComponent(u.q);
                        c(e)
                    } else $("#mini-panel-taalblokken").show()
                }

                function c(t) {
                    t = t.trim(), e.fetchResults(t).then(function() {
                        a.Search = e
                    })
                }
                a.wordType, a.fetchResults = c, a.more = !1, a.$on("keyword:set", function(e, t) {
                    s.go("home", {
                        q: t
                    }, {
                        reload: !0
                    })
                }), a.$on("results-loading", function(e, t) {
                    a.loadingResults = t
                }), a.$on("ng-switch-toggle", function(e, t) {
                    o.put("showDetails", t ? 1 : 0)
                }), a.$on("$viewContentLoaded", function() {
                    i(function() {
                        if (u.f) {
                            var e = angular.element(document.getElementById(u.f));
                            _.isEmpty(e) || (n.scrollToElementAnimated(e), r.search("f", null))
                        }
                    }, 500)
                }), l()
            }
            angular.module("WlSearch").controller("SearchResultsController", e), e.$inject = ["Search", "$log", "$document", "$location", "$timeout", "$cookies", "$scope", "$state", "$stateParams"]
        }(), angular.module("WlSearch").run(["$templateCache", function(e) {
            e.put("templates/search-box.html", '<div class="search-block-container cf">\n    <!--<wl-dropdown selected="selectedSource"></wl-dropdown>-->\n    <div class="search-block-container-search">\n        <div class="search-block-container-input">\n            <div class="sbc-autocomplete">\n                <angucomplete-alt id="kw"\n                                  ng-enter="searchButtonClick()"\n                                  placeholder="Zoek naar..."\n                                  pause="400"\n                                  initial-value="keyword"\n                                  disable-input="loadingResults"\n                                  selected-object="autocompleteSelect"\n                                  remote-api-handler="autocomplete"\n                                  minlength="3"\n                                  clear-selected="true"\n                                  text-no-results="false"\n                                  text-searching="Aan het zoeken..."\n                                  title-field="title"\n                                  input-class="form-control form-control-small">\n                </angucomplete-alt>\n            </div>\n            <div class="sbc-button">\n                <button id="searchBtn" ng-click="searchButtonClick()">Zoek</button>\n            </div>\n        </div>\n        <div class="sbc-info">\n            <a href ng-click="showWildCardModal()">Meer over gebruik van jokers in uw zoekopdracht</a>\n        </div>\n    </div>\n</div>\n'), e.put("templates/search-results-bu.html", '<div ng-if="Search.searchResults.length == 0 && !loadingResults">\n    <h4 class="results-found-hdr">\n        Spelling <strong>{{ Search.searchedKeyword }}</strong> niet gevonden\n    </h4>\n\n    <div ng-if="Search.suggestions.length == 0">\n        Zoek opnieuw met een andere zoekterm, of kijk in de <a target="_blank" href="/leidraad">leidraad</a> voor de\n        regels m.b.t. de spelling.\n        U kan uw spellingvraag ook stellen op <a target="_blank" href="http://taaladvies.net">Taaladvies.net</a>.\n    </div>\n</div>\n\n<div class="results" ng-show="Search.searchResults.length && !loadingResults">\n\n    <div class="cf">\n        <div class="pull-left main-container">\n            <h4 class="results-found-hdr cf">\n                {{ Search.searchResults.length }}\n                <span ng-show="Search.searchResults.length == 1">resultaat</span>\n                <span ng-show="Search.searchResults.length != 1">resultaten</span>\n                voor spelling <strong>{{ Search.searchedKeyword }}</strong>\n\n                <div class="show-glyphs-container cf">\n                    <div class="label pull-left">\n                        <span ng-show="!showDetails">details</span>\n                        <span ng-show="showDetails">details</span>\n                    </div>\n                    <div class="pull-left">\n                        <div ng-switcher ng-model="showDetails"></div>\n                    </div>\n                </div>\n            </h4>\n\n            <div class="result-listing-intro-container cf" ng-if="Search.searchResults.length > 1">\n                <div class="result-listing-intro">\n                    <div scroll-to="item_{{ searchResult.id }}" class="result-listing-intro-item cf" ng-repeat="searchResult in Search.searchResults">\n                        <div class="pull-left">\n                            <span class="index">{{ $index+1 }}</span>\n                            <span class="text">\n                                <a class="link" href scroll-to="item_{{ searchResult.id }}">\n                                    <span ng-bind-html="searchResult.lemma"></span>\n                                </a>\n                            </span>\n                        </div>\n                        <div class="info pull-left" ng-if="searchResult.article">\n                            &rightarrow; {{ searchResult.article }} <strong ng-bind-html="searchResult.lemma | highlight:Search.searchedKeyword">{{ searchResult.lemma }}</strong>\n                        </div>\n                    </div>\n                </div>\n            </div>\n\n            <div class="result-item" ng-repeat="searchResult in Search.searchResults">\n\n                <h2 id="item_{{ searchResult.id }}">\n                    <span class="prefix">{{ searchResult.article }}</span>\n                    <span class="text" ng-bind-html="searchResult.lemma"></span>\n                    <span ng-show="showDetails"\n                          class="gender"\n                          ng-if="searchResult.gender"\n                          tooltips\n                          tooltip-title="{{ searchResult.gender.tip }}">\n                            {{ searchResult.gender.text }}\n                    </span>\n                    <sup class="index" ng-if="Search.searchResults.length > 1">{{$index+1}}</sup>\n                    <span class="glyph" ng-show="showDetails && searchResult.hyph">\n                        [<span ng-bind-html="searchResult.hyph"></span>]\n                    </span>\n                </h2>\n\n                <h5 ng-show="showDetails" class="word-type">\n                    <span class="type-label">{{ searchResult.type.main.label }}</span><span class="type-abbr" tooltips tooltip-title="{{ searchResult.type.main.label }}">{{ searchResult.type.main.abbr }}</span><span ng-if="searchResult.type.main.label && searchResult.type.extra.label.length">,</span>\n                    <span class="type-label">{{ searchResult.type.extra.label.join(\', \') }}</span>\n                    <span class="type-abbr" tooltips tooltip-title="{{ searchResult.type.extra.label.join(\', \') }}">{{ searchResult.type.extra.abbr.join(\', \') }}</span>\n                </h5>\n\n                <div class="detail-container" ng-show="searchResult.hasContent()">\n\n                    <div ng-if="searchResult.gloss">\n                        <p class="gloss">{{ searchResult.gloss }}</p>\n                    </div>\n\n                    <div ng-show="showDetails" ng-if="searchResult.spellingInfo.nuance">\n                        <h4>Toelichting</h4>\n                        <p class="nuance" ng-bind-html="searchResult.spellingInfo.nuance | highlight:Search.searchedKeyword"></p>\n                    </div>\n\n                    <style>\n                        .conjugations {\n                            display: table;\n                            width: 100%;\n                            border-collapse: collapse;\n                        }\n                        .conjugations .row {\n                            display: table-row;\n                        }\n                        .conjugations .col {\n                            display: table-cell;\n                            padding: 10px;\n                            border: 1px solid #eee;\n                        }\n                        h3 {\n                            margin: 0 0 10px 0;\n                        }\n                        .group {\n                            margin-bottom: 10px;\n                        }\n                    </style>\n\n                    <div>\n                        <div class="group" ng-repeat="info in searchResult.info.grouped">\n                            <h3>\n                                <span class="type-label">{{ info.label.full }}</span>\n                                <span class="type-abbr" tooltips tooltip-title="{{ info.label.full }}">{{ info.label.abbr }}</span>\n                            </h3>\n                            <div ng-repeat="line in info.data">\n                                <span class="type-label">{{ line.labelOptional.label_1.label }}</span>\n                                <span class="type-abbr" tooltips tooltip-title="{{ line.labelOptional.label_1.label }}">{{ line.labelOptional.label_1.abbr }}</span>\n                                <span ng-bind-html="line.orth | highlight:Search.searchedKeyword"></span>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class="info-table-container" ng-if="searchResult.isVerb()">\n                        <table class="info-table">\n                            <tr ng-repeat="info in searchResult.info.data">\n                                <td class="brdr word-type" ng-show="showDetails">\n                                    <span class="type-label">{{ info.label.label_2.label }}</span>\n                                    <span class="type-abbr" tooltips tooltip-title="{{ info.label.label_2.label }}">{{ info.label.label_2.abbr }}</span>\n                                </td>\n                                <td class="brdr">\n                                    <span class="type-label">{{ info.labelOptional.label_2.label }}</span>\n                                    <span class="type-abbr" tooltips tooltip-title="{{ info.labelOptional.label_2.label }}">{{ info.labelOptional.label_2.abbr }}</span>\n                                </td>\n                                <td class="brdr"><span\n                                        ng-bind-html="info.orth | highlight:Search.searchedKeyword"></span>\n                                </td>\n                                <td class="brdr" ng-show="showDetails">\n                                    <span class="glyph" ng-show="showDetails && info.hyph">[<span\n                                            ng-bind-html="info.hyph"></span>]</span>\n                                </td>\n                            </tr>\n                        </table>\n                    </div>\n\n                    <div ng-if="!searchResult.isVerb()">\n                        <table class="info-table">\n                            <tr ng-repeat="info in searchResult.info.data">\n                                <td class="brdr word-type" ng-show="showDetails">\n                                    <span class="type-label">{{ info.label.full }}</span>\n                                    <span class="type-abbr" tooltips tooltip-title="{{ info.label.full }}">{{ info.label.abbr }}</span>\n                                </td>\n                                <td class="brdr"><span\n                                        ng-bind-html="info.orth | highlight:Search.searchedKeyword"></span></td>\n                                <td class="brdr" ng-show="showDetails">\n                                    <span class="glyph" ng-show="showDetails && info.hyph">[<span\n                                            ng-bind-html="info.hyph"></span>]</span>\n                                </td>\n                            </tr>\n                        </table>\n                    </div>\n\n                    <div ng-if="searchResult.links.length">\n                        <h4>Meer informatie</h4>\n                        <ul ng-repeat="link in searchResult.links">\n                            <li>{{ link.label }} <a ng-href="{{ link.url }}">{{ link.url }}</a></li>\n                        </ul>\n                    </div>\n\n                </div>\n\n            </div>\n        </div>\n\n        <div class="pull-right side-container">\n            <div class="side-container-panel m-bot-20" ng-show="Search.similarResults.length">\n                <h4>Niet te verwarren met</h4>\n                <span ng-repeat="searchResult in Search.similarResults">\n                    <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last">, </span>\n                </span>\n            </div>\n\n            <div class="side-container-panel m-bot-20" ng-show="Search.moreResults.length">\n                <h4>Zie ook</h4>\n                <div class="desktop">\n                    <span ng-repeat="searchResult in Search.moreResults">\n                        <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last">, </span>\n                    </span>\n                </div>\n                <div class="mobile">\n                    <span ng-repeat="searchResult in Search.moreResults" ng-show="$index < 5 || more">\n                        <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last && (more || $index !== 4)">, </span>\n                    </span>\n                    <div id="show-more-results-toggle" ng-show="Search.moreResults.length > 5 && !more">\n                        <button class="btn-show-more" ng-click="more = true" href="">Toon meer...</button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n</div>\n'), e.put("templates/search-results.html", '<div ng-if="Search.searchResults.length == 0 && !loadingResults">\n    <h4 class="results-found-hdr">\n        Spelling <strong>{{ Search.searchedKeyword }}</strong> niet gevonden\n    </h4>\n\n    <div ng-if="Search.suggestions.length == 0">\n        Zoek opnieuw met een andere zoekterm, of kijk in de <a target="_blank" href="/leidraad">leidraad</a> voor de\n        regels m.b.t. de spelling.\n        U kunt uw spellingvraag ook stellen op <a target="_blank" href="http://taaladvies.net">Taaladvies.net</a>.\n    </div>\n</div>\n\n<div class="results" ng-show="Search.searchResults.length && !loadingResults">\n\n    <div class="cf">\n\n        <div class="pull-right side-container">\n            <div class="side-container-panel m-bot-20" ng-show="false">\n                <h4>Niet te verwarren met</h4>\n                <span ng-repeat="searchResult in Search.similarResults">\n                    <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last">, </span>\n                </span>\n            </div>\n        </div>\n\n        <div class="pull-left main-container border m-bot-20">\n            <h4 class="results-found-hdr cf">\n                {{ Search.searchResults.length }}\n                <span ng-show="Search.searchResults.length == 1">resultaat</span>\n                <span ng-show="Search.searchResults.length != 1">resultaten</span>\n                voor spelling <strong>{{ Search.searchedKeyword }}</strong>\n\n                <div class="show-glyphs-container cf">\n                    <div class="label pull-left">\n                        <span ng-show="!showDetails">details</span>\n                        <span ng-show="showDetails">details</span>\n                    </div>\n                    <div class="pull-left">\n                        <div ng-switcher ng-model="showDetails"></div>\n                    </div>\n                </div>\n            </h4>\n\n            <div class="result-listing-intro-container cf" ng-if="Search.searchResults.length > 1">\n                <div class="result-listing-intro">\n                    <div scroll-to="item_{{ searchResult.id }}" class="result-listing-intro-item cf" ng-repeat="searchResult in Search.searchResults">\n\n                        <div class="pull-left">\n                            <span class="index">{{ $index+1 }}</span>\n                            <span class="text">\n                                <a class="link" href scroll-to="item_{{ searchResult.id }}">\n                                    <span ng-bind-html="Search.searchedKeyword"></span>\n                                </a>\n                            </span>\n                        </div>\n                        <div class="info pull-left" ng-if="searchedKeyword !== searchResult.word">\n                            → <strong ng-bind-html="searchResult.word"></strong>\n                        </div>\n                        <div tooltips tooltip-title="{{ searchResult.wordType.main.full }}" class="info type-info pull-left" ng-show="showDetails">{{ searchResult.wordType.main.abbr }}</div>\n                    </div>\n                </div>\n            </div>\n\n            <div class="result-item" ng-repeat="searchResult in Search.searchResults">\n\n                <h2 id="item_{{ searchResult.id }}">\n                    <span class="prefix">{{ searchResult.article }}</span>\n                    <span class="text" ng-bind-html="searchResult.lemma">hello</span>\n                    <span ng-show="showDetails && searchResult.gender"\n                          class="gender"\n                          tooltips\n                          tooltip-title="{{ searchResult.gender.tip }}">\n                            {{ searchResult.gender.text }}\n                    </span>\n                    <sup class="index" ng-show="Search.searchResults.length > 1">{{$index+1}}</sup>\n                    <span class="glyph" ng-show="showDetails && searchResult.hyph">\n                        [<span ng-bind-html="searchResult.hyph"></span>]\n                    </span>\n                </h2>\n\n                <h5 ng-show="showDetails" class="word-type">\n                    <span class="type-label">{{ searchResult.wordType.detail.main.full }}</span><span ng-if="searchResult.wordType.detail.main.full && searchResult.wordType.detail.extra.full.length">,</span>\n                    <span class="type-label">{{ searchResult.wordType.detail.extra.full.join(\', \') }}</span>\n                </h5>\n\n                <div class="detail-container" ng-show="searchResult.hasContent()">\n\n                    <div ng-if="searchResult.gloss">\n                        <p class="gloss">{{ searchResult.gloss }}</p>\n                    </div>\n\n                    <div class="m-top-20" ng-show="showDetails" ng-if="searchResult.spellingInfo.nuance">\n                        <h4>Toelichting</h4>\n                        <p class="nuance" ng-bind-html="searchResult.spellingInfo.nuance | highlight:Search.searchedKeyword"></p>\n                    </div>\n\n                    <div class="pos-listing" ng-if="searchResult.isVerb()">\n                        <div class="group" ng-repeat="info in searchResult.info.grouped">\n                            <div class="hdr word-type break" ng-show="showDetails">\n                                <span>{{ info.label.full }}:</span>\n                            </div>\n                            <div class="word-type cf" ng-repeat="line in info.data">\n                                <div class="left break" style="margin-right: 5px">\n                                    <span class="type-label">{{ line.labelOptional.label_1.full }}</span>\n                                    <span ng-bind-html="line.orth | highlight:Search.searchedKeyword"></span>\n                                </div>\n                                <div class="left break">\n                                    <span class="glyph" ng-show="showDetails && line.hyph">[<span\n                                            ng-bind-html="line.hyph"></span>]</span>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n\n                    <div class="pos-listing-table info-table-container" ng-if="searchResult.isVerb()">\n                        <table class="info-table" ng-repeat="info in searchResult.info.grouped">\n                            <tr ng-show="showDetails">\n                                <td colspan="3" class="brdr word-type">\n                                    <span>{{ info.label.full }}</span>\n                                </td>\n                            </tr>\n                            <tr ng-repeat="line in info.data">\n                                <td ng-show="line.orth.indexOf(\'?\') !== -1" class="brdr" colspan="2" ng-bind-html="line.orth | highlight:Search.searchedKeyword"></td>\n                                <td ng-hide="line.orth.indexOf(\'?\') !== -1" class="type-abbr brdr">{{ line.labelOptional.label_2.full }}</td>\n                                <td ng-hide="line.orth.indexOf(\'?\') !== -1" class="brdr" ng-bind-html="line.orth | highlight:Search.searchedKeyword"></td>\n                                <td class="brdr glyph" ng-show="showDetails && line.hyph">[<span ng-bind-html="line.hyph"></span>]</td>\n                            </tr>\n                        </table>\n                    </div>\n\n                    <div class="pos-listing" ng-if="!searchResult.isVerb()">\n                        <div class="group clearfix" ng-repeat="info in searchResult.info.grouped">\n                            <div class="hdr word-type break" ng-show="showDetails">\n                                <span>{{ info.label.full }}:</span>\n                            </div>\n                            <div class="word-type pull-left" ng-repeat="line in info.data">\n                                <div class="cf">\n                                    <div class="break left" style="margin-right: 5px" ng-bind-html="line.orth | highlight:Search.searchedKeyword"></div>\n                                    <div class="break glyph left" ng-show="showDetails && line.hyph">[<span\n                                            ng-bind-html="line.hyph"></span>]</div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div ng-if="!searchResult.isVerb()">\n                        <table class="info-table pos-listing-table">\n                            <tr ng-repeat="info in searchResult.info.data">\n                                <td class="brdr word-type" ng-show="showDetails">\n                                    <span>{{ info.label.label_2.full }}</span>\n                                </td>\n\n                                <td ng-show="info.orth.length > 25" class="brdr" colspan="2">\n                                    <div class="clearfix">\n                                        <div class="break" ng-bind-html="info.orth | highlight:Search.searchedKeyword"></div>\n                                        <div class="break glyph" ng-show="showDetails && info.hyph">[<span ng-bind-html="info.hyph"></span>]</div>\n                                    </div>\n                                </td>\n\n                                <td ng-hide="info.orth.length > 25" class="brdr"><span\n                                        ng-bind-html="info.orth | highlight:Search.searchedKeyword"></span></td>\n                                <td ng-show="info.orth.length <= 25 && showDetails" class="brdr">\n                                    <span class="glyph" ng-show="showDetails && info.hyph">[<span\n                                            ng-bind-html="info.hyph"></span>]</span>\n                                </td>\n                            </tr>\n                        </table>\n                    </div>\n\n                    <div ng-if="searchResult.links.length">\n                        <h4>Meer informatie</h4>\n                        <div ng-repeat="item in searchResult.links" style="margin-bottom: 10px;">\n                            <h5>{{ item.label }}</h5>\n                            <ul>\n                                <li ng-repeat="link in item.links"><a ng-href="{{ link.url }}">{{ link.url }}</a></li>\n                            </ul>\n                        </div>\n                    </div>\n\n                </div>\n\n            </div>\n        </div>\n\n        <div class="pull-right side-container">\n           <div class="side-container-panel m-bot-20" ng-show="Search.moreResults.length">\n               <h4>Zie ook</h4>\n               <div class="desktop">\n                   <span ng-repeat="searchResult in Search.moreResults">\n                       <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last">, </span>\n                   </span>\n               </div>\n               <div class="mobile">\n                   <span ng-repeat="searchResult in Search.moreResults" ng-show="$index < 5 || more">\n                       <a class="link" ui-sref="home({q: searchResult.lemma, t: 0})">{{ searchResult.lemma }}</a><span ng-show="!$last && (more || $index !== 4)">, </span>\n                   </span>\n                   <div id="show-more-results-toggle" ng-show="Search.moreResults.length > 5 && !more">\n                       <button class="btn-show-more" ng-click="more = true" href="">Toon meer...</button>\n                   </div>\n               </div>\n           </div>\n        </div>\n\n\n    </div>\n\n</div>\n'), e.put("templates/search.html", '<div class="search-loading" ng-show="loadingResults">\n    resultaten worden geladen...\n</div>\n\n<div class="search-error" ng-show="!loadingResults && Search.error">\n    {{ Search.error }}\n</div>\n\n<div class="m-top-20">\n    <div ng-if="Search.isSearch()" ng-include="\'templates/search-results.html\'"></div>\n    <div ng-if="Search.isWildcard()" ng-include="\'templates/wildcard-search-results.html\'"></div>\n    <div ng-if="!Search.searchResults.length && Search.hasSuggestions()" ng-include="\'templates/suggestions.html\'"></div>\n</div>\n'), e.put("templates/suggestions.html", '<div ng-show="!loadingResults" class="results">\n\n    <div class="cf">\n\n        <div class="main-container pull-left">\n            <p>Bedoelde u misschien:</p>\n\n            <ul class="suggestions m-left-20">\n                <li ng-repeat="suggestion in Search.suggestions" class="m-bot-5">\n                    <a class="link" ui-sref="home({q: suggestion.lemma, t: 0})">{{ suggestion.lemma }}</a>\n                </li>\n            </ul>\n        </div>\n\n    </div>\n\n</div>\n'), e.put("templates/wildcard-modal.html", '<div class="wildcard-modal">\n    <a ng-href="" ng-click="closeMe()" class="close-icon">×</a>\n    <h3>Jokers gebruiken</h3>\n    <div class="modal-body">\n        <p>U kunt uw zoekopdracht verfijnen aan de hand van volgende jokers of wildcards:</p>\n\n        <ul>\n            <li>? staat voor exact één willekeurig karakter</li>\n            <li>* staat voor geen, één of meer willekeurige karakters</li>\n        </ul>\n\n        <p>\n            Het is ook mogelijk om jokers in een zoekopdracht te combineren. Bijvoorbeeld:\n        </p>\n\n        <ul>\n            <li>v?n → van, ven, vin</li>\n            <li>v?n?n → vanen, venen</li>\n            <li>v?n*n → vang aan, vink aan, vanen, van jongs af aan, &hellip;</li>\n        </ul>\n\n    </div>\n</div>\n'), e.put("templates/wildcard-search-results.html", '<div ng-if="Search.searchResults.length == 0 && !loadingResults">\n    <h4 class="results-found-hdr">\n        Spelling <strong>{{ Search.searchedKeyword }}</strong> niet gevonden\n    </h4>\n</div>\n\n<div class="cf wildcard-results" ng-show="Search.searchResults.length && !loadingResults">\n\n    <div class="results">\n\n        <h4 class="results-found-hdr">\n            {{ Search.searchResults.slice(0, 50).length }}\n            <span ng-show="Search.searchResults.length == 1">resultaat</span>\n            <span ng-show="Search.searchResults.length != 1">resultaten</span>\n            voor spelling <strong>{{ Search.searchedKeyword }}</strong>\n            <span ng-if="Search.searchResults.length != Search.searchResults.slice(0, 50).length">\n                (<span tooltips tooltip-title="Er worden maximaal 50 resultaten per zoekopdracht weergegeven">afgekapt</span>)\n            </span>\n        </h4>\n\n        <div class="cf">\n            <wl-type-labels word-type="wordType" search-results="Search.searchResults"></wl-type-labels>\n        </div>\n\n        <div class="cf m-top-20">\n            <span dir-paginate="item in Search.searchResults.slice(0, 50) | wordType: wordType | itemsPerPage: 25">\n                <a class="link" ui-sref="home({q: item.lemma, t: 0})">{{ item.lemma }}</a><span ng-show="!$last">, </span>\n            </span>\n        </div>\n    </div>\n\n    <dir-pagination-controls template-url="templates/pagination/sliding.html"></dir-pagination-controls>\n\n</div>'), e.put("templates/pagination/sliding.html", '<ul class="pagination" ng-if="1 < pages.length">\n    <li ng-if="boundaryLinks" ng-class="{ disabled : pagination.current == 1 }">\n        <a href="" ng-click="setCurrent(1)">&laquo;</a>\n    </li>\n    <li ng-if="directionLinks" ng-class="{ disabled : pagination.current == 1 }">\n        <a href="" ng-click="setCurrent(pagination.current - 1)">&lsaquo;</a>\n    </li>\n    <li ng-repeat="pageNumber in pages track by $index" ng-class="{ active : pagination.current == pageNumber, disabled : pageNumber == \'...\' }">\n        <a href="" ng-click="setCurrent(pageNumber)">{{ pageNumber }}</a>\n    </li>\n\n    <li ng-if="directionLinks" ng-class="{ disabled : pagination.current == pagination.last }">\n        <a href="" ng-click="setCurrent(pagination.current + 1)">&rsaquo;</a>\n    </li>\n    <li ng-if="boundaryLinks"  ng-class="{ disabled : pagination.current == pagination.last }">\n        <a href="" ng-click="setCurrent(pagination.last)">&raquo;</a>\n    </li>\n</ul>')
        }]);
})(jQuery);;
