Team:Bordeaux/Template/plasmidjs

!(function(t, e, n) {

 "use strict";
 function r(t, e) {
   return (
     (e = e || Error),
     function() {
       var n,
         r,
         i = arguments[0],
         a = "[" + (t ? t + ":" : "") + i + "] ",
         o = arguments[1],
         s = arguments;
       for (
         n =
           a +
           o.replace(/\{\d+\}/g, function(t) {
             var e = +t.slice(1, -1);
             return e + 2 < s.length ? de(s[e + 2]) : t;
           }),
           n =
             n +
             "\nhttp://errors.angularjs.org/1.3.13/" +
             (t ? t + "/" : "") +
             i,
           r = 2;
         r < arguments.length;
         r++
       )
         n =
           n +
           (2 == r ? "?" : "&") +
           "p" +
           (r - 2) +
           "=" +
           encodeURIComponent(de(arguments[r]));
       return new e(n);
     }
   );
 }
 function i(t) {
   if (null == t || C(t)) return !1;
   var e = t.length;
   return t.nodeType === gi && e
     ? !0
     : b(t) ||
         ci(t) ||
         0 === e ||
         ("number" == typeof e && e > 0 && e - 1 in t);
 }
 function a(t, e, n) {
   var r, o;
   if (t)
     if (k(t))
       for (r in t)
         "prototype" == r ||
           "length" == r ||
           "name" == r ||
           (t.hasOwnProperty && !t.hasOwnProperty(r)) ||
           e.call(n, t[r], r, t);
     else if (ci(t) || i(t)) {
       var s = "object" != typeof t;
       for (r = 0, o = t.length; o > r; r++)
         (s || r in t) && e.call(n, t[r], r, t);
     } else if (t.forEach && t.forEach !== a) t.forEach(e, n, t);
     else for (r in t) t.hasOwnProperty(r) && e.call(n, t[r], r, t);
   return t;
 }
 function o(t) {
   return Object.keys(t).sort();
 }
 function s(t, e, n) {
   for (var r = o(t), i = 0; i < r.length; i++) e.call(n, t[r[i]], r[i]);
   return r;
 }
 function u(t) {
   return function(e, n) {
     t(n, e);
   };
 }
 function l() {
   return ++ui;
 }
 function c(t, e) {
   e ? (t.$$hashKey = e) : delete t.$$hashKey;
 }
 function f(t) {
   for (var e = t.$$hashKey, n = 1, r = arguments.length; r > n; n++) {
     var i = arguments[n];
     if (i)
       for (var a = Object.keys(i), o = 0, s = a.length; s > o; o++) {
         var u = a[o];
         t[u] = i[u];
       }
   }
   return c(t, e), t;
 }
 function d(t) {
   return parseInt(t, 10);
 }
 function h(t, e) {
   return f(Object.create(t), e);
 }
 function p() {}
 function $(t) {
   return t;
 }
 function m(t) {
   return function() {
     return t;
   };
 }
 function g(t) {
   return "undefined" == typeof t;
 }
 function v(t) {
   return "undefined" != typeof t;
 }
 function y(t) {
   return null !== t && "object" == typeof t;
 }
 function b(t) {
   return "string" == typeof t;
 }
 function w(t) {
   return "number" == typeof t;
 }
 function x(t) {
   return "[object Date]" === ai.call(t);
 }
 function k(t) {
   return "function" == typeof t;
 }
 function S(t) {
   return "[object RegExp]" === ai.call(t);
 }
 function C(t) {
   return t && t.window === t;
 }
 function A(t) {
   return t && t.$evalAsync && t.$watch;
 }
 function O(t) {
   return "[object File]" === ai.call(t);
 }
 function E(t) {
   return "[object FormData]" === ai.call(t);
 }
 function j(t) {
   return "[object Blob]" === ai.call(t);
 }
 function N(t) {
   return "boolean" == typeof t;
 }
 function T(t) {
   return t && k(t.then);
 }
 function M(t) {
   return !(!t || !(t.nodeName || (t.prop && t.attr && t.find)));
 }
 function P(t) {
   var e,
     n = {},
     r = t.split(",");
   for (e = 0; e < r.length; e++) n[r[e]] = !0;
   return n;
 }
 function V(t) {
   return Wr(t.nodeName || (t[0] && t[0].nodeName));
 }
 function q(t, e) {
   var n = t.indexOf(e);
   return n >= 0 && t.splice(n, 1), e;
 }
 function D(t, e, n, r) {
   if (C(t) || A(t))
     throw oi(
       "cpws",
       "Can't copy! Making copies of Window or Scope instances is not supported."
     );
   if (e) {
     if (t === e)
       throw oi("cpi", "Can't copy! Source and destination are identical.");
     if (((n = n || []), (r = r || []), y(t))) {
       var i = n.indexOf(t);
       if (-1 !== i) return r[i];
       n.push(t), r.push(e);
     }
     var o;
     if (ci(t)) {
       e.length = 0;
       for (var s = 0; s < t.length; s++)
         (o = D(t[s], null, n, r)),
           y(t[s]) && (n.push(t[s]), r.push(o)),
           e.push(o);
     } else {
       var u = e.$$hashKey;
       ci(e)
         ? (e.length = 0)
         : a(e, function(t, n) {
             delete e[n];
           });
       for (var l in t)
         t.hasOwnProperty(l) &&
           ((o = D(t[l], null, n, r)),
           y(t[l]) && (n.push(t[l]), r.push(o)),
           (e[l] = o));
       c(e, u);
     }
   } else if (((e = t), t))
     if (ci(t)) e = D(t, [], n, r);
     else if (x(t)) e = new Date(t.getTime());
     else if (S(t))
       (e = new RegExp(t.source, t.toString().match(/[^\/]*$/)[0])),
         (e.lastIndex = t.lastIndex);
     else if (y(t)) {
       var f = Object.create(Object.getPrototypeOf(t));
       e = D(t, f, n, r);
     }
   return e;
 }
 function R(t, e) {
   if (ci(t)) {
     e = e || [];
     for (var n = 0, r = t.length; r > n; n++) e[n] = t[n];
   } else if (y(t)) {
     e = e || {};
     for (var i in t)
       ("$" !== i.charAt(0) || "$" !== i.charAt(1)) && (e[i] = t[i]);
   }
   return e || t;
 }
 function I(t, e) {
   if (t === e) return !0;
   if (null === t || null === e) return !1;
   if (t !== t && e !== e) return !0;
   var r,
     i,
     a,
     o = typeof t,
     s = typeof e;
   if (o == s && "object" == o) {
     if (!ci(t)) {
       if (x(t)) return x(e) ? I(t.getTime(), e.getTime()) : !1;
       if (S(t) && S(e)) return t.toString() == e.toString();
       if (A(t) || A(e) || C(t) || C(e) || ci(e)) return !1;
       a = {};
       for (i in t)
         if ("$" !== i.charAt(0) && !k(t[i])) {
           if (!I(t[i], e[i])) return !1;
           a[i] = !0;
         }
       for (i in e)
         if (
           !a.hasOwnProperty(i) &&
           "$" !== i.charAt(0) &&
           e[i] !== n &&
           !k(e[i])
         )
           return !1;
       return !0;
     }
     if (!ci(e)) return !1;
     if ((r = t.length) == e.length) {
       for (i = 0; r > i; i++) if (!I(t[i], e[i])) return !1;
       return !0;
     }
   }
   return !1;
 }
 function _(t, e, n) {
   return t.concat(ni.call(e, n));
 }
 function U(t, e) {
   return ni.call(t, e || 0);
 }
 function L(t, e) {
   var n = arguments.length > 2 ? U(arguments, 2) : [];
   return !k(e) || e instanceof RegExp
     ? e
     : n.length
       ? function() {
           return arguments.length
             ? e.apply(t, _(n, arguments, 0))
             : e.apply(t, n);
         }
       : function() {
           return arguments.length ? e.apply(t, arguments) : e.call(t);
         };
 }
 function F(t, r) {
   var i = r;
   return (
     "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1)
       ? (i = n)
       : C(r)
         ? (i = "$WINDOW")
         : r && e === r
           ? (i = "$DOCUMENT")
           : A(r) && (i = "$SCOPE"),
     i
   );
 }
 function H(t, e) {
   return "undefined" == typeof t
     ? n
     : (w(e) || (e = e ? 2 : null), JSON.stringify(t, F, e));
 }
 function B(t) {
   return b(t) ? JSON.parse(t) : t;
 }
 function z(t) {
   t = Qr(t).clone();
   try {
     t.empty();
   } catch (e) {}
var n = Qr("
")
     .append(t)
     .html();
   try {
     return t[0].nodeType === vi
       ? Wr(n)
       : n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/, function(t, e) {
           return "<" + Wr(e);
         });
   } catch (e) {
     return Wr(n);
   }
 }
 function G(t) {
   try {
     return decodeURIComponent(t);
   } catch (e) {}
 }
 function W(t) {
   var e,
     n,
     r = {};
   return (
     a((t || "").split("&"), function(t) {
       if (
         t &&
         ((e = t.replace(/\+/g, "%20").split("=")), (n = G(e[0])), v(n))
       ) {
         var i = v(e[1]) ? G(e[1]) : !0;
         Jr.call(r, n)
           ? ci(r[n])
             ? r[n].push(i)
             : (r[n] = [r[n], i])
           : (r[n] = i);
       }
     }),
     r
   );
 }
 function J(t) {
   var e = [];
   return (
     a(t, function(t, n) {
       ci(t)
         ? a(t, function(t) {
             e.push(Z(n, !0) + (t === !0 ? "" : "=" + Z(t, !0)));
           })
         : e.push(Z(n, !0) + (t === !0 ? "" : "=" + Z(t, !0)));
     }),
     e.length ? e.join("&") : ""
   );
 }
 function Y(t) {
   return Z(t, !0)
     .replace(/%26/gi, "&")
     .replace(/%3D/gi, "=")
     .replace(/%2B/gi, "+");
 }
 function Z(t, e) {
   return encodeURIComponent(t)
     .replace(/%40/gi, "@")
     .replace(/%3A/gi, ":")
     .replace(/%24/g, "$")
     .replace(/%2C/gi, ",")
     .replace(/%3B/gi, ";")
     .replace(/%20/g, e ? "%20" : "+");
 }
 function K(t, e) {
   var n,
     r,
     i = pi.length;
   for (t = Qr(t), r = 0; i > r; ++r)
     if (((n = pi[r] + e), b((n = t.attr(n))))) return n;
   return null;
 }
 function X(t, e) {
   var n,
     r,
     i = {};
   a(pi, function(e) {
     var i = e + "app";
     !n &&
       t.hasAttribute &&
       t.hasAttribute(i) &&
       ((n = t), (r = t.getAttribute(i)));
   }),
     a(pi, function(e) {
       var i,
         a = e + "app";
       !n &&
         (i = t.querySelector("[" + a.replace(":", "\\:") + "]")) &&
         ((n = i), (r = i.getAttribute(a)));
     }),
     n && ((i.strictDi = null !== K(n, "strict-di")), e(n, r ? [r] : [], i));
 }
 function Q(n, r, i) {
   y(i) || (i = {});
   var o = { strictDi: !1 };
   i = f(o, i);
   var s = function() {
       if (((n = Qr(n)), n.injector())) {
         var t = n[0] === e ? "document" : z(n);
         throw oi(
           "btstrpd",
           "App Already Bootstrapped with this Element '{0}'",
           t.replace(/</, "<").replace(/>/, ">")
         );
       }
       (r = r || []),
         r.unshift([
           "$provide",
           function(t) {
             t.value("$rootElement", n);
           }
         ]),
         i.debugInfoEnabled &&
           r.push([
             "$compileProvider",
             function(t) {
               t.debugInfoEnabled(!0);
             }
           ]),
         r.unshift("ng");
       var a = Be(r, i.strictDi);
       return (
         a.invoke([
           "$rootScope",
           "$rootElement",
           "$compile",
           "$injector",
           function(t, e, n, r) {
             t.$apply(function() {
               e.data("$injector", r), n(e)(t);
             });
           }
         ]),
         a
       );
     },
     u = /^NG_ENABLE_DEBUG_INFO!/,
     l = /^NG_DEFER_BOOTSTRAP!/;
   return (
     t &&
       u.test(t.name) &&
       ((i.debugInfoEnabled = !0), (t.name = t.name.replace(u, ""))),
     t && !l.test(t.name)
       ? s()
       : ((t.name = t.name.replace(l, "")),
         (si.resumeBootstrap = function(t) {
           return (
             a(t, function(t) {
               r.push(t);
             }),
             s()
           );
         }),
         k(si.resumeDeferredBootstrap) && si.resumeDeferredBootstrap(),
         void 0)
   );
 }
 function te() {
   (t.name = "NG_ENABLE_DEBUG_INFO!" + t.name), t.location.reload();
 }
 function ee(t) {
   var e = si.element(t).injector();
   if (!e)
     throw oi(
       "test",
       "no injector found for element argument to getTestability"
     );
   return e.get("$$testability");
 }
 function ne(t, e) {
   return (
     (e = e || "_"),
     t.replace($i, function(t, n) {
       return (n ? e : "") + t.toLowerCase();
     })
   );
 }
 function re() {
   var e;
   mi ||
     ((ti = t.jQuery),
     ti && ti.fn.on
       ? ((Qr = ti),
         f(ti.fn, {
           scope: Di.scope,
           isolateScope: Di.isolateScope,
           controller: Di.controller,
           injector: Di.injector,
           inheritedData: Di.inheritedData
         }),
         (e = ti.cleanData),
         (ti.cleanData = function(t) {
           var n;
           if (li) li = !1;
           else
             for (var r, i = 0; null != (r = t[i]); i++)
               (n = ti._data(r, "events")),
                 n && n.$destroy && ti(r).triggerHandler("$destroy");
           e(t);
         }))
       : (Qr = be),
     (si.element = Qr),
     (mi = !0));
 }
 function ie(t, e, n) {
   if (!t)
     throw oi("areq", "Argument '{0}' is {1}", e || "?", n || "required");
   return t;
 }
 function ae(t, e, n) {
   return (
     n && ci(t) && (t = t[t.length - 1]),
     ie(
       k(t),
       e,
       "not a function, got " +
         (t && "object" == typeof t
           ? t.constructor.name || "Object"
           : typeof t)
     ),
     t
   );
 }
 function oe(t, e) {
   if ("hasOwnProperty" === t)
     throw oi("badname", "hasOwnProperty is not a valid {0} name", e);
 }
 function se(t, e, n) {
   if (!e) return t;
   for (var r, i = e.split("."), a = t, o = i.length, s = 0; o > s; s++)
     (r = i[s]), t && (t = (a = t)[r]);
   return !n && k(t) ? L(a, t) : t;
 }
 function ue(t) {
   var e = t[0],
     n = t[t.length - 1],
     r = [e];
   do {
     if (((e = e.nextSibling), !e)) break;
     r.push(e);
   } while (e !== n);
   return Qr(r);
 }
 function le() {
   return Object.create(null);
 }
 function ce(t) {
   function e(t, e, n) {
     return t[e] || (t[e] = n());
   }
   var n = r("$injector"),
     i = r("ng"),
     a = e(t, "angular", Object);
   return (
     (a.$$minErr = a.$$minErr || r),
     e(a, "module", function() {
       var t = {};
       return function(r, a, o) {
         var s = function(t, e) {
           if ("hasOwnProperty" === t)
             throw i("badname", "hasOwnProperty is not a valid {0} name", e);
         };
         return (
           s(r, "module"),
           a && t.hasOwnProperty(r) && (t[r] = null),
           e(t, r, function() {
             function t(t, n, r, i) {
               return (
                 i || (i = e),
                 function() {
                   return i[r || "push"]([t, n, arguments]), l;
                 }
               );
             }
             if (!a)
               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 e = [],
               i = [],
               s = [],
               u = t("$injector", "invoke", "push", i),
               l = {
                 _invokeQueue: e,
                 _configBlocks: i,
                 _runBlocks: s,
                 requires: a,
                 name: r,
                 provider: t("$provide", "provider"),
                 factory: t("$provide", "factory"),
                 service: t("$provide", "service"),
                 value: t("$provide", "value"),
                 constant: t("$provide", "constant", "unshift"),
                 animation: t("$animateProvider", "register"),
                 filter: t("$filterProvider", "register"),
                 controller: t("$controllerProvider", "register"),
                 directive: t("$compileProvider", "directive"),
                 config: u,
                 run: function(t) {
                   return s.push(t), this;
                 }
               };
             return o && u(o), l;
           })
         );
       };
     })
   );
 }
 function fe(t) {
   var e = [];
   return JSON.stringify(t, function(t, n) {
     if (((n = F(t, n)), y(n))) {
       if (e.indexOf(n) >= 0) return "<<already seen>>";
       e.push(n);
     }
     return n;
   });
 }
 function de(t) {
   return "function" == typeof t
     ? t.toString().replace(/ \{[\s\S]*$/, "")
     : "undefined" == typeof t
       ? "undefined"
       : "string" != typeof t
         ? fe(t)
         : t;
 }
 function he(e) {
   f(e, {
     bootstrap: Q,
     copy: D,
     extend: f,
     equals: I,
     element: Qr,
     forEach: a,
     injector: Be,
     noop: p,
     bind: L,
     toJson: H,
     fromJson: B,
     identity: $,
     isUndefined: g,
     isDefined: v,
     isString: b,
     isFunction: k,
     isObject: y,
     isNumber: w,
     isElement: M,
     isArray: ci,
     version: xi,
     isDate: x,
     lowercase: Wr,
     uppercase: Yr,
     callbacks: { counter: 0 },
     getTestability: ee,
     $$minErr: r,
     $$csp: hi,
     reloadWithDebugInfo: te
   }),
     (ei = ce(t));
   try {
     ei("ngLocale");
   } catch (n) {
     ei("ngLocale", []).provider("$locale", gn);
   }
   ei(
     "ng",
     ["ngLocale"],
     [
       "$provide",
       function(t) {
         t.provider({ $$sanitizeUri: Yn }),
           t
             .provider("$compile", Ke)
             .directive({
               a: Ea,
               input: za,
               textarea: za,
               form: Pa,
               script: qo,
               select: Io,
               style: Uo,
               option: _o,
               ngBind: Ja,
               ngBindHtml: Za,
               ngBindTemplate: Ya,
               ngClass: Xa,
               ngClassEven: to,
               ngClassOdd: Qa,
               ngCloak: eo,
               ngController: no,
               ngForm: Va,
               ngHide: jo,
               ngIf: ao,
               ngInclude: oo,
               ngInit: uo,
               ngNonBindable: ko,
               ngPluralize: So,
               ngRepeat: Co,
               ngShow: Eo,
               ngStyle: No,
               ngSwitch: To,
               ngSwitchWhen: Mo,
               ngSwitchDefault: Po,
               ngOptions: Ro,
               ngTransclude: Vo,
               ngModel: bo,
               ngList: lo,
               ngChange: Ka,
               pattern: Fo,
               ngPattern: Fo,
               required: Lo,
               ngRequired: Lo,
               minlength: Bo,
               ngMinlength: Bo,
               maxlength: Ho,
               ngMaxlength: Ho,
               ngValue: Wa,
               ngModelOptions: xo
             })
             .directive({ ngInclude: so })
             .directive(ja)
             .directive(ro),
           t.provider({
             $anchorScroll: ze,
             $animate: Gi,
             $browser: Je,
             $cacheFactory: Ye,
             $controller: en,
             $document: nn,
             $exceptionHandler: rn,
             $filter: sr,
             $interpolate: $n,
             $interval: mn,
             $http: fn,
             $httpBackend: hn,
             $location: Tn,
             $log: Mn,
             $parse: Hn,
             $rootScope: Jn,
             $q: Bn,
             $$q: zn,
             $sce: Qn,
             $sceDelegate: Xn,
             $sniffer: tr,
             $templateCache: Ze,
             $templateRequest: er,
             $$testability: nr,
             $timeout: rr,
             $window: or,
             $$rAF: Wn,
             $$asyncCallback: Ge,
             $$jqLite: _e
           });
       }
     ]
   );
 }
 function pe() {
   return ++Si;
 }
 function $e(t) {
   return t
     .replace(Oi, function(t, e, n, r) {
       return r ? n.toUpperCase() : n;
     })
     .replace(Ei, "Moz$1");
 }
 function me(t) {
   return !Mi.test(t);
 }
 function ge(t) {
   var e = t.nodeType;
   return e === gi || !e || e === bi;
 }
 function ve(t, e) {
   var n,
     r,
     i,
     o,
     s = e.createDocumentFragment(),
     u = [];
   if (me(t)) u.push(e.createTextNode(t));
   else {
     for (
       n = n || s.appendChild(e.createElement("div")),
         r = (Pi.exec(t) || ["", ""])[1].toLowerCase(),
         i = qi[r] || qi._default,
         n.innerHTML = i[1] + t.replace(Vi, "<$1></$2>") + i[2],
         o = i[0];
       o--;
     )
       n = n.lastChild;
     (u = _(u, n.childNodes)), (n = s.firstChild), (n.textContent = "");
   }
   return (
     (s.textContent = ""),
     (s.innerHTML = ""),
     a(u, function(t) {
       s.appendChild(t);
     }),
     s
   );
 }
 function ye(t, n) {
   n = n || e;
   var r;
   return (r = Ti.exec(t))
     ? [n.createElement(r[1])]
     : (r = ve(t, n))
       ? r.childNodes
       : [];
 }
 function be(t) {
   if (t instanceof be) return t;
   var e;
   if ((b(t) && ((t = fi(t)), (e = !0)), !(this instanceof be))) {
     if (e && "<" != t.charAt(0))
       throw Ni(
         "nosel",
         "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element"
       );
     return new be(t);
   }
   e ? Ne(this, ye(t)) : Ne(this, t);
 }
 function we(t) {
   return t.cloneNode(!0);
 }
 function xe(t, e) {
   if ((e || Se(t), t.querySelectorAll))
     for (var n = t.querySelectorAll("*"), r = 0, i = n.length; i > r; r++)
       Se(n[r]);
 }
 function ke(t, e, n, r) {
   if (v(r))
     throw Ni(
       "offargs",
       "jqLite#off() does not support the `selector` argument"
     );
   var i = Ce(t),
     o = i && i.events,
     s = i && i.handle;
   if (s)
     if (e)
       a(e.split(" "), function(e) {
         if (v(n)) {
           var r = o[e];
           if ((q(r || [], n), r && r.length > 0)) return;
         }
         Ai(t, e, s), delete o[e];
       });
     else for (e in o) "$destroy" !== e && Ai(t, e, s), delete o[e];
 }
 function Se(t, e) {
   var r = t.ng339,
     i = r && ki[r];
   if (i) {
     if (e) return delete i.data[e], void 0;
     i.handle && (i.events.$destroy && i.handle({}, "$destroy"), ke(t)),
       delete ki[r],
       (t.ng339 = n);
   }
 }
 function Ce(t, e) {
   var r = t.ng339,
     i = r && ki[r];
   return (
     e &&
       !i &&
       ((t.ng339 = r = pe()),
       (i = ki[r] = { events: {}, data: {}, handle: n })),
     i
   );
 }
 function Ae(t, e, n) {
   if (ge(t)) {
     var r = v(n),
       i = !r && e && !y(e),
       a = !e,
       o = Ce(t, !i),
       s = o && o.data;
     if (r) s[e] = n;
     else {
       if (a) return s;
       if (i) return s && s[e];
       f(s, e);
     }
   }
 }
 function Oe(t, e) {
   return t.getAttribute
     ? (" " + (t.getAttribute("class") || "") + " ")
         .replace(/[\n\t]/g, " ")
         .indexOf(" " + e + " ") > -1
     : !1;
 }
 function Ee(t, e) {
   e &&
     t.setAttribute &&
     a(e.split(" "), function(e) {
       t.setAttribute(
         "class",
         fi(
           (" " + (t.getAttribute("class") || "") + " ")
             .replace(/[\n\t]/g, " ")
             .replace(" " + fi(e) + " ", " ")
         )
       );
     });
 }
 function je(t, e) {
   if (e && t.setAttribute) {
     var n = (" " + (t.getAttribute("class") || "") + " ").replace(
       /[\n\t]/g,
       " "
     );
     a(e.split(" "), function(t) {
       (t = fi(t)), -1 === n.indexOf(" " + t + " ") && (n += t + " ");
     }),
       t.setAttribute("class", fi(n));
   }
 }
 function Ne(t, e) {
   if (e)
     if (e.nodeType) t[t.length++] = e;
     else {
       var n = e.length;
       if ("number" == typeof n && e.window !== e) {
         if (n) for (var r = 0; n > r; r++) t[t.length++] = e[r];
       } else t[t.length++] = e;
     }
 }
 function Te(t, e) {
   return Me(t, "$" + (e || "ngController") + "Controller");
 }
 function Me(t, e, r) {
   t.nodeType == bi && (t = t.documentElement);
   for (var i = ci(e) ? e : [e]; t; ) {
     for (var a = 0, o = i.length; o > a; a++)
       if ((r = Qr.data(t, i[a])) !== n) return r;
     t = t.parentNode || (t.nodeType === wi && t.host);
   }
 }
 function Pe(t) {
   for (xe(t, !0); t.firstChild; ) t.removeChild(t.firstChild);
 }
 function Ve(t, e) {
   e || xe(t);
   var n = t.parentNode;
   n && n.removeChild(t);
 }
 function qe(e, n) {
   (n = n || t),
     "complete" === n.document.readyState
       ? n.setTimeout(e)
       : Qr(n).on("load", e);
 }
 function De(t, e) {
   var n = Ri[e.toLowerCase()];
   return n && Ii[V(t)] && n;
 }
 function Re(t, e) {
   var n = t.nodeName;
   return ("INPUT" === n || "TEXTAREA" === n) && _i[e];
 }
 function Ie(t, e) {
   var n = function(n, r) {
     n.isDefaultPrevented = function() {
       return n.defaultPrevented;
     };
     var i = e[r || n.type],
       a = i ? i.length : 0;
     if (a) {
       if (g(n.immediatePropagationStopped)) {
         var o = n.stopImmediatePropagation;
         n.stopImmediatePropagation = function() {
           (n.immediatePropagationStopped = !0),
             n.stopPropagation && n.stopPropagation(),
             o && o.call(n);
         };
       }
       (n.isImmediatePropagationStopped = function() {
         return n.immediatePropagationStopped === !0;
       }),
         a > 1 && (i = R(i));
       for (var s = 0; a > s; s++)
         n.isImmediatePropagationStopped() || i[s].call(t, n);
     }
   };
   return (n.elem = t), n;
 }
 function _e() {
   this.$get = function() {
     return f(be, {
       hasClass: function(t, e) {
         return t.attr && (t = t[0]), Oe(t, e);
       },
       addClass: function(t, e) {
         return t.attr && (t = t[0]), je(t, e);
       },
       removeClass: function(t, e) {
         return t.attr && (t = t[0]), Ee(t, e);
       }
     });
   };
 }
 function Ue(t, e) {
   var n = t && t.$$hashKey;
   if (n) return "function" == typeof n && (n = t.$$hashKey()), n;
   var r = typeof t;
   return (n =
     "function" == r || ("object" == r && null !== t)
       ? (t.$$hashKey = r + ":" + (e || l)())
       : r + ":" + t);
 }
 function Le(t, e) {
   if (e) {
     var n = 0;
     this.nextUid = function() {
       return ++n;
     };
   }
   a(t, this.put, this);
 }
 function Fe(t) {
   var e = t.toString().replace(Hi, ""),
     n = e.match(Ui);
   return n
     ? "function(" + (n[1] || "").replace(/[\s\r\n]+/, " ") + ")"
     : "fn";
 }
 function He(t, e, n) {
   var r, i, o, s;
   if ("function" == typeof t) {
     if (!(r = t.$inject)) {
       if (((r = []), t.length)) {
         if (e)
           throw ((b(n) && n) || (n = t.name || Fe(t)),
           Bi(
             "strictdi",
             "{0} is not using explicit annotation and cannot be invoked in strict mode",
             n
           ));
         (i = t.toString().replace(Hi, "")),
           (o = i.match(Ui)),
           a(o[1].split(Li), function(t) {
             t.replace(Fi, function(t, e, n) {
               r.push(n);
             });
           });
       }
       t.$inject = r;
     }
   } else
     ci(t)
       ? ((s = t.length - 1), ae(t[s], "fn"), (r = t.slice(0, s)))
       : ae(t, "fn", !0);
   return r;
 }
 function Be(t, e) {
   function r(t) {
     return function(e, n) {
       return y(e) ? (a(e, u(t)), void 0) : t(e, n);
     };
   }
   function i(t, e) {
     if (
       (oe(t, "service"), (k(e) || ci(e)) && (e = A.instantiate(e)), !e.$get)
     )
       throw Bi("pget", "Provider '{0}' must define $get factory method.", t);
     return (C[t + w] = e);
   }
   function o(t, e) {
     return function() {
       var n = E.invoke(e, this);
       if (g(n))
         throw Bi(
           "undef",
           "Provider '{0}' must return a value from $get factory method.",
           t
         );
       return n;
     };
   }
   function s(t, e, n) {
     return i(t, { $get: n !== !1 ? o(t, e) : e });
   }
   function l(t, e) {
     return s(t, [
       "$injector",
       function(t) {
         return t.instantiate(e);
       }
     ]);
   }
   function c(t, e) {
     return s(t, m(e), !1);
   }
   function f(t, e) {
     oe(t, "constant"), (C[t] = e), (O[t] = e);
   }
   function d(t, e) {
     var n = A.get(t + w),
       r = n.$get;
     n.$get = function() {
       var t = E.invoke(r, n);
       return E.invoke(e, null, { $delegate: t });
     };
   }
   function h(t) {
     var e,
       n = [];
     return (
       a(t, function(t) {
         function r(t) {
           var e, n;
           for (e = 0, n = t.length; n > e; e++) {
             var r = t[e],
               i = A.get(r[0]);
             i[r[1]].apply(i, r[2]);
           }
         }
         if (!S.get(t)) {
           S.put(t, !0);
           try {
             b(t)
               ? ((e = ei(t)),
                 (n = n.concat(h(e.requires)).concat(e._runBlocks)),
                 r(e._invokeQueue),
                 r(e._configBlocks))
               : k(t)
                 ? n.push(A.invoke(t))
                 : ci(t)
                   ? n.push(A.invoke(t))
                   : ae(t, "module");
           } catch (i) {
             throw (ci(t) && (t = t[t.length - 1]),
             i.message &&
               i.stack &&
               -1 == i.stack.indexOf(i.message) &&
               (i = i.message + "\n" + i.stack),
             Bi(
               "modulerr",
               "Failed to instantiate module {0} due to:\n{1}",
               t,
               i.stack || i.message || i
             ));
           }
         }
       }),
       n
     );
   }
   function $(t, n) {
     function r(e, r) {
       if (t.hasOwnProperty(e)) {
         if (t[e] === v)
           throw Bi(
             "cdep",
             "Circular dependency found: {0}",
             e + " <- " + x.join(" <- ")
           );
         return t[e];
       }
       try {
         return x.unshift(e), (t[e] = v), (t[e] = n(e, r));
       } catch (i) {
         throw (t[e] === v && delete t[e], i);
       } finally {
         x.shift();
       }
     }
     function i(t, n, i, a) {
       "string" == typeof i && ((a = i), (i = null));
       var o,
         s,
         u,
         l = [],
         c = Be.$$annotate(t, e, a);
       for (s = 0, o = c.length; o > s; s++) {
         if (((u = c[s]), "string" != typeof u))
           throw Bi(
             "itkn",
             "Incorrect injection token! Expected service name as string, got {0}",
             u
           );
         l.push(i && i.hasOwnProperty(u) ? i[u] : r(u, a));
       }
       return ci(t) && (t = t[o]), t.apply(n, l);
     }
     function a(t, e, n) {
       var r = Object.create((ci(t) ? t[t.length - 1] : t).prototype || null),
         a = i(t, r, e, n);
       return y(a) || k(a) ? a : r;
     }
     return {
       invoke: i,
       instantiate: a,
       get: r,
       annotate: Be.$$annotate,
       has: function(e) {
         return C.hasOwnProperty(e + w) || t.hasOwnProperty(e);
       }
     };
   }
   e = e === !0;
   var v = {},
     w = "Provider",
     x = [],
     S = new Le([], !0),
     C = {
       $provide: {
         provider: r(i),
         factory: r(s),
         service: r(l),
         value: r(c),
         constant: r(f),
         decorator: d
       }
     },
     A = (C.$injector = $(C, function(t, e) {
       throw (si.isString(e) && x.push(e),
       Bi("unpr", "Unknown provider: {0}", x.join(" <- ")));
     })),
     O = {},
     E = (O.$injector = $(O, function(t, e) {
       var r = A.get(t + w, e);
       return E.invoke(r.$get, r, n, t);
     }));
   return (
     a(h(t), function(t) {
       E.invoke(t || p);
     }),
     E
   );
 }
 function ze() {
   var t = !0;
   (this.disableAutoScrolling = function() {
     t = !1;
   }),
     (this.$get = [
       "$window",
       "$location",
       "$rootScope",
       function(e, n, r) {
         function i(t) {
           var e = null;
           return (
             Array.prototype.some.call(t, function(t) {
               return "a" === V(t) ? ((e = t), !0) : void 0;
             }),
             e
           );
         }
         function a() {
           var t = s.yOffset;
           if (k(t)) t = t();
           else if (M(t)) {
             var n = t[0],
               r = e.getComputedStyle(n);
             t = "fixed" !== r.position ? 0 : n.getBoundingClientRect().bottom;
           } else w(t) || (t = 0);
           return t;
         }
         function o(t) {
           if (t) {
             t.scrollIntoView();
             var n = a();
             if (n) {
               var r = t.getBoundingClientRect().top;
               e.scrollBy(0, r - n);
             }
           } else e.scrollTo(0, 0);
         }
         function s() {
           var t,
             e = n.hash();
           e
             ? (t = u.getElementById(e))
               ? o(t)
               : (t = i(u.getElementsByName(e)))
                 ? o(t)
                 : "top" === e && o(null)
             : o(null);
         }
         var u = e.document;
         return (
           t &&
             r.$watch(
               function() {
                 return n.hash();
               },
               function(t, e) {
                 (t !== e || "" !== t) &&
                   qe(function() {
                     r.$evalAsync(s);
                   });
               }
             ),
           s
         );
       }
     ]);
 }
 function Ge() {
   this.$get = [
     "$$rAF",
     "$timeout",
     function(t, e) {
       return t.supported
         ? function(e) {
             return t(e);
           }
         : function(t) {
             return e(t, 0, !1);
           };
     }
   ];
 }
 function We(t, e, r, i) {
   function o(t) {
     try {
       t.apply(null, U(arguments, 1));
     } finally {
       if ((k--, 0 === k))
         for (; S.length; )
           try {
             S.pop()();
           } catch (e) {
             r.error(e);
           }
     }
   }
   function s(t) {
     var e = t.indexOf("#");
     return -1 === e ? "" : t.substr(e + 1);
   }
   function u(t, e) {
     !(function n() {
       a(A, function(t) {
         t();
       }),
         (C = e(n, t));
     })();
   }
   function l() {
     c(), f();
   }
   function c() {
     (O = t.history.state), (O = g(O) ? null : O), I(O, V) && (O = V), (V = O);
   }
   function f() {
     (j !== h.url() || E !== O) &&
       ((j = h.url()),
       (E = O),
       a(M, function(t) {
         t(h.url(), O);
       }));
   }
   function d(t) {
     try {
       return decodeURIComponent(t);
     } catch (e) {
       return t;
     }
   }
   var h = this,
     $ = e[0],
     m = t.location,
     v = t.history,
     y = t.setTimeout,
     w = t.clearTimeout,
     x = {};
   h.isMock = !1;
   var k = 0,
     S = [];
   (h.$$completeOutstandingRequest = o),
     (h.$$incOutstandingRequestCount = function() {
       k++;
     }),
     (h.notifyWhenNoOutstandingRequests = function(t) {
       a(A, function(t) {
         t();
       }),
         0 === k ? t() : S.push(t);
     });
   var C,
     A = [];
   h.addPollFn = function(t) {
     return g(C) && u(100, y), A.push(t), t;
   };
   var O,
     E,
     j = m.href,
     N = e.find("base"),
     T = null;
   c(),
     (E = O),
     (h.url = function(e, n, r) {
       if (
         (g(r) && (r = null),
         m !== t.location && (m = t.location),
         v !== t.history && (v = t.history),
         e)
       ) {
         var a = E === r;
         if (j === e && (!i.history || a)) return h;
         var o = j && xn(j) === xn(e);
         return (
           (j = e),
           (E = r),
           !i.history || (o && a)
             ? (o || (T = e),
               n ? m.replace(e) : o ? (m.hash = s(e)) : (m.href = e))
             : (v[n ? "replaceState" : "pushState"](r, "", e), c(), (E = O)),
           h
         );
       }
       return T || m.href.replace(/%27/g, "'");
     }),
     (h.state = function() {
       return O;
     });
   var M = [],
     P = !1,
     V = null;
   (h.onUrlChange = function(e) {
     return (
       P ||
         (i.history && Qr(t).on("popstate", l),
         Qr(t).on("hashchange", l),
         (P = !0)),
       M.push(e),
       e
     );
   }),
     (h.$$checkUrlChange = f),
     (h.baseHref = function() {
       var t = N.attr("href");
       return t ? t.replace(/^(https?\:)?\/\/[^\/]*/, "") : "";
     });
   var q = {},
     D = "",
     R = h.baseHref();
   (h.cookies = function(t, e) {
     var i, a, o, s, u;
     if (!t) {
       if ($.cookie !== D)
         for (
           D = $.cookie, a = D.split("; "), q = {}, s = 0;
           s < a.length;
           s++
         )
           (o = a[s]),
             (u = o.indexOf("=")),
             u > 0 &&
               ((t = d(o.substring(0, u))),
               q[t] === n && (q[t] = d(o.substring(u + 1))));
       return q;
     }
     e === n
       ? ($.cookie =
           encodeURIComponent(t) +
           "=;path=" +
           R +
           ";expires=Thu, 01 Jan 1970 00:00:00 GMT")
       : b(e) &&
         ((i =
           ($.cookie =
             encodeURIComponent(t) +
             "=" +
             encodeURIComponent(e) +
             ";path=" +
             R).length + 1),
         i > 4096 &&
           r.warn(
             "Cookie '" +
               t +
               "' possibly not set or overflowed because it was too large (" +
               i +
               " > 4096 bytes)!"
           ));
   }),
     (h.defer = function(t, e) {
       var n;
       return (
         k++,
         (n = y(function() {
           delete x[n], o(t);
         }, e || 0)),
         (x[n] = !0),
         n
       );
     }),
     (h.defer.cancel = function(t) {
       return x[t] ? (delete x[t], w(t), o(p), !0) : !1;
     });
 }
 function Je() {
   this.$get = [
     "$window",
     "$log",
     "$sniffer",
     "$document",
     function(t, e, n, r) {
       return new We(t, r, e, n);
     }
   ];
 }
 function Ye() {
   this.$get = function() {
     function t(t, n) {
       function i(t) {
         t != d &&
           (h ? h == t && (h = t.n) : (h = t),
           a(t.n, t.p),
           a(t, d),
           (d = t),
           (d.n = null));
       }
       function a(t, e) {
         t != e && (t && (t.p = e), e && (e.n = t));
       }
       if (t in e)
         throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", t);
       var o = 0,
         s = f({}, n, { id: t }),
         u = {},
         l = (n && n.capacity) || Number.MAX_VALUE,
         c = {},
         d = null,
         h = null;
       return (e[t] = {
         put: function(t, e) {
           if (l < Number.MAX_VALUE) {
             var n = c[t] || (c[t] = { key: t });
             i(n);
           }
           if (!g(e))
             return t in u || o++, (u[t] = e), o > l && this.remove(h.key), e;
         },
         get: function(t) {
           if (l < Number.MAX_VALUE) {
             var e = c[t];
             if (!e) return;
             i(e);
           }
           return u[t];
         },
         remove: function(t) {
           if (l < Number.MAX_VALUE) {
             var e = c[t];
             if (!e) return;
             e == d && (d = e.p),
               e == h && (h = e.n),
               a(e.n, e.p),
               delete c[t];
           }
           delete u[t], o--;
         },
         removeAll: function() {
           (u = {}), (o = 0), (c = {}), (d = h = null);
         },
         destroy: function() {
           (u = null), (s = null), (c = null), delete e[t];
         },
         info: function() {
           return f({}, s, { size: o });
         }
       });
     }
     var e = {};
     return (
       (t.info = function() {
         var t = {};
         return (
           a(e, function(e, n) {
             t[n] = e.info();
           }),
           t
         );
       }),
       (t.get = function(t) {
         return e[t];
       }),
       t
     );
   };
 }
 function Ze() {
   this.$get = [
     "$cacheFactory",
     function(t) {
       return t("templates");
     }
   ];
 }
 function Ke(t, r) {
   function i(t, e) {
     var n = /^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,
       r = {};
     return (
       a(t, function(t, i) {
         var a = t.match(n);
         if (!a)
           throw Wi(
             "iscp",
             "Invalid isolate scope definition for directive '{0}'. Definition: {... {1}: '{2}' ...}",
             e,
             i,
             t
           );
         r[i] = {
           mode: a[1][0],
           collection: "*" === a[2],
           optional: "?" === a[3],
           attrName: a[4] || i
         };
       }),
       r
     );
   }
   var o = {},
     s = "Directive",
     l = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/,
     c = /(([\w\-]+)(?:\:([^;]+))?;?)/,
     d = P("ngSrc,ngSrcset,src,srcset"),
     g = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
     w = /^(on[a-z]+|formaction)$/;
   (this.directive = function S(e, n) {
     return (
       oe(e, "directive"),
       b(e)
         ? (ie(n, "directiveFactory"),
           o.hasOwnProperty(e) ||
             ((o[e] = []),
             t.factory(e + s, [
               "$injector",
               "$exceptionHandler",
               function(t, n) {
                 var r = [];
                 return (
                   a(o[e], function(a, o) {
                     try {
                       var s = t.invoke(a);
                       k(s)
                         ? (s = { compile: m(s) })
                         : !s.compile && s.link && (s.compile = m(s.link)),
                         (s.priority = s.priority || 0),
                         (s.index = o),
                         (s.name = s.name || e),
                         (s.require = s.require || (s.controller && s.name)),
                         (s.restrict = s.restrict || "EA"),
                         y(s.scope) &&
                           (s.$$isolateBindings = i(s.scope, s.name)),
                         r.push(s);
                     } catch (u) {
                       n(u);
                     }
                   }),
                   r
                 );
               }
             ])),
           o[e].push(n))
         : a(e, u(S)),
       this
     );
   }),
     (this.aHrefSanitizationWhitelist = function(t) {
       return v(t)
         ? (r.aHrefSanitizationWhitelist(t), this)
         : r.aHrefSanitizationWhitelist();
     }),
     (this.imgSrcSanitizationWhitelist = function(t) {
       return v(t)
         ? (r.imgSrcSanitizationWhitelist(t), this)
         : r.imgSrcSanitizationWhitelist();
     });
   var x = !0;
   (this.debugInfoEnabled = function(t) {
     return v(t) ? ((x = t), this) : x;
   }),
     (this.$get = [
       "$injector",
       "$interpolate",
       "$exceptionHandler",
       "$templateRequest",
       "$parse",
       "$controller",
       "$rootScope",
       "$document",
       "$sce",
       "$animate",
       "$$sanitizeUri",
       function(t, r, i, u, m, v, S, C, O, E, j) {
         function N(t, e) {
           try {
             t.addClass(e);
           } catch (n) {}
         }
         function T(t, e, n, r, i) {
           t instanceof Qr || (t = Qr(t)),
             a(t, function(e, n) {
               e.nodeType == vi &&
                 e.nodeValue.match(/\S+/) &&
                 (t[n] = Qr(e)
                   .wrap("")
                   .parent()[0]);
             });
           var o = P(t, e, t, n, r, i);
           T.$$addScopeClass(t);
           var s = null;
           return function(e, n, r) {
             ie(e, "scope"), (r = r || {});
             var i = r.parentBoundTranscludeFn,
               a = r.transcludeControllers,
               u = r.futureParentElement;
             i && i.$$boundTransclude && (i = i.$$boundTransclude),
               s || (s = M(u));
             var l;
             if (
               ((l =
                 "html" !== s
                   ? Qr(
                       X(
                         s,
Qr("
")
                           .append(t)
                           .html()
                       )
                     )
                   : n
                     ? Di.clone.call(t)
                     : t),
               a)
             )
               for (var c in a) l.data("$" + c + "Controller", a[c].instance);
             return (
               T.$$addScopeInfo(l, e), n && n(l, e), o && o(e, l, l, i), l
             );
           };
         }
         function M(t) {
           var e = t && t[0];
           return e
             ? "foreignobject" !== V(e) && e.toString().match(/SVG/)
               ? "svg"
               : "html"
             : "html";
         }
         function P(t, e, r, i, a, o) {
           function s(t, r, i, a) {
             var o, s, u, l, c, f, d, h, m;
             if (p) {
               var g = r.length;
               for (m = new Array(g), c = 0; c < $.length; c += 3)
                 (d = $[c]), (m[d] = r[d]);
             } else m = r;
             for (c = 0, f = $.length; f > c; )
               (u = m[$[c++]]),
                 (o = $[c++]),
                 (s = $[c++]),
                 o
                   ? (o.scope
                       ? ((l = t.$new()), T.$$addScopeInfo(Qr(u), l))
                       : (l = t),
                     (h = o.transcludeOnThisElement
                       ? D(
                           t,
                           o.transclude,
                           a,
                           o.elementTranscludeOnThisElement
                         )
                       : !o.templateOnThisElement && a
                         ? a
                         : !a && e
                           ? D(t, e)
                           : null),
                     o(s, l, u, i, h))
                   : s && s(t, u.childNodes, n, a);
           }
           for (var u, l, c, f, d, h, p, $ = [], m = 0; m < t.length; m++)
             (u = new oe()),
               (l = R(t[m], [], u, 0 === m ? i : n, a)),
               (c = l.length ? F(l, t[m], u, e, r, null, [], [], o) : null),
               c && c.scope && T.$$addScopeClass(u.$$element),
               (d =
                 (c && c.terminal) || !(f = t[m].childNodes) || !f.length
                   ? null
                   : P(
                       f,
                       c
                         ? (c.transcludeOnThisElement ||
                             !c.templateOnThisElement) &&
                           c.transclude
                         : e
                     )),
               (c || d) && ($.push(m, c, d), (h = !0), (p = p || c)),
               (o = null);
           return h ? s : null;
         }
         function D(t, e, n) {
           var r = function(r, i, a, o, s) {
             return (
               r || ((r = t.$new(!1, s)), (r.$$transcluded = !0)),
               e(r, i, {
                 parentBoundTranscludeFn: n,
                 transcludeControllers: a,
                 futureParentElement: o
               })
             );
           };
           return r;
         }
         function R(t, e, n, r, i) {
           var a,
             o,
             s = t.nodeType,
             u = n.$attr;
           switch (s) {
             case gi:
               B(e, Xe(V(t)), "E", r, i);
               for (
                 var f,
                   d,
                   h,
                   p,
                   $,
                   m,
                   g = t.attributes,
                   v = 0,
                   w = g && g.length;
                 w > v;
                 v++
               ) {
                 var x = !1,
                   k = !1;
                 (f = g[v]),
                   (d = f.name),
                   ($ = fi(f.value)),
                   (p = Xe(d)),
                   (m = fe.test(p)) &&
                     (d = d
                       .replace(Ji, "")
                       .substr(8)
                       .replace(/_(.)/g, function(t, e) {
                         return e.toUpperCase();
                       }));
                 var S = p.replace(/(Start|End)$/, "");
                 G(S) &&
                   p === S + "Start" &&
                   ((x = d),
                   (k = d.substr(0, d.length - 5) + "end"),
                   (d = d.substr(0, d.length - 6))),
                   (h = Xe(d.toLowerCase())),
                   (u[h] = d),
                   (m || !n.hasOwnProperty(h)) &&
                     ((n[h] = $), De(t, h) && (n[h] = !0)),
                   te(t, e, $, h, m),
                   B(e, h, "A", r, i, x, k);
               }
               if (
                 ((o = t.className), y(o) && (o = o.animVal), b(o) && "" !== o)
               )
                 for (; (a = c.exec(o)); )
                   (h = Xe(a[2])),
                     B(e, h, "C", r, i) && (n[h] = fi(a[3])),
                     (o = o.substr(a.index + a[0].length));
               break;
             case vi:
               K(e, t.nodeValue);
               break;
             case yi:
               try {
                 (a = l.exec(t.nodeValue)),
                   a &&
                     ((h = Xe(a[1])), B(e, h, "M", r, i) && (n[h] = fi(a[2])));
               } catch (C) {}
           }
           return e.sort(Y), e;
         }
         function _(t, e, n) {
           var r = [],
             i = 0;
           if (e && t.hasAttribute && t.hasAttribute(e)) {
             do {
               if (!t)
                 throw Wi(
                   "uterdir",
                   "Unterminated attribute, found '{0}' but no matching '{1}' found.",
                   e,
                   n
                 );
               t.nodeType == gi &&
                 (t.hasAttribute(e) && i++, t.hasAttribute(n) && i--),
                 r.push(t),
                 (t = t.nextSibling);
             } while (i > 0);
           } else r.push(t);
           return Qr(r);
         }
         function L(t, e, n) {
           return function(r, i, a, o, s) {
             return (i = _(i[0], e, n)), t(r, i, a, o, s);
           };
         }
         function F(t, o, s, u, l, c, f, d, h) {
           function p(t, e, n, r) {
             t &&
               (n && (t = L(t, n, r)),
               (t.require = C.require),
               (t.directiveName = O),
               (V === C || C.$$isolateScope) &&
                 (t = re(t, { isolateScope: !0 })),
               f.push(t)),
               e &&
                 (n && (e = L(e, n, r)),
                 (e.require = C.require),
                 (e.directiveName = O),
                 (V === C || C.$$isolateScope) &&
                   (e = re(e, { isolateScope: !0 })),
                 d.push(e));
           }
           function $(t, e, n, r) {
             var i,
               o,
               s = "data",
               u = !1,
               l = n;
             if (b(e)) {
               if (
                 ((o = e.match(g)),
                 (e = e.substring(o[0].length)),
                 o[3] && (o[1] ? (o[3] = null) : (o[1] = o[3])),
                 "^" === o[1]
                   ? (s = "inheritedData")
                   : "^^" === o[1] &&
                     ((s = "inheritedData"), (l = n.parent())),
                 "?" === o[2] && (u = !0),
                 (i = null),
                 r && "data" === s && (i = r[e]) && (i = i.instance),
                 (i = i || l[s]("$" + e + "Controller")),
                 !i && !u)
               )
                 throw Wi(
                   "ctreq",
                   "Controller '{0}', required by directive '{1}', can't be found!",
                   e,
                   t
                 );
               return i || null;
             }
             return (
               ci(e) &&
                 ((i = []),
                 a(e, function(e) {
                   i.push($(t, e, n, r));
                 })),
               i
             );
           }
           function w(t, e, i, u, l) {
             function c(t, e, r) {
               var i;
               return (
                 A(t) || ((r = e), (e = t), (t = n)),
                 G && (i = w),
                 r || (r = G ? k.parent() : k),
                 l(t, e, i, r, j)
               );
             }
             var h, p, g, y, b, w, x, k, C;
             if (
               (o === i
                 ? ((C = s), (k = s.$$element))
                 : ((k = Qr(i)), (C = new oe(k, s))),
               V && (b = e.$new(!0)),
               l && ((x = c), (x.$$boundTransclude = l)),
               P &&
                 ((S = {}),
                 (w = {}),
                 a(P, function(t) {
                   var n,
                     r = {
                       $scope: t === V || t.$$isolateScope ? b : e,
                       $element: k,
                       $attrs: C,
                       $transclude: x
                     };
                   (y = t.controller),
                     "@" == y && (y = C[t.name]),
                     (n = v(y, r, !0, t.controllerAs)),
                     (w[t.name] = n),
                     G || k.data("$" + t.name + "Controller", n.instance),
                     (S[t.name] = n);
                 })),
               V)
             ) {
               T.$$addScopeInfo(
                 k,
                 b,
                 !0,
                 !(q && (q === V || q === V.$$originalDirective))
               ),
                 T.$$addScopeClass(k, !0);
               var O = S && S[V.name],
                 E = b;
               O &&
                 O.identifier &&
                 V.bindToController === !0 &&
                 (E = O.instance),
                 a((b.$$isolateBindings = V.$$isolateBindings), function(
                   t,
                   n
                 ) {
                   var i,
                     a,
                     o,
                     s,
                     u = t.attrName,
                     l = t.optional,
                     c = t.mode;
                   switch (c) {
                     case "@":
                       C.$observe(u, function(t) {
                         E[n] = t;
                       }),
                         (C.$$observers[u].$$scope = e),
                         C[u] && (E[n] = r(C[u])(e));
                       break;
                     case "=":
                       if (l && !C[u]) return;
                       (a = m(C[u])),
                         (s = a.literal
                           ? I
                           : function(t, e) {
                               return t === e || (t !== t && e !== e);
                             }),
                         (o =
                           a.assign ||
                           function() {
                             throw ((i = E[n] = a(e)),
                             Wi(
                               "nonassign",
                               "Expression '{0}' used with directive '{1}' is non-assignable!",
                               C[u],
                               V.name
                             ));
                           }),
                         (i = E[n] = a(e));
                       var f = function(t) {
                         return (
                           s(t, E[n]) ||
                             (s(t, i) ? o(e, (t = E[n])) : (E[n] = t)),
                           (i = t)
                         );
                       };
                       f.$stateful = !0;
                       var d;
                       (d = t.collection
                         ? e.$watchCollection(C[u], f)
                         : e.$watch(m(C[u], f), null, a.literal)),
                         b.$on("$destroy", d);
                       break;
                     case "&":
                       (a = m(C[u])),
                         (E[n] = function(t) {
                           return a(e, t);
                         });
                   }
                 });
             }
             for (
               S &&
                 (a(S, function(t) {
                   t();
                 }),
                 (S = null)),
                 h = 0,
                 p = f.length;
               p > h;
               h++
             )
               (g = f[h]),
                 ae(
                   g,
                   g.isolateScope ? b : e,
                   k,
                   C,
                   g.require && $(g.directiveName, g.require, k, w),
                   x
                 );
             var j = e;
             for (
               V && (V.template || null === V.templateUrl) && (j = b),
                 t && t(j, i.childNodes, n, l),
                 h = d.length - 1;
               h >= 0;
               h--
             )
               (g = d[h]),
                 ae(
                   g,
                   g.isolateScope ? b : e,
                   k,
                   C,
                   g.require && $(g.directiveName, g.require, k, w),
                   x
                 );
           }
           h = h || {};
           for (
             var x,
               S,
               C,
               O,
               E,
               j,
               N,
               M = -Number.MAX_VALUE,
               P = h.controllerDirectives,
               V = h.newIsolateScopeDirective,
               q = h.templateDirective,
               D = h.nonTlbTranscludeDirective,
               F = !1,
               B = !1,
               G = h.hasElementTranscludeDirective,
               Y = (s.$$element = Qr(o)),
               K = c,
               Q = u,
               te = 0,
               ne = t.length;
             ne > te;
             te++
           ) {
             C = t[te];
             var ie = C.$$start,
               se = C.$$end;
             if ((ie && (Y = _(o, ie, se)), (E = n), M > C.priority)) break;
             if (
               ((N = C.scope) &&
                 (C.templateUrl ||
                   (y(N)
                     ? (Z("new/isolated scope", V || x, C, Y), (V = C))
                     : Z("new/isolated scope", V, C, Y)),
                 (x = x || C)),
               (O = C.name),
               !C.templateUrl &&
                 C.controller &&
                 ((N = C.controller),
                 (P = P || {}),
                 Z("'" + O + "' controller", P[O], C, Y),
                 (P[O] = C)),
               (N = C.transclude) &&
                 ((F = !0),
                 C.$$tlb || (Z("transclusion", D, C, Y), (D = C)),
                 "element" == N
                   ? ((G = !0),
                     (M = C.priority),
                     (E = Y),
                     (Y = s.$$element = Qr(
                       e.createComment(" " + O + ": " + s[O] + " ")
                     )),
                     (o = Y[0]),
                     ee(l, U(E), o),
                     (Q = T(E, u, M, K && K.name, {
                       nonTlbTranscludeDirective: D
                     })))
                   : ((E = Qr(we(o)).contents()), Y.empty(), (Q = T(E, u)))),
               C.template)
             )
               if (
                 ((B = !0),
                 Z("template", q, C, Y),
                 (q = C),
                 (N = k(C.template) ? C.template(Y, s) : C.template),
                 (N = ce(N)),
                 C.replace)
               ) {
                 if (
                   ((K = C),
                   (E = me(N) ? [] : tn(X(C.templateNamespace, fi(N)))),
                   (o = E[0]),
                   1 != E.length || o.nodeType !== gi)
                 )
                   throw Wi(
                     "tplrt",
                     "Template for directive '{0}' must have exactly one root element. {1}",
                     O,
                     ""
                   );
                 ee(l, Y, o);
                 var ue = { $attr: {} },
                   le = R(o, [], ue),
                   fe = t.splice(te + 1, t.length - (te + 1));
                 V && H(le),
                   (t = t.concat(le).concat(fe)),
                   W(s, ue),
                   (ne = t.length);
               } else Y.html(N);
             if (C.templateUrl)
               (B = !0),
                 Z("template", q, C, Y),
                 (q = C),
                 C.replace && (K = C),
                 (w = J(t.splice(te, t.length - te), Y, s, l, F && Q, f, d, {
                   controllerDirectives: P,
                   newIsolateScopeDirective: V,
                   templateDirective: q,
                   nonTlbTranscludeDirective: D
                 })),
                 (ne = t.length);
             else if (C.compile)
               try {
                 (j = C.compile(Y, s, Q)),
                   k(j) ? p(null, j, ie, se) : j && p(j.pre, j.post, ie, se);
               } catch (de) {
                 i(de, z(Y));
               }
             C.terminal && ((w.terminal = !0), (M = Math.max(M, C.priority)));
           }
           return (
             (w.scope = x && x.scope === !0),
             (w.transcludeOnThisElement = F),
             (w.elementTranscludeOnThisElement = G),
             (w.templateOnThisElement = B),
             (w.transclude = Q),
             (h.hasElementTranscludeDirective = G),
             w
           );
         }
         function H(t) {
           for (var e = 0, n = t.length; n > e; e++)
             t[e] = h(t[e], { $$isolateScope: !0 });
         }
         function B(e, r, a, u, l, c, f) {
           if (r === l) return null;
           var d = null;
           if (o.hasOwnProperty(r))
             for (var p, $ = t.get(r + s), m = 0, g = $.length; g > m; m++)
               try {
                 (p = $[m]),
                   (u === n || u > p.priority) &&
                     -1 != p.restrict.indexOf(a) &&
                     (c && (p = h(p, { $$start: c, $$end: f })),
                     e.push(p),
                     (d = p));
               } catch (v) {
                 i(v);
               }
           return d;
         }
         function G(e) {
           if (o.hasOwnProperty(e))
             for (var n, r = t.get(e + s), i = 0, a = r.length; a > i; i++)
               if (((n = r[i]), n.multiElement)) return !0;
           return !1;
         }
         function W(t, e) {
           var n = e.$attr,
             r = t.$attr,
             i = t.$$element;
           a(t, function(r, i) {
             "$" != i.charAt(0) &&
               (e[i] &&
                 e[i] !== r &&
                 (r += ("style" === i ? ";" : " ") + e[i]),
               t.$set(i, r, !0, n[i]));
           }),
             a(e, function(e, a) {
               "class" == a
                 ? (N(i, e),
                   (t["class"] = (t["class"] ? t["class"] + " " : "") + e))
                 : "style" == a
                   ? (i.attr("style", i.attr("style") + ";" + e),
                     (t.style = (t.style ? t.style + ";" : "") + e))
                   : "$" == a.charAt(0) ||
                     t.hasOwnProperty(a) ||
                     ((t[a] = e), (r[a] = n[a]));
             });
         }
         function J(t, e, n, r, i, o, s, l) {
           var c,
             f,
             d = [],
             p = e[0],
             $ = t.shift(),
             m = h($, {
               templateUrl: null,
               transclude: null,
               replace: null,
               $$originalDirective: $
             }),
             g = k($.templateUrl) ? $.templateUrl(e, n) : $.templateUrl,
             v = $.templateNamespace;
           return (
             e.empty(),
             u(O.getTrustedResourceUrl(g)).then(function(u) {
               var h, b, w, x;
               if (((u = ce(u)), $.replace)) {
                 if (
                   ((w = me(u) ? [] : tn(X(v, fi(u)))),
                   (h = w[0]),
                   1 != w.length || h.nodeType !== gi)
                 )
                   throw Wi(
                     "tplrt",
                     "Template for directive '{0}' must have exactly one root element. {1}",
                     $.name,
                     g
                   );
                 (b = { $attr: {} }), ee(r, e, h);
                 var k = R(h, [], b);
                 y($.scope) && H(k), (t = k.concat(t)), W(n, b);
               } else (h = p), e.html(u);
               for (
                 t.unshift(m),
                   c = F(t, h, n, i, e, $, o, s, l),
                   a(r, function(t, n) {
                     t == h && (r[n] = e[0]);
                   }),
                   f = P(e[0].childNodes, i);
                 d.length;
               ) {
                 var S = d.shift(),
                   C = d.shift(),
                   A = d.shift(),
                   O = d.shift(),
                   E = e[0];
                 if (!S.$$destroyed) {
                   if (C !== p) {
                     var j = C.className;
                     (l.hasElementTranscludeDirective && $.replace) ||
                       (E = we(h)),
                       ee(A, Qr(C), E),
                       N(Qr(E), j);
                   }
                   (x = c.transcludeOnThisElement ? D(S, c.transclude, O) : O),
                     c(f, S, E, r, x);
                 }
               }
               d = null;
             }),
             function(t, e, n, r, i) {
               var a = i;
               e.$$destroyed ||
                 (d
                   ? d.push(e, n, r, a)
                   : (c.transcludeOnThisElement && (a = D(e, c.transclude, i)),
                     c(f, e, n, r, a)));
             }
           );
         }
         function Y(t, e) {
           var n = e.priority - t.priority;
           return 0 !== n
             ? n
             : t.name !== e.name
               ? t.name < e.name
                 ? -1
                 : 1
               : t.index - e.index;
         }
         function Z(t, e, n, r) {
           if (e)
             throw Wi(
               "multidir",
               "Multiple directives [{0}, {1}] asking for {2} on: {3}",
               e.name,
               n.name,
               t,
               z(r)
             );
         }
         function K(t, e) {
           var n = r(e, !0);
           n &&
             t.push({
               priority: 0,
               compile: function(t) {
                 var e = t.parent(),
                   r = !!e.length;
                 return (
                   r && T.$$addBindingClass(e),
                   function(t, e) {
                     var i = e.parent();
                     r || T.$$addBindingClass(i),
                       T.$$addBindingInfo(i, n.expressions),
                       t.$watch(n, function(t) {
                         e[0].nodeValue = t;
                       });
                   }
                 );
               }
             });
         }
         function X(t, n) {
           switch ((t = Wr(t || "html"))) {
             case "svg":
             case "math":
               var r = e.createElement("div");
               return (
                 (r.innerHTML = "<" + t + ">" + n + "</" + t + ">"),
                 r.childNodes[0].childNodes
               );
             default:
               return n;
           }
         }
         function Q(t, e) {
           if ("srcdoc" == e) return O.HTML;
           var n = V(t);
           return "xlinkHref" == e ||
             ("form" == n && "action" == e) ||
             ("img" != n && ("src" == e || "ngSrc" == e))
             ? O.RESOURCE_URL
             : void 0;
         }
         function te(t, e, n, i, a) {
           var o = Q(t, i);
           a = d[i] || a;
           var s = r(n, !0, o, a);
           if (s) {
             if ("multiple" === i && "select" === V(t))
               throw Wi(
                 "selmulti",
                 "Binding to the 'multiple' attribute is not supported. Element: {0}",
                 z(t)
               );
             e.push({
               priority: 100,
               compile: function() {
                 return {
                   pre: function(t, e, u) {
                     var l = u.$$observers || (u.$$observers = {});
                     if (w.test(i))
                       throw Wi(
                         "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, o, a)), (n = c)),
                       s &&
                         ((u[i] = s(t)),
                         ((l[i] || (l[i] = [])).$$inter = !0),
                         (
                           (u.$$observers && u.$$observers[i].$$scope) ||
                           t
                         ).$watch(s, function(t, e) {
                           "class" === i && t != e
                             ? u.$updateClass(t, e)
                             : u.$set(i, t);
                         }));
                   }
                 };
               }
             });
           }
         }
         function ee(t, n, r) {
           var i,
             a,
             o = n[0],
             s = n.length,
             u = o.parentNode;
           if (t)
             for (i = 0, a = t.length; a > i; i++)
               if (t[i] == o) {
                 t[i++] = r;
                 for (var l = i, c = l + s - 1, f = t.length; f > l; l++, c++)
                   f > c ? (t[l] = t[c]) : delete t[l];
                 (t.length -= s - 1), t.context === o && (t.context = r);
                 break;
               }
           u && u.replaceChild(r, o);
           var d = e.createDocumentFragment();
           d.appendChild(o),
             Qr(r).data(Qr(o).data()),
             ti
               ? ((li = !0), ti.cleanData([o]))
               : delete Qr.cache[o[Qr.expando]];
           for (var h = 1, p = n.length; p > h; h++) {
             var $ = n[h];
             Qr($).remove(), d.appendChild($), delete n[h];
           }
           (n[0] = r), (n.length = 1);
         }
         function re(t, e) {
           return f(
             function() {
               return t.apply(null, arguments);
             },
             t,
             e
           );
         }
         function ae(t, e, n, r, a, o) {
           try {
             t(e, n, r, a, o);
           } catch (s) {
             i(s, z(n));
           }
         }
         var oe = function(t, e) {
           if (e) {
             var n,
               r,
               i,
               a = Object.keys(e);
             for (n = 0, r = a.length; r > n; n++)
               (i = a[n]), (this[i] = e[i]);
           } else this.$attr = {};
           this.$$element = t;
         };
         oe.prototype = {
           $normalize: Xe,
           $addClass: function(t) {
             t && t.length > 0 && E.addClass(this.$$element, t);
           },
           $removeClass: function(t) {
             t && t.length > 0 && E.removeClass(this.$$element, t);
           },
           $updateClass: function(t, e) {
             var n = Qe(t, e);
             n && n.length && E.addClass(this.$$element, n);
             var r = Qe(e, t);
             r && r.length && E.removeClass(this.$$element, r);
           },
           $set: function(t, e, r, o) {
             var s,
               u = this.$$element[0],
               l = De(u, t),
               c = Re(u, t),
               f = t;
             if (
               (l
                 ? (this.$$element.prop(t, e), (o = l))
                 : c && ((this[c] = e), (f = c)),
               (this[t] = e),
               o
                 ? (this.$attr[t] = o)
                 : ((o = this.$attr[t]),
                   o || (this.$attr[t] = o = ne(t, "-"))),
               (s = V(this.$$element)),
               ("a" === s && "href" === t) || ("img" === s && "src" === t))
             )
               this[t] = e = j(e, "src" === t);
             else if ("img" === s && "srcset" === t) {
               for (
                 var d = "",
                   h = fi(e),
                   p = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,
                   $ = /\s/.test(h) ? p : /(,)/,
                   m = h.split($),
                   g = Math.floor(m.length / 2),
                   v = 0;
                 g > v;
                 v++
               ) {
                 var y = 2 * v;
                 (d += j(fi(m[y]), !0)), (d += " " + fi(m[y + 1]));
               }
               var b = fi(m[2 * v]).split(/\s/);
               (d += j(fi(b[0]), !0)),
                 2 === b.length && (d += " " + fi(b[1])),
                 (this[t] = e = d);
             }
             r !== !1 &&
               (null === e || e === n
                 ? this.$$element.removeAttr(o)
                 : this.$$element.attr(o, e));
             var w = this.$$observers;
             w &&
               a(w[f], function(t) {
                 try {
                   t(e);
                 } catch (n) {
                   i(n);
                 }
               });
           },
           $observe: function(t, e) {
             var n = this,
               r = n.$$observers || (n.$$observers = le()),
               i = r[t] || (r[t] = []);
             return (
               i.push(e),
               S.$evalAsync(function() {
                 !i.$$inter && n.hasOwnProperty(t) && e(n[t]);
               }),
               function() {
                 q(i, e);
               }
             );
           }
         };
         var se = r.startSymbol(),
           ue = r.endSymbol(),
           ce =
             "Template:" == se" == ue
               ? $
               : function(t) {
                   return t.replace(/\{\{/g, se).replace(/}}/g, ue);
                 },
           fe = /^ngAttr[A-Z]/;
         return (
           (T.$$addBindingInfo = x
             ? function(t, e) {
                 var n = t.data("$binding") || [];
                 ci(e) ? (n = n.concat(e)) : n.push(e), t.data("$binding", n);
               }
             : p),
           (T.$$addBindingClass = x
             ? function(t) {
                 N(t, "ng-binding");
               }
             : p),
           (T.$$addScopeInfo = x
             ? function(t, e, n, r) {
                 var i = n
                   ? r
                     ? "$isolateScopeNoTemplate"
                     : "$isolateScope"
                   : "$scope";
                 t.data(i, e);
               }
             : p),
           (T.$$addScopeClass = x
             ? function(t, e) {
                 N(t, e ? "ng-isolate-scope" : "ng-scope");
               }
             : p),
           T
         );
       }
     ]);
 }
 function Xe(t) {
   return $e(t.replace(Ji, ""));
 }
 function Qe(t, e) {
   var n = "",
     r = t.split(/\s+/),
     i = e.split(/\s+/);
   t: for (var a = 0; a < r.length; a++) {
     for (var o = r[a], s = 0; s < i.length; s++) if (o == i[s]) continue t;
     n += (n.length > 0 ? " " : "") + o;
   }
   return n;
 }
 function tn(t) {
   t = Qr(t);
   var e = t.length;
   if (1 >= e) return t;
   for (; e--; ) {
     var n = t[e];
     n.nodeType === yi && ri.call(t, e, 1);
   }
   return t;
 }
 function en() {
   var t = {},
     e = !1,
     i = /^(\S+)(\s+as\s+(\w+))?$/;
   (this.register = function(e, n) {
     oe(e, "controller"), y(e) ? f(t, e) : (t[e] = n);
   }),
     (this.allowGlobals = function() {
       e = !0;
     }),
     (this.$get = [
       "$injector",
       "$window",
       function(a, o) {
         function s(t, e, n, i) {
           if (!t || !y(t.$scope))
             throw r("$controller")(
               "noscp",
               "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",
               i,
               e
             );
           t.$scope[e] = n;
         }
         return function(r, u, l, c) {
           var d, h, p, $;
           if (((l = l === !0), c && b(c) && ($ = c), b(r))) {
             if (((h = r.match(i)), !h))
               throw Yi(
                 "ctrlfmt",
                 "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",
                 r
               );
             (p = h[1]),
               ($ = $ || h[3]),
               (r = t.hasOwnProperty(p)
                 ? t[p]
                 : se(u.$scope, p, !0) || (e ? se(o, p, !0) : n)),
               ae(r, p, !0);
           }
           if (l) {
             var m = (ci(r) ? r[r.length - 1] : r).prototype;
             return (
               (d = Object.create(m || null)),
               $ && s(u, $, d, p || r.name),
               f(
                 function() {
                   return a.invoke(r, d, u, p), d;
                 },
                 { instance: d, identifier: $ }
               )
             );
           }
           return (
             (d = a.instantiate(r, u, p)), $ && s(u, $, d, p || r.name), d
           );
         };
       }
     ]);
 }
 function nn() {
   this.$get = [
     "$window",
     function(t) {
       return Qr(t.document);
     }
   ];
 }
 function rn() {
   this.$get = [
     "$log",
     function(t) {
       return function() {
         t.error.apply(t, arguments);
       };
     }
   ];
 }
 function an(t, e) {
   if (b(t)) {
     var n = t.replace(ta, "").trim();
     if (n) {
       var r = e("Content-Type");
       ((r && 0 === r.indexOf(Zi)) || on(n)) && (t = B(n));
     }
   }
   return t;
 }
 function on(t) {
   var e = t.match(Xi);
   return e && Qi[e[0]].test(t);
 }
 function sn(t) {
   var e,
     n,
     r,
     i = le();
   return t
     ? (a(t.split("\n"), function(t) {
         (r = t.indexOf(":")),
           (e = Wr(fi(t.substr(0, r)))),
           (n = fi(t.substr(r + 1))),
           e && (i[e] = i[e] ? i[e] + ", " + n : n);
       }),
       i)
     : i;
 }
 function un(t) {
   var e = y(t) ? t : n;
   return function(n) {
     if ((e || (e = sn(t)), n)) {
       var r = e[Wr(n)];
       return void 0 === r && (r = null), r;
     }
     return e;
   };
 }
 function ln(t, e, n, r) {
   return k(r)
     ? r(t, e, n)
     : (a(r, function(r) {
         t = r(t, e, n);
       }),
       t);
 }
 function cn(t) {
   return t >= 200 && 300 > t;
 }
 function fn() {
   var t = (this.defaults = {
       transformResponse: [an],
       transformRequest: [
         function(t) {
           return !y(t) || O(t) || j(t) || E(t) ? t : H(t);
         }
       ],
       headers: {
         common: { Accept: "application/json, text/plain, */*" },
         post: R(Ki),
         put: R(Ki),
         patch: R(Ki)
       },
       xsrfCookieName: "XSRF-TOKEN",
       xsrfHeaderName: "X-XSRF-TOKEN"
     }),
     e = !1;
   this.useApplyAsync = function(t) {
     return v(t) ? ((e = !!t), this) : e;
   };
   var i = (this.interceptors = []);
   this.$get = [
     "$httpBackend",
     "$browser",
     "$cacheFactory",
     "$rootScope",
     "$q",
     "$injector",
     function(o, u, l, c, d, h) {
       function p(e) {
         function i(t) {
           var e = f({}, t);
           return (
             (e.data = t.data
               ? ln(t.data, t.headers, t.status, u.transformResponse)
               : t.data),
             cn(t.status) ? e : d.reject(e)
           );
         }
         function o(t) {
           var e,
             n = {};
           return (
             a(t, function(t, r) {
               k(t) ? ((e = t()), null != e && (n[r] = e)) : (n[r] = t);
             }),
             n
           );
         }
         function s(e) {
           var n,
             r,
             i,
             a = t.headers,
             s = f({}, e.headers);
           a = f({}, a.common, a[Wr(e.method)]);
           t: for (n in a) {
             r = Wr(n);
             for (i in s) if (Wr(i) === r) continue t;
             s[n] = a[n];
           }
           return o(s);
         }
         if (!si.isObject(e))
           throw r("$http")(
             "badreq",
             "Http request configuration must be an object.  Received: {0}",
             e
           );
         var u = f(
           {
             method: "get",
             transformRequest: t.transformRequest,
             transformResponse: t.transformResponse
           },
           e
         );
         (u.headers = s(e)), (u.method = Yr(u.method));
         var l = function(e) {
             var r = e.headers,
               o = ln(e.data, un(r), n, e.transformRequest);
             return (
               g(o) &&
                 a(r, function(t, e) {
                   "content-type" === Wr(e) && delete r[e];
                 }),
               g(e.withCredentials) &&
                 !g(t.withCredentials) &&
                 (e.withCredentials = t.withCredentials),
               w(e, o).then(i, i)
             );
           },
           c = [l, n],
           h = d.when(u);
         for (
           a(A, function(t) {
             (t.request || t.requestError) &&
               c.unshift(t.request, t.requestError),
               (t.response || t.responseError) &&
                 c.push(t.response, t.responseError);
           });
           c.length;
         ) {
           var p = c.shift(),
             $ = c.shift();
           h = h.then(p, $);
         }
         return (
           (h.success = function(t) {
             return (
               h.then(function(e) {
                 t(e.data, e.status, e.headers, u);
               }),
               h
             );
           }),
           (h.error = function(t) {
             return (
               h.then(null, function(e) {
                 t(e.data, e.status, e.headers, u);
               }),
               h
             );
           }),
           h
         );
       }
       function $() {
         a(arguments, function(t) {
           p[t] = function(e, n) {
             return p(f(n || {}, { method: t, url: e }));
           };
         });
       }
       function m() {
         a(arguments, function(t) {
           p[t] = function(e, n, r) {
             return p(f(r || {}, { method: t, url: e, data: n }));
           };
         });
       }
       function w(r, i) {
         function a(t, n, r, i) {
           function a() {
             s(n, t, r, i);
           }
           h && (cn(t) ? h.put(x, [t, n, sn(r), i]) : h.remove(x)),
             e ? c.$applyAsync(a) : (a(), c.$$phase || c.$apply());
         }
         function s(t, e, n, i) {
           (e = Math.max(e, 0)),
             (cn(e) ? m.resolve : m.reject)({
               data: t,
               status: e,
               headers: un(n),
               config: r,
               statusText: i
             });
         }
         function l(t) {
           s(t.data, t.status, R(t.headers()), t.statusText);
         }
         function f() {
           var t = p.pendingRequests.indexOf(r);
           -1 !== t && p.pendingRequests.splice(t, 1);
         }
         var h,
           $,
           m = d.defer(),
           b = m.promise,
           w = r.headers,
           x = S(r.url, r.params);
         if (
           (p.pendingRequests.push(r),
           b.then(f, f),
           (!r.cache && !t.cache) ||
             r.cache === !1 ||
             ("GET" !== r.method && "JSONP" !== r.method) ||
             (h = y(r.cache) ? r.cache : y(t.cache) ? t.cache : C),
           h &&
             (($ = h.get(x)),
             v($)
               ? T($)
                 ? $.then(l, l)
                 : ci($)
                   ? s($[1], $[0], R($[2]), $[3])
                   : s($, 200, {}, "OK")
               : h.put(x, b)),
           g($))
         ) {
           var k = ar(r.url)
             ? u.cookies()[r.xsrfCookieName || t.xsrfCookieName]
             : n;
           k && (w[r.xsrfHeaderName || t.xsrfHeaderName] = k),
             o(
               r.method,
               x,
               i,
               a,
               w,
               r.timeout,
               r.withCredentials,
               r.responseType
             );
         }
         return b;
       }
       function S(t, e) {
         if (!e) return t;
         var n = [];
         return (
           s(e, function(t, e) {
             null === t ||
               g(t) ||
               (ci(t) || (t = [t]),
               a(t, function(t) {
                 y(t) && (t = x(t) ? t.toISOString() : H(t)),
                   n.push(Z(e) + "=" + Z(t));
               }));
           }),
           n.length > 0 &&
             (t += (-1 == t.indexOf("?") ? "?" : "&") + n.join("&")),
           t
         );
       }
       var C = l("$http"),
         A = [];
       return (
         a(i, function(t) {
           A.unshift(b(t) ? h.get(t) : h.invoke(t));
         }),
         (p.pendingRequests = []),
         $("get", "delete", "head", "jsonp"),
         m("post", "put", "patch"),
         (p.defaults = t),
         p
       );
     }
   ];
 }
 function dn() {
   return new t.XMLHttpRequest();
 }
 function hn() {
   this.$get = [
     "$browser",
     "$window",
     "$document",
     function(t, e, n) {
       return pn(t, dn, t.defer, e.angular.callbacks, n[0]);
     }
   ];
 }
 function pn(t, e, r, i, o) {
   function s(t, e, n) {
     var r = o.createElement("script"),
       a = null;
     return (
       (r.type = "text/javascript"),
       (r.src = t),
       (r.async = !0),
       (a = function(t) {
         Ai(r, "load", a),
           Ai(r, "error", a),
           o.body.removeChild(r),
           (r = null);
         var s = -1,
           u = "unknown";
         t &&
           ("load" !== t.type || i[e].called || (t = { type: "error" }),
           (u = t.type),
           (s = "error" === t.type ? 404 : 200)),
           n && n(s, u);
       }),
       Ci(r, "load", a),
       Ci(r, "error", a),
       o.body.appendChild(r),
       a
     );
   }
   return function(o, u, l, c, f, d, h, $) {
     function m() {
       b && b(), w && w.abort();
     }
     function g(e, i, a, o, s) {
       S !== n && r.cancel(S),
         (b = w = null),
         e(i, a, o, s),
         t.$$completeOutstandingRequest(p);
     }
     if (
       (t.$$incOutstandingRequestCount(), (u = u || t.url()), "jsonp" == Wr(o))
     ) {
       var y = "_" + (i.counter++).toString(36);
       i[y] = function(t) {
         (i[y].data = t), (i[y].called = !0);
       };
       var b = s(
         u.replace("JSON_CALLBACK", "angular.callbacks." + y),
         y,
         function(t, e) {
           g(c, t, i[y].data, "", e), (i[y] = p);
         }
       );
     } else {
       var w = e();
       w.open(o, u, !0),
         a(f, function(t, e) {
           v(t) && w.setRequestHeader(e, t);
         }),
         (w.onload = function() {
           var t = w.statusText || "",
             e = "response" in w ? w.response : w.responseText,
             n = 1223 === w.status ? 204 : w.status;
           0 === n && (n = e ? 200 : "file" == ir(u).protocol ? 404 : 0),
             g(c, n, e, w.getAllResponseHeaders(), t);
         });
       var x = function() {
         g(c, -1, null, null, "");
       };
       if (
         ((w.onerror = x), (w.onabort = x), h && (w.withCredentials = !0), $)
       )
         try {
           w.responseType = $;
         } catch (k) {
           if ("json" !== $) throw k;
         }
       w.send(l || null);
     }
     if (d > 0) var S = r(m, d);
     else T(d) && d.then(m);
   };
 }
 function $n() {
   var t = "{{",
     e = "}}";
   (this.startSymbol = function(e) {
     return e ? ((t = e), this) : t;
   }),
     (this.endSymbol = function(t) {
       return t ? ((e = t), this) : e;
     }),
     (this.$get = [
       "$parse",
       "$exceptionHandler",
       "$sce",
       function(n, r, i) {
         function a(t) {
           return "\\\\\\" + t;
         }
         function o(a, o, d, h) {
           function p(n) {
             return n.replace(l, t).replace(c, e);
           }
           function $(t) {
             try {
               return (t = j(t)), h && !v(t) ? t : N(t);
             } catch (e) {
               var n = ea(
                 "interr",
                 "Can't interpolate: {0}\n{1}",
                 a,
                 e.toString()
               );
               r(n);
             }
           }
           h = !!h;
           for (
             var m, y, b, w = 0, x = [], S = [], C = a.length, A = [], O = [];
             C > w;
           ) {
             if (
               -1 == (m = a.indexOf(t, w)) ||
               -1 == (y = a.indexOf(e, m + s))
             ) {
               w !== C && A.push(p(a.substring(w)));
               break;
             }
             w !== m && A.push(p(a.substring(w, m))),
               (b = a.substring(m + s, y)),
               x.push(b),
               S.push(n(b, $)),
               (w = y + u),
               O.push(A.length),
               A.push("");
           }
           if (d && A.length > 1)
             throw ea(
               "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",
               a
             );
           if (!o || x.length) {
             var E = function(t) {
                 for (var e = 0, n = x.length; n > e; e++) {
                   if (h && g(t[e])) return;
                   A[O[e]] = t[e];
                 }
                 return A.join("");
               },
               j = function(t) {
                 return d ? i.getTrusted(d, t) : i.valueOf(t);
               },
               N = function(t) {
                 if (null == t) return "";
                 switch (typeof t) {
                   case "string":
                     break;
                   case "number":
                     t = "" + t;
                     break;
                   default:
                     t = H(t);
                 }
                 return t;
               };
             return f(
               function(t) {
                 var e = 0,
                   n = x.length,
                   i = new Array(n);
                 try {
                   for (; n > e; e++) i[e] = S[e](t);
                   return E(i);
                 } catch (o) {
                   var s = ea(
                     "interr",
                     "Can't interpolate: {0}\n{1}",
                     a,
                     o.toString()
                   );
                   r(s);
                 }
               },
               {
                 exp: a,
                 expressions: x,
                 $$watchDelegate: function(t, e, n) {
                   var r;
                   return t.$watchGroup(
                     S,
                     function(n, i) {
                       var a = E(n);
                       k(e) && e.call(this, a, n !== i ? r : a, t), (r = a);
                     },
                     n
                   );
                 }
               }
             );
           }
         }
         var s = t.length,
           u = e.length,
           l = new RegExp(t.replace(/./g, a), "g"),
           c = new RegExp(e.replace(/./g, a), "g");
         return (
           (o.startSymbol = function() {
             return t;
           }),
           (o.endSymbol = function() {
             return e;
           }),
           o
         );
       }
     ]);
 }
 function mn() {
   this.$get = [
     "$rootScope",
     "$window",
     "$q",
     "$$q",
     function(t, e, n, r) {
       function i(i, o, s, u) {
         var l = e.setInterval,
           c = e.clearInterval,
           f = 0,
           d = v(u) && !u,
           h = (d ? r : n).defer(),
           p = h.promise;
         return (
           (s = v(s) ? s : 0),
           p.then(null, null, i),
           (p.$$intervalId = l(function() {
             h.notify(f++),
               s > 0 &&
                 f >= s &&
                 (h.resolve(f), c(p.$$intervalId), delete a[p.$$intervalId]),
               d || t.$apply();
           }, o)),
           (a[p.$$intervalId] = h),
           p
         );
       }
       var a = {};
       return (
         (i.cancel = function(t) {
           return t && t.$$intervalId in a
             ? (a[t.$$intervalId].reject("canceled"),
               e.clearInterval(t.$$intervalId),
               delete a[t.$$intervalId],
               !0)
             : !1;
         }),
         i
       );
     }
   ];
 }
 function gn() {
   this.$get = function() {
     return {
       id: "en-us",
       NUMBER_FORMATS: {
         DECIMAL_SEP: ".",
         GROUP_SEP: ",",
         PATTERNS: [
           {
             minInt: 1,
             minFrac: 0,
             maxFrac: 3,
             posPre: "",
             posSuf: "",
             negPre: "-",
             negSuf: "",
             gSize: 3,
             lgSize: 3
           },
           {
             minInt: 1,
             minFrac: 2,
             maxFrac: 2,
             posPre: "¤",
             posSuf: "",
             negPre: "(¤",
             negSuf: ")",
             gSize: 3,
             lgSize: 3
           }
         ],
         CURRENCY_SYM: "$"
       },
       DATETIME_FORMATS: {
         MONTH: "January,February,March,April,May,June,July,August,September,October,November,December".split(
           ","
         ),
         SHORTMONTH: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(
           ","
         ),
         DAY: "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(
           ","
         ),
         SHORTDAY: "Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(","),
         AMPMS: ["AM", "PM"],
         medium: "MMM d, y h:mm:ss a",
         short: "M/d/yy h:mm a",
         fullDate: "EEEE, MMMM d, y",
         longDate: "MMMM d, y",
         mediumDate: "MMM d, y",
         shortDate: "M/d/yy",
         mediumTime: "h:mm:ss a",
         shortTime: "h:mm a"
       },
       pluralCat: function(t) {
         return 1 === t ? "one" : "other";
       }
     };
   };
 }
 function vn(t) {
   for (var e = t.split("/"), n = e.length; n--; ) e[n] = Y(e[n]);
   return e.join("/");
 }
 function yn(t, e) {
   var n = ir(t);
   (e.$$protocol = n.protocol),
     (e.$$host = n.hostname),
     (e.$$port = d(n.port) || ra[n.protocol] || null);
 }
 function bn(t, e) {
   var n = "/" !== t.charAt(0);
   n && (t = "/" + t);
   var r = ir(t);
   (e.$$path = decodeURIComponent(
     n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname
   )),
     (e.$$search = W(r.search)),
     (e.$$hash = decodeURIComponent(r.hash)),
     e.$$path && "/" != e.$$path.charAt(0) && (e.$$path = "/" + e.$$path);
 }
 function wn(t, e) {
   return 0 === e.indexOf(t) ? e.substr(t.length) : void 0;
 }
 function xn(t) {
   var e = t.indexOf("#");
   return -1 == e ? t : t.substr(0, e);
 }
 function kn(t) {
   return t.replace(/(#.+)|#$/, "$1");
 }
 function Sn(t) {
   return t.substr(0, xn(t).lastIndexOf("/") + 1);
 }
 function Cn(t) {
   return t.substring(0, t.indexOf("/", t.indexOf("//") + 2));
 }
 function An(t, e) {
   (this.$$html5 = !0), (e = e || "");
   var r = Sn(t);
   yn(t, this),
     (this.$$parse = function(t) {
       var e = wn(r, t);
       if (!b(e))
         throw ia(
           "ipthprfx",
           'Invalid url "{0}", missing path prefix "{1}".',
           t,
           r
         );
       bn(e, this), this.$$path || (this.$$path = "/"), this.$$compose();
     }),
     (this.$$compose = function() {
       var t = J(this.$$search),
         e = this.$$hash ? "#" + Y(this.$$hash) : "";
       (this.$$url = vn(this.$$path) + (t ? "?" + t : "") + e),
         (this.$$absUrl = r + this.$$url.substr(1));
     }),
     (this.$$parseLinkUrl = function(i, a) {
       if (a && "#" === a[0]) return this.hash(a.slice(1)), !0;
       var o, s, u;
       return (
         (o = wn(t, i)) !== n
           ? ((s = o),
             (u = (o = wn(e, o)) !== n ? r + (wn("/", o) || o) : t + s))
           : (o = wn(r, i)) !== n
             ? (u = r + o)
             : r == i + "/" && (u = r),
         u && this.$$parse(u),
         !!u
       );
     });
 }
 function On(t, e) {
   var n = Sn(t);
   yn(t, this),
     (this.$$parse = function(r) {
       function i(t, e, n) {
         var r,
           i = /^\/[A-Z]:(\/.*)/;
         return (
           0 === e.indexOf(n) && (e = e.replace(n, "")),
           i.exec(e) ? t : ((r = i.exec(t)), r ? r[1] : t)
         );
       }
       var a,
         o = wn(t, r) || wn(n, r);
       "#" === o.charAt(0)
         ? ((a = wn(e, o)), g(a) && (a = o))
         : (a = this.$$html5 ? o : ""),
         bn(a, this),
         (this.$$path = i(this.$$path, a, t)),
         this.$$compose();
     }),
     (this.$$compose = function() {
       var n = J(this.$$search),
         r = this.$$hash ? "#" + Y(this.$$hash) : "";
       (this.$$url = vn(this.$$path) + (n ? "?" + n : "") + r),
         (this.$$absUrl = t + (this.$$url ? e + this.$$url : ""));
     }),
     (this.$$parseLinkUrl = function(e) {
       return xn(t) == xn(e) ? (this.$$parse(e), !0) : !1;
     });
 }
 function En(t, e) {
   (this.$$html5 = !0), On.apply(this, arguments);
   var n = Sn(t);
   (this.$$parseLinkUrl = function(r, i) {
     if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
     var a, o;
     return (
       t == xn(r)
         ? (a = r)
         : (o = wn(n, r))
           ? (a = t + e + o)
           : n === r + "/" && (a = n),
       a && this.$$parse(a),
       !!a
     );
   }),
     (this.$$compose = function() {
       var n = J(this.$$search),
         r = this.$$hash ? "#" + Y(this.$$hash) : "";
       (this.$$url = vn(this.$$path) + (n ? "?" + n : "") + r),
         (this.$$absUrl = t + e + this.$$url);
     });
 }
 function jn(t) {
   return function() {
     return this[t];
   };
 }
 function Nn(t, e) {
   return function(n) {
     return g(n) ? this[t] : ((this[t] = e(n)), this.$$compose(), this);
   };
 }
 function Tn() {
   var t = "",
     e = { enabled: !1, requireBase: !0, rewriteLinks: !0 };
   (this.hashPrefix = function(e) {
     return v(e) ? ((t = e), this) : t;
   }),
     (this.html5Mode = function(t) {
       return N(t)
         ? ((e.enabled = t), this)
         : y(t)
           ? (N(t.enabled) && (e.enabled = t.enabled),
             N(t.requireBase) && (e.requireBase = t.requireBase),
             N(t.rewriteLinks) && (e.rewriteLinks = t.rewriteLinks),
             this)
           : e;
     }),
     (this.$get = [
       "$rootScope",
       "$browser",
       "$sniffer",
       "$rootElement",
       "$window",
       function(n, r, i, a, o) {
         function s(t, e, n) {
           var i = l.url(),
             a = l.$$state;
           try {
             r.url(t, e, n), (l.$$state = r.state());
           } catch (o) {
             throw (l.url(i), (l.$$state = a), o);
           }
         }
         function u(t, e) {
           n.$broadcast("$locationChangeSuccess", l.absUrl(), t, l.$$state, e);
         }
         var l,
           c,
           f,
           d = r.baseHref(),
           h = r.url();
         if (e.enabled) {
           if (!d && e.requireBase)
             throw ia(
               "nobase",
               "$location in HTML5 mode requires a <base> tag to be present!"
             );
           (f = Cn(h) + (d || "/")), (c = i.history ? An : En);
         } else (f = xn(h)), (c = On);
         (l = new c(f, "#" + t)),
           l.$$parseLinkUrl(h, h),
           (l.$$state = r.state());
         var p = /^\s*(javascript|mailto):/i;
         a.on("click", function(t) {
           if (
             e.rewriteLinks &&
             !t.ctrlKey &&
             !t.metaKey &&
             !t.shiftKey &&
             2 != t.which &&
             2 != t.button
           ) {
             for (var i = Qr(t.target); "a" !== V(i[0]); )
               if (i[0] === a[0] || !(i = i.parent())[0]) return;
             var s = i.prop("href"),
               u = i.attr("href") || i.attr("xlink:href");
             y(s) &&
               "[object SVGAnimatedString]" === s.toString() &&
               (s = ir(s.animVal).href),
               p.test(s) ||
                 !s ||
                 i.attr("target") ||
                 t.isDefaultPrevented() ||
                 (l.$$parseLinkUrl(s, u) &&
                   (t.preventDefault(),
                   l.absUrl() != r.url() &&
                     (n.$apply(),
                     (o.angular["ff-684208-preventDefault"] = !0))));
           }
         }),
           kn(l.absUrl()) != kn(h) && r.url(l.absUrl(), !0);
         var $ = !0;
         return (
           r.onUrlChange(function(t, e) {
             n.$evalAsync(function() {
               var r,
                 i = l.absUrl(),
                 a = l.$$state;
               l.$$parse(t),
                 (l.$$state = e),
                 (r = n.$broadcast("$locationChangeStart", t, i, e, a)
                   .defaultPrevented),
                 l.absUrl() === t &&
                   (r
                     ? (l.$$parse(i), (l.$$state = a), s(i, !1, a))
                     : (($ = !1), u(i, a)));
             }),
               n.$$phase || n.$digest();
           }),
           n.$watch(function() {
             var t = kn(r.url()),
               e = kn(l.absUrl()),
               a = r.state(),
               o = l.$$replace,
               c = t !== e || (l.$$html5 && i.history && a !== l.$$state);
             ($ || c) &&
               (($ = !1),
               n.$evalAsync(function() {
                 var e = l.absUrl(),
                   r = n.$broadcast("$locationChangeStart", e, t, l.$$state, a)
                     .defaultPrevented;
                 l.absUrl() === e &&
                   (r
                     ? (l.$$parse(t), (l.$$state = a))
                     : (c && s(e, o, a === l.$$state ? null : l.$$state),
                       u(t, a)));
               })),
               (l.$$replace = !1);
           }),
           l
         );
       }
     ]);
 }
 function Mn() {
   var t = !0,
     e = this;
   (this.debugEnabled = function(e) {
     return v(e) ? ((t = e), this) : t;
   }),
     (this.$get = [
       "$window",
       function(n) {
         function r(t) {
           return (
             t instanceof Error &&
               (t.stack
                 ? (t =
                     t.message && -1 === t.stack.indexOf(t.message)
                       ? "Error: " + t.message + "\n" + t.stack
                       : t.stack)
                 : t.sourceURL &&
                   (t = t.message + "\n" + t.sourceURL + ":" + t.line)),
             t
           );
         }
         function i(t) {
           var e = n.console || {},
             i = e[t] || e.log || p,
             o = !1;
           try {
             o = !!i.apply;
           } catch (s) {}
           return o
             ? function() {
                 var t = [];
                 return (
                   a(arguments, function(e) {
                     t.push(r(e));
                   }),
                   i.apply(e, t)
                 );
               }
             : function(t, e) {
                 i(t, null == e ? "" : e);
               };
         }
         return {
           log: i("log"),
           info: i("info"),
           warn: i("warn"),
           error: i("error"),
           debug: (function() {
             var n = i("debug");
             return function() {
               t && n.apply(e, arguments);
             };
           })()
         };
       }
     ]);
 }
 function Pn(t, e) {
   if (
     "__defineGetter__" === t ||
     "__defineSetter__" === t ||
     "__lookupGetter__" === t ||
     "__lookupSetter__" === t ||
     "__proto__" === t
   )
     throw oa(
       "isecfld",
       "Attempting to access a disallowed field in Angular expressions! Expression: {0}",
       e
     );
   return t;
 }
 function Vn(t, e) {
   if (t) {
     if (t.constructor === t)
       throw oa(
         "isecfn",
         "Referencing Function in Angular expressions is disallowed! Expression: {0}",
         e
       );
     if (t.window === t)
       throw oa(
         "isecwindow",
         "Referencing the Window in Angular expressions is disallowed! Expression: {0}",
         e
       );
     if (t.children && (t.nodeName || (t.prop && t.attr && t.find)))
       throw oa(
         "isecdom",
         "Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",
         e
       );
     if (t === Object)
       throw oa(
         "isecobj",
         "Referencing Object in Angular expressions is disallowed! Expression: {0}",
         e
       );
   }
   return t;
 }
 function qn(t, e) {
   if (t) {
     if (t.constructor === t)
       throw oa(
         "isecfn",
         "Referencing Function in Angular expressions is disallowed! Expression: {0}",
         e
       );
     if (t === sa || t === ua || t === la)
       throw oa(
         "isecff",
         "Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",
         e
       );
   }
 }
 function Dn(t) {
   return t.constant;
 }
 function Rn(t, e, n, r, i) {
   Vn(t, i), Vn(e, i);
   for (var a, o = n.split("."), s = 0; o.length > 1; s++) {
     a = Pn(o.shift(), i);
     var u = (0 === s && e && e[a]) || t[a];
     u || ((u = {}), (t[a] = u)), (t = Vn(u, i));
   }
   return (a = Pn(o.shift(), i)), Vn(t[a], i), (t[a] = r), r;
 }
 function In(t) {
   return "constructor" == t;
 }
 function _n(t, e, r, i, a, o, s) {
   Pn(t, o), Pn(e, o), Pn(r, o), Pn(i, o), Pn(a, o);
   var u = function(t) {
       return Vn(t, o);
     },
     l = s || In(t) ? u : $,
     c = s || In(e) ? u : $,
     f = s || In(r) ? u : $,
     d = s || In(i) ? u : $,
     h = s || In(a) ? u : $;
   return function(o, s) {
     var u = s && s.hasOwnProperty(t) ? s : o;
     return null == u
       ? u
       : ((u = l(u[t])),
         e
           ? null == u
             ? n
             : ((u = c(u[e])),
               r
                 ? null == u
                   ? n
                   : ((u = f(u[r])),
                     i
                       ? null == u
                         ? n
                         : ((u = d(u[i])),
                           a ? (null == u ? n : (u = h(u[a]))) : u)
                       : u)
                 : u)
           : u);
   };
 }
 function Un(t, e) {
   return function(n, r) {
     return t(n, r, Vn, e);
   };
 }
 function Ln(t, e, r) {
   var i = e.expensiveChecks,
     o = i ? ma : $a,
     s = o[t];
   if (s) return s;
   var u = t.split("."),
     l = u.length;
   if (e.csp)
     s =
       6 > l
         ? _n(u[0], u[1], u[2], u[3], u[4], r, i)
         : function(t, e) {
             var a,
               o = 0;
             do
               (a = _n(u[o++], u[o++], u[o++], u[o++], u[o++], r, i)(t, e)),
                 (e = n),
                 (t = a);
             while (l > o);
             return a;
           };
   else {
     var c = "";
     i && (c += "s = eso(s, fe);\nl = eso(l, fe);\n");
     var f = i;
     a(u, function(t, e) {
       Pn(t, r);
       var n =
         (e ? "s" : '((l&&l.hasOwnProperty("' + t + '"))?l:s)') + "." + t;
       (i || In(t)) && ((n = "eso(" + n + ", fe)"), (f = !0)),
         (c += "if(s == null) return undefined;\ns=" + n + ";\n");
     }),
       (c += "return s;");
     var d = new Function("s", "l", "eso", "fe", c);
     (d.toString = m(c)), f && (d = Un(d, r)), (s = d);
   }
   return (
     (s.sharedGetter = !0),
     (s.assign = function(e, n, r) {
       return Rn(e, r, t, n, t);
     }),
     (o[t] = s),
     s
   );
 }
 function Fn(t) {
   return k(t.valueOf) ? t.valueOf() : ga.call(t);
 }
 function Hn() {
   var t = le(),
     e = le();
   this.$get = [
     "$filter",
     "$sniffer",
     function(n, r) {
       function i(t) {
         var e = t;
         return (
           t.sharedGetter &&
             ((e = function(e, n) {
               return t(e, n);
             }),
             (e.literal = t.literal),
             (e.constant = t.constant),
             (e.assign = t.assign)),
           e
         );
       }
       function o(t, e) {
         for (var n = 0, r = t.length; r > n; n++) {
           var i = t[n];
           i.constant ||
             (i.inputs ? o(i.inputs, e) : -1 === e.indexOf(i) && e.push(i));
         }
         return e;
       }
       function s(t, e) {
         return null == t || null == e
           ? t === e
           : "object" == typeof t && ((t = Fn(t)), "object" == typeof t)
             ? !1
             : t === e || (t !== t && e !== e);
       }
       function u(t, e, n, r) {
         var i,
           a = r.$$inputs || (r.$$inputs = o(r.inputs, []));
         if (1 === a.length) {
           var u = s;
           return (
             (a = a[0]),
             t.$watch(
               function(t) {
                 var e = a(t);
                 return s(e, u) || ((i = r(t)), (u = e && Fn(e))), i;
               },
               e,
               n
             )
           );
         }
         for (var l = [], c = 0, f = a.length; f > c; c++) l[c] = s;
         return t.$watch(
           function(t) {
             for (var e = !1, n = 0, o = a.length; o > n; n++) {
               var u = a[n](t);
               (e || (e = !s(u, l[n]))) && (l[n] = u && Fn(u));
             }
             return e && (i = r(t)), i;
           },
           e,
           n
         );
       }
       function l(t, e, n, r) {
         var i, a;
         return (i = t.$watch(
           function(t) {
             return r(t);
           },
           function(t, n, r) {
             (a = t),
               k(e) && e.apply(this, arguments),
               v(t) &&
                 r.$$postDigest(function() {
                   v(a) && i();
                 });
           },
           n
         ));
       }
       function c(t, e, n, r) {
         function i(t) {
           var e = !0;
           return (
             a(t, function(t) {
               v(t) || (e = !1);
             }),
             e
           );
         }
         var o, s;
         return (o = t.$watch(
           function(t) {
             return r(t);
           },
           function(t, n, r) {
             (s = t),
               k(e) && e.call(this, t, n, r),
               i(t) &&
                 r.$$postDigest(function() {
                   i(s) && o();
                 });
           },
           n
         ));
       }
       function f(t, e, n, r) {
         var i;
         return (i = t.$watch(
           function(t) {
             return r(t);
           },
           function() {
             k(e) && e.apply(this, arguments), i();
           },
           n
         ));
       }
       function d(t, e) {
         if (!e) return t;
         var n = t.$$watchDelegate,
           r = n !== c && n !== l,
           i = r
             ? function(n, r) {
                 var i = t(n, r);
                 return e(i, n, r);
               }
             : function(n, r) {
                 var i = t(n, r),
                   a = e(i, n, r);
                 return v(i) ? a : i;
               };
         return (
           t.$$watchDelegate && t.$$watchDelegate !== u
             ? (i.$$watchDelegate = t.$$watchDelegate)
             : e.$stateful || ((i.$$watchDelegate = u), (i.inputs = [t])),
           i
         );
       }
       var h = { csp: r.csp, expensiveChecks: !1 },
         $ = { csp: r.csp, expensiveChecks: !0 };
       return function(r, a, o) {
         var s, m, g;
         switch (typeof r) {
           case "string":
             g = r = r.trim();
             var v = o ? e : t;
             if (((s = v[g]), !s)) {
               ":" === r.charAt(0) &&
                 ":" === r.charAt(1) &&
                 ((m = !0), (r = r.substring(2)));
               var y = o ? $ : h,
                 b = new ha(y),
                 w = new pa(b, n, y);
               (s = w.parse(r)),
                 s.constant
                   ? (s.$$watchDelegate = f)
                   : m
                     ? ((s = i(s)), (s.$$watchDelegate = s.literal ? c : l))
                     : s.inputs && (s.$$watchDelegate = u),
                 (v[g] = s);
             }
             return d(s, a);
           case "function":
             return d(r, a);
           default:
             return d(p, a);
         }
       };
     }
   ];
 }
 function Bn() {
   this.$get = [
     "$rootScope",
     "$exceptionHandler",
     function(t, e) {
       return Gn(function(e) {
         t.$evalAsync(e);
       }, e);
     }
   ];
 }
 function zn() {
   this.$get = [
     "$browser",
     "$exceptionHandler",
     function(t, e) {
       return Gn(function(e) {
         t.defer(e);
       }, e);
     }
   ];
 }
 function Gn(t, e) {
   function i(t, e, n) {
     function r(e) {
       return function(n) {
         i || ((i = !0), e.call(t, n));
       };
     }
     var i = !1;
     return [r(e), r(n)];
   }
   function o() {
     this.$$state = { status: 0 };
   }
   function s(t, e) {
     return function(n) {
       e.call(t, n);
     };
   }
   function u(t) {
     var r, i, a;
     (a = t.pending), (t.processScheduled = !1), (t.pending = n);
     for (var o = 0, s = a.length; s > o; ++o) {
       (i = a[o][0]), (r = a[o][t.status]);
       try {
         k(r)
           ? i.resolve(r(t.value))
           : 1 === t.status
             ? i.resolve(t.value)
             : i.reject(t.value);
       } catch (u) {
         i.reject(u), e(u);
       }
     }
   }
   function l(e) {
     !e.processScheduled &&
       e.pending &&
       ((e.processScheduled = !0),
       t(function() {
         u(e);
       }));
   }
   function c() {
     (this.promise = new o()),
       (this.resolve = s(this, this.resolve)),
       (this.reject = s(this, this.reject)),
       (this.notify = s(this, this.notify));
   }
   function f(t) {
     var e = new c(),
       n = 0,
       r = ci(t) ? [] : {};
     return (
       a(t, function(t, i) {
         n++,
           g(t).then(
             function(t) {
               r.hasOwnProperty(i) || ((r[i] = t), --n || e.resolve(r));
             },
             function(t) {
               r.hasOwnProperty(i) || e.reject(t);
             }
           );
       }),
       0 === n && e.resolve(r),
       e.promise
     );
   }
   var d = r("$q", TypeError),
     h = function() {
       return new c();
     };
   (o.prototype = {
     then: function(t, e, n) {
       var r = new c();
       return (
         (this.$$state.pending = this.$$state.pending || []),
         this.$$state.pending.push([r, t, e, n]),
         this.$$state.status > 0 && l(this.$$state),
         r.promise
       );
     },
     catch: function(t) {
       return this.then(null, t);
     },
     finally: function(t, e) {
       return this.then(
         function(e) {
           return m(e, !0, t);
         },
         function(e) {
           return m(e, !1, t);
         },
         e
       );
     }
   }),
     (c.prototype = {
       resolve: function(t) {
         this.promise.$$state.status ||
           (t === this.promise
             ? this.$$reject(
                 d(
                   "qcycle",
                   "Expected promise to be resolved with value other than itself '{0}'",
                   t
                 )
               )
             : this.$$resolve(t));
       },
       $$resolve: function(t) {
         var n, r;
         r = i(this, this.$$resolve, this.$$reject);
         try {
           (y(t) || k(t)) && (n = t && t.then),
             k(n)
               ? ((this.promise.$$state.status = -1),
                 n.call(t, r[0], r[1], this.notify))
               : ((this.promise.$$state.value = t),
                 (this.promise.$$state.status = 1),
                 l(this.promise.$$state));
         } catch (a) {
           r[1](a), e(a);
         }
       },
       reject: function(t) {
         this.promise.$$state.status || this.$$reject(t);
       },
       $$reject: function(t) {
         (this.promise.$$state.value = t),
           (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 &&
           t(function() {
             for (var t, i, a = 0, o = r.length; o > a; a++) {
               (i = r[a][0]), (t = r[a][3]);
               try {
                 i.notify(k(t) ? t(n) : n);
               } catch (s) {
                 e(s);
               }
             }
           });
       }
     });
   var p = function(t) {
       var e = new c();
       return e.reject(t), e.promise;
     },
     $ = function(t, e) {
       var n = new c();
       return e ? n.resolve(t) : n.reject(t), n.promise;
     },
     m = function(t, e, n) {
       var r = null;
       try {
         k(n) && (r = n());
       } catch (i) {
         return $(i, !1);
       }
       return T(r)
         ? r.then(
             function() {
               return $(t, e);
             },
             function(t) {
               return $(t, !1);
             }
           )
         : $(t, e);
     },
     g = function(t, e, n, r) {
       var i = new c();
       return i.resolve(t), i.promise.then(e, n, r);
     },
     v = function b(t) {
       function e(t) {
         r.resolve(t);
       }
       function n(t) {
         r.reject(t);
       }
       if (!k(t)) throw d("norslvr", "Expected resolverFn, got '{0}'", t);
       if (!(this instanceof b)) return new b(t);
       var r = new c();
       return t(e, n), r.promise;
     };
   return (v.defer = h), (v.reject = p), (v.when = g), (v.all = f), v;
 }
 function Wn() {
   this.$get = [
     "$window",
     "$timeout",
     function(t, e) {
       var n = t.requestAnimationFrame || t.webkitRequestAnimationFrame,
         r =
           t.cancelAnimationFrame ||
           t.webkitCancelAnimationFrame ||
           t.webkitCancelRequestAnimationFrame,
         i = !!n,
         a = i
           ? function(t) {
               var e = n(t);
               return function() {
                 r(e);
               };
             }
           : function(t) {
               var n = e(t, 16.66, !1);
               return function() {
                 e.cancel(n);
               };
             };
       return (a.supported = i), a;
     }
   ];
 }
 function Jn() {
   var t = 10,
     e = r("$rootScope"),
     n = null,
     o = null;
   (this.digestTtl = function(e) {
     return arguments.length && (t = e), t;
   }),
     (this.$get = [
       "$injector",
       "$exceptionHandler",
       "$parse",
       "$browser",
       function(r, s, u, c) {
         function f() {
           (this.$id = l()),
             (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.$$isolateBindings = null);
         }
         function d(t) {
           if (w.$$phase)
             throw e("inprog", "{0} already in progress", w.$$phase);
           w.$$phase = t;
         }
         function h() {
           w.$$phase = null;
         }
         function $(t, e, n) {
           do
             (t.$$listenerCount[n] -= e),
               0 === t.$$listenerCount[n] && delete t.$$listenerCount[n];
           while ((t = t.$parent));
         }
         function m() {}
         function v() {
           for (; C.length; )
             try {
               C.shift()();
             } catch (t) {
               s(t);
             }
           o = null;
         }
         function b() {
           null === o &&
             (o = c.defer(function() {
               w.$apply(v);
             }));
         }
         f.prototype = {
           constructor: f,
           $new: function(t, e) {
             function n() {
               r.$$destroyed = !0;
             }
             var r;
             return (
               (e = e || this),
               t
                 ? ((r = new f()), (r.$root = this.$root))
                 : (this.$$ChildScope ||
                     ((this.$$ChildScope = function() {
                       (this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null),
                         (this.$$listeners = {}),
                         (this.$$listenerCount = {}),
                         (this.$id = l()),
                         (this.$$ChildScope = null);
                     }),
                     (this.$$ChildScope.prototype = this)),
                   (r = new this.$$ChildScope())),
               (r.$parent = e),
               (r.$$prevSibling = e.$$childTail),
               e.$$childHead
                 ? ((e.$$childTail.$$nextSibling = r), (e.$$childTail = r))
                 : (e.$$childHead = e.$$childTail = r),
               (t || e != this) && r.$on("$destroy", n),
               r
             );
           },
           $watch: function(t, e, r) {
             var i = u(t);
             if (i.$$watchDelegate) return i.$$watchDelegate(this, e, r, i);
             var a = this,
               o = a.$$watchers,
               s = { fn: e, last: m, get: i, exp: t, eq: !!r };
             return (
               (n = null),
               k(e) || (s.fn = p),
               o || (o = a.$$watchers = []),
               o.unshift(s),
               function() {
                 q(o, s), (n = null);
               }
             );
           },
           $watchGroup: function(t, e) {
             function n() {
               (u = !1), l ? ((l = !1), e(i, i, s)) : e(i, r, s);
             }
             var r = new Array(t.length),
               i = new Array(t.length),
               o = [],
               s = this,
               u = !1,
               l = !0;
             if (!t.length) {
               var c = !0;
               return (
                 s.$evalAsync(function() {
                   c && e(i, i, s);
                 }),
                 function() {
                   c = !1;
                 }
               );
             }
             return 1 === t.length
               ? this.$watch(t[0], function(t, n, a) {
                   (i[0] = t), (r[0] = n), e(i, t === n ? i : r, a);
                 })
               : (a(t, function(t, e) {
                   var a = s.$watch(t, function(t, a) {
                     (i[e] = t), (r[e] = a), u || ((u = !0), s.$evalAsync(n));
                   });
                   o.push(a);
                 }),
                 function() {
                   for (; o.length; ) o.shift()();
                 });
           },
           $watchCollection: function(t, e) {
             function n(t) {
               a = t;
               var e, n, r, s, u;
               if (!g(a)) {
                 if (y(a))
                   if (i(a)) {
                     o !== h && ((o = h), (m = o.length = 0), f++),
                       (e = a.length),
                       m !== e && (f++, (o.length = m = e));
                     for (var l = 0; e > l; l++)
                       (u = o[l]),
                         (s = a[l]),
                         (r = u !== u && s !== s),
                         r || u === s || (f++, (o[l] = s));
                   } else {
                     o !== p && ((o = p = {}), (m = 0), f++), (e = 0);
                     for (n in a)
                       a.hasOwnProperty(n) &&
                         (e++,
                         (s = a[n]),
                         (u = o[n]),
                         n in o
                           ? ((r = u !== u && s !== s),
                             r || u === s || (f++, (o[n] = s)))
                           : (m++, (o[n] = s), f++));
                     if (m > e) {
                       f++;
                       for (n in o) a.hasOwnProperty(n) || (m--, delete o[n]);
                     }
                   }
                 else o !== a && ((o = a), f++);
                 return f;
               }
             }
             function r() {
               if (($ ? (($ = !1), e(a, a, l)) : e(a, s, l), c))
                 if (y(a))
                   if (i(a)) {
                     s = new Array(a.length);
                     for (var t = 0; t < a.length; t++) s[t] = a[t];
                   } else {
                     s = {};
                     for (var n in a) Jr.call(a, n) && (s[n] = a[n]);
                   }
                 else s = a;
             }
             n.$stateful = !0;
             var a,
               o,
               s,
               l = this,
               c = e.length > 1,
               f = 0,
               d = u(t, n),
               h = [],
               p = {},
               $ = !0,
               m = 0;
             return this.$watch(d, r);
           },
           $digest: function() {
             var r,
               i,
               a,
               u,
               l,
               f,
               p,
               $,
               g,
               y,
               b = t,
               C = this,
               A = [];
             d("$digest"),
               c.$$checkUrlChange(),
               this === w && null !== o && (c.defer.cancel(o), v()),
               (n = null);
             do {
               for (f = !1, $ = C; x.length; ) {
                 try {
                   (y = x.shift()), y.scope.$eval(y.expression, y.locals);
                 } catch (O) {
                   s(O);
                 }
                 n = null;
               }
               t: do {
                 if ((u = $.$$watchers))
                   for (l = u.length; l--; )
                     try {
                       if ((r = u[l]))
                         if (
                           (i = r.get($)) === (a = r.last) ||
                           (r.eq
                             ? I(i, a)
                             : "number" == typeof i &&
                               "number" == typeof a &&
                               isNaN(i) &&
                               isNaN(a))
                         ) {
                           if (r === n) {
                             f = !1;
                             break t;
                           }
                         } else
                           (f = !0),
                             (n = r),
                             (r.last = r.eq ? D(i, null) : i),
                             r.fn(i, a === m ? i : a, $),
                             5 > b &&
                               ((g = 4 - b),
                               A[g] || (A[g] = []),
                               A[g].push({
                                 msg: k(r.exp)
                                   ? "fn: " + (r.exp.name || r.exp.toString())
                                   : r.exp,
                                 newVal: i,
                                 oldVal: a
                               }));
                     } catch (O) {
                       s(O);
                     }
                 if (!(p = $.$$childHead || ($ !== C && $.$$nextSibling)))
                   for (; $ !== C && !(p = $.$$nextSibling); ) $ = $.$parent;
               } while (($ = p));
               if ((f || x.length) && !b--)
                 throw (h(),
                 e(
                   "infdig",
                   "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",
                   t,
                   A
                 ));
             } while (f || x.length);
             for (h(); S.length; )
               try {
                 S.shift()();
               } catch (O) {
                 s(O);
               }
           },
           $destroy: function() {
             if (!this.$$destroyed) {
               var t = this.$parent;
               if (
                 (this.$broadcast("$destroy"),
                 (this.$$destroyed = !0),
                 this !== w)
               ) {
                 for (var e in this.$$listenerCount)
                   $(this, this.$$listenerCount[e], e);
                 t.$$childHead == this && (t.$$childHead = this.$$nextSibling),
                   t.$$childTail == this &&
                     (t.$$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 = p),
                   (this.$on = this.$watch = this.$watchGroup = function() {
                     return p;
                   }),
                   (this.$$listeners = {}),
                   (this.$parent = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = this.$root = this.$$watchers = null);
               }
             }
           },
           $eval: function(t, e) {
             return u(t)(this, e);
           },
           $evalAsync: function(t, e) {
             w.$$phase ||
               x.length ||
               c.defer(function() {
                 x.length && w.$digest();
               }),
               x.push({ scope: this, expression: t, locals: e });
           },
           $$postDigest: function(t) {
             S.push(t);
           },
           $apply: function(t) {
             try {
               return d("$apply"), this.$eval(t);
             } catch (e) {
               s(e);
             } finally {
               h();
               try {
                 w.$digest();
               } catch (e) {
                 throw (s(e), e);
               }
             }
           },
           $applyAsync: function(t) {
             function e() {
               n.$eval(t);
             }
             var n = this;
             t && C.push(e), b();
           },
           $on: function(t, e) {
             var n = this.$$listeners[t];
             n || (this.$$listeners[t] = n = []), n.push(e);
             var r = this;
             do
               r.$$listenerCount[t] || (r.$$listenerCount[t] = 0),
                 r.$$listenerCount[t]++;
             while ((r = r.$parent));
             var i = this;
             return function() {
               var r = n.indexOf(e);
               -1 !== r && ((n[r] = null), $(i, 1, t));
             };
           },
           $emit: function(t) {
             var e,
               n,
               r,
               i = [],
               a = this,
               o = !1,
               u = {
                 name: t,
                 targetScope: a,
                 stopPropagation: function() {
                   o = !0;
                 },
                 preventDefault: function() {
                   u.defaultPrevented = !0;
                 },
                 defaultPrevented: !1
               },
               l = _([u], arguments, 1);
             do {
               for (
                 e = a.$$listeners[t] || i,
                   u.currentScope = a,
                   n = 0,
                   r = e.length;
                 r > n;
                 n++
               )
                 if (e[n])
                   try {
                     e[n].apply(null, l);
                   } catch (c) {
                     s(c);
                   }
                 else e.splice(n, 1), n--, r--;
               if (o) return (u.currentScope = null), u;
               a = a.$parent;
             } while (a);
             return (u.currentScope = null), u;
           },
           $broadcast: function(t) {
             var e = this,
               n = e,
               r = e,
               i = {
                 name: t,
                 targetScope: e,
                 preventDefault: function() {
                   i.defaultPrevented = !0;
                 },
                 defaultPrevented: !1
               };
             if (!e.$$listenerCount[t]) return i;
             for (var a, o, u, l = _([i], arguments, 1); (n = r); ) {
               for (
                 i.currentScope = n,
                   a = n.$$listeners[t] || [],
                   o = 0,
                   u = a.length;
                 u > o;
                 o++
               )
                 if (a[o])
                   try {
                     a[o].apply(null, l);
                   } catch (c) {
                     s(c);
                   }
                 else a.splice(o, 1), o--, u--;
               if (
                 !(r =
                   (n.$$listenerCount[t] && n.$$childHead) ||
                   (n !== e && n.$$nextSibling))
               )
                 for (; n !== e && !(r = n.$$nextSibling); ) n = n.$parent;
             }
             return (i.currentScope = null), i;
           }
         };
         var w = new f(),
           x = (w.$$asyncQueue = []),
           S = (w.$$postDigestQueue = []),
           C = (w.$$applyAsyncQueue = []);
         return w;
       }
     ]);
 }
 function Yn() {
   var t = /^\s*(https?|ftp|mailto|tel|file):/,
     e = /^\s*((https?|ftp|file|blob):|data:image\/)/;
   (this.aHrefSanitizationWhitelist = function(e) {
     return v(e) ? ((t = e), this) : t;
   }),
     (this.imgSrcSanitizationWhitelist = function(t) {
       return v(t) ? ((e = t), this) : e;
     }),
     (this.$get = function() {
       return function(n, r) {
         var i,
           a = r ? e : t;
         return (i = ir(n).href), "" === i || i.match(a) ? n : "unsafe:" + i;
       };
     });
 }
 function Zn(t) {
   if ("self" === t) return t;
   if (b(t)) {
     if (t.indexOf("***") > -1)
       throw va(
         "iwcard",
         "Illegal sequence *** in string matcher.  String: {0}",
         t
       );
     return (
       (t = di(t)
         .replace("\\*\\*", ".*")
         .replace("\\*", "[^:/.?&;]*")),
       new RegExp("^" + t + "$")
     );
   }
   if (S(t)) return new RegExp("^" + t.source + "$");
   throw va(
     "imatcher",
     'Matchers may only be "self", string patterns or RegExp objects'
   );
 }
 function Kn(t) {
   var e = [];
   return (
     v(t) &&
       a(t, function(t) {
         e.push(Zn(t));
       }),
     e
   );
 }
 function Xn() {
   this.SCE_CONTEXTS = ya;
   var t = ["self"],
     e = [];
   (this.resourceUrlWhitelist = function(e) {
     return arguments.length && (t = Kn(e)), t;
   }),
     (this.resourceUrlBlacklist = function(t) {
       return arguments.length && (e = Kn(t)), e;
     }),
     (this.$get = [
       "$injector",
       function(r) {
         function i(t, e) {
           return "self" === t ? ar(e) : !!t.exec(e.href);
         }
         function a(n) {
           var r,
             a,
             o = ir(n.toString()),
             s = !1;
           for (r = 0, a = t.length; a > r; r++)
             if (i(t[r], o)) {
               s = !0;
               break;
             }
           if (s)
             for (r = 0, a = e.length; a > r; r++)
               if (i(e[r], o)) {
                 s = !1;
                 break;
               }
           return s;
         }
         function o(t) {
           var e = function(t) {
             this.$$unwrapTrustedValue = function() {
               return t;
             };
           };
           return (
             t && (e.prototype = new t()),
             (e.prototype.valueOf = function() {
               return this.$$unwrapTrustedValue();
             }),
             (e.prototype.toString = function() {
               return this.$$unwrapTrustedValue().toString();
             }),
             e
           );
         }
         function s(t, e) {
           var r = d.hasOwnProperty(t) ? d[t] : null;
           if (!r)
             throw va(
               "icontext",
               "Attempted to trust a value in invalid context. Context: {0}; Value: {1}",
               t,
               e
             );
           if (null === e || e === n || "" === e) return e;
           if ("string" != typeof e)
             throw va(
               "itype",
               "Attempted to trust a non-string value in a content requiring a string: Context: {0}",
               t
             );
           return new r(e);
         }
         function u(t) {
           return t instanceof f ? t.$$unwrapTrustedValue() : t;
         }
         function l(t, e) {
           if (null === e || e === n || "" === e) return e;
           var r = d.hasOwnProperty(t) ? d[t] : null;
           if (r && e instanceof r) return e.$$unwrapTrustedValue();
           if (t === ya.RESOURCE_URL) {
             if (a(e)) return e;
             throw va(
               "insecurl",
               "Blocked loading resource from url not allowed by $sceDelegate policy.  URL: {0}",
               e.toString()
             );
           }
           if (t === ya.HTML) return c(e);
           throw va(
             "unsafe",
             "Attempting to use an unsafe value in a safe context."
           );
         }
         var c = function() {
           throw va(
             "unsafe",
             "Attempting to use an unsafe value in a safe context."
           );
         };
         r.has("$sanitize") && (c = r.get("$sanitize"));
         var f = o(),
           d = {};
         return (
           (d[ya.HTML] = o(f)),
           (d[ya.CSS] = o(f)),
           (d[ya.URL] = o(f)),
           (d[ya.JS] = o(f)),
           (d[ya.RESOURCE_URL] = o(d[ya.URL])),
           { trustAs: s, getTrusted: l, valueOf: u }
         );
       }
     ]);
 }
 function Qn() {
   var t = !0;
   (this.enabled = function(e) {
     return arguments.length && (t = !!e), t;
   }),
     (this.$get = [
       "$parse",
       "$sceDelegate",
       function(e, n) {
         if (t && 8 > Xr)
           throw va(
             "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 = R(ya);
         (r.isEnabled = function() {
           return t;
         }),
           (r.trustAs = n.trustAs),
           (r.getTrusted = n.getTrusted),
           (r.valueOf = n.valueOf),
           t ||
             ((r.trustAs = r.getTrusted = function(t, e) {
               return e;
             }),
             (r.valueOf = $)),
           (r.parseAs = function(t, n) {
             var i = e(n);
             return i.literal && i.constant
               ? i
               : e(n, function(e) {
                   return r.getTrusted(t, e);
                 });
           });
         var i = r.parseAs,
           o = r.getTrusted,
           s = r.trustAs;
         return (
           a(ya, function(t, e) {
             var n = Wr(e);
             (r[$e("parse_as_" + n)] = function(e) {
               return i(t, e);
             }),
               (r[$e("get_trusted_" + n)] = function(e) {
                 return o(t, e);
               }),
               (r[$e("trust_as_" + n)] = function(e) {
                 return s(t, e);
               });
           }),
           r
         );
       }
     ]);
 }
 function tr() {
   this.$get = [
     "$window",
     "$document",
     function(t, e) {
       var n,
         r,
         i = {},
         a = d(
           (/android (\d+)/.exec(Wr((t.navigator || {}).userAgent)) || [])[1]
         ),
         o = /Boxee/i.test((t.navigator || {}).userAgent),
         s = e[0] || {},
         u = /^(Moz|webkit|ms)(?=[A-Z])/,
         l = s.body && s.body.style,
         c = !1,
         f = !1;
       if (l) {
         for (var h in l)
           if ((r = u.exec(h))) {
             (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)),
           !a ||
             (c && f) ||
             ((c = b(s.body.style.webkitTransition)),
             (f = b(s.body.style.webkitAnimation)));
       }
       return {
         history: !(!t.history || !t.history.pushState || 4 > a || o),
         hasEvent: function(t) {
           if ("input" === t && 11 >= Xr) return !1;
           if (g(i[t])) {
             var e = s.createElement("div");
             i[t] = "on" + t in e;
           }
           return i[t];
         },
         csp: hi(),
         vendorPrefix: n,
         transitions: c,
         animations: f,
         android: a
       };
     }
   ];
 }
 function er() {
   this.$get = [
     "$templateCache",
     "$http",
     "$q",
     function(t, e, n) {
       function r(i, a) {
         function o(t) {
           if (!a) throw Wi("tpload", "Failed to load template: {0}", i);
           return n.reject(t);
         }
         r.totalPendingRequests++;
         var s = e.defaults && e.defaults.transformResponse;
         ci(s)
           ? (s = s.filter(function(t) {
               return t !== an;
             }))
           : s === an && (s = null);
         var u = { cache: t, transformResponse: s };
         return e
           .get(i, u)
           .finally(function() {
             r.totalPendingRequests--;
           })
           .then(function(t) {
             return t.data;
           }, o);
       }
       return (r.totalPendingRequests = 0), r;
     }
   ];
 }
 function nr() {
   this.$get = [
     "$rootScope",
     "$browser",
     "$location",
     function(t, e, n) {
       var r = {};
       return (
         (r.findBindings = function(t, e, n) {
           var r = t.getElementsByClassName("ng-binding"),
             i = [];
           return (
             a(r, function(t) {
               var r = si.element(t).data("$binding");
               r &&
                 a(r, function(r) {
                   if (n) {
                     var a = new RegExp("(^|\\s)" + di(e) + "(\\s|\\||$)");
                     a.test(r) && i.push(t);
                   } else -1 != r.indexOf(e) && i.push(t);
                 });
             }),
             i
           );
         }),
         (r.findModels = function(t, e, n) {
           for (
             var r = ["ng-", "data-ng-", "ng\\:"], i = 0;
             i < r.length;
             ++i
           ) {
             var a = n ? "=" : "*=",
               o = "[" + r[i] + "model" + a + '"' + e + '"]',
               s = t.querySelectorAll(o);
             if (s.length) return s;
           }
         }),
         (r.getLocation = function() {
           return n.url();
         }),
         (r.setLocation = function(e) {
           e !== n.url() && (n.url(e), t.$digest());
         }),
         (r.whenStable = function(t) {
           e.notifyWhenNoOutstandingRequests(t);
         }),
         r
       );
     }
   ];
 }
 function rr() {
   this.$get = [
     "$rootScope",
     "$browser",
     "$q",
     "$$q",
     "$exceptionHandler",
     function(t, e, n, r, i) {
       function a(a, s, u) {
         var l,
           c = v(u) && !u,
           f = (c ? r : n).defer(),
           d = f.promise;
         return (
           (l = e.defer(function() {
             try {
               f.resolve(a());
             } catch (e) {
               f.reject(e), i(e);
             } finally {
               delete o[d.$$timeoutId];
             }
             c || t.$apply();
           }, s)),
           (d.$$timeoutId = l),
           (o[l] = f),
           d
         );
       }
       var o = {};
       return (
         (a.cancel = function(t) {
           return t && t.$$timeoutId in o
             ? (o[t.$$timeoutId].reject("canceled"),
               delete o[t.$$timeoutId],
               e.defer.cancel(t.$$timeoutId))
             : !1;
         }),
         a
       );
     }
   ];
 }
 function ir(t) {
   var e = t;
   return (
     Xr && (ba.setAttribute("href", e), (e = ba.href)),
     ba.setAttribute("href", e),
     {
       href: ba.href,
       protocol: ba.protocol ? ba.protocol.replace(/:$/, "") : "",
       host: ba.host,
       search: ba.search ? ba.search.replace(/^\?/, "") : "",
       hash: ba.hash ? ba.hash.replace(/^#/, "") : "",
       hostname: ba.hostname,
       port: ba.port,
       pathname:
         "/" === ba.pathname.charAt(0) ? ba.pathname : "/" + ba.pathname
     }
   );
 }
 function ar(t) {
   var e = b(t) ? ir(t) : t;
   return e.protocol === wa.protocol && e.host === wa.host;
 }
 function or() {
   this.$get = m(t);
 }
 function sr(t) {
   function e(r, i) {
     if (y(r)) {
       var o = {};
       return (
         a(r, function(t, n) {
           o[n] = e(n, t);
         }),
         o
       );
     }
     return t.factory(r + n, i);
   }
   var n = "Filter";
   (this.register = e),
     (this.$get = [
       "$injector",
       function(t) {
         return function(e) {
           return t.get(e + n);
         };
       }
     ]),
     e("currency", fr),
     e("date", xr),
     e("filter", ur),
     e("json", kr),
     e("limitTo", Sr),
     e("lowercase", Aa),
     e("number", dr),
     e("orderBy", Cr),
     e("uppercase", Oa);
 }
 function ur() {
   return function(t, e, n) {
     if (!ci(t)) return t;
     var r, i;
     switch (typeof e) {
       case "function":
         r = e;
         break;
       case "boolean":
       case "number":
       case "string":
         i = !0;
       case "object":
         r = lr(e, n, i);
         break;
       default:
         return t;
     }
     return t.filter(r);
   };
 }
 function lr(t, e, n) {
   var r,
     i = y(t) && "$" in t;
   return (
     e === !0
       ? (e = I)
       : k(e) ||
         (e = function(t, e) {
           return y(t) || y(e)
             ? !1
             : ((t = Wr("" + t)), (e = Wr("" + e)), -1 !== t.indexOf(e));
         }),
     (r = function(r) {
       return i && !y(r) ? cr(r, t.$, e, !1) : cr(r, t, e, n);
     })
   );
 }
 function cr(t, e, n, r, i) {
   var a = typeof t,
     o = typeof e;
   if ("string" === o && "!" === e.charAt(0))
     return !cr(t, e.substring(1), n, r);
   if (ci(t))
     return t.some(function(t) {
       return cr(t, e, n, r);
     });
   switch (a) {
     case "object":
       var s;
       if (r) {
         for (s in t) if ("$" !== s.charAt(0) && cr(t[s], e, n, !0)) return !0;
         return i ? !1 : cr(t, e, n, !1);
       }
       if ("object" === o) {
         for (s in e) {
           var u = e[s];
           if (!k(u)) {
             var l = "$" === s,
               c = l ? t : t[s];
             if (!cr(c, u, n, l, l)) return !1;
           }
         }
         return !0;
       }
       return n(t, e);
     case "function":
       return !1;
     default:
       return n(t, e);
   }
 }
 function fr(t) {
   var e = t.NUMBER_FORMATS;
   return function(t, n, r) {
     return (
       g(n) && (n = e.CURRENCY_SYM),
       g(r) && (r = e.PATTERNS[1].maxFrac),
       null == t
         ? t
         : hr(t, e.PATTERNS[1], e.GROUP_SEP, e.DECIMAL_SEP, r).replace(
             /\u00A4/g,
             n
           )
     );
   };
 }
 function dr(t) {
   var e = t.NUMBER_FORMATS;
   return function(t, n) {
     return null == t
       ? t
       : hr(t, e.PATTERNS[0], e.GROUP_SEP, e.DECIMAL_SEP, n);
   };
 }
 function hr(t, e, n, r, i) {
   if (!isFinite(t) || y(t)) return "";
   var a = 0 > t;
   t = Math.abs(t);
   var o = t + "",
     s = "",
     u = [],
     l = !1;
   if (-1 !== o.indexOf("e")) {
     var c = o.match(/([\d\.]+)e(-?)(\d+)/);
     c && "-" == c[2] && c[3] > i + 1 ? (t = 0) : ((s = o), (l = !0));
   }
   if (l) i > 0 && 1 > t && ((s = t.toFixed(i)), (t = parseFloat(s)));
   else {
     var f = (o.split(xa)[1] || "").length;
     g(i) && (i = Math.min(Math.max(e.minFrac, f), e.maxFrac)),
       (t = +(Math.round(+(t.toString() + "e" + i)).toString() + "e" + -i));
     var d = ("" + t).split(xa),
       h = d[0];
     d = d[1] || "";
     var p,
       $ = 0,
       m = e.lgSize,
       v = e.gSize;
     if (h.length >= m + v)
       for ($ = h.length - m, p = 0; $ > p; p++)
         ($ - p) % v === 0 && 0 !== p && (s += n), (s += h.charAt(p));
     for (p = $; p < h.length; p++)
       (h.length - p) % m === 0 && 0 !== p && (s += n), (s += h.charAt(p));
     for (; d.length < i; ) d += "0";
     i && "0" !== i && (s += r + d.substr(0, i));
   }
   return (
     0 === t && (a = !1),
     u.push(a ? e.negPre : e.posPre, s, a ? e.negSuf : e.posSuf),
     u.join("")
   );
 }
 function pr(t, e, n) {
   var r = "";
   for (0 > t && ((r = "-"), (t = -t)), t = "" + t; t.length < e; )
     t = "0" + t;
   return n && (t = t.substr(t.length - e)), r + t;
 }
 function $r(t, e, n, r) {
   return (
     (n = n || 0),
     function(i) {
       var a = i["get" + t]();
       return (
         (n > 0 || a > -n) && (a += n),
         0 === a && -12 == n && (a = 12),
         pr(a, e, r)
       );
     }
   );
 }
 function mr(t, e) {
   return function(n, r) {
     var i = n["get" + t](),
       a = Yr(e ? "SHORT" + t : t);
     return r[a][i];
   };
 }
 function gr(t) {
   var e = -1 * t.getTimezoneOffset(),
     n = e >= 0 ? "+" : "";
   return (n +=
     pr(Math[e > 0 ? "floor" : "ceil"](e / 60), 2) + pr(Math.abs(e % 60), 2));
 }
 function vr(t) {
   var e = new Date(t, 0, 1).getDay();
   return new Date(t, 0, (4 >= e ? 5 : 12) - e);
 }
 function yr(t) {
   return new Date(
     t.getFullYear(),
     t.getMonth(),
     t.getDate() + (4 - t.getDay())
   );
 }
 function br(t) {
   return function(e) {
     var n = vr(e.getFullYear()),
       r = yr(e),
       i = +r - +n,
       a = 1 + Math.round(i / 6048e5);
     return pr(a, t);
   };
 }
 function wr(t, e) {
   return t.getHours() < 12 ? e.AMPMS[0] : e.AMPMS[1];
 }
 function xr(t) {
   function e(t) {
     var e;
     if ((e = t.match(n))) {
       var r = new Date(0),
         i = 0,
         a = 0,
         o = e[8] ? r.setUTCFullYear : r.setFullYear,
         s = e[8] ? r.setUTCHours : r.setHours;
       e[9] && ((i = d(e[9] + e[10])), (a = d(e[9] + e[11]))),
         o.call(r, d(e[1]), d(e[2]) - 1, d(e[3]));
       var u = d(e[4] || 0) - i,
         l = d(e[5] || 0) - a,
         c = d(e[6] || 0),
         f = Math.round(1e3 * parseFloat("0." + (e[7] || 0)));
       return s.call(r, u, l, c, f), r;
     }
     return t;
   }
   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 o,
       s,
       u = "",
       l = [];
     if (
       ((r = r || "mediumDate"),
       (r = t.DATETIME_FORMATS[r] || r),
       b(n) && (n = Ca.test(n) ? d(n) : e(n)),
       w(n) && (n = new Date(n)),
       !x(n))
     )
       return n;
     for (; r; )
       (s = Sa.exec(r)),
         s ? ((l = _(l, s, 1)), (r = l.pop())) : (l.push(r), (r = null));
     return (
       i &&
         "UTC" === i &&
         ((n = new Date(n.getTime())),
         n.setMinutes(n.getMinutes() + n.getTimezoneOffset())),
       a(l, function(e) {
         (o = ka[e]),
           (u += o
             ? o(n, t.DATETIME_FORMATS)
             : e.replace(/(^'|'$)/g, "").replace(//g, "'"));
       }),
       u
     );
   };
 }
 function kr() {
   return function(t, e) {
     return g(e) && (e = 2), H(t, e);
   };
 }
 function Sr() {
   return function(t, e) {
     return (
       w(t) && (t = t.toString()),
       ci(t) || b(t)
         ? ((e = 1 / 0 === Math.abs(Number(e)) ? Number(e) : d(e)),
           e ? (e > 0 ? t.slice(0, e) : t.slice(e)) : b(t) ? "" : [])
         : t
     );
   };
 }
 function Cr(t) {
   return function(e, n, r) {
     function a(t, e) {
       for (var r = 0; r < n.length; r++) {
         var i = n[r](t, e);
         if (0 !== i) return i;
       }
       return 0;
     }
     function o(t, e) {
       return e
         ? function(e, n) {
             return t(n, e);
           }
         : t;
     }
     function s(t) {
       switch (typeof t) {
         case "number":
         case "boolean":
         case "string":
           return !0;
         default:
           return !1;
       }
     }
     function u(t) {
       return null === t
         ? "null"
         : "function" == typeof t.valueOf && ((t = t.valueOf()), s(t))
           ? t
           : "function" == typeof t.toString && ((t = t.toString()), s(t))
             ? t
             : "";
     }
     function l(t, e) {
       var n = typeof t,
         r = typeof e;
       return (
         n === r && "object" === n && ((t = u(t)), (e = u(e))),
         n === r
           ? ("string" === n && ((t = t.toLowerCase()), (e = e.toLowerCase())),
             t === e ? 0 : e > t ? -1 : 1)
           : r > n
             ? -1
             : 1
       );
     }
     return i(e)
       ? ((n = ci(n) ? n : [n]),
         0 === n.length && (n = ["+"]),
         (n = n.map(function(e) {
           var n = !1,
             r = e || $;
           if (b(e)) {
             if (
               (("+" == e.charAt(0) || "-" == e.charAt(0)) &&
                 ((n = "-" == e.charAt(0)), (e = e.substring(1))),
               "" === e)
             )
               return o(l, n);
             if (((r = t(e)), r.constant)) {
               var i = r();
               return o(function(t, e) {
                 return l(t[i], e[i]);
               }, n);
             }
           }
           return o(function(t, e) {
             return l(r(t), r(e));
           }, n);
         })),
         ni.call(e).sort(o(a, r)))
       : e;
   };
 }
 function Ar(t) {
   return k(t) && (t = { link: t }), (t.restrict = t.restrict || "AC"), m(t);
 }
 function Or(t, e) {
   t.$name = e;
 }
 function Er(t, e, r, i, o) {
   var s = this,
     u = [],
     l = (s.$$parentForm = t.parent().controller("form") || Na);
   (s.$error = {}),
     (s.$$success = {}),
     (s.$pending = n),
     (s.$name = o(e.name || e.ngForm || "")(r)),
     (s.$dirty = !1),
     (s.$pristine = !0),
     (s.$valid = !0),
     (s.$invalid = !1),
     (s.$submitted = !1),
     l.$addControl(s),
     (s.$rollbackViewValue = function() {
       a(u, function(t) {
         t.$rollbackViewValue();
       });
     }),
     (s.$commitViewValue = function() {
       a(u, function(t) {
         t.$commitViewValue();
       });
     }),
     (s.$addControl = function(t) {
       oe(t.$name, "input"), u.push(t), t.$name && (s[t.$name] = t);
     }),
     (s.$$renameControl = function(t, e) {
       var n = t.$name;
       s[n] === t && delete s[n], (s[e] = t), (t.$name = e);
     }),
     (s.$removeControl = function(t) {
       t.$name && s[t.$name] === t && delete s[t.$name],
         a(s.$pending, function(e, n) {
           s.$setValidity(n, null, t);
         }),
         a(s.$error, function(e, n) {
           s.$setValidity(n, null, t);
         }),
         a(s.$$success, function(e, n) {
           s.$setValidity(n, null, t);
         }),
         q(u, t);
     }),
     Hr({
       ctrl: this,
       $element: t,
       set: function(t, e, n) {
         var r = t[e];
         if (r) {
           var i = r.indexOf(n);
           -1 === i && r.push(n);
         } else t[e] = [n];
       },
       unset: function(t, e, n) {
         var r = t[e];
         r && (q(r, n), 0 === r.length && delete t[e]);
       },
       parentForm: l,
       $animate: i
     }),
     (s.$setDirty = function() {
       i.removeClass(t, ho),
         i.addClass(t, po),
         (s.$dirty = !0),
         (s.$pristine = !1),
         l.$setDirty();
     }),
     (s.$setPristine = function() {
       i.setClass(t, ho, po + " " + Ta),
         (s.$dirty = !1),
         (s.$pristine = !0),
         (s.$submitted = !1),
         a(u, function(t) {
           t.$setPristine();
         });
     }),
     (s.$setUntouched = function() {
       a(u, function(t) {
         t.$setUntouched();
       });
     }),
     (s.$setSubmitted = function() {
       i.addClass(t, Ta), (s.$submitted = !0), l.$setSubmitted();
     });
 }
 function jr(t) {
   t.$formatters.push(function(e) {
     return t.$isEmpty(e) ? e : e.toString();
   });
 }
 function Nr(t, e, n, r, i, a) {
   Tr(t, e, n, r, i, a), jr(r);
 }
 function Tr(t, e, n, r, i, a) {
   var o = Wr(e[0].type);
   if (!i.android) {
     var s = !1;
     e.on("compositionstart", function() {
       s = !0;
     }),
       e.on("compositionend", function() {
         (s = !1), u();
       });
   }
   var u = function(t) {
     if ((l && (a.defer.cancel(l), (l = null)), !s)) {
       var i = e.val(),
         u = t && t.type;
       "password" === o || (n.ngTrim && "false" === n.ngTrim) || (i = fi(i)),
         (r.$viewValue !== i || ("" === i && r.$$hasNativeValidators)) &&
           r.$setViewValue(i, u);
     }
   };
   if (i.hasEvent("input")) e.on("input", u);
   else {
     var l,
       c = function(t, e, n) {
         l ||
           (l = a.defer(function() {
             (l = null), (e && e.value === n) || u(t);
           }));
       };
     e.on("keydown", function(t) {
       var e = t.keyCode;
       91 === e ||
         (e > 15 && 19 > e) ||
         (e >= 37 && 40 >= e) ||
         c(t, this, this.value);
     }),
       i.hasEvent("paste") && e.on("paste cut", c);
   }
   e.on("change", u),
     (r.$render = function() {
       e.val(r.$isEmpty(r.$viewValue) ? "" : r.$viewValue);
     });
 }
 function Mr(t, e) {
   if (x(t)) return t;
   if (b(t)) {
     La.lastIndex = 0;
     var n = La.exec(t);
     if (n) {
       var r = +n[1],
         i = +n[2],
         a = 0,
         o = 0,
         s = 0,
         u = 0,
         l = vr(r),
         c = 7 * (i - 1);
       return (
         e &&
           ((a = e.getHours()),
           (o = e.getMinutes()),
           (s = e.getSeconds()),
           (u = e.getMilliseconds())),
         new Date(r, 0, l.getDate() + c, a, o, s, u)
       );
     }
   }
   return 0 / 0;
 }
 function Pr(t, e) {
   return function(n, r) {
     var i, o;
     if (x(n)) return n;
     if (b(n)) {
       if (
         ('"' == n.charAt(0) &&
           '"' == n.charAt(n.length - 1) &&
           (n = n.substring(1, n.length - 1)),
         qa.test(n))
       )
         return new Date(n);
       if (((t.lastIndex = 0), (i = t.exec(n))))
         return (
           i.shift(),
           (o = 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 }),
           a(i, function(t, n) {
             n < e.length && (o[e[n]] = +t);
           }),
           new Date(
             o.yyyy,
             o.MM - 1,
             o.dd,
             o.HH,
             o.mm,
             o.ss || 0,
             1e3 * o.sss || 0
           )
         );
     }
     return 0 / 0;
   };
 }
 function Vr(t, e, r, i) {
   return function(a, o, s, u, l, c, f) {
     function d(t) {
       return t && !(t.getTime && t.getTime() !== t.getTime());
     }
     function h(t) {
       return v(t) ? (x(t) ? t : r(t)) : n;
     }
     qr(a, o, s, u), Tr(a, o, s, u, l, c);
     var p,
       $ = u && u.$options && u.$options.timezone;
     if (
       ((u.$$parserName = t),
       u.$parsers.push(function(t) {
         if (u.$isEmpty(t)) return null;
         if (e.test(t)) {
           var i = r(t, p);
           return (
             "UTC" === $ &&
               i.setMinutes(i.getMinutes() - i.getTimezoneOffset()),
             i
           );
         }
         return n;
       }),
       u.$formatters.push(function(t) {
         if (t && !x(t)) throw vo("datefmt", "Expected `{0}` to be a date", t);
         if (d(t)) {
           if (((p = t), p && "UTC" === $)) {
             var e = 6e4 * p.getTimezoneOffset();
             p = new Date(p.getTime() + e);
           }
           return f("date")(t, i, $);
         }
         return (p = null), "";
       }),
       v(s.min) || s.ngMin)
     ) {
       var m;
       (u.$validators.min = function(t) {
         return !d(t) || g(m) || r(t) >= m;
       }),
         s.$observe("min", function(t) {
           (m = h(t)), u.$validate();
         });
     }
     if (v(s.max) || s.ngMax) {
       var y;
       (u.$validators.max = function(t) {
         return !d(t) || g(y) || r(t) <= y;
       }),
         s.$observe("max", function(t) {
           (y = h(t)), u.$validate();
         });
     }
   };
 }
 function qr(t, e, r, i) {
   var a = e[0],
     o = (i.$$hasNativeValidators = y(a.validity));
   o &&
     i.$parsers.push(function(t) {
       var r = e.prop(Gr) || {};
       return r.badInput && !r.typeMismatch ? n : t;
     });
 }
 function Dr(t, e, r, i, a, o) {
   if (
     (qr(t, e, r, i),
     Tr(t, e, r, i, a, o),
     (i.$$parserName = "number"),
     i.$parsers.push(function(t) {
       return i.$isEmpty(t) ? null : Ia.test(t) ? parseFloat(t) : n;
     }),
     i.$formatters.push(function(t) {
       if (!i.$isEmpty(t)) {
         if (!w(t)) throw vo("numfmt", "Expected `{0}` to be a number", t);
         t = t.toString();
       }
       return t;
     }),
     r.min || r.ngMin)
   ) {
     var s;
     (i.$validators.min = function(t) {
       return i.$isEmpty(t) || g(s) || t >= s;
     }),
       r.$observe("min", function(t) {
         v(t) && !w(t) && (t = parseFloat(t, 10)),
           (s = w(t) && !isNaN(t) ? t : n),
           i.$validate();
       });
   }
   if (r.max || r.ngMax) {
     var u;
     (i.$validators.max = function(t) {
       return i.$isEmpty(t) || g(u) || u >= t;
     }),
       r.$observe("max", function(t) {
         v(t) && !w(t) && (t = parseFloat(t, 10)),
           (u = w(t) && !isNaN(t) ? t : n),
           i.$validate();
       });
   }
 }
 function Rr(t, e, n, r, i, a) {
   Tr(t, e, n, r, i, a),
     jr(r),
     (r.$$parserName = "url"),
     (r.$validators.url = function(t, e) {
       var n = t || e;
       return r.$isEmpty(n) || Da.test(n);
     });
 }
 function Ir(t, e, n, r, i, a) {
   Tr(t, e, n, r, i, a),
     jr(r),
     (r.$$parserName = "email"),
     (r.$validators.email = function(t, e) {
       var n = t || e;
       return r.$isEmpty(n) || Ra.test(n);
     });
 }
 function _r(t, e, n, r) {
   g(n.name) && e.attr("name", l());
   var i = function(t) {
     e[0].checked && r.$setViewValue(n.value, t && t.type);
   };
   e.on("click", i),
     (r.$render = function() {
       var t = n.value;
       e[0].checked = t == r.$viewValue;
     }),
     n.$observe("value", r.$render);
 }
 function Ur(t, e, n, i, a) {
   var o;
   if (v(i)) {
     if (((o = t(i)), !o.constant))
       throw r("ngModel")(
         "constexpr",
         "Expected constant expression for `{0}`, but saw `{1}`.",
         n,
         i
       );
     return o(e);
   }
   return a;
 }
 function Lr(t, e, n, r, i, a, o, s) {
   var u = Ur(s, t, "ngTrueValue", n.ngTrueValue, !0),
     l = Ur(s, t, "ngFalseValue", n.ngFalseValue, !1),
     c = function(t) {
       r.$setViewValue(e[0].checked, t && t.type);
     };
   e.on("click", c),
     (r.$render = function() {
       e[0].checked = r.$viewValue;
     }),
     (r.$isEmpty = function(t) {
       return t === !1;
     }),
     r.$formatters.push(function(t) {
       return I(t, u);
     }),
     r.$parsers.push(function(t) {
       return t ? u : l;
     });
 }
 function Fr(t, e) {
   return (
     (t = "ngClass" + t),
     [
       "$animate",
       function(n) {
         function r(t, e) {
           var n = [];
           t: for (var r = 0; r < t.length; r++) {
             for (var i = t[r], a = 0; a < e.length; a++)
               if (i == e[a]) continue t;
             n.push(i);
           }
           return n;
         }
         function i(t) {
           if (ci(t)) return t;
           if (b(t)) return t.split(" ");
           if (y(t)) {
             var e = [];
             return (
               a(t, function(t, n) {
                 t && (e = e.concat(n.split(" ")));
               }),
               e
             );
           }
           return t;
         }
         return {
           restrict: "AC",
           link: function(o, s, u) {
             function l(t) {
               var e = f(t, 1);
               u.$addClass(e);
             }
             function c(t) {
               var e = f(t, -1);
               u.$removeClass(e);
             }
             function f(t, e) {
               var n = s.data("$classCounts") || {},
                 r = [];
               return (
                 a(t, function(t) {
                   (e > 0 || n[t]) &&
                     ((n[t] = (n[t] || 0) + e),
                     n[t] === +(e > 0) && r.push(t));
                 }),
                 s.data("$classCounts", n),
                 r.join(" ")
               );
             }
             function d(t, e) {
               var i = r(e, t),
                 a = r(t, e);
               (i = f(i, 1)),
                 (a = f(a, -1)),
                 i && i.length && n.addClass(s, i),
                 a && a.length && n.removeClass(s, a);
             }
             function h(t) {
               if (e === !0 || o.$index % 2 === e) {
                 var n = i(t || []);
                 if (p) {
                   if (!I(t, p)) {
                     var r = i(p);
                     d(r, n);
                   }
                 } else l(n);
               }
               p = R(t);
             }
             var p;
             o.$watch(u[t], h, !0),
               u.$observe("class", function() {
                 h(o.$eval(u[t]));
               }),
               "ngClass" !== t &&
                 o.$watch("$index", function(n, r) {
                   var a = 1 & n;
                   if (a !== (1 & r)) {
                     var s = i(o.$eval(u[t]));
                     a === e ? l(s) : c(s);
                   }
                 });
           }
         };
       }
     ]
   );
 }
 function Hr(t) {
   function e(t, e, u) {
     e === n ? r("$pending", t, u) : i("$pending", t, u),
       N(e)
         ? e
           ? (f(s.$error, t, u), c(s.$$success, t, u))
           : (c(s.$error, t, u), f(s.$$success, t, u))
         : (f(s.$error, t, u), f(s.$$success, t, u)),
       s.$pending
         ? (a(go, !0), (s.$valid = s.$invalid = n), o("", null))
         : (a(go, !1),
           (s.$valid = Br(s.$error)),
           (s.$invalid = !s.$valid),
           o("", s.$valid));
     var l;
     (l =
       s.$pending && s.$pending[t]
         ? n
         : s.$error[t]
           ? !1
           : s.$$success[t]
             ? !0
             : null),
       o(t, l),
       d.$setValidity(t, l, s);
   }
   function r(t, e, n) {
     s[t] || (s[t] = {}), c(s[t], e, n);
   }
   function i(t, e, r) {
     s[t] && f(s[t], e, r), Br(s[t]) && (s[t] = n);
   }
   function a(t, e) {
     e && !l[t]
       ? (h.addClass(u, t), (l[t] = !0))
       : !e && l[t] && (h.removeClass(u, t), (l[t] = !1));
   }
   function o(t, e) {
     (t = t ? "-" + ne(t, "-") : ""), a(co + t, e === !0), a(fo + t, e === !1);
   }
   var s = t.ctrl,
     u = t.$element,
     l = {},
     c = t.set,
     f = t.unset,
     d = t.parentForm,
     h = t.$animate;
   (l[fo] = !(l[co] = u.hasClass(co))), (s.$setValidity = e);
 }
 function Br(t) {
   if (t) for (var e in t) return !1;
   return !0;
 }
 var zr = /^\/(.+)\/([a-z]*)$/,
   Gr = "validity",
   Wr = function(t) {
     return b(t) ? t.toLowerCase() : t;
   },
   Jr = Object.prototype.hasOwnProperty,
   Yr = function(t) {
     return b(t) ? t.toUpperCase() : t;
   },
   Zr = function(t) {
     return b(t)
       ? t.replace(/[A-Z]/g, function(t) {
           return String.fromCharCode(32 | t.charCodeAt(0));
         })
       : t;
   },
   Kr = function(t) {
     return b(t)
       ? t.replace(/[a-z]/g, function(t) {
           return String.fromCharCode(-33 & t.charCodeAt(0));
         })
       : t;
   };
 "i" !== "I".toLowerCase() && ((Wr = Zr), (Yr = Kr));
 var Xr,
   Qr,
   ti,
   ei,
   ni = [].slice,
   ri = [].splice,
   ii = [].push,
   ai = Object.prototype.toString,
   oi = r("ng"),
   si = t.angular || (t.angular = {}),
   ui = 0;
 (Xr = e.documentMode), (p.$inject = []), ($.$inject = []);
 var li,
   ci = Array.isArray,
   fi = function(t) {
     return b(t) ? t.trim() : t;
   },
   di = function(t) {
     return t
       .replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g, "\\$1")
       .replace(/\x08/g, "\\x08");
   },
   hi = function() {
     if (v(hi.isActive_)) return hi.isActive_;
     var t = !(
       !e.querySelector("[ng-csp]") && !e.querySelector("[data-ng-csp]")
     );
     if (!t)
       try {
         new Function("");
       } catch (n) {
         t = !0;
       }
     return (hi.isActive_ = t);
   },
   pi = ["ng-", "data-ng-", "ng:", "x-ng-"],
   $i = /[A-Z]/g,
   mi = !1,
   gi = 1,
   vi = 3,
   yi = 8,
   bi = 9,
   wi = 11,
   xi = {
     full: "1.3.13",
     major: 1,
     minor: 3,
     dot: 13,
     codeName: "meticulous-riffleshuffle"
   };
 be.expando = "ng339";
 var ki = (be.cache = {}),
   Si = 1,
   Ci = function(t, e, n) {
     t.addEventListener(e, n, !1);
   },
   Ai = function(t, e, n) {
     t.removeEventListener(e, n, !1);
   };
 be._data = function(t) {
   return this.cache[t[this.expando]] || {};
 };
 var Oi = /([\:\-\_]+(.))/g,
   Ei = /^moz([A-Z])/,
   ji = { mouseleave: "mouseout", mouseenter: "mouseover" },
   Ni = r("jqLite"),
   Ti = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
   Mi = /<|&#?\w+;/,
   Pi = /<([\w:]+)/,
   Vi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
   qi = {
     option: [1, '<select multiple="multiple">', "</select>"],
thead: [1, "", "
"], col: [2, "<colgroup>", "</colgroup>
"], tr: [2, "<tbody>", "</tbody>
"], td: [3, "<tbody>", "</tbody>
"],
     _default: [0, "", ""]
   };
 (qi.optgroup = qi.option),
   (qi.tbody = qi.tfoot = qi.colgroup = qi.caption = qi.thead),
   (qi.th = qi.td);
 var Di = (be.prototype = {
     ready: function(n) {
       function r() {
         i || ((i = !0), n());
       }
       var i = !1;
       "complete" === e.readyState
         ? setTimeout(r)
         : (this.on("DOMContentLoaded", r), be(t).on("load", r));
     },
     toString: function() {
       var t = [];
       return (
         a(this, function(e) {
           t.push("" + e);
         }),
         "[" + t.join(", ") + "]"
       );
     },
     eq: function(t) {
       return t >= 0 ? Qr(this[t]) : Qr(this[this.length + t]);
     },
     length: 0,
     push: ii,
     sort: [].sort,
     splice: [].splice
   }),
   Ri = {};
 a(
   "multiple,selected,checked,disabled,readOnly,required,open".split(","),
   function(t) {
     Ri[Wr(t)] = t;
   }
 );
 var Ii = {};
 a("input,select,option,textarea,button,form,details".split(","), function(t) {
   Ii[t] = !0;
 });
 var _i = {
   ngMinlength: "minlength",
   ngMaxlength: "maxlength",
   ngMin: "min",
   ngMax: "max",
   ngPattern: "pattern"
 };
 a({ data: Ae, removeData: Se }, function(t, e) {
   be[e] = t;
 }),
   a(
     {
       data: Ae,
       inheritedData: Me,
       scope: function(t) {
         return (
           Qr.data(t, "$scope") ||
           Me(t.parentNode || t, ["$isolateScope", "$scope"])
         );
       },
       isolateScope: function(t) {
         return (
           Qr.data(t, "$isolateScope") || Qr.data(t, "$isolateScopeNoTemplate")
         );
       },
       controller: Te,
       injector: function(t) {
         return Me(t, "$injector");
       },
       removeAttr: function(t, e) {
         t.removeAttribute(e);
       },
       hasClass: Oe,
       css: function(t, e, n) {
         return (e = $e(e)), v(n) ? ((t.style[e] = n), void 0) : t.style[e];
       },
       attr: function(t, e, r) {
         var i = Wr(e);
         if (Ri[i]) {
           if (!v(r))
             return t[e] || (t.attributes.getNamedItem(e) || p).specified
               ? i
               : n;
           r
             ? ((t[e] = !0), t.setAttribute(e, i))
             : ((t[e] = !1), t.removeAttribute(i));
         } else if (v(r)) t.setAttribute(e, r);
         else if (t.getAttribute) {
           var a = t.getAttribute(e, 2);
           return null === a ? n : a;
         }
       },
       prop: function(t, e, n) {
         return v(n) ? ((t[e] = n), void 0) : t[e];
       },
       text: (function() {
         function t(t, e) {
           if (g(e)) {
             var n = t.nodeType;
             return n === gi || n === vi ? t.textContent : "";
           }
           t.textContent = e;
         }
         return (t.$dv = ""), t;
       })(),
       val: function(t, e) {
         if (g(e)) {
           if (t.multiple && "select" === V(t)) {
             var n = [];
             return (
               a(t.options, function(t) {
                 t.selected && n.push(t.value || t.text);
               }),
               0 === n.length ? null : n
             );
           }
           return t.value;
         }
         t.value = e;
       },
       html: function(t, e) {
         return g(e) ? t.innerHTML : (xe(t, !0), (t.innerHTML = e), void 0);
       },
       empty: Pe
     },
     function(t, e) {
       be.prototype[e] = function(e, r) {
         var i,
           a,
           o = this.length;
         if (
           t !== Pe &&
           (2 == t.length && t !== Oe && t !== Te ? e : r) === n
         ) {
           if (y(e)) {
             for (i = 0; o > i; i++)
               if (t === Ae) t(this[i], e);
               else for (a in e) t(this[i], a, e[a]);
             return this;
           }
           for (
             var s = t.$dv, u = s === n ? Math.min(o, 1) : o, l = 0;
             u > l;
             l++
           ) {
             var c = t(this[l], e, r);
             s = s ? s + c : c;
           }
           return s;
         }
         for (i = 0; o > i; i++) t(this[i], e, r);
         return this;
       };
     }
   ),
   a(
     {
       removeData: Se,
       on: function zo(t, e, n, r) {
         if (v(r))
           throw Ni(
             "onargs",
             "jqLite#on() does not support the `selector` or `eventData` parameters"
           );
         if (ge(t)) {
           var i = Ce(t, !0),
             a = i.events,
             o = i.handle;
           o || (o = i.handle = Ie(t, a));
           for (
             var s = e.indexOf(" ") >= 0 ? e.split(" ") : [e], u = s.length;
             u--;
           ) {
             e = s[u];
             var l = a[e];
             l ||
               ((a[e] = []),
               "mouseenter" === e || "mouseleave" === e
                 ? zo(t, ji[e], function(t) {
                     var n = this,
                       r = t.relatedTarget;
                     (!r || (r !== n && !n.contains(r))) && o(t, e);
                   })
                 : "$destroy" !== e && Ci(t, e, o),
               (l = a[e])),
               l.push(n);
           }
         }
       },
       off: ke,
       one: function(t, e, n) {
         (t = Qr(t)),
           t.on(e, function r() {
             t.off(e, n), t.off(e, r);
           }),
           t.on(e, n);
       },
       replaceWith: function(t, e) {
         var n,
           r = t.parentNode;
         xe(t),
           a(new be(e), function(e) {
             n ? r.insertBefore(e, n.nextSibling) : r.replaceChild(e, t),
               (n = e);
           });
       },
       children: function(t) {
         var e = [];
         return (
           a(t.childNodes, function(t) {
             t.nodeType === gi && e.push(t);
           }),
           e
         );
       },
       contents: function(t) {
         return t.contentDocument || t.childNodes || [];
       },
       append: function(t, e) {
         var n = t.nodeType;
         if (n === gi || n === wi) {
           e = new be(e);
           for (var r = 0, i = e.length; i > r; r++) {
             var a = e[r];
             t.appendChild(a);
           }
         }
       },
       prepend: function(t, e) {
         if (t.nodeType === gi) {
           var n = t.firstChild;
           a(new be(e), function(e) {
             t.insertBefore(e, n);
           });
         }
       },
       wrap: function(t, e) {
         e = Qr(e)
           .eq(0)
           .clone()[0];
         var n = t.parentNode;
         n && n.replaceChild(e, t), e.appendChild(t);
       },
       remove: Ve,
       detach: function(t) {
         Ve(t, !0);
       },
       after: function(t, e) {
         var n = t,
           r = t.parentNode;
         e = new be(e);
         for (var i = 0, a = e.length; a > i; i++) {
           var o = e[i];
           r.insertBefore(o, n.nextSibling), (n = o);
         }
       },
       addClass: je,
       removeClass: Ee,
       toggleClass: function(t, e, n) {
         e &&
           a(e.split(" "), function(e) {
             var r = n;
             g(r) && (r = !Oe(t, e)), (r ? je : Ee)(t, e);
           });
       },
       parent: function(t) {
         var e = t.parentNode;
         return e && e.nodeType !== wi ? e : null;
       },
       next: function(t) {
         return t.nextElementSibling;
       },
       find: function(t, e) {
         return t.getElementsByTagName ? t.getElementsByTagName(e) : [];
       },
       clone: we,
       triggerHandler: function(t, e, n) {
         var r,
           i,
           o,
           s = e.type || e,
           u = Ce(t),
           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: p,
             type: s,
             target: t
           }),
           e.type && (r = f(r, e)),
           (i = R(c)),
           (o = n ? [r].concat(n) : [r]),
           a(i, function(e) {
             r.isImmediatePropagationStopped() || e.apply(t, o);
           }));
       }
     },
     function(t, e) {
       (be.prototype[e] = function(e, n, r) {
         for (var i, a = 0, o = this.length; o > a; a++)
           g(i)
             ? ((i = t(this[a], e, n, r)), v(i) && (i = Qr(i)))
             : Ne(i, t(this[a], e, n, r));
         return v(i) ? i : this;
       }),
         (be.prototype.bind = be.prototype.on),
         (be.prototype.unbind = be.prototype.off);
     }
   ),
   (Le.prototype = {
     put: function(t, e) {
       this[Ue(t, this.nextUid)] = e;
     },
     get: function(t) {
       return this[Ue(t, this.nextUid)];
     },
     remove: function(t) {
       var e = this[(t = Ue(t, this.nextUid))];
       return delete this[t], e;
     }
   });
 var Ui = /^function\s*[^\(]*\(\s*([^\)]*)\)/m,
   Li = /,/,
   Fi = /^\s*(_?)(\S+?)\1\s*$/,
   Hi = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
   Bi = r("$injector");
 Be.$$annotate = He;
 var zi = r("$animate"),
   Gi = [
     "$provide",
     function(t) {
       (this.$$selectors = {}),
         (this.register = function(e, n) {
           var r = e + "-animation";
           if (e && "." != e.charAt(0))
             throw zi(
               "notcsel",
               "Expecting class selector starting with '.' got '{0}'.",
               e
             );
           (this.$$selectors[e.substr(1)] = r), t.factory(r, n);
         }),
         (this.classNameFilter = function(t) {
           return (
             1 === arguments.length &&
               (this.$$classNameFilter = t instanceof RegExp ? t : null),
             this.$$classNameFilter
           );
         }),
         (this.$get = [
           "$$q",
           "$$asyncCallback",
           "$rootScope",
           function(t, e, n) {
             function r(e) {
               var r,
                 i = t.defer();
               return (
                 (i.promise.$$cancelFn = function() {
                   r && r();
                 }),
                 n.$$postDigest(function() {
                   r = e(function() {
                     i.resolve();
                   });
                 }),
                 i.promise
               );
             }
             function i(t, e) {
               var n = [],
                 r = [],
                 i = le();
               return (
                 a((t.attr("class") || "").split(/\s+/), function(t) {
                   i[t] = !0;
                 }),
                 a(e, function(t, e) {
                   var a = i[e];
                   t === !1 && a ? r.push(e) : t !== !0 || a || n.push(e);
                 }),
                 n.length + r.length > 0 && [
                   n.length ? n : null,
                   r.length ? r : null
                 ]
               );
             }
             function o(t, e, n) {
               for (var r = 0, i = e.length; i > r; ++r) {
                 var a = e[r];
                 t[a] = n;
               }
             }
             function s() {
               return (
                 l ||
                   ((l = t.defer()),
                   e(function() {
                     l.resolve(), (l = null);
                   })),
                 l.promise
               );
             }
             function u(t, e) {
               if (si.isObject(e)) {
                 var n = f(e.from || {}, e.to || {});
                 t.css(n);
               }
             }
             var l;
             return {
               animate: function(t, e, n) {
                 return u(t, { from: e, to: n }), s();
               },
               enter: function(t, e, n, r) {
                 return u(t, r), n ? n.after(t) : e.prepend(t), s();
               },
               leave: function(t) {
                 return t.remove(), s();
               },
               move: function(t, e, n, r) {
                 return this.enter(t, e, n, r);
               },
               addClass: function(t, e, n) {
                 return this.setClass(t, e, [], n);
               },
               $$addClassImmediately: function(t, e, n) {
                 return (
                   (t = Qr(t)),
                   (e = b(e) ? e : ci(e) ? e.join(" ") : ""),
                   a(t, function(t) {
                     je(t, e);
                   }),
                   u(t, n),
                   s()
                 );
               },
               removeClass: function(t, e, n) {
                 return this.setClass(t, [], e, n);
               },
               $$removeClassImmediately: function(t, e, n) {
                 return (
                   (t = Qr(t)),
                   (e = b(e) ? e : ci(e) ? e.join(" ") : ""),
                   a(t, function(t) {
                     Ee(t, e);
                   }),
                   u(t, n),
                   s()
                 );
               },
               setClass: function(t, e, n, a) {
                 var s = this,
                   u = "$$animateClasses",
                   l = !1;
                 t = Qr(t);
                 var c = t.data(u);
                 c
                   ? a &&
                     c.options &&
                     (c.options = si.extend(c.options || {}, a))
                   : ((c = { classes: {}, options: a }), (l = !0));
                 var f = c.classes;
                 return (
                   (e = ci(e) ? e : e.split(" ")),
                   (n = ci(n) ? n : n.split(" ")),
                   o(f, e, !0),
                   o(f, n, !1),
                   l &&
                     ((c.promise = r(function(e) {
                       var n = t.data(u);
                       if ((t.removeData(u), n)) {
                         var r = i(t, n.classes);
                         r &&
                           s.$$setClassImmediately(t, r[0], r[1], n.options);
                       }
                       e();
                     })),
                     t.data(u, c)),
                   c.promise
                 );
               },
               $$setClassImmediately: function(t, e, n, r) {
                 return (
                   e && this.$$addClassImmediately(t, e),
                   n && this.$$removeClassImmediately(t, n),
                   u(t, r),
                   s()
                 );
               },
               enabled: p,
               cancel: p
             };
           }
         ]);
     }
   ],
   Wi = r("$compile");
 Ke.$inject = ["$provide", "$$sanitizeUriProvider"];
 var Ji = /^((?:x|data)[\:\-_])/i,
   Yi = r("$controller"),
   Zi = "application/json",
   Ki = { "Content-Type": Zi + ";charset=utf-8" },
   Xi = /^\[|^\{(?!\{)/,
   Qi = { "[": /]$/, "{": /}$/ },
   ta = /^\)\]\}',?\n/,
   ea = r("$interpolate"),
   na = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/,
   ra = { http: 80, https: 443, ftp: 21 },
   ia = r("$location"),
   aa = {
     $$html5: !1,
     $$replace: !1,
     absUrl: jn("$$absUrl"),
     url: function(t) {
       if (g(t)) return this.$$url;
       var e = na.exec(t);
       return (
         (e[1] || "" === t) && this.path(decodeURIComponent(e[1])),
         (e[2] || e[1] || "" === t) && this.search(e[3] || ""),
         this.hash(e[5] || ""),
         this
       );
     },
     protocol: jn("$$protocol"),
     host: jn("$$host"),
     port: jn("$$port"),
     path: Nn("$$path", function(t) {
       return (
         (t = null !== t ? t.toString() : ""), "/" == t.charAt(0) ? t : "/" + t
       );
     }),
     search: function(t, e) {
       switch (arguments.length) {
         case 0:
           return this.$$search;
         case 1:
           if (b(t) || w(t)) (t = t.toString()), (this.$$search = W(t));
           else {
             if (!y(t))
               throw ia(
                 "isrcharg",
                 "The first argument of the `$location#search()` call must be a string or an object."
               );
             (t = D(t, {})),
               a(t, function(e, n) {
                 null == e && delete t[n];
               }),
               (this.$$search = t);
           }
           break;
         default:
           g(e) || null === e
             ? delete this.$$search[t]
             : (this.$$search[t] = e);
       }
       return this.$$compose(), this;
     },
     hash: Nn("$$hash", function(t) {
       return null !== t ? t.toString() : "";
     }),
     replace: function() {
       return (this.$$replace = !0), this;
     }
   };
 a([En, On, An], function(t) {
   (t.prototype = Object.create(aa)),
     (t.prototype.state = function(e) {
       if (!arguments.length) return this.$$state;
       if (t !== An || !this.$$html5)
         throw ia(
           "nostate",
           "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API"
         );
       return (this.$$state = g(e) ? null : e), this;
     });
 });
 var oa = r("$parse"),
   sa = Function.prototype.call,
   ua = Function.prototype.apply,
   la = Function.prototype.bind,
   ca = le();
 a(
   {
     null: function() {
       return null;
     },
     true: function() {
       return !0;
     },
     false: function() {
       return !1;
     },
     undefined: function() {}
   },
   function(t, e) {
     (t.constant = t.literal = t.sharedGetter = !0), (ca[e] = t);
   }
 ),
   (ca["this"] = function(t) {
     return t;
   }),
   (ca["this"].sharedGetter = !0);
 var fa = f(le(), {
     "+": function(t, e, r, i) {
       return (
         (r = r(t, e)), (i = i(t, e)), v(r) ? (v(i) ? r + i : r) : v(i) ? i : n
       );
     },
     "-": function(t, e, n, r) {
       return (n = n(t, e)), (r = r(t, e)), (v(n) ? n : 0) - (v(r) ? r : 0);
     },
     "*": function(t, e, n, r) {
       return n(t, e) * r(t, e);
     },
     "/": function(t, e, n, r) {
       return n(t, e) / r(t, e);
     },
     "%": function(t, e, n, r) {
       return n(t, e) % r(t, e);
     },
     "===": function(t, e, n, r) {
       return n(t, e) === r(t, e);
     },
     "!==": function(t, e, n, r) {
       return n(t, e) !== r(t, e);
     },
     "==": function(t, e, n, r) {
       return n(t, e) == r(t, e);
     },
     "!=": function(t, e, n, r) {
       return n(t, e) != r(t, e);
     },
     "<": function(t, e, n, r) {
       return n(t, e) < r(t, e);
     },
     ">": function(t, e, n, r) {
       return n(t, e) > r(t, e);
     },
     "<=": function(t, e, n, r) {
       return n(t, e) <= r(t, e);
     },
     ">=": function(t, e, n, r) {
       return n(t, e) >= r(t, e);
     },
     "&&": function(t, e, n, r) {
       return n(t, e) && r(t, e);
     },
     "||": function(t, e, n, r) {
       return n(t, e) || r(t, e);
     },
     "!": function(t, e, n) {
       return !n(t, e);
     },
     "=": !0,
     "|": !0
   }),
   da = { n: "\n", f: "\f", r: "\r", t: "	", v: "�", "'": "'", '"': '"' },
   ha = function(t) {
     this.options = t;
   };
 ha.prototype = {
   constructor: ha,
   lex: function(t) {
     for (
       this.text = t, this.index = 0, this.tokens = [];
       this.index < this.text.length;
     ) {
       var e = this.text.charAt(this.index);
       if ('"' === e || "'" === e) this.readString(e);
       else if (this.isNumber(e) || ("." === e && this.isNumber(this.peek())))
         this.readNumber();
       else if (this.isIdent(e)) this.readIdent();
       else if (this.is(e, "(){}[].,;:?"))
         this.tokens.push({ index: this.index, text: e }), this.index++;
       else if (this.isWhitespace(e)) this.index++;
       else {
         var n = e + this.peek(),
           r = n + this.peek(2),
           i = fa[e],
           a = fa[n],
           o = fa[r];
         if (i || a || o) {
           var s = o ? r : a ? n : e;
           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(t, e) {
     return -1 !== e.indexOf(t);
   },
   peek: function(t) {
     var e = t || 1;
     return this.index + e < this.text.length
       ? this.text.charAt(this.index + e)
       : !1;
   },
   isNumber: function(t) {
     return t >= "0" && "9" >= t && "string" == typeof t;
   },
   isWhitespace: function(t) {
     return (
       " " === t ||
       "\r" === t ||
       "	" === t ||
       "\n" === t ||
       "�" === t ||
       " " === t
     );
   },
   isIdent: function(t) {
     return (
       (t >= "a" && "z" >= t) ||
       (t >= "A" && "Z" >= t) ||
       "_" === t ||
       "$" === t
     );
   },
   isExpOperator: function(t) {
     return "-" === t || "+" === t || this.isNumber(t);
   },
   throwError: function(t, e, n) {
     n = n || this.index;
     var r = v(e)
       ? "s " + e + "-" + this.index + " [" + this.text.substring(e, n) + "]"
       : " " + n;
     throw oa(
       "lexerr",
       "Lexer Error: {0} at column{1} in expression [{2}].",
       t,
       r,
       this.text
     );
   },
   readNumber: function() {
     for (var t = "", e = this.index; this.index < this.text.length; ) {
       var n = Wr(this.text.charAt(this.index));
       if ("." == n || this.isNumber(n)) t += n;
       else {
         var r = this.peek();
         if ("e" == n && this.isExpOperator(r)) t += n;
         else if (
           this.isExpOperator(n) &&
           r &&
           this.isNumber(r) &&
           "e" == t.charAt(t.length - 1)
         )
           t += n;
         else {
           if (
             !this.isExpOperator(n) ||
             (r && this.isNumber(r)) ||
             "e" != t.charAt(t.length - 1)
           )
             break;
           this.throwError("Invalid exponent");
         }
       }
       this.index++;
     }
     this.tokens.push({ index: e, text: t, constant: !0, value: Number(t) });
   },
   readIdent: function() {
     for (var t = this.index; this.index < this.text.length; ) {
       var e = this.text.charAt(this.index);
       if (!this.isIdent(e) && !this.isNumber(e)) break;
       this.index++;
     }
     this.tokens.push({
       index: t,
       text: this.text.slice(t, this.index),
       identifier: !0
     });
   },
   readString: function(t) {
     var e = this.index;
     this.index++;
     for (var n = "", r = t, i = !1; this.index < this.text.length; ) {
       var a = this.text.charAt(this.index);
       if (((r += a), i)) {
         if ("u" === a) {
           var o = this.text.substring(this.index + 1, this.index + 5);
           o.match(/[\da-f]{4}/i) ||
             this.throwError("Invalid unicode escape [\\u" + o + "]"),
             (this.index += 4),
             (n += String.fromCharCode(parseInt(o, 16)));
         } else {
           var s = da[a];
           n += s || a;
         }
         i = !1;
       } else if ("\\" === a) i = !0;
       else {
         if (a === t)
           return (
             this.index++,
             this.tokens.push({ index: e, text: r, constant: !0, value: n }),
             void 0
           );
         n += a;
       }
       this.index++;
     }
     this.throwError("Unterminated quote", e);
   }
 };
 var pa = function(t, e, n) {
   (this.lexer = t), (this.$filter = e), (this.options = n);
 };
 (pa.ZERO = f(
   function() {
     return 0;
   },
   { sharedGetter: !0, constant: !0 }
 )),
   (pa.prototype = {
     constructor: pa,
     parse: function(t) {
       (this.text = t), (this.tokens = this.lexer.lex(t));
       var e = this.statements();
       return (
         0 !== this.tokens.length &&
           this.throwError("is an unexpected token", this.tokens[0]),
         (e.literal = !!e.literal),
         (e.constant = !!e.constant),
         e
       );
     },
     primary: function() {
       var t;
       this.expect("(")
         ? ((t = this.filterChain()), this.consume(")"))
         : this.expect("[")
           ? (t = this.arrayDeclaration())
           : this.expect("{")
             ? (t = this.object())
             : this.peek().identifier && this.peek().text in ca
               ? (t = ca[this.consume().text])
               : this.peek().identifier
                 ? (t = this.identifier())
                 : this.peek().constant
                   ? (t = this.constant())
                   : this.throwError("not a primary expression", this.peek());
       for (var e, n; (e = this.expect("(", "[", ".")); )
         "(" === e.text
           ? ((t = this.functionCall(t, n)), (n = null))
           : "[" === e.text
             ? ((n = t), (t = this.objectIndex(t)))
             : "." === e.text
               ? ((n = t), (t = this.fieldAccess(t)))
               : this.throwError("IMPOSSIBLE");
       return t;
     },
     throwError: function(t, e) {
       throw oa(
         "syntax",
         "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",
         e.text,
         t,
         e.index + 1,
         this.text,
         this.text.substring(e.index)
       );
     },
     peekToken: function() {
       if (0 === this.tokens.length)
         throw oa("ueoe", "Unexpected end of expression: {0}", this.text);
       return this.tokens[0];
     },
     peek: function(t, e, n, r) {
       return this.peekAhead(0, t, e, n, r);
     },
     peekAhead: function(t, e, n, r, i) {
       if (this.tokens.length > t) {
         var a = this.tokens[t],
           o = a.text;
         if (
           o === e ||
           o === n ||
           o === r ||
           o === i ||
           (!e && !n && !r && !i)
         )
           return a;
       }
       return !1;
     },
     expect: function(t, e, n, r) {
       var i = this.peek(t, e, n, r);
       return i ? (this.tokens.shift(), i) : !1;
     },
     consume: function(t) {
       if (0 === this.tokens.length)
         throw oa("ueoe", "Unexpected end of expression: {0}", this.text);
       var e = this.expect(t);
       return (
         e ||
           this.throwError(
             "is unexpected, expecting [" + t + "]",
             this.peek()
           ),
         e
       );
     },
     unaryFn: function(t, e) {
       var n = fa[t];
       return f(
         function(t, r) {
           return n(t, r, e);
         },
         { constant: e.constant, inputs: [e] }
       );
     },
     binaryFn: function(t, e, n, r) {
       var i = fa[e];
       return f(
         function(e, r) {
           return i(e, r, t, n);
         },
         { constant: t.constant && n.constant, inputs: !r && [t, n] }
       );
     },
     identifier: function() {
       for (
         var t = this.consume().text;
         this.peek(".") &&
         this.peekAhead(1).identifier &&
         !this.peekAhead(2, "(");
       )
         t += this.consume().text + this.consume().text;
       return Ln(t, this.options, this.text);
     },
     constant: function() {
       var t = this.consume().value;
       return f(
         function() {
           return t;
         },
         { constant: !0, literal: !0 }
       );
     },
     statements: function() {
       for (var t = []; ; )
         if (
           (this.tokens.length > 0 &&
             !this.peek("}", ")", ";", "]") &&
             t.push(this.filterChain()),
           !this.expect(";"))
         )
           return 1 === t.length
             ? t[0]
             : function(e, n) {
                 for (var r, i = 0, a = t.length; a > i; i++) r = t[i](e, n);
                 return r;
               };
     },
     filterChain: function() {
       for (var t, e = this.expression(); (t = this.expect("|")); )
         e = this.filter(e);
       return e;
     },
     filter: function(t) {
       var e,
         r,
         i = this.$filter(this.consume().text);
       if (this.peek(":"))
         for (e = [], r = []; this.expect(":"); ) e.push(this.expression());
       var a = [t].concat(e || []);
       return f(
         function(a, o) {
           var s = t(a, o);
           if (r) {
             r[0] = s;
             for (var u = e.length; u--; ) r[u + 1] = e[u](a, o);
             return i.apply(n, r);
           }
           return i(s);
         },
         { constant: !i.$stateful && a.every(Dn), inputs: !i.$stateful && a }
       );
     },
     expression: function() {
       return this.assignment();
     },
     assignment: function() {
       var t,
         e,
         n = this.ternary();
       return (e = this.expect("="))
         ? (n.assign ||
             this.throwError(
               "implies assignment but [" +
                 this.text.substring(0, e.index) +
                 "] can not be assigned to",
               e
             ),
           (t = this.ternary()),
           f(
             function(e, r) {
               return n.assign(e, t(e, r), r);
             },
             { inputs: [n, t] }
           ))
         : n;
     },
     ternary: function() {
       var t,
         e,
         n = this.logicalOR();
       if (
         (e = this.expect("?")) &&
         ((t = this.assignment()), this.consume(":"))
       ) {
         var r = this.assignment();
         return f(
           function(e, i) {
             return n(e, i) ? t(e, i) : r(e, i);
           },
           { constant: n.constant && t.constant && r.constant }
         );
       }
       return n;
     },
     logicalOR: function() {
       for (var t, e = this.logicalAND(); (t = this.expect("||")); )
         e = this.binaryFn(e, t.text, this.logicalAND(), !0);
       return e;
     },
     logicalAND: function() {
       for (var t, e = this.equality(); (t = this.expect("&&")); )
         e = this.binaryFn(e, t.text, this.equality(), !0);
       return e;
     },
     equality: function() {
       for (
         var t, e = this.relational();
         (t = this.expect("==", "!=", "===", "!=="));
       )
         e = this.binaryFn(e, t.text, this.relational());
       return e;
     },
     relational: function() {
       for (
         var t, e = this.additive();
         (t = this.expect("<", ">", "<=", ">="));
       )
         e = this.binaryFn(e, t.text, this.additive());
       return e;
     },
     additive: function() {
       for (var t, e = this.multiplicative(); (t = this.expect("+", "-")); )
         e = this.binaryFn(e, t.text, this.multiplicative());
       return e;
     },
     multiplicative: function() {
       for (var t, e = this.unary(); (t = this.expect("*", "/", "%")); )
         e = this.binaryFn(e, t.text, this.unary());
       return e;
     },
     unary: function() {
       var t;
       return this.expect("+")
         ? this.primary()
         : (t = this.expect("-"))
           ? this.binaryFn(pa.ZERO, t.text, this.unary())
           : (t = this.expect("!"))
             ? this.unaryFn(t.text, this.unary())
             : this.primary();
     },
     fieldAccess: function(t) {
       var e = this.identifier();
       return f(
         function(r, i, a) {
           var o = a || t(r, i);
           return null == o ? n : e(o);
         },
         {
           assign: function(n, r, i) {
             var a = t(n, i);
             return a || t.assign(n, (a = {}), i), e.assign(a, r);
           }
         }
       );
     },
     objectIndex: function(t) {
       var e = this.text,
         r = this.expression();
       return (
         this.consume("]"),
         f(
           function(i, a) {
             var o,
               s = t(i, a),
               u = r(i, a);
             return Pn(u, e), s ? (o = Vn(s[u], e)) : n;
           },
           {
             assign: function(n, i, a) {
               var o = Pn(r(n, a), e),
                 s = Vn(t(n, a), e);
               return s || t.assign(n, (s = {}), a), (s[o] = i);
             }
           }
         )
       );
     },
     functionCall: function(t, e) {
       var r = [];
       if (")" !== this.peekToken().text)
         do r.push(this.expression());
         while (this.expect(","));
       this.consume(")");
       var i = this.text,
         a = r.length ? [] : null;
       return function(o, s) {
         var u = e ? e(o, s) : v(e) ? n : o,
           l = t(o, s, u) || p;
         if (a) for (var c = r.length; c--; ) a[c] = Vn(r[c](o, s), i);
         Vn(u, i), qn(l, i);
         var f = l.apply ? l.apply(u, a) : l(a[0], a[1], a[2], a[3], a[4]);
         return a && (a.length = 0), Vn(f, i);
       };
     },
     arrayDeclaration: function() {
       var t = [];
       if ("]" !== this.peekToken().text)
         do {
           if (this.peek("]")) break;
           t.push(this.expression());
         } while (this.expect(","));
       return (
         this.consume("]"),
         f(
           function(e, n) {
             for (var r = [], i = 0, a = t.length; a > i; i++)
               r.push(t[i](e, n));
             return r;
           },
           { literal: !0, constant: t.every(Dn), inputs: t }
         )
       );
     },
     object: function() {
       var t = [],
         e = [];
       if ("}" !== this.peekToken().text)
         do {
           if (this.peek("}")) break;
           var n = this.consume();
           n.constant
             ? t.push(n.value)
             : n.identifier
               ? t.push(n.text)
               : this.throwError("invalid key", n),
             this.consume(":"),
             e.push(this.expression());
         } while (this.expect(","));
       return (
         this.consume("}"),
         f(
           function(n, r) {
             for (var i = {}, a = 0, o = e.length; o > a; a++)
               i[t[a]] = e[a](n, r);
             return i;
           },
           { literal: !0, constant: e.every(Dn), inputs: e }
         )
       );
     }
   });
 var $a = le(),
   ma = le(),
   ga = Object.prototype.valueOf,
   va = r("$sce"),
   ya = {
     HTML: "html",
     CSS: "css",
     URL: "url",
     RESOURCE_URL: "resourceUrl",
     JS: "js"
   },
   Wi = r("$compile"),
   ba = e.createElement("a"),
   wa = ir(t.location.href);
 (sr.$inject = ["$provide"]),
   (fr.$inject = ["$locale"]),
   (dr.$inject = ["$locale"]);
 var xa = ".",
   ka = {
     yyyy: $r("FullYear", 4),
     yy: $r("FullYear", 2, 0, !0),
     y: $r("FullYear", 1),
     MMMM: mr("Month"),
     MMM: mr("Month", !0),
     MM: $r("Month", 2, 1),
     M: $r("Month", 1, 1),
     dd: $r("Date", 2),
     d: $r("Date", 1),
     HH: $r("Hours", 2),
     H: $r("Hours", 1),
     hh: $r("Hours", 2, -12),
     h: $r("Hours", 1, -12),
     mm: $r("Minutes", 2),
     m: $r("Minutes", 1),
     ss: $r("Seconds", 2),
     s: $r("Seconds", 1),
     sss: $r("Milliseconds", 3),
     EEEE: mr("Day"),
     EEE: mr("Day", !0),
     a: wr,
     Z: gr,
     ww: br(2),
     w: br(1)
   },
   Sa = /((?:[^yMdHhmsaZEw']+)|(?:'(?:[^']|)*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|w+))(.*)/,
   Ca = /^\-?\d+$/;
 xr.$inject = ["$locale"];
 var Aa = m(Wr),
   Oa = m(Yr);
 Cr.$inject = ["$parse"];
 var Ea = m({
     restrict: "E",
     compile: function(t, e) {
       return e.href || e.xlinkHref || e.name
         ? void 0
         : function(t, e) {
             if ("a" === e[0].nodeName.toLowerCase()) {
               var n =
                 "[object SVGAnimatedString]" === ai.call(e.prop("href"))
                   ? "xlink:href"
                   : "href";
               e.on("click", function(t) {
                 e.attr(n) || t.preventDefault();
               });
             }
           };
     }
   }),
   ja = {};
 a(Ri, function(t, e) {
   if ("multiple" != t) {
     var n = Xe("ng-" + e);
     ja[n] = function() {
       return {
         restrict: "A",
         priority: 100,
         link: function(t, r, i) {
           t.$watch(i[n], function(t) {
             i.$set(e, !!t);
           });
         }
       };
     };
   }
 }),
   a(_i, function(t, e) {
     ja[e] = function() {
       return {
         priority: 100,
         link: function(t, n, r) {
           if ("ngPattern" === e && "/" == r.ngPattern.charAt(0)) {
             var i = r.ngPattern.match(zr);
             if (i) return r.$set("ngPattern", new RegExp(i[1], i[2])), void 0;
           }
           t.$watch(r[e], function(t) {
             r.$set(e, t);
           });
         }
       };
     };
   }),
   a(["src", "srcset", "href"], function(t) {
     var e = Xe("ng-" + t);
     ja[e] = function() {
       return {
         priority: 99,
         link: function(n, r, i) {
           var a = t,
             o = t;
           "href" === t &&
             "[object SVGAnimatedString]" === ai.call(r.prop("href")) &&
             ((o = "xlinkHref"), (i.$attr[o] = "xlink:href"), (a = null)),
             i.$observe(e, function(e) {
               return e
                 ? (i.$set(o, e), Xr && a && r.prop(a, i[o]), void 0)
                 : ("href" === t && i.$set(o, null), void 0);
             });
         }
       };
     };
   });
 var Na = {
     $addControl: p,
     $$renameControl: Or,
     $removeControl: p,
     $setValidity: p,
     $setDirty: p,
     $setPristine: p,
     $setSubmitted: p
   },
   Ta = "ng-submitted";
 Er.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"];
 var Ma = function(t) {
     return [
       "$timeout",
       function(e) {
         var r = {
           name: "form",
           restrict: t ? "EAC" : "E",
           controller: Er,
           compile: function(t) {
             return (
               t.addClass(ho).addClass(co),
               {
                 pre: function(t, r, i, a) {
                   if (!("action" in i)) {
                     var o = function(e) {
                       t.$apply(function() {
                         a.$commitViewValue(), a.$setSubmitted();
                       }),
                         e.preventDefault();
                     };
                     Ci(r[0], "submit", o),
                       r.on("$destroy", function() {
                         e(
                           function() {
                             Ai(r[0], "submit", o);
                           },
                           0,
                           !1
                         );
                       });
                   }
                   var s = a.$$parentForm,
                     u = a.$name;
                   u &&
                     (Rn(t, null, u, a, u),
                     i.$observe(i.name ? "name" : "ngForm", function(e) {
                       u !== e &&
                         (Rn(t, null, u, n, u),
                         (u = e),
                         Rn(t, null, u, a, u),
                         s.$$renameControl(a, u));
                     })),
                     r.on("$destroy", function() {
                       s.$removeControl(a),
                         u && Rn(t, null, u, n, u),
                         f(a, Na);
                     });
                 }
               }
             );
           }
         };
         return r;
       }
     ];
   },
   Pa = Ma(),
   Va = Ma(!0),
   qa = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,
   Da = /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,
   Ra = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,
   Ia = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,
   _a = /^(\d{4})-(\d{2})-(\d{2})$/,
   Ua = /^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
   La = /^(\d{4})-W(\d\d)$/,
   Fa = /^(\d{4})-(\d\d)$/,
   Ha = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
   Ba = {
     text: Nr,
     date: Vr("date", _a, Pr(_a, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
     "datetime-local": Vr(
       "datetimelocal",
       Ua,
       Pr(Ua, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]),
       "yyyy-MM-ddTHH:mm:ss.sss"
     ),
     time: Vr("time", Ha, Pr(Ha, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
     week: Vr("week", La, Mr, "yyyy-Www"),
     month: Vr("month", Fa, Pr(Fa, ["yyyy", "MM"]), "yyyy-MM"),
     number: Dr,
     url: Rr,
     email: Ir,
     radio: _r,
     checkbox: Lr,
     hidden: p,
     button: p,
     submit: p,
     reset: p,
     file: p
   },
   za = [
     "$browser",
     "$sniffer",
     "$filter",
     "$parse",
     function(t, e, n, r) {
       return {
         restrict: "E",
         require: ["?ngModel"],
         link: {
           pre: function(i, a, o, s) {
             s[0] && (Ba[Wr(o.type)] || Ba.text)(i, a, o, s[0], e, t, n, r);
           }
         }
       };
     }
   ],
   Ga = /^(true|false|\d+)$/,
   Wa = function() {
     return {
       restrict: "A",
       priority: 100,
       compile: function(t, e) {
         return Ga.test(e.ngValue)
           ? function(t, e, n) {
               n.$set("value", t.$eval(n.ngValue));
             }
           : function(t, e, n) {
               t.$watch(n.ngValue, function(t) {
                 n.$set("value", t);
               });
             };
       }
     };
   },
   Ja = [
     "$compile",
     function(t) {
       return {
         restrict: "AC",
         compile: function(e) {
           return (
             t.$$addBindingClass(e),
             function(e, r, i) {
               t.$$addBindingInfo(r, i.ngBind),
                 (r = r[0]),
                 e.$watch(i.ngBind, function(t) {
                   r.textContent = t === n ? "" : t;
                 });
             }
           );
         }
       };
     }
   ],
   Ya = [
     "$interpolate",
     "$compile",
     function(t, e) {
       return {
         compile: function(r) {
           return (
             e.$$addBindingClass(r),
             function(r, i, a) {
               var o = t(i.attr(a.$attr.ngBindTemplate));
               e.$$addBindingInfo(i, o.expressions),
                 (i = i[0]),
                 a.$observe("ngBindTemplate", function(t) {
                   i.textContent = t === n ? "" : t;
                 });
             }
           );
         }
       };
     }
   ],
   Za = [
     "$sce",
     "$parse",
     "$compile",
     function(t, e, n) {
       return {
         restrict: "A",
         compile: function(r, i) {
           var a = e(i.ngBindHtml),
             o = e(i.ngBindHtml, function(t) {
               return (t || "").toString();
             });
           return (
             n.$$addBindingClass(r),
             function(e, r, i) {
               n.$$addBindingInfo(r, i.ngBindHtml),
                 e.$watch(o, function() {
                   r.html(t.getTrustedHtml(a(e)) || "");
                 });
             }
           );
         }
       };
     }
   ],
   Ka = m({
     restrict: "A",
     require: "ngModel",
     link: function(t, e, n, r) {
       r.$viewChangeListeners.push(function() {
         t.$eval(n.ngChange);
       });
     }
   }),
   Xa = Fr("", !0),
   Qa = Fr("Odd", 0),
   to = Fr("Even", 1),
   eo = Ar({
     compile: function(t, e) {
       e.$set("ngCloak", n), t.removeClass("ng-cloak");
     }
   }),
   no = [
     function() {
       return { restrict: "A", scope: !0, controller: "@", priority: 500 };
     }
   ],
   ro = {},
   io = { blur: !0, focus: !0 };
 a(
   "click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(
     " "
   ),
   function(t) {
     var e = Xe("ng-" + t);
     ro[e] = [
       "$parse",
       "$rootScope",
       function(n, r) {
         return {
           restrict: "A",
           compile: function(i, a) {
             var o = n(a[e], null, !0);
             return function(e, n) {
               n.on(t, function(n) {
                 var i = function() {
                   o(e, { $event: n });
                 };
                 io[t] && r.$$phase ? e.$evalAsync(i) : e.$apply(i);
               });
             };
           }
         };
       }
     ];
   }
 );
 var ao = [
     "$animate",
     function(t) {
       return {
         multiElement: !0,
         transclude: "element",
         priority: 600,
         terminal: !0,
         restrict: "A",
         $$tlb: !0,
         link: function(n, r, i, a, o) {
           var s, u, l;
           n.$watch(i.ngIf, function(n) {
             n
               ? u ||
                 o(function(n, a) {
                   (u = a),
                     (n[n.length++] = e.createComment(
                       " end ngIf: " + i.ngIf + " "
                     )),
                     (s = { clone: n }),
                     t.enter(n, r.parent(), r);
                 })
               : (l && (l.remove(), (l = null)),
                 u && (u.$destroy(), (u = null)),
                 s &&
                   ((l = ue(s.clone)),
                   t.leave(l).then(function() {
                     l = null;
                   }),
                   (s = null)));
           });
         }
       };
     }
   ],
   oo = [
     "$templateRequest",
     "$anchorScroll",
     "$animate",
     "$sce",
     function(t, e, n, r) {
       return {
         restrict: "ECA",
         priority: 400,
         terminal: !0,
         transclude: "element",
         controller: si.noop,
         compile: function(i, a) {
           var o = a.ngInclude || a.src,
             s = a.onload || "",
             u = a.autoscroll;
           return function(i, a, l, c, f) {
             var d,
               h,
               p,
               $ = 0,
               m = function() {
                 h && (h.remove(), (h = null)),
                   d && (d.$destroy(), (d = null)),
                   p &&
                     (n.leave(p).then(function() {
                       h = null;
                     }),
                     (h = p),
                     (p = null));
               };
             i.$watch(r.parseAsResourceUrl(o), function(r) {
               var o = function() {
                   !v(u) || (u && !i.$eval(u)) || e();
                 },
                 l = ++$;
               r
                 ? (t(r, !0).then(
                     function(t) {
                       if (l === $) {
                         var e = i.$new();
                         c.template = t;
                         var u = f(e, function(t) {
                           m(), n.enter(t, null, a).then(o);
                         });
                         (d = e),
                           (p = u),
                           d.$emit("$includeContentLoaded", r),
                           i.$eval(s);
                       }
                     },
                     function() {
                       l === $ && (m(), i.$emit("$includeContentError", r));
                     }
                   ),
                   i.$emit("$includeContentRequested", r))
                 : (m(), (c.template = null));
             });
           };
         }
       };
     }
   ],
   so = [
     "$compile",
     function(t) {
       return {
         restrict: "ECA",
         priority: -400,
         require: "ngInclude",
         link: function(n, r, i, a) {
           return /SVG/.test(r[0].toString())
             ? (r.empty(),
               t(ve(a.template, e).childNodes)(
                 n,
                 function(t) {
                   r.append(t);
                 },
                 { futureParentElement: r }
               ),
               void 0)
             : (r.html(a.template), t(r.contents())(n), void 0);
         }
       };
     }
   ],
   uo = Ar({
     priority: 450,
     compile: function() {
       return {
         pre: function(t, e, n) {
           t.$eval(n.ngInit);
         }
       };
     }
   }),
   lo = function() {
     return {
       restrict: "A",
       priority: 100,
       require: "ngModel",
       link: function(t, e, r, i) {
         var o = e.attr(r.$attr.ngList) || ", ",
           s = "false" !== r.ngTrim,
           u = s ? fi(o) : o,
           l = function(t) {
             if (!g(t)) {
               var e = [];
               return (
                 t &&
                   a(t.split(u), function(t) {
                     t && e.push(s ? fi(t) : t);
                   }),
                 e
               );
             }
           };
         i.$parsers.push(l),
           i.$formatters.push(function(t) {
             return ci(t) ? t.join(o) : n;
           }),
           (i.$isEmpty = function(t) {
             return !t || !t.length;
           });
       }
     };
   },
   co = "ng-valid",
   fo = "ng-invalid",
   ho = "ng-pristine",
   po = "ng-dirty",
   $o = "ng-untouched",
   mo = "ng-touched",
   go = "ng-pending",
   vo = new r("ngModel"),
   yo = [
     "$scope",
     "$exceptionHandler",
     "$attrs",
     "$element",
     "$parse",
     "$animate",
     "$timeout",
     "$rootScope",
     "$q",
     "$interpolate",
     function(t, e, r, i, o, 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)(t));
       var d = o(r.ngModel),
         h = d.assign,
         $ = d,
         m = h,
         y = null,
         b = this;
       (this.$$setOptions = function(t) {
         if (((b.$options = t), t && t.getterSetter)) {
           var e = o(r.ngModel + "()"),
             n = o(r.ngModel + "($$$p)");
           ($ = function(t) {
             var n = d(t);
             return k(n) && (n = e(t)), n;
           }),
             (m = function(t) {
               k(d(t)) ? n(t, { $$$p: b.$modelValue }) : h(t, b.$modelValue);
             });
         } else if (!d.assign)
           throw vo(
             "nonassign",
             "Expression '{0}' is non-assignable. Element: {1}",
             r.ngModel,
             z(i)
           );
       }),
         (this.$render = p),
         (this.$isEmpty = function(t) {
           return g(t) || "" === t || null === t || t !== t;
         });
       var x = i.inheritedData("$formController") || Na,
         S = 0;
       Hr({
         ctrl: this,
         $element: i,
         set: function(t, e) {
           t[e] = !0;
         },
         unset: function(t, e) {
           delete t[e];
         },
         parentForm: x,
         $animate: s
       }),
         (this.$setPristine = function() {
           (b.$dirty = !1),
             (b.$pristine = !0),
             s.removeClass(i, po),
             s.addClass(i, ho);
         }),
         (this.$setDirty = function() {
           (b.$dirty = !0),
             (b.$pristine = !1),
             s.removeClass(i, ho),
             s.addClass(i, po),
             x.$setDirty();
         }),
         (this.$setUntouched = function() {
           (b.$touched = !1), (b.$untouched = !0), s.setClass(i, $o, mo);
         }),
         (this.$setTouched = function() {
           (b.$touched = !0), (b.$untouched = !1), s.setClass(i, mo, $o);
         }),
         (this.$rollbackViewValue = function() {
           u.cancel(y),
             (b.$viewValue = b.$$lastCommittedViewValue),
             b.$render();
         }),
         (this.$validate = function() {
           if (!w(b.$modelValue) || !isNaN(b.$modelValue)) {
             var t = b.$$lastCommittedViewValue,
               e = b.$$rawModelValue,
               r = b.$$parserName || "parse",
               i = b.$error[r] ? !1 : n,
               a = b.$valid,
               o = b.$modelValue,
               s = b.$options && b.$options.allowInvalid;
             b.$$runValidators(i, e, t, function(t) {
               s ||
                 a === t ||
                 ((b.$modelValue = t ? e : n),
                 b.$modelValue !== o && b.$$writeModelToScope());
             });
           }
         }),
         (this.$$runValidators = function(t, e, r, i) {
           function o(t) {
             var e = b.$$parserName || "parse";
             if (t === n) l(e, null);
             else if ((l(e, t), !t))
               return (
                 a(b.$validators, function(t, e) {
                   l(e, null);
                 }),
                 a(b.$asyncValidators, function(t, e) {
                   l(e, null);
                 }),
                 !1
               );
             return !0;
           }
           function s() {
             var t = !0;
             return (
               a(b.$validators, function(n, i) {
                 var a = n(e, r);
                 (t = t && a), l(i, a);
               }),
               t
                 ? !0
                 : (a(b.$asyncValidators, function(t, e) {
                     l(e, null);
                   }),
                   !1)
             );
           }
           function u() {
             var t = [],
               i = !0;
             a(b.$asyncValidators, function(a, o) {
               var s = a(e, r);
               if (!T(s))
                 throw vo(
                   "$asyncValidators",
                   "Expected asynchronous validator to return a promise but got '{0}' instead.",
                   s
                 );
               l(o, n),
                 t.push(
                   s.then(
                     function() {
                       l(o, !0);
                     },
                     function() {
                       (i = !1), l(o, !1);
                     }
                   )
                 );
             }),
               t.length
                 ? c.all(t).then(function() {
                     f(i);
                   }, p)
                 : f(!0);
           }
           function l(t, e) {
             d === S && b.$setValidity(t, e);
           }
           function f(t) {
             d === S && i(t);
           }
           S++;
           var d = S;
           return o(t)
             ? s()
               ? (u(), void 0)
               : (f(!1), void 0)
             : (f(!1), void 0);
         }),
         (this.$commitViewValue = function() {
           var t = b.$viewValue;
           u.cancel(y),
             (b.$$lastCommittedViewValue !== t ||
               ("" === t && b.$$hasNativeValidators)) &&
               ((b.$$lastCommittedViewValue = t),
               b.$pristine && this.$setDirty(),
               this.$$parseAndValidate());
         }),
         (this.$$parseAndValidate = function() {
           function e() {
             b.$modelValue !== s && b.$$writeModelToScope();
           }
           var r = b.$$lastCommittedViewValue,
             i = r,
             a = g(i) ? n : !0;
           if (a)
             for (var o = 0; o < b.$parsers.length; o++)
               if (((i = b.$parsers[o](i)), g(i))) {
                 a = !1;
                 break;
               }
           w(b.$modelValue) && isNaN(b.$modelValue) && (b.$modelValue = $(t));
           var s = b.$modelValue,
             u = b.$options && b.$options.allowInvalid;
           (b.$$rawModelValue = i),
             u && ((b.$modelValue = i), e()),
             b.$$runValidators(a, i, b.$$lastCommittedViewValue, function(t) {
               u || ((b.$modelValue = t ? i : n), e());
             });
         }),
         (this.$$writeModelToScope = function() {
           m(t, b.$modelValue),
             a(b.$viewChangeListeners, function(t) {
               try {
                 t();
               } catch (n) {
                 e(n);
               }
             });
         }),
         (this.$setViewValue = function(t, e) {
           (b.$viewValue = t),
             (!b.$options || b.$options.updateOnDefault) &&
               b.$$debounceViewValueCommit(e);
         }),
         (this.$$debounceViewValueCommit = function(e) {
           var n,
             r = 0,
             i = b.$options;
           i &&
             v(i.debounce) &&
             ((n = i.debounce),
             w(n)
               ? (r = n)
               : w(n[e])
                 ? (r = n[e])
                 : w(n["default"]) && (r = n["default"])),
             u.cancel(y),
             r
               ? (y = u(function() {
                   b.$commitViewValue();
                 }, r))
               : l.$$phase
                 ? b.$commitViewValue()
                 : t.$apply(function() {
                     b.$commitViewValue();
                   });
         }),
         t.$watch(function() {
           var e = $(t);
           if (e !== b.$modelValue) {
             b.$modelValue = b.$$rawModelValue = e;
             for (var r = b.$formatters, i = r.length, a = e; i--; )
               a = r[i](a);
             b.$viewValue !== a &&
               ((b.$viewValue = b.$$lastCommittedViewValue = a),
               b.$render(),
               b.$$runValidators(n, e, a, p));
           }
           return e;
         });
     }
   ],
   bo = [
     "$rootScope",
     function(t) {
       return {
         restrict: "A",
         require: ["ngModel", "^?form", "^?ngModelOptions"],
         controller: yo,
         priority: 1,
         compile: function(e) {
           return (
             e
               .addClass(ho)
               .addClass($o)
               .addClass(co),
             {
               pre: function(t, e, n, r) {
                 var i = r[0],
                   a = r[1] || Na;
                 i.$$setOptions(r[2] && r[2].$options),
                   a.$addControl(i),
                   n.$observe("name", function(t) {
                     i.$name !== t && a.$$renameControl(i, t);
                   }),
                   t.$on("$destroy", function() {
                     a.$removeControl(i);
                   });
               },
               post: function(e, n, r, i) {
                 var a = i[0];
                 a.$options &&
                   a.$options.updateOn &&
                   n.on(a.$options.updateOn, function(t) {
                     a.$$debounceViewValueCommit(t && t.type);
                   }),
                   n.on("blur", function() {
                     a.$touched ||
                       (t.$$phase
                         ? e.$evalAsync(a.$setTouched)
                         : e.$apply(a.$setTouched));
                   });
               }
             }
           );
         }
       };
     }
   ],
   wo = /(\s+|^)default(\s+|$)/,
   xo = function() {
     return {
       restrict: "A",
       controller: [
         "$scope",
         "$attrs",
         function(t, e) {
           var r = this;
           (this.$options = t.$eval(e.ngModelOptions)),
             this.$options.updateOn !== n
               ? ((this.$options.updateOnDefault = !1),
                 (this.$options.updateOn = fi(
                   this.$options.updateOn.replace(wo, function() {
                     return (r.$options.updateOnDefault = !0), " ";
                   })
                 )))
               : (this.$options.updateOnDefault = !0);
         }
       ]
     };
   },
   ko = Ar({ terminal: !0, priority: 1e3 }),
   So = [
     "$locale",
     "$interpolate",
     function(t, e) {
       var n = /{}/g,
         r = /^when(Minus)?(.+)$/;
       return {
         restrict: "EA",
         link: function(i, o, s) {
           function u(t) {
             o.text(t || "");
           }
           var l,
             c = s.count,
             f = s.$attr.when && o.attr(s.$attr.when),
             d = s.offset || 0,
             h = i.$eval(f) || {},
             p = {},
             $ = e.startSymbol(),
             m = e.endSymbol(),
             g = $ + c + "-" + d + m,
             v = si.noop;
           a(s, function(t, e) {
             var n = r.exec(e);
             if (n) {
               var i = (n[1] ? "-" : "") + Wr(n[2]);
               h[i] = o.attr(s.$attr[e]);
             }
           }),
             a(h, function(t, r) {
               p[r] = e(t.replace(n, g));
             }),
             i.$watch(c, function(e) {
               var n = parseFloat(e),
                 r = isNaN(n);
               r || n in h || (n = t.pluralCat(n - d)),
                 n === l ||
                   (r && isNaN(l)) ||
                   (v(), (v = i.$watch(p[n], u)), (l = n));
             });
         }
       };
     }
   ],
   Co = [
     "$parse",
     "$animate",
     function(t, o) {
       var s = "$$NG_REMOVED",
         u = r("ngRepeat"),
         l = function(t, e, n, r, i, a, o) {
           (t[n] = r),
             i && (t[i] = a),
             (t.$index = e),
             (t.$first = 0 === e),
             (t.$last = e === o - 1),
             (t.$middle = !(t.$first || t.$last)),
             (t.$odd = !(t.$even = 0 === (1 & e)));
         },
         c = function(t) {
           return t.clone[0];
         },
         f = function(t) {
           return t.clone[t.clone.length - 1];
         };
       return {
         restrict: "A",
         multiElement: !0,
         transclude: "element",
         priority: 1e3,
         terminal: !0,
         $$tlb: !0,
         compile: function(r, d) {
           var h = d.ngRepeat,
             p = e.createComment(" end ngRepeat: " + h + " "),
             $ = h.match(
               /^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/
             );
           if (!$)
             throw u(
               "iexp",
               "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",
               h
             );
           var m = $[1],
             g = $[2],
             v = $[3],
             y = $[4];
           if (
             (($ = m.match(
               /^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/
             )),
             !$)
           )
             throw u(
               "iidexp",
               "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",
               m
             );
           var b = $[3] || $[1],
             w = $[2];
           if (
             v &&
             (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(v) ||
               /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(
                 v
               ))
           )
             throw u(
               "badident",
               "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",
               v
             );
           var x,
             k,
             S,
             C,
             A = { $id: Ue };
           return (
             y
               ? (x = t(y))
               : ((S = function(t, e) {
                   return Ue(e);
                 }),
                 (C = function(t) {
                   return t;
                 })),
             function(t, e, r, d, $) {
               x &&
                 (k = function(e, n, r) {
                   return w && (A[w] = e), (A[b] = n), (A.$index = r), x(t, A);
                 });
               var m = le();
               t.$watchCollection(g, function(r) {
                 var d,
                   g,
                   y,
                   x,
                   A,
                   O,
                   E,
                   j,
                   N,
                   T,
                   M,
                   P,
                   V = e[0],
                   q = le();
                 if ((v && (t[v] = r), i(r))) (N = r), (j = k || S);
                 else {
                   (j = k || C), (N = []);
                   for (var D in r)
                     r.hasOwnProperty(D) && "$" != D.charAt(0) && N.push(D);
                   N.sort();
                 }
                 for (x = N.length, M = new Array(x), d = 0; x > d; d++)
                   if (
                     ((A = r === N ? d : N[d]),
                     (O = r[A]),
                     (E = j(A, O, d)),
                     m[E])
                   )
                     (T = m[E]), delete m[E], (q[E] = T), (M[d] = T);
                   else {
                     if (q[E])
                       throw (a(M, function(t) {
                         t && t.scope && (m[t.id] = t);
                       }),
                       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,
                         E,
                         O
                       ));
                     (M[d] = { id: E, scope: n, clone: n }), (q[E] = !0);
                   }
                 for (var R in m) {
                   if (
                     ((T = m[R]),
                     (P = ue(T.clone)),
                     o.leave(P),
                     P[0].parentNode)
                   )
                     for (d = 0, g = P.length; g > d; d++) P[d][s] = !0;
                   T.scope.$destroy();
                 }
                 for (d = 0; x > d; d++)
                   if (
                     ((A = r === N ? d : N[d]),
                     (O = r[A]),
                     (T = M[d]),
                     T.scope)
                   ) {
                     y = V;
                     do y = y.nextSibling;
                     while (y && y[s]);
                     c(T) != y && o.move(ue(T.clone), null, Qr(V)),
                       (V = f(T)),
                       l(T.scope, d, b, O, w, A, x);
                   } else
                     $(function(t, e) {
                       T.scope = e;
                       var n = p.cloneNode(!1);
                       (t[t.length++] = n),
                         o.enter(t, null, Qr(V)),
                         (V = n),
                         (T.clone = t),
                         (q[T.id] = T),
                         l(T.scope, d, b, O, w, A, x);
                     });
                 m = q;
               });
             }
           );
         }
       };
     }
   ],
   Ao = "ng-hide",
   Oo = "ng-hide-animate",
   Eo = [
     "$animate",
     function(t) {
       return {
         restrict: "A",
         multiElement: !0,
         link: function(e, n, r) {
           e.$watch(r.ngShow, function(e) {
             t[e ? "removeClass" : "addClass"](n, Ao, { tempClasses: Oo });
           });
         }
       };
     }
   ],
   jo = [
     "$animate",
     function(t) {
       return {
         restrict: "A",
         multiElement: !0,
         link: function(e, n, r) {
           e.$watch(r.ngHide, function(e) {
             t[e ? "addClass" : "removeClass"](n, Ao, { tempClasses: Oo });
           });
         }
       };
     }
   ],
   No = Ar(function(t, e, n) {
     t.$watchCollection(n.ngStyle, function(t, n) {
       n &&
         t !== n &&
         a(n, function(t, n) {
           e.css(n, "");
         }),
         t && e.css(t);
     });
   }),
   To = [
     "$animate",
     function(t) {
       return {
         restrict: "EA",
         require: "ngSwitch",
         controller: [
           "$scope",
           function() {
             this.cases = {};
           }
         ],
         link: function(n, r, i, o) {
           var s = i.ngSwitch || i.on,
             u = [],
             l = [],
             c = [],
             f = [],
             d = function(t, e) {
               return function() {
                 t.splice(e, 1);
               };
             };
           n.$watch(s, function(n) {
             var r, i;
             for (r = 0, i = c.length; i > r; ++r) t.cancel(c[r]);
             for (c.length = 0, r = 0, i = f.length; i > r; ++r) {
               var s = ue(l[r].clone);
               f[r].$destroy();
               var h = (c[r] = t.leave(s));
               h.then(d(c, r));
             }
             (l.length = 0),
               (f.length = 0),
               (u = o.cases["!" + n] || o.cases["?"]) &&
                 a(u, function(n) {
                   n.transclude(function(r, i) {
                     f.push(i);
                     var a = n.element;
                     r[r.length++] = e.createComment(" end ngSwitchWhen: ");
                     var o = { clone: r };
                     l.push(o), t.enter(r, a.parent(), a);
                   });
                 });
           });
         }
       };
     }
   ],
   Mo = Ar({
     transclude: "element",
     priority: 1200,
     require: "^ngSwitch",
     multiElement: !0,
     link: function(t, e, n, r, i) {
       (r.cases["!" + n.ngSwitchWhen] = r.cases["!" + n.ngSwitchWhen] || []),
         r.cases["!" + n.ngSwitchWhen].push({ transclude: i, element: e });
     }
   }),
   Po = Ar({
     transclude: "element",
     priority: 1200,
     require: "^ngSwitch",
     multiElement: !0,
     link: function(t, e, n, r, i) {
       (r.cases["?"] = r.cases["?"] || []),
         r.cases["?"].push({ transclude: i, element: e });
     }
   }),
   Vo = Ar({
     restrict: "EAC",
     link: function(t, e, n, i, a) {
       if (!a)
         throw r("ngTransclude")(
           "orphan",
           "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",
           z(e)
         );
       a(function(t) {
         e.empty(), e.append(t);
       });
     }
   }),
   qo = [
     "$templateCache",
     function(t) {
       return {
         restrict: "E",
         terminal: !0,
         compile: function(e, n) {
           if ("text/ng-template" == n.type) {
             var r = n.id,
               i = e[0].text;
             t.put(r, i);
           }
         }
       };
     }
   ],
   Do = r("ngOptions"),
   Ro = m({ restrict: "A", terminal: !0 }),
   Io = [
     "$compile",
     "$parse",
     function(t, r) {
       var i = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\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]+?))?$/,
         s = { $setViewValue: p };
       return {
         restrict: "E",
         require: ["select", "?ngModel"],
         controller: [
           "$element",
           "$scope",
           "$attrs",
           function(t, e, n) {
             var r,
               i,
               a = this,
               o = {},
               u = s;
             (a.databound = n.ngModel),
               (a.init = function(t, e, n) {
                 (u = t), (r = e), (i = n);
               }),
               (a.addOption = function(e, n) {
                 oe(e, '"option value"'),
                   (o[e] = !0),
                   u.$viewValue == e && (t.val(e), i.parent() && i.remove()),
                   n && n[0].hasAttribute("selected") && (n[0].selected = !0);
               }),
               (a.removeOption = function(t) {
                 this.hasOption(t) &&
                   (delete o[t],
                   u.$viewValue === t && this.renderUnknownOption(t));
               }),
               (a.renderUnknownOption = function(e) {
                 var n = "? " + Ue(e) + " ?";
                 i.val(n), t.prepend(i), t.val(n), i.prop("selected", !0);
               }),
               (a.hasOption = function(t) {
                 return o.hasOwnProperty(t);
               }),
               e.$on("$destroy", function() {
                 a.renderUnknownOption = p;
               });
           }
         ],
         link: function(s, u, l, c) {
           function f(t, e, n, r) {
             (n.$render = function() {
               var t = n.$viewValue;
               r.hasOption(t)
                 ? (C.parent() && C.remove(),
                   e.val(t),
                   "" === t && p.prop("selected", !0))
                 : g(t) && p
                   ? e.val("")
                   : r.renderUnknownOption(t);
             }),
               e.on("change", function() {
                 t.$apply(function() {
                   C.parent() && C.remove(), n.$setViewValue(e.val());
                 });
               });
           }
           function d(t, e, n) {
             var r;
             (n.$render = function() {
               var t = new Le(n.$viewValue);
               a(e.find("option"), function(e) {
                 e.selected = v(t.get(e.value));
               });
             }),
               t.$watch(function() {
                 I(r, n.$viewValue) || ((r = R(n.$viewValue)), n.$render());
               }),
               e.on("change", function() {
                 t.$apply(function() {
                   var t = [];
                   a(e.find("option"), function(e) {
                     e.selected && t.push(e.value);
                   }),
                     n.$setViewValue(t);
                 });
               });
           }
           function h(e, s, u) {
             function l(t, n, r) {
               return (I[O] = r), N && (I[N] = n), t(e, I);
             }
             function c() {
               e.$apply(function() {
                 var t,
                   n = P(e) || [];
                 if (y)
                   (t = []),
                     a(s.val(), function(e) {
                       (e = q ? D[e] : e), t.push(f(e, n[e]));
                     });
                 else {
                   var r = q ? D[s.val()] : s.val();
                   t = f(r, n[r]);
                 }
                 u.$setViewValue(t), g();
               });
             }
             function f(t, e) {
               if ("?" === t) return n;
               if ("" === t) return null;
               var r = j ? j : M;
               return l(r, t, e);
             }
             function d() {
               var t,
                 n = P(e);
               if (n && ci(n)) {
                 t = new Array(n.length);
                 for (var r = 0, i = n.length; i > r; r++)
                   t[r] = l(A, r, n[r]);
                 return t;
               }
               if (n) {
                 t = {};
                 for (var a in n)
                   n.hasOwnProperty(a) && (t[a] = l(A, a, n[a]));
               }
               return t;
             }
             function h(t) {
               var e;
               if (y)
                 if (q && ci(t)) {
                   e = new Le([]);
                   for (var n = 0; n < t.length; n++)
                     e.put(l(q, null, t[n]), !0);
                 } else e = new Le(t);
               else q && (t = l(q, null, t));
               return function(n, r) {
                 var i;
                 return (
                   (i = q ? q : j ? j : M),
                   y ? v(e.remove(l(i, n, r))) : t === l(i, n, r)
                 );
               };
             }
             function p() {
               x || (e.$$postDigest(g), (x = !0));
             }
             function m(t, e, n) {
               (t[e] = t[e] || 0), (t[e] += n ? 1 : -1);
             }
             function g() {
               x = !1;
               var t,
                 n,
                 r,
                 i,
                 c,
                 f,
                 d,
                 p,
                 g,
                 b,
                 C,
                 O,
                 E,
                 j,
                 M,
                 V,
                 _,
                 U = { "": [] },
                 L = [""],
                 F = u.$viewValue,
                 H = P(e) || [],
                 B = N ? o(H) : H,
                 z = {},
                 G = h(F),
                 W = !1;
               for (D = {}, O = 0; (b = B.length), b > O; O++)
                 (d = O),
                   (N && ((d = B[O]), "$" === d.charAt(0))) ||
                     ((p = H[d]),
                     (t = l(T, d, p) || ""),
                     (n = U[t]) || ((n = U[t] = []), L.push(t)),
                     (E = G(d, p)),
                     (W = W || E),
                     (V = l(A, d, p)),
                     (V = v(V) ? V : ""),
                     (_ = q ? q(e, I) : N ? B[O] : O),
                     q && (D[_] = d),
                     n.push({ id: _, label: V, selected: E }));
               for (
                 y ||
                   (w || null === F
                     ? U[""].unshift({ id: "", label: "", selected: !W })
                     : W ||
                       U[""].unshift({ id: "?", label: "", selected: !0 })),
                   C = 0,
                   g = L.length;
                 g > C;
                 C++
               ) {
                 for (
                   t = L[C],
                     n = U[t],
                     R.length <= C
                       ? ((i = {
                           element: S.clone().attr("label", t),
                           label: n.label
                         }),
                         (c = [i]),
                         R.push(c),
                         s.append(i.element))
                       : ((c = R[C]),
                         (i = c[0]),
                         i.label != t &&
                           i.element.attr("label", (i.label = t))),
                     j = null,
                     O = 0,
                     b = n.length;
                   b > O;
                   O++
                 )
                   (r = n[O]),
                     (f = c[O + 1])
                       ? ((j = f.element),
                         f.label !== r.label &&
                           (m(z, f.label, !1),
                           m(z, r.label, !0),
                           j.text((f.label = r.label)),
                           j.prop("label", f.label)),
                         f.id !== r.id && j.val((f.id = r.id)),
                         j[0].selected !== r.selected &&
                           (j.prop("selected", (f.selected = r.selected)),
                           Xr && j.prop("selected", f.selected)))
                       : ("" === r.id && w
                           ? (M = w)
                           : (M = k.clone())
                               .val(r.id)
                               .prop("selected", r.selected)
                               .attr("selected", r.selected)
                               .prop("label", r.label)
                               .text(r.label),
                         c.push(
                           (f = {
                             element: M,
                             label: r.label,
                             id: r.id,
                             selected: r.selected
                           })
                         ),
                         m(z, r.label, !0),
                         j ? j.after(M) : i.element.append(M),
                         (j = M));
                 for (O++; c.length > O; )
                   (r = c.pop()), m(z, r.label, !1), r.element.remove();
               }
               for (; R.length > C; ) {
                 for (n = R.pop(), O = 1; O < n.length; ++O)
                   m(z, n[O].label, !1);
                 n[0].element.remove();
               }
               a(z, function(t, e) {
                 t > 0 ? $.addOption(e) : 0 > t && $.removeOption(e);
               });
             }
             var C;
             if (!(C = b.match(i)))
               throw Do(
                 "iexp",
                 "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",
                 b,
                 z(s)
               );
             var A = r(C[2] || C[1]),
               O = C[4] || C[6],
               E = / as /.test(C[0]) && C[1],
               j = E ? r(E) : null,
               N = C[5],
               T = r(C[3] || ""),
               M = r(C[2] ? C[1] : O),
               P = r(C[7]),
               V = C[8],
               q = V ? r(C[8]) : null,
               D = {},
               R = [[{ element: s, label: "" }]],
               I = {};
             w && (t(w)(e), w.removeClass("ng-scope"), w.remove()),
               s.empty(),
               s.on("change", c),
               (u.$render = g),
               e.$watchCollection(P, p),
               e.$watchCollection(d, p),
               y &&
                 e.$watchCollection(function() {
                   return u.$modelValue;
                 }, p);
           }
           if (c[1]) {
             for (
               var p,
                 $ = c[0],
                 m = c[1],
                 y = l.multiple,
                 b = l.ngOptions,
                 w = !1,
                 x = !1,
                 k = Qr(e.createElement("option")),
                 S = Qr(e.createElement("optgroup")),
                 C = k.clone(),
                 A = 0,
                 O = u.children(),
                 E = O.length;
               E > A;
               A++
             )
               if ("" === O[A].value) {
                 p = w = O.eq(A);
                 break;
               }
             $.init(m, w, C),
               y &&
                 (m.$isEmpty = function(t) {
                   return !t || 0 === t.length;
                 }),
               b ? h(s, u, m) : y ? d(s, u, m) : f(s, u, m, $);
           }
         }
       };
     }
   ],
   _o = [
     "$interpolate",
     function(t) {
       var e = { addOption: p, removeOption: p };
       return {
         restrict: "E",
         priority: 100,
         compile: function(n, r) {
           if (g(r.value)) {
             var i = t(n.text(), !0);
             i || r.$set("value", n.text());
           }
           return function(t, n, r) {
             var a = "$selectController",
               o = n.parent(),
               s = o.data(a) || o.parent().data(a);
             (s && s.databound) || (s = e),
               i
                 ? t.$watch(i, function(t, e) {
                     r.$set("value", t),
                       e !== t && s.removeOption(e),
                       s.addOption(t, n);
                   })
                 : s.addOption(r.value, n),
               n.on("$destroy", function() {
                 s.removeOption(r.value);
               });
           };
         }
       };
     }
   ],
   Uo = m({ restrict: "E", terminal: !1 }),
   Lo = function() {
     return {
       restrict: "A",
       require: "?ngModel",
       link: function(t, e, n, r) {
         r &&
           ((n.required = !0),
           (r.$validators.required = function(t, e) {
             return !n.required || !r.$isEmpty(e);
           }),
           n.$observe("required", function() {
             r.$validate();
           }));
       }
     };
   },
   Fo = function() {
     return {
       restrict: "A",
       require: "?ngModel",
       link: function(t, e, i, a) {
         if (a) {
           var o,
             s = i.ngPattern || i.pattern;
           i.$observe("pattern", function(t) {
             if (
               (b(t) && t.length > 0 && (t = new RegExp("^" + t + "$")),
               t && !t.test)
             )
               throw r("ngPattern")(
                 "noregexp",
                 "Expected {0} to be a RegExp but was {1}. Element: {2}",
                 s,
                 t,
                 z(e)
               );
             (o = t || n), a.$validate();
           }),
             (a.$validators.pattern = function(t) {
               return a.$isEmpty(t) || g(o) || o.test(t);
             });
         }
       }
     };
   },
   Ho = function() {
     return {
       restrict: "A",
       require: "?ngModel",
       link: function(t, e, n, r) {
         if (r) {
           var i = -1;
           n.$observe("maxlength", function(t) {
             var e = d(t);
             (i = isNaN(e) ? -1 : e), r.$validate();
           }),
             (r.$validators.maxlength = function(t, e) {
               return 0 > i || r.$isEmpty(e) || e.length <= i;
             });
         }
       }
     };
   },
   Bo = function() {
     return {
       restrict: "A",
       require: "?ngModel",
       link: function(t, e, n, r) {
         if (r) {
           var i = 0;
           n.$observe("minlength", function(t) {
             (i = d(t) || 0), r.$validate();
           }),
             (r.$validators.minlength = function(t, e) {
               return r.$isEmpty(e) || e.length >= i;
             });
         }
       }
     };
   };
 return t.angular.bootstrap
   ? (console.log("WARNING: Tried to load angular more than once."), void 0)
   : (re(),
     he(si),
     Qr(e).ready(function() {
       X(e, Q);
     }),
     void 0);

})(window, document),

 !window.angular.$$csp() &&
   window.angular
     .element(document)
     .find("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;}</style>'
     ),
 angular.module("app", ["angularplasmid"]),
 (function() {
   "use strict";
   angular
     .module("angularplasmid.services", [])
     .factory("SVGUtil", function() {
       function t(t, e) {
         var n = "round";
         return "undefined" == typeof e || 0 === +e
           ? Math[n](t)
           : ((t = +t),
             (e = +e),
             isNaN(t) || "number" != typeof e || e % 1 !== 0
               ? 0 / 0
               : ((t = t.toString().split("e")),
                 (t = Math[n](+(t[0] + "e" + (t[1] ? +t[1] - e : -e)))),
                 (t = t.toString().split("e")),
                 +(t[0] + "e" + (t[1] ? +t[1] + e : e))));
       }
       function e(t) {
         d.push(t);
       }
       function n(t) {
         var e;
         for (e = 0; e < d.length; e += 1) if (d[e].id === t) return d[e];
       }
       function r(t, e, n, r) {
         var i = ((r - 90) * Math.PI) / 180;
         return { x: t + n * Math.cos(i), y: e + n * Math.sin(i) };
       }
       function i(t, e) {
         var n,
           r,
           i = [
             "id",
             "name",
             "class",
             "style",
             "filter",
             "ng-attr-style",
             "ng-attr-class",
             "ng-class"
           ];
         for (r = 0; r < i.length; r += 1)
           (n = i[r]),
             t[0].hasAttribute(n) && (e.attr(n, t.attr(n)), t.removeAttr(n));
       }
       function a(t, e, n) {
         var r,
           i = "http://www.w3.org/2000/svg",
           a = document.createElementNS(i, t);
         return (
           (n = n || []),
           angular.forEach(e, function(t) {
             n.indexOf(t) < 0 &&
               ((r = e[t]),
               null === r ||
                 t.match(/\$/) ||
                 ("string" == typeof r && "" === r) ||
                 a.setAttribute(t, r));
           }),
           a
         );
       }
       function o(t) {
         angular.forEach(["id", "class", "style"], function(e) {
           t.removeAttribute(e);
         });
       }
       function s(t, e, n, i) {
         var a, o, s;
         return (
           (t = Number(t || 0)),
           (e = Number(e || 0)),
           (n = Number(n || 0)),
           (i = Number(i || 0)),
           (a = { start: r(t, e, n, 359.99), end: r(t, e, n, 0) }),
           (o = { start: r(t, e, n + i, 359.99), end: r(t, e, n + i, 0) }),
           (s = [
             "M",
             a.start.x,
             a.start.y,
             "A",
             n,
             n,
             0,
             1,
             0,
             a.end.x,
             a.end.y,
             "M",
             o.start.x,
             o.start.y,
             "A",
             n + i,
             n + i,
             0,
             1,
             0,
             o.end.x,
             o.end.y
           ].join(" "))
         );
       }
       function u(t, e, n, i, a, o, s, u) {
         var l, c, f, d, h, p, $, m, g, v, y, b, w;
         return (
           (t = Number(t)),
           (e = Number(e)),
           (n = Number(n)),
           (i = Number(i)),
           (a = Number(a)),
           (o = Number(o)),
           (s = s || { width: 0, length: 0, angle: 0 }),
           (u = u || { width: 0, length: 0, angle: 0 }),
           i === a
             ? ((c = r(t, e, n, i)),
               (d = r(t, e, n + o, i)),
               (l = ["M", c.x, c.y, "L", d.x, d.y].join(" ")))
             : 1 === o
               ? ((c = r(t, e, n, i)),
                 (d = r(t, e, n, a)),
                 (h =
                   a > i
                     ? 180 >= a - i
                       ? "0"
                       : "1"
                     : 180 >= a - i
                       ? "1"
                       : "0"),
                 (l = ["M", c.x, c.y, "A", n, n, 0, h, 1, d.x, d.y].join(" ")))
               : ((a -= u.length < 0 ? 0 : u.length),
                 (i += s.length < 0 ? 0 : s.length),
                 (c = r(t, e, n, a)),
                 (d = r(t, e, n, i)),
                 (p = r(t, e, n - s.width, i + s.angle)),
                 ($ = r(t, e, n + o / 2, i - s.length)),
                 (m = r(t, e, n + o + s.width, i + s.angle)),
                 (g = r(t, e, n + o, i)),
                 (v = r(t, e, n + o + u.width, a - u.angle)),
                 (y = r(t, e, n + o / 2, a + u.length)),
                 (b = r(t, e, n - u.width, a - u.angle)),
                 (w = r(t, e, n, a)),
                 (f = r(t, e, n + o, a)),
                 (h = 180 >= a - i ? "0" : "1"),
                 (l = [
                   "M",
                   c.x,
                   c.y,
                   "A",
                   n,
                   n,
                   0,
                   h,
                   0,
                   d.x,
                   d.y,
                   "L",
                   p.x,
                   p.y,
                   "L",
                   $.x,
                   $.y,
                   "L",
                   m.x,
                   m.y,
                   "L",
                   g.x,
                   g.y,
                   "A",
                   n + o,
                   n + o,
                   0,
                   h,
                   1,
                   f.x,
                   f.y,
                   "L",
                   v.x,
                   v.y,
                   "L",
                   y.x,
                   y.y,
                   "L",
                   b.x,
                   b.y,
                   "L",
                   w.x,
                   w.y,
                   "z"
                 ].join(" "))),
           l
         );
       }
       function l(e, n, r, i, a, o) {
         (e = Number(e || 0)),
           (n = Number(n || 0)),
           (r = Number(r || 0)),
           (i = Number(i || 0)),
           (a = Number(a || 0)),
           (o = Number(o || 2));
         var s,
           u,
           l,
           c,
           f = Number(i) > 0 ? Number(a) / Number(i) : 0,
           d = (2 * Math.PI) / f,
           h = -1,
           p = "";
         for (c = 0; f > c; c += 1)
           (s = d * c - Math.PI / 2),
             (l = Math.cos(s)),
             (u = Math.sin(s)),
             (p +=
               "M" +
               t(e + r * l, h) +
               "," +
               t(n + r * u, h) +
               " L" +
               t(e + (r + o) * l, h) +
               "," +
               t(n + (r + o) * u, h) +
               " ");
         return (p = p || "M 0,0");
       }
       function c(e, n, r, i, a) {
         (e = Number(e)),
           (n = Number(n)),
           (r = Number(r)),
           (i = Number(i)),
           (a = Number(a));
         var o,
           s,
           u,
           l,
           c = Number(i) > 0 ? Number(a) / Number(i) : 0,
           f = (2 * Math.PI) / c,
           d = -1,
           h = [];
         for (l = 0; c > l; l += 1)
           (o = f * l - Math.PI / 2),
             (u = Math.cos(o)),
             (s = Math.sin(o)),
             h.push({ x: t(e + r * u, d), y: t(n + r * s, d), text: i * l });
         return h;
       }
       function f(t, e) {
         return isNaN(t) ? e || 0 : Number(t);
       }
       var d = [],
         h = [],
         p = [];
       return {
         api: {
           addPlasmid: e,
           plasmids: d,
           plasmid: n,
           plasmidtracks: h,
           trackmarkers: p
         },
         util: { polarToCartesian: r, swapProperties: i, Numeric: f },
         svg: {
           createNode: a,
           removeAttributes: o,
           path: { donut: s, arc: u, scale: l },
           element: { scalelabels: c }
         }
       };
     });
 })(),
 (function() {
   "use strict";
   angular
     .module("angularplasmid", ["angularplasmid.services"])
     .directive("plasmidapi", [
       "SVGUtil",
       function(t) {
         return {
           restrict: "AE",
           link: function(e, n, r) {
             e[r.name] = t.api;
           }
         };
       }
     ])
     .directive("plasmid", [
       "SVGUtil",
       function() {
         return {
           restrict: "AE",
           type: "svg",
           template:
             '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>',
           replace: !0,
           transclude: !0,
           require: "plasmid",
           scope: {
             plasmidheight: "@",
             plasmidwidth: "@",
             sequencelength: "@",
             sequence: "@",
             plasmidclass: "@",
             plasmidstyle: "@"
           },
           link: {
             pre: function(t, e, n, r) {
               r.init(e);
             },
             post: function(t, e, n, r, i) {
               i(t.$parent, function(t) {
                 e.append(t);
               }),
                 t.$watchGroup(
                   [
                     "plasmidheight",
                     "plasmidwidth",
                     "sequencelength",
                     "sequence",
                     "plasmidclass",
                     "plasmidstyle"
                   ],
                   function() {
                     r.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             "SVGUtil",
             function(t, e) {
               var n,
                 r,
                 i = [];
               (r = this),
                 (r.elementtype = "plasmid"),
                 (r.init = function(t) {
                   e.api.addPlasmid(r), (n = t), (r.id = n.attr("id"));
                 }),
                 (r.draw = function() {
                   var t = r.dimensions,
                     e = n.plasmidclass,
                     a = n.plasmidstyle;
                   n.attr("height", t.height),
                     n.attr("width", t.width),
                     e && n.attr("class", e),
                     a && n.attr("style", a),
                     angular.forEach(i, function(t) {
                       t.draw();
                     });
                 }),
                 (r.addTrack = function(t) {
                   i.push(t);
                 }),
                 Object.defineProperty(r, "center", {
                   get: function() {
                     var t = r.dimensions;
                     return { x: t.width / 2, y: t.height / 2 };
                   }
                 }),
                 Object.defineProperty(r, "dimensions", {
                   get: function() {
                     return {
                       height: e.util.Numeric(t.plasmidheight, 300),
                       width: e.util.Numeric(t.plasmidwidth, 300)
                     };
                   }
                 }),
                 Object.defineProperty(r, "sequencelength", {
                   get: function() {
                     return r.sequence
                       ? r.sequence.length
                       : e.util.Numeric(t.sequencelength);
                   }
                 }),
                 Object.defineProperty(r, "sequence", {
                   get: function() {
                     return t.sequence;
                   }
                 }),
                 Object.defineProperty(r, "plasmidclass", {
                   get: function() {
                     return t.plasmidclass;
                   }
                 }),
                 Object.defineProperty(r, "plasmidstyle", {
                   get: function() {
                     return t.plasmidstyle;
                   }
                 }),
                 (r.tracks = i);
             }
           ]
         };
       }
     ])
     .directive("plasmidtrack", [
       "SVGUtil",
       "$compile",
       function(t, e) {
         return {
           restrict: "AE",
           type: "svg",
           template: "<g><path></path></g>",
           replace: !0,
           transclude: !0,
           require: ["plasmidtrack", "^plasmid"],
           scope: {
             radius: "@",
             width: "@",
             trackclass: "@",
             trackstyle: "@",
             trackclick: "&"
           },
           link: {
             pre: function(t, e, n, r) {
               var i = r[0],
                 a = r[1],
                 o = angular.element(e.children()[0]);
               i.init(o, a);
             },
             post: function(n, r, i, a, o) {
               o(n.$parent, function(t) {
                 r.append(t);
               });
               var s = angular.element(r),
                 u = angular.element(r.children()[0]),
                 l = a[0];
               t.util.swapProperties(s, u),
                 u.attr("fill-rule", "evenodd"),
                 e(u)(n.$parent),
                 u.on("click", function(t) {
                   n.trackclick({ $event: t, $track: l });
                 }),
                 n.$watchGroup(
                   ["radius", "width", "trackstyle", "trackclass"],
                   function() {
                     l.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             function(e) {
               var n,
                 r,
                 i,
                 a = [],
                 o = [],
                 s = [];
               (i = this),
                 (i.elementtype = "plasmidtrack"),
                 (i.init = function(t, e) {
                   (n = e), n.addTrack(i), (i.plasmid = n), (r = t);
                 }),
                 (i.draw = function() {
                   var e = i.center,
                     n = t.svg.path.donut(e.x, e.y, i.radius, i.width),
                     u = i.trackclass,
                     l = i.trackstyle;
                   r.attr("d", n),
                     u && r.attr("class", u),
                     l && r.attr("style", l),
                     angular.forEach(a, function(t) {
                       t.draw();
                     }),
                     angular.forEach(o, function(t) {
                       t.draw();
                     }),
                     angular.forEach(s, function(t) {
                       t.draw();
                     });
                 }),
                 (i.addMarker = function(t) {
                   a.push(t);
                 }),
                 (i.addScale = function(t) {
                   o.push(t);
                 }),
                 (i.addLabel = function(t) {
                   s.push(t);
                 }),
                 (i.markergroup = function(t) {
                   var e = [];
                   return (
                     angular.forEach(a, function(n) {
                       n.markergroup === t && e.push(n);
                     }),
                     e
                   );
                 }),
                 (i.getPosition = function(e, r, a) {
                   (a = Number(a || 0)), (e = Number(e));
                   var o,
                     s,
                     u = 1,
                     l = 2,
                     c = i.center,
                     f = n.sequencelength;
                   if (f > 0) {
                     switch (((s = (e / f) * 360), r)) {
                       case u:
                         o = i.radius + a;
                         break;
                       case l:
                         o = i.radius + i.width + a;
                         break;
                       default:
                         o = i.radius + i.width / 2 + a;
                     }
                     return t.util.polarToCartesian(c.x, c.y, o, s);
                   }
                 }),
                 Object.defineProperty(i, "center", {
                   get: function() {
                     return n.center;
                   }
                 }),
                 Object.defineProperty(i, "radius", {
                   get: function() {
                     return t.util.Numeric(e.radius, 100);
                   }
                 }),
                 Object.defineProperty(i, "width", {
                   get: function() {
                     return t.util.Numeric(e.width, 25);
                   }
                 }),
                 Object.defineProperty(i, "trackclass", {
                   get: function() {
                     return e.trackclass;
                   }
                 }),
                 Object.defineProperty(i, "trackstyle", {
                   get: function() {
                     return e.trackstyle;
                   }
                 }),
                 (i.markers = a),
                 (i.scales = o),
                 (i.labels = s);
             }
           ]
         };
       }
     ])
     .directive("trackscale", [
       "SVGUtil",
       "$compile",
       function(t, e) {
         return {
           restrict: "AE",
           type: "svg",
           template: "<g><path></path><g></g></g>",
           replace: !0,
           transclude: !0,
           require: ["trackscale", "^plasmidtrack"],
           scope: {
             interval: "@",
             vadjust: "@",
             ticksize: "@",
             direction: "@",
             showlabels: "@",
             labelvadjust: "@",
             labelclass: "@",
             labelstyle: "@",
             tickclass: "@",
             tickstyle: "@",
             scaleclick: "&"
           },
           link: {
             pre: function(t, e, n, r) {
               var i = r[0],
                 a = r[1],
                 o = angular.element(e.children()[0]),
                 s = angular.element(e.children()[1]);
               i.init(o, s, a);
             },
             post: function(n, r, i, a, o) {
               var s, u, l;
               o(n.$parent, function(t) {
                 r.append(t);
               }),
                 (s = angular.element(r)),
                 (u = angular.element(r.children()[0])),
                 t.util.swapProperties(s, u),
                 e(u)(n.$parent),
                 u.on("click", function(t) {
                   n.scaleclick({ $event: t, $scale: l });
                 }),
                 (l = a[0]),
                 n.$watchGroup(
                   [
                     "interval",
                     "vadjust",
                     "ticksize",
                     "labelvadjust",
                     "direction",
                     "showlabels",
                     "labelstyle",
                     "labelclass",
                     "tickstyle",
                     "tickclass"
                   ],
                   function() {
                     l.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             function(e) {
               var n,
                 r,
                 i,
                 a,
                 o = 15,
                 s = 3;
               (r = this),
                 (r.elementtype = "trackscale"),
                 (r.init = function(t, e, o) {
                   (n = o), n.addScale(r), (r.track = n), (i = t), (a = e);
                 }),
                 (r.draw = function() {
                   var e = r.tickclass,
                     o = r.tickstyle,
                     s = n.center,
                     u = t.svg.path.scale(
                       s.x,
                       s.y,
                       r.radius,
                       r.interval,
                       r.total,
                       r.ticksize
                     );
                   i.attr("d", u),
                     e && i.attr("class", e),
                     o && i.attr("style", o),
                     r.showlabels ? r.drawLabel() : a.empty();
                 }),
                 (r.drawLabel = function() {
                   function i(t) {
                     e.scaleclick({ $event: t, $scale: r });
                   }
                   var o,
                     s,
                     u,
                     l = n.center;
                   for (
                     u = t.svg.element.scalelabels(
                       l.x,
                       l.y,
                       r.labelradius,
                       r.interval,
                       r.total
                     ),
                       a.empty(),
                       o = 0;
                     o <= u.length - 1;
                     o += 1
                   )
                     (s = angular.element(t.svg.createNode("text"))),
                       r.labelclass && s.attr("class", r.labelclass),
                       r.labelstyle && s.attr("style", r.labelstyle),
                       s.attr("x", u[o].x),
                       s.attr("y", u[o].y),
                       s.attr("text-anchor", "middle"),
                       s.attr("alignment-baseline", "middle"),
                       s.text(u[o].text),
                       s.on("click", i),
                       a.append(s);
                 }),
                 Object.defineProperty(r, "radius", {
                   get: function() {
                     return (
                       (r.inwardflg ? n.radius : n.radius + n.width) +
                       (r.inwardflg ? -1 : 1) * r.vadjust +
                       (r.inwardflg ? -r.ticksize : 0)
                     );
                   }
                 }),
                 Object.defineProperty(r, "interval", {
                   get: function() {
                     return t.util.Numeric(e.interval);
                   }
                 }),
                 Object.defineProperty(r, "vadjust", {
                   get: function() {
                     return t.util.Numeric(e.vadjust);
                   }
                 }),
                 Object.defineProperty(r, "ticksize", {
                   get: function() {
                     return t.util.Numeric(e.ticksize, s);
                   }
                 }),
                 Object.defineProperty(r, "inwardflg", {
                   get: function() {
                     return "in" === e.direction ? !0 : !1;
                   }
                 }),
                 Object.defineProperty(r, "total", {
                   get: function() {
                     return n.plasmid.sequencelength;
                   }
                 }),
                 Object.defineProperty(r, "showlabels", {
                   get: function() {
                     return "1" === e.showlabels ? !0 : !1;
                   }
                 }),
                 Object.defineProperty(r, "labelvadjust", {
                   get: function() {
                     return t.util.Numeric(e.labelvadjust, o);
                   }
                 }),
                 Object.defineProperty(r, "tickclass", {
                   get: function() {
                     return e.tickclass;
                   }
                 }),
                 Object.defineProperty(r, "tickstyle", {
                   get: function() {
                     return e.tickstyle;
                   }
                 }),
                 Object.defineProperty(r, "labelclass", {
                   get: function() {
                     return e.labelclass;
                   }
                 }),
                 Object.defineProperty(r, "labelstyle", {
                   get: function() {
                     return e.labelstyle;
                   }
                 }),
                 Object.defineProperty(r, "labelradius", {
                   get: function() {
                     return r.radius + r.labelvadjust * (r.inwardflg ? -1 : 1);
                   }
                 });
             }
           ]
         };
       }
     ])
     .directive("tracklabel", [
       "SVGUtil",
       function(t) {
         return {
           restrict: "AE",
           type: "svg",
           template: "<text></text>",
           replace: !0,
           transclude: !0,
           require: ["tracklabel", "^plasmidtrack"],
           scope: {
             text: "@",
             hadjust: "@",
             vadjust: "@",
             labelclass: "@",
             labelstyle: "@",
             labelclick: "&"
           },
           link: {
             pre: function(t, e, n, r) {
               var i = r[0],
                 a = r[1],
                 o = angular.element(e[0]);
               i.init(o, a);
             },
             post: function(t, e, n, r, i) {
               var a;
               i(t.$parent, function(t) {
                 e.append(t);
               }),
                 e.attr("text-anchor", "middle"),
                 e.attr("alignment-baseline", "middle"),
                 e.on("click", function(e) {
                   t.labelclick({ $event: e, $label: a });
                 }),
                 (a = r[0]),
                 t.$watchGroup(
                   ["text", "vadjust", "hadjust", "labelstyle", "labelclass"],
                   function() {
                     a.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             function(e) {
               var n, r, i;
               (r = this),
                 (r.elementtype = "tracklabel"),
                 (r.init = function(t, e) {
                   (n = e), n.addLabel(r), (r.track = n), (i = t);
                 }),
                 (r.draw = function() {
                   var t = n.center,
                     e = r.labelclass,
                     a = r.labelstyle;
                   i.attr("x", t.x + r.hadjust),
                     i.attr("y", t.y + r.vadjust),
                     i.text(r.text),
                     e && i.attr("class", e),
                     a && i.attr("style", a);
                 }),
                 Object.defineProperty(r, "center", {
                   get: function() {
                     return n.center;
                   }
                 }),
                 Object.defineProperty(r, "text", {
                   get: function() {
                     return e.text;
                   }
                 }),
                 Object.defineProperty(r, "labelclass", {
                   get: function() {
                     return e.labelclass;
                   }
                 }),
                 Object.defineProperty(r, "labelstyle", {
                   get: function() {
                     return e.labelstyle;
                   }
                 }),
                 Object.defineProperty(r, "hadjust", {
                   get: function() {
                     return t.util.Numeric(e.hadjust, 0);
                   }
                 }),
                 Object.defineProperty(r, "vadjust", {
                   get: function() {
                     return t.util.Numeric(e.vadjust, 0);
                   }
                 }),
                 Object.defineProperty(r, "dimensions", {
                   get: function() {
                     return i[0].getBBox();
                   }
                 });
             }
           ]
         };
       }
     ])
     .directive("trackmarker", [
       "SVGUtil",
       "$compile",
       function(t, e) {
         return {
           restrict: "AE",
           type: "svg",
           template: "<g><path></path></g>",
           replace: !0,
           transclude: !0,
           require: ["trackmarker", "^plasmidtrack"],
           scope: {
             start: "@",
             end: "@",
             vadjust: "@",
             wadjust: "@",
             markergroup: "@",
             arrowstartlength: "@",
             arrowstartwidth: "@",
             arrowstartangle: "@",
             arrowendlength: "@",
             arrowendwidth: "@",
             arrowendangle: "@",
             markerclass: "@",
             markerstyle: "@",
             markerclick: "&"
           },
           link: {
             pre: function(t, e, n, r) {
               var i = r[0],
                 a = r[1],
                 o = angular.element(e.children()[0]);
               i.init(o, a);
             },
             post: function(n, r, i, a, o) {
               var s,
                 u,
                 l = a[0];
               o(n.$parent, function(t) {
                 r.append(t);
               }),
                 (s = angular.element(r)),
                 (u = angular.element(r.children()[0])),
                 t.util.swapProperties(s, u),
                 e(u)(n.$parent),
                 u.on("click", function(t) {
                   n.markerclick({ $event: t, $marker: l });
                 }),
                 n.$watchGroup(
                   [
                     "start",
                     "end",
                     "vadjust",
                     "wadjust",
                     "markergroup",
                     "markerclass",
                     "markerstyle",
                     "arrowstartlength",
                     "arrowstartwidth",
                     "arrowstartangle",
                     "arrowendlength",
                     "arrowendwidth",
                     "arrowendangle"
                   ],
                   function() {
                     l.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             function(e) {
               var n,
                 r,
                 i,
                 a = [];
               (r = this),
                 (r.elementtype = "trackmarker"),
                 (r.init = function(t, e) {
                   (n = e), n.addMarker(r), (i = t), (r.track = n);
                 }),
                 (r.draw = function() {
                   var t = r.markerclass,
                     e = r.markerstyle;
                   i.attr("d", r.getPath()),
                     t && i.attr("class", t),
                     e && i.attr("style", e),
                     angular.forEach(a, function(t) {
                       t.draw();
                     });
                 }),
                 (r.addMarkerLabel = function(t) {
                   a.push(t);
                 }),
                 (r.getPath = function() {
                   var e = n.center,
                     i = r.angle,
                     a = r.radius;
                   return t.svg.path.arc(
                     e.x,
                     e.y,
                     a.inner,
                     i.start,
                     i.end,
                     r.width,
                     r.arrowstart,
                     r.arrowend
                   );
                 }),
                 (r.getPosition = function(e, i, a, o) {
                   var s,
                     u,
                     l,
                     c,
                     f,
                     d = "start",
                     h = "end",
                     p = "inner",
                     $ = "outer";
                   if (
                     ((s = n.center),
                     (c = r.radius),
                     (f = r.angle),
                     (e = t.util.Numeric(e)),
                     (i = t.util.Numeric(i)),
                     void 0 !== o && void 0 !== a)
                   ) {
                     switch (o) {
                       case p:
                         u = c.inner + i;
                         break;
                       case $:
                         u = c.outer + i;
                         break;
                       default:
                         u = c.middle + i;
                     }
                     switch (a) {
                       case d:
                         l = f.start + e;
                         break;
                       case h:
                         l = f.end + e;
                         break;
                       default:
                         l = f.middle + e;
                     }
                     return t.util.polarToCartesian(s.x, s.y, u, l);
                   }
                   return (
                     (u = {
                       outer: c.outer + i,
                       inner: c.inner + i,
                       middle: c.middle + i
                     }),
                     (l = {
                       begin: f.start + e,
                       end: f.end + e,
                       middle: f.middle + e
                     }),
                     {
                       outer: {
                         begin: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.outer,
                           l.begin
                         ),
                         middle: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.outer,
                           l.middle
                         ),
                         end: t.util.polarToCartesian(s.x, s.y, u.outer, l.end)
                       },
                       middle: {
                         begin: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.middle,
                           l.begin
                         ),
                         middle: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.middle,
                           l.middle
                         ),
                         end: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.middle,
                           l.end
                         )
                       },
                       inner: {
                         begin: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.inner,
                           l.begin
                         ),
                         middle: t.util.polarToCartesian(
                           s.x,
                           s.y,
                           u.inner,
                           l.middle
                         ),
                         end: t.util.polarToCartesian(s.x, s.y, u.inner, l.end)
                       }
                     }
                   );
                 }),
                 (r.fireClick = function(t) {
                   e.markerclick({ $event: t.$event, $marker: t.$marker });
                 }),
                 Object.defineProperty(r, "center", {
                   get: function() {
                     return n.center;
                   }
                 }),
                 Object.defineProperty(r, "radius", {
                   get: function() {
                     return {
                       inner: n.radius + r.vadjust,
                       outer: n.radius + r.vadjust + r.width,
                       middle: n.radius + r.vadjust + r.width / 2
                     };
                   }
                 }),
                 Object.defineProperty(r, "angle", {
                   get: function() {
                     var i, a, o, s;
                     return (
                       (i = (r.start / n.plasmid.sequencelength) * 360),
                       (s = e.end || e.start),
                       (a =
                         (t.util.Numeric(s) / n.plasmid.sequencelength) * 360),
                       (a += i > a ? 360 : 0),
                       (o = i + (a - i) / 2),
                       { start: i, middle: o, end: a }
                     );
                   }
                 }),
                 Object.defineProperty(r, "vadjust", {
                   get: function() {
                     return t.util.Numeric(e.vadjust);
                   }
                 }),
                 Object.defineProperty(r, "wadjust", {
                   get: function() {
                     return t.util.Numeric(e.wadjust);
                   }
                 }),
                 Object.defineProperty(r, "width", {
                   get: function() {
                     return n.width + r.wadjust;
                   }
                 }),
                 Object.defineProperty(r, "start", {
                   get: function() {
                     return t.util.Numeric(e.start);
                   }
                 }),
                 Object.defineProperty(r, "end", {
                   get: function() {
                     return t.util.Numeric(e.end);
                   }
                 }),
                 Object.defineProperty(r, "arrowstart", {
                   get: function() {
                     return {
                       width: t.util.Numeric(e.arrowstartwidth),
                       length: t.util.Numeric(e.arrowstartlength),
                       angle: t.util.Numeric(e.arrowstartangle)
                     };
                   }
                 }),
                 Object.defineProperty(r, "arrowend", {
                   get: function() {
                     return {
                       width: t.util.Numeric(e.arrowendwidth),
                       length: t.util.Numeric(e.arrowendlength),
                       angle: t.util.Numeric(e.arrowendangle)
                     };
                   }
                 }),
                 Object.defineProperty(r, "markergroup", {
                   get: function() {
                     return e.markergroup;
                   }
                 }),
                 Object.defineProperty(r, "markerclass", {
                   get: function() {
                     return e.markerclass;
                   }
                 }),
                 Object.defineProperty(r, "markerstyle", {
                   get: function() {
                     return e.markerstyle;
                   }
                 }),
                 Object.defineProperty(r, "sequence", {
                   get: function() {
                     var t = r.track.plasmid.sequence;
                     return r.start > r.end
                       ? t.substring(r.start - 1, t.length - 1) +
                           t.substring(0, r.end - 1)
                       : t.substring(r.start - 1, r.end - 1);
                   }
                 }),
                 (r.labels = a);
             }
           ]
         };
       }
     ])
     .directive("markerlabel", [
       "SVGUtil",
       "$compile",
       function(t, e) {
         return {
           restrict: "AE",
           type: "svg",
           transclude: !0,
           template:
             '<g><path></path><path id="" style="fill:none;stroke:none"></path><text></text></g>',
           require: ["markerlabel", "^trackmarker"],
           replace: !0,
           scope: {
             text: "@",
             valign: "@",
             vadjust: "@",
             halign: "@",
             hadjust: "@",
             type: "@",
             showline: "@",
             linestyle: "@",
             lineclass: "@",
             labelstyle: "@",
             labelclass: "@",
             linevadjust: "@",
             labelclick: "&"
           },
           link: {
             pre: function(t, e, n, r) {
               var i = r[0],
                 a = r[1],
                 o = angular.element(e[0]),
                 s = angular.element(e.children()[0]),
                 u = angular.element(e.children()[1]),
                 l = angular.element(e.children()[2]);
               i.init(l, o, u, s, a);
             },
             post: function(n, r, i, a, o) {
               o(n.$parent, function(t) {
                 r.append(t);
               });
               var s = a[0],
                 u = a[1],
                 l = angular.element(r),
                 c = angular.element(r.children()[2]);
               c.attr("text-anchor", "middle"),
                 c.attr("alignment-baseline", "middle"),
                 t.util.swapProperties(l, c),
                 e(c)(n.$parent),
                 i.labelclick
                   ? c.on("click", function(t) {
                       n.labelclick({ $event: t, $label: s });
                     })
                   : c.on("click", function(t) {
                       u.fireClick({ $event: t, $marker: u });
                     }),
                 n.$watchGroup(
                   [
                     "text",
                     "type",
                     "valign",
                     "vadjust",
                     "halign",
                     "hadjust",
                     "showline",
                     "linevadjust",
                     "linestyle",
                     "labelclass",
                     "labelstyle"
                   ],
                   function() {
                     s.draw();
                   }
                 );
             }
           },
           controller: [
             "$scope",
             "$compile",
             function(e, n) {
               var r, i, a, o, s, u, l, c;
               (i = this),
                 (i.elementtype = "markerlabel"),
                 (i.init = function(t, e, n, s, u) {
                   var f =
                     "TPATH" +
                     (Math.random() + 1).toString(36).substring(3, 7);
                   (r = u),
                     r.addMarkerLabel(i),
                     (i.marker = r),
                     (a = t),
                     (o = n),
                     (l = s),
                     (c = e),
                     o.attr("id", f);
                 }),
                 (i.draw = function() {
                   var t,
                     c,
                     f,
                     d,
                     h,
                     p = "middle",
                     $ = "inner",
                     m = "outer",
                     g = "start",
                     v = "end",
                     y = 0,
                     b = 0,
                     w = i.labelclass,
                     x = i.labelstyle;
                   if (
                     (w && a.attr("class", w),
                     x && a.attr("style", x),
                     "path" === i.type)
                   )
                     switch (
                       (a.attr("x", ""),
                       a.attr("y", ""),
                       s ||
                         ((u = document.createElementNS(
                           "http://www.w3.org/2000/svg",
                           "textPath"
                         )),
                         u.setAttributeNS(
                           "http://www.w3.org/1999/xlink",
                           "href",
                           "#" + o.attr("id")
                         ),
                         (s = angular.element(u)),
                         n(s)(e),
                         a.empty(),
                         a.append(s)),
                       (u.textContent = i.text),
                       (y = window
                         .getComputedStyle(a[0])
                         .fontSize.replace("px", "")),
                       (b =
                         i.valign === m
                           ? 0
                           : i.valign === $
                             ? Number(y || 0)
                             : Number(y || 0) / 2),
                       o.attr(
                         "d",
                         i.getPath(
                           i.hadjust,
                           i.vadjust - b,
                           i.halign,
                           i.valign
                         )
                       ),
                       i.halign)
                     ) {
                       case g:
                         a.attr("text-anchor", "start"),
                           s[0].setAttribute("startOffset", "0%");
                         break;
                       case v:
                         a.attr("text-anchor", "end"),
                           s[0].setAttribute("startOffset", "100%");
                         break;
                       default:
                         a.attr("text-anchor", "middle"),
                           s[0].setAttribute("startOffset", "50%");
                     }
                   else
                     s && (s.remove(), (s = null)),
                       (t = r.getPosition(
                         i.hadjust,
                         i.vadjust,
                         i.halign,
                         i.valign
                       )),
                       a.attr("x", t.x),
                       a.attr("y", t.y),
                       a.text(i.text);
                   i.showlineflg
                     ? ((c = r.getPosition(
                         i.hadjust,
                         i.vadjust + i.linevadjust,
                         i.halign,
                         i.valign
                       )),
                       (d = r.getPosition()),
                       (h =
                         i.valign === $
                           ? d.inner
                           : i.valign === p
                             ? d.middle
                             : d.outer),
                       (f =
                         i.halign === g
                           ? h.begin
                           : i.halign === v
                             ? h.end
                             : h.middle),
                       l.attr("d", ["M", c.x, c.y, "L", f.x, f.y].join(" ")),
                       i.linestyle ||
                         i.lineclass ||
                         l.attr("style", "stroke:#000"),
                       i.linestyle && l.attr("style", i.linestyle),
                       i.lineclass && l.attr("class", i.lineclass))
                     : l.removeAttr("d");
                 }),
                 (i.getPath = function(e, n, i, a) {
                   var o,
                     s,
                     u,
                     l,
                     c,
                     f = "inner",
                     d = "outer",
                     h = "start",
                     p = "end",
                     $ = r.center;
                   switch (((s = r.radius), a)) {
                     case f:
                       o = s.inner;
                       break;
                     case d:
                       o = s.outer;
                       break;
                     default:
                       o = s.middle;
                   }
                   switch (((u = r.angle), i)) {
                     case h:
                       (l = u.start), (c = u.start + 359.99);
                       break;
                     case p:
                       (l = u.end + 1), (c = u.end);
                       break;
                     default:
                       (l = u.middle + 180.05), (c = u.middle + 179.95);
                   }
                   return t.svg.path.arc(
                     $.x,
                     $.y,
                     o + Number(n || 0),
                     l + Number(e || 0),
                     c + Number(e || 0),
                     1
                   );
                 }),
                 Object.defineProperty(i, "showlineflg", {
                   get: function() {
                     return "1" === e.showline ? !0 : !1;
                   }
                 }),
                 Object.defineProperty(i, "halign", {
                   get: function() {
                     return e.halign || "middle";
                   }
                 }),
                 Object.defineProperty(i, "valign", {
                   get: function() {
                     return e.valign || "middle";
                   }
                 }),
                 Object.defineProperty(i, "hadjust", {
                   get: function() {
                     return t.util.Numeric(e.hadjust);
                   }
                 }),
                 Object.defineProperty(i, "vadjust", {
                   get: function() {
                     return t.util.Numeric(e.vadjust);
                   }
                 }),
                 Object.defineProperty(i, "type", {
                   get: function() {
                     return e.type;
                   }
                 }),
                 Object.defineProperty(i, "linevadjust", {
                   get: function() {
                     return t.util.Numeric(e.linevadjust);
                   }
                 }),
                 Object.defineProperty(i, "labelclass", {
                   get: function() {
                     return e.labelclass;
                   }
                 }),
                 Object.defineProperty(i, "labelstyle", {
                   get: function() {
                     return e.labelstyle;
                   }
                 }),
                 Object.defineProperty(i, "linestyle", {
                   get: function() {
                     return e.linestyle;
                   }
                 }),
                 Object.defineProperty(i, "lineclass", {
                   get: function() {
                     return e.lineclass;
                   }
                 }),
                 Object.defineProperty(i, "text", {
                   get: function() {
                     return e.text;
                   }
                 });
             }
           ]
         };
       }
     ])
     .directive("svgelement", [
       "SVGUtil",
       function() {
         return {
           restrict: "AE",
           template: function(t, e) {
             return "<" + e.type + "></" + e.type + ">";
           },
           type: "svg",
           replace: !0,
           transclude: !0,
           require: ["^plasmid"],
           scope: {},
           link: function(t, e, n, r, i) {
             i(t.$parent, function(t) {
               e.append(t);
             });
           }
         };
       }
     ]);
 })(),
 (function() {
   "use strict";
   angular.element(document).ready(function() {
     angular.bootstrap(document, ["app"]);
   });
})();