4 for (var n in Config.emoji_data) {
5 for (var r = 0; r < Config.emoji_data[n][0].length; r++) e.push(Config.escape_rx(":" + Config.emoji_data[n][3][0]) + ":"), t.push(Config.emoji_data[n][0][0]), Config.map[Config.emoji_data[n][3][0]] = Config.emoji_data[n][0][0], Config.mapcolon[":" + Config.emoji_data[n][3][0] + ":"] = Config.emoji_data[n][0][0], Config.reversemap[Config.emoji_data[n][0][0]] = Config.emoji_data[n][3][0];
6 Config.rx_colons = new RegExp("(" + e.join("|") + ")", "g"), Config.rx_codes = new RegExp("(" + t.join("|") + ")", "g")
10 function cancelEvent(e) {
11 return (e = e || window.event) && ((e = e.originalEvent || e).stopPropagation && e.stopPropagation(), e.preventDefault && e.preventDefault()), !1
15 return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
16 var t = 16 * Math.random() | 0;
17 return ("x" == e ? t : 3 & t | 8).toString(16)
24 $(e.objectMaxDepth) && (Ir.objectMaxDepth = n(e.objectMaxDepth) ? e.objectMaxDepth : NaN)
32 return t = t || Error,
34 var n, r, i = arguments[0],
36 a = "[" + (e ? e + ":" : "") + i + "] ",
37 s = Y(arguments, 2).map(function(e) {
38 return Ee(e, Ir.objectMaxDepth)
40 for (a += o.replace(/\{\d+\}/g, function(e) {
41 var t = +e.slice(1, -1);
42 return t < s.length ? s[t] : e
43 }), a += "\nhttp://errors.angularjs.org/1.6.6/" + (e ? e + "/" : "") + i, r = 0, n = "?"; r < s.length; r++, n = "&") a += n + "p" + r + "=" + encodeURIComponent(s[r]);
49 if (null == e || S(e)) return !1;
50 if (Jr(e) || E(e) || qr && e instanceof qr) return !0;
51 var t = "length" in Object(e) && e.length;
52 return C(t) && (t >= 0 && (t - 1 in e || e instanceof Array) || "function" == typeof e.item)
59 for (r in e) "prototype" !== r && "length" !== r && "name" !== r && e.hasOwnProperty(r) && t.call(n, e[r], r, e);
60 else if (Jr(e) || i(e)) {
61 var s = "object" != typeof e;
62 for (r = 0, a = e.length; r < a; r++)(s || r in e) && t.call(n, e[r], r, e)
63 } else if (e.forEach && e.forEach !== o) e.forEach(t, n, e);
65 for (r in e) t.call(n, e[r], r, e);
66 else if ("function" == typeof e.hasOwnProperty)
67 for (r in e) e.hasOwnProperty(r) && t.call(n, e[r], r, e);
69 for (r in e) Hr.call(e, r) && t.call(n, e[r], r, e);
74 for (var r = Object.keys(e).sort(), i = 0; i < r.length; i++) t.call(n, e[r[i]], r[i]);
79 return function(t, n) {
89 t ? e.$$hashKey = t : delete e.$$hashKey
93 for (var r = e.$$hashKey, i = 0, o = t.length; i < o; ++i) {
96 for (var s = Object.keys(a), c = 0, d = s.length; c < d; c++) {
99 n && _(h) ? x(h) ? e[f] = new Date(h.valueOf()) : M(h) ? e[f] = new RegExp(h) : h.nodeName ? e[f] = h.cloneNode(!0) : j(h) ? e[f] = h.clone() : (_(e[f]) || (e[f] = Jr(h) ? [] : {}), u(e[f], [h], !0)) : e[f] = h
106 return u(e, Br.call(arguments, 1), !1)
110 return u(e, Br.call(arguments, 1), !0)
114 return parseInt(e, 10)
118 return d(Object.create(e), t)
134 return T(e.toString) && e.toString !== Yr
146 return null !== e && "object" == typeof e
150 return null !== e && "object" == typeof e && !Gr(e)
154 return "string" == typeof e
158 return "number" == typeof e
162 return "[object Date]" === Yr.call(e)
166 switch (Yr.call(e)) {
167 case "[object Error]":
168 case "[object Exception]":
169 case "[object DOMException]":
172 return e instanceof Error
177 return "function" == typeof e
181 return "[object RegExp]" === Yr.call(e)
185 return e && e.window === e
189 return e && e.$evalAsync && e.$watch
193 return "[object File]" === Yr.call(e)
197 return "[object FormData]" === Yr.call(e)
201 return "[object Blob]" === Yr.call(e)
205 return "boolean" == typeof e
209 return e && T(e.then)
213 return e && C(e.length) && ei.test(Yr.call(e))
217 return "[object ArrayBuffer]" === Yr.call(e)
221 return !(!e || !(e.nodeName || e.prop && e.attr && e.find))
227 for (t = 0; t < r.length; t++) n[r[t]] = !0;
232 return jr(e.nodeName || e[0] && e[0].nodeName)
236 return -1 !== Array.prototype.indexOf.call(e, t)
240 var n = e.indexOf(t);
241 return n >= 0 && e.splice(n, 1), n
244 function V(e, t, r) {
245 function i(e, t, n) {
246 if (--n < 0) return "...";
247 var r, i = t.$$hashKey;
249 for (var o = 0, s = e.length; o < s; o++) t.push(a(e[o], n));
251 for (r in e) t[r] = a(e[r], n);
252 else if (e && "function" == typeof e.hasOwnProperty)
253 for (r in e) e.hasOwnProperty(r) && (t[r] = a(e[r], n));
255 for (r in e) Hr.call(e, r) && (t[r] = a(e[r], n));
261 var n = c.indexOf(e);
262 if (-1 !== n) return u[n];
263 if (S(e) || A(e)) throw Kr("cpws", "Can't copy! Making copies of Window or Scope instances is not supported.");
266 return void 0 === o && (o = Jr(e) ? [] : Object.create(Gr(e)), r = !0), c.push(e), u.push(o), r ? i(e, o, t) : o
270 switch (Yr.call(e)) {
271 case "[object Int8Array]":
272 case "[object Int16Array]":
273 case "[object Int32Array]":
274 case "[object Float32Array]":
275 case "[object Float64Array]":
276 case "[object Uint8Array]":
277 case "[object Uint8ClampedArray]":
278 case "[object Uint16Array]":
279 case "[object Uint32Array]":
280 return new e.constructor(a(e.buffer), e.byteOffset, e.length);
281 case "[object ArrayBuffer]":
283 var t = new ArrayBuffer(e.byteLength);
284 return new Uint8Array(t).set(new Uint8Array(e)), t
287 case "[object Boolean]":
288 case "[object Number]":
289 case "[object String]":
290 case "[object Date]":
291 return new e.constructor(e.valueOf());
292 case "[object RegExp]":
293 var n = new RegExp(e.source, e.toString().match(/[^/]*$/)[0]);
294 return n.lastIndex = e.lastIndex, n;
295 case "[object Blob]":
296 return new e.constructor([e], {
300 if (T(e.cloneNode)) return e.cloneNode(!0)
304 if (r = n(r) ? r : NaN, t) {
305 if (P(t) || H(t)) throw Kr("cpta", "Can't copy! TypedArray destination cannot be mutated.");
306 if (e === t) throw Kr("cpi", "Can't copy! Source and destination are identical.");
307 return Jr(t) ? t.length = 0 : o(t, function(e, n) {
308 "$$hashKey" !== n && delete t[n]
309 }), c.push(e), u.push(t), i(e, t, r)
315 return e === t || e !== e && t !== t
319 if (e === t) return !0;
320 if (null === e || null === t) return !1;
321 if (e !== e && t !== t) return !0;
322 var n, r, i, o = typeof e;
323 if (o === typeof t && "object" === o) {
325 if (x(e)) return !!x(t) && B(e.getTime(), t.getTime());
326 if (M(e)) return !!M(t) && e.toString() === t.toString();
327 if (A(e) || A(t) || S(e) || S(t) || Jr(t) || x(t) || M(t)) return !1;
330 if ("$" !== r.charAt(0) && !T(e[r])) {
331 if (!z(e[r], t[r])) return !1;
335 if (!(r in i) && "$" !== r.charAt(0) && $(t[r]) && !T(t[r])) return !1;
338 if (!Jr(t)) return !1;
339 if ((n = e.length) === t.length) {
340 for (r = 0; r < n; r++)
341 if (!z(e[r], t[r])) return !1;
348 function W(e, t, n) {
349 return e.concat(Br.call(t, n))
353 return Br.call(e, t || 0)
357 var n = arguments.length > 2 ? Y(arguments, 2) : [];
358 return !T(t) || t instanceof RegExp ? t : n.length ? function() {
359 return arguments.length ? t.apply(e, W(n, arguments, 0)) : t.apply(e, n)
361 return arguments.length ? t.apply(e, arguments) : t.call(e)
367 return "string" == typeof t && "$" === t.charAt(0) && "$" === t.charAt(1) ? r = void 0 : S(n) ? r = "$WINDOW" : n && e.document === n ? r = "$DOCUMENT" : A(n) && (r = "$SCOPE"), r
371 if (!y(e)) return C(t) || (t = t ? 2 : null), JSON.stringify(e, K, t)
375 return E(e) ? JSON.parse(e) : e
379 e = e.replace(oi, "");
380 var n = Date.parse("Jan 01, 1970 00:00:00 " + e) / 6e4;
385 return (e = new Date(e.getTime())).setMinutes(e.getMinutes() + t), e
388 function ee(e, t, n) {
390 var r = e.getTimezoneOffset();
391 return J(e, n * (Q(t, r) - r))
395 e = qr(e).clone().empty();
396 var t = qr("<div>").append(e).html();
398 return e[0].nodeType === di ? jr(t) : t.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/, function(e, t) {
408 return decodeURIComponent(e)
414 return o((e || "").split("&"), function(e) {
416 e && (r = e = e.replace(/\+/g, "%20"), -1 !== (n = e.indexOf("=")) && (r = e.substring(0, n), i = e.substring(n + 1)), $(r = ne(r)) && (i = !$(i) || ne(i), Hr.call(t, r) ? Jr(t[r]) ? t[r].push(i) : t[r] = [t[r], i] : t[r] = i))
422 return o(e, function(e, n) {
423 Jr(e) ? o(e, function(e) {
424 t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
425 }) : t.push(ae(n, !0) + (!0 === e ? "" : "=" + ae(e, !0)))
426 }), t.length ? t.join("&") : ""
430 return ae(e, !0).replace(/%26/gi, "&").replace(/%3D/gi, "=").replace(/%2B/gi, "+")
434 return encodeURIComponent(e).replace(/%40/gi, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%3B/gi, ";").replace(/%20/g, t ? "%20" : "+")
438 var n, r, i = ai.length;
439 for (r = 0; r < i; ++r)
440 if (n = ai[r] + t, E(n = e.getAttribute(n))) return n;
446 if (o(ai, function(e) {
448 !r && t.hasAttribute && t.hasAttribute(n) && (r = t, i = t.getAttribute(n))
449 }), o(ai, function(e) {
450 var n, o = e + "app";
451 !r && (n = t.querySelector("[" + o.replace(":", "\\:") + "]")) && (r = n, i = n.getAttribute(o))
453 if (!si) return void e.console.error("Angular: disabling automatic bootstrap. <script> protocol indicates an extension, document.location.href does not match.");
454 a.strictDi = null !== se(r, "strict-di"), n(r, i ? [i] : [], a)
458 function le(t, n, r) {
459 _(r) || (r = {}), r = d({
463 if ((t = qr(t)).injector()) {
464 var i = t[0] === e.document ? "document" : te(t);
465 throw Kr("btstrpd", "App already bootstrapped with this element '{0}'", i.replace(/</, "<").replace(/>/, ">"))
466 }(n = n || []).unshift(["$provide", function(e) {
467 e.value("$rootElement", t)
468 }]), r.debugInfoEnabled && n.push(["$compileProvider", function(e) {
469 e.debugInfoEnabled(!0)
470 }]), n.unshift("ng");
471 var o = st(n, r.strictDi);
472 return o.invoke(["$rootScope", "$rootElement", "$compile", "$injector", function(e, t, n, r) {
473 e.$apply(function() {
474 t.data("$injector", r), n(t)(e)
478 a = /^NG_ENABLE_DEBUG_INFO!/,
479 s = /^NG_DEFER_BOOTSTRAP!/;
480 if (e && a.test(e.name) && (r.debugInfoEnabled = !0, e.name = e.name.replace(a, "")), e && !s.test(e.name)) return i();
481 e.name = e.name.replace(s, ""), Zr.resumeBootstrap = function(e) {
482 return o(e, function(e) {
485 }, T(Zr.resumeDeferredBootstrap) && Zr.resumeDeferredBootstrap()
489 e.name = "NG_ENABLE_DEBUG_INFO!" + e.name, e.location.reload()
493 var t = Zr.element(e).injector();
494 if (!t) throw Kr("test", "no injector found for element argument to getTestability");
495 return t.get("$$testability")
499 return t = t || "_", e.replace(ci, function(e, n) {
500 return (n ? t : "") + e.toLowerCase()
504 function he(e, t, n) {
505 if (!e) throw Kr("areq", "Argument '{0}' is {1}", t || "?", n || "required");
509 function pe(e, t, n) {
510 return n && Jr(e) && (e = e[e.length - 1]), he(T(e), t, "not a function, got " + (e && "object" == typeof e ? e.constructor.name || "Object" : typeof e)), e
514 if ("hasOwnProperty" === e) throw Kr("badname", "hasOwnProperty is not a valid {0} name", t)
517 function ge(e, t, n) {
519 for (var r, i = t.split("."), o = e, a = i.length, s = 0; s < a; s++) r = i[s], e && (e = (o = e)[r]);
520 return !n && T(e) ? G(o, e) : e
524 for (var t, n = e[0], r = e[e.length - 1], i = 1; n !== r && (n = n.nextSibling); i++)(t || e[i] !== n) && (t || (t = qr(Br.call(e, 0, i))), t.push(n));
529 return Object.create(null)
533 if (null == e) return "";
541 e = !b(e) || Jr(e) || x(e) ? Z(e) : e.toString()
547 function t(e, t, n) {
548 return e[t] || (e[t] = n())
550 var n = r("$injector"),
552 o = t(e, "angular", Object);
553 return o.$$minErr = o.$$minErr || r, t(o, "module", function() {
555 return function(r, o, a) {
557 return function(e, t) {
558 if ("hasOwnProperty" === e) throw i("badname", "hasOwnProperty is not a valid {0} name", t)
559 }(r, "module"), o && e.hasOwnProperty(r) && (e[r] = null), t(e, r, function() {
560 function e(e, t, n, r) {
563 return r[n || "push"]([e, t, arguments]), f
567 function t(e, t, n) {
570 return o && T(o) && (o.$$moduleName = r), n.push([e, t, arguments]), f
573 if (!o) throw n("nomod", "Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.", r);
577 d = e("$injector", "invoke", "push", l),
584 if (!_(e)) throw i("aobj", "Argument '{0}' must be an object", "value");
591 provider: t("$provide", "provider"),
592 factory: t("$provide", "factory"),
593 service: t("$provide", "service"),
594 value: e("$provide", "value"),
595 constant: e("$provide", "constant", "unshift"),
596 decorator: t("$provide", "decorator", l),
597 animation: t("$animateProvider", "register"),
598 filter: t("$filterProvider", "register"),
599 controller: t("$controllerProvider", "register"),
600 directive: t("$compileProvider", "directive"),
601 component: t("$compileProvider", "component"),
604 return u.push(e), this
616 for (var n = 0, r = e.length; n < r; n++) t[n] = e[n]
619 for (var i in e) "$" === i.charAt(0) && "$" === i.charAt(1) || (t[i] = e[i])
626 return n(t) && (e = Zr.copy(e, null, t)), JSON.stringify(e, function(e, t) {
627 if (t = K(e, t), _(t)) {
628 if (r.indexOf(t) >= 0) return "...";
636 return "function" == typeof e ? e.toString().replace(/ \{[\s\S]*$/, "") : y(e) ? "undefined" : "string" != typeof e ? we(e, t) : e
644 return Te(e.replace(yi, "ms-"))
648 return t.toUpperCase()
652 return e.replace(bi, ke)
661 return t === ui || !t || t === hi
665 var n, r, i, a, s = t.createDocumentFragment(),
667 if (Me(e)) c.push(t.createTextNode(e));
669 for (n = s.appendChild(t.createElement("div")), r = (Ci.exec(e) || ["", ""])[1].toLowerCase(), i = ki[r] || ki._default, n.innerHTML = i[1] + e.replace(xi, "<$1></$2>") + i[2], a = i[0]; a--;) n = n.lastChild;
670 c = W(c, n.childNodes), (n = s.firstChild).textContent = ""
672 return s.textContent = "", s.innerHTML = "", o(c, function(e) {
680 return (r = wi.exec(t)) ? [n.createElement(r[1])] : (r = Ae(t, n)) ? r.childNodes : []
684 var n = e.parentNode;
685 n && n.replaceChild(t, e), t.appendChild(e)
689 if (e instanceof Ne) return e;
691 if (E(e) && (e = ti(e), t = !0), !(this instanceof Ne)) {
692 if (t && "<" !== e.charAt(0)) throw _i("nosel", "Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");
695 t ? Ve(this, Oe(e)) : T(e) ? Ke(e) : Ve(this, e)
699 return e.cloneNode(!0)
703 !t && Se(e) && qr.cleanData([e]), e.querySelectorAll && qr.cleanData(e.querySelectorAll("*"))
706 function Pe(e, t, n, r) {
707 if ($(r)) throw _i("offargs", "jqLite#off() does not support the `selector` argument");
713 var c = function(t) {
715 $(n) && U(r || [], n), $(n) && r && r.length > 0 || (e.removeEventListener(t, s), delete a[t])
717 o(t.split(" "), function(e) {
718 c(e), $i[e] && c($i[e])
721 for (t in a) "$destroy" !== t && e.removeEventListener(t, s), delete a[t]
728 if (t) return void delete r.data[t];
729 r.handle && (r.events.$destroy && r.handle({}, "$destroy"), Pe(e)), delete gi[n], e.ng339 = void 0
736 return t && !r && (e.ng339 = n = Ce(), r = gi[n] = {
743 function Le(e, t, n) {
746 o = !i && t && !_(t),
753 if (o) return c && c[Te(t)];
754 for (r in t) c[Te(r)] = t[r]
760 return !!e.getAttribute && (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").indexOf(" " + t + " ") > -1
764 t && e.setAttribute && o(t.split(" "), function(t) {
765 e.setAttribute("class", ti((" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ").replace(" " + ti(t) + " ", " ")))
770 if (t && e.setAttribute) {
771 var n = (" " + (e.getAttribute("class") || "") + " ").replace(/[\n\t]/g, " ");
772 o(t.split(" "), function(e) {
773 e = ti(e), -1 === n.indexOf(" " + e + " ") && (n += e + " ")
774 }), e.setAttribute("class", ti(n))
780 if (t.nodeType) e[e.length++] = t;
783 if ("number" == typeof n && t.window !== t) {
785 for (var r = 0; r < n; r++) e[e.length++] = t[r]
786 } else e[e.length++] = t
791 return ze(e, "$" + (t || "ngController") + "Controller")
794 function ze(e, t, n) {
795 e.nodeType === hi && (e = e.documentElement);
796 for (var r = Jr(t) ? t : [t]; e;) {
797 for (var i = 0, o = r.length; i < o; i++)
798 if ($(n = qr.data(e, r[i]))) return n;
799 e = e.parentNode || e.nodeType === pi && e.host
804 for (Re(e, !0); e.firstChild;) e.removeChild(e.firstChild)
809 var n = e.parentNode;
810 n && n.removeChild(e)
814 "complete" === (n = n || e).document.readyState ? n.setTimeout(t) : qr(n).on("load", t)
819 e.document.removeEventListener("DOMContentLoaded", n), e.removeEventListener("load", n), t()
821 "complete" === e.document.readyState ? e.setTimeout(t) : (e.document.addEventListener("DOMContentLoaded", n), e.addEventListener("load", n))
825 var n = Si[t.toLowerCase()];
826 return n && Ai[F(e)] && n
834 var n = function(n, r) {
835 n.isDefaultPrevented = function() {
836 return n.defaultPrevented
838 var i = t[r || n.type],
839 o = i ? i.length : 0;
841 if (y(n.immediatePropagationStopped)) {
842 var a = n.stopImmediatePropagation;
843 n.stopImmediatePropagation = function() {
844 n.immediatePropagationStopped = !0, n.stopPropagation && n.stopPropagation(), a && a.call(n)
847 n.isImmediatePropagationStopped = function() {
848 return !0 === n.immediatePropagationStopped
850 var s = i.specialHandlerWrapper || Je;
851 o > 1 && (i = _e(i));
852 for (var c = 0; c < o; c++) n.isImmediatePropagationStopped() || s(e, n, i[c])
858 function Je(e, t, n) {
862 function et(e, t, n) {
863 var r = t.relatedTarget;
864 r && (r === e || Ti.call(e, r)) || n.call(e, t)
868 this.$get = function() {
870 hasClass: function(e, t) {
871 return e.attr && (e = e[0]), Fe(e, t)
873 addClass: function(e, t) {
874 return e.attr && (e = e[0]), Ue(e, t)
876 removeClass: function(e, t) {
877 return e.attr && (e = e[0]), qe(e, t)
884 var n = e && e.$$hashKey;
885 if (n) return "function" == typeof n && (n = e.$$hashKey()), n;
887 return n = "function" === r || "object" === r && null !== e ? e.$$hashKey = r + ":" + (t || c)() : r + ":" + e
891 this._keys = [], this._values = [], this._lastKey = NaN, this._lastIndex = -1
895 return Function.prototype.toString.call(e)
899 var t = it(e).replace(Li, "");
900 return t.match(Ri) || t.match(Pi)
905 return t ? "function(" + (t[1] || "").replace(/[\s\r\n]+/, " ") + ")" : "fn"
910 return function(t, n) {
911 if (!_(t)) return e(t, n);
917 if (me(e, "service"), (T(t) || Jr(t)) && (t = m.instantiate(t)), !t.$get) throw Fi("pget", "Provider '{0}' must define $get factory method.", e);
923 var n = $.invoke(t, this);
924 if (y(n)) throw Fi("undef", "Provider '{0}' must return a value from $get factory method.", e);
929 function a(e, t, n) {
931 $get: !1 !== n ? i(e, t) : t
936 he(y(e) || Jr(e), "modulesToLoad", "not an array");
938 return o(e, function(e) {
941 for (t = 0, n = e.length; t < n; t++) {
944 i[r[1]].apply(i, r[2])
950 E(e) ? (t = Vr(e), $.modules[e] = t, n = n.concat(c(t.requires)).concat(t._runBlocks), r(t._invokeQueue), r(t._configBlocks)) : T(e) ? n.push(m.invoke(e)) : Jr(e) ? n.push(m.invoke(e)) : pe(e, "module")
952 throw Jr(e) && (e = e[e.length - 1]), t.message && t.stack && -1 === t.stack.indexOf(t.message) && (t = t.message + "\n" + t.stack), Fi("modulerr", "Failed to instantiate module {0} due to:\n{1}", e, t.stack || t.message || t)
960 if (e.hasOwnProperty(t)) {
961 if (e[t] === u) throw Fi("cdep", "Circular dependency found: {0}", t + " <- " + f.join(" <- "));
965 return f.unshift(t), e[t] = u, e[t] = n(t, r), e[t]
967 throw e[t] === u && delete e[t], n
973 function i(e, n, i) {
974 for (var o = [], a = st.$$annotate(e, t, i), s = 0, c = a.length; s < c; s++) {
976 if ("string" != typeof l) throw Fi("itkn", "Incorrect injection token! Expected service name as string, got {0}", l);
977 o.push(n && n.hasOwnProperty(l) ? n[l] : r(l, i))
983 if (Fr || "function" != typeof e) return !1;
984 var t = e.$$ngIsClass;
985 return I(t) || (t = e.$$ngIsClass = /^(?:class\b|constructor\()/.test(it(e))), t
988 invoke: function(e, t, n, r) {
989 "string" == typeof n && (r = n, n = null);
991 return Jr(e) && (e = e[e.length - 1]), o(e) ? (a.unshift(null), new(Function.prototype.bind.apply(e, a))) : e.apply(t, a)
993 instantiate: function(e, t, n) {
994 var r = Jr(e) ? e[e.length - 1] : e,
996 return o.unshift(null), new(Function.prototype.bind.apply(r, o))
999 annotate: st.$$annotate,
1001 return p.hasOwnProperty(t + d) || e.hasOwnProperty(t)
1014 service: n(function(e, t) {
1015 return a(e, ["$injector", function(e) {
1016 return e.instantiate(t)
1019 value: n(function(e, t) {
1020 return a(e, v(t), !1)
1022 constant: n(function(e, t) {
1023 me(e, "constant"), p[e] = t, g[e] = t
1025 decorator: function(e, t) {
1026 var n = m.get(e + d),
1028 n.$get = function() {
1029 var e = $.invoke(r, n);
1030 return $.invoke(t, null, {
1037 m = p.$injector = l(p, function(e, t) {
1038 throw Zr.isString(t) && f.push(t), Fi("unpr", "Unknown provider: {0}", f.join(" <- "))
1041 b = l(g, function(e, t) {
1042 var n = m.get(e + d, t);
1043 return $.invoke(n.$get, n, void 0, e)
1046 p["$injector" + d] = {
1048 }, $.modules = m.modules = be();
1050 return $ = b.get("$injector"), $.strictDi = t, o(w, function(e) {
1057 this.disableAutoScrolling = function() {
1059 }, this.$get = ["$window", "$location", "$rootScope", function(t, n, r) {
1062 return Array.prototype.some.call(e, function(e) {
1063 if ("a" === F(e)) return t = e, !0
1072 e = "fixed" !== t.getComputedStyle(n).position ? 0 : n.getBoundingClientRect().bottom
1073 } else C(e) || (e = 0);
1082 var r = e.getBoundingClientRect().top;
1083 t.scrollBy(0, r - n)
1085 } else t.scrollTo(0, 0)
1090 (e = E(e) ? e : C(e) ? e.toString() : n.hash()) ? (t = c.getElementById(e)) ? a(t): (t = i(c.getElementsByName(e))) ? a(t) : "top" === e && a(null): a(null)
1093 return e && r.$watch(function() {
1096 e === t && "" === e || Ge(function() {
1104 return e || t ? e ? t ? (Jr(e) && (e = e.join(" ")), Jr(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
1108 for (var t = 0; t < e.length; t++) {
1110 if (n.nodeType === Ui) return n
1115 E(e) && (e = e.split(" "));
1117 return o(e, function(e) {
1118 e.length && (t[e] = !0)
1123 return _(e) ? e : {}
1126 function ht(e, t, n, r) {
1129 e.apply(null, Y(arguments, 1))
1132 for (; b.length;) try {
1141 var t = e.indexOf("#");
1142 return -1 === t ? "" : e.substr(t)
1150 $ = x(), z($ = y($) ? null : $, M) && ($ = M), M = $, _ = $
1155 c(), w === u.url() && e === $ || (w = u.url(), _ = $, o(k, function(e) {
1168 u.$$completeOutstandingRequest = i, u.$$incOutstandingRequestCount = function() {
1170 }, u.notifyWhenNoOutstandingRequests = function(e) {
1171 0 === v ? e() : b.push(e)
1173 var $, _, w = d.href,
1176 x = r.history ? function() {
1181 c(), u.url = function(t, n, i) {
1182 if (y(i) && (i = null), d !== e.location && (d = e.location), f !== e.history && (f = e.history), t) {
1184 if (w === t && (!r.history || o)) return u;
1185 var s = w && Yt(w) === Yt(t);
1186 return w = t, _ = i, !r.history || s && o ? (s || (C = t), n ? d.replace(t) : s ? d.hash = a(t) : d.href = t, d.href !== t && (C = t)) : (f[n ? "replaceState" : "pushState"](i, "", t), c()), C && (C = t), u
1188 return C || d.href.replace(/%27/g, "'")
1189 }, u.state = function() {
1195 u.onUrlChange = function(t) {
1196 return T || (r.history && qr(e).on("popstate", s), qr(e).on("hashchange", s), T = !0), k.push(t), t
1197 }, u.$$applicationDestroyed = function() {
1198 qr(e).off("hashchange popstate", s)
1199 }, u.$$checkUrlChange = l, u.baseHref = function() {
1200 var e = E.attr("href");
1201 return e ? e.replace(/^(https?:)?\/\/[^/]*/, "") : ""
1202 }, u.defer = function(e, t) {
1204 return v++, n = h(function() {
1206 }, t || 0), g[n] = !0, n
1207 }, u.defer.cancel = function(e) {
1208 return !!g[e] && (delete g[e], p(e), i(m), !0)
1213 this.$get = ["$window", "$log", "$sniffer", "$document", function(e, t, n, r) {
1214 return new ht(e, r, t, n)
1219 this.$get = function() {
1222 e !== f && (h ? h === e && (h = e.n) : h = e, o(e.n, e.p), o(e, f), (f = e).n = null)
1226 e !== t && (e && (e.p = t), t && (t.n = e))
1228 if (e in t) throw r("$cacheFactory")("iid", "CacheId '{0}' is already taken!", e);
1234 l = n && n.capacity || Number.MAX_VALUE,
1239 put: function(e, t) {
1240 if (!y(t)) return l < Number.MAX_VALUE && i(u[e] || (u[e] = {
1242 })), e in c || a++, c[e] = t, a > l && this.remove(h.key), t
1245 if (l < Number.MAX_VALUE) {
1252 remove: function(e) {
1253 if (l < Number.MAX_VALUE) {
1256 t === f && (f = t.p), t === h && (h = t.n), o(t.n, t.p), delete u[e]
1258 e in c && (delete c[e], a--)
1260 removeAll: function() {
1261 c = be(), a = 0, u = be(), f = h = null
1263 destroy: function() {
1264 c = null, s = null, u = null, delete t[e]
1274 return e.info = function() {
1276 return o(t, function(t, n) {
1279 }, e.get = function(e) {
1286 this.$get = ["$cacheFactory", function(e) {
1287 return e("templates")
1292 function r(e, t, n) {
1293 var r = /^\s*([@&<]|=(\*?))(\??)\s*([\w$]*)\s*$/,
1295 return o(e, function(e, o) {
1296 if (e in M) i[o] = M[e];
1299 if (!a) throw Ki("iscp", "Invalid {3} for directive '{0}'. Definition: {... {1}: '{2}' ...}", t, o, e, n ? "controller bindings definition" : "isolate scope definition");
1302 collection: "*" === a[2],
1303 optional: "?" === a[3],
1305 }, a[4] && (M[e] = i[o])
1313 bindToController: null
1315 if (_(e.scope) && (!0 === e.bindToController ? (n.bindToController = r(e.scope, t, !0), n.isolateScope = {}) : n.isolateScope = r(e.scope, t, !1)), _(e.bindToController) && (n.bindToController = r(e.bindToController, t, !0)), n.bindToController && !e.controller) throw Ki("noctrl", "Cannot bind to controller without directive '{0}'s controller.", t);
1320 var t = e.charAt(0);
1321 if (!t || t !== jr(t)) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", e);
1322 if (e !== e.trim()) throw Ki("baddir", "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", e)
1326 var t = e.require || e.controller && e.name;
1327 return !Jr(t) && _(t) && o(t, function(e, n) {
1329 e.substring(r[0].length) || (t[n] = r[0] + n)
1334 if (e && (!E(e) || !/[EACM]/.test(e))) throw Ki("badrestrict", "Restrict property '{0}' of directive '{1}' is invalid", e, t);
1339 h = /^\s*directive:\s*([\w-]+)\s+(.*)$/,
1340 b = /(([\w-]+)(?::([^;]+))?;?)/,
1341 w = L("ngSrc,ngSrcset,src,srcset"),
1342 C = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/,
1343 x = /^(on[a-z]+|formaction)$/,
1345 this.directive = function e(n, r) {
1346 return he(n, "name"), me(n, "directive"), E(n) ? (a(n), he(r, "directiveFactory"), u.hasOwnProperty(n) || (u[n] = [], t.factory(n + f, ["$injector", "$exceptionHandler", function(e, t) {
1348 return o(u[n], function(i, o) {
1350 var a = e.invoke(i);
1353 } : !a.compile && a.link && (a.compile = v(a.link)), a.priority = a.priority || 0, a.index = o, a.name = a.name || n, a.require = c(a), a.restrict = l(a.restrict, n), a.$$moduleName = i.$$moduleName, r.push(a)
1358 }])), u[n].push(r)) : o(n, s(e)), this
1359 }, this.component = function e(t, n) {
1362 return T(t) || Jr(t) ? function(n, r) {
1363 return e.invoke(t, this, {
1369 var r = n.template || n.templateUrl ? n.template : "",
1372 controllerAs: wt(n.controller) || n.controllerAs || "$ctrl",
1374 templateUrl: t(n.templateUrl),
1375 transclude: n.transclude,
1377 bindToController: n.bindings || {},
1381 return o(n, function(e, t) {
1382 "$" === t.charAt(0) && (a[t] = e)
1385 if (!E(t)) return o(t, s(G(this, e))), this;
1386 var i = n.controller || function() {};
1387 return o(n, function(e, t) {
1388 "$" === t.charAt(0) && (r[t] = e, T(i) && (i[t] = e))
1389 }), r.$inject = ["$injector"], this.directive(t, r)
1390 }, this.aHrefSanitizationWhitelist = function(e) {
1391 return $(e) ? (n.aHrefSanitizationWhitelist(e), this) : n.aHrefSanitizationWhitelist()
1392 }, this.imgSrcSanitizationWhitelist = function(e) {
1393 return $(e) ? (n.imgSrcSanitizationWhitelist(e), this) : n.imgSrcSanitizationWhitelist()
1396 this.debugInfoEnabled = function(e) {
1397 return $(e) ? (S = e, this) : S
1400 this.preAssignBindingsEnabled = function(e) {
1401 return $(e) ? (O = e, this) : O
1404 this.strictComponentBindingsEnabled = function(e) {
1405 return $(e) ? (D = e, this) : D
1408 this.onChangesTtl = function(e) {
1409 return arguments.length ? (N = e, this) : N
1412 this.commentDirectivesEnabled = function(e) {
1413 return arguments.length ? (R = e, this) : R
1416 this.cssClassDirectivesEnabled = function(e) {
1417 return arguments.length ? (P = e, this) : P
1418 }, this.$get = ["$injector", "$interpolate", "$exceptionHandler", "$templateRequest", "$parse", "$controller", "$rootScope", "$sce", "$animate", "$$sanitizeUri", function(t, n, r, a, s, c, l, v, M, H) {
1421 if (!--Ne) throw Te = void 0, Ki("infchng", "{0} $onChanges() iterations reached. Aborting!\n", N);
1422 l.$apply(function() {
1423 for (var e = [], t = 0, n = Te.length; t < n; ++t) try {
1428 if (Te = void 0, e.length) throw e
1437 var n, r, i, o = Object.keys(t);
1438 for (n = 0, r = o.length; n < r; n++) this[i = o[n]] = t[i]
1439 } else this.$attr = {};
1443 function q(e, t, n) {
1444 Ae.innerHTML = "<span " + t + ">";
1445 var r = Ae.firstChild.attributes,
1447 r.removeNamedItem(i.name), i.value = n, e.attributes.setNamedItem(i)
1456 function W(e, t, n, r, i) {
1457 e instanceof qr || (e = qr(e));
1458 var o = Z(e, t, e, n, r, i);
1459 W.$$addScopeClass(e);
1461 return function(t, n, r) {
1462 if (!e) throw Ki("multilink", "This element has already been linked.");
1463 he(t, "scope"), i && i.needsNewScope && (t = t.$parent.$new());
1464 var s = (r = r || {}).parentBoundTranscludeFn,
1465 c = r.transcludeControllers,
1466 l = r.futureParentElement;
1467 s && s.$$boundTransclude && (s = s.$$boundTransclude), a || (a = K(l));
1469 if (u = "html" !== a ? qr(ye(a, qr("<div>").append(e).html())) : n ? Mi.clone.call(e) : e, c)
1470 for (var d in c) u.data("$" + d + "Controller", c[d].instance);
1471 return W.$$addScopeInfo(u, t), n && n(u, t), o && o(t, u, u, s), n || (e = o = null), u
1477 return t && "foreignobject" !== F(t) && Yr.call(t).match(/SVG/) ? "svg" : "html"
1480 function Z(e, t, n, r, i, o) {
1481 for (var a, s, c, l, u, d, f, h = [], p = Jr(e) || e instanceof qr, m = 0; m < e.length; m++) a = new L, 11 === Fr && X(e, m, p), (c = (s = J(e[m], [], a, 0 === m ? r : void 0, i)).length ? oe(s, e[m], a, t, n, null, [], [], o) : null) && c.scope && W.$$addScopeClass(a.$$element), u = c && c.terminal || !(l = e[m].childNodes) || !l.length ? null : Z(l, c ? (c.transcludeOnThisElement || !c.templateOnThisElement) && c.transclude : t), (c || u) && (h.push(m, c, u), d = !0, f = f || c), o = null;
1482 return d ? function(e, n, r, i) {
1483 var o, a, s, c, l, u, d, p;
1486 for (p = new Array(m), l = 0; l < h.length; l += 3) p[d = h[l]] = n[d]
1488 for (l = 0, u = h.length; l < u;) s = p[h[l++]], o = h[l++], a = h[l++], o ? (o.scope ? (c = e.$new(), W.$$addScopeInfo(qr(s), c)) : c = e, o(a, c, s, r, o.transcludeOnThisElement ? Q(e, o.transclude, i) : !o.templateOnThisElement && i ? i : !i && t ? Q(e, t) : null)) : a && a(e, s.childNodes, void 0, i)
1492 function X(e, t, n) {
1495 if (i.nodeType === di)
1497 if (!(r = o ? i.nextSibling : e[t + 1]) || r.nodeType !== di) break;
1498 i.nodeValue = i.nodeValue + r.nodeValue, r.parentNode && r.parentNode.removeChild(r), n && r === e[t + 1] && e.splice(t + 1, 1)
1502 function Q(e, t, n) {
1503 function r(r, i, o, a, s) {
1504 return r || ((r = e.$new(!1, s)).$$transcluded = !0), t(r, i, {
1505 parentBoundTranscludeFn: n,
1506 transcludeControllers: o,
1507 futureParentElement: a
1510 var i = r.$$slots = be();
1511 for (var o in t.$$slots) t.$$slots[o] ? i[o] = Q(e, t.$$slots[o], n) : i[o] = null;
1515 function J(e, t, n, r, i) {
1516 var o, a, s, c = e.nodeType,
1520 le(t, yt(a = F(e)), "E", r, i);
1521 for (var u, d, f, h, p, m, g = e.attributes, v = 0, y = g && g.length; v < y; v++) {
1524 d = (u = g[v]).name, p = u.value, h = yt(d), (m = je.test(h)) && (d = d.replace(Xi, "").substr(8).replace(/_(.)/g, function(e, t) {
1525 return t.toUpperCase()
1527 var C = h.match(Le);
1528 C && ue(C[1]) && ($ = d, w = d.substr(0, d.length - 5) + "end", d = d.substr(0, d.length - 6)), l[f = yt(d.toLowerCase())] = d, !m && n.hasOwnProperty(f) || (n[f] = p, Ze(e, f) && (n[f] = !0)), _e(e, t, p, f, m), le(t, f, "A", r, i, $, w)
1530 if ("input" === a && "hidden" === e.getAttribute("type") && e.setAttribute("autocomplete", "off"), !De) break;
1531 if (s = e.className, _(s) && (s = s.animVal), E(s) && "" !== s)
1532 for (; o = b.exec(s);) le(t, f = yt(o[2]), "C", r, i) && (n[f] = ti(o[3])), s = s.substr(o.index + o[0].length);
1541 return t.sort(me), t
1544 function ee(e, t, n, r, i) {
1546 var o = h.exec(e.nodeValue);
1549 le(t, a, "M", r, i) && (n[a] = ti(o[2]))
1554 function ne(e, t, n) {
1557 if (t && e.hasAttribute && e.hasAttribute(t))
1559 if (!e) throw Ki("uterdir", "Unterminated attribute, found '{0}' but no matching '{1}' found.", t, n);
1560 e.nodeType === ui && (e.hasAttribute(t) && i++, e.hasAttribute(n) && i--), r.push(e), e = e.nextSibling
1566 function re(e, t, n) {
1567 return function(r, i, o, a, s) {
1568 return i = ne(i[0], t, n), e(r, i, o, a, s)
1572 function ie(e, t, n, r, i, o) {
1574 return e ? W(t, n, r, i, o) : function() {
1575 return a || (a = W(t, n, r, i, o), t = n = o = null), a.apply(this, arguments)
1579 function oe(e, t, n, i, a, s, c, l, u) {
1580 function f(e, t, n, r) {
1581 e && (n && (e = re(e, n, r)), e.require = p.require, e.directiveName = m, (C === p || p.$$isolateScope) && (e = Ee(e, {
1583 })), c.push(e)), t && (n && (t = re(t, n, r)), t.require = p.require, t.directiveName = m, (C === p || p.$$isolateScope) && (t = Ee(t, {
1588 function h(e, i, a, s, u) {
1589 var f, h, p, m, g, v, b, $, k, M;
1590 t === a ? (k = n, $ = n.$$element) : k = new L($ = qr(a), n), g = i, C ? m = i.$new(!0) : w && (g = i.$parent), u && ((b = function(e, t, n, r) {
1592 if (A(e) || (r = n, n = t, t = e, e = void 0), D && (i = v), n || (n = D ? $.parent() : $), !r) return u(e, t, i, n, H);
1593 var o = u.$$slots[r];
1594 if (o) return o(e, t, i, n, H);
1595 if (y(o)) throw Ki("noslot", 'No parent directive that requires a transclusion with slot name "{0}". Element: {1}', r, te($))
1596 }).$$boundTransclude = u, b.isSlotFilled = function(e) {
1597 return !!u.$$slots[e]
1598 }), E && (v = se($, k, b, E, m, i, C)), C && (W.$$addScopeInfo($, m, !0, !(x && (x === C || x === C.$$originalDirective))), W.$$addScopeClass($, !0), m.$$isolateBindings = C.$$isolateBindings, (M = ke(i, k, m, m.$$isolateBindings, C)).removeWatches && m.$on("$destroy", M.removeWatches));
1602 R = N.$$bindings.bindToController;
1604 I.bindingInfo = R ? ke(g, k, I.instance, R, N) : {};
1606 P !== I.instance && (I.instance = P, $.data("$" + N.name + "Controller", P), I.bindingInfo.removeWatches && I.bindingInfo.removeWatches(), I.bindingInfo = ke(g, k, I.instance, R, N))
1607 } else I.instance = I(), $.data("$" + N.name + "Controller", I.instance), I.bindingInfo = ke(g, k, I.instance, R, N)
1609 for (o(E, function(e, t) {
1611 e.bindToController && !Jr(n) && _(n) && d(v[t].instance, ae(t, n, $, v))
1612 }), o(v, function(e) {
1614 if (T(t.$onChanges)) try {
1615 t.$onChanges(e.bindingInfo.initialChanges)
1619 if (T(t.$onInit)) try {
1624 T(t.$doCheck) && (g.$watch(function() {
1626 }), t.$doCheck()), T(t.$onDestroy) && g.$on("$destroy", function() {
1629 }), f = 0, h = c.length; f < h; f++) Ce(p = c[f], p.isolateScope ? m : i, $, k, p.require && ae(p.directiveName, p.require, $, v), b);
1631 for (C && (C.template || null === C.templateUrl) && (H = m), e && e(H, a.childNodes, void 0, u), f = l.length - 1; f >= 0; f--) Ce(p = l[f], p.isolateScope ? m : i, $, k, p.require && ae(p.directiveName, p.require, $, v), b);
1634 T(t.$postLink) && t.$postLink()
1638 for (var p, m, g, v, b, $ = -Number.MAX_VALUE, w = u.newScopeDirective, E = u.controllerDirectives, C = u.newIsolateScopeDirective, x = u.templateDirective, k = u.nonTlbTranscludeDirective, M = !1, S = !1, D = u.hasElementTranscludeDirective, N = n.$$element = qr(t), I = s, R = i, P = !1, H = !1, j = 0, q = e.length; j < q; j++) {
1639 var U = (p = e[j]).$$start,
1641 if (U && (N = ne(t, U, V)), g = void 0, $ > p.priority) break;
1642 if ((b = p.scope) && (p.templateUrl || (_(b) ? (ge("new/isolated scope", C || w, p, N), C = p) : ge("new/isolated scope", C, p, N)), w = w || p), m = p.name, !P && (p.replace && (p.templateUrl || p.template) || p.transclude && !p.$$tlb)) {
1643 for (var B, z = j + 1; B = e[z++];)
1644 if (B.transclude && !B.$$tlb || B.replace && (B.templateUrl || B.template)) {
1650 if (!p.templateUrl && p.controller && (E = E || be(), ge("'" + m + "' controller", E[m], p, N), E[m] = p), b = p.transclude)
1651 if (M = !0, p.$$tlb || (ge("transclusion", k, p, N), k = p), "element" === b) D = !0, $ = p.priority, g = N, N = n.$$element = qr(W.$$createComment(m, n[m])), t = N[0], we(a, Y(g), t), g[0].$$parentNode = g[0].parentNode, R = ie(H, g, i, $, I && I.name, {
1652 nonTlbTranscludeDirective: k
1660 o(b, function(e, t) {
1661 var n = "?" === e.charAt(0);
1662 e = n ? e.substring(1) : e, Z[e] = t, K[t] = null, X[t] = n
1663 }), o(N.contents(), function(e) {
1664 var t = Z[yt(F(e))];
1665 t ? (X[t] = !0, K[t] = K[t] || [], K[t].push(e)) : g.push(e)
1666 }), o(X, function(e, t) {
1667 if (!e) throw Ki("reqslot", "Required transclusion slot `{0}` was not filled.", t)
1669 for (var Q in K) K[Q] && (K[Q] = ie(H, K[Q], i))
1670 } else g = qr(Ie(t)).contents();
1671 N.empty(), (R = ie(H, g, i, void 0, void 0, {
1672 needsNewScope: p.$$isolateScope || p.$$newScope
1676 if (S = !0, ge("template", x, p, N), x = p, b = T(p.template) ? p.template(N, n) : p.template, b = He(b), p.replace) {
1677 if (I = p, g = Me(b) ? [] : _t(ye(p.templateNamespace, ti(b))), t = g[0], 1 !== g.length || t.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", m, "");
1683 le = e.splice(j + 1, e.length - (j + 1));
1684 (C || w) && ce(oe, C, w), e = e.concat(oe).concat(le), de(n, ee), q = e.length
1686 if (p.templateUrl) S = !0, ge("template", x, p, N), x = p, p.replace && (I = p), h = pe(e.splice(j, e.length - j), N, n, a, M && R, c, l, {
1687 controllerDirectives: E,
1688 newScopeDirective: w !== p && w,
1689 newIsolateScopeDirective: C,
1690 templateDirective: x,
1691 nonTlbTranscludeDirective: k
1693 else if (p.compile) try {
1694 v = p.compile(N, n, R);
1695 var ue = p.$$originalDirective || p;
1696 T(v) ? f(null, G(ue, v), U, V) : v && f(G(ue, v.pre), G(ue, v.post), U, V)
1700 p.terminal && (h.terminal = !0, $ = Math.max($, p.priority))
1702 return h.scope = w && !0 === w.scope, h.transcludeOnThisElement = M, h.templateOnThisElement = S, h.transclude = R, u.hasElementTranscludeDirective = D, h
1705 function ae(e, t, n, r) {
1709 s = t.substring(a[0].length),
1712 if ("^^" === c ? n = n.parent() : (i = r && r[s], i = i && i.instance), !i) {
1713 var u = "$" + s + "Controller";
1714 i = c ? n.inheritedData(u) : n.data(u)
1716 if (!i && !l) throw Ki("ctreq", "Controller '{0}', required by directive '{1}', can't be found!", s, e)
1719 for (var d = 0, f = t.length; d < f; d++) i[d] = ae(e, t[d], n, r)
1720 } else _(t) && (i = {}, o(t, function(t, o) {
1721 i[o] = ae(e, t, n, r)
1726 function se(e, t, n, r, i, o, a) {
1731 $scope: u === a || u.$$isolateScope ? i : o,
1737 "@" === f && (f = t[u.name]);
1738 var h = c(f, d, !0, u.controllerAs);
1739 s[u.name] = h, e.data("$" + u.name + "Controller", h.instance)
1744 function ce(e, t, n) {
1745 for (var r = 0, i = e.length; r < i; r++) e[r] = p(e[r], {
1751 function le(e, n, r, o, a, s, c) {
1752 if (n === a) return null;
1754 if (u.hasOwnProperty(n))
1755 for (var d, h = t.get(n + f), m = 0, g = h.length; m < g; m++)
1756 if (d = h[m], (y(o) || o > d.priority) && -1 !== d.restrict.indexOf(r)) {
1757 if (s && (d = p(d, {
1760 })), !d.$$bindings) {
1761 var v = d.$$bindings = i(d, d.name);
1762 _(v.isolateScope) && (d.$$isolateBindings = v.isolateScope)
1770 if (u.hasOwnProperty(e))
1771 for (var n = t.get(e + f), r = 0, i = n.length; r < i; r++)
1772 if (n[r].multiElement) return !0;
1779 o(e, function(r, i) {
1780 "$" !== i.charAt(0) && (t[i] && t[i] !== r && (r.length ? r += ("style" === i ? ";" : " ") + t[i] : r = t[i]), e.$set(i, r, !0, n[i]))
1781 }), o(t, function(t, i) {
1782 e.hasOwnProperty(i) || "$" === i.charAt(0) || (e[i] = t, "class" !== i && "style" !== i && (r[i] = n[i]))
1786 function pe(e, t, n, i, s, c, l, u) {
1794 $$originalDirective: g
1796 b = T(g.templateUrl) ? g.templateUrl(t, n) : g.templateUrl,
1797 y = g.templateNamespace;
1798 return t.empty(), a(b).then(function(r) {
1800 if (r = He(r), g.replace) {
1801 if ($ = Me(r) ? [] : _t(ye(y, ti(r))), a = $[0], 1 !== $.length || a.nodeType !== ui) throw Ki("tplrt", "Template for directive '{0}' must have exactly one root element. {1}", g.name, b);
1805 var E = J(a, [], p);
1806 _(g.scope) && ce(E, !0), e = E.concat(e), de(n, p)
1807 } else a = m, t.html(r);
1808 for (e.unshift(v), d = oe(e, a, n, s, t, g, c, l, u), o(i, function(e, n) {
1809 e === a && (i[n] = t[0])
1810 }), f = Z(t[0].childNodes, s); h.length;) {
1816 if (!C.$$destroyed) {
1818 var S = x.className;
1819 u.hasElementTranscludeDirective && g.replace || (M = Ie(a)), we(k, qr(x), M), V(qr(M), S)
1821 w = d.transcludeOnThisElement ? Q(C, d.transclude, T) : T, d(f, C, M, i, w)
1825 }).catch(function(e) {
1828 function(e, t, n, r, i) {
1830 t.$$destroyed || (h ? h.push(t, n, r, o) : (d.transcludeOnThisElement && (o = Q(t, d.transclude, i)), d(f, t, n, r, o)))
1835 var n = t.priority - e.priority;
1836 return 0 !== n ? n : e.name !== t.name ? e.name < t.name ? -1 : 1 : e.index - t.index
1839 function ge(e, t, n, r) {
1841 return e ? " (module: " + e + ")" : ""
1843 if (t) throw Ki("multidir", "Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}", t.name, i(t.$$moduleName), n.name, i(n.$$moduleName), e, te(r))
1850 compile: function(e) {
1853 return n && W.$$addBindingClass(t),
1856 n || W.$$addBindingClass(i), W.$$addBindingInfo(i, r.expressions), e.$watch(r, function(e) {
1865 switch (t = jr(t || "html")) {
1868 var r = e.document.createElement("div");
1869 return r.innerHTML = "<" + t + ">" + n + "</" + t + ">", r.childNodes[0].childNodes;
1876 if ("srcdoc" === t) return v.HTML;
1878 if ("src" === t || "ngSrc" === t) {
1879 if (-1 === ["img", "video", "audio", "source", "track"].indexOf(n)) return v.RESOURCE_URL
1880 } else if ("xlinkHref" === t || "form" === n && "action" === t || "link" === n && "href" === t) return v.RESOURCE_URL
1883 function _e(e, t, r, i, o) {
1889 if ("multiple" === i && "select" === F(e)) throw Ki("selmulti", "Binding to the 'multiple' attribute is not supported. Element: {0}", te(e));
1890 if (x.test(i)) throw Ki("nodomevents", "Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");
1893 compile: function() {
1895 pre: function(e, t, o) {
1896 var s = o.$$observers || (o.$$observers = be()),
1898 u !== r && (l = u && n(u, !0, a, c), r = u), l && (o[i] = l(e), (s[i] || (s[i] = [])).$$inter = !0, (o.$$observers && o.$$observers[i].$$scope || e).$watch(l, function(e, t) {
1899 "class" === i && e !== t ? o.$updateClass(e, t) : o.$set(i, e)
1908 function we(t, n, r) {
1913 for (i = 0, o = t.length; i < o; i++)
1916 for (var l = i, u = l + s - 1, d = t.length; l < d; l++, u++) u < d ? t[l] = t[u] : delete t[l];
1917 t.length -= s - 1, t.context === a && (t.context = r);
1920 c && c.replaceChild(r, a);
1921 var f = e.document.createDocumentFragment();
1922 for (i = 0; i < s; i++) f.appendChild(n[i]);
1923 for (qr.hasData(a) && (qr.data(r, qr.data(a)), qr(a).off("$destroy")), qr.cleanData(f.querySelectorAll("*")), i = 1; i < s; i++) delete n[i];
1924 n[0] = r, n.length = 1
1928 return d(function() {
1929 return e.apply(null, arguments)
1933 function Ce(e, t, n, i, o, a) {
1942 if (D) throw Ki("missingattr", "Attribute '{0}' of '{1}' is non-optional and must be set!", e, t)
1945 function ke(e, t, r, i, a) {
1946 function c(t, n, i) {
1947 T(r.$onChanges) && !B(n, i) && (Te || (e.$$postDigest(j), Te = []), u || (u = {}, Te.push(l)), u[t] && (i = u[t].previousValue), u[t] = new bt(i, n))
1951 r.$onChanges(u), u = void 0
1955 return o(i, function(i, o) {
1956 var l, u, h, p, g, v = i.attrName,
1960 b || Hr.call(t, v) || (xe(v, a.name), r[o] = t[v] = void 0), g = t.$observe(v, function(e) {
1963 c(o, e, t), r[o] = e
1965 }), t.$$observers[v].$$scope = e, E(l = t[v]) ? r[o] = n(l)(e) : I(l) && (r[o] = l), f[o] = new bt(Zi, r[o]), d.push(g);
1968 if (!Hr.call(t, v)) {
1970 xe(v, a.name), t[v] = void 0
1972 if (b && !t[v]) break;
1973 u = s(t[v]), p = u.literal ? z : B, h = u.assign || function() {
1974 throw l = r[o] = u(e), Ki("nonassign", "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", t[v], v, a.name)
1976 var y = function(t) {
1977 return p(t, r[o]) || (p(t, l) ? h(e, t = r[o]) : r[o] = t), l = t
1979 y.$stateful = !0, g = i.collection ? e.$watchCollection(t[v], y) : e.$watch(s(t[v], y), null, u.literal), d.push(g);
1982 if (!Hr.call(t, v)) {
1984 xe(v, a.name), t[v] = void 0
1986 if (b && !t[v]) break;
1987 var $ = (u = s(t[v])).literal,
1989 f[o] = new bt(Zi, r[o]), g = e.$watch(u, function(e, t) {
1991 if (t === _ || $ && z(t, _)) return;
1994 c(o, e, t), r[o] = e
1998 if (b || Hr.call(t, v) || xe(v, a.name), (u = t.hasOwnProperty(v) ? s(t[v]) : m) === m && b) break;
1999 r[o] = function(t) {
2005 removeWatches: d.length && function() {
2006 for (var e = 0, t = d.length; e < t; ++e) d[e]()
2011 Ae = e.document.createElement("div"),
2017 $addClass: function(e) {
2018 e && e.length > 0 && M.addClass(this.$$element, e)
2020 $removeClass: function(e) {
2021 e && e.length > 0 && M.removeClass(this.$$element, e)
2023 $updateClass: function(e, t) {
2025 n && n.length && M.addClass(this.$$element, n);
2027 r && r.length && M.removeClass(this.$$element, r)
2029 $set: function(e, t, n, i) {
2030 var a, s = Ze(this.$$element[0], e),
2033 if (s ? (this.$$element.prop(e, t), i = s) : c && (this[c] = t, l = c), this[e] = t, i ? this.$attr[e] = i : (i = this.$attr[e]) || (this.$attr[e] = i = fe(e, "-")), "a" === (a = F(this.$$element)) && ("href" === e || "xlinkHref" === e) || "img" === a && "src" === e) this[e] = t = H(t, "src" === e);
2034 else if ("img" === a && "srcset" === e && $(t)) {
2035 for (var u = "", d = ti(t), f = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/, h = /\s/.test(d) ? f : /(,)/, p = d.split(h), m = Math.floor(p.length / 2), g = 0; g < m; g++) {
2037 u += H(ti(p[v]), !0), u += " " + ti(p[v + 1])
2039 var b = ti(p[2 * g]).split(/\s/);
2040 u += H(ti(b[0]), !0), 2 === b.length && (u += " " + ti(b[1])), this[e] = t = u
2041 }!1 !== n && (null === t || y(t) ? this.$$element.removeAttr(i) : Se.test(i) ? this.$$element.attr(i, t) : q(this.$$element[0], i, t));
2042 var _ = this.$$observers;
2043 _ && o(_[l], function(e) {
2051 $observe: function(e, t) {
2053 r = n.$$observers || (n.$$observers = be()),
2054 i = r[e] || (r[e] = []);
2055 return i.push(t), l.$evalAsync(function() {
2056 i.$$inter || !n.hasOwnProperty(e) || y(n[e]) || t(n[e])
2063 var Re = n.startSymbol(),
2065 He = "{{" === Re && "}}" === Pe ? g : function(e) {
2066 return e.replace(/\{\{/g, Re).replace(/}}/g, Pe)
2068 je = /^ngAttr[A-Z]/,
2070 return W.$$addBindingInfo = S ? function(e, t) {
2071 var n = e.data("$binding") || [];
2072 Jr(t) ? n = n.concat(t) : n.push(t), e.data("$binding", n)
2073 } : m, W.$$addBindingClass = S ? function(e) {
2075 } : m, W.$$addScopeInfo = S ? function(e, t, n, r) {
2076 var i = n ? r ? "$isolateScopeNoTemplate" : "$isolateScope" : "$scope";
2078 } : m, W.$$addScopeClass = S ? function(e, t) {
2079 V(e, t ? "ng-isolate-scope" : "ng-scope")
2080 } : m, W.$$createComment = function(t, n) {
2082 return S && (r = " " + (t || "") + ": ", n && (r += n + " ")), e.document.createComment(r)
2088 this.previousValue = e, this.currentValue = t
2092 return e.replace(Xi, "").replace(Qi, ke)
2099 e: for (var o = 0; o < r.length; o++) {
2100 for (var a = r[o], s = 0; s < i.length; s++)
2101 if (a === i[s]) continue e;
2102 n += (n.length > 0 ? " " : "") + a
2108 var t = (e = qr(e)).length;
2109 if (t <= 1) return e;
2112 (n.nodeType === fi || n.nodeType === di && "" === n.nodeValue.trim()) && zr.call(e, t, 1)
2118 if (t && E(t)) return t;
2128 this.has = function(t) {
2129 return e.hasOwnProperty(t)
2130 }, this.register = function(t, n) {
2131 me(t, "controller"), _(t) ? d(e, t) : e[t] = n
2132 }, this.allowGlobals = function() {
2134 }, this.$get = ["$injector", "$window", function(n, i) {
2135 function o(e, t, n, i) {
2136 if (!e || !_(e.$scope)) throw r("$controller")("noscp", "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", i, t);
2139 return function(r, a, s, c) {
2141 if (s = !0 === s, c && E(c) && (h = c), E(r)) {
2142 if (!(u = r.match(eo))) throw Ji("ctrlfmt", "Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.", r);
2143 if (f = u[1], h = h || u[3], !(r = e.hasOwnProperty(f) ? e[f] : ge(a.$scope, f, !0) || (t ? ge(i, f, !0) : void 0))) throw Ji("ctrlreg", "The controller with the name '{0}' is not registered.", f);
2147 var p = (Jr(r) ? r[r.length - 1] : r).prototype;
2148 return l = Object.create(p || null), h && o(a, h, l, f || r.name), d(function() {
2149 var e = n.invoke(r, l, a, f);
2150 return e !== l && (_(e) || T(e)) && (l = e, h && o(a, h, l, f || r.name)), l
2156 return l = n.instantiate(r, a, f), h && o(a, h, l, f || r.name), l
2162 this.$get = ["$window", function(e) {
2163 return qr(e.document)
2168 this.$get = ["$document", "$rootScope", function(e, t) {
2174 return e.on("visibilitychange", n), t.$on("$destroy", function() {
2175 e.off("visibilitychange", n)
2184 this.$get = ["$log", function(e) {
2185 return function(t, n) {
2186 e.error.apply(e, arguments)
2192 return _(e) ? x(e) ? e.toISOString() : Z(e) : e
2196 this.$get = function() {
2197 return function(e) {
2200 return a(e, function(e, n) {
2201 null === e || y(e) || T(e) || (Jr(e) ? o(e, function(e) {
2202 t.push(ae(n) + "=" + ae(Tt(e)))
2203 }) : t.push(ae(n) + "=" + ae(Tt(e))))
2210 this.$get = function() {
2211 return function(e) {
2212 function t(e, r, i) {
2213 null === e || y(e) || (Jr(e) ? o(e, function(e, n) {
2214 t(e, r + "[" + (_(e) ? n : "") + "]")
2215 }) : _(e) && !x(e) ? a(e, function(e, n) {
2216 t(e, r + (i ? "" : "[") + n + (i ? "" : "]"))
2217 }) : n.push(ae(r) + "=" + ae(Tt(e))))
2221 return t(e, "", !0), n.join("&")
2228 var n = e.replace(ao, "").trim();
2230 var r = t("Content-Type"),
2231 i = r && 0 === r.indexOf(no);
2232 if (i || Ot(n)) try {
2236 throw so("baddata", 'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"', e, t)
2244 var t = e.match(io);
2245 return t && oo[t[0]].test(e)
2250 e && (r[e] = r[e] ? r[e] + ", " + t : t)
2253 return E(e) ? o(e.split("\n"), function(e) {
2254 n = e.indexOf(":"), t(jr(ti(e.substr(0, n))), ti(e.substr(n + 1)))
2255 }) : _(e) && o(e, function(e, n) {
2262 return function(n) {
2263 if (t || (t = Dt(e)), n) {
2265 return void 0 === r && (r = null), r
2271 function It(e, t, n, r) {
2272 return T(r) ? r(e, t, n) : (o(r, function(r) {
2278 return 200 <= e && e < 300
2282 var e = this.defaults = {
2283 transformResponse: [At],
2284 transformRequest: [function(e) {
2285 return !_(e) || O(e) || N(e) || D(e) ? e : Z(e)
2289 Accept: "application/json, text/plain, */*"
2295 xsrfCookieName: "XSRF-TOKEN",
2296 xsrfHeaderName: "X-XSRF-TOKEN",
2297 paramSerializer: "$httpParamSerializer",
2298 jsonpCallbackParam: "callback"
2301 this.useApplyAsync = function(e) {
2302 return $(e) ? (t = !!e, this) : t
2304 var n = this.interceptors = [];
2305 this.$get = ["$browser", "$httpBackend", "$$cookieReader", "$cacheFactory", "$rootScope", "$q", "$injector", "$sce", function(i, a, s, c, l, u, f, h) {
2308 for (var n = 0, r = t.length; n < r;) {
2313 return t.length = 0, e
2318 return o(e, function(e, i) {
2319 T(e) ? null != (n = e(t)) && (r[i] = n) : r[i] = e
2325 return t.data = It(e.data, e.headers, e.status, c.transformResponse), Rt(e.status) ? t : u.reject(t)
2327 if (!_(t)) throw r("$http")("badreq", "Http request configuration must be an object. Received: {0}", t);
2328 if (!E(h.valueOf(t.url))) throw r("$http")("badreq", "Http request configuration url must be a string or a $sce trusted object. Received: {0}", t.url);
2331 transformRequest: e.transformRequest,
2332 transformResponse: e.transformResponse,
2333 paramSerializer: e.paramSerializer,
2334 jsonpCallbackParam: e.jsonpCallbackParam
2336 c.headers = function(t) {
2337 var n, r, i, o = e.headers,
2338 s = d({}, t.headers);
2339 o = d({}, o.common, o[jr(t.method)]);
2343 if (jr(i) === r) continue e;
2347 }(t), c.method = Lr(c.method), c.paramSerializer = E(c.paramSerializer) ? f.get(c.paramSerializer) : c.paramSerializer, i.$$incOutstandingRequestCount();
2351 return o(C, function(e) {
2352 (e.request || e.requestError) && l.unshift(e.request, e.requestError), (e.response || e.responseError) && p.push(e.response, e.responseError)
2353 }), v = n(v, l), v = v.then(function(t) {
2355 r = It(t.data, Nt(n), void 0, t.transformRequest);
2356 return y(r) && o(n, function(e, t) {
2357 "content-type" === jr(t) && delete n[t]
2358 }), y(t.withCredentials) && !y(e.withCredentials) && (t.withCredentials = e.withCredentials), g(t, r).then(s, s)
2359 }), v = n(v, p), v = v.finally(function() {
2360 i.$$completeOutstandingRequest(m)
2368 return o(e, function(e, r) {
2369 n[r] = function(n) {
2373 t ? l.$applyAsync(r) : l.$$phase ? r() : l.$apply(r)
2379 function c(e, t, r, i, o) {
2380 (Rt(t = t >= -1 ? t : 0) ? C.resolve : C.reject)({
2391 c(e.data, e.status, _e(e.headers()), e.statusText, e.xhrStatus)
2395 var e = p.pendingRequests.indexOf(n); - 1 !== e && p.pendingRequests.splice(e, 1)
2397 var m, g, C = u.defer(),
2400 T = "jsonp" === jr(n.method),
2402 if (T ? M = h.getTrustedResourceUrl(M) : E(M) || (M = h.valueOf(M)), M = v(M, n.paramSerializer(n.params)), T && (M = b(M, n.jsonpCallbackParam)), p.pendingRequests.push(n), x.then(f, f), !n.cache && !e.cache || !1 === n.cache || "GET" !== n.method && "JSONP" !== n.method || (m = _(n.cache) ? n.cache : _(e.cache) ? e.cache : w), m && ($(g = m.get(M)) ? R(g) ? g.then(d, d) : Jr(g) ? c(g[1], g[0], _e(g[2]), g[3], g[4]) : c(g, 200, {}, "OK", "complete") : m.put(M, x)), y(g)) {
2403 var S = Fn(n.url) ? s()[n.xsrfCookieName || e.xsrfCookieName] : void 0;
2404 S && (k[n.xsrfHeaderName || e.xsrfHeaderName] = S), a(n.method, M, r, function(e, n, r, i, o) {
2408 m && (Rt(e) ? m.put(M, [e, n, Dt(r), i, o]) : m.remove(M)), t ? l.$applyAsync(a) : (a(), l.$$phase || l.$apply())
2409 }, k, n.timeout, n.withCredentials, n.responseType, i(n.eventHandlers), i(n.uploadEventHandlers))
2415 return t.length > 0 && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
2419 if (/[&?][^=]+=JSON_CALLBACK/.test(e)) throw so("badjsonp", 'Illegal use of JSON_CALLBACK in url, "{0}"', e);
2420 if (new RegExp("[&?]" + t + "=").test(e)) throw so("badjsonp", 'Illegal use of callback param, "{0}", in url, "{1}"', t, e);
2421 return e += (-1 === e.indexOf("?") ? "?" : "&") + t + "=JSON_CALLBACK"
2424 e.paramSerializer = E(e.paramSerializer) ? f.get(e.paramSerializer) : e.paramSerializer;
2426 return o(n, function(e) {
2427 C.unshift(E(e) ? f.get(e) : f.invoke(e))
2428 }), p.pendingRequests = [],
2430 o(arguments, function(e) {
2431 p[e] = function(t, n) {
2432 return p(d({}, n || {}, {
2438 }("get", "delete", "head", "jsonp"),
2440 o(arguments, function(e) {
2441 p[e] = function(t, n, r) {
2442 return p(d({}, r || {}, {
2449 }("post", "put", "patch"), p.defaults = e, p
2454 this.$get = function() {
2456 return new e.XMLHttpRequest
2462 this.$get = ["$browser", "$jsonpCallbacks", "$document", "$xhrFactory", function(e, t, n, r) {
2463 return Lt(e, r, e.defer, t, n[0])
2467 function Lt(e, t, n, r, i) {
2468 function a(e, t, n) {
2469 e = e.replace("JSON_CALLBACK", t);
2470 var o = i.createElement("script"),
2472 return o.type = "text/javascript", o.src = e, o.async = !0, a = function(e) {
2473 o.removeEventListener("load", a), o.removeEventListener("error", a), i.body.removeChild(o), o = null;
2476 e && ("load" !== e.type || r.wasCalled(t) || (e = {
2478 }), c = e.type, s = "error" === e.type ? 404 : 200), n && n(s, c)
2479 }, o.addEventListener("load", a), o.addEventListener("error", a), i.body.appendChild(o), a
2481 return function(i, s, c, l, u, d, f, h, p, m) {
2483 _ && _(), w && w.abort()
2486 function v(e, t, r, i, o, a) {
2487 $(E) && n.cancel(E), _ = w = null, e(t, r, i, o, a)
2489 if (s = s || e.url(), "jsonp" === jr(i)) var b = r.createCallback(s),
2490 _ = a(s, b, function(e, t) {
2491 var n = 200 === e && r.getResponse(b);
2492 v(l, e, n, "", t, "complete"), r.removeCallback(b)
2496 w.open(i, s, !0), o(u, function(e, t) {
2497 $(e) && w.setRequestHeader(t, e)
2498 }), w.onload = function() {
2499 var e = w.statusText || "",
2500 t = "response" in w ? w.response : w.responseText,
2501 n = 1223 === w.status ? 204 : w.status;
2502 0 === n && (n = t ? 200 : "file" === Ln(s).protocol ? 404 : 0), v(l, n, t, w.getAllResponseHeaders(), e, "complete")
2504 if (w.onerror = function() {
2505 v(l, -1, null, null, "", "error")
2506 }, w.onabort = function() {
2507 v(l, -1, null, null, "", "abort")
2508 }, w.ontimeout = function() {
2509 v(l, -1, null, null, "", "timeout")
2510 }, o(p, function(e, t) {
2511 w.addEventListener(t, e)
2512 }), o(m, function(e, t) {
2513 w.upload.addEventListener(t, e)
2514 }), f && (w.withCredentials = !0), h) try {
2517 if ("json" !== h) throw e
2519 w.send(y(c) ? null : c)
2521 if (d > 0) var E = n(g, d);
2522 else R(d) && d.then(g)
2529 this.startSymbol = function(t) {
2530 return t ? (e = t, this) : e
2531 }, this.endSymbol = function(e) {
2532 return e ? (t = e, this) : t
2533 }, this.$get = ["$parse", "$exceptionHandler", "$sce", function(n, r, i) {
2539 return n.replace(f, e).replace(h, t)
2542 function s(e, t, n, r) {
2543 var i = e.$watch(function(e) {
2549 function c(o, c, f, h) {
2550 if (!o.length || -1 === o.indexOf(e)) {
2552 return c || ((p = v(a(o))).exp = o, p.expressions = [], p.$$watchDelegate = s), p
2555 for (var m, g, b, _ = 0, w = [], E = [], C = o.length, x = [], k = []; _ < C;) {
2556 if (-1 === (m = o.indexOf(e, _)) || -1 === (g = o.indexOf(t, m + l))) {
2557 _ !== C && x.push(a(o.substring(_)));
2560 _ !== m && x.push(a(o.substring(_, m))), b = o.substring(m + l, g), w.push(b), E.push(n(b, function(e) {
2562 return e = S(e), h && !$(e) ? e : ye(e)
2566 })), _ = g + u, k.push(x.length), x.push("")
2568 if (f && x.length > 1 && co.throwNoconcat(o), !c || w.length) {
2569 var M = function(e) {
2570 for (var t = 0, n = w.length; t < n; t++) {
2571 if (h && y(e[t])) return;
2577 return f ? i.getTrusted(f, e) : i.valueOf(e)
2579 return d(function(e) {
2584 for (; t < n; t++) i[t] = E[t](e);
2592 $$watchDelegate: function(e, t) {
2594 return e.$watchGroup(E, function(r, i) {
2596 T(t) && t.call(this, o, r !== i ? n : o, e), n = o
2604 f = new RegExp(e.replace(/./g, o), "g"),
2605 h = new RegExp(t.replace(/./g, o), "g");
2606 return c.startSymbol = function() {
2608 }, c.endSymbol = function() {
2615 this.$get = ["$rootScope", "$window", "$q", "$$q", "$browser", function(e, t, n, r, i) {
2616 function o(o, s, c, l) {
2618 d ? o.apply(null, f) : o(m)
2620 var d = arguments.length > 4,
2621 f = d ? Y(arguments, 4) : [],
2623 p = t.clearInterval,
2626 v = (g ? r : n).defer(),
2628 return c = $(c) ? c : 0, b.$$intervalId = h(function() {
2629 g ? i.defer(u) : e.$evalAsync(u), v.notify(m++), c > 0 && m >= c && (v.resolve(m), p(b.$$intervalId), delete a[b.$$intervalId]), g || e.$apply()
2630 }, s), a[b.$$intervalId] = v, b
2633 return o.cancel = function(e) {
2634 return !!(e && e.$$intervalId in a) && (kn(a[e.$$intervalId].promise), a[e.$$intervalId].reject("canceled"), t.clearInterval(e.$$intervalId), delete a[e.$$intervalId], !0)
2640 for (var t = e.split("/"), n = t.length; n--;) t[n] = oe(t[n]);
2646 t.$$protocol = n.protocol, t.$$host = n.hostname, t.$$port = h(n.port) || fo[n.protocol] || null
2650 if (po.test(e)) throw ho("badpath", 'Invalid url "{0}".', e);
2651 var n = "/" !== e.charAt(0);
2654 t.$$path = decodeURIComponent(n && "/" === r.pathname.charAt(0) ? r.pathname.substring(1) : r.pathname), t.$$search = re(r.search), t.$$hash = decodeURIComponent(r.hash), t.$$path && "/" !== t.$$path.charAt(0) && (t.$$path = "/" + t.$$path)
2658 return e.slice(0, t.length) === t
2662 if (zt(t, e)) return t.substr(e.length)
2666 var t = e.indexOf("#");
2667 return -1 === t ? e : e.substr(0, t)
2671 return e.replace(/(#.+)|#$/, "$1")
2675 return e.substr(0, Yt(e).lastIndexOf("/") + 1)
2679 return e.substring(0, e.indexOf("/", e.indexOf("//") + 2))
2682 function Xt(e, t, n) {
2683 this.$$html5 = !0, n = n || "", Vt(e, this), this.$$parse = function(e) {
2685 if (!E(n)) throw ho("ipthprfx", 'Invalid url "{0}", missing path prefix "{1}".', e, t);
2686 Bt(n, this), this.$$path || (this.$$path = "/"), this.$$compose()
2687 }, this.$$compose = function() {
2688 var e = ie(this.$$search),
2689 n = this.$$hash ? "#" + oe(this.$$hash) : "";
2690 this.$$url = Ut(this.$$path) + (e ? "?" + e : "") + n, this.$$absUrl = t + this.$$url.substr(1), this.$$urlUpdatedByLocation = !0
2691 }, this.$$parseLinkUrl = function(r, i) {
2692 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2694 return $(o = Wt(e, r)) ? (a = o, s = n && $(o = Wt(n, o)) ? t + (Wt("/", o) || o) : e + a) : $(o = Wt(t, r)) ? s = t + o : t === r + "/" && (s = t), s && this.$$parse(s), !!s
2698 function Qt(e, t, n) {
2699 Vt(e, this), this.$$parse = function(r) {
2700 var i, o = Wt(e, r) || Wt(t, r);
2701 y(o) || "#" !== o.charAt(0) ? this.$$html5 ? i = o : (i = "", y(o) && (e = r, this.replace())) : y(i = Wt(n, o)) && (i = o), Bt(i, this), this.$$path = function(e, t, n) {
2702 var r, i = /^\/[A-Z]:(\/.*)/;
2703 return zt(t, n) && (t = t.replace(n, "")), i.exec(t) ? e : (r = i.exec(e)) ? r[1] : e
2704 }(this.$$path, i, e), this.$$compose()
2705 }, this.$$compose = function() {
2706 var t = ie(this.$$search),
2707 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2708 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + (this.$$url ? n + this.$$url : ""), this.$$urlUpdatedByLocation = !0
2709 }, this.$$parseLinkUrl = function(t, n) {
2710 return Yt(e) === Yt(t) && (this.$$parse(t), !0)
2714 function Jt(e, t, n) {
2715 this.$$html5 = !0, Qt.apply(this, arguments), this.$$parseLinkUrl = function(r, i) {
2716 if (i && "#" === i[0]) return this.hash(i.slice(1)), !0;
2718 return e === Yt(r) ? o = r : (a = Wt(t, r)) ? o = e + n + a : t === r + "/" && (o = t), o && this.$$parse(o), !!o
2719 }, this.$$compose = function() {
2720 var t = ie(this.$$search),
2721 r = this.$$hash ? "#" + oe(this.$$hash) : "";
2722 this.$$url = Ut(this.$$path) + (t ? "?" + t : "") + r, this.$$absUrl = e + n + this.$$url, this.$$urlUpdatedByLocation = !0
2733 return function(n) {
2734 return y(n) ? this[e] : (this[e] = t(n), this.$$compose(), this)
2745 this.hashPrefix = function(t) {
2746 return $(t) ? (e = t, this) : e
2747 }, this.html5Mode = function(e) {
2748 return I(e) ? (t.enabled = e, this) : _(e) ? (I(e.enabled) && (t.enabled = e.enabled), I(e.requireBase) && (t.requireBase = e.requireBase), (I(e.rewriteLinks) || E(e.rewriteLinks)) && (t.rewriteLinks = e.rewriteLinks), this) : t
2749 }, this.$get = ["$rootScope", "$browser", "$sniffer", "$rootElement", "$window", function(n, r, i, o, a) {
2750 function s(e, t, n) {
2754 r.url(e, t, n), l.$$state = r.state()
2756 throw l.url(i), l.$$state = o, e
2761 n.$broadcast("$locationChangeSuccess", l.absUrl(), e, l.$$state, t)
2763 var l, u, d, f = r.baseHref(),
2766 if (!f && t.requireBase) throw ho("nobase", "$location in HTML5 mode requires a <base> tag to be present!");
2767 d = Zt(h) + (f || "/"), u = i.history ? Xt : Jt
2768 } else d = Yt(h), u = Qt;
2770 (l = new u(d, p, "#" + e)).$$parseLinkUrl(h, h), l.$$state = r.state();
2771 var m = /^\s*(javascript|mailto):/i;
2772 o.on("click", function(e) {
2773 var i = t.rewriteLinks;
2774 if (i && !e.ctrlKey && !e.metaKey && !e.shiftKey && 2 !== e.which && 2 !== e.button) {
2775 for (var s = qr(e.target);
2777 if (s[0] === o[0] || !(s = s.parent())[0]) return;
2778 if (!E(i) || !y(s.attr(i))) {
2779 var c = s.prop("href"),
2780 u = s.attr("href") || s.attr("xlink:href");
2781 _(c) && "[object SVGAnimatedString]" === c.toString() && (c = Ln(c.animVal).href), m.test(c) || !c || s.attr("target") || e.isDefaultPrevented() || l.$$parseLinkUrl(c, u) && (e.preventDefault(), l.absUrl() !== r.url() && (n.$apply(), a.angular["ff-684208-preventDefault"] = !0))
2784 }), Gt(l.absUrl()) !== Gt(h) && r.url(l.absUrl(), !0);
2786 return r.onUrlChange(function(e, t) {
2787 zt(e, p) ? (n.$evalAsync(function() {
2788 var r, i = l.absUrl(),
2790 e = Gt(e), l.$$parse(e), l.$$state = t, r = n.$broadcast("$locationChangeStart", e, i, t, o).defaultPrevented, l.absUrl() === e && (r ? (l.$$parse(i), l.$$state = o, s(i, !1, o)) : (g = !1, c(i, o)))
2791 }), n.$$phase || n.$digest()) : a.location.href = e
2792 }), n.$watch(function() {
2793 if (g || l.$$urlUpdatedByLocation) {
2794 l.$$urlUpdatedByLocation = !1;
2795 var e = Gt(r.url()),
2799 u = e !== t || l.$$html5 && i.history && o !== l.$$state;
2800 (g || u) && (g = !1, n.$evalAsync(function() {
2802 r = n.$broadcast("$locationChangeStart", t, e, l.$$state, o).defaultPrevented;
2803 l.absUrl() === t && (r ? (l.$$parse(e), l.$$state = o) : (u && s(t, a, o === l.$$state ? null : l.$$state), c(e, o)))
2814 this.debugEnabled = function(t) {
2815 return $(t) ? (e = t, this) : e
2816 }, this.$get = ["$window", function(n) {
2818 return k(e) && (e.stack && a ? e = e.message && -1 === e.stack.indexOf(e.message) ? "Error: " + e.message + "\n" + e.stack : e.stack : e.sourceURL && (e = e.message + "\n" + e.sourceURL + ":" + e.line)), e
2822 var t = n.console || {},
2823 i = t[e] || t.log || m;
2826 return o(arguments, function(t) {
2828 }), Function.prototype.apply.call(i, t, e)
2831 var a = Fr || /\bEdge\//.test(n.navigator && n.navigator.userAgent);
2840 e && n.apply(t, arguments)
2852 return void 0 !== e ? e : t
2856 return void 0 === e ? t : void 0 === t ? e : e + t
2860 return !e(t).$stateful
2865 case _o.MemberExpression:
2866 if (e.computed) return !1;
2868 case _o.UnaryExpression:
2870 case _o.BinaryExpression:
2871 return "+" !== e.operator && wo;
2872 case _o.CallExpression:
2875 return void 0 === t ? Eo : t
2878 function un(e, t, n) {
2879 var r, i, a, s = e.isPure = ln(e, n);
2882 r = !0, o(e.body, function(e) {
2883 un(e.expression, t, s), r = r && e.expression.constant
2887 e.constant = !0, e.toWatch = [];
2889 case _o.UnaryExpression:
2890 un(e.argument, t, s), e.constant = e.argument.constant, e.toWatch = e.argument.toWatch;
2892 case _o.BinaryExpression:
2893 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.left.toWatch.concat(e.right.toWatch);
2895 case _o.LogicalExpression:
2896 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = e.constant ? [] : [e];
2898 case _o.ConditionalExpression:
2899 un(e.test, t, s), un(e.alternate, t, s), un(e.consequent, t, s), e.constant = e.test.constant && e.alternate.constant && e.consequent.constant, e.toWatch = e.constant ? [] : [e];
2902 e.constant = !1, e.toWatch = [e];
2904 case _o.MemberExpression:
2905 un(e.object, t, s), e.computed && un(e.property, t, s), e.constant = e.object.constant && (!e.computed || e.property.constant), e.toWatch = e.constant ? [] : [e];
2907 case _o.CallExpression:
2908 a = !!e.filter && cn(t, e.callee.name), r = a, i = [], o(e.arguments, function(e) {
2909 un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2910 }), e.constant = r, e.toWatch = a ? i : [e];
2912 case _o.AssignmentExpression:
2913 un(e.left, t, s), un(e.right, t, s), e.constant = e.left.constant && e.right.constant, e.toWatch = [e];
2915 case _o.ArrayExpression:
2916 r = !0, i = [], o(e.elements, function(e) {
2917 un(e, t, s), r = r && e.constant, i.push.apply(i, e.toWatch)
2918 }), e.constant = r, e.toWatch = i;
2920 case _o.ObjectExpression:
2921 r = !0, i = [], o(e.properties, function(e) {
2922 un(e.value, t, s), r = r && e.value.constant, i.push.apply(i, e.value.toWatch), e.computed && (un(e.key, t, !1), r = r && e.key.constant, i.push.apply(i, e.key.toWatch))
2923 }), e.constant = r, e.toWatch = i;
2925 case _o.ThisExpression:
2926 case _o.LocalsExpression:
2927 e.constant = !1, e.toWatch = []
2932 if (1 === e.length) {
2933 var t = e[0].expression,
2935 return 1 !== n.length ? n : n[0] !== t ? n : void 0
2940 return e.type === _o.Identifier || e.type === _o.MemberExpression
2944 if (1 === e.body.length && fn(e.body[0].expression)) return {
2945 type: _o.AssignmentExpression,
2946 left: e.body[0].expression,
2948 type: _o.NGValueParameter
2955 return 0 === e.body.length || 1 === e.body.length && (e.body[0].expression.type === _o.Literal || e.body[0].expression.type === _o.ArrayExpression || e.body[0].expression.type === _o.ObjectExpression)
2970 function bn(e, t, n) {
2971 this.ast = new _o(e, n), this.astCompiler = n.csp ? new vn(t) : new gn(t)
2975 return T(e.valueOf) ? e.valueOf() : vo.call(e)
2986 this.addLiteral = function(e, t) {
2988 }, this.setIdentifierFns = function(n, r) {
2989 return e = n, t = r, this
2990 }, this.$get = ["$filter", function(i) {
2991 function a(e, t, n) {
2992 return null == e || null == t ? e === t : !("object" == typeof e && "object" == typeof(e = yn(e)) && !n) && (e === t || e !== e && t !== t)
2995 function s(e, t, n, r, i) {
2996 var o, s = r.inputs;
2997 if (1 === s.length) {
2999 return s = s[0], e.$watch(function(e) {
3001 return a(t, c, s.isPure) || (o = r(e, void 0, void 0, [t]), c = t && yn(t)), o
3004 for (var l = [], u = [], d = 0, f = s.length; d < f; d++) l[d] = a, u[d] = null;
3005 return e.$watch(function(e) {
3006 for (var t = !1, n = 0, i = s.length; n < i; n++) {
3008 (t || (t = !a(c, l[n], s[n].isPure))) && (u[n] = c, l[n] = c && yn(c))
3010 return t && (o = r(e, void 0, void 0, u)), o
3014 function c(e, t, n, r, i) {
3015 function o(e, n, r) {
3016 c = e, T(t) && t(e, n, r), $(e) && r.$$postDigest(function() {
3021 return a = r.inputs ? s(e, o, n, r, i) : e.$watch(function(e) {
3026 function l(e, t, n, r) {
3029 return o(e, function(e) {
3034 return a = e.$watch(function(e) {
3036 }, function(e, n, r) {
3037 s = e, T(t) && t(e, n, r), i(e) && r.$$postDigest(function() {
3043 function u(e, t, n, r) {
3044 var i = e.$watch(function(e) {
3052 var n = e.$$watchDelegate,
3054 i = n !== l && n !== c ? function(n, i, o, a) {
3055 var s = r && a ? a[0] : e(n, i, o, a);
3057 } : function(n, r, i, o) {
3058 var a = e(n, r, i, o),
3062 return r = !e.inputs, n && n !== s ? (i.$$watchDelegate = n, i.inputs = e.inputs) : t.$stateful || (i.$$watchDelegate = s, i.inputs = e.inputs ? e.inputs : [e]), i.inputs && (i.inputs = i.inputs.map(function(e) {
3063 return e.isPure === Eo ? function(t) {
3069 csp: ri().noUnsafeEval,
3071 isIdentifierStart: T(e) && e,
3072 isIdentifierContinue: T(t) && t
3074 return function(e, t) {
3078 return e = e.trim(), a = e, (r = n[a]) || (":" === e.charAt(0) && ":" === e.charAt(1) && (o = !0, e = e.substring(2)), (r = new bn(new $o(f), i, f).parse(e)).constant ? r.$$watchDelegate = u : o ? r.$$watchDelegate = r.literal ? l : c : r.inputs && (r.$$watchDelegate = s), n[a] = r), d(r, t);
3090 this.$get = ["$rootScope", "$exceptionHandler", function(t, n) {
3091 return En(function(e) {
3094 }], this.errorOnUnhandledRejections = function(t) {
3095 return $(t) ? (e = t, this) : e
3101 this.$get = ["$browser", "$exceptionHandler", function(t, n) {
3102 return En(function(e) {
3105 }], this.errorOnUnhandledRejections = function(t) {
3106 return $(t) ? (e = t, this) : e
3110 function En(e, t, n) {
3116 var e = this.promise = new s;
3117 this.resolve = function(t) {
3119 }, this.reject = function(t) {
3121 }, this.notify = function(t) {
3134 o = t.pending, t.processScheduled = !1, t.pending = void 0;
3136 for (var a = 0, s = o.length; a < s; ++a) {
3137 xn(t), i = o[a][0], r = o[a][t.status];
3139 T(r) ? f(i, r(t.value)) : 1 === t.status ? f(i, t.value) : p(i, t.value)
3145 --C, n && 0 === C && e(l)
3150 for (; !C && x.length;) {
3154 var n = "Possibly unhandled rejection: " + Ee(e.value);
3155 k(e.value) ? t(e.value, n) : t(n)
3161 !n || t.pending || 2 !== t.status || Cn(t) || (0 === C && 0 === x.length && e(l), x.push(t)), !t.processScheduled && t.pending && (t.processScheduled = !0, ++C, e(function() {
3167 e.$$state.status || (t === e ? m(e, E("qcycle", "Expected promise to be resolved with value other than itself '{0}'", t)) : h(e, t))
3172 i || (i = !0, m(e, t))
3176 (_(t) || T(t)) && (r = t.then), T(r) ? (e.$$state.status = -1, r.call(t, function(t) {
3177 i || (i = !0, h(e, t))
3180 })) : (e.$$state.value = t, e.$$state.status = 1, u(e.$$state))
3187 e.$$state.status || m(e, t)
3191 e.$$state.value = t, e.$$state.status = 2, u(e.$$state)
3195 var i = n.$$state.pending;
3196 n.$$state.status <= 0 && i && i.length && e(function() {
3197 for (var e, n, o = 0, a = i.length; o < a; o++) {
3198 n = i[o][0], e = i[o][3];
3200 g(n, T(e) ? e(r) : r)
3213 function b(e, t, n) {
3220 return R(r) ? r.then(function() {
3225 function $(e, t, n, r) {
3227 return f(i, e), i.then(t, n, r)
3231 if (!T(e)) throw E("norslvr", "Expected resolverFn, got '{0}'", e);
3233 return e(function(e) {
3239 var E = r("$q", TypeError),
3243 then: function(e, t, n) {
3244 if (y(e) && y(t) && y(n)) return this;
3246 return this.$$state.pending = this.$$state.pending || [], this.$$state.pending.push([r, e, t, n]), this.$$state.status > 0 && u(this.$$state), r
3248 catch: function(e) {
3249 return this.then(null, e)
3251 finally: function(e, t) {
3252 return this.then(function(t) {
3260 return w.prototype = s.prototype, w.defer = i, w.reject = v, w.when = $, w.resolve = M, w.all = function(e) {
3263 r = Jr(e) ? [] : {};
3264 return o(e, function(e, i) {
3265 n++, $(e).then(function(e) {
3266 r[i] = e, --n || f(t, r)
3270 }), 0 === n && f(t, r), t
3271 }, w.race = function(e) {
3273 return o(e, function(e) {
3274 $(e).then(t.resolve, t.reject)
3292 this.$get = ["$window", "$timeout", function(e, t) {
3293 var n = e.requestAnimationFrame || e.webkitRequestAnimationFrame,
3294 r = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame,
3296 o = i ? function(e) {
3302 var n = t(e, 16.66, !1);
3307 return o.supported = i, o
3314 this.$$watchers = this.$$nextSibling = this.$$childHead = this.$$childTail = null, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$id = c(), this.$$ChildScope = null
3316 return t.prototype = e, t
3319 n = r("$rootScope"),
3322 this.digestTtl = function(e) {
3323 return arguments.length && (t = e), t
3324 }, this.$get = ["$exceptionHandler", "$parse", "$browser", function(r, l, u) {
3326 e.currentScope.$$destroyed = !0
3330 9 === Fr && (e.$$childHead && f(e.$$childHead), e.$$nextSibling && f(e.$$nextSibling)), e.$parent = e.$$nextSibling = e.$$prevSibling = e.$$childHead = e.$$childTail = e.$root = e.$$watchers = null
3334 this.$id = c(), this.$$phase = this.$parent = this.$$watchers = this.$$nextSibling = this.$$prevSibling = this.$$childHead = this.$$childTail = null, this.$root = this, this.$$destroyed = !1, this.$$listeners = {}, this.$$listenerCount = {}, this.$$watchersCount = 0, this.$$isolateBindings = null
3338 if (C.$$phase) throw n("inprog", "{0} already in progress", C.$$phase);
3348 e.$$watchersCount += t
3349 } while (e = e.$parent)
3352 function b(e, t, n) {
3354 e.$$listenerCount[n] -= t, 0 === e.$$listenerCount[n] && delete e.$$listenerCount[n]
3355 } while (e = e.$parent)
3361 for (; M.length;) try {
3370 null === s && (s = u.defer(function() {
3376 $new: function(t, n) {
3378 return n = n || this, t ? (r = new h).$root = this.$root : (this.$$ChildScope || (this.$$ChildScope = e(this)), r = new this.$$ChildScope), r.$parent = n, r.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = r, n.$$childTail = r) : n.$$childHead = n.$$childTail = r, (t || n !== this) && r.$on("$destroy", d), r
3380 $watch: function(e, t, n, r) {
3382 if (i.$$watchDelegate) return i.$$watchDelegate(this, t, n, i, e);
3392 return a = null, T(t) || (c.fn = m), s || ((s = o.$$watchers = []).$$digestWatchIndex = -1), s.unshift(c), s.$$digestWatchIndex++, v(this, 1),
3395 e >= 0 && (v(o, -1), e < s.$$digestWatchIndex && s.$$digestWatchIndex--), a = null
3398 $watchGroup: function(e, t) {
3400 c = !1, l ? (l = !1, t(i, i, s)) : t(i, r, s)
3402 var r = new Array(e.length),
3403 i = new Array(e.length),
3410 return s.$evalAsync(function() {
3417 return 1 === e.length ? this.$watch(e[0], function(e, n, o) {
3418 i[0] = e, r[0] = n, t(i, e === n ? i : r, o)
3419 }) : (o(e, function(e, t) {
3420 var o = s.$watch(e, function(e, o) {
3421 i[t] = e, r[t] = o, c || (c = !0, s.$evalAsync(n))
3425 for (; a.length;) a.shift()()
3428 $watchCollection: function(e, t) {
3434 o !== f && (m = (o = f).length = 0, u++), t = r.length, m !== t && (u++, o.length = m = t);
3435 for (var c = 0; c < t; c++) s = o[c], a = r[c], s !== s && a !== a || s === a || (u++, o[c] = a)
3437 o !== h && (o = h = {}, m = 0, u++), t = 0;
3438 for (n in r) Hr.call(r, n) && (t++, a = r[n], s = o[n], n in o ? s !== s && a !== a || s === a || (u++, o[n] = a) : (m++, o[n] = a, u++));
3441 for (n in o) Hr.call(r, n) || (m--, delete o[n])
3444 else o !== r && (o = r, u++);
3449 var r, o, a, s = this,
3457 return this.$watch(d, function() {
3458 if (p ? (p = !1, t(r, r, s)) : t(r, a, s), c)
3461 a = new Array(r.length);
3462 for (var e = 0; e < r.length; e++) a[e] = r[e]
3465 for (var n in r) Hr.call(r, n) && (a[n] = r[n])
3470 $digest: function() {
3471 var e, i, o, c, l, d, f, h, m, v, b = t,
3474 p("$digest"), u.$$checkUrlChange(), this === C && null !== s && (u.defer.cancel(s), w()), a = null;
3477 for (var E = 0; E < x.length; E++) {
3479 (0, (v = x[E]).fn)(v.scope, v.locals)
3487 if (l = h.$$watchers)
3488 for (l.$$digestWatchIndex = l.length; l.$$digestWatchIndex--;) try {
3489 if (e = l[l.$$digestWatchIndex])
3490 if (c = e.get, (i = c(h)) === (o = e.last) || (e.eq ? z(i, o) : Qr(i) && Qr(o))) {
3495 } else d = !0, a = e, e.last = e.eq ? V(i, null) : i, (0, e.fn)(i, o === $ ? i : o, h), b < 5 && (_[m = 4 - b] || (_[m] = []), _[m].push({
3496 msg: T(e.exp) ? "fn: " + (e.exp.name || e.exp.toString()) : e.exp,
3503 if (!(f = h.$$watchersCount && h.$$childHead || h !== y && h.$$nextSibling))
3504 for (; h !== y && !(f = h.$$nextSibling);) h = h.$parent
3506 if ((d || x.length) && !b--) throw g(), n("infdig", "{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}", t, _)
3507 } while (d || x.length);
3508 for (g(); S < k.length;) try {
3513 k.length = S = 0, u.$$checkUrlChange()
3515 $destroy: function() {
3516 if (!this.$$destroyed) {
3517 var e = this.$parent;
3518 this.$broadcast("$destroy"), this.$$destroyed = !0, this === C && u.$$applicationDestroyed(), v(this, -this.$$watchersCount);
3519 for (var t in this.$$listenerCount) b(this, this.$$listenerCount[t], t);
3520 e && e.$$childHead === this && (e.$$childHead = this.$$nextSibling), e && e.$$childTail === this && (e.$$childTail = this.$$prevSibling), this.$$prevSibling && (this.$$prevSibling.$$nextSibling = this.$$nextSibling), this.$$nextSibling && (this.$$nextSibling.$$prevSibling = this.$$prevSibling), this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = m, this.$on = this.$watch = this.$watchGroup = function() {
3522 }, this.$$listeners = {}, this.$$nextSibling = null, f(this)
3525 $eval: function(e, t) {
3526 return l(e)(this, t)
3528 $evalAsync: function(e, t) {
3529 C.$$phase || x.length || u.defer(function() {
3530 x.length && C.$digest()
3537 $$postDigest: function(e) {
3540 $apply: function(e) {
3544 return this.$eval(e)
3558 $applyAsync: function(e) {
3560 e && M.push(function() {
3564 $on: function(e, t) {
3565 var n = this.$$listeners[e];
3566 n || (this.$$listeners[e] = n = []), n.push(t);
3569 r.$$listenerCount[e] || (r.$$listenerCount[e] = 0), r.$$listenerCount[e]++
3570 } while (r = r.$parent);
3573 var r = n.indexOf(t); - 1 !== r && (n[r] = null, b(i, 1, e))
3576 $emit: function(e, t) {
3577 var n, i, o, a = [],
3583 stopPropagation: function() {
3586 preventDefault: function() {
3587 l.defaultPrevented = !0
3589 defaultPrevented: !1
3591 u = W([l], arguments, 1);
3593 for (n = s.$$listeners[e] || a, l.currentScope = s, i = 0, o = n.length; i < o; i++)
3598 } else n.splice(i, 1), i--, o--;
3599 if (c) return l.currentScope = null, l;
3602 return l.currentScope = null, l
3604 $broadcast: function(e, t) {
3611 preventDefault: function() {
3612 a.defaultPrevented = !0
3614 defaultPrevented: !1
3616 if (!n.$$listenerCount[e]) return a;
3617 for (var s, c, l, u = W([a], arguments, 1); i = o;) {
3618 for (a.currentScope = i, c = 0, l = (s = i.$$listeners[e] || []).length; c < l; c++)
3623 } else s.splice(c, 1), c--, l--;
3624 if (!(o = i.$$listenerCount[e] && i.$$childHead || i !== n && i.$$nextSibling))
3625 for (; i !== n && !(o = i.$$nextSibling);) i = i.$parent
3627 return a.currentScope = null, a
3631 x = C.$$asyncQueue = [],
3632 k = C.$$postDigestQueue = [],
3633 M = C.$$applyAsyncQueue = [],
3640 var e = /^\s*(https?|ftp|mailto|tel|file):/,
3641 t = /^\s*((https?|ftp|file|blob):|data:image\/)/;
3642 this.aHrefSanitizationWhitelist = function(t) {
3643 return $(t) ? (e = t, this) : e
3644 }, this.imgSrcSanitizationWhitelist = function(e) {
3645 return $(e) ? (t = e, this) : t
3646 }, this.$get = function() {
3647 return function(n, r) {
3648 var i, o = r ? t : e;
3649 return "" === (i = Ln(n).href) || i.match(o) ? n : "unsafe:" + i
3655 return e.replace(ko, ke)
3659 if ("self" === e) return e;
3661 if (e.indexOf("***") > -1) throw Co("iwcard", "Illegal sequence *** in string matcher. String: {0}", e);
3662 return e = ni(e).replace(/\\\*\\\*/g, ".*").replace(/\\\*/g, "[^:/.?&;]*"), new RegExp("^" + e + "$")
3664 if (M(e)) return new RegExp("^" + e.source + "$");
3665 throw Co("imatcher", 'Matchers may only be "self", string patterns or RegExp objects')
3670 return $(e) && o(e, function(e) {
3676 this.SCE_CONTEXTS = xo;
3679 this.resourceUrlWhitelist = function(t) {
3680 return arguments.length && (e = Dn(t)), e
3681 }, this.resourceUrlBlacklist = function(e) {
3682 return arguments.length && (t = Dn(e)), t
3683 }, this.$get = ["$injector", function(n) {
3685 return "self" === e ? Fn(t) : !!e.exec(t.href)
3689 var i, o, a = Ln(n.toString()),
3691 for (i = 0, o = e.length; i < o; i++)
3697 for (i = 0, o = t.length; i < o; i++)
3706 var t = function(e) {
3707 this.$$unwrapTrustedValue = function() {
3711 return e && (t.prototype = new e), t.prototype.valueOf = function() {
3712 return this.$$unwrapTrustedValue()
3713 }, t.prototype.toString = function() {
3714 return this.$$unwrapTrustedValue().toString()
3717 var a = function(e) {
3718 throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3720 n.has("$sanitize") && (a = n.get("$sanitize"));
3723 return c[xo.HTML] = o(s), c[xo.CSS] = o(s), c[xo.URL] = o(s), c[xo.JS] = o(s), c[xo.RESOURCE_URL] = o(c[xo.URL]), {
3724 trustAs: function(e, t) {
3725 var n = c.hasOwnProperty(e) ? c[e] : null;
3726 if (!n) throw Co("icontext", "Attempted to trust a value in invalid context. Context: {0}; Value: {1}", e, t);
3727 if (null === t || y(t) || "" === t) return t;
3728 if ("string" != typeof t) throw Co("itype", "Attempted to trust a non-string value in a content requiring a string: Context: {0}", e);
3731 getTrusted: function(e, t) {
3732 if (null === t || y(t) || "" === t) return t;
3733 var n = c.hasOwnProperty(e) ? c[e] : null;
3734 if (n && t instanceof n) return t.$$unwrapTrustedValue();
3735 if (e === xo.RESOURCE_URL) {
3737 throw Co("insecurl", "Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}", t.toString())
3739 if (e === xo.HTML) return a(t);
3740 throw Co("unsafe", "Attempting to use an unsafe value in a safe context.")
3742 valueOf: function(e) {
3743 return e instanceof s ? e.$$unwrapTrustedValue() : e
3751 this.enabled = function(t) {
3752 return arguments.length && (e = !!t), e
3753 }, this.$get = ["$parse", "$sceDelegate", function(t, n) {
3754 if (e && Fr < 8) throw Co("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.");
3756 r.isEnabled = function() {
3758 }, r.trustAs = n.trustAs, r.getTrusted = n.getTrusted, r.valueOf = n.valueOf, e || (r.trustAs = r.getTrusted = function(e, t) {
3760 }, r.valueOf = g), r.parseAs = function(e, n) {
3762 return i.literal && i.constant ? i : t(n, function(t) {
3763 return r.getTrusted(e, t)
3769 return o(xo, function(e, t) {
3771 r[An("parse_as_" + n)] = function(t) {
3773 }, r[An("get_trusted_" + n)] = function(t) {
3775 }, r[An("trust_as_" + n)] = function(t) {
3783 this.$get = ["$window", "$document", function(e, t) {
3785 r = !(!(e.nw && e.nw.process) && e.chrome && (e.chrome.app && e.chrome.app.runtime || !e.chrome.app && e.chrome.runtime && e.chrome.runtime.id)) && e.history && e.history.pushState,
3786 i = h((/android (\d+)/.exec(jr((e.navigator || {}).userAgent)) || [])[1]),
3787 o = /Boxee/i.test((e.navigator || {}).userAgent),
3789 s = a.body && a.body.style,
3792 return s && (c = !!("transition" in s || "webkitTransition" in s), l = !!("animation" in s || "webkitAnimation" in s)), {
3793 history: !(!r || i < 4 || o),
3794 hasEvent: function(e) {
3795 if ("input" === e && Fr) return !1;
3797 var t = a.createElement("div");
3798 n[e] = "on" + e in t
3812 this.httpOptions = function(t) {
3813 return t ? (e = t, this) : e
3814 }, this.$get = ["$exceptionHandler", "$templateCache", "$http", "$q", "$sce", function(t, n, r, i, o) {
3816 a.totalPendingRequests++, E(s) && !y(n.get(s)) || (s = o.getTrustedResourceUrl(s));
3817 var l = r.defaults && r.defaults.transformResponse;
3818 return Jr(l) ? l = l.filter(function(e) {
3820 }) : l === At && (l = null), r.get(s, d({
3822 transformResponse: l
3823 }, e)).finally(function() {
3824 a.totalPendingRequests--
3825 }).then(function(e) {
3826 return n.put(s, e.data), e.data
3828 return c || (e = To("tpload", "Failed to load template: {0} (HTTP status: {1} {2})", s, e.status, e.statusText), t(e)), i.reject(e)
3831 return a.totalPendingRequests = 0, a
3836 this.$get = ["$rootScope", "$browser", "$location", function(e, t, n) {
3838 return r.findBindings = function(e, t, n) {
3840 return o(e.getElementsByClassName("ng-binding"), function(e) {
3841 var i = Zr.element(e).data("$binding");
3842 i && o(i, function(i) {
3843 n ? new RegExp("(^|\\s)" + ni(t) + "(\\s|\\||$)").test(i) && r.push(e) : -1 !== i.indexOf(t) && r.push(e)
3846 }, r.findModels = function(e, t, n) {
3847 for (var r = ["ng-", "data-ng-", "ng\\:"], i = 0; i < r.length; ++i) {
3848 var o = n ? "=" : "*=",
3849 a = "[" + r[i] + "model" + o + '"' + t + '"]',
3850 s = e.querySelectorAll(a);
3851 if (s.length) return s
3853 }, r.getLocation = function() {
3855 }, r.setLocation = function(t) {
3856 t !== n.url() && (n.url(t), e.$digest())
3857 }, r.whenStable = function(e) {
3858 t.notifyWhenNoOutstandingRequests(e)
3864 this.$get = ["$rootScope", "$browser", "$q", "$$q", "$exceptionHandler", function(e, t, n, r, i) {
3865 function o(o, s, c) {
3866 T(o) || (c = s, s = o, o = m);
3867 var l, u = Y(arguments, 3),
3869 f = (d ? r : n).defer(),
3871 return l = t.defer(function() {
3873 f.resolve(o.apply(null, u))
3877 delete a[h.$$timeoutId]
3880 }, s), h.$$timeoutId = l, a[l] = f, h
3883 return o.cancel = function(e) {
3884 return !!(e && e.$$timeoutId in a) && (kn(a[e.$$timeoutId].promise), a[e.$$timeoutId].reject("canceled"), delete a[e.$$timeoutId], t.defer.cancel(e.$$timeoutId))
3891 return Fr && (Mo.setAttribute("href", t), t = Mo.href), Mo.setAttribute("href", t), {
3893 protocol: Mo.protocol ? Mo.protocol.replace(/:$/, "") : "",
3895 search: Mo.search ? Mo.search.replace(/^\?/, "") : "",
3896 hash: Mo.hash ? Mo.hash.replace(/^#/, "") : "",
3897 hostname: Mo.hostname,
3899 pathname: "/" === Mo.pathname.charAt(0) ? Mo.pathname : "/" + Mo.pathname
3904 var t = E(e) ? Ln(e) : e;
3905 return t.protocol === So.protocol && t.host === So.host
3915 return e.cookie || ""
3923 return decodeURIComponent(e)
3932 var e, a, s, c, l, u = t(r);
3934 for (e = (o = u).split("; "), i = {}, s = 0; s < e.length; s++)(c = (a = e[s]).indexOf("=")) > 0 && (l = n(a.substring(0, c)), y(i[l]) && (i[l] = n(a.substring(c + 1))));
3947 return o(r, function(e, n) {
3951 return e.factory(r + n, i)
3954 this.register = t, this.$get = ["$injector", function(e) {
3955 return function(t) {
3958 }], t("currency", Kn), t("date", sr), t("filter", zn), t("json", cr), t("limitTo", lr), t("lowercase", Po), t("number", Zn), t("orderBy", dr), t("uppercase", Ho)
3962 return function(e, t, n, o) {
3964 if (null == e) return e;
3965 throw r("filter")("notarray", "Expected array but received: {0}", e)
3984 return Array.prototype.filter.call(e, a)
3988 function Wn(e, t, n, r) {
3989 var i = _(e) && n in e;
3990 return !0 === t ? t = z : T(t) || (t = function(e, t) {
3991 return !y(e) && (null === e || null === t ? e === t : !(_(t) || _(e) && !b(e)) && (e = jr("" + e), t = jr("" + t), -1 !== e.indexOf(t)))
3994 return i && !_(o) ? Yn(o, e[n], t, n, !1) : Yn(o, e, t, n, r)
3998 function Yn(e, t, n, r, i, o) {
4001 if ("string" === s && "!" === t.charAt(0)) return !Yn(e, t.substring(1), n, r, i);
4002 if (Jr(e)) return e.some(function(e) {
4003 return Yn(e, t, n, r, i)
4010 if (c.charAt && "$" !== c.charAt(0) && Yn(e[c], t, n, r, !0)) return !0;
4011 return !o && Yn(e, t, n, r, !1)
4013 if ("object" === s) {
4016 if (!T(l) && !y(l)) {
4018 if (!Yn(u ? e : e[c], l, n, r, u, u)) return !1
4032 return null === e ? "null" : typeof e
4036 var t = e.NUMBER_FORMATS;
4037 return function(e, n, r) {
4038 return y(n) && (n = t.CURRENCY_SYM), y(r) && (r = t.PATTERNS[1].maxFrac), null == e ? e : Jn(e, t.PATTERNS[1], t.GROUP_SEP, t.DECIMAL_SEP, r).replace(/\u00A4/g, n)
4043 var t = e.NUMBER_FORMATS;
4044 return function(e, n) {
4045 return null == e ? e : Jn(e, t.PATTERNS[0], t.GROUP_SEP, t.DECIMAL_SEP, n)
4050 var t, n, r, i, o, a = 0;
4051 for ((n = e.indexOf(Oo)) > -1 && (e = e.replace(Oo, "")), (r = e.search(/e/i)) > 0 ? (n < 0 && (n = r), n += +e.slice(r + 1), e = e.substring(0, r)) : n < 0 && (n = e.length), r = 0; e.charAt(r) === Do; r++);
4052 if (r === (o = e.length)) t = [0], n = 1;
4054 for (o--; e.charAt(o) === Do;) o--;
4055 for (n -= r, t = [], i = 0; r <= o; r++, i++) t[i] = +e.charAt(r)
4057 return n > Ao && (t = t.splice(0, Ao - 1), a = n - 1, n = 1), {
4064 function Qn(e, t, n, r) {
4067 a = (t = y(t) ? Math.min(Math.max(n, o), r) : +t) + e.i,
4070 i.splice(Math.max(e.i, a));
4071 for (var c = a; c < i.length; c++) i[c] = 0
4073 o = Math.max(0, o), e.i = 1, i.length = Math.max(1, a = t + 1), i[0] = 0;
4074 for (var l = 1; l < a; l++) i[l] = 0
4078 for (var u = 0; u > a; u--) i.unshift(0), e.i++;
4081 for (; o < Math.max(0, t); o++) i.push(0);
4082 var d = i.reduceRight(function(e, t, n, r) {
4083 return t += e, r[n] = t % 10, Math.floor(t / 10)
4085 d && (i.unshift(d), e.i++)
4088 function Jn(e, t, n, r, i) {
4089 if (!E(e) && !C(e) || isNaN(e)) return "";
4090 var o, a = !isFinite(e),
4092 c = Math.abs(e) + "",
4096 Qn(o = Xn(c), i, t.minFrac, t.maxFrac);
4101 for (s = u.reduce(function(e, t) {
4103 }, !0); d < 0;) u.unshift(0), d++;
4104 d > 0 ? h = u.splice(d, u.length) : (h = u, u = [0]);
4106 for (u.length >= t.lgSize && p.unshift(u.splice(-t.lgSize, u.length).join("")); u.length > t.gSize;) p.unshift(u.splice(-t.gSize, u.length).join(""));
4107 u.length && p.unshift(u.join("")), l = p.join(n), h.length && (l += r + h.join("")), f && (l += "e+" + f)
4109 return e < 0 && !s ? t.negPre + l + t.negSuf : t.posPre + l + t.posSuf
4112 function er(e, t, n, r) {
4114 for ((e < 0 || r && e <= 0) && (r ? e = 1 - e : (e = -e, i = "-")), e = "" + e; e.length < t;) e = Do + e;
4115 return n && (e = e.substr(e.length - t)), i + e
4118 function tr(e, t, n, r, i) {
4121 var a = o["get" + e]();
4122 return (n > 0 || a > -n) && (a += n), 0 === a && -12 === n && (a = 12), er(a, t, r, i)
4126 function nr(e, t, n) {
4127 return function(r, i) {
4128 var o = r["get" + e]();
4129 return i[Lr((n ? "STANDALONE" : "") + (t ? "SHORT" : "") + e)][o]
4134 var t = new Date(e, 0, 1).getDay();
4135 return new Date(e, 0, (t <= 4 ? 5 : 12) - t)
4139 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + (4 - e.getDay()))
4143 return function(t) {
4144 var n = rr(t.getFullYear()),
4146 return er(1 + Math.round(r / 6048e5), e)
4151 return e.getFullYear() <= 0 ? t.ERAS[0] : t.ERAS[1]
4157 if (t = e.match(n)) {
4158 var r = new Date(0),
4161 a = t[8] ? r.setUTCFullYear : r.setFullYear,
4162 s = t[8] ? r.setUTCHours : r.setHours;
4163 t[9] && (i = h(t[9] + t[10]), o = h(t[9] + t[11])), a.call(r, h(t[1]), h(t[2]) - 1, h(t[3]));
4164 var c = h(t[4] || 0) - i,
4165 l = h(t[5] || 0) - o,
4167 d = Math.round(1e3 * parseFloat("0." + (t[7] || 0)));
4168 return s.call(r, c, l, u, d), r
4172 var n = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;
4173 return function(n, r, i) {
4176 if (r = r || "mediumDate", r = e.DATETIME_FORMATS[r] || r, E(n) && (n = Ro.test(n) ? h(n) : t(n)), C(n) && (n = new Date(n)), !x(n) || !isFinite(n.getTime())) return n;
4177 for (; r;)(s = Io.exec(r)) ? r = (l = W(l, s, 1)).pop() : (l.push(r), r = null);
4178 var u = n.getTimezoneOffset();
4179 return i && (u = Q(i, u), n = ee(n, i, !0)), o(l, function(t) {
4180 a = No[t], c += a ? a(n, e.DATETIME_FORMATS, u) : "''" === t ? "'" : t.replace(/(^'|'$)/g, "").replace(/''/g, "'")
4186 return function(e, t) {
4187 return y(t) && (t = 2), Z(e, t)
4192 return function(e, t, n) {
4193 return t = Math.abs(Number(t)) === 1 / 0 ? Number(t) : h(t), Qr(t) ? e : (C(e) && (e = e.toString()), i(e) ? (n = !n || isNaN(n) ? 0 : h(n), n = n < 0 ? Math.max(0, e.length + n) : n, t >= 0 ? ur(e, n, n + t) : 0 === n ? ur(e, t, e.length) : ur(e, Math.max(0, n + t), n)) : e)
4197 function ur(e, t, n) {
4198 return E(e) ? e.slice(t, n) : Br.call(e, t, n)
4203 return t.map(function(t) {
4207 else if (E(t) && ("+" !== t.charAt(0) && "-" !== t.charAt(0) || (n = "-" === t.charAt(0) ? -1 : 1, t = t.substring(1)), "" !== t && (r = e(t)).constant)) {
4232 return T(e.valueOf) && (e = e.valueOf(), n(e)) ? e : (b(e) && (e = e.toString(), n(e)), e)
4237 return null === e ? (n = "string", e = "null") : "object" === n && (e = o(e)), {
4251 "string" === r ? (o = o.toLowerCase(), a = a.toLowerCase()) : "object" === r && (_(o) && (o = e.index), _(a) && (a = t.index)), o !== a && (n = o < a ? -1 : 1)
4252 } else n = r < i ? -1 : 1;
4255 return function(e, n, o, c) {
4256 if (null == e) return e;
4257 if (!i(e)) throw r("orderBy")("notarray", "Expected array but received: {0}", e);
4258 Jr(n) || (n = [n]), 0 === n.length && (n = ["+"]);
4262 f = Array.prototype.map.call(e, function(e, t) {
4270 predicateValues: l.map(function(n) {
4271 return a(n.get(e), t)
4275 return f.sort(function(e, t) {
4276 for (var n = 0, r = l.length; n < r; n++) {
4277 var i = d(e.predicateValues[n], t.predicateValues[n]);
4278 if (i) return i * l[n].descending * u
4280 return (d(e.tieBreaker, t.tieBreaker) || s(e.tieBreaker, t.tieBreaker)) * u
4281 }), e = f.map(function(e) {
4288 return T(e) && (e = {
4290 }), e.restrict = e.restrict || "AC", v(e)
4293 function hr(e, t, n, r, i) {
4294 this.$$controls = [], this.$error = {}, this.$$success = {}, this.$pending = void 0, this.$name = i(t.name || t.ngForm || "")(n), this.$dirty = !1, this.$pristine = !0, this.$valid = !0, this.$invalid = !1, this.$submitted = !1, this.$$parentForm = Fo, this.$$element = e, this.$$animate = r, pr(this)
4298 e.$$classCache = {}, e.$$classCache[Ea] = !(e.$$classCache[wa] = e.$$element.hasClass(wa))
4302 function t(e, t, n, r) {
4303 e[t] || (e[t] = {}), a(e[t], n, r)
4306 function n(e, t, n, r) {
4307 e[t] && s(e[t], n, r), gr(e[t]) && (e[t] = void 0)
4310 function r(e, t, n) {
4311 n && !e.$$classCache[t] ? (e.$$animate.addClass(e.$$element, t), e.$$classCache[t] = !0) : !n && e.$$classCache[t] && (e.$$animate.removeClass(e.$$element, t), e.$$classCache[t] = !1)
4314 function i(e, t, n) {
4315 t = t ? "-" + fe(t, "-") : "", r(e, wa + t, !0 === n), r(e, Ea + t, !1 === n)
4320 o.prototype.$setValidity = function(e, o, c) {
4321 y(o) ? t(this, "$pending", e, c) : n(this, "$pending", e, c), I(o) ? o ? (s(this.$error, e, c), a(this.$$success, e, c)) : (a(this.$error, e, c), s(this.$$success, e, c)) : (s(this.$error, e, c), s(this.$$success, e, c)), this.$pending ? (r(this, qo, !0), this.$valid = this.$invalid = void 0, i(this, "", null)) : (r(this, qo, !1), this.$valid = gr(this.$error), this.$invalid = !this.$valid, i(this, "", this.$valid));
4323 i(this, e, l = this.$pending && this.$pending[e] ? void 0 : !this.$error[e] && (!!this.$$success[e] || null)), this.$$parentForm.$setValidity(e, l, this)
4330 if (e.hasOwnProperty(t)) return !1;
4335 e.$formatters.push(function(t) {
4336 return e.$isEmpty(t) ? t : t.toString()
4340 function br(e, t, n, r, i, o) {
4341 var a = jr(t[0].type);
4344 t.on("compositionstart", function() {
4346 }), t.on("compositionend", function() {
4350 var c, l = function(e) {
4351 if (c && (o.defer.cancel(c), c = null), !s) {
4354 "password" === a || n.ngTrim && "false" === n.ngTrim || (i = ti(i)), (r.$viewValue !== i || "" === i && r.$$hasNativeValidators) && r.$setViewValue(i, l)
4357 if (i.hasEvent("input")) t.on("input", l);
4359 var u = function(e, t, n) {
4360 c || (c = o.defer(function() {
4361 c = null, t && t.value === n || l(e)
4364 t.on("keydown", function(e) {
4366 91 === t || 15 < t && t < 19 || 37 <= t && t <= 40 || u(e, this, this.value)
4367 }), i.hasEvent("paste") && t.on("paste cut", u)
4369 t.on("change", l), ta[a] && r.$$hasNativeValidators && a === n.type && t.on(ea, function(e) {
4374 c = o.defer(function() {
4375 c = null, t.badInput === n && t.typeMismatch === r || l(e)
4378 }), r.$render = function() {
4379 var e = r.$isEmpty(r.$viewValue) ? "" : r.$viewValue;
4380 t.val() !== e && t.val(e)
4385 return function(n, r) {
4389 if ('"' === n.charAt(0) && '"' === n.charAt(n.length - 1) && (n = n.substring(1, n.length - 1)), zo.test(n)) return new Date(n);
4390 if (e.lastIndex = 0, i = e.exec(n)) return i.shift(), a = r ? {
4391 yyyy: r.getFullYear(),
4392 MM: r.getMonth() + 1,
4397 sss: r.getMilliseconds() / 1e3
4406 }, o(i, function(e, n) {
4407 n < t.length && (a[t[n]] = +e)
4408 }), new Date(a.yyyy, a.MM - 1, a.dd, a.HH, a.mm, a.ss || 0, 1e3 * a.sss || 0)
4414 function $r(e, t, n, r) {
4415 return function(i, o, a, s, c, l, u) {
4417 return e && !(e.getTime && e.getTime() !== e.getTime())
4421 return $(e) && !x(e) ? n(e) || void 0 : e
4423 _r(i, o, a, s), br(i, o, a, s, c, l);
4424 var h, p = s && s.$options.getOption("timezone");
4425 if (s.$$parserName = e, s.$parsers.push(function(e) {
4426 if (s.$isEmpty(e)) return null;
4429 return p && (r = ee(r, p)), r
4431 }), s.$formatters.push(function(e) {
4432 if (e && !x(e)) throw ka("datefmt", "Expected `{0}` to be a date", e);
4433 return d(e) ? ((h = e) && p && (h = ee(h, p, !0)), u("date")(e, r, p)) : (h = null, "")
4434 }), $(a.min) || a.ngMin) {
4436 s.$validators.min = function(e) {
4437 return !d(e) || y(m) || n(e) >= m
4438 }, a.$observe("min", function(e) {
4439 m = f(e), s.$validate()
4442 if ($(a.max) || a.ngMax) {
4444 s.$validators.max = function(e) {
4445 return !d(e) || y(g) || n(e) <= g
4446 }, a.$observe("max", function(e) {
4447 g = f(e), s.$validate()
4453 function _r(e, t, n, r) {
4455 (r.$$hasNativeValidators = _(i.validity)) && r.$parsers.push(function(e) {
4456 var n = t.prop(Pr) || {};
4457 return n.badInput || n.typeMismatch ? void 0 : e
4462 e.$$parserName = "number", e.$parsers.push(function(t) {
4463 return e.$isEmpty(t) ? null : Go.test(t) ? parseFloat(t) : void 0
4464 }), e.$formatters.push(function(t) {
4465 if (!e.$isEmpty(t)) {
4466 if (!C(t)) throw ka("numfmt", "Expected `{0}` to be a number", t);
4474 return $(e) && !C(e) && (e = parseFloat(e)), Qr(e) ? void 0 : e
4478 return (0 | e) === e
4482 var t = e.toString(),
4485 if (-1 < e && e < 1) {
4486 var r = /e-(\d+)$/.exec(t);
4487 if (r) return Number(r[1])
4491 return t.length - n - 1
4494 function kr(e, t, n) {
4500 var s = i ? xr(r) : 0,
4503 u = Math.max(s, c, l),
4504 d = Math.pow(10, u);
4505 r *= d, t *= d, n *= d, i && (r = Math.round(r)), o && (t = Math.round(t)), a && (n = Math.round(n))
4507 return (r - t) % n == 0
4510 function Tr(e, t, n, r, i) {
4513 if (!(o = e(r)).constant) throw ka("constexpr", "Expected constant expression for `{0}`, but saw `{1}`.", n, r);
4521 if (!e || !e.length) return [];
4522 if (!t || !t.length) return e;
4524 e: for (var r = 0; r < e.length; r++) {
4525 for (var i = e[r], o = 0; o < t.length; o++)
4526 if (i === t[o]) continue e;
4533 return e && e.split(" ")
4538 return Jr(e) ? t = e.map(i).join(" ") : _(e) && (t = Object.keys(e).filter(function(t) {
4545 if (Jr(e)) t = e.map(a);
4548 t = Object.keys(e).filter(function(t) {
4550 return !n && y(r) && (n = !0), r
4551 }), n && t.push(void 0)
4557 return ["$parse", function(c) {
4560 link: function(l, u, d) {
4562 e = m(r(e), 1), d.$addClass(e)
4566 e = m(r(e), -1), d.$removeClass(e)
4576 d.$addClass(l), d.$removeClass(c)
4581 return o(e, function(e) {
4582 (t > 0 || w[e]) && (w[e] = (w[e] || 0) + t, w[e] === +(t > 0) && n.push(e))
4587 E === t && p(v, e), v = e
4589 var v, b = d[e].trim(),
4590 y = ":" === b.charAt(0) && ":" === b.charAt(1),
4591 $ = c(b, y ? a : i),
4592 _ = y ? function(e) {
4596 w = u.data("$classCounts"),
4598 w || (w = be(), u.data("$classCounts", w)), "ngClass" !== e && (s || (s = c("$index", function(e) {
4600 })), l.$watch(s, function(e) {
4601 e === t ? f(v) : h(v), E = e
4602 })), l.$watch($, _, y)
4608 function Sr(e, t, n, r, i, o, a, s, c) {
4609 this.$viewValue = Number.NaN, this.$modelValue = Number.NaN, this.$$rawModelValue = void 0, 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 = void 0, this.$name = c(n.name || "", !1)(e), this.$$parentForm = Fo, this.$options = Ta, this.$$parsedNgModel = i(n.ngModel), this.$$parsedNgModelAssign = this.$$parsedNgModel.assign, this.$$ngModelGet = this.$$parsedNgModel, this.$$ngModelSet = this.$$parsedNgModelAssign, this.$$pendingDebounce = null, this.$$parserValid = void 0, this.$$currentValidationRunId = 0, Object.defineProperty(this, "$$scope", {
4611 }), this.$$attr = n, this.$$element = r, this.$$animate = o, this.$$timeout = a, this.$$parse = i, this.$$q = s, this.$$exceptionHandler = t, pr(this), Ar(this)
4615 e.$$scope.$watch(function(t) {
4616 var n = e.$$ngModelGet(t);
4617 if (n !== e.$modelValue && (e.$modelValue === e.$modelValue || n === n)) {
4618 e.$modelValue = e.$$rawModelValue = n, e.$$parserValid = void 0;
4619 for (var r = e.$formatters, i = r.length, o = n; i--;) o = r[i](o);
4620 e.$viewValue !== o && (e.$$updateEmptyClasses(o), e.$viewValue = e.$$lastCommittedViewValue = o, e.$render(), e.$$runValidators(e.$modelValue, e.$viewValue, m))
4631 o(t, function(t, n) {
4632 $(e[n]) || (e[n] = t)
4637 e.prop("selected", t), e.attr("selected", t)
4642 Rr = /^\/(.+)\/([a-z]*)$/,
4644 Hr = Object.prototype.hasOwnProperty,
4646 return E(e) ? e.toLowerCase() : e
4649 return E(e) ? e.toUpperCase() : e
4651 "i" !== "I".toLowerCase() && (jr = function(e) {
4652 return E(e) ? e.replace(/[A-Z]/g, function(e) {
4653 return String.fromCharCode(32 | e.charCodeAt(0))
4655 }, Lr = function(e) {
4656 return E(e) ? e.replace(/[a-z]/g, function(e) {
4657 return String.fromCharCode(-33 & e.charCodeAt(0))
4660 var Fr, qr, Ur, Vr, Br = [].slice,
4663 Yr = Object.prototype.toString,
4664 Gr = Object.getPrototypeOf,
4666 Zr = e.angular || (e.angular = {}),
4668 Fr = e.document.documentMode;
4669 var Qr = Number.isNaN || function(e) {
4672 m.$inject = [], g.$inject = [];
4673 var Jr = Array.isArray,
4674 ei = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/,
4676 return E(e) ? e.trim() : e
4679 return e.replace(/([-()[\]{}+?*.$^|,:#<!\\])/g, "\\$1").replace(/\x08/g, "\\x08")
4683 var t = e.document.querySelector("[ng-csp]") || e.document.querySelector("[data-ng-csp]");
4685 var n = t.getAttribute("ng-csp") || t.getAttribute("data-ng-csp");
4687 noUnsafeEval: !n || -1 !== n.indexOf("no-unsafe-eval"),
4688 noInlineStyle: !n || -1 !== n.indexOf("no-inline-style")
4691 noUnsafeEval: function() {
4693 return new Function(""), !1
4704 if ($(ii.name_)) return ii.name_;
4705 var t, n, r, i, o = ai.length;
4706 for (n = 0; n < o; ++n)
4707 if (r = ai[n], t = e.document.querySelector("[" + r.replace(":", "\\:") + "jq]")) {
4708 i = t.getAttribute(r + "jq");
4714 ai = ["ng-", "data-ng-", "ng:", "x-ng-"],
4716 var n = t.currentScript;
4718 if (!(n instanceof e.HTMLScriptElement || n instanceof e.SVGScriptElement)) return !1;
4719 var r = n.attributes;
4720 return [r.getNamedItem("src"), r.getNamedItem("href"), r.getNamedItem("xlink:href")].every(function(e) {
4722 if (!e.value) return !1;
4723 var n = t.createElement("a");
4724 if (n.href = e.value, t.location.origin === n.origin) return !0;
4725 switch (n.protocol) {
4750 codeName: "interdimensional-cable"
4752 Ne.expando = "ng339";
4753 var gi = Ne.cache = {},
4755 Ne._data = function(e) {
4756 return this.cache[e[this.expando]] || {}
4758 var bi = /-([a-z])/g,
4761 mouseleave: "mouseout",
4762 mouseenter: "mouseover"
4765 wi = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
4768 xi = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
4770 option: [1, '<select multiple="multiple">', "</select>"],
4771 thead: [1, "<table>", "</table>"],
4772 col: [2, "<table><colgroup>", "</colgroup></table>"],
4773 tr: [2, "<table><tbody>", "</tbody></table>"],
4774 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
4775 _default: [0, "", ""]
4777 ki.optgroup = ki.option, ki.tbody = ki.tfoot = ki.colgroup = ki.caption = ki.thead, ki.th = ki.td;
4778 var Ti = e.Node.prototype.contains || function(e) {
4779 return !!(16 & this.compareDocumentPosition(e))
4781 Mi = Ne.prototype = {
4783 toString: function() {
4785 return o(this, function(t) {
4787 }), "[" + e.join(", ") + "]"
4790 return qr(e >= 0 ? this[e] : this[this.length + e])
4798 o("multiple,selected,checked,disabled,readOnly,required,open".split(","), function(e) {
4802 o("input,select,option,textarea,button,form,details".split(","), function(e) {
4806 ngMinlength: "minlength",
4807 ngMaxlength: "maxlength",
4810 ngPattern: "pattern",
4816 hasData: function(e) {
4817 for (var t in gi[e.ng339]) return !0;
4820 cleanData: function(e) {
4821 for (var t = 0, n = e.length; t < n; t++) He(e[t])
4828 scope: function(e) {
4829 return qr.data(e, "$scope") || ze(e.parentNode || e, ["$isolateScope", "$scope"])
4831 isolateScope: function(e) {
4832 return qr.data(e, "$isolateScope") || qr.data(e, "$isolateScopeNoTemplate")
4835 injector: function(e) {
4836 return ze(e, "$injector")
4838 removeAttr: function(e, t) {
4839 e.removeAttribute(t)
4842 css: function(e, t, n) {
4843 if (t = xe(t), !$(n)) return e.style[t];
4846 attr: function(e, t, n) {
4847 var r, i = e.nodeType;
4848 if (i !== di && 2 !== i && i !== fi && e.getAttribute) {
4851 if (!$(n)) return r = e.getAttribute(t), a && null !== r && (r = o), null === r ? void 0 : r;
4852 null === n || !1 === n && a ? e.removeAttribute(t) : e.setAttribute(t, a ? o : n)
4855 prop: function(e, t, n) {
4856 if (!$(n)) return e[t];
4863 return n === ui || n === di ? e.textContent : ""
4867 return e.$dv = "", e
4869 val: function(e, t) {
4871 if (e.multiple && "select" === F(e)) {
4873 return o(e.options, function(e) {
4874 e.selected && n.push(e.value || e.text)
4881 html: function(e, t) {
4882 if (y(t)) return e.innerHTML;
4883 Re(e, !0), e.innerHTML = t
4887 Ne.prototype[t] = function(t, n) {
4888 var r, i, o = this.length;
4889 if (e !== We && y(2 === e.length && e !== Fe && e !== Be ? t : n)) {
4891 for (r = 0; r < o; r++)
4892 if (e === Le) e(this[r], t);
4894 for (i in t) e(this[r], i, t[i]);
4897 for (var a = e.$dv, s = y(a) ? Math.min(o, 1) : o, c = 0; c < s; c++) {
4898 var l = e(this[c], t, n);
4903 for (r = 0; r < o; r++) e(this[r], t, n);
4908 on: function(e, t, n, r) {
4909 if ($(r)) throw _i("onargs", "jqLite#on() does not support the `selector` or `eventData` parameters");
4914 a || (a = i.handle = Qe(e, o));
4915 for (var s = t.indexOf(" ") >= 0 ? t.split(" ") : [t], c = s.length, l = function(t, r, i) {
4917 s || ((s = o[t] = []).specialHandlerWrapper = r, "$destroy" === t || i || e.addEventListener(t, a)), s.push(n)
4918 }; c--;) t = s[c], $i[t] ? (l($i[t], et), l(t, void 0, !0)) : l(t)
4922 one: function(e, t, n) {
4923 (e = qr(e)).on(t, function r() {
4924 e.off(t, n), e.off(t, r)
4927 replaceWith: function(e, t) {
4928 var n, r = e.parentNode;
4929 Re(e), o(new Ne(t), function(t) {
4930 n ? r.insertBefore(t, n.nextSibling) : r.replaceChild(t, e), n = t
4933 children: function(e) {
4935 return o(e.childNodes, function(e) {
4936 e.nodeType === ui && t.push(e)
4939 contents: function(e) {
4940 return e.contentDocument || e.childNodes || []
4942 append: function(e, t) {
4944 if (n === ui || n === pi)
4945 for (var r = 0, i = (t = new Ne(t)).length; r < i; r++) {
4950 prepend: function(e, t) {
4951 if (e.nodeType === ui) {
4952 var n = e.firstChild;
4953 o(new Ne(t), function(t) {
4954 e.insertBefore(t, n)
4958 wrap: function(e, t) {
4959 De(e, qr(t).eq(0).clone()[0])
4962 detach: function(e) {
4965 after: function(e, t) {
4969 for (var i = 0, o = (t = new Ne(t)).length; i < o; i++) {
4971 r.insertBefore(a, n.nextSibling), n = a
4976 toggleClass: function(e, t, n) {
4977 t && o(t.split(" "), function(t) {
4979 y(r) && (r = !Fe(e, t)), (r ? Ue : qe)(e, t)
4982 parent: function(e) {
4983 var t = e.parentNode;
4984 return t && t.nodeType !== pi ? t : null
4987 return e.nextElementSibling
4989 find: function(e, t) {
4990 return e.getElementsByTagName ? e.getElementsByTagName(t) : []
4993 triggerHandler: function(e, t, n) {
4994 var r, i, a, s = t.type || t,
4999 preventDefault: function() {
5000 this.defaultPrevented = !0
5002 isDefaultPrevented: function() {
5003 return !0 === this.defaultPrevented
5005 stopImmediatePropagation: function() {
5006 this.immediatePropagationStopped = !0
5008 isImmediatePropagationStopped: function() {
5009 return !0 === this.immediatePropagationStopped
5014 }, t.type && (r = d(r, t)), i = _e(u), a = n ? [r].concat(n) : [r], o(i, function(t) {
5015 r.isImmediatePropagationStopped() || t.apply(e, a)
5019 Ne.prototype[t] = function(t, n, r) {
5020 for (var i, o = 0, a = this.length; o < a; o++) y(i) ? $(i = e(this[o], t, n, r)) && (i = qr(i)) : Ve(i, e(this[o], t, n, r));
5021 return $(i) ? i : this
5023 }), Ne.prototype.bind = Ne.prototype.on, Ne.prototype.unbind = Ne.prototype.off;
5024 var Di = Object.create(null);
5027 return e === this._lastKey ? this._lastIndex : (this._lastKey = e, this._lastIndex = this._keys.indexOf(e), this._lastIndex)
5029 _transformKey: function(e) {
5030 return Qr(e) ? Di : e
5033 e = this._transformKey(e);
5034 var t = this._idx(e);
5035 if (-1 !== t) return this._values[t]
5037 set: function(e, t) {
5038 e = this._transformKey(e);
5039 var n = this._idx(e); - 1 === n && (n = this._lastIndex = this._keys.length), this._keys[n] = e, this._values[n] = t
5041 delete: function(e) {
5042 e = this._transformKey(e);
5043 var t = this._idx(e);
5044 return -1 !== t && (this._keys.splice(t, 1), this._values.splice(t, 1), this._lastKey = NaN, this._lastIndex = -1, !0)
5049 this.$get = [function() {
5054 Pi = /^[^(]*\(\s*([^)]*)\)/m,
5056 ji = /^\s*(_?)(\S+?)\1\s*$/,
5057 Li = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
5058 Fi = r("$injector");
5059 st.$$annotate = function(e, t, n) {
5061 if ("function" == typeof e) {
5062 if (!(r = e.$inject)) {
5063 if (r = [], e.length) {
5064 if (t) throw E(n) && n || (n = e.name || at(e)), Fi("strictdi", "{0} is not using explicit annotation and cannot be invoked in strict mode", n);
5065 o(ot(e)[1].split(Hi), function(e) {
5066 e.replace(ji, function(e, t, n) {
5073 } else Jr(e) ? (pe(e[i = e.length - 1], "fn"), r = e.slice(0, i)) : pe(e, "fn", !0);
5076 var qi = r("$animate"),
5084 this.$get = ["$$AnimateRunner", "$rootScope", function(n, r) {
5085 function i(e, t, n) {
5087 return t && o(t = E(t) ? t.split(" ") : Jr(t) ? t : [], function(t) {
5088 t && (r = !0, e[t] = n)
5096 var r = dt(t.attr("class")),
5099 o(n, function(e, t) {
5100 e !== !!r[t] && (e ? i += (i.length ? " " : "") + t : a += (a.length ? " " : "") + t)
5101 }), o(t, function(e) {
5102 i && Ue(e, i), a && qe(e, a)
5108 function s(n, o, s) {
5109 var c = e.get(n) || {},
5112 (l || u) && (e.set(n, c), t.push(n), 1 === t.length && r.$$postDigest(a))
5119 push: function(e, t, r, i) {
5120 i && i(), (r = r || {}).from && e.css(r.from), r.to && e.css(r.to), (r.addClass || r.removeClass) && s(e, r.addClass, r.removeClass);
5122 return o.complete(), o
5127 zi = ["$provide", function(e) {
5131 this.$$registeredAnimations = Object.create(null), this.register = function(n, r) {
5132 if (n && "." !== n.charAt(0)) throw qi("notcsel", "Expecting class selector starting with '.' got '{0}'.", n);
5133 var i = n + "-animation";
5134 t.$$registeredAnimations[n.substr(1)] = i, e.factory(i, r)
5135 }, this.customFilter = function(e) {
5136 return 1 === arguments.length && (r = T(e) ? e : null), r
5137 }, this.classNameFilter = function(e) {
5138 if (1 === arguments.length && (n = e instanceof RegExp ? e : null) && new RegExp("[(\\s|\\/)]ng-animate[(\\s|\\/)]").test(n.toString())) throw n = null, qi("nongcls", '$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', "ng-animate");
5140 }, this.$get = ["$$animateQueue", function(e) {
5141 function t(e, t, n) {
5144 !r || r.parentNode || r.previousElementSibling || (n = null)
5146 n ? n.after(e) : t.prepend(e)
5153 cancel: function(e) {
5156 enter: function(n, r, i, o) {
5157 return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "enter", ft(o))
5159 move: function(n, r, i, o) {
5160 return r = r && qr(r), i = i && qr(i), r = r || i.parent(), t(n, r, i), e.push(n, "move", ft(o))
5162 leave: function(t, n) {
5163 return e.push(t, "leave", ft(n), function() {
5167 addClass: function(t, n, r) {
5168 return r = ft(r), r.addClass = lt(r.addclass, n), e.push(t, "addClass", r)
5170 removeClass: function(t, n, r) {
5171 return r = ft(r), r.removeClass = lt(r.removeClass, n), e.push(t, "removeClass", r)
5173 setClass: function(t, n, r, i) {
5174 return i = ft(i), i.addClass = lt(i.addClass, n), i.removeClass = lt(i.removeClass, r), e.push(t, "setClass", i)
5176 animate: function(t, n, r, i, o) {
5177 return o = ft(o), o.from = o.from ? d(o.from, n) : n, o.to = o.to ? d(o.to, r) : r, i = i || "ng-inline-animate", o.tempClasses = lt(o.tempClasses, i), e.push(t, "animate", o)
5183 this.$get = ["$$rAF", function(e) {
5185 n.push(t), n.length > 1 || e(function() {
5186 for (var e = 0; e < n.length; e++) n[e]();
5193 return t(function() {
5203 this.$get = ["$q", "$sniffer", "$$animateAsyncRun", "$$isDocumentHidden", "$timeout", function(e, t, n, r, i) {
5210 this._doneCallbacks = [], this._tick = function(e) {
5214 return a.chain = function(e, t) {
5216 r !== e.length ? e[r](function(e) {
5217 !1 !== e ? (r++, n()) : t(!1)
5222 }, a.all = function(e, t) {
5224 i = i && n, ++r === e.length && t(i)
5232 setHost: function(e) {
5236 2 === this._state ? e() : this._doneCallbacks.push(e)
5239 getPromise: function() {
5240 if (!this.promise) {
5242 this.promise = e(function(e, n) {
5243 t.done(function(t) {
5244 !1 === t ? n() : e()
5250 then: function(e, t) {
5251 return this.getPromise().then(e, t)
5253 catch: function(e) {
5254 return this.getPromise().catch(e)
5256 finally: function(e) {
5257 return this.getPromise().finally(e)
5260 this.host.pause && this.host.pause()
5262 resume: function() {
5263 this.host.resume && this.host.resume()
5266 this.host.end && this.host.end(), this._resolve(!0)
5268 cancel: function() {
5269 this.host.cancel && this.host.cancel(), this._resolve(!1)
5271 complete: function(e) {
5273 0 === t._state && (t._state = 1, t._tick(function() {
5277 _resolve: function(e) {
5278 2 !== this._state && (o(this._doneCallbacks, function(t) {
5280 }), this._doneCallbacks.length = 0, this._state = 2)
5286 this.$get = ["$$rAF", "$q", "$$AnimateRunner", function(e, t, n) {
5287 return function(t, r) {
5289 return e(function() {
5290 o(), s || c.complete(), s = !0
5295 a.addClass && (t.addClass(a.addClass), a.addClass = null), a.removeClass && (t.removeClass(a.removeClass), a.removeClass = null), a.to && (t.css(a.to), a.to = null)
5298 a.$$prepared || (a = V(a)), a.cleanupStyles && (a.from = a.to = null), a.from && (t.css(a.from), a.from = null);
5308 Zi = new function() {};
5309 vt.$inject = ["$provide", "$$sanitizeUriProvider"], bt.prototype.isFirstChange = function() {
5310 return this.previousValue === Zi
5312 var Xi = /^((?:x|data)[:\-_])/i,
5314 Ji = r("$controller"),
5315 eo = /^(\S+)(\s+as\s+([\w$]+))?$/,
5317 this.$get = ["$document", function(e) {
5318 return function(t) {
5319 return t ? !t.nodeType && t instanceof qr && (t = t[0]) : t = e[0].body, t.offsetWidth + 1
5323 no = "application/json",
5325 "Content-Type": no + ";charset=utf-8"
5327 io = /^\[|^\{(?!\{)/,
5334 co = Zr.$interpolateMinErr = r("$interpolate");
5335 co.throwNoconcat = function(e) {
5336 throw co("noconcat", "Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce", e)
5337 }, co.interr = function(e, t) {
5338 return co("interr", "Can't interpolate: {0}\n{1}", e, t.toString())
5340 var lo = function() {
5341 this.$get = function() {
5343 var t = function(e) {
5344 t.data = e, t.called = !0
5348 var t = Zr.callbacks,
5351 createCallback: function(r) {
5352 var i = "_" + (t.$$counter++).toString(36),
5353 o = "angular.callbacks." + i,
5355 return n[o] = t[i] = a, o
5357 wasCalled: function(e) {
5360 getResponse: function(e) {
5363 removeCallback: function(e) {
5365 delete t[r.id], delete n[e]
5370 uo = /^([^?#]*)(\?([^#]*))?(#(.*))?$/,
5376 ho = r("$location"),
5377 po = /^\s*[\\/]{2,}/,
5382 absUrl: en("$$absUrl"),
5384 if (y(e)) return this.$$url;
5386 return (t[1] || "" === e) && this.path(decodeURIComponent(t[1])), (t[2] || t[1] || "" === e) && this.search(t[3] || ""), this.hash(t[5] || ""), this
5388 protocol: en("$$protocol"),
5391 path: tn("$$path", function(e) {
5392 return "/" === (e = null !== e ? e.toString() : "").charAt(0) ? e : "/" + e
5394 search: function(e, t) {
5395 switch (arguments.length) {
5397 return this.$$search;
5399 if (E(e) || C(e)) e = e.toString(), this.$$search = re(e);
5401 if (!_(e)) throw ho("isrcharg", "The first argument of the `$location#search()` call must be a string or an object.");
5402 o(e = V(e, {}), function(t, n) {
5403 null == t && delete e[n]
5404 }), this.$$search = e
5408 y(t) || null === t ? delete this.$$search[e] : this.$$search[e] = t
5410 return this.$$compose(), this
5412 hash: tn("$$hash", function(e) {
5413 return null !== e ? e.toString() : ""
5415 replace: function() {
5416 return this.$$replace = !0, this
5419 o([Jt, Qt, Xt], function(e) {
5420 e.prototype = Object.create(mo), e.prototype.state = function(t) {
5421 if (!arguments.length) return this.$$state;
5422 if (e !== Xt || !this.$$html5) throw ho("nostate", "History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");
5423 return this.$$state = y(t) ? null : t, this.$$urlUpdatedByLocation = !0, this
5426 var go = r("$parse"),
5427 vo = {}.constructor.prototype.valueOf,
5429 o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "), function(e) {
5447 for (this.text = e, this.index = 0, this.tokens = []; this.index < this.text.length;) {
5448 var t = this.text.charAt(this.index);
5449 if ('"' === t || "'" === t) this.readString(t);
5450 else if (this.isNumber(t) || "." === t && this.isNumber(this.peek())) this.readNumber();
5451 else if (this.isIdentifierStart(this.peekMultichar())) this.readIdent();
5452 else if (this.is(t, "(){}[].,;:?")) this.tokens.push({
5456 else if (this.isWhitespace(t)) this.index++;
5458 var n = t + this.peek(),
5459 r = n + this.peek(2),
5464 var s = a ? r : o ? n : t;
5469 }), this.index += s.length
5470 } else this.throwError("Unexpected next character ", this.index, this.index + 1)
5475 is: function(e, t) {
5476 return -1 !== t.indexOf(e)
5480 return this.index + t < this.text.length && this.text.charAt(this.index + t)
5482 isNumber: function(e) {
5483 return "0" <= e && e <= "9" && "string" == typeof e
5485 isWhitespace: function(e) {
5486 return " " === e || "\r" === e || "\t" === e || "\n" === e || "\v" === e || " " === e
5488 isIdentifierStart: function(e) {
5489 return this.options.isIdentifierStart ? this.options.isIdentifierStart(e, this.codePointAt(e)) : this.isValidIdentifierStart(e)
5491 isValidIdentifierStart: function(e) {
5492 return "a" <= e && e <= "z" || "A" <= e && e <= "Z" || "_" === e || "$" === e
5494 isIdentifierContinue: function(e) {
5495 return this.options.isIdentifierContinue ? this.options.isIdentifierContinue(e, this.codePointAt(e)) : this.isValidIdentifierContinue(e)
5497 isValidIdentifierContinue: function(e, t) {
5498 return this.isValidIdentifierStart(e, t) || this.isNumber(e)
5500 codePointAt: function(e) {
5501 return 1 === e.length ? e.charCodeAt(0) : (e.charCodeAt(0) << 10) + e.charCodeAt(1) - 56613888
5503 peekMultichar: function() {
5504 var e = this.text.charAt(this.index),
5507 var n = e.charCodeAt(0),
5508 r = t.charCodeAt(0);
5509 return n >= 55296 && n <= 56319 && r >= 56320 && r <= 57343 ? e + t : e
5511 isExpOperator: function(e) {
5512 return "-" === e || "+" === e || this.isNumber(e)
5514 throwError: function(e, t, n) {
5515 n = n || this.index;
5516 var r = $(t) ? "s " + t + "-" + this.index + " [" + this.text.substring(t, n) + "]" : " " + n;
5517 throw go("lexerr", "Lexer Error: {0} at column{1} in expression [{2}].", e, r, this.text)
5519 readNumber: function() {
5520 for (var e = "", t = this.index; this.index < this.text.length;) {
5521 var n = jr(this.text.charAt(this.index));
5522 if ("." === n || this.isNumber(n)) e += n;
5524 var r = this.peek();
5525 if ("e" === n && this.isExpOperator(r)) e += n;
5526 else if (this.isExpOperator(n) && r && this.isNumber(r) && "e" === e.charAt(e.length - 1)) e += n;
5528 if (!this.isExpOperator(n) || r && this.isNumber(r) || "e" !== e.charAt(e.length - 1)) break;
5529 this.throwError("Invalid exponent")
5541 readIdent: function() {
5543 for (this.index += this.peekMultichar().length; this.index < this.text.length;) {
5544 var t = this.peekMultichar();
5545 if (!this.isIdentifierContinue(t)) break;
5546 this.index += t.length
5550 text: this.text.slice(e, this.index),
5554 readString: function(e) {
5557 for (var n = "", r = e, i = !1; this.index < this.text.length;) {
5558 var o = this.text.charAt(this.index);
5561 var a = this.text.substring(this.index + 1, this.index + 5);
5562 a.match(/[\da-f]{4}/i) || this.throwError("Invalid unicode escape [\\u" + a + "]"), this.index += 4, n += String.fromCharCode(parseInt(a, 16))
5563 } else n += yo[o] || o;
5565 } else if ("\\" === o) i = !0;
5567 if (o === e) return this.index++, void this.tokens.push({
5577 this.throwError("Unterminated quote", t)
5580 var _o = function(e, t) {
5581 this.lexer = e, this.options = t
5583 _o.Program = "Program", _o.ExpressionStatement = "ExpressionStatement", _o.AssignmentExpression = "AssignmentExpression", _o.ConditionalExpression = "ConditionalExpression", _o.LogicalExpression = "LogicalExpression", _o.BinaryExpression = "BinaryExpression", _o.UnaryExpression = "UnaryExpression", _o.CallExpression = "CallExpression", _o.MemberExpression = "MemberExpression", _o.Identifier = "Identifier", _o.Literal = "Literal", _o.ArrayExpression = "ArrayExpression", _o.Property = "Property", _o.ObjectExpression = "ObjectExpression", _o.ThisExpression = "ThisExpression", _o.LocalsExpression = "LocalsExpression", _o.NGValueParameter = "NGValueParameter", _o.prototype = {
5585 this.text = e, this.tokens = this.lexer.lex(e);
5586 var t = this.program();
5587 return 0 !== this.tokens.length && this.throwError("is an unexpected token", this.tokens[0]), t
5589 program: function() {
5591 if (this.tokens.length > 0 && !this.peek("}", ")", ";", "]") && e.push(this.expressionStatement()), !this.expect(";")) return {
5596 expressionStatement: function() {
5598 type: _o.ExpressionStatement,
5599 expression: this.filterChain()
5602 filterChain: function() {
5603 for (var e = this.expression(); this.expect("|");) e = this.filter(e);
5606 expression: function() {
5607 return this.assignment()
5609 assignment: function() {
5610 var e = this.ternary();
5611 if (this.expect("=")) {
5612 if (!fn(e)) throw go("lval", "Trying to assign a value to a non l-value");
5614 type: _o.AssignmentExpression,
5616 right: this.assignment(),
5622 ternary: function() {
5623 var e, t, n = this.logicalOR();
5624 return this.expect("?") && (e = this.expression(), this.consume(":")) ? (t = this.expression(), {
5625 type: _o.ConditionalExpression,
5631 logicalOR: function() {
5632 for (var e = this.logicalAND(); this.expect("||");) e = {
5633 type: _o.LogicalExpression,
5636 right: this.logicalAND()
5640 logicalAND: function() {
5641 for (var e = this.equality(); this.expect("&&");) e = {
5642 type: _o.LogicalExpression,
5645 right: this.equality()
5649 equality: function() {
5650 for (var e, t = this.relational(); e = this.expect("==", "!=", "===", "!==");) t = {
5651 type: _o.BinaryExpression,
5654 right: this.relational()
5658 relational: function() {
5659 for (var e, t = this.additive(); e = this.expect("<", ">", "<=", ">=");) t = {
5660 type: _o.BinaryExpression,
5663 right: this.additive()
5667 additive: function() {
5668 for (var e, t = this.multiplicative(); e = this.expect("+", "-");) t = {
5669 type: _o.BinaryExpression,
5672 right: this.multiplicative()
5676 multiplicative: function() {
5677 for (var e, t = this.unary(); e = this.expect("*", "/", "%");) t = {
5678 type: _o.BinaryExpression,
5687 return (e = this.expect("+", "-", "!")) ? {
5688 type: _o.UnaryExpression,
5691 argument: this.unary()
5694 primary: function() {
5696 this.expect("(") ? (e = this.filterChain(), this.consume(")")) : this.expect("[") ? e = this.arrayDeclaration() : this.expect("{") ? e = this.object() : this.selfReferential.hasOwnProperty(this.peek().text) ? e = V(this.selfReferential[this.consume().text]) : this.options.literals.hasOwnProperty(this.peek().text) ? e = {
5698 value: this.options.literals[this.consume().text]
5699 } : this.peek().identifier ? e = this.identifier() : this.peek().constant ? e = this.constant() : this.throwError("not a primary expression", this.peek());
5700 for (var t; t = this.expect("(", "[", ".");) "(" === t.text ? (e = {
5701 type: _o.CallExpression,
5703 arguments: this.parseArguments()
5704 }, this.consume(")")) : "[" === t.text ? (e = {
5705 type: _o.MemberExpression,
5707 property: this.expression(),
5709 }, this.consume("]")) : "." === t.text ? e = {
5710 type: _o.MemberExpression,
5712 property: this.identifier(),
5714 } : this.throwError("IMPOSSIBLE");
5717 filter: function(e) {
5718 for (var t = [e], n = {
5719 type: _o.CallExpression,
5720 callee: this.identifier(),
5723 }; this.expect(":");) t.push(this.expression());
5726 parseArguments: function() {
5728 if (")" !== this.peekToken().text)
5730 e.push(this.filterChain())
5731 } while (this.expect(","));
5734 identifier: function() {
5735 var e = this.consume();
5736 return e.identifier || this.throwError("is not a valid identifier", e), {
5737 type: _o.Identifier,
5741 constant: function() {
5744 value: this.consume().value
5747 arrayDeclaration: function() {
5749 if ("]" !== this.peekToken().text)
5751 if (this.peek("]")) break;
5752 e.push(this.expression())
5753 } while (this.expect(","));
5754 return this.consume("]"), {
5755 type: _o.ArrayExpression,
5759 object: function() {
5761 if ("}" !== this.peekToken().text)
5763 if (this.peek("}")) break;
5767 }, this.peek().constant ? (e.key = this.constant(), e.computed = !1, this.consume(":"), e.value = this.expression()) : this.peek().identifier ? (e.key = this.identifier(), e.computed = !1, this.peek(":") ? (this.consume(":"), e.value = this.expression()) : e.value = e.key) : this.peek("[") ? (this.consume("["), e.key = this.expression(), this.consume("]"), e.computed = !0, this.consume(":"), e.value = this.expression()) : this.throwError("invalid key", this.peek()), t.push(e)
5768 } while (this.expect(","));
5769 return this.consume("}"), {
5770 type: _o.ObjectExpression,
5774 throwError: function(e, t) {
5775 throw go("syntax", "Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].", t.text, e, t.index + 1, this.text, this.text.substring(t.index))
5777 consume: function(e) {
5778 if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5779 var t = this.expect(e);
5780 return t || this.throwError("is unexpected, expecting [" + e + "]", this.peek()), t
5782 peekToken: function() {
5783 if (0 === this.tokens.length) throw go("ueoe", "Unexpected end of expression: {0}", this.text);
5784 return this.tokens[0]
5786 peek: function(e, t, n, r) {
5787 return this.peekAhead(0, e, t, n, r)
5789 peekAhead: function(e, t, n, r, i) {
5790 if (this.tokens.length > e) {
5791 var o = this.tokens[e],
5793 if (a === t || a === n || a === r || a === i || !t && !n && !r && !i) return o
5797 expect: function(e, t, n, r) {
5798 var i = this.peek(e, t, n, r);
5799 return !!i && (this.tokens.shift(), i)
5803 type: _o.ThisExpression
5806 type: _o.LocalsExpression
5813 compile: function(e) {
5829 }, un(e, t.$filter);
5831 if (this.stage = "assign", n = hn(e)) {
5832 this.state.computing = "assign";
5833 var i = this.nextId();
5834 this.recurse(n, i), this.return_(i), r = "fn.assign=" + this.generateFunction("assign", "s,v,l")
5837 t.stage = "inputs", o(a, function(e, n) {
5843 }, t.state.computing = r;
5845 t.recurse(e, i), t.return_(i), t.state.inputs.push({
5849 }), this.state.computing = "fn", this.stage = "main", this.recurse(e);
5850 var s = '"' + this.USE + " " + this.STRICT + '";\n' + this.filterPrefix() + "var fn=" + this.generateFunction("fn", "s,l,a,i") + r + this.watchFns() + "return fn;",
5851 c = new Function("$filter", "getStringValue", "ifDefined", "plus", s)(this.$filter, on, an, sn);
5852 return this.state = this.stage = void 0, c
5856 watchFns: function() {
5858 t = this.state.inputs,
5860 return o(t, function(t) {
5861 e.push("var " + t.name + "=" + n.generateFunction(t.name, "s")), t.isPure && e.push(t.name, ".isPure=" + JSON.stringify(t.isPure) + ";")
5862 }), t.length && e.push("fn.inputs=[" + t.map(function(e) {
5864 }).join(",") + "];"), e.join("")
5866 generateFunction: function(e, t) {
5867 return "function(" + t + "){" + this.varsPrefix(e) + this.body(e) + "};"
5869 filterPrefix: function() {
5872 return o(this.state.filters, function(n, r) {
5873 e.push(n + "=$filter(" + t.escape(r) + ")")
5874 }), e.length ? "var " + e.join(",") + ";" : ""
5876 varsPrefix: function(e) {
5877 return this.state[e].vars.length ? "var " + this.state[e].vars.join(",") + ";" : ""
5880 return this.state[e].body.join("")
5882 recurse: function(e, t, n, r, i, a) {
5883 var s, c, l, u, d, f = this;
5884 if (r = r || m, !a && $(e.watchId)) return t = t || this.nextId(), void this.if_("i", this.lazyAssign(t, this.computedMember("i", e.watchId)), this.lazyRecurse(e, t, n, r, i, !0));
5887 o(e.body, function(t, n) {
5888 f.recurse(t.expression, void 0, void 0, function(e) {
5890 }), n !== e.body.length - 1 ? f.current().body.push(c, ";") : f.return_(c)
5894 u = this.escape(e.value), this.assign(t, u), r(t || u);
5896 case _o.UnaryExpression:
5897 this.recurse(e.argument, void 0, void 0, function(e) {
5899 }), u = e.operator + "(" + this.ifDefined(c, 0) + ")", this.assign(t, u), r(u);
5901 case _o.BinaryExpression:
5902 this.recurse(e.left, void 0, void 0, function(e) {
5904 }), this.recurse(e.right, void 0, void 0, function(e) {
5906 }), u = "+" === e.operator ? this.plus(s, c) : "-" === e.operator ? this.ifDefined(s, 0) + e.operator + this.ifDefined(c, 0) : "(" + s + ")" + e.operator + "(" + c + ")", this.assign(t, u), r(u);
5908 case _o.LogicalExpression:
5909 t = t || this.nextId(), f.recurse(e.left, t), f.if_("&&" === e.operator ? t : f.not(t), f.lazyRecurse(e.right, t)), r(t);
5911 case _o.ConditionalExpression:
5912 t = t || this.nextId(), f.recurse(e.test, t), f.if_(t, f.lazyRecurse(e.alternate, t), f.lazyRecurse(e.consequent, t)), r(t);
5915 t = t || this.nextId(), n && (n.context = "inputs" === f.stage ? "s" : this.assign(this.nextId(), this.getHasOwnProperty("l", e.name) + "?l:s"), n.computed = !1, n.name = e.name), f.if_("inputs" === f.stage || f.not(f.getHasOwnProperty("l", e.name)), function() {
5916 f.if_("inputs" === f.stage || "s", function() {
5917 i && 1 !== i && f.if_(f.isNull(f.nonComputedMember("s", e.name)), f.lazyAssign(f.nonComputedMember("s", e.name), "{}")), f.assign(t, f.nonComputedMember("s", e.name))
5919 }, t && f.lazyAssign(t, f.nonComputedMember("l", e.name))), r(t);
5921 case _o.MemberExpression:
5922 s = n && (n.context = this.nextId()) || this.nextId(), t = t || this.nextId(), f.recurse(e.object, s, void 0, function() {
5923 f.if_(f.notNull(s), function() {
5924 e.computed ? (c = f.nextId(), f.recurse(e.property, c), f.getStringValue(c), i && 1 !== i && f.if_(f.not(f.computedMember(s, c)), f.lazyAssign(f.computedMember(s, c), "{}")), u = f.computedMember(s, c), f.assign(t, u), n && (n.computed = !0, n.name = c)) : (i && 1 !== i && f.if_(f.isNull(f.nonComputedMember(s, e.property.name)), f.lazyAssign(f.nonComputedMember(s, e.property.name), "{}")), u = f.nonComputedMember(s, e.property.name), f.assign(t, u), n && (n.computed = !1, n.name = e.property.name))
5926 f.assign(t, "undefined")
5930 case _o.CallExpression:
5931 t = t || this.nextId(), e.filter ? (c = f.filter(e.callee.name), l = [], o(e.arguments, function(e) {
5933 f.recurse(e, t), l.push(t)
5934 }), u = c + "(" + l.join(",") + ")", f.assign(t, u), r(t)) : (c = f.nextId(), s = {}, l = [], f.recurse(e.callee, c, s, function() {
5935 f.if_(f.notNull(c), function() {
5936 o(e.arguments, function(t) {
5937 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5940 }), u = s.name ? f.member(s.context, s.name, s.computed) + "(" + l.join(",") + ")" : c + "(" + l.join(",") + ")", f.assign(t, u)
5942 f.assign(t, "undefined")
5946 case _o.AssignmentExpression:
5947 c = this.nextId(), s = {}, this.recurse(e.left, void 0, s, function() {
5948 f.if_(f.notNull(s.context), function() {
5949 f.recurse(e.right, c), u = f.member(s.context, s.name, s.computed) + e.operator + c, f.assign(t, u), r(t || u)
5953 case _o.ArrayExpression:
5954 l = [], o(e.elements, function(t) {
5955 f.recurse(t, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5958 }), u = "[" + l.join(",") + "]", this.assign(t, u), r(t || u);
5960 case _o.ObjectExpression:
5961 l = [], d = !1, o(e.properties, function(e) {
5962 e.computed && (d = !0)
5963 }), d ? (t = t || this.nextId(), this.assign(t, "{}"), o(e.properties, function(e) {
5964 e.computed ? (s = f.nextId(), f.recurse(e.key, s)) : s = e.key.type === _o.Identifier ? e.key.name : "" + e.key.value, c = f.nextId(), f.recurse(e.value, c), f.assign(f.member(t, s, e.computed), c)
5965 })) : (o(e.properties, function(t) {
5966 f.recurse(t.value, e.constant ? void 0 : f.nextId(), void 0, function(e) {
5967 l.push(f.escape(t.key.type === _o.Identifier ? t.key.name : "" + t.key.value) + ":" + e)
5969 }), u = "{" + l.join(",") + "}", this.assign(t, u)), r(t || u);
5971 case _o.ThisExpression:
5972 this.assign(t, "s"), r(t || "s");
5974 case _o.LocalsExpression:
5975 this.assign(t, "l"), r(t || "l");
5977 case _o.NGValueParameter:
5978 this.assign(t, "v"), r(t || "v")
5981 getHasOwnProperty: function(e, t) {
5982 var n = e + "." + t,
5983 r = this.current().own;
5984 return r.hasOwnProperty(n) || (r[n] = this.nextId(!1, e + "&&(" + this.escape(t) + " in " + e + ")")), r[n]
5986 assign: function(e, t) {
5987 if (e) return this.current().body.push(e, "=", t, ";"), e
5989 filter: function(e) {
5990 return this.state.filters.hasOwnProperty(e) || (this.state.filters[e] = this.nextId(!0)), this.state.filters[e]
5992 ifDefined: function(e, t) {
5993 return "ifDefined(" + e + "," + this.escape(t) + ")"
5995 plus: function(e, t) {
5996 return "plus(" + e + "," + t + ")"
5998 return_: function(e) {
5999 this.current().body.push("return ", e, ";")
6001 if_: function(e, t, n) {
6004 var r = this.current().body;
6005 r.push("if(", e, "){"), t(), r.push("}"), n && (r.push("else{"), n(), r.push("}"))
6009 return "!(" + e + ")"
6011 isNull: function(e) {
6014 notNull: function(e) {
6017 nonComputedMember: function(e, t) {
6018 var n = /[^$_a-zA-Z0-9]/g;
6019 return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(t) ? e + "." + t : e + '["' + t.replace(n, this.stringEscapeFn) + '"]'
6021 computedMember: function(e, t) {
6022 return e + "[" + t + "]"
6024 member: function(e, t, n) {
6025 return n ? this.computedMember(e, t) : this.nonComputedMember(e, t)
6027 getStringValue: function(e) {
6028 this.assign(e, "getStringValue(" + e + ")")
6030 lazyRecurse: function(e, t, n, r, i, o) {
6033 a.recurse(e, t, n, r, i, o)
6036 lazyAssign: function(e, t) {
6042 stringEscapeRegex: /[^ a-zA-Z0-9]/g,
6043 stringEscapeFn: function(e) {
6044 return "\\u" + ("0000" + e.charCodeAt(0).toString(16)).slice(-4)
6046 escape: function(e) {
6047 if (E(e)) return "'" + e.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'";
6048 if (C(e)) return e.toString();
6049 if (!0 === e) return "true";
6050 if (!1 === e) return "false";
6051 if (null === e) return "null";
6052 if (void 0 === e) return "undefined";
6053 throw go("esc", "IMPOSSIBLE")
6055 nextId: function(e, t) {
6056 var n = "v" + this.state.nextId++;
6057 return e || this.current().vars.push(n + (t ? "=" + t : "")), n
6059 current: function() {
6060 return this.state[this.state.computing]
6063 compile: function(e) {
6067 (n = hn(e)) && (r = this.recurse(n));
6068 var i, a = dn(e.body);
6069 a && (i = [], o(a, function(e, n) {
6070 var r = t.recurse(e);
6071 r.isPure = e.isPure, e.input = r, i.push(r), e.watchId = n
6074 o(e.body, function(e) {
6075 s.push(t.recurse(e.expression))
6077 var c = 0 === e.body.length ? m : 1 === e.body.length ? s[0] : function(e, t) {
6079 return o(s, function(r) {
6083 return r && (c.assign = function(e, t, n) {
6085 }), i && (c.inputs = i), c
6087 recurse: function(e, t, n) {
6088 var r, i, a, s = this;
6089 if (e.input) return this.inputs(e.input, e.watchId);
6092 return this.value(e.value, t);
6093 case _o.UnaryExpression:
6094 return i = this.recurse(e.argument), this["unary" + e.operator](i, t);
6095 case _o.BinaryExpression:
6096 case _o.LogicalExpression:
6097 return r = this.recurse(e.left), i = this.recurse(e.right), this["binary" + e.operator](r, i, t);
6098 case _o.ConditionalExpression:
6099 return this["ternary?:"](this.recurse(e.test), this.recurse(e.alternate), this.recurse(e.consequent), t);
6101 return s.identifier(e.name, t, n);
6102 case _o.MemberExpression:
6103 return r = this.recurse(e.object, !1, !!n), e.computed || (i = e.property.name), e.computed && (i = this.recurse(e.property)), e.computed ? this.computedMember(r, i, t, n) : this.nonComputedMember(r, i, t, n);
6104 case _o.CallExpression:
6105 return a = [], o(e.arguments, function(e) {
6106 a.push(s.recurse(e))
6107 }), e.filter && (i = this.$filter(e.callee.name)), e.filter || (i = this.recurse(e.callee, !0)), e.filter ? function(e, n, r, o) {
6108 for (var s = [], c = 0; c < a.length; ++c) s.push(a[c](e, n, r, o));
6109 var l = i.apply(void 0, s, o);
6115 } : function(e, n, r, o) {
6116 var s, c = i(e, n, r, o);
6117 if (null != c.value) {
6118 for (var l = [], u = 0; u < a.length; ++u) l.push(a[u](e, n, r, o));
6119 s = c.value.apply(c.context, l)
6125 case _o.AssignmentExpression:
6126 return r = this.recurse(e.left, !0, 1), i = this.recurse(e.right),
6127 function(e, n, o, a) {
6128 var s = r(e, n, o, a),
6130 return s.context[s.name] = c, t ? {
6134 case _o.ArrayExpression:
6135 return a = [], o(e.elements, function(e) {
6136 a.push(s.recurse(e))
6138 function(e, n, r, i) {
6139 for (var o = [], s = 0; s < a.length; ++s) o.push(a[s](e, n, r, i));
6144 case _o.ObjectExpression:
6145 return a = [], o(e.properties, function(e) {
6146 e.computed ? a.push({
6147 key: s.recurse(e.key),
6149 value: s.recurse(e.value)
6151 key: e.key.type === _o.Identifier ? e.key.name : "" + e.key.value,
6153 value: s.recurse(e.value)
6156 function(e, n, r, i) {
6157 for (var o = {}, s = 0; s < a.length; ++s) a[s].computed ? o[a[s].key(e, n, r, i)] = a[s].value(e, n, r, i) : o[a[s].key] = a[s].value(e, n, r, i);
6162 case _o.ThisExpression:
6163 return function(e) {
6168 case _o.LocalsExpression:
6169 return function(e, n) {
6174 case _o.NGValueParameter:
6175 return function(e, n, r) {
6182 "unary+": function(e, t) {
6183 return function(n, r, i, o) {
6184 var a = e(n, r, i, o);
6185 return a = $(a) ? +a : 0, t ? {
6190 "unary-": function(e, t) {
6191 return function(n, r, i, o) {
6192 var a = e(n, r, i, o);
6193 return a = $(a) ? -a : -0, t ? {
6198 "unary!": function(e, t) {
6199 return function(n, r, i, o) {
6200 var a = !e(n, r, i, o);
6206 "binary+": function(e, t, n) {
6207 return function(r, i, o, a) {
6208 var s = sn(e(r, i, o, a), t(r, i, o, a));
6214 "binary-": function(e, t, n) {
6215 return function(r, i, o, a) {
6216 var s = e(r, i, o, a),
6218 l = ($(s) ? s : 0) - ($(c) ? c : 0);
6224 "binary*": function(e, t, n) {
6225 return function(r, i, o, a) {
6226 var s = e(r, i, o, a) * t(r, i, o, a);
6232 "binary/": function(e, t, n) {
6233 return function(r, i, o, a) {
6234 var s = e(r, i, o, a) / t(r, i, o, a);
6240 "binary%": function(e, t, n) {
6241 return function(r, i, o, a) {
6242 var s = e(r, i, o, a) % t(r, i, o, a);
6248 "binary===": function(e, t, n) {
6249 return function(r, i, o, a) {
6250 var s = e(r, i, o, a) === t(r, i, o, a);
6256 "binary!==": function(e, t, n) {
6257 return function(r, i, o, a) {
6258 var s = e(r, i, o, a) !== t(r, i, o, a);
6264 "binary==": function(e, t, n) {
6265 return function(r, i, o, a) {
6266 var s = e(r, i, o, a) == t(r, i, o, a);
6272 "binary!=": function(e, t, n) {
6273 return function(r, i, o, a) {
6274 var s = e(r, i, o, a) != t(r, i, o, a);
6280 "binary<": function(e, t, n) {
6281 return function(r, i, o, a) {
6282 var s = e(r, i, o, a) < t(r, i, o, a);
6288 "binary>": function(e, t, n) {
6289 return function(r, i, o, a) {
6290 var s = e(r, i, o, a) > t(r, i, o, a);
6296 "binary<=": function(e, t, n) {
6297 return function(r, i, o, a) {
6298 var s = e(r, i, o, a) <= t(r, i, o, a);
6304 "binary>=": function(e, t, n) {
6305 return function(r, i, o, a) {
6306 var s = e(r, i, o, a) >= t(r, i, o, a);
6312 "binary&&": function(e, t, n) {
6313 return function(r, i, o, a) {
6314 var s = e(r, i, o, a) && t(r, i, o, a);
6320 "binary||": function(e, t, n) {
6321 return function(r, i, o, a) {
6322 var s = e(r, i, o, a) || t(r, i, o, a);
6328 "ternary?:": function(e, t, n, r) {
6329 return function(i, o, a, s) {
6330 var c = e(i, o, a, s) ? t(i, o, a, s) : n(i, o, a, s);
6336 value: function(e, t) {
6345 identifier: function(e, t, n) {
6346 return function(r, i, o, a) {
6347 var s = i && e in i ? i : r;
6348 n && 1 !== n && s && null == s[e] && (s[e] = {});
6349 var c = s ? s[e] : void 0;
6357 computedMember: function(e, t, n, r) {
6358 return function(i, o, a, s) {
6359 var c, l, u = e(i, o, a, s);
6360 return null != u && (c = on(c = t(i, o, a, s)), r && 1 !== r && u && !u[c] && (u[c] = {}), l = u[c]), n ? {
6367 nonComputedMember: function(e, t, n, r) {
6368 return function(i, o, a, s) {
6369 var c = e(i, o, a, s);
6370 r && 1 !== r && c && null == c[t] && (c[t] = {});
6371 var l = null != c ? c[t] : void 0;
6379 inputs: function(e, t) {
6380 return function(n, r, i, o) {
6381 return o ? o[t] : e(n, r, i)
6386 parse: function(e) {
6387 var t = this.ast.ast(e),
6388 n = this.astCompiler.compile(t);
6389 return n.literal = pn(t), n.constant = mn(t), n
6397 RESOURCE_URL: "resourceUrl",
6402 Mo = e.document.createElement("a"),
6403 So = Ln(e.location.href);
6404 Un.$inject = ["$document"], Bn.$inject = ["$provide"];
6408 Kn.$inject = ["$locale"], Zn.$inject = ["$locale"];
6410 yyyy: tr("FullYear", 4, 0, !1, !0),
6411 yy: tr("FullYear", 2, 0, !0, !0),
6412 y: tr("FullYear", 1, 0, !1, !0),
6414 MMM: nr("Month", !0),
6415 MM: tr("Month", 2, 1),
6416 M: tr("Month", 1, 1),
6417 LLLL: nr("Month", !1, !0),
6422 hh: tr("Hours", 2, -12),
6423 h: tr("Hours", 1, -12),
6424 mm: tr("Minutes", 2),
6425 m: tr("Minutes", 1),
6426 ss: tr("Seconds", 2),
6427 s: tr("Seconds", 1),
6428 sss: tr("Milliseconds", 3),
6432 return e.getHours() < 12 ? t.AMPMS[0] : t.AMPMS[1]
6434 Z: function(e, t, n) {
6436 i = r >= 0 ? "+" : "";
6437 return i += er(Math[r > 0 ? "floor" : "ceil"](r / 60), 2) + er(Math.abs(r % 60), 2)
6444 GGGG: function(e, t) {
6445 return e.getFullYear() <= 0 ? t.ERANAMES[0] : t.ERANAMES[1]
6448 Io = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,
6450 sr.$inject = ["$locale"];
6453 dr.$inject = ["$parse"];
6456 compile: function(e, t) {
6457 if (!t.href && !t.xlinkHref) return function(e, t) {
6458 if ("a" === t[0].nodeName.toLowerCase()) {
6459 var n = "[object SVGAnimatedString]" === Yr.call(t.prop("href")) ? "xlink:href" : "href";
6460 t.on("click", function(e) {
6461 t.attr(n) || e.preventDefault()
6468 o(Si, function(e, t) {
6469 function n(e, n, i) {
6470 e.$watch(i[r], function(e) {
6474 if ("multiple" !== e) {
6475 var r = yt("ng-" + t),
6477 "checked" === e && (i = function(e, t, i) {
6478 i.ngModel !== i[r] && n(e, 0, i)
6479 }), Lo[r] = function() {
6487 }), o(Oi, function(e, t) {
6488 Lo[t] = function() {
6491 link: function(e, n, r) {
6492 if ("ngPattern" === t && "/" === r.ngPattern.charAt(0)) {
6493 var i = r.ngPattern.match(Rr);
6494 if (i) return void r.$set("ngPattern", new RegExp(i[1], i[2]))
6496 e.$watch(r[t], function(e) {
6502 }), o(["src", "srcset", "href"], function(e) {
6503 var t = yt("ng-" + e);
6504 Lo[t] = function() {
6507 link: function(n, r, i) {
6510 "href" === e && "[object SVGAnimatedString]" === Yr.call(r.prop("href")) && (a = "xlinkHref", i.$attr[a] = "xlink:href", o = null), i.$observe(t, function(t) {
6511 t ? (i.$set(a, t), Fr && o && r.prop(o, i[a])) : "href" === e && i.$set(a, null)
6519 $$renameControl: function(e, t) {
6529 hr.$inject = ["$element", "$attrs", "$scope", "$animate", "$interpolate"], hr.prototype = {
6530 $rollbackViewValue: function() {
6531 o(this.$$controls, function(e) {
6532 e.$rollbackViewValue()
6535 $commitViewValue: function() {
6536 o(this.$$controls, function(e) {
6537 e.$commitViewValue()
6540 $addControl: function(e) {
6541 me(e.$name, "input"), this.$$controls.push(e), e.$name && (this[e.$name] = e), e.$$parentForm = this
6543 $$renameControl: function(e, t) {
6545 this[n] === e && delete this[n], this[t] = e, e.$name = t
6547 $removeControl: function(e) {
6548 e.$name && this[e.$name] === e && delete this[e.$name], o(this.$pending, function(t, n) {
6549 this.$setValidity(n, null, e)
6550 }, this), o(this.$error, function(t, n) {
6551 this.$setValidity(n, null, e)
6552 }, this), o(this.$$success, function(t, n) {
6553 this.$setValidity(n, null, e)
6554 }, this), U(this.$$controls, e), e.$$parentForm = Fo
6556 $setDirty: function() {
6557 this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$dirty = !0, this.$pristine = !1, this.$$parentForm.$setDirty()
6559 $setPristine: function() {
6560 this.$$animate.setClass(this.$$element, Ca, xa + " ng-submitted"), this.$dirty = !1, this.$pristine = !0, this.$submitted = !1, o(this.$$controls, function(e) {
6564 $setUntouched: function() {
6565 o(this.$$controls, function(e) {
6569 $setSubmitted: function() {
6570 this.$$animate.addClass(this.$$element, "ng-submitted"), this.$submitted = !0, this.$$parentForm.$setSubmitted()
6574 set: function(e, t, n) {
6576 r ? -1 === r.indexOf(n) && r.push(n) : e[t] = [n]
6578 unset: function(e, t, n) {
6580 r && (U(r, n), 0 === r.length && delete e[t])
6583 var Uo = function(e) {
6584 return ["$timeout", "$parse", function(t, n) {
6586 return "" === e ? n('this[""]').assign : n(e).assign || m
6590 restrict: e ? "EAC" : "E",
6591 require: ["form", "^^?form"],
6593 compile: function(n, i) {
6594 n.addClass(Ca).addClass(wa);
6595 var o = i.name ? "name" : !(!e || !i.ngForm) && "ngForm";
6597 pre: function(e, n, i, a) {
6599 if (!("action" in i)) {
6600 var c = function(t) {
6601 e.$apply(function() {
6602 s.$commitViewValue(), s.$setSubmitted()
6603 }), t.preventDefault()
6605 n[0].addEventListener("submit", c), n.on("$destroy", function() {
6607 n[0].removeEventListener("submit", c)
6610 }(a[1] || s.$$parentForm).$addControl(s);
6611 var l = o ? r(s.$name) : m;
6612 o && (l(e, s), i.$observe(o, function(t) {
6613 s.$name !== t && (l(e, void 0), s.$$parentForm.$$renameControl(s, t), (l = r(s.$name))(e, s))
6614 })), n.on("$destroy", function() {
6615 s.$$parentForm.$removeControl(s), l(e, void 0), d(s, Fo)
6625 zo = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,
6626 Wo = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,
6627 Yo = /^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/,
6628 Go = /^\s*(-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,
6629 Ko = /^(\d{4,})-(\d{2})-(\d{2})$/,
6630 Zo = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6631 Xo = /^(\d{4,})-W(\d\d)$/,
6632 Qo = /^(\d{4,})-(\d\d)$/,
6633 Jo = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,
6634 ea = "keydown wheel mousedown",
6636 o("date,datetime-local,month,time,week".split(","), function(e) {
6640 text: function(e, t, n, r, i, o) {
6641 br(e, t, n, r, i, o), vr(r)
6643 date: $r("date", Ko, yr(Ko, ["yyyy", "MM", "dd"]), "yyyy-MM-dd"),
6644 "datetime-local": $r("datetimelocal", Zo, yr(Zo, ["yyyy", "MM", "dd", "HH", "mm", "ss", "sss"]), "yyyy-MM-ddTHH:mm:ss.sss"),
6645 time: $r("time", Jo, yr(Jo, ["HH", "mm", "ss", "sss"]), "HH:mm:ss.sss"),
6646 week: $r("week", Xo, function(e, t) {
6660 return t && (o = t.getHours(), a = t.getMinutes(), s = t.getSeconds(), c = t.getMilliseconds()), new Date(r, 0, l.getDate() + u, o, a, s, c)
6665 month: $r("month", Qo, yr(Qo, ["yyyy", "MM"]), "yyyy-MM"),
6666 number: function(e, t, n, r, i, o) {
6667 _r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6669 if (($(n.min) || n.ngMin) && (r.$validators.min = function(e) {
6670 return r.$isEmpty(e) || y(a) || e >= a
6671 }, n.$observe("min", function(e) {
6672 a = Er(e), r.$validate()
6673 })), ($(n.max) || n.ngMax) && (r.$validators.max = function(e) {
6674 return r.$isEmpty(e) || y(s) || e <= s
6675 }, n.$observe("max", function(e) {
6676 s = Er(e), r.$validate()
6677 })), $(n.step) || n.ngStep) {
6679 r.$validators.step = function(e, t) {
6680 return r.$isEmpty(t) || y(c) || kr(t, a || 0, c)
6681 }, n.$observe("step", function(e) {
6682 c = Er(e), r.$validate()
6686 url: function(e, t, n, r, i, o) {
6687 br(e, t, n, r, i, o), vr(r), r.$$parserName = "url", r.$validators.url = function(e, t) {
6689 return r.$isEmpty(n) || Wo.test(n)
6692 email: function(e, t, n, r, i, o) {
6693 br(e, t, n, r, i, o), vr(r), r.$$parserName = "email", r.$validators.email = function(e, t) {
6695 return r.$isEmpty(n) || Yo.test(n)
6698 radio: function(e, t, n, r) {
6699 var i = !n.ngTrim || "false" !== ti(n.ngTrim);
6700 y(n.name) && t.attr("name", c());
6701 t.on("click", function(e) {
6703 t[0].checked && (o = n.value, i && (o = ti(o)), r.$setViewValue(o, e && e.type))
6704 }), r.$render = function() {
6706 i && (e = ti(e)), t[0].checked = e === r.$viewValue
6707 }, n.$observe("value", r.$render)
6709 range: function(e, t, n, r, i, o) {
6711 t.attr(e, n[e]), n.$observe(e, r)
6713 _r(e, t, n, r), wr(r), br(e, t, n, r, i, o);
6714 var s = r.$$hasNativeValidators && "range" === t[0].type,
6716 l = s ? 100 : void 0,
6723 r.$render = s && $(d.rangeUnderflow) && $(d.rangeOverflow) ? function() {
6724 m(), r.$setViewValue(t.val())
6725 } : m, f && (r.$validators.min = s ? function() {
6727 } : function(e, t) {
6728 return r.$isEmpty(t) || y(c) || t >= c
6729 }, a("min", function(e) {
6730 if (c = Er(e), !Qr(r.$modelValue))
6733 c > n && (n = c, t.val(n)), r.$setViewValue(n)
6734 } else r.$validate()
6735 })), h && (r.$validators.max = s ? function() {
6737 } : function(e, t) {
6738 return r.$isEmpty(t) || y(l) || t <= l
6739 }, a("max", function(e) {
6740 if (l = Er(e), !Qr(r.$modelValue))
6743 l < n && (t.val(l), n = l < c ? c : l), r.$setViewValue(n)
6744 } else r.$validate()
6745 })), p && (r.$validators.step = s ? function() {
6746 return !d.stepMismatch
6747 } : function(e, t) {
6748 return r.$isEmpty(t) || y(u) || kr(t, c || 0, u)
6749 }, a("step", function(e) {
6750 u = Er(e), Qr(r.$modelValue) || (s && r.$viewValue !== t.val() ? r.$setViewValue(t.val()) : r.$validate())
6753 checkbox: function(e, t, n, r, i, o, a, s) {
6754 var c = Tr(s, e, "ngTrueValue", n.ngTrueValue, !0),
6755 l = Tr(s, e, "ngFalseValue", n.ngFalseValue, !1);
6756 t.on("click", function(e) {
6757 r.$setViewValue(t[0].checked, e && e.type)
6758 }), r.$render = function() {
6759 t[0].checked = r.$viewValue
6760 }, r.$isEmpty = function(e) {
6762 }, r.$formatters.push(function(e) {
6764 }), r.$parsers.push(function(e) {
6774 ra = ["$browser", "$sniffer", "$filter", "$parse", function(e, t, n, r) {
6777 require: ["?ngModel"],
6779 pre: function(i, o, a, s) {
6780 s[0] && (na[jr(a.type)] || na.text)(i, o, a, s[0], t, e, n, r)
6785 ia = /^(true|false|\d+)$/,
6787 function e(e, t, n) {
6788 var r = $(n) ? n : 9 === Fr ? "" : null;
6789 e.prop("value", r), t.$set("value", n)
6794 compile: function(t, n) {
6795 return ia.test(n.ngValue) ? function(t, n, r) {
6796 e(n, r, t.$eval(r.ngValue))
6797 } : function(t, n, r) {
6798 t.$watch(r.ngValue, function(t) {
6805 aa = ["$compile", function(e) {
6808 compile: function(t) {
6809 return e.$$addBindingClass(t),
6811 e.$$addBindingInfo(n, r.ngBind), n = n[0], t.$watch(r.ngBind, function(e) {
6812 n.textContent = ye(e)
6818 sa = ["$interpolate", "$compile", function(e, t) {
6820 compile: function(n) {
6821 return t.$$addBindingClass(n),
6823 var o = e(r.attr(i.$attr.ngBindTemplate));
6824 t.$$addBindingInfo(r, o.expressions), r = r[0], i.$observe("ngBindTemplate", function(e) {
6825 r.textContent = y(e) ? "" : e
6831 ca = ["$sce", "$parse", "$compile", function(e, t, n) {
6834 compile: function(r, i) {
6835 var o = t(i.ngBindHtml),
6836 a = t(i.ngBindHtml, function(t) {
6839 return n.$$addBindingClass(r),
6841 n.$$addBindingInfo(r, i.ngBindHtml), t.$watch(a, function() {
6843 r.html(e.getTrustedHtml(n) || "")
6852 link: function(e, t, n, r) {
6853 r.$viewChangeListeners.push(function() {
6862 compile: function(e, t) {
6863 t.$set("ngCloak", void 0), e.removeClass("ng-cloak")
6879 o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "), function(e) {
6880 var t = yt("ng-" + e);
6881 ma[t] = ["$parse", "$rootScope", function(n, r) {
6884 compile: function(i, o) {
6886 return function(t, n) {
6887 n.on(e, function(n) {
6888 var i = function() {
6893 ga[e] && r.$$phase ? t.$evalAsync(i) : t.$apply(i)
6900 var va = ["$animate", "$compile", function(e, t) {
6903 transclude: "element",
6908 link: function(n, r, i, o, a) {
6910 n.$watch(i.ngIf, function(n) {
6911 n ? c || a(function(n, o) {
6912 c = o, n[n.length++] = t.$$createComment("end ngIf", i.ngIf), s = {
6914 }, e.enter(n, r.parent(), r)
6915 }) : (l && (l.remove(), l = null), c && (c.$destroy(), c = null), s && (l = ve(s.clone), e.leave(l).done(function(e) {
6916 !1 !== e && (l = null)
6922 ba = ["$templateRequest", "$anchorScroll", "$animate", function(e, t, n) {
6927 transclude: "element",
6928 controller: Zr.noop,
6929 compile: function(r, i) {
6930 var o = i.ngInclude || i.src,
6933 return function(r, i, c, l, u) {
6936 f && (f.remove(), f = null), d && (d.$destroy(), d = null), h && (n.leave(h).done(function(e) {
6937 !1 !== e && (f = null)
6938 }), f = h, h = null)
6940 r.$watch(o, function(o) {
6941 var c = function(e) {
6942 !1 === e || !$(s) || s && !r.$eval(s) || t()
6945 o ? (e(o, !0).then(function(e) {
6946 if (!r.$$destroyed && f === p) {
6949 var s = u(t, function(e) {
6950 m(), n.enter(e, null, i).done(c)
6952 h = s, (d = t).$emit("$includeContentLoaded", o), r.$eval(a)
6955 r.$$destroyed || f === p && (m(), r.$emit("$includeContentError", o))
6956 }), r.$emit("$includeContentRequested", o)) : (m(), l.template = null)
6962 ya = ["$compile", function(t) {
6966 require: "ngInclude",
6967 link: function(n, r, i, o) {
6968 if (Yr.call(r[0]).match(/SVG/)) return r.empty(), void t(Ae(o.template, e.document).childNodes)(n, function(e) {
6971 futureParentElement: r
6973 r.html(o.template), t(r.contents())(n)
6979 compile: function() {
6981 pre: function(e, t, n) {
6992 link: function(e, t, n, r) {
6993 var i = n.ngList || ", ",
6994 a = "false" !== n.ngTrim,
6996 r.$parsers.push(function(e) {
6999 return e && o(e.split(s), function(e) {
7000 e && t.push(a ? ti(e) : e)
7003 }), r.$formatters.push(function(e) {
7004 if (Jr(e)) return e.join(i)
7005 }), r.$isEmpty = function(e) {
7006 return !e || !e.length
7016 Sr.$inject = ["$scope", "$exceptionHandler", "$attrs", "$element", "$parse", "$animate", "$timeout", "$q", "$interpolate"], Sr.prototype = {
7017 $$initGetterSetters: function() {
7018 if (this.$options.getOption("getterSetter")) {
7019 var e = this.$$parse(this.$$attr.ngModel + "()"),
7020 t = this.$$parse(this.$$attr.ngModel + "($$$p)");
7021 this.$$ngModelGet = function(t) {
7022 var n = this.$$parsedNgModel(t);
7023 return T(n) && (n = e(t)), n
7024 }, this.$$ngModelSet = function(e, n) {
7025 T(this.$$parsedNgModel(e)) ? t(e, {
7027 }) : this.$$parsedNgModelAssign(e, n)
7029 } else if (!this.$$parsedNgModel.assign) throw ka("nonassign", "Expression '{0}' is non-assignable. Element: {1}", this.$$attr.ngModel, te(this.$$element))
7032 $isEmpty: function(e) {
7033 return y(e) || "" === e || null === e || e !== e
7035 $$updateEmptyClasses: function(e) {
7036 this.$isEmpty(e) ? (this.$$animate.removeClass(this.$$element, "ng-not-empty"), this.$$animate.addClass(this.$$element, "ng-empty")) : (this.$$animate.removeClass(this.$$element, "ng-empty"), this.$$animate.addClass(this.$$element, "ng-not-empty"))
7038 $setPristine: function() {
7039 this.$dirty = !1, this.$pristine = !0, this.$$animate.removeClass(this.$$element, xa), this.$$animate.addClass(this.$$element, Ca)
7041 $setDirty: function() {
7042 this.$dirty = !0, this.$pristine = !1, this.$$animate.removeClass(this.$$element, Ca), this.$$animate.addClass(this.$$element, xa), this.$$parentForm.$setDirty()
7044 $setUntouched: function() {
7045 this.$touched = !1, this.$untouched = !0, this.$$animate.setClass(this.$$element, "ng-untouched", "ng-touched")
7047 $setTouched: function() {
7048 this.$touched = !0, this.$untouched = !1, this.$$animate.setClass(this.$$element, "ng-touched", "ng-untouched")
7050 $rollbackViewValue: function() {
7051 this.$$timeout.cancel(this.$$pendingDebounce), this.$viewValue = this.$$lastCommittedViewValue, this.$render()
7053 $validate: function() {
7054 if (!Qr(this.$modelValue)) {
7055 var e = this.$$lastCommittedViewValue,
7056 t = this.$$rawModelValue,
7058 r = this.$modelValue,
7059 i = this.$options.getOption("allowInvalid"),
7061 this.$$runValidators(t, e, function(e) {
7062 i || n === e || (o.$modelValue = e ? t : void 0, o.$modelValue !== r && o.$$writeModelToScope())
7066 $$runValidators: function(e, t, n) {
7068 a === s.$$currentValidationRunId && s.$setValidity(e, t)
7072 a === s.$$currentValidationRunId && n(e)
7074 var a = ++this.$$currentValidationRunId,
7077 var e = s.$$parserName || "parse";
7078 return y(s.$$parserValid) ? (r(e, null), !0) : (s.$$parserValid || (o(s.$validators, function(e, t) {
7080 }), o(s.$asyncValidators, function(e, t) {
7082 })), r(e, s.$$parserValid), s.$$parserValid)
7083 }() ? i(!1): function() {
7085 return o(s.$validators, function(i, o) {
7086 var a = Boolean(i(e, t));
7088 }), !!n || (o(s.$asyncValidators, function(e, t) {
7094 o(s.$asyncValidators, function(i, o) {
7096 if (!R(s)) throw ka("nopromise", "Expected asynchronous validator to return a promise but got '{0}' instead.", s);
7097 r(o, void 0), n.push(s.then(function() {
7102 }), n.length ? s.$$q.all(n).then(function() {
7107 $commitViewValue: function() {
7108 var e = this.$viewValue;
7109 this.$$timeout.cancel(this.$$pendingDebounce), (this.$$lastCommittedViewValue !== e || "" === e && this.$$hasNativeValidators) && (this.$$updateEmptyClasses(e), this.$$lastCommittedViewValue = e, this.$pristine && this.$setDirty(), this.$$parseAndValidate())
7111 $$parseAndValidate: function() {
7113 n.$modelValue !== i && n.$$writeModelToScope()
7115 var t = this.$$lastCommittedViewValue,
7117 if (this.$$parserValid = !y(t) || void 0, this.$$parserValid)
7118 for (var r = 0; r < this.$parsers.length; r++)
7119 if (t = this.$parsers[r](t), y(t)) {
7120 this.$$parserValid = !1;
7123 Qr(this.$modelValue) && (this.$modelValue = this.$$ngModelGet(this.$$scope));
7124 var i = this.$modelValue,
7125 o = this.$options.getOption("allowInvalid");
7126 this.$$rawModelValue = t, o && (this.$modelValue = t, e()), this.$$runValidators(t, this.$$lastCommittedViewValue, function(r) {
7127 o || (n.$modelValue = r ? t : void 0, e())
7130 $$writeModelToScope: function() {
7131 this.$$ngModelSet(this.$$scope, this.$modelValue), o(this.$viewChangeListeners, function(e) {
7135 this.$$exceptionHandler(e)
7139 $setViewValue: function(e, t) {
7140 this.$viewValue = e, this.$options.getOption("updateOnDefault") && this.$$debounceViewValueCommit(t)
7142 $$debounceViewValueCommit: function(e) {
7143 var t = this.$options.getOption("debounce");
7144 C(t[e]) ? t = t[e] : C(t.default) && (t = t.default), this.$$timeout.cancel(this.$$pendingDebounce);
7146 t > 0 ? this.$$pendingDebounce = this.$$timeout(function() {
7147 n.$commitViewValue()
7148 }, t) : this.$$scope.$root.$$phase ? this.$commitViewValue() : this.$$scope.$apply(function() {
7149 n.$commitViewValue()
7152 $overrideModelOptions: function(e) {
7153 this.$options = this.$options.createChild(e)
7157 set: function(e, t) {
7160 unset: function(e, t) {
7164 var Ta, Ma = ["$rootScope", function(e) {
7167 require: ["ngModel", "^?form", "^?ngModelOptions"],
7170 compile: function(t) {
7171 return t.addClass(Ca).addClass("ng-untouched").addClass(wa), {
7172 pre: function(e, t, n, r) {
7174 o = r[1] || i.$$parentForm,
7176 a && (i.$options = a.$options), i.$$initGetterSetters(), o.$addControl(i), n.$observe("name", function(e) {
7177 i.$name !== e && i.$$parentForm.$$renameControl(i, e)
7178 }), e.$on("$destroy", function() {
7179 i.$$parentForm.$removeControl(i)
7182 post: function(t, n, r, i) {
7187 a.$options.getOption("updateOn") && n.on(a.$options.getOption("updateOn"), function(e) {
7188 a.$$debounceViewValueCommit(e && e.type)
7189 }), n.on("blur", function() {
7190 a.$touched || (e.$$phase ? t.$evalAsync(o) : t.$apply(o))
7197 Sa = /(\s+|^)default(\s+|$)/;
7199 getOption: function(e) {
7200 return this.$$options[e]
7202 createChild: function(e) {
7204 return e = d({}, e), o(e, function(n, r) {
7205 "$inherit" === n ? "*" === r ? t = !0 : (e[r] = this.$$options[r], "updateOn" === r && (e.updateOnDefault = this.$$options.updateOnDefault)) : "updateOn" === r && (e.updateOnDefault = !1, e[r] = ti(n.replace(Sa, function() {
7206 return e.updateOnDefault = !0, " "
7208 }, this), t && (delete e["*"], Dr(e, this.$$options)), Dr(e, Ta.$$options), new Or(e)
7212 updateOnDefault: !0,
7218 var Aa = function() {
7220 this.$$attrs = e, this.$$scope = t
7222 return e.$inject = ["$attrs", "$scope"], e.prototype = {
7223 $onInit: function() {
7224 var e = this.parentCtrl ? this.parentCtrl.$options : Ta,
7225 t = this.$$scope.$eval(this.$$attrs.ngModelOptions);
7226 this.$options = e.createChild(t)
7232 parentCtrl: "?^^ngModelOptions"
7234 bindToController: !0,
7242 Da = r("ngOptions"),
7243 Na = /^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,
7244 Ia = ["$compile", "$document", "$parse", function(t, n, r) {
7245 function a(e, t, n) {
7246 function o(e, t, n, r, i) {
7247 this.selectValue = e, this.viewValue = t, this.label = n, this.group = r, this.disabled = i
7252 if (!l && i(e)) t = e;
7255 for (var n in e) e.hasOwnProperty(n) && "$" !== n.charAt(0) && t.push(n)
7259 var s = e.match(Na);
7260 if (!s) throw Da("iexp", "Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}", e, te(t));
7261 var c = s[5] || s[7],
7263 u = / as /.test(s[0]) && s[1],
7265 f = r(s[2] ? s[1] : c),
7268 m = d ? function(e, t) {
7273 g = function(e, t) {
7274 return m(e, w(e, t))
7276 v = r(s[2] || s[1]),
7281 w = l ? function(e, t) {
7282 return _[l] = t, _[c] = e, _
7289 getWatchables: r($, function(e) {
7290 for (var t = [], r = a(e = e || []), i = r.length, o = 0; o < i; o++) {
7291 var c = e === r ? o : r[o],
7295 if (t.push(d), s[2] || s[1]) {
7306 getOptions: function() {
7307 for (var e = [], t = {}, r = $(n) || [], i = a(r), s = i.length, c = 0; c < s; c++) {
7308 var l = r === i ? c : i[c],
7312 _ = new o(p, f, v(n, u), b(n, u), y(n, u));
7318 getOptionFromViewValue: function(e) {
7321 getViewValueFromOption: function(e) {
7322 return d ? V(e.viewValue) : e.viewValue
7328 var s = e.document.createElement("option"),
7329 c = e.document.createElement("optgroup");
7333 require: ["select", "ngModel"],
7335 pre: function(e, t, n, r) {
7336 r[0].registerOption = m
7338 post: function(e, r, i, l) {
7340 var n = s.cloneNode(!1);
7341 t.appendChild(n), f(e, n)
7345 var t = _.getOptionFromViewValue(e),
7347 return n && !n.selected && (n.selected = !0), t
7351 e.element = t, t.disabled = e.disabled, e.label !== t.label && (t.label = e.label, t.textContent = e.label), t.value = e.selectValue
7353 for (var h = l[0], p = l[1], m = i.multiple, g = 0, v = r.children(), b = v.length; g < b; g++)
7354 if ("" === v[g].value) {
7355 h.hasEmptyOption = !0, h.emptyOption = v.eq(g);
7359 var y = !!h.emptyOption;
7360 qr(s.cloneNode(!1)).val("?");
7361 var _, w = a(i.ngOptions, r, e),
7362 E = n[0].createDocumentFragment();
7363 h.generateUnknownOptionValue = function(e) {
7365 }, m ? (h.writeValue = function(e) {
7367 var t = e && e.map(d) || [];
7368 _.items.forEach(function(e) {
7369 e.element.selected && !q(t, e) && (e.element.selected = !1)
7372 }, h.readValue = function() {
7374 return o(r.val() || [], function(t) {
7375 var n = _.selectValueMap[t];
7376 n && !n.disabled && e.push(_.getViewValueFromOption(n))
7378 }, w.trackBy && e.$watchCollection(function() {
7379 if (Jr(p.$viewValue)) return p.$viewValue.map(function(e) {
7380 return w.getTrackByValue(e)
7384 })) : (h.writeValue = function(e) {
7386 var t = r[0].options[r[0].selectedIndex],
7387 n = _.getOptionFromViewValue(e);
7388 t && t.removeAttribute("selected"), n ? (r[0].value !== n.selectValue && (h.removeUnknownOption(), r[0].value = n.selectValue, n.element.selected = !0), n.element.setAttribute("selected", "selected")) : h.selectUnknownOrEmptyOption(e)
7390 }, h.readValue = function() {
7391 var e = _.selectValueMap[r.val()];
7392 return e && !e.disabled ? (h.unselectEmptyOption(), h.removeUnknownOption(), _.getViewValueFromOption(e)) : null
7393 }, w.trackBy && e.$watch(function() {
7394 return w.getTrackByValue(p.$viewValue)
7397 })), y && (t(h.emptyOption)(e), r.prepend(h.emptyOption), h.emptyOption[0].nodeType === fi ? (h.hasEmptyOption = !1, h.registerOption = function(e, t) {
7398 "" === t.val() && (h.hasEmptyOption = !0, h.emptyOption = t, h.emptyOption.removeClass("ng-scope"), p.$render(), t.on("$destroy", function() {
7399 var e = h.$isEmptyOptionSelected();
7400 h.hasEmptyOption = !1, h.emptyOption = void 0, e && p.$render()
7402 }) : h.emptyOption.removeClass("ng-scope")), e.$watchCollection(w.getWatchables, function() {
7403 var e = _ && h.readValue();
7405 for (var t = _.items.length - 1; t >= 0; t--) {
7407 Ye($(n.group) ? n.element.parentNode : n.element)
7410 if ((_ = w.getOptions()).items.forEach(function(e) {
7412 $(e.group) ? ((t = i[e.group]) || (t = c.cloneNode(!1), E.appendChild(t), t.label = null === e.group ? "null" : e.group, i[e.group] = t), u(e, t)) : u(e, E)
7413 }), r[0].appendChild(E), p.$render(), !p.$isEmpty(e)) {
7414 var o = h.readValue();
7415 (w.trackBy || m ? z(e, o) : e === o) || (p.$setViewValue(o), p.$render())
7422 Ra = ["$locale", "$interpolate", "$log", function(e, t, n) {
7424 i = /^when(Minus)?(.+)$/;
7426 link: function(a, s, c) {
7431 f = c.$attr.when && s.attr(c.$attr.when),
7433 p = a.$eval(f) || {},
7435 v = t.startSymbol(),
7437 $ = v + d + "-" + h + b,
7439 o(c, function(e, t) {
7442 var r = (n[1] ? "-" : "") + jr(n[2]);
7443 p[r] = s.attr(c.$attr[t])
7445 }), o(p, function(e, n) {
7446 g[n] = t(e.replace(r, $))
7447 }), a.$watch(d, function(t) {
7448 var r = parseFloat(t),
7450 if (i || r in p || (r = e.pluralCat(r - h)), !(r === u || i && Qr(u))) {
7453 y(o) ? (null != t && n.debug("ngPluralize: no rule defined for '" + r + "' in " + f), _ = m, l()) : _ = a.$watch(o, l), u = r
7459 Pa = ["$parse", "$animate", "$compile", function(e, t, n) {
7460 var a = r("ngRepeat"),
7461 s = function(e, t, n, r, i, o, a) {
7462 e[n] = r, i && (e[i] = o), e.$index = t, e.$first = 0 === t, e.$last = t === a - 1, e.$middle = !(e.$first || e.$last), e.$odd = !(e.$even = 0 == (1 & t))
7468 return e.clone[e.clone.length - 1]
7473 transclude: "element",
7477 compile: function(r, u) {
7479 f = n.$$createComment("end ngRepeat", d),
7480 h = d.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);
7481 if (!h) throw a("iexp", "Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.", d);
7486 if (!(h = p.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/))) throw a("iidexp", "'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.", p);
7487 var b = h[3] || h[1],
7489 if (g && (!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(g) || /^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(g))) throw a("badident", "alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.", g);
7490 var $, _, w, E, C = {
7493 return v ? $ = e(v) : (w = function(e, t) {
7495 }, E = function(e) {
7498 function(e, n, r, u, h) {
7499 $ && (_ = function(t, n, r) {
7500 return y && (C[y] = t), C[b] = n, C.$index = r, $(e, C)
7503 e.$watchCollection(m, function(r) {
7504 var u, m, v, $, C, x, k, T, M, S, A, O, D = n[0],
7506 if (g && (e[g] = r), i(r)) M = r, T = _ || w;
7509 for (var I in r) Hr.call(r, I) && "$" !== I.charAt(0) && M.push(I)
7511 for ($ = M.length, A = new Array($), u = 0; u < $; u++)
7512 if (C = r === M ? u : M[u], x = r[C], k = T(C, x, u), p[k]) S = p[k], delete p[k], N[k] = S, A[u] = S;
7514 if (N[k]) throw o(A, function(e) {
7515 e && e.scope && (p[e.id] = e)
7516 }), a("dupes", "Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}", d, k, x);
7524 if (S = p[R], O = ve(S.clone), t.leave(O), O[0].parentNode)
7525 for (u = 0, m = O.length; u < m; u++) O[u].$$NG_REMOVED = !0;
7528 for (u = 0; u < $; u++)
7529 if (C = r === M ? u : M[u], x = r[C], (S = A[u]).scope) {
7533 } while (v && v.$$NG_REMOVED);
7534 c(S) !== v && t.move(ve(S.clone), null, D), D = l(S), s(S.scope, u, b, x, y, C, $)
7535 } else h(function(e, n) {
7537 var r = f.cloneNode(!1);
7538 e[e.length++] = r, t.enter(e, null, D), D = r, S.clone = e, N[S.id] = S, s(S.scope, u, b, x, y, C, $)
7546 Ha = ["$animate", function(e) {
7550 link: function(t, n, r) {
7551 t.$watch(r.ngShow, function(t) {
7552 e[t ? "removeClass" : "addClass"](n, "ng-hide", {
7553 tempClasses: "ng-hide-animate"
7559 ja = ["$animate", function(e) {
7563 link: function(t, n, r) {
7564 t.$watch(r.ngHide, function(t) {
7565 e[t ? "addClass" : "removeClass"](n, "ng-hide", {
7566 tempClasses: "ng-hide-animate"
7572 La = fr(function(e, t, n) {
7573 e.$watch(n.ngStyle, function(e, n) {
7574 n && e !== n && o(n, function(e, n) {
7579 Fa = ["$animate", "$compile", function(e, t) {
7581 require: "ngSwitch",
7582 controller: ["$scope", function() {
7585 link: function(n, r, i, a) {
7586 var s = i.ngSwitch || i.on,
7591 f = function(e, t) {
7592 return function(n) {
7593 !1 !== n && e.splice(t, 1)
7596 n.$watch(s, function(n) {
7597 for (var r, i; u.length;) e.cancel(u.pop());
7598 for (r = 0, i = d.length; r < i; ++r) {
7599 var s = ve(l[r].clone);
7600 d[r].$destroy(), (u[r] = e.leave(s)).done(f(u, r))
7602 l.length = 0, d.length = 0, (c = a.cases["!" + n] || a.cases["?"]) && o(c, function(n) {
7603 n.transclude(function(r, i) {
7606 r[r.length++] = t.$$createComment("end ngSwitchWhen");
7610 l.push(a), e.enter(r, o.parent(), o)
7618 transclude: "element",
7620 require: "^ngSwitch",
7622 link: function(e, t, n, r, i) {
7623 o(n.ngSwitchWhen.split(n.ngSwitchWhenSeparator).sort().filter(function(e, t, n) {
7624 return n[t - 1] !== e
7626 r.cases["!" + e] = r.cases["!" + e] || [], r.cases["!" + e].push({
7634 transclude: "element",
7636 require: "^ngSwitch",
7638 link: function(e, t, n, r, i) {
7639 r.cases["?"] = r.cases["?"] || [], r.cases["?"].push({
7645 Va = r("ngTransclude"),
7646 Ba = ["$compile", function(e) {
7650 compile: function(t) {
7651 var n = e(t.contents());
7653 function(e, t, r, i, o) {
7661 for (var t = 0, n = e.length; t < n; t++) {
7663 if (r.nodeType !== di || r.nodeValue.trim()) return !0
7666 if (!o) throw Va("orphan", "Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}", te(t));
7667 r.ngTransclude === r.$attr.ngTransclude && (r.ngTransclude = "");
7668 var c = r.ngTransclude || r.ngTranscludeSlot;
7670 e.length && s(e) ? t.append(e) : (a(), n.$destroy())
7671 }, null, c), c && !o.isSlotFilled(c) && a()
7676 za = ["$templateCache", function(e) {
7680 compile: function(t, n) {
7681 if ("text/ng-template" === n.type) {
7693 Ya = ["$element", "$scope", function(t, n) {
7695 s || (s = !0, n.$$postDigest(function() {
7696 s = !1, o.ngModelCtrl.$render()
7701 c || (c = !0, n.$$postDigest(function() {
7702 n.$$destroyed || (c = !1, o.ngModelCtrl.$setViewValue(o.readValue()), e && o.ngModelCtrl.$render())
7707 o.selectValueMap = {}, o.ngModelCtrl = Wa, o.multiple = !1, o.unknownOption = qr(e.document.createElement("option")), o.hasEmptyOption = !1, o.emptyOption = void 0, o.renderUnknownOption = function(e) {
7708 var n = o.generateUnknownOptionValue(e);
7709 o.unknownOption.val(n), t.prepend(o.unknownOption), Nr(o.unknownOption, !0), t.val(n)
7710 }, o.updateUnknownOption = function(e) {
7711 var n = o.generateUnknownOptionValue(e);
7712 o.unknownOption.val(n), Nr(o.unknownOption, !0), t.val(n)
7713 }, o.generateUnknownOptionValue = function(e) {
7714 return "? " + nt(e) + " ?"
7715 }, o.removeUnknownOption = function() {
7716 o.unknownOption.parent() && o.unknownOption.remove()
7717 }, o.selectEmptyOption = function() {
7718 o.emptyOption && (t.val(""), Nr(o.emptyOption, !0))
7719 }, o.unselectEmptyOption = function() {
7720 o.hasEmptyOption && Nr(o.emptyOption, !1)
7721 }, n.$on("$destroy", function() {
7722 o.renderUnknownOption = m
7723 }), o.readValue = function() {
7725 n = e in o.selectValueMap ? o.selectValueMap[e] : e;
7726 return o.hasOption(n) ? n : null
7727 }, o.writeValue = function(e) {
7728 var n = t[0].options[t[0].selectedIndex];
7729 if (n && Nr(qr(n), !1), o.hasOption(e)) {
7730 o.removeUnknownOption();
7732 t.val(r in o.selectValueMap ? r : e);
7733 var i = t[0].options[t[0].selectedIndex];
7735 } else o.selectUnknownOrEmptyOption(e)
7736 }, o.addOption = function(e, t) {
7737 if (t[0].nodeType !== fi) {
7738 me(e, '"option value"'), "" === e && (o.hasEmptyOption = !0, o.emptyOption = t);
7739 var n = a.get(e) || 0;
7740 a.set(e, n + 1), r()
7742 }, o.removeOption = function(e) {
7744 t && (1 === t ? (a.delete(e), "" === e && (o.hasEmptyOption = !1, o.emptyOption = void 0)) : a.set(e, t - 1))
7745 }, o.hasOption = function(e) {
7747 }, o.$hasEmptyOption = function() {
7748 return o.hasEmptyOption
7749 }, o.$isUnknownOptionSelected = function() {
7750 return t[0].options[0] === o.unknownOption[0]
7751 }, o.$isEmptyOptionSelected = function() {
7752 return o.hasEmptyOption && t[0].options[t[0].selectedIndex] === o.emptyOption[0]
7753 }, o.selectUnknownOrEmptyOption = function(e) {
7754 null == e && o.emptyOption ? (o.removeUnknownOption(), o.selectEmptyOption()) : o.unknownOption.parent().length ? o.updateUnknownOption(e) : o.renderUnknownOption(e)
7758 o.registerOption = function(e, t, n, a, s) {
7759 if (n.$attr.ngValue) {
7761 n.$observe("value", function(e) {
7762 var n, r = t.prop("selected");
7763 $(l) && (o.removeOption(c), delete o.selectValueMap[l], n = !0), l = nt(e), c = e, o.selectValueMap[l] = e, o.addOption(e, t), t.attr("value", l), n && r && i()
7765 } else a ? n.$observe("value", function(e) {
7767 var n, r = t.prop("selected");
7768 $(c) && (o.removeOption(c), n = !0), c = e, o.addOption(e, t), n && r && i()
7769 }) : s ? e.$watch(s, function(e, r) {
7771 var a = t.prop("selected");
7772 r !== e && o.removeOption(r), o.addOption(e, t), r && a && i()
7773 }) : o.addOption(n.value, t);
7774 n.$observe("disabled", function(e) {
7775 ("true" === e || e && t.prop("selected")) && (o.multiple ? i(!0) : (o.ngModelCtrl.$setViewValue(null), o.ngModelCtrl.$render()))
7776 }), t.on("$destroy", function() {
7777 var e = o.readValue(),
7779 o.removeOption(t), r(), (o.multiple && e && -1 !== e.indexOf(t) || e === t) && i(!0)
7786 require: ["select", "?ngModel"],
7790 pre: function(e, t, n, r) {
7794 if (i.ngModelCtrl = a, t.on("change", function() {
7795 i.removeUnknownOption(), e.$apply(function() {
7796 a.$setViewValue(i.readValue())
7799 i.multiple = !0, i.readValue = function() {
7801 return o(t.find("option"), function(t) {
7802 if (t.selected && !t.disabled) {
7804 e.push(n in i.selectValueMap ? i.selectValueMap[n] : n)
7807 }, i.writeValue = function(e) {
7808 o(t.find("option"), function(t) {
7809 var n = !!e && (q(e, t.value) || q(e, i.selectValueMap[t.value]));
7810 n !== t.selected && Nr(qr(t), n)
7814 e.$watch(function() {
7815 c !== a.$viewValue || z(s, a.$viewValue) || (s = _e(a.$viewValue), a.$render()), c = a.$viewValue
7816 }), a.$isEmpty = function(e) {
7817 return !e || 0 === e.length
7820 } else i.registerOption = m
7822 post: function(e, t, n, r) {
7826 i.$render = function() {
7827 o.writeValue(i.$viewValue)
7834 Ka = ["$interpolate", function(e) {
7838 compile: function(t, n) {
7840 return $(n.ngValue) || ($(n.value) ? r = e(n.value, !0) : (i = e(t.text(), !0)) || n.$set("value", t.text())),
7843 a = o.data("$selectController") || o.parent().data("$selectController");
7844 a && a.registerOption(e, t, n, r, i)
7852 require: "?ngModel",
7853 link: function(e, t, n, r) {
7854 r && (n.required = !0, r.$validators.required = function(e, t) {
7855 return !n.required || !r.$isEmpty(t)
7856 }, n.$observe("required", function() {
7865 require: "?ngModel",
7866 link: function(e, t, n, i) {
7868 var o, a = n.ngPattern || n.pattern;
7869 n.$observe("pattern", function(e) {
7870 if (E(e) && e.length > 0 && (e = new RegExp("^" + e + "$")), e && !e.test) throw r("ngPattern")("noregexp", "Expected {0} to be a RegExp but was {1}. Element: {2}", a, e, te(t));
7871 o = e || void 0, i.$validate()
7872 }), i.$validators.pattern = function(e, t) {
7873 return i.$isEmpty(t) || y(o) || o.test(t)
7882 require: "?ngModel",
7883 link: function(e, t, n, r) {
7886 n.$observe("maxlength", function(e) {
7888 i = Qr(t) ? -1 : t, r.$validate()
7889 }), r.$validators.maxlength = function(e, t) {
7890 return i < 0 || r.$isEmpty(t) || t.length <= i
7899 require: "?ngModel",
7900 link: function(e, t, n, r) {
7903 n.$observe("minlength", function(e) {
7904 i = h(e) || 0, r.$validate()
7905 }), r.$validators.minlength = function(e, t) {
7906 return r.$isEmpty(t) || t.length >= i
7912 e.angular.bootstrap ? e.console && console.log("WARNING: Tried to load angular more than once.") : (! function() {
7916 (Ur = y(n) ? e.jQuery : n ? e[n] : void 0) && Ur.fn.on ? (qr = Ur, d(Ur.fn, {
7918 isolateScope: Mi.isolateScope,
7919 controller: Mi.controller,
7920 injector: Mi.injector,
7921 inheritedData: Mi.inheritedData
7922 }), t = Ur.cleanData, Ur.cleanData = function(e) {
7923 for (var n, r, i = 0; null != (r = e[i]); i++)(n = Ur._data(r, "events")) && n.$destroy && Ur(r).triggerHandler("$destroy");
7925 }) : qr = Ne, Zr.element = qr, li = !0
7929 errorHandlingConfig: t,
7959 reloadWithDebugInfo: ue,
7962 $$encodeUriSegment: oe,
7963 $$encodeUriQuery: ae,
7965 }), (Vr = $e(e))("ng", ["ngLocale"], ["$provide", function(e) {
7968 }), e.provider("$compile", vt).directive({
7996 ngSwitchDefault: Ua,
8014 }).directive(Lo).directive(ma), e.provider({
8020 $$AnimateRunner: Yi,
8021 $$animateAsyncRun: Wi,
8026 $$isDocumentHidden: xt,
8027 $exceptionHandler: kt,
8033 $httpParamSerializer: Mt,
8034 $httpParamSerializerJQLike: St,
8037 $jsonpCallbacks: lo,
8048 $templateRequest: Pn,
8058 angularVersion: "1.6.6"
8060 }(Zr), Zr.module("ngLocale", [], ["$provide", function(e) {
8062 var t = (e += "").indexOf(".");
8063 return -1 == t ? 0 : e.length - t - 1
8068 void 0 === r && (r = Math.min(t(e), 3));
8069 var i = Math.pow(10, r);
8083 e.value("$locale", {
8085 AMPMS: ["AM", "PM"],
8086 DAY: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
8087 ERANAMES: ["Before Christ", "Anno Domini"],
8090 MONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8091 SHORTDAY: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
8092 SHORTMONTH: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
8093 STANDALONEMONTH: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
8094 WEEKENDRANGE: [5, 6],
8095 fullDate: "EEEE, MMMM d, y",
8096 longDate: "MMMM d, y",
8097 medium: "MMM d, y h:mm:ss a",
8098 mediumDate: "MMM d, y",
8099 mediumTime: "h:mm:ss a",
8100 short: "M/d/yy h:mm a",
8101 shortDate: "M/d/yy",
8132 pluralCat: function(e, t) {
8135 return 1 == i && 0 == o.v ? r.ONE : r.OTHER
8138 }]), qr(function() {
8141 }(window), !window.angular.$$csp().noInlineStyle && window.angular.element(document.head).prepend('<style type="text/css">@charset "UTF-8";[ng\\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>'),
8145 function n(e, t, n) {
8146 if (!e) throw ce("areq", "Argument '{0}' is {1}", t || "?", n || "required");
8151 return e || t ? e ? t ? (W(e) && (e = e.join(" ")), W(t) && (t = t.join(" ")), e + " " + t) : e : t : ""
8156 return e && (e.to || e.from) && (t.to = e.to, t.from = e.from), t
8159 function o(e, t, n) {
8161 return e = W(e) ? e : e && X(e) && e.length ? e.split(/\s+/) : [], z(e, function(e, i) {
8162 e && e.length > 0 && (r += i > 0 ? " " : "", r += n ? t + e : e + t)
8167 var n = e.indexOf(t);
8168 t >= 0 && e.splice(n, 1)
8172 if (e instanceof J) switch (e.length) {
8176 if (e[0].nodeType === H) return e;
8181 if (e.nodeType === H) return J(e)
8185 if (!e[0]) return e;
8186 for (var t = 0; t < e.length; t++) {
8188 if (n.nodeType === H) return n
8192 function l(e, t, n) {
8198 function u(e, t, n) {
8205 return function(t, n) {
8206 n.addClass && (l(e, t, n.addClass), n.addClass = null), n.removeClass && (u(e, t, n.removeClass), n.removeClass = null)
8211 if (!(e = e || {}).$$prepared) {
8212 var t = e.domOperation || ee;
8213 e.domOperation = function() {
8214 e.$$domOperationFired = !0, t(), t = ee
8215 }, e.$$prepared = !0
8225 t.from && (e.css(t.from), t.from = null)
8229 t.to && (e.css(t.to), t.to = null)
8232 function g(e, t, n) {
8233 var r = t.options || {},
8234 i = n.options || {},
8235 o = (r.addClass || "") + " " + (i.addClass || ""),
8236 a = (r.removeClass || "") + " " + (i.removeClass || ""),
8237 s = v(e.attr("class"), o, a);
8238 i.preparationClasses && (r.preparationClasses = C(i.preparationClasses, r.preparationClasses), delete i.preparationClasses);
8239 var c = r.domOperation !== ee ? r.domOperation : null;
8240 return B(r, i), c && (r.domOperation = c), s.addClass ? r.addClass = s.addClass : r.addClass = null, s.removeClass ? r.removeClass = s.removeClass : r.removeClass = null, t.addClass = r.addClass, t.removeClass = r.removeClass, r
8243 function v(e, t, n) {
8245 X(e) && (e = e.split(" "));
8247 return z(e, function(e) {
8248 e.length && (t[e] = !0)
8252 e = r(e), t = r(t), z(t, function(e, t) {
8254 }), n = r(n), z(n, function(e, t) {
8255 i[t] = 1 === i[t] ? null : -1
8261 return z(i, function(t, n) {
8263 1 === t ? (r = "addClass", i = !e[n] || e[n + L]) : -1 === t && (r = "removeClass", i = e[n] || e[n + j]), i && (o[r].length && (o[r] += " "), o[r] += n)
8268 return e instanceof J ? e[0] : e
8271 function y(e, t, n) {
8273 t && (r = o(t, F, !0)), n.addClass && (r = C(r, o(n.addClass, j))), n.removeClass && (r = C(r, o(n.removeClass, L))), r.length && (n.preparationClasses = r, e.addClass(r))
8277 t.preparationClasses && (e.removeClass(t.preparationClasses), t.preparationClasses = null), t.activeClasses && (e.removeClass(t.activeClasses), t.activeClasses = null)
8281 var n = t ? "-" + t + "s" : "";
8282 return E(e, [ae, n]), [ae, n]
8286 var n = t ? "paused" : "",
8288 return E(e, [r, n]), [r, n]
8298 return e ? t ? e + " " + t : e : t
8302 return [oe, e + "s"]
8306 return [t ? ie : ae, e + "s"]
8309 function T(e, t, n) {
8310 var r = Object.create(null),
8311 i = e.getComputedStyle(t) || {};
8312 return z(n, function(e, t) {
8315 var o = n.charAt(0);
8316 ("-" === o || "+" === o || o >= 0) && (n = M(n)), 0 === n && (n = null), r[t] = n
8323 n = e.split(/\s*,\s*/);
8324 return z(n, function(e) {
8325 "s" === e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
8330 return 0 === e || null != e
8336 return t ? n += te : r += " linear all", [n, r]
8340 var e = Object.create(null);
8343 e = Object.create(null)
8345 count: function(t) {
8347 return n ? n.total : 0
8353 put: function(t, n) {
8354 e[t] ? e[t].total++ : e[t] = {
8362 function D(e, t, n) {
8364 e[n] = Y(e[n]) ? e[n] : t.style.getPropertyValue(n)
8367 var N, I, R, P, H = 1,
8372 U = "$$ngAnimateChildren";
8373 void 0 === e.ontransitionend && void 0 !== e.onwebkittransitionend ? ("-webkit-", N = "WebkitTransition", I = "webkitTransitionEnd transitionend") : (N = "transition", I = "transitionend"), void 0 === e.onanimationend && void 0 !== e.onwebkitanimationend ? ("-webkit-", R = "WebkitAnimation", P = "webkitAnimationEnd animationend") : (R = "animation", P = "animationend");
8374 var V, B, z, W, Y, G, K, Z, X, Q, J, ee, te = "Duration",
8375 ne = "TimingFunction",
8381 ce = t.$$minErr("ng"),
8382 le = ["$$rAF", function(e) {
8384 r = r.concat(e), n()
8389 for (var t = r.shift(), o = 0; o < t.length; o++) t[o]();
8396 return r = t.queue = [], t.waitUntilQuiet = function(t) {
8397 i && i(), i = e(function() {
8402 ue = ["$interpolate", function(e) {
8404 link: function(t, n, r) {
8406 e = "on" === e || "true" === e, n.data(U, e)
8408 var o = r.ngAnimateChildren;
8409 X(o) && 0 === o.length ? n.data(U, !0) : (i(e(o)(t)), r.$observe("ngAnimateChildren", i))
8413 de = "$$animateCss",
8418 transitionDuration: se,
8419 transitionDelay: ae,
8420 transitionProperty: N + "Property",
8421 animationDuration: oe,
8423 animationIterationCount: R + "IterationCount"
8426 transitionDuration: se,
8427 transitionDelay: ae,
8428 animationDuration: oe,
8431 ve = ["$animateProvider", function(e) {
8434 this.$get = ["$window", "$$jqLite", "$$AnimateRunner", "$timeout", "$$forceReflow", "$sniffer", "$$rAFScheduler", "$$animateQueue", function(e, r, s, c, l, u, g, v) {
8436 var n = "$$ngAnimateParentKey",
8438 return (r[n] || (r[n] = ++q)) + "-" + e.getAttribute("class") + "-" + t
8441 function $(n, r, i, o) {
8443 return a || "infinite" === (a = T(e, n, o)).animationIterationCount && (a.animationIterationCount = 1), t.put(i, a), a
8446 function C(i, a, s, c) {
8448 if (t.count(s) > 0 && !(l = n.get(s))) {
8449 var u = o(a, "-stagger");
8450 r.addClass(i, u), (l = T(e, i, c)).animationDuration = Math.max(l.animationDuration, 0), l.transitionDuration = Math.max(l.transitionDuration, 0), r.removeClass(i, u), n.put(s, l)
8456 U.push(e), g.waitUntilQuiet(function() {
8457 t.flush(), n.flush();
8458 for (var e = l(), r = 0; r < U.length; r++) U[r](e);
8463 function O(e, t, n) {
8464 var r = $(e, t, n, me),
8465 i = r.animationDelay,
8466 o = r.transitionDelay;
8467 return r.maxDelay = i && o ? Math.max(i, o) : i || o, r.maxDuration = Math.max(r.animationDuration * r.animationIterationCount, r.transitionDuration), r
8472 return function(e, n) {
8482 if (!(K || X && Z)) {
8483 K = !0, Z = !1, B.$$skipPreparationClasses || r.removeClass(e, ye), r.removeClass(e, _e), w(G, !1), _(G, !1), z(se, function(e) {
8485 }), H(e, B), h(e, B), Object.keys(Y).length && z(Y, function(e, t) {
8486 e ? G.style.setProperty(t, e) : G.style.removeProperty(t)
8487 }), B.onDone && B.onDone(), ue && ue.length && e.off(ue.join(" "), q);
8489 n && (c.cancel(n[0].timer), e.removeData(de)), Q && Q.complete(!t)
8494 Ie.blockTransition && _(G, e), Ie.blockKeyframeAnimation && w(G, !!e)
8511 e.stopPropagation();
8512 var t = e.originalEvent || e,
8513 n = t.$manualTimeStamp || Date.now(),
8514 r = parseFloat(t.elapsedTime.toFixed(he));
8515 Math.max(n - ae, 0) >= re && r >= ie && (X = !0, g())
8521 if ($(!1), z(se, function(e) {
8525 }), H(e, B), r.addClass(e, _e), Ie.recalculateTimingStyles) {
8526 if ($e = G.getAttribute("class") + " " + ye, Ee = y(G, $e), De = O(G, $e, Ee), Ne = De.maxDelay, te = Math.max(Ne, 0), 0 === (ie = De.maxDuration)) return void g();
8527 Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0
8529 if (Ie.applyAnimationDelay && (Ne = "boolean" != typeof B.delay && S(B.delay) ? parseFloat(B.delay) : Ne, te = Math.max(Ne, 0), De.animationDelay = Ne, Re = k(Ne, !0), se.push(Re), G.style[Re[0]] = Re[1]), re = te * fe, oe = ie * fe, B.easing) {
8530 var t, i = B.easing;
8531 Ie.hasTransitions && (t = N + ne, se.push([t, i]), G.style[t] = i), Ie.hasAnimations && (t = R + ne, se.push([t, i]), G.style[t] = i)
8533 De.transitionDuration && ue.push(I), De.animationDuration && ue.push(P), ae = Date.now();
8534 var o = re + pe * oe,
8536 s = e.data(de) || [],
8540 (l = a > u.expectedEndTime) ? c.cancel(u.timer): s.push(g)
8543 var d = c(n, o, !1);
8547 }, s.push(g), e.data(de, s)
8549 ue.length && e.on(ue.join(" "), q), B.to && (B.cleanupStyles && D(Y, G, Object.keys(B.to)), m(e, B))
8556 for (var n = 1; n < t.length; n++) t[n]();
8562 var i = function(e) {
8563 if (X) Z && e && (Z = !1, g());
8564 else if (Z = !e, De.animationDuration) {
8566 Z ? se.push(t) : a(se, t)
8569 o = Ae > 0 && (De.transitionDuration && 0 === Ce.transitionDuration || De.animationDuration && 0 === Ce.animationDuration) && Math.max(Ce.animationDelay, Ce.transitionDelay);
8570 o ? c(t, Math.floor(o * Ae * fe), !1) : t(), J.resume = function() {
8572 }, J.pause = function() {
8578 B.$$prepared || (B = f(V(B)));
8581 if (!G || !G.parentNode || !v.enabled()) return T();
8582 var K, Z, X, Q, J, te, re, ie, oe, ae, se = [],
8583 ce = e.attr("class"),
8586 if (0 === B.duration || !u.animations && !u.transitions) return T();
8587 var me = B.event && W(B.event) ? B.event.join(" ") : B.event,
8590 me && B.structural ? ve = o(me, F, !0) : me && (ve = me), B.addClass && (be += o(B.addClass, j)), B.removeClass && (be.length && (be += " "), be += o(B.removeClass, L)), B.applyClassesEarly && be.length && H(e, B);
8591 var ye = [ve, be].join(" ").trim(),
8593 _e = o(ye, "-active"),
8594 we = le.to && Object.keys(le.to).length > 0;
8595 if (!((B.keyframeStyle || "").length > 0) && !we && !ye) return T();
8597 if (B.stagger > 0) {
8598 var xe = parseFloat(B.stagger);
8600 transitionDelay: xe,
8602 transitionDuration: 0,
8603 animationDuration: 0
8605 } else Ee = y(G, $e), Ce = C(G, ye, Ee, ge);
8606 B.$$skipPreparationClasses || r.addClass(e, ye);
8608 if (B.transitionStyle) {
8609 var Te = [N, B.transitionStyle];
8610 E(G, Te), se.push(Te)
8612 if (B.duration >= 0) {
8613 ke = G.style[N].length > 0;
8614 var Me = A(B.duration, ke);
8615 E(G, Me), se.push(Me)
8617 if (B.keyframeStyle) {
8618 var Se = [R, B.keyframeStyle];
8619 E(G, Se), se.push(Se)
8621 var Ae = Ce ? B.staggerIndex >= 0 ? B.staggerIndex : t.count(Ee) : 0,
8623 Oe && !B.skipBlocking && _(G, 9999);
8624 var De = O(G, $e, Ee),
8626 te = Math.max(Ne, 0), ie = De.maxDuration;
8628 if (Ie.hasTransitions = De.transitionDuration > 0, Ie.hasAnimations = De.animationDuration > 0, Ie.hasTransitionAll = Ie.hasTransitions && "all" === De.transitionProperty, Ie.applyTransitionDuration = we && (Ie.hasTransitions && !Ie.hasTransitionAll || Ie.hasAnimations && !Ie.hasTransitions), Ie.applyAnimationDuration = B.duration && Ie.hasAnimations, Ie.applyTransitionDelay = S(B.delay) && (Ie.applyTransitionDuration || Ie.hasTransitions), Ie.applyAnimationDelay = S(B.delay) && Ie.hasAnimations, Ie.recalculateTimingStyles = be.length > 0, (Ie.applyTransitionDuration || Ie.applyAnimationDuration) && (ie = B.duration ? parseFloat(B.duration) : ie, Ie.applyTransitionDuration && (Ie.hasTransitions = !0, De.transitionDuration = ie, ke = G.style[N + "Property"].length > 0, se.push(A(ie, ke))), Ie.applyAnimationDuration && (Ie.hasAnimations = !0, De.animationDuration = ie, se.push(x(ie)))), 0 === ie && !Ie.recalculateTimingStyles) return T();
8629 if (null != B.delay) {
8631 "boolean" != typeof B.delay && (Re = parseFloat(B.delay), te = Math.max(Re, 0)), Ie.applyTransitionDelay && se.push(k(Re)), Ie.applyAnimationDelay && se.push(k(Re, !0))
8633 return null == B.duration && De.transitionDuration > 0 && (Ie.recalculateTimingStyles = Ie.recalculateTimingStyles || Oe), re = te * fe, oe = ie * fe, B.skipBlocking || (Ie.blockTransition = De.transitionDuration > 0, Ie.blockKeyframeAnimation = De.animationDuration > 0 && Ce.animationDelay > 0 && 0 === Ce.animationDuration), B.from && (B.cleanupStyles && D(Y, G, Object.keys(B.from)), p(e, B)), Ie.blockTransition || Ie.blockKeyframeAnimation ? $(ie) : B.skipBlocking || _(G, !1), {
8637 if (!K) return J = {
8642 }, Q = new s(J), M(U), Q
8648 be = ["$$animationProvider", function(e) {
8650 return e.parentNode && 11 === e.parentNode.nodeType
8652 e.drivers.push("$$animateCssDriver");
8653 var n = "ng-animate-shim",
8655 i = "ng-anchor-out",
8657 this.$get = ["$animateCss", "$rootScope", "$$AnimateRunner", "$rootElement", "$sniffer", "$$jqLite", "$document", function(e, a, s, c, l, u, d) {
8659 return e.replace(/\bng-\S+\b/g, "")
8663 return X(e) && (e = e.split(" ")), X(t) && (t = t.split(" ")), e.filter(function(e) {
8664 return -1 === t.indexOf(e)
8668 function p(t, a, c) {
8671 n = b(e).getBoundingClientRect();
8672 return z(["width", "height", "top", "left"], function(e) {
8681 t[e] = Math.floor(r) + "px"
8686 return e.attr("class") || ""
8695 addClass: o + " " + n,
8696 removeClass: i + " " + r,
8699 return a.$$willAnimate ? a : null
8703 m.remove(), a.removeClass(n), c.removeClass(n)
8705 var m = J(b(a).cloneNode(!0)),
8707 a.addClass(n), c.addClass(n), m.addClass(r), $.append(m);
8708 var y, _ = function() {
8714 return t.$$willAnimate ? t : null
8716 if (!_ && !(y = d())) return p();
8723 var t, n = w.start();
8724 return n.done(function() {
8725 if (n = null, !y && (y = d())) return (n = y.start()).done(function() {
8726 n = null, p(), t.complete()
8737 function m(e, t, n, r) {
8741 if (z(r, function(e) {
8746 }), i || o || 0 !== a.length) return {
8754 i && t.push(i.start()), o && t.push(o.start()), z(a, function(e) {
8761 return s.all(t, function(e) {
8770 r = t.options || {};
8771 t.structural && (r.event = t.event, r.structural = !0, r.applyClassesEarly = !0, "leave" === t.event && (r.onDone = r.domOperation)), r.preparationClasses && (r.event = C(r.event, r.preparationClasses));
8773 return i.$$willAnimate ? i : null
8775 if (!l.animations && !l.transitions) return ee;
8778 $ = J(t(y) || v.contains(y) ? y : v);
8779 return function(e) {
8780 return e.from && e.to ? m(e.from, e.to, e.classes, e.anchors) : g(e)
8784 ye = ["$animateProvider", function(e) {
8785 this.$get = ["$injector", "$$AnimateRunner", "$$jqLite", function(t, n, r) {
8787 n = W(n) ? n : n.split(" ");
8788 for (var r = [], i = {}, o = 0; o < n.length; o++) {
8790 s = e.$$registeredAnimations[a];
8791 s && !i[a] && (r.push(t.get(s)), i[a] = !0)
8796 return function(e, t, r, a) {
8798 a.domOperation(), o(e, a)
8802 p = !0, s(), h(e, a)
8805 function l(e, t, r, i, o) {
8809 a = [t, i.from, i.to, o];
8824 var s = e.apply(e, a);
8826 if (K(s.start) && (s = s.start()), s instanceof n) s.done(o);
8827 else if (K(s)) return s;
8831 function u(e, t, r, i, o) {
8833 return z(i, function(i) {
8835 s && a.push(function() {
8838 a || (a = !0, (o || ee)(e), i.complete(!e))
8844 cancel: function() {
8847 }), o = l(s, e, t, r, function(e) {
8854 function d(e, t, r, i, o) {
8855 var a = u(e, t, r, i, o);
8856 if (0 === a.length) {
8858 "beforeSetClass" === o ? (s = u(e, "removeClass", r, i, "beforeRemoveClass"), c = u(e, "addClass", r, i, "beforeAddClass")) : "setClass" === o && (s = u(e, "removeClass", r, i, "removeClass"), c = u(e, "addClass", r, i, "addClass")), s && (a = a.concat(s)), c && (a = a.concat(c))
8860 if (0 !== a.length) return function(e) {
8862 return a.length && z(a, function(e) {
8864 }), t.length ? n.all(t, e) : e(),
8867 e ? t.cancel() : t.end()
8873 3 === arguments.length && Z(r) && (a = r, r = null), a = f(a), r || (r = e.attr("class") || "", a.addClass && (r += " " + a.addClass), a.removeClass && (r += " " + a.removeClass));
8874 var m, g, v = a.addClass,
8879 "leave" === t ? (_ = "leave", $ = "afterLeave") : (_ = "before" + t.charAt(0).toUpperCase() + t.substr(1), $ = t), "enter" !== t && "move" !== t && (m = d(e, t, a, y, _)), g = d(e, t, a, y, $)
8886 return w ? w.end() : (c(), (w = new n).complete(!0)), w
8894 p || ((r || ee)(t), e(t))
8899 return m && i.push(function(e) {
8901 }), i.length ? i.push(function(e) {
8903 }) : s(), g && i.push(function(e) {
8909 cancel: function() {
8912 }), n.chain(i, e), w
8919 $e = ["$$animationProvider", function(e) {
8920 e.drivers.push("$$animateJsDriver"), this.$get = ["$$animateJs", "$$AnimateRunner", function(e, t) {
8926 return e(n, r, o, i)
8928 return function(e) {
8929 if (e.from && e.to) {
8932 if (!r && !i) return;
8943 r && n.push(r.start()), i && n.push(i.start()), t.all(n, function(e) {
8958 _e = "data-ng-animate",
8959 we = "$ngAnimatePin",
8960 Ee = ["$animateProvider", function(t) {
8962 if (!e) return null;
8964 n = Object.create(null);
8965 return z(t, function(e) {
8973 return e.split(p).some(function(e) {
8979 function o(e, t, n) {
8980 return m[e].some(function(e) {
8986 var n = (e.addClass || "").length > 0,
8987 r = (e.removeClass || "").length > 0;
8988 return t ? n && r : n || r
8998 m.join.push(function(e, t) {
8999 return !e.structural && a(e)
9000 }), m.skip.push(function(e, t) {
9001 return !e.structural && !a(e)
9002 }), m.skip.push(function(e, t) {
9003 return "leave" === t.event && e.structural
9004 }), m.skip.push(function(e, t) {
9005 return t.structural && t.state === u && !e.structural
9006 }), m.cancel.push(function(e, t) {
9007 return t.structural && e.structural
9008 }), m.cancel.push(function(e, t) {
9009 return t.state === u && e.structural
9010 }), m.cancel.push(function(e, t) {
9011 if (t.structural) return !1;
9016 return !(Q(n) && Q(r) || Q(o) && Q(a)) && (i(n, a) || i(r, o))
9017 }), this.$get = ["$$rAF", "$rootScope", "$rootElement", "$document", "$$Map", "$$animation", "$$AnimateRunner", "$templateRequest", "$$jqLite", "$$forceReflow", "$$isDocumentHidden", function(r, i, p, m, v, _, w, E, C, x, k) {
9020 return function(t) {
9021 e ? t() : i.$$postDigest(function() {
9031 function S(e, t, n) {
9034 return i && z(i, function(i) {
9035 ae.call(i.node, t) ? r.push(i.callback) : "leave" === n && ae.call(i.node, e) && r.push(i.callback)
9039 function A(e, t, n) {
9041 return e.filter(function(e) {
9042 return !(e.node === r && (!n || e.callback === n))
9047 "close" !== e || t.parentNode || se.off(t)
9050 function D(e, t, n) {
9051 function c(e, t, n, i) {
9054 e.length ? r(function() {
9059 }), e.progress(t, n, i)
9063 $(m, p), oe(m, p), h(m, p), p.domOperation(), C.complete(!e)
9068 E = v && v.parentNode;
9072 if (W(p.addClass) && (p.addClass = p.addClass.join(" ")), p.addClass && !X(p.addClass) && (p.addClass = null), W(p.removeClass) && (p.removeClass = p.removeClass.join(" ")), p.removeClass && !X(p.removeClass) && (p.removeClass = null), p.from && !Z(p.from) && (p.from = null), p.to && !Z(p.to) && (p.to = null), !(F && v && re(v, t, n) && ie(v, p))) return d(), C;
9073 var A = ["enter", "move", "leave"].indexOf(t) >= 0,
9076 q = !H && j.get(v) || {},
9078 if (H || U && q.state === l || (H = !R(v, E, t)), H) return D && c(C, t, "start"), d(), D && c(C, t, "close"), C;
9084 addClass: p.addClass,
9085 removeClass: p.removeClass,
9091 if (o("skip", B, q)) return q.state === u ? (d(), C) : (g(m, q, B), q.runner);
9092 if (o("cancel", B, q))
9093 if (q.state === u) q.runner.end();
9095 if (!q.structural) return g(m, q, B), q.runner;
9098 else if (o("join", B, q)) {
9099 if (q.state !== u) return y(m, A ? t : null, p), t = B.event = q.event, p = g(m, q, B), q.runner;
9103 var Y = B.structural;
9104 if (Y || (Y = "animate" === B.event && Object.keys(B.options.to || {}).length > 0 || a(B)), !Y) return d(), I(v), C;
9105 var G = (q.counter || 0) + 1;
9106 return B.counter = G, P(v, l, B), i.$$postDigest(function() {
9111 var i = (m.parent() || []).length > 0 && ("animate" === n.event || n.structural || a(n));
9112 if (r || n.counter !== G || !i) return r && (oe(m, p), h(m, p)), (r || A && n.event !== t) && (p.domOperation(), C.end()), void(i || I(v));
9113 t = !n.structural && a(n, !0) ? "setClass" : n.event, P(v, u);
9114 var o = _(m, t, n.options);
9115 C.setHost(o), c(C, t, "start", {}), o.done(function(e) {
9118 n && n.counter === G && I(v), c(C, t, "close", {})
9124 var t = e.querySelectorAll("[" + _e + "]");
9126 var t = parseInt(e.getAttribute(_e), 10),
9138 e.removeAttribute(_e), j.delete(e)
9141 function R(e, t, n) {
9142 var r, i = m[0].body,
9144 a = e === i || "HTML" === e.nodeName,
9149 for (u && (t = b(u)); t && (s || (s = t === o), t.nodeType === H);) {
9150 var d = j.get(t) || {};
9153 if (!0 === f && !1 !== l) {
9156 }!1 === f && (l = !1), c = d.structural
9158 if (Q(r) || !0 === r) {
9159 var h = J.data(t, U);
9162 if (c && !1 === r) break;
9163 if (a || (a = t === i), a && s) break;
9164 t = s || !(u = J.data(t, we)) ? t.parentNode : b(u)
9166 return (!c || r) && !0 !== l && s && a
9169 function P(e, t, n) {
9170 (n = n || {}).state = t, e.setAttribute(_e, t);
9172 i = r ? B(r, n) : n;
9178 q = i.$watch(function() {
9179 return 0 === E.totalPendingRequests
9181 e && (q(), i.$$postDigest(function() {
9182 i.$$postDigest(function() {
9183 null === F && (F = !0)
9187 K = Object.create(null),
9188 ee = t.customFilter(),
9189 te = t.classNameFilter(),
9194 ie = te ? function(e, t) {
9195 var n = [e.getAttribute("class"), t.addClass, t.removeClass].join(" ");
9199 ae = e.Node.prototype.contains || function(e) {
9200 return this === e || !!(16 & this.compareDocumentPosition(e))
9203 on: function(e, t, n) {
9205 K[e] = K[e] || [], K[e].push({
9208 }), J(t).on("$destroy", function() {
9209 j.get(r) || se.off(e, t, n)
9212 off: function(e, t, n) {
9213 if (1 !== arguments.length || X(arguments[0])) {
9215 r && (K[e] = 1 === arguments.length ? null : A(r, t, n))
9218 for (var i in K) K[i] = A(K[i], t)
9221 pin: function(e, t) {
9222 n(G(e), "element", "not an element"), n(G(t), "parentElement", "not an element"), e.data(we, t)
9224 push: function(e, t, n, r) {
9225 return n = n || {}, n.domOperation = r, D(e, t, n)
9227 enabled: function(e, t) {
9228 var n = arguments.length;
9229 if (0 === n) t = !!F;
9232 1 === n ? t = !L.get(r) : L.set(r, !t)
9240 Ce = ["$animateProvider", function(e) {
9252 var o = "ng-animate-ref",
9253 a = this.drivers = [],
9254 s = "$$animationRunner";
9255 this.$get = ["$$jqLite", "$rootScope", "$injector", "$$AnimateRunner", "$$Map", "$$rAFScheduler", function(e, s, c, l, u, p) {
9258 if (e.processed) return e;
9265 a.processed || (a = t(a));
9270 return (a || r).children.push(e), e
9276 for (n = 0; n < e.length; n++) {
9278 i.set(o.domNode, e[n] = {
9284 for (n = 0; n < e.length; n++) t(e[n]);
9285 return function(e) {
9288 for (t = 0; t < e.children.length; t++) r.push(e.children[t]);
9292 for (t = 0; t < r.length; t++) {
9294 i <= 0 && (i = o, o = 0, n.push(a), a = []), a.push(s.fn), s.children.forEach(function(e) {
9298 return a.length && n.push(a), n
9303 return function(u, d, y) {
9305 var t = "[" + o + "]",
9306 n = e.hasAttribute(o) ? [e] : e.querySelectorAll(t),
9308 return z(n, function(e) {
9309 var t = e.getAttribute(o);
9310 t && t.length && r.push(e)
9317 z(e, function(e, r) {
9318 var i = b(e.element),
9320 s = ["enter", "move"].indexOf(a) >= 0,
9321 c = e.structural ? $(i) : [];
9323 var l = s ? "to" : "from";
9325 var t = e.getAttribute(o);
9326 n[t] = n[t] || {}, n[t][l] = {
9335 return z(n, function(n, o) {
9339 var c = e[a.animationID],
9340 l = e[s.animationID],
9341 u = a.animationID.toString();
9345 beforeStart: function() {
9346 c.beforeStart(), l.beforeStart()
9349 c.close(), l.close()
9351 classes: w(c.classes, l.classes),
9356 d.classes.length ? t.push(d) : (t.push(c), t.push(l))
9363 var f = a ? a.animationID : s.animationID,
9365 r[h] || (r[h] = !0, t.push(e[f]))
9371 e = e.split(" "), t = t.split(" ");
9372 for (var n = [], r = 0; r < e.length; r++) {
9374 if ("ng-" !== i.substring(0, 3))
9375 for (var o = 0; o < t.length; o++)
9385 for (var t = a.length - 1; t >= 0; t--) {
9397 e.from && e.to ? (n(e.from.element), n(e.to.element)) : n(e.element)
9402 !e || "leave" === d && y.$$domOperationFired || e.end()
9406 u.off("$destroy", x), n(u), v(u, y), h(u, y), y.domOperation(), A && e.removeClass(u, A), u.removeClass(q), M.complete(!t)
9409 var T = ["enter", "move", "leave"].indexOf(d) >= 0,
9414 cancel: function() {
9418 if (!a.length) return k(), M;
9420 var S = r(u.attr("class"), r(y.addClass, y.removeClass)),
9422 A && (S += " " + A, y.tempClasses = null);
9424 return T && (O = "ng-" + d + "-prepare", e.addClass(u, O)), g.push({
9430 beforeStart: function() {
9431 u.addClass(q), A && e.addClass(u, A), O && (e.removeClass(u, O), O = null)
9434 }), u.on("$destroy", x), g.length > 1 ? M : (s.$$postDigest(function() {
9437 i(t.element) ? e.push(t) : t.close()
9443 domNode: b(e.from ? e.from.element : e.element),
9447 if (i(e.anchors ? e.from.element || e.to.element : e.element)) {
9453 o.done(function(e) {
9464 xe = ["$animate", "$rootScope", function(e, t) {
9467 transclude: "element",
9470 link: function(t, n, r, i, o) {
9472 t.$watchCollection(r.ngAnimateSwap || r.for, function(r) {
9473 a && e.leave(a), s && (s.$destroy(), s = null), (r || 0 === r) && (s = t.$new(), o(s, function(t) {
9474 a = t, e.enter(t, null, n)
9480 t.module("ngAnimate", [], function() {
9481 ee = t.noop, V = t.copy, B = t.extend, J = t.element, z = t.forEach, W = t.isArray, X = t.isString, Z = t.isObject, Q = t.isUndefined, Y = t.isDefined, K = t.isFunction, G = t.isElement
9483 angularVersion: "1.6.6"
9484 }).directive("ngAnimateSwap", xe).directive("ngAnimateChildren", ue).factory("$$rAFScheduler", le).provider("$$animateQueue", Ee).provider("$$animation", Ce).provider("$animateCss", ve).provider("$$animateCssDriver", be).provider("$$animateJs", ye).provider("$$animateJsDriver", $e)
9485 }(window, window.angular),
9488 var n = t.module("ngAria", ["ng"]).info({
9489 angularVersion: "1.6.6"
9490 }).provider("$aria", function() {
9491 function e(e, t, r, o) {
9492 return function(a, s, c) {
9493 var l = c.$normalize(t);
9494 !n[l] || i(s, r) || c[l] || a.$watch(c[e], function(e) {
9495 e = o ? !e : !!e, s.attr(t, e)
9509 bindRoleForClick: !0
9511 this.config = function(e) {
9513 }, this.$get = function() {
9515 config: function(e) {
9522 r = ["BUTTON", "A", "INPUT", "TEXTAREA", "SELECT", "DETAILS", "SUMMARY"],
9523 i = function(e, t) {
9524 if (-1 !== t.indexOf(e[0].nodeName)) return !0
9526 n.directive("ngShow", ["$aria", function(e) {
9527 return e.$$watchExpr("ngShow", "aria-hidden", [], !0)
9528 }]).directive("ngHide", ["$aria", function(e) {
9529 return e.$$watchExpr("ngHide", "aria-hidden", [], !1)
9530 }]).directive("ngValue", ["$aria", function(e) {
9531 return e.$$watchExpr("ngValue", "aria-checked", r, !1)
9532 }]).directive("ngChecked", ["$aria", function(e) {
9533 return e.$$watchExpr("ngChecked", "aria-checked", r, !1)
9534 }]).directive("ngReadonly", ["$aria", function(e) {
9535 return e.$$watchExpr("ngReadonly", "aria-readonly", r, !1)
9536 }]).directive("ngRequired", ["$aria", function(e) {
9537 return e.$$watchExpr("ngRequired", "aria-required", r, !1)
9538 }]).directive("ngModel", ["$aria", function(e) {
9539 function t(t, n, o, a) {
9540 return e.config(n) && !o.attr(t) && (a || !i(o, r))
9544 return !t.attr("role") && t.attr("type") === e && !i(t, r)
9550 return "checkbox" === (n || r) || "menuitemcheckbox" === r ? "checkbox" : "radio" === (n || r) || "menuitemradio" === r ? "radio" : "range" === n || "progressbar" === r || "slider" === r ? "range" : ""
9556 compile: function(r, i) {
9559 post: function(r, i, o, s) {
9561 return s.$modelValue
9563 var l = t("tabindex", "tabindex", i, !1);
9567 n(a, i) && i.attr("role", a), t("aria-checked", "ariaChecked", i, !1) && r.$watch(c, "radio" === a ? function(e) {
9568 var t = o.value == s.$viewValue;
9569 i.attr("aria-checked", t)
9571 i.attr("aria-checked", !s.$isEmpty(s.$viewValue))
9572 }), l && i.attr("tabindex", 0);
9575 if (n(a, i) && i.attr("role", "slider"), e.config("ariaValue")) {
9576 var u = !i.attr("aria-valuemin") && (o.hasOwnProperty("min") || o.hasOwnProperty("ngMin")),
9577 d = !i.attr("aria-valuemax") && (o.hasOwnProperty("max") || o.hasOwnProperty("ngMax")),
9578 f = !i.attr("aria-valuenow");
9579 u && o.$observe("min", function(e) {
9580 i.attr("aria-valuemin", e)
9581 }), d && o.$observe("max", function(e) {
9582 i.attr("aria-valuemax", e)
9583 }), f && r.$watch(c, function(e) {
9584 i.attr("aria-valuenow", e)
9587 l && i.attr("tabindex", 0)
9588 }!o.hasOwnProperty("ngRequired") && s.$validators.required && t("aria-required", "ariaRequired", i, !1) && o.$observe("required", function() {
9589 i.attr("aria-required", !!o.required)
9590 }), t("aria-invalid", "ariaInvalid", i, !0) && r.$watch(function() {
9593 i.attr("aria-invalid", !!e)
9599 }]).directive("ngDisabled", ["$aria", function(e) {
9600 return e.$$watchExpr("ngDisabled", "aria-disabled", r, !1)
9601 }]).directive("ngMessages", function() {
9604 require: "?ngMessages",
9605 link: function(e, t, n, r) {
9606 t.attr("aria-live") || t.attr("aria-live", "assertive")
9609 }).directive("ngClick", ["$aria", "$parse", function(e, t) {
9612 compile: function(n, o) {
9613 var a = t(o.ngClick);
9614 return function(t, n, o) {
9615 i(n, r) || (e.config("bindRoleForClick") && !n.attr("role") && n.attr("role", "button"), e.config("tabindex") && !n.attr("tabindex") && n.attr("tabindex", 0), !e.config("bindKeydown") || o.ngKeydown || o.ngKeypress || o.ngKeyup || n.on("keydown", function(e) {
9616 var n = e.which || e.keyCode;
9617 32 !== n && 13 !== n || t.$apply(function() {
9626 }]).directive("ngDblclick", ["$aria", function(e) {
9627 return function(t, n, o) {
9628 !e.config("tabindex") || n.attr("tabindex") || i(n, r) || n.attr("tabindex", 0)
9631 }(window, window.angular),
9637 if (e) return i(e) ? e.indexOf(t) >= 0 : e.hasOwnProperty(t)
9639 return ["$animate", function(t) {
9642 transclude: "element",
9645 require: "^^ngMessages",
9646 link: function(n, r, o, a, s) {
9648 u = o.ngMessage || o.when,
9649 d = o.ngMessageExp || o.whenExp,
9651 c = e ? i(e) ? e : e.split(/[\s,]+/) : null, a.reRender()
9653 d ? (f(n.$eval(d)), n.$watchCollection(d, f)) : f(u);
9659 attach: function() {
9660 h || s(function(e, n) {
9661 t.enter(e, null, r);
9662 var i = (h = e).$$attachId = a.getAttachId();
9663 h.on("$destroy", function() {
9664 h && h.$$attachId === i && (a.deregister(l), p.detach()), n.$destroy()
9668 detach: function() {
9671 h = null, t.leave(e)
9680 t.module("ngMessages", [], function() {
9681 r = t.forEach, i = t.isArray, o = t.isString, a = t.element
9683 angularVersion: "1.6.6"
9684 }).directive("ngMessages", ["$animate", function(e) {
9686 return o(t) && 0 === t.length || n(e.$eval(t))
9690 return o(e) ? e.length : !!e
9693 require: "ngMessages",
9695 controller: ["$element", "$scope", "$attrs", function(i, o, a) {
9697 for (var n = t, r = []; n && n !== e;) {
9698 var i = n.$$ngMessageNode;
9699 if (i && i.length) return m[i];
9700 n.childNodes.length && -1 === r.indexOf(n) ? (r.push(n), n = n.childNodes[n.childNodes.length - 1]) : n.previousSibling ? n = n.previousSibling : (n = n.parentNode, r.push(n))
9704 function c(e, t, n) {
9708 i ? (r.next = i.next, i.next = r) : (r.next = u.head, u.head = r)
9712 function l(e, t, n) {
9715 i ? i.next = r.next : u.head = r.next
9720 this.getAttachId = function() {
9723 var h, p, m = this.messages = {};
9724 this.render = function(s) {
9725 h = !1, p = s = s || {};
9726 for (var c = t(o, a.ngMessagesMultiple) || t(o, a.multiple), l = [], d = {}, f = u.head, m = !1, g = 0; null != f;) {
9730 m || r(s, function(e, t) {
9731 if (!b && n(e) && v.test(t)) {
9733 d[t] = !0, b = !0, v.attach()
9735 }), b ? m = !c : l.push(v), f = f.next
9739 }), l.length !== g ? e.setClass(i, "ng-active", "ng-inactive") : e.setClass(i, "ng-inactive", "ng-active")
9740 }, o.$watchCollection(a.ngMessages || a.for, u.render), i.on("$destroy", function() {
9744 }), this.reRender = function() {
9745 h || (h = !0, o.$evalAsync(function() {
9746 h && p && u.render(p)
9748 }, this.register = function(e, t) {
9749 var n = d.toString();
9752 }, c(i[0], e, n), e.$$ngMessageNode = n, d++, u.reRender()
9753 }, this.deregister = function(e) {
9754 var t = e.$$ngMessageNode;
9755 delete e.$$ngMessageNode, l(i[0], e, t), delete m[t], u.reRender()
9759 }]).directive("ngMessagesInclude", ["$templateRequest", "$document", "$compile", function(e, t, n) {
9761 var i = n.$$createComment ? n.$$createComment("ngMessagesInclude", r) : t[0].createComment(" ngMessagesInclude: " + r + " "),
9763 e.after(o), e.remove()
9767 require: "^^ngMessages",
9768 link: function(t, i, a) {
9769 var s = a.ngMessagesInclude || a.src;
9770 e(s).then(function(e) {
9771 t.$$destroyed || (o(e) && !e.trim() ? r(i, s) : n(e)(t, function(e) {
9777 }]).directive("ngMessage", n()).directive("ngMessageExp", n())
9778 }(window, window.angular),
9781 t.module("ngMaterial", ["ng", "ngAnimate", "ngAria", "material.core", "material.core.interaction", "material.core.gestures", "material.core.layout", "material.core.meta", "material.core.theming.palette", "material.core.theming", "material.core.animate", "material.components.autocomplete", "material.components.backdrop", "material.components.bottomSheet", "material.components.button", "material.components.card", "material.components.checkbox", "material.components.chips", "material.components.colors", "material.components.content", "material.components.datepicker", "material.components.dialog", "material.components.divider", "material.components.fabActions", "material.components.fabShared", "material.components.fabSpeedDial", "material.components.fabToolbar", "material.components.gridList", "material.components.icon", "material.components.input", "material.components.list", "material.components.menu", "material.components.menuBar", "material.components.navBar", "material.components.progressCircular", "material.components.panel", "material.components.progressLinear", "material.components.radioButton", "material.components.showHide", "material.components.sidenav", "material.components.select", "material.components.slider", "material.components.sticky", "material.components.subheader", "material.components.switch", "material.components.swipe", "material.components.tabs", "material.components.toast", "material.components.toolbar", "material.components.tooltip", "material.components.truncate", "material.components.virtualRepeat", "material.components.whiteframe"]),
9784 if (t.has("$swipe")) {
9785 e.warn("You are using the ngTouch module. \nAngularJS Material already has mobile click, tap, and swipe support... \nngTouch is not supported with AngularJS Material!")
9790 e.decorator("$$rAF", ["$delegate", r]), e.decorator("$q", ["$delegate", i]), t.theme("default").primaryPalette("indigo").accentPalette("pink").warnPalette("deep-orange").backgroundPalette("grey")
9794 return e.throttle = function(t) {
9797 n = arguments, o = this, i = t, r || (r = !0, e(function() {
9798 i.apply(o, Array.prototype.slice.call(n)), r = !1
9805 return e.resolve || (e.resolve = e.when), e
9807 e.$inject = ["$log", "$injector"], n.$inject = ["$provide", "$mdThemingProvider"], r.$inject = ["$delegate"], i.$inject = ["$delegate"], t.module("material.core", ["ngAnimate", "material.core.animate", "material.core.layout", "material.core.interaction", "material.core.gestures", "material.core.theming"]).config(n).run(e)
9814 pre: function(n, r, i) {
9816 t.isUndefined(e) && (e = !0), r.toggleClass("md-autofocus", !!e)
9818 var a = i.mdAutoFocus || i.mdAutofocus || i.mdSidenavFocus;
9819 o(e(a)(n)), a && n.$watch(a, o)
9824 e.$inject = ["$parse"], t.module("material.core").directive("mdAutofocus", e).directive("mdAutoFocus", e).directive("mdSidenavFocus", e)
9827 t.module("material.core").factory("$mdColorUtil", function() {
9829 rgbaToHex: function(e) {
9830 return ((e = e.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i)) && 4 === e.length ? "#" + ("0" + parseInt(e[1], 10).toString(16)).slice(-2) + ("0" + parseInt(e[2], 10).toString(16)).slice(-2) + ("0" + parseInt(e[3], 10).toString(16)).slice(-2) : "").toUpperCase()
9832 hexToRgba: function(e) {
9833 var t = "#" === e[0] ? e.substr(1) : e,
9837 o = t.substr(2 * n);
9838 return 1 === n && (r += r, i += i, o += o), "rgba(" + parseInt(r, 16) + "," + parseInt(i, 16) + "," + parseInt(o, 16) + ",0.1)"
9840 rgbToRgba: function(e) {
9841 return e.replace(")", ", 0.1)").replace("(", "a(")
9843 rgbaToRgb: function(e) {
9844 return e ? e.replace("rgba", "rgb").replace(/,[^\),]+\)/, ")") : "rgb(0,0,0)"
9850 t.module("material.core").factory("$mdConstant", function() {
9852 var t = r(o + "-" + e),
9853 a = t.charAt(0).toLowerCase() + t.substring(1);
9854 return n(i, e) ? e : n(i, t) ? t : n(i, a) ? a : e
9858 return t.isDefined(e.style[n])
9862 return e.replace(s, function(e, t, n, r) {
9863 return r ? n.toUpperCase() : n
9866 var i = document.createElement("div"),
9868 var t, n, r = /^(Moz|webkit|ms)(?=[A-Z])/;
9870 if (n = r.exec(t)) return n[0]
9872 a = /webkit/i.test(o),
9873 s = /([:\-_]+(.))/g,
9875 isInputKey: function(e) {
9876 return e.keyCode >= 31 && e.keyCode <= 90
9878 isNumPadKey: function(e) {
9879 return 3 === e.location && e.keyCode >= 97 && e.keyCode <= 105
9881 isMetaKey: function(e) {
9882 return e.keyCode >= 91 && e.keyCode <= 93
9884 isFnLockKey: function(e) {
9885 return e.keyCode >= 112 && e.keyCode <= 145
9887 isNavigationKey: function(e) {
9889 return -1 != [t.SPACE, t.ENTER, t.UP_ARROW, t.DOWN_ARROW].indexOf(e.keyCode)
9891 hasModifierKey: function(e) {
9892 return e.ctrlKey || e.metaKey || e.altKey
9894 ELEMENT_MAX_PIXELS: 1533917,
9895 BEFORE_NG_ARIA: 210,
9915 TRANSITIONEND: "transitionend" + (a ? " webkitTransitionEnd" : ""),
9916 ANIMATIONEND: "animationend" + (a ? " webkitAnimationEnd" : ""),
9917 TRANSFORM: e("transform"),
9918 TRANSFORM_ORIGIN: e("transformOrigin"),
9919 TRANSITION: e("transition"),
9920 TRANSITION_DURATION: e("transitionDuration"),
9921 ANIMATION_PLAY_STATE: e("animationPlayState"),
9922 ANIMATION_DURATION: e("animationDuration"),
9923 ANIMATION_NAME: e("animationName"),
9924 ANIMATION_TIMING: e("animationTimingFunction"),
9925 ANIMATION_DIRECTION: e("animationDirection")
9928 xs: "(max-width: 599px)",
9929 "gt-xs": "(min-width: 600px)",
9930 sm: "(min-width: 600px) and (max-width: 959px)",
9931 "gt-sm": "(min-width: 960px)",
9932 md: "(min-width: 960px) and (max-width: 1279px)",
9933 "gt-md": "(min-width: 1280px)",
9934 lg: "(min-width: 1280px) and (max-width: 1919px)",
9935 "gt-lg": "(min-width: 1920px)",
9936 xl: "(min-width: 1920px)",
9937 landscape: "(orientation: landscape)",
9938 portrait: "(orientation: portrait)",
9941 MEDIA_PRIORITY: ["xl", "gt-lg", "lg", "gt-md", "md", "gt-sm", "sm", "gt-xs", "xs", "landscape", "portrait", "print"]
9949 return u.length && e > -1 && e < u.length
9957 return e && i(e) > -1
9961 return u.length ? u[0] : null
9965 return u.length ? u[u.length - 1] : null
9968 function c(e, o, c, d) {
9970 for (var f = i(o);;) {
9971 if (!r(f)) return null;
9972 var h = f + (e ? -1 : 1),
9974 if (r(h) ? p = u[h] : n && (h = i(p = e ? s() : a())), null === p || h === d) return null;
9976 t.isUndefined(d) && (d = h), f = h
9979 var l = function() {
9982 e && !t.isArray(e) && (e = Array.prototype.slice.call(e)), n = !!n;
9994 itemAt: function(e) {
9995 return r(e) ? u[e] : null
9997 findBy: function(e, t) {
9998 return u.filter(function(n) {
10002 add: function(e, n) {
10003 return e ? (t.isNumber(n) || (n = u.length), u.splice(n, 0, e), i(e)) : -1
10005 remove: function(e) {
10006 o(e) && u.splice(i(e), 1)
10010 next: t.bind(null, c, !1),
10011 previous: t.bind(null, c, !0),
10012 hasPrevious: function(e) {
10013 return !!e && r(i(e) - 1)
10015 hasNext: function(e) {
10016 return !!e && r(i(e) + 1)
10020 t.module("material.core").config(["$provide", function(t) {
10021 t.decorator("$mdUtil", ["$delegate", function(t) {
10022 return t.iterator = e, t
10027 function e(e, n, r) {
10030 t.isUndefined(n) && (n = l[e] = o(e));
10032 return t.isUndefined(r) && (r = a(n)), r
10036 return e.MEDIA[t] || ("(" !== t.charAt(0) ? "(" + t + ")" : t)
10041 return t || (t = u[e] = r.matchMedia(e)), t.addListener(s), d[t.media] = !!t.matches
10045 n.$evalAsync(function() {
10046 d[e.media] = !!e.matches
10051 return f[t] || (f[t] = e.$normalize(t))
10057 return i.getResponsiveAttribute = function(t, n) {
10058 for (var r = 0; r < e.MEDIA_PRIORITY.length; r++) {
10059 var i = e.MEDIA_PRIORITY[r];
10060 if (u[l[i]].matches) {
10061 var o = c(t, n + "-" + i);
10062 if (t[o]) return t[o]
10066 }, i.getQuery = function(e) {
10068 }, i.watchResponsiveAttributes = function(n, r, i) {
10070 return n.forEach(function(n) {
10072 t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, null)));
10073 for (var s in e.MEDIA) a = c(r, n + "-" + s), t.isDefined(r[a]) && o.push(r.$observe(a, t.bind(void 0, i, s)))
10076 o.forEach(function(e) {
10082 e.$inject = ["$mdConstant", "$rootScope", "$window"], t.module("material.core").factory("$mdMedia", e)
10087 return (e = t.isArray(e) ? e : [e]).forEach(function(t) {
10088 a.forEach(function(n) {
10089 e.push(n + "-" + t)
10095 return e = t.isArray(e) ? e : [e], r(e).map(function(e) {
10096 return "[" + e + "]"
10101 if ((e = e[0] || e).nodeType) return e
10103 var a = ["data", "x"];
10104 return e ? n ? i(e) : r(e) : {
10107 hasAttribute: function(e, t) {
10108 if (!(e = o(e))) return !1;
10109 for (var n = r(t), i = 0; i < n.length; i++)
10110 if (e.hasAttribute(n[i])) return !0;
10113 removeAttribute: function(e, t) {
10114 (e = o(e)) && r(t).forEach(function(t) {
10115 e.removeAttribute(t)
10120 t.module("material.core").config(["$provide", function(t) {
10121 t.decorator("$mdUtil", ["$delegate", function(t) {
10122 return t.prefixer = e, t
10127 function r(r, o, a, s, c, l, u, d, f, h) {
10129 return e ? m(e) || g(e) ? e : e + "px" : "0"
10133 return String(e).indexOf("px") > -1
10137 return String(e).indexOf("%") > -1
10143 var b = l.startSymbol(),
10145 $ = "{{" === b && "}}" === y,
10146 _ = function(e, n, r) {
10148 if (e && e.length) {
10149 var o = f.getComputedStyle(e[0]);
10150 i = t.isDefined(o[n]) && (!r || o[n] == r)
10156 now: e.performance && e.performance.now ? t.bind(e.performance, e.performance.now) : Date.now || function() {
10157 return (new Date).getTime()
10159 getModelOption: function(e, t) {
10161 var n = e.$options;
10162 return n.getOption ? n.getOption(t) : n[t]
10165 bidi: function(e, n, i, o) {
10166 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir);
10167 if (0 == arguments.length) return a ? "ltr" : "rtl";
10168 var s = t.element(e);
10169 a && t.isDefined(i) ? s.css(n, p(i)) : !a && t.isDefined(o) && s.css(n, p(o))
10171 bidiProperty: function(e, n, i, o) {
10172 var a = !("rtl" == r[0].dir || "rtl" == r[0].body.dir),
10174 a && t.isDefined(n) ? (s.css(n, p(o)), s.css(i, "")) : !a && t.isDefined(i) && (s.css(i, p(o)), s.css(n, ""))
10176 clientRect: function(e, t, n) {
10178 t = v(t || r.offsetParent || document.body);
10179 var i = r.getBoundingClientRect(),
10180 o = n ? t.getBoundingClientRect() : {
10187 left: i.left - o.left,
10188 top: i.top - o.top,
10193 offsetRect: function(e, t) {
10194 return w.clientRect(e, t, !0)
10196 nodesToArray: function(e) {
10198 for (var t = [], n = 0; n < e.length; ++n) t.push(e.item(n));
10201 getViewportTop: function() {
10202 return e.scrollY || e.pageYOffset || 0
10204 findFocusTarget: function(e, n) {
10206 var r, i = e[0].querySelectorAll(n);
10207 return i && i.length && i.length && t.forEach(i, function(e) {
10208 (e = t.element(e)).hasClass("md-autofocus") && (r = e)
10211 var i, o = this.prefixer("md-autofocus", !0);
10212 return (i = r(e, n || o)) || n == o || (i = r(e, this.prefixer("md-auto-focus", !0))) || (i = r(e, o)), i
10214 disableScrollAround: function(e, n, i) {
10215 if (i = i || {}, w.disableScrollAround._count = Math.max(0, w.disableScrollAround._count || 0), w.disableScrollAround._count++, w.disableScrollAround._restoreScroll) return w.disableScrollAround._restoreScroll;
10218 var e = r[0].documentElement,
10219 n = e.style.cssText || "",
10220 i = o.style.cssText || "",
10221 a = w.getViewportTop(),
10223 c = o.scrollHeight > o.clientHeight + 1;
10224 return c && t.element(o).css({
10228 }), o.clientWidth < s && (o.style.overflow = "hidden"), c && (e.style.overflowY = "scroll"),
10230 o.style.cssText = i, e.style.cssText = n, o.scrollTop = a
10237 e = t.element(e || o);
10239 return i.disableScrollMask ? r = e : (r = t.element('<div class="md-scroll-mask"> <div class="md-scroll-mask-bar"></div></div>'), e.append(r)), r.on("wheel", n), r.on("touchmove", n),
10241 r.off("wheel"), r.off("touchmove"), i.disableScrollMask || r[0].parentNode.removeChild(r[0])
10244 return w.disableScrollAround._restoreScroll = function() {
10245 --w.disableScrollAround._count <= 0 && (a(), s(), delete w.disableScrollAround._restoreScroll)
10248 enableScrolling: function() {
10249 var e = this.disableScrollAround._restoreScroll;
10252 floatingScrollbars: function() {
10253 if (this.floatingScrollbars.cached === n) {
10254 var e = t.element("<div><div></div></div>").css({
10257 position: "absolute",
10259 "overflow-y": "scroll"
10261 e.children().css("height", "60px"), r[0].body.appendChild(e[0]), this.floatingScrollbars.cached = e[0].offsetWidth == e[0].childNodes[0].offsetWidth, e.remove()
10263 return this.floatingScrollbars.cached
10265 forceFocus: function(t) {
10267 document.addEventListener("click", function e(t) {
10268 t.target === n && t.$focus && (n.focus(), t.stopImmediatePropagation(), t.preventDefault(), n.removeEventListener("click", e))
10270 var r = document.createEvent("MouseEvents");
10271 r.initMouseEvent("click", !1, !0, e, {}, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), r.$material = !0, r.$focus = !0, n.dispatchEvent(r)
10273 createBackdrop: function(e, t) {
10274 return a(w.supplant('<md-backdrop class="{0}">', [t]))(e)
10276 supplant: function(e, t, n) {
10277 return n = n || /\{([^\{\}]*)\}/g, e.replace(n, function(e, n) {
10278 var r = n.split("."),
10281 for (var o in r) r.hasOwnProperty(o) && (i = i[r[o]])
10285 return "string" == typeof i || "number" == typeof i ? i : e
10288 fakeNgModel: function() {
10291 $setTouched: t.noop,
10292 $setViewValue: function(e) {
10293 this.$viewValue = e, this.$render(e), this.$viewChangeListeners.forEach(function(e) {
10297 $isEmpty: function(e) {
10298 return 0 === ("" + e).length
10302 $viewChangeListeners: [],
10306 debounce: function(e, t, r, i) {
10308 return function() {
10310 c = Array.prototype.slice.call(arguments);
10311 o.cancel(a), a = o(function() {
10312 a = n, e.apply(s, c)
10316 throttle: function(e, t) {
10318 return function() {
10322 (!n || o - n > t) && (e.apply(r, i), n = o)
10325 time: function(e) {
10327 return e(), w.now() - t
10329 valueOnUse: function(e, t, n) {
10331 i = Array.prototype.slice.call(arguments),
10332 o = i.length > 3 ? i.slice(3) : [];
10333 Object.defineProperty(e, t, {
10335 return null === r && (r = n.apply(e, o)), r
10339 nextUid: function() {
10342 disconnectScope: function(e) {
10343 if (e && e.$root !== e && !e.$$destroyed) {
10345 e.$$disconnected = !0, t.$$childHead === e && (t.$$childHead = e.$$nextSibling), t.$$childTail === e && (t.$$childTail = e.$$prevSibling), e.$$prevSibling && (e.$$prevSibling.$$nextSibling = e.$$nextSibling), e.$$nextSibling && (e.$$nextSibling.$$prevSibling = e.$$prevSibling), e.$$nextSibling = e.$$prevSibling = null
10348 reconnectScope: function(e) {
10349 if (e && e.$root !== e && e.$$disconnected) {
10352 t.$$disconnected = !1, t.$$prevSibling = n.$$childTail, n.$$childHead ? (n.$$childTail.$$nextSibling = t, n.$$childTail = t) : n.$$childHead = n.$$childTail = t
10355 getClosest: function(e, n, r) {
10356 if (t.isString(n)) {
10357 var i = n.toUpperCase();
10359 return e.nodeName.toUpperCase() === i
10362 if (e instanceof t.element && (e = e[0]), r && (e = e.parentNode), !e) return null;
10365 } while (e = e.parentNode);
10368 elementContains: function(n, r) {
10369 return (e.Node && e.Node.prototype && Node.prototype.contains ? t.bind(n, n.contains) : t.bind(n, function(e) {
10370 return n === r || !!(16 & this.compareDocumentPosition(e))
10373 extractElementByName: function(e, n, r, i) {
10375 return a(e) || (r ? s(e) : null)
10380 for (var t = 0, r = e.length; t < r; t++)
10381 if (e[t].nodeName.toLowerCase() === n) return e[t];
10388 for (var n = 0, r = e.length; n < r; n++) {
10391 for (var a = 0, s = i.childNodes.length; a < s; a++) t = t || o([i.childNodes[a]])
10396 return !c && i && u.warn(w.supplant("Unable to find node '{0}' in element '{1}'.", [n, e[0].outerHTML])), t.element(c || e)
10398 initOptionalProperties: function(e, n, r) {
10399 r = r || {}, t.forEach(e.$$isolateBindings, function(i, o) {
10400 if (i.optional && t.isUndefined(e[o])) {
10401 var a = t.isDefined(n[i.attrName]);
10402 e[o] = t.isDefined(r[o]) ? r[o] : a
10406 nextTick: function(e, t, n) {
10407 var r = w.nextTick,
10413 }), null == t && (t = !0), r.digest = r.digest || t, r.queue = a, i || (r.timeout = o(function() {
10416 r.queue = [], r.timeout = null, r.digest = !1, e.forEach(function(e) {
10417 e.scope && e.scope.$$destroyed || e.callback()
10418 }), t && s.$digest()
10421 processTemplate: function(e) {
10422 return $ ? e : e && t.isString(e) ? e.replace(/\{\{/g, b).replace(/}}/g, y) : e
10424 getParentWithPointerEvents: function(e) {
10425 for (var t = e.parent(); _(t, "pointer-events", "none");) t = t.parent();
10428 getNearestContentElement: function(e) {
10429 for (var t = e.parent()[0]; t && t !== d[0] && t !== document.body && "MD-CONTENT" !== t.nodeName.toUpperCase();) t = t.parentNode;
10432 checkStickySupport: function() {
10433 var e, n = t.element("<div>");
10434 r[0].body.appendChild(n[0]);
10435 for (var i = ["sticky", "-webkit-sticky"], o = 0; o < i.length; ++o)
10440 }), n.css("position") == i[o]) {
10444 return n.remove(), e
10446 parseAttributeBoolean: function(e, t) {
10447 return "" === e || !!e && (!1 === t || "false" !== e && "0" !== e)
10449 hasComputedStyle: _,
10450 isParentFormSubmitted: function(e) {
10451 var n = w.getClosest(e, "form"),
10452 r = n ? t.element(n).controller("form") : null;
10453 return !!r && r.$submitted
10455 animateScrollTo: function(e, t, n) {
10458 e.scrollTop = n, (c ? n < t : n > t) && h(r)
10463 return o(w.now() - l, a, s, e)
10466 function o(e, t, n, r) {
10467 if (e > r) return t + n;
10468 var i = (e /= r) * e;
10469 return t + n * (-2 * (i * e) + 3 * i)
10471 var a = e.scrollTop,
10477 uniq: function(e) {
10478 if (e) return e.filter(function(e, t, n) {
10479 return n.indexOf(e) === t
10483 return w.dom.animator = c(w), w
10485 r.$inject = ["$document", "$timeout", "$compile", "$rootScope", "$$mdAnimate", "$interpolate", "$log", "$rootElement", "$window", "$$rAF"];
10487 t.module("material.core").factory("$mdUtil", r), t.element.prototype.focus = t.element.prototype.focus || function() {
10488 return this.length && this[0].focus(), this
10489 }, t.element.prototype.blur = t.element.prototype.blur || function() {
10490 return this.length && this[0].blur(), this
10494 function e(e, t, n, r, i) {
10495 this.$q = e, this.$templateRequest = t, this.$injector = n, this.$compile = r, this.$controller = i
10497 e.$inject = ["$q", "$templateRequest", "$injector", "$compile", "$controller"], t.module("material.core").service("$mdCompiler", e), e.prototype.compile = function(e) {
10498 return e.contentElement ? this._prepareContentElement(e) : this._compileTemplate(e)
10499 }, e.prototype._prepareContentElement = function(e) {
10500 var t = this._fetchContentElement(e);
10501 return this.$q.resolve({
10502 element: t.element,
10503 cleanup: t.restore,
10509 }, e.prototype._compileTemplate = function(e) {
10512 i = e.template || "",
10513 o = t.extend({}, e.resolve),
10514 a = t.extend({}, e.locals),
10515 s = e.transformTemplate || t.identity;
10516 return t.forEach(o, function(e, r) {
10517 t.isString(e) ? o[r] = n.$injector.get(e) : o[r] = n.$injector.invoke(e)
10518 }), t.extend(o, a), o.$$ngTemplate = r ? this.$templateRequest(r) : this.$q.when(i), this.$q.all(o).then(function(r) {
10519 var i = s(r.$$ngTemplate, e),
10520 o = e.element || t.element("<div>").html(i.trim()).contents();
10521 return n._compileElement(r, o, e)
10523 }, e.prototype._compileElement = function(e, n, r) {
10525 o = this.$compile(n),
10528 cleanup: n.remove.bind(n),
10530 link: function(s) {
10531 if (e.$scope = s, r.controller) {
10532 var c = t.extend(e, {
10535 l = i.$controller(r.controller, c, !0, r.controllerAs);
10536 r.bindToController && t.extend(l.instance, e);
10538 n.data("$ngControllerController", u), n.children().data("$ngControllerController", u), a.controller = u
10544 }, e.prototype._fetchContentElement = function(e) {
10546 var t = e.parentNode,
10547 n = e.nextElementSibling;
10548 return function() {
10549 n ? t.insertBefore(e, n) : t.appendChild(e)
10552 var r = e.contentElement,
10554 return t.isString(r) ? i = n(r = document.querySelector(r)) : (r = r[0] || r, i = document.contains(r) ? n(r) : function() {
10555 r.parentNode && r.parentNode.removeChild(r)
10557 element: t.element(r),
10563 function e(e, n, r, i) {
10564 function o(e, r, i) {
10565 var o = t.element(e)[0] || e;
10566 !o || o.hasAttribute(r) && 0 !== o.getAttribute(r).length || c(o, r) || ((i = t.isString(i) ? i.trim() : "").length ? e.attr(r, i) : d && n.warn('ARIA: Attribute "', r, '", required for accessibility, is missing on node:', o))
10569 function a(t, n, r) {
10577 for (var t, n = document.createTreeWalker(e, NodeFilter.SHOW_TEXT, null, !1), r = ""; t = n.nextNode();)(function(t) {
10578 for (; t.parentNode && (t = t.parentNode) !== e;)
10579 if (t.getAttribute && "true" === t.getAttribute("aria-hidden")) return !0
10580 })(t) || (r += t.textContent);
10581 return r.trim() || ""
10586 if (e.hasChildNodes())
10587 for (var i = e.childNodes, o = 0; o < i.length; o++) {
10589 1 === a.nodeType && a.hasAttribute(t) && (function(e) {
10590 return "none" === (e.currentStyle ? e.currentStyle : r.getComputedStyle(e)).display
10597 var n = t.element(e)[0] || e;
10598 return !!n.hasAttribute && (n.hasAttribute("aria-label") || n.hasAttribute("aria-labelledby") || n.hasAttribute("aria-describedby"))
10603 var r = t.element(e)[0] || e;
10604 return !!r.parentNode && (!! function(e) {
10605 if (!l(e)) return !1;
10606 if (e.hasAttribute("role")) switch (e.getAttribute("role").toLowerCase()) {
10618 case "presentation":
10625 switch (e.tagName.toLowerCase()) {
10678 case "presentation":
10705 }(r.parentNode) || !!--n && u(r.parentNode, n))
10707 var d = this.showWarnings;
10711 expectWithText: function(e, t) {
10712 var n = s(e) || "";
10713 n.indexOf(i.startSymbol()) > -1 ? a(e, t, function() {
10717 expectWithoutText: function(e, t) {
10719 n.indexOf(i.startSymbol()) > -1 || n || o(e, t, n)
10723 parentHasAriaLabel: u
10726 e.$inject = ["$$rAF", "$log", "$window", "$interpolate"], t.module("material.core").provider("$mdAria", function() {
10731 disableWarnings: function() {
10732 t.showWarnings = !1
10734 $get: ["$$rAF", "$log", "$window", "$interpolate", function(n, r, i, o) {
10735 return e.apply(t, arguments)
10742 this.$timeout = e, this.$mdUtil = n, this.bodyElement = t.element(document.body), this.isBuffering = !1, this.bufferTimeout = null, this.lastInteractionType = null, this.lastInteractionTime = null, this.inputEventMap = {
10743 keydown: "keyboard",
10744 mousedown: "mouse",
10745 mouseenter: "mouse",
10746 touchstart: "touch",
10747 pointerdown: "pointer",
10748 MSPointerDown: "pointer"
10749 }, this.iePointerMap = {
10753 }, this.initializeEvents()
10755 n.$inject = ["$timeout", "$mdUtil"], t.module("material.core.interaction", []).service("$mdInteraction", n), n.prototype.initializeEvents = function() {
10756 var t = "MSPointerEvent" in e ? "MSPointerDown" : "PointerEvent" in e ? "pointerdown" : null;
10757 this.bodyElement.on("keydown mousedown", this.onInputEvent.bind(this)), "ontouchstart" in document.documentElement && this.bodyElement.on("touchstart", this.onBufferInputEvent.bind(this)), t && this.bodyElement.on(t, this.onInputEvent.bind(this))
10758 }, n.prototype.onInputEvent = function(e) {
10759 if (!this.isBuffering) {
10760 var t = this.inputEventMap[e.type];
10761 "pointer" === t && (t = this.iePointerMap[e.pointerType] || e.pointerType), this.lastInteractionType = t, this.lastInteractionTime = this.$mdUtil.now()
10763 }, n.prototype.onBufferInputEvent = function(e) {
10764 this.$timeout.cancel(this.bufferTimeout), this.onInputEvent(e), this.isBuffering = !0, this.bufferTimeout = this.$timeout(function() {
10765 this.isBuffering = !1
10766 }.bind(this), 650, !1)
10767 }, n.prototype.getLastInteractionType = function() {
10768 return this.lastInteractionType
10769 }, n.prototype.isUserInvoked = function(e) {
10770 var n = t.isNumber(e) ? e : 15;
10771 return this.lastInteractionTime >= this.$mdUtil.now() - n
10777 function r(n, r, i) {
10779 return function(t, n) {
10780 n.distance < this.state.options.maxDistance && this.dispatchEvent(t, e, n)
10783 var s = navigator.userAgent || navigator.vendor || e.opera,
10784 c = s.match(/ipad|iphone|ipod/i),
10785 u = s.match(/android/i),
10787 for (var e = document.createElement("div"), n = ["", "webkit", "Moz", "MS", "ms", "o"], r = 0; r < n.length; r++) {
10789 o = i ? i + "TouchAction" : "touchAction";
10790 if (t.isDefined(e.style[o])) return o
10793 f = void 0 !== e.jQuery && t.element === e.jQuery,
10795 handler: function(e, r) {
10797 return t.extend(i, r), h[e] = i, m
10799 register: function(e, t, n) {
10800 var r = h[t.replace(/^\$md./, "")];
10801 if (!r) throw new Error("Failed to register element with handler " + t + ". Available handlers: " + Object.keys(h).join(", "));
10802 return r.registerElement(e, n)
10804 isHijackingClicks: (c || u) && !f && !p
10806 if (m.isHijackingClicks) {
10807 m.handler("click", {
10812 }), m.handler("focus", {
10816 onEnd: function(e, t) {
10817 t.distance < this.state.options.maxDistance && function(e) {
10818 var t = ["INPUT", "SELECT", "BUTTON", "TEXTAREA", "VIDEO", "AUDIO"];
10819 return "-1" != e.getAttribute("tabindex") && !e.hasAttribute("DISABLED") && (e.hasAttribute("tabindex") || e.hasAttribute("href") || e.isContentEditable || -1 != t.indexOf(e.nodeName))
10820 }(e.target) && (this.dispatchEvent(e, "focus", t), e.target.focus())
10822 }), m.handler("mouseup", {
10826 onEnd: o("mouseup")
10827 }), m.handler("mousedown", {
10828 onStart: function(e) {
10829 this.dispatchEvent(e, "mousedown")
10833 return m.handler("press", {
10834 onStart: function(e, t) {
10835 this.dispatchEvent(e, "$md.pressdown")
10837 onEnd: function(e, t) {
10838 this.dispatchEvent(e, "$md.pressup")
10840 }).handler("hold", {
10845 onCancel: function() {
10846 i.cancel(this.state.timeout)
10848 onStart: function(e, n) {
10849 if (!this.state.registeredParent) return this.cancel();
10853 }, this.state.timeout = i(t.bind(this, function() {
10854 this.dispatchEvent(e, "$md.hold"), this.cancel()
10855 }), this.state.options.delay, !1)
10857 onMove: function(e, t) {
10858 d || "touchmove" !== e.type || e.preventDefault();
10859 var n = this.state.pos.x - t.x,
10860 r = this.state.pos.y - t.y;
10861 Math.sqrt(n * n + r * r) > this.options.maxDistance && this.cancel()
10863 onEnd: function() {
10866 }).handler("drag", {
10870 cancelMultiplier: 1.5
10872 onSetup: function(e, t) {
10873 d && (this.oldTouchAction = e[0].style[d], e[0].style[d] = t.horizontal ? "pan-y" : "pan-x")
10875 onCleanup: function(e) {
10876 this.oldTouchAction && (e[0].style[d] = this.oldTouchAction)
10878 onStart: function(e) {
10879 this.state.registeredParent || this.cancel()
10881 onMove: function(e, t) {
10883 d || "touchmove" !== e.type || e.preventDefault(), this.state.dragPointer ? this.dispatchDragMove(e) : (this.state.options.horizontal ? (n = Math.abs(t.distanceX) > this.state.options.minDistance, r = Math.abs(t.distanceY) > this.state.options.minDistance * this.state.options.cancelMultiplier) : (n = Math.abs(t.distanceY) > this.state.options.minDistance, r = Math.abs(t.distanceX) > this.state.options.minDistance * this.state.options.cancelMultiplier), n ? (this.state.dragPointer = a(e), l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragstart", this.state.dragPointer)) : r && this.cancel())
10885 dispatchDragMove: r.throttle(function(e) {
10886 this.state.isRunning && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.drag", this.state.dragPointer))
10888 onEnd: function(e, t) {
10889 this.state.dragPointer && (l(e, this.state.dragPointer), this.dispatchEvent(e, "$md.dragend", this.state.dragPointer))
10891 }).handler("swipe", {
10896 onEnd: function(e, t) {
10898 Math.abs(t.velocityX) > this.state.options.minVelocity && Math.abs(t.distanceX) > this.state.options.minDistance ? (n = "left" == t.directionX ? "$md.swipeleft" : "$md.swiperight", this.dispatchEvent(e, n)) : Math.abs(t.velocityY) > this.state.options.minVelocity && Math.abs(t.distanceY) > this.state.options.minDistance && (n = "up" == t.directionY ? "$md.swipeup" : "$md.swipedown", this.dispatchEvent(e, n))
10904 this.name = e, this.state = {}
10909 !e.clientX && !e.clientY || e.$material || e.isIonicTap || c(e) || (e.preventDefault(), e.stopPropagation())
10914 for (var i in h)(r = h[i]) instanceof n && ("start" === e && r.cancel(), r[e](t, d))
10916 document.contains || (document.contains = function(e) {
10917 return document.body.contains(e)
10918 }), !g && e.isHijackingClicks && (document.addEventListener("click", function(e) {
10919 var t = 0 === e.clientX && 0 === e.clientY,
10920 n = e.target && "submit" === e.target.type;
10921 t || e.$material || e.isIonicTap || c(e) || n ? (m = null, "label" == e.target.tagName.toLowerCase() && (m = {
10924 })) : (e.preventDefault(), e.stopPropagation(), m = null)
10925 }, !0), document.addEventListener("mouseup", r, !0), document.addEventListener("mousedown", r, !0), document.addEventListener("focus", r, !0), g = !0);
10926 t.element(document).on("mousedown touchstart pointerdown", function(e) {
10928 var t = +Date.now();
10929 f && !s(e, f) && t - f.endTime < 1500 || (d = a(e), i("start", e))
10931 }).on("mousemove touchmove pointermove", function(e) {
10932 d && s(e, d) && (l(e, d), i("move", e))
10933 }).on("mouseup mouseleave touchend touchcancel pointerup pointercancel", function(e) {
10934 d && s(e, d) && (l(e, d), d.endTime = +Date.now(), i("end", e), f = d, d = null)
10935 }).on("$$mdGestureReset", function() {
10943 startTime: +Date.now(),
10945 type: e.type.charAt(0)
10947 return n.startX = n.x = t.pageX, n.startY = n.y = t.pageY, n
10951 return e && t && e.type.charAt(0) === t.type
10955 return m && m.x == e.x && m.y == e.y
10962 t.distanceX = r - t.startX, t.distanceY = i - t.startY, t.distance = Math.sqrt(t.distanceX * t.distanceX + t.distanceY * t.distanceY), t.directionX = t.distanceX > 0 ? "right" : t.distanceX < 0 ? "left" : "", t.directionY = t.distanceY > 0 ? "down" : t.distanceY < 0 ? "up" : "", t.duration = +Date.now() - t.startTime, t.velocityX = t.distanceX / t.duration, t.velocityY = t.distanceY / t.duration
10966 return (e = e.originalEvent || e).touches && e.touches[0] || e.changedTouches && e.changedTouches[0] || e
10968 r.$inject = ["$$MdGestureHandler", "$$rAF", "$timeout"], o.$inject = ["$mdGesture", "$$MdGestureHandler"];
10973 t.module("material.core.gestures", []).provider("$mdGesture", n).factory("$$MdGestureHandler", function() {
10974 var n = void 0 !== e.jQuery && t.element === e.jQuery;
10975 return i.prototype = {
10977 dispatchEvent: n ? function(e, n, r) {
10979 var i = new t.element.Event(n);
10980 i.$material = !0, i.pointer = r, i.srcEvent = e, t.extend(i, {
10987 ctrlKey: e.ctrlKey,
10989 shiftKey: e.shiftKey,
10991 }), t.element(r.target).trigger(i)
10992 } : function(t, n, r) {
10995 "click" === n || "mouseup" == n || "mousedown" == n ? (i = document.createEvent("MouseEvents")).initMouseEvent(n, !0, !0, e, t.detail, r.x, r.y, r.x, r.y, t.ctrlKey, t.altKey, t.shiftKey, t.metaKey, t.button, t.relatedTarget || null) : (i = document.createEvent("CustomEvent")).initCustomEvent(n, !0, !0, {}), i.$material = !0, i.pointer = r, i.srcEvent = t, r.target.dispatchEvent(i)
11003 start: function(e, n) {
11004 if (!this.state.isRunning) {
11005 var r = this.getNearestParent(e.target),
11006 i = r && r.$mdGesture[this.name] || {};
11009 options: t.extend({}, this.options, i),
11010 registeredParent: r
11011 }, this.onStart(e, n)
11014 move: function(e, t) {
11015 this.state.isRunning && this.onMove(e, t)
11017 end: function(e, t) {
11018 this.state.isRunning && (this.onEnd(e, t), this.state.isRunning = !1)
11020 cancel: function(e, t) {
11021 this.onCancel(e, t), this.state = {}
11023 getNearestParent: function(e) {
11024 for (var t = e; t;) {
11025 if ((t.$mdGesture || {})[this.name]) return t;
11030 registerElement: function(e, t) {
11032 delete e[0].$mdGesture[r.name], e.off("$destroy", n), r.onCleanup(e, t || {})
11035 return e[0].$mdGesture = e[0].$mdGesture || {}, e[0].$mdGesture[this.name] = t || {}, e.on("$destroy", n), r.onSetup(e, t || {}), n
11038 }).run(o), n.prototype = {
11039 skipClickHijack: function() {
11042 $get: ["$$MdGestureHandler", "$$rAF", "$timeout", function(e, t, n) {
11043 return new r(e, t, n)
11048 t.module("material.core").provider("$$interimElement", function() {
11053 return i[e] = u, r.invoke(t || function() {
11061 show: function(e) {
11062 return (e = e || {})._options && (e = e._options), l.show(t.extend({}, c, e))
11064 destroy: function(e) {
11065 return l.destroy(e)
11068 return s = o.methods || [], c = a(o.optionsFactory, {}), t.forEach(i, function(e, t) {
11070 }), t.forEach(o.presets, function(e, n) {
11072 this._options = t.extend({}, i, e)
11074 var i = a(e.optionsFactory, {}),
11075 o = (e.methods || []).concat(s);
11078 }), t.forEach(o, function(e) {
11079 r.prototype[e] = function(t) {
11080 return this._options[e] = t, this
11083 var c = "show" + n.charAt(0).toUpperCase() + n.slice(1);
11084 u[c] = function(e) {
11089 u[n] = function(n) {
11090 return arguments.length && e.argOption && !t.isObject(n) && !t.isArray(n) ? (new r)[e.argOption](n) : new r(n)
11094 n.$inject = ["$$interimElement", "$injector"];
11095 var r = ["onHide", "onShow", "onRemove"],
11101 setDefaults: function(e) {
11102 return o.optionsFactory = e.options, o.methods = (e.methods || []).concat(r), a
11104 addPreset: function(t, n) {
11105 if (n = n || {}, n.methods = n.methods || [], n.options = n.options || function() {
11107 }, /^cancel|hide|show$/.test(t)) throw new Error("Preset '" + t + "' in " + e + " is reserved!");
11108 if (n.methods.indexOf("_options") > -1) throw new Error("Method '_options' in " + e + " is reserved!");
11109 return o.presets[t] = {
11110 methods: n.methods.concat(r),
11111 optionsFactory: n.options,
11112 argOption: n.argOption
11115 addMethod: function(e, t) {
11120 return a.addPreset("build", {
11121 methods: ["controller", "controllerAs", "resolve", "multiple", "template", "templateUrl", "themable", "transformTemplate", "parent", "contentElement"]
11125 function r(e, r, i, o, a, s, c, l, u, d, f) {
11126 return function() {
11128 return function() {
11130 return y.length ? e.apply(m, t) : v.length ? v[0].finally(function() {
11131 return e.apply(m, t)
11132 }) : r.when("No interim elements currently showing up.")
11138 return (e.skipCompile ? null : l.compile(e)) || r(function(t) {
11149 t.extend(e.locals, n);
11150 var r = e.link(n.scope);
11151 return n.element = r, n.parent = p(r, n), n.themable && u(r), r
11156 if (!((i = t.isFunction(i) ? i(r.scope, n, r) : t.isString(i) ? t.element(e[0].querySelector(i)) : t.element(i)) || {}).length) {
11158 return a[0] && a[0].querySelector && (o = a[0].querySelector(":not(svg) > body")), o || (o = a[0]), "#comment" == o.nodeName && (o = e[0].body), t.element(o)
11165 d.hideDelay && (e = o(m.hide, d.hideDelay), r = function() {
11167 }), d.cancelAutoHide = function() {
11168 r(), d.cancelAutoHide = n
11172 function v(e, n, i) {
11173 var o = n.onShowing || t.noop,
11174 a = n.onComplete || t.noop;
11176 o(n.scope, e, n, i)
11180 return r(function(t, o) {
11182 r.when(n.onShow(n.scope, e, n, i)).then(function() {
11183 a(n.scope, e, n), g(), t(e)
11192 var i = n.onRemoving || t.noop;
11193 return r(function(t, o) {
11195 var a = r.when(n.onRemove(n.scope, e, n) || !0);
11196 i(e, a), n.$destroy ? (t(e), !n.preserveScope && n.scope && a.then(function() {
11198 })) : a.then(function() {
11199 !n.preserveScope && n.scope && n.scope.$destroy(), t(e)
11206 var y, $, _ = r.when(!0);
11207 return d = function(e) {
11208 return (e = e || {}).template && (e.template = c.processTemplate(e.template)), t.extend({
11210 cancelAutoHide: t.noop,
11211 scope: e.scope || i.$new(e.isolateScope),
11212 onShow: function(e, t, n) {
11213 return s.enter(t, n.parent)
11215 onRemove: function(e, t) {
11216 return t && s.leave(t) || r.when()
11221 deferred: r.defer(),
11223 return r(function(e, t) {
11225 y.deferred.reject(e), t(e)
11227 d.onCompiling && d.onCompiling(d), f(d).then(function(t) {
11228 $ = h(t, d), d.cleanupElement = t.cleanup, _ = v($, d, t.controller).then(e, n)
11232 remove: function(e, n, i) {
11234 y.deferred.resolve(e)
11238 y.deferred.reject(e)
11240 return $ ? ((d = t.extend(d || {}, i || {})).cancelAutoHide && d.cancelAutoHide(), d.element.triggerHandler("$mdInterimElementRemove"), !0 === d.$destroy ? b(d.element, d).then(function() {
11242 }) : (r.when(_).finally(function() {
11243 b(d.element, d).then(function() {
11246 }), y.deferred.promise)) : r.when(!1)
11255 show: function(e) {
11256 var t = new p((e = e || {}) || {}),
11257 n = e.multiple ? r.resolve() : r.all(v);
11258 e.multiple || (n = n.then(function() {
11259 var e = b.concat(y.map(m.cancel));
11262 var i = n.then(function() {
11263 return t.show().catch(function(e) {
11265 }).finally(function() {
11266 v.splice(v.indexOf(i), 1), y.push(t)
11269 return v.push(i), t.deferred.promise.catch(function(e) {
11270 return e instanceof Error && f(e), e
11271 }), t.deferred.promise
11273 hide: h(function(e, t) {
11275 var r = n.remove(e, !1, t || {}).catch(function(e) {
11277 }).finally(function() {
11278 b.splice(b.indexOf(r), 1)
11280 return y.splice(y.indexOf(n), 1), b.push(r), n.deferred.promise
11282 return (t = t || {}).closeAll ? r.all(y.slice().reverse().map(i)) : t.closeTo !== n ? r.all(y.slice(t.closeTo).map(i)) : i(y[y.length - 1])
11284 cancel: h(function(e, n) {
11286 if (!i) return r.when(e);
11287 var o = i.remove(e, !0, n || {}).catch(function(e) {
11289 }).finally(function() {
11290 b.splice(b.indexOf(o), 1)
11292 return b.push(o), i.deferred.promise.catch(t.noop)
11294 destroy: function(e) {
11295 var n = e ? null : y.shift(),
11296 i = t.element(e).length && t.element(e)[0].parentNode;
11298 var o = y.filter(function(e) {
11299 return e.options.element[0] === i
11301 o.length && (n = o[0], y.splice(y.indexOf(n), 1))
11303 return n ? n.remove(g, !1, {
11311 return r.$inject = ["$document", "$q", "$rootScope", "$timeout", "$rootElement", "$animate", "$mdUtil", "$mdCompiler", "$mdTheming", "$injector", "$exceptionHandler"], e.$get = r, e
11316 var e = !!document.querySelector("[md-layouts-disabled]");
11321 return C.enabled = !1, {
11328 return ["$timeout", function(n) {
11332 compile: function(r) {
11333 return C.enabled ? (r.addClass(e), function(t, r) {
11344 function n(t, n, r) {
11346 o = r.$observe(r.$normalize(e), i);
11347 i(f(e, r, "")), t.$on("$destroy", function() {
11351 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
11352 return m = r, g = i, v = o, {
11354 compile: function(r, i) {
11356 return C.enabled && (c(e, i, r, v), l(e, f(e, i, ""), u(r, e, i)), o = n), o || t.noop
11366 return ["$mdUtil", "$interpolate", "$log", function(r, i, o) {
11367 return m = r, g = i, v = o, {
11369 compile: function(r, i) {
11371 return C.enabled && (l(e, f(e, i, ""), u(r, e, i)), n(0, r), o = n), o || t.noop
11379 return function(i) {
11380 var o = l(n, i || "");
11381 t.isDefined(o) && (r && e.removeClass(r), r = o ? n + "-" + o.trim().replace(y, "-") : n, e.addClass(r))
11386 var n = e.split("-");
11387 return ["$log", function(r) {
11388 return r.warn(e + "has been deprecated. Please use a `" + n[0] + "-gt-<xxx>` variant."), t.noop
11392 function c(e, t, n, r) {
11393 var i, o, a, s = n[0].nodeName.toLowerCase();
11394 switch (e.replace(b, "")) {
11396 "md-button" != s && "fieldset" != s || (o = "<" + s + " " + e + "></" + s + ">", a = "https://github.com/philipwalton/flexbugs#9-some-html-elements-cant-be-flex-containers", i = "Markup '{0}' may not work as expected in IE Browsers. Consult '{1}' for details.", r.warn(m.supplant(i, [o, a])))
11400 function l(e, n, r) {
11402 switch (e.replace(b, "")) {
11404 h(n, _) || (n = _[0]);
11407 h(n, $) || isNaN(n) && (n = "");
11409 case "flex-offset":
11411 n && !isNaN(+n) || (n = "0");
11413 case "layout-align":
11415 n = m.supplant("{main}-{cross}", i);
11417 case "layout-padding":
11418 case "layout-margin":
11419 case "layout-fill":
11420 case "layout-wrap":
11421 case "layout-nowrap":
11422 case "layout-nowrap":
11425 void 0 != n && (r || t.noop)(n)
11427 return n ? n.trim() : ""
11430 function u(e, t, n) {
11431 return function(e) {
11432 d(e) || (n[n.$normalize(t)] = e)
11437 return (e || "").indexOf(g.startSymbol()) > -1
11440 function f(e, t, n) {
11441 var r = t.$normalize(e);
11442 return t[r] ? t[r].trim().replace(y, "-") : n || null
11445 function h(e, t, n) {
11447 return (e = n && e ? e.replace(y, n) : e) && t.forEach(function(t) {
11448 t = n ? t.replace(y, n) : t, r = r || t === e
11457 return 0 !== (e = e || "").indexOf("-") && 0 !== e.indexOf(" ") || (e = "none" + e), (t = e.toLowerCase().trim().replace(y, "-").split("-")).length && "space" === t[0] && (t = [t[0] + "-" + t[1], t[2]]), t.length > 0 && (n.main = t[0] || n.main), t.length > 1 && (n.cross = t[1] || n.cross), w.indexOf(n.main) < 0 && (n.main = "start"), E.indexOf(n.cross) < 0 && (n.cross = "stretch"), n
11459 var m, g, v, b = /(-gt)?-(sm|md|lg|print)/g,
11461 $ = ["grow", "initial", "auto", "none", "noshrink", "nogrow"],
11462 _ = ["row", "column"],
11463 w = ["", "start", "center", "end", "stretch", "space-around", "space-between"],
11464 E = ["", "start", "center", "end", "stretch"],
11471 return e.replace(d, "").replace(f, function(e, t, n, r) {
11472 return r ? n.toUpperCase() : n
11475 var d = /^((?:x|data)[\:\-_])/i,
11476 f = /([\:\-\_]+(.))/g,
11477 h = ["", "xs", "gt-xs", "sm", "gt-sm", "md", "gt-md", "lg", "gt-lg", "xl", "print"],
11478 p = ["layout", "flex", "flex-order", "flex-offset", "layout-align"],
11479 m = ["show", "hide", "layout-padding", "layout-margin"];
11480 t.forEach(h, function(e) {
11481 t.forEach(p, function(t) {
11482 var n = e ? t + "-" + e : t;
11483 a.directive(u(n), i(n))
11484 }), t.forEach(m, function(t) {
11485 var n = e ? t + "-" + e : t;
11486 a.directive(u(n), o(n))
11488 }), a.provider("$$mdLayout", function() {
11491 validateAttributeValue: l,
11492 validateAttributeUsage: c,
11493 disableLayouts: function(e) {
11494 C.enabled = !0 !== e
11497 }).directive("mdLayoutCss", n).directive("ngCloak", r("ng-cloak")).directive("layoutWrap", o("layout-wrap")).directive("layoutNowrap", o("layout-nowrap")).directive("layoutNoWrap", o("layout-no-wrap")).directive("layoutFill", o("layout-fill")).directive("layoutLtMd", s("layout-lt-md")).directive("layoutLtLg", s("layout-lt-lg")).directive("flexLtMd", s("flex-lt-md")).directive("flexLtLg", s("flex-lt-lg")).directive("layoutAlignLtMd", s("layout-align-lt-md")).directive("layoutAlignLtLg", s("layout-align-lt-lg")).directive("flexOrderLtMd", s("flex-order-lt-md")).directive("flexOrderLtLg", s("flex-order-lt-lg")).directive("offsetLtMd", s("flex-offset-lt-md")).directive("offsetLtLg", s("flex-offset-lt-lg")).directive("hideLtMd", s("hide-lt-md")).directive("hideLtLg", s("hide-lt-lg")).directive("showLtMd", s("show-lt-md")).directive("showLtLg", s("show-lt-lg")).config(e)
11498 }(t.module("material.core.layout", ["ng"]))
11502 this._$timeout = e, this._liveElement = this._createLiveElement(), this._announceTimeout = 100
11504 e.$inject = ["$timeout"], t.module("material.core").service("$mdLiveAnnouncer", e), e.prototype.announce = function(e, t) {
11505 t || (t = "polite");
11507 n._liveElement.textContent = "", n._liveElement.setAttribute("aria-live", t), n._$timeout(function() {
11508 n._liveElement.textContent = e
11509 }, n._announceTimeout, !1)
11510 }, e.prototype._createLiveElement = function() {
11511 var e = document.createElement("div");
11512 return e.classList.add("md-visually-hidden"), e.setAttribute("role", "status"), e.setAttribute("aria-atomic", "true"), e.setAttribute("aria-live", "polite"), document.body.appendChild(e), e
11514 }(), t.module("material.core.meta", []).provider("$$mdMeta", function() {
11516 if (r[e]) return !0;
11517 var n = document.getElementsByName(e)[0];
11518 return !!n && (r[e] = t.element(n), !0)
11520 var n = t.element(document.head),
11523 setMeta: function(i, o) {
11524 if (e(i), r[i]) r[i].attr("content", o);
11526 var a = t.element('<meta name="' + i + '" content="' + o + '"/>');
11527 n.append(a), r[i] = a
11529 return function() {
11530 r[i].attr("content", ""), r[i].remove(), delete r[i]
11533 getMeta: function(t) {
11534 if (!e(t)) throw Error("$$mdMeta: could not find a meta tag with the name '" + t + "'");
11535 return r[t].attr("content")
11538 return t.extend({}, i, {
11547 return e && "" !== e
11552 notFoundError: function(t, n) {
11553 e.error((n || "") + "No instance found for handle", t)
11555 getInstances: function() {
11559 if (!i(e)) return null;
11561 for (t = 0, n = a.length; t < n; t++)
11562 if ((r = a[t]).$$mdHandle === e) return r;
11565 register: function(e, n) {
11566 return n ? (e.$$mdHandle = n, a.push(e), function() {
11568 t && (t.forEach(function(t) {
11572 var t = a.indexOf(e); - 1 !== t && a.splice(t, 1)
11575 when: function(e) {
11579 return a ? t.resolve(a) : (s[e] === n && (s[e] = []), s[e].push(t)), t.promise
11581 return r.reject("Invalid `md-component-id` value.")
11585 e.$inject = ["$log", "$q"], t.module("material.core").factory("$mdComponentRegistry", e)
11590 return e.hasClass("md-icon-button") ? {
11591 isMenuItem: e.hasClass("md-menu-item"),
11595 isMenuItem: e.hasClass("md-menu-item"),
11600 attach: function(r, i, o) {
11601 return o = t.extend(n(i), o), e.attach(r, i, o)
11605 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdButtonInkRipple", e)
11610 attach: function(n, r, i) {
11611 return e.attach(n, r, t.extend({
11619 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdCheckboxInkRipple", e)
11624 attach: function(n, r, i) {
11625 return e.attach(n, r, t.extend({
11634 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdListInkRipple", e)
11639 controller: t.noop,
11640 link: function(t, r, i) {
11641 i.hasOwnProperty("mdInkRippleCheckbox") ? n.attach(t, r) : e.attach(t, r)
11646 function n(e, n, r, i, o, a, s) {
11647 this.$window = i, this.$timeout = o, this.$mdUtil = a, this.$mdColorUtil = s, this.$scope = e, this.$element = n, this.options = r, this.mousedown = !1, this.ripples = [], this.timeout = null, this.lastRipple = null, a.valueOnUse(this, "container", this.createContainer), this.$element.addClass("md-ink-ripple"), (n.controller("mdInkRipple") || {}).createRipple = t.bind(this, this.createRipple), (n.controller("mdInkRipple") || {}).setColor = t.bind(this, this.color), this.bindEvents()
11651 (e.mousedown || e.lastRipple) && (e.mousedown = !1, e.$mdUtil.nextTick(t.bind(e, n), !1))
11659 n.$inject = ["$scope", "$element", "rippleOptions", "$window", "$timeout", "$mdUtil", "$mdColorUtil"], e.$inject = ["$mdButtonInkRipple", "$mdCheckboxInkRipple"], t.module("material.core").provider("$mdInkRipple", function() {
11662 disableInkRipple: function() {
11665 $get: ["$injector", function(r) {
11667 attach: function(i, o, a) {
11668 return e || o.controller("mdNoInk") ? t.noop : r.instantiate(n, {
11677 }).directive("mdInkRipple", e).directive("mdNoInk", i).directive("mdNoBar", i).directive("mdNoStretch", i);
11678 n.prototype.color = function(e) {
11680 return t.isDefined(e) && (n._color = n._parseColor(e)), n._color || n._parseColor(n.inkRipple()) || n._parseColor(function() {
11681 var e = n.options && n.options.colorElement ? n.options.colorElement : [],
11682 t = e.length ? e[0] : n.$element[0];
11683 return t ? n.$window.getComputedStyle(t).color : "rgb(0,0,0)"
11685 }, n.prototype.calculateColor = function() {
11686 return this.color()
11687 }, n.prototype._parseColor = function(e, t) {
11689 var n = this.$mdColorUtil;
11690 if (e) return 0 === e.indexOf("rgba") ? e.replace(/\d?\.?\d*\s*\)\s*$/, (.1 * t).toString() + ")") : 0 === e.indexOf("rgb") ? n.rgbToRgba(e) : 0 === e.indexOf("#") ? n.hexToRgba(e) : void 0
11691 }, n.prototype.bindEvents = function() {
11692 this.$element.on("mousedown", t.bind(this, this.handleMousedown)), this.$element.on("mouseup touchend", t.bind(this, this.handleMouseup)), this.$element.on("mouseleave", t.bind(this, this.handleMouseup)), this.$element.on("touchmove", t.bind(this, this.handleTouchmove))
11693 }, n.prototype.handleMousedown = function(e) {
11694 if (!this.mousedown)
11695 if (e.hasOwnProperty("originalEvent") && (e = e.originalEvent), this.mousedown = !0, this.options.center) this.createRipple(this.container.prop("clientWidth") / 2, this.container.prop("clientWidth") / 2);
11696 else if (e.srcElement !== this.$element[0]) {
11697 var t = this.$element[0].getBoundingClientRect(),
11698 n = e.clientX - t.left,
11699 r = e.clientY - t.top;
11700 this.createRipple(n, r)
11701 } else this.createRipple(e.offsetX, e.offsetY)
11702 }, n.prototype.handleMouseup = function() {
11703 r(this, this.clearRipples)
11704 }, n.prototype.handleTouchmove = function() {
11705 r(this, this.deleteRipples)
11706 }, n.prototype.deleteRipples = function() {
11707 for (var e = 0; e < this.ripples.length; e++) this.ripples[e].remove()
11708 }, n.prototype.clearRipples = function() {
11709 for (var e = 0; e < this.ripples.length; e++) this.fadeInComplete(this.ripples[e])
11710 }, n.prototype.createContainer = function() {
11711 var e = t.element('<div class="md-ripple-container"></div>');
11712 return this.$element.append(e), e
11713 }, n.prototype.clearTimeout = function() {
11714 this.timeout && (this.$timeout.cancel(this.timeout), this.timeout = null)
11715 }, n.prototype.isRippleAllowed = function() {
11716 var e = this.$element[0];
11718 if (!e.tagName || "BODY" === e.tagName) break;
11719 if (e && t.isFunction(e.hasAttribute)) {
11720 if (e.hasAttribute("disabled")) return !1;
11721 if ("false" === this.inkRipple() || "0" === this.inkRipple()) return !1
11723 } while (e = e.parentNode);
11725 }, n.prototype.inkRipple = function() {
11726 return this.$element.attr("md-ink-ripple")
11727 }, n.prototype.createRipple = function(e, n) {
11728 if (this.isRippleAllowed()) {
11730 i = r.$mdColorUtil,
11731 o = t.element('<div class="md-ripple"></div>'),
11732 a = this.$element.prop("clientWidth"),
11733 s = this.$element.prop("clientHeight"),
11734 c = 2 * Math.max(Math.abs(a - e), e),
11735 l = 2 * Math.max(Math.abs(s - n), n),
11736 u = function(e, t, n) {
11737 return e ? Math.max(t, n) : Math.sqrt(Math.pow(t, 2) + Math.pow(n, 2))
11738 }(this.options.fitRipple, c, l),
11739 d = this.calculateColor();
11743 background: "black",
11746 backgroundColor: i.rgbaToRgb(d),
11747 borderColor: i.rgbaToRgb(d)
11748 }), this.lastRipple = o, this.clearTimeout(), this.timeout = this.$timeout(function() {
11749 r.clearTimeout(), r.mousedown || r.fadeInComplete(o)
11750 }, 157.5, !1), this.options.dimBackground && this.container.css({
11752 }), this.container.append(o), this.ripples.push(o), o.addClass("md-ripple-placed"), this.$mdUtil.nextTick(function() {
11753 o.addClass("md-ripple-scaled md-ripple-active"), r.$timeout(function() {
11758 }, n.prototype.fadeInComplete = function(e) {
11759 this.lastRipple === e ? this.timeout || this.mousedown || this.removeRipple(e) : this.removeRipple(e)
11760 }, n.prototype.removeRipple = function(e) {
11762 this.ripples.indexOf(e) < 0 || (this.ripples.splice(this.ripples.indexOf(e), 1), e.removeClass("md-ripple-active"), e.addClass("md-ripple-remove"), 0 === this.ripples.length && this.container.css({
11763 backgroundColor: ""
11764 }), this.$timeout(function() {
11765 t.fadeOutComplete(e)
11767 }, n.prototype.fadeOutComplete = function(e) {
11768 e.remove(), this.lastRipple = null
11774 attach: function(n, r, i) {
11775 return e.attach(n, r, t.extend({
11784 e.$inject = ["$mdInkRipple"], t.module("material.core").factory("$mdTabInkRipple", e)
11785 }(), t.module("material.core.theming.palette", []).constant("$mdColorPalette", {
11801 contrastDefaultColor: "light",
11802 contrastDarkColors: "50 100 200 300 A100",
11803 contrastStrongLightColors: "400 500 600 700 A200 A400 A700"
11820 contrastDefaultColor: "light",
11821 contrastDarkColors: "50 100 200 A100",
11822 contrastStrongLightColors: "500 600 A200 A400 A700"
11839 contrastDefaultColor: "light",
11840 contrastDarkColors: "50 100 200 A100",
11841 contrastStrongLightColors: "300 400 A200 A400 A700"
11858 contrastDefaultColor: "light",
11859 contrastDarkColors: "50 100 200 A100",
11860 contrastStrongLightColors: "300 400 A200"
11877 contrastDefaultColor: "light",
11878 contrastDarkColors: "50 100 200 A100",
11879 contrastStrongLightColors: "300 400 A200 A400"
11896 contrastDefaultColor: "light",
11897 contrastDarkColors: "50 100 200 300 400 A100",
11898 contrastStrongLightColors: "500 600 700 A200 A400 A700"
11915 contrastDefaultColor: "dark",
11916 contrastLightColors: "600 700 800 900 A700",
11917 contrastStrongLightColors: "600 700 800 A700"
11934 contrastDefaultColor: "dark",
11935 contrastLightColors: "700 800 900",
11936 contrastStrongLightColors: "700 800 900"
11953 contrastDefaultColor: "dark",
11954 contrastLightColors: "500 600 700 800 900",
11955 contrastStrongLightColors: "500 600 700"
11972 contrastDefaultColor: "dark",
11973 contrastLightColors: "500 600 700 800 900",
11974 contrastStrongLightColors: "500 600 700"
11991 contrastDefaultColor: "dark",
11992 contrastLightColors: "700 800 900",
11993 contrastStrongLightColors: "700 800 900"
12010 contrastDefaultColor: "dark",
12011 contrastLightColors: "900",
12012 contrastStrongLightColors: "900"
12029 contrastDefaultColor: "dark"
12046 contrastDefaultColor: "dark"
12063 contrastDefaultColor: "dark",
12064 contrastLightColors: "800 900",
12065 contrastStrongLightColors: "800 900"
12082 contrastDefaultColor: "light",
12083 contrastDarkColors: "50 100 200 300 400 A100 A200",
12084 contrastStrongLightColors: "500 600 700 800 900 A400 A700"
12101 contrastDefaultColor: "light",
12102 contrastDarkColors: "50 100 200 A100 A200",
12103 contrastStrongLightColors: "300 400"
12120 contrastDefaultColor: "dark",
12121 contrastLightColors: "600 700 800 900 A200 A400 A700"
12138 contrastDefaultColor: "light",
12139 contrastDarkColors: "50 100 200 300 A100 A200",
12140 contrastStrongLightColors: "400 500 700"
12145 var t = !!document.querySelector("[md-themes-disabled]");
12146 e.disableTheming(t)
12151 var n = x.filter(function(e) {
12154 if (n.length) throw new Error("Missing colors %1 in palette %2!".replace("%1", n.join(", ")).replace("%2", e));
12159 if (h[t]) return h[t];
12160 var r = "string" == typeof(n = n || "default") ? h[n] : n,
12162 return r && e.forEach(r.colors, function(t, n) {
12165 hues: e.extend({}, t.hues)
12172 if ((t = 0 === arguments.length || !!t) !== r.isDark) {
12173 r.isDark = t, r.foregroundPalette = r.isDark ? m : p, r.foregroundShadow = r.isDark ? g : v;
12174 var n = r.isDark ? C : E,
12175 i = r.isDark ? E : C;
12176 return e.forEach(n, function(e, t) {
12177 var n = r.colors[t],
12180 for (var a in n.hues) n.hues[a] === o[a] && (n.hues[a] = e[a])
12185 r.name = t, r.colors = {}, r.dark = n, n(!1), _.forEach(function(t) {
12186 var n = (r.isDark ? C : E)[t];
12187 r[t + "Palette"] = function(i, o) {
12188 var a = r.colors[t] = {
12190 hues: e.extend({}, n, o)
12192 return Object.keys(a.hues).forEach(function(e) {
12193 if (!n[e]) throw new Error("Invalid hue name '%1' in theme %2's %3 color %4. Available hue names: %4".replace("%1", e).replace("%2", r.name).replace("%3", i).replace("%4", Object.keys(n).join(", ")))
12194 }), Object.keys(a.hues).map(function(e) {
12196 }).forEach(function(e) {
12197 if (-1 == x.indexOf(e)) throw new Error("Invalid hue value '%1' in theme %2's %3 color %4. Available hue values: %5".replace("%1", e).replace("%2", r.name).replace("%3", t).replace("%4", i).replace("%5", x.join(", ")))
12199 }, r[t + "Color"] = function() {
12200 var e = Array.prototype.slice.call(arguments);
12201 return console.warn("$mdThemingProviderTheme." + t + "Color() has been deprecated. Use $mdThemingProviderTheme." + t + "Palette() instead."), r[t + "Palette"].apply(r, e)
12206 function l(t, r, i, a) {
12208 return e === n || "" === e || l.THEMES[e] !== n
12210 var l = function(e, r) {
12211 r === n && (r = e, e = n), e === n && (e = t), l.inherit(r, r)
12213 return Object.defineProperty(l, "THEMES", {
12215 return e.extend({}, h)
12217 }), Object.defineProperty(l, "PALETTES", {
12219 return e.extend({}, f)
12221 }), Object.defineProperty(l, "ALWAYS_WATCH", {
12225 }), l.inherit = function(e, t) {
12228 s(t) || a.warn("Attempted to use unregistered theme '" + t + "'. Register it with $mdThemingProvider.theme().");
12229 var n = e.data("$mdThemeName");
12230 n && e.removeClass("md-" + n + "-theme"), e.addClass("md-" + t + "-theme"), e.data("$mdThemeName", t), i && e.data("$mdThemeController", i)
12233 var i = t.controller("mdTheme") || e.data("$mdThemeController");
12234 if (n(i && i.$mdTheme || ("default" == y ? "" : y)), i) var o = b || i.$shouldWatch || r.parseAttributeBoolean(e.attr("md-theme-watch")),
12235 c = i.registerChanges(function(t) {
12236 n(t), o ? e.on("$destroy", c) : c()
12238 }, l.registered = s, l.defaultTheme = function() {
12240 }, l.generateTheme = function(e) {
12241 c(h[e], e, k.nonce)
12242 }, l.defineTheme = function(e, t) {
12245 return t.primary && n.primaryPalette(t.primary), t.accent && n.accentPalette(t.accent), t.warn && n.warnPalette(t.warn), t.background && n.backgroundPalette(t.background), t.dark && n.dark(), this.generateTheme(e), i.resolve(e)
12246 }, l.setBrowserColor = w, l
12248 l.$inject = ["$rootScope", "$mdUtil", "$q", "$log"], f = {};
12253 var $ = function(e) {
12254 var t = r.setMeta("theme-color", e),
12255 n = r.setMeta("msapplication-navbutton-color", e);
12256 return function() {
12261 var n = (t = e.isObject(t) ? t : {}).theme || "default",
12262 r = t.hue || "800",
12263 i = f[t.palette] || f[h[n].colors[t.palette || "primary"].name],
12264 o = e.isObject(i[r]) ? i[r].hex : i[r];
12268 definePalette: function(e, t) {
12269 return t = t || {}, f[e] = i(e, t), u
12271 extendPalette: function(t, n) {
12272 return i(t, e.extend({}, f[t] || {}, n))
12275 configuration: function() {
12276 return e.extend({}, k, {
12278 alwaysWatchTheme: b,
12279 registeredStyles: [].concat(k.registeredStyles)
12282 disableTheming: function(t) {
12283 k.disableTheming = e.isUndefined(t) || !!t
12285 registerStyles: function(e) {
12286 k.registeredStyles.push(e)
12288 setNonce: function(e) {
12291 generateThemesOnDemand: function(e) {
12292 k.generateOnDemand = e
12294 setDefaultTheme: function(e) {
12297 alwaysWatchTheme: function(e) {
12300 enableBrowserColor: w,
12302 _LIGHT_DEFAULT_HUES: E,
12303 _DARK_DEFAULT_HUES: C,
12311 function i(t, n, r, i, o, a) {
12315 pre: function(s, c, l) {
12317 d = n.startSymbol(),
12319 h = l.mdTheme.trim(),
12320 p = h.substr(0, d.length) === d && h.lastIndexOf(f) === h.length - f.length,
12321 m = "::" === l.mdTheme.split(d).join("").split(f).join("").trim().substr(0, "::".length),
12323 registerChanges: function(t, n) {
12324 return n && (t = e.bind(n, t)), u.push(t),
12326 var e = u.indexOf(t);
12327 e > -1 && u.splice(e, 1)
12330 $setTheme: function(e) {
12331 t.registered(e) || a.warn("attempted to use unregistered theme '" + e + "'"), g.$mdTheme = e;
12332 for (var n = u.length; n--;) u[n](e)
12334 $shouldWatch: i.parseAttributeBoolean(c.attr("md-theme-watch")) || t.ALWAYS_WATCH || p && !m
12336 c.data("$mdThemeController", g);
12337 var v = function() {
12338 var e = n(l.mdTheme)(s);
12339 return r(e)(s) || e
12342 if ("string" == typeof t) return g.$setTheme(t);
12343 o.when(e.isFunction(t) ? t() : t).then(function(e) {
12348 var y = s.$watch(v, function(e) {
12349 e && (b(e), g.$shouldWatch || y())
12360 function a(t, n, r) {
12361 l(t, n), r = r.replace(/THEME_NAME/g, t.name);
12364 a = new RegExp("\\.md-" + t.name + "-theme", "g"),
12365 s = new RegExp("('|\")?{{\\s*(" + n + ")-(color|contrast)-?(\\d\\.?\\d*)?\\s*}}(\"|')?", "g"),
12366 c = /'?"?\{\{\s*([a-zA-Z]+)-(A?\d+|hue\-[0-3]|shadow|default)-?(\d\.?\d*)?(contrast)?\s*\}\}'?"?/g,
12368 return r = r.replace(c, function(e, n, r, i, o) {
12369 return "foreground" === n ? "shadow" == r ? t.foregroundShadow : t.foregroundPalette[r] || t.foregroundPalette[1] : (0 !== r.indexOf("hue") && "default" !== r || (r = t.colors[n].hues[r]), d((f[t.colors[n].name][r] || "")[o ? "contrast" : "value"], i))
12370 }), e.forEach(o.hues, function(e, n) {
12371 var o = r.replace(s, function(t, n, r, i, o) {
12372 return d(u[e]["color" === i ? "value" : "contrast"], o)
12374 if ("default" !== n && (o = o.replace(a, ".md-" + t.name + "-theme.md-" + n)), "default" == t.name) {
12375 var c = /((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)\.md-default-theme((?:\s|>|\.|\w|-|:|\(|\)|\[|\]|"|'|=)*)/g;
12376 o = o.replace(c, function(e, t, n) {
12377 return e + ", " + t + n
12385 var r = document.head,
12386 i = r ? r.firstElementChild : null,
12387 o = !k.disableTheming && t.has("$MD_THEME_CSS") ? t.get("$MD_THEME_CSS") : "";
12388 if (o += k.registeredStyles.join(""), i && 0 !== o.length) {
12389 e.forEach(f, function(t, n) {
12390 var r = t.contrastDefaultColor,
12391 i = t.contrastLightColors || [],
12392 o = t.contrastStrongLightColors || [],
12393 a = t.contrastDarkColors || [];
12394 "string" == typeof i && (i = i.split(" ")), "string" == typeof o && (o = o.split(" ")), "string" == typeof a && (a = a.split(" ")), delete t.contrastDefaultColor, delete t.contrastLightColors, delete t.contrastStrongLightColors, delete t.contrastDarkColors, e.forEach(t, function(n, s) {
12395 if (!e.isObject(n)) {
12397 if (!c) throw new Error("Color %1, in palette %2's hue %3, is invalid. Hex or rgb(a) color expected.".replace("%1", n).replace("%2", t.name).replace("%3", s));
12401 contrast: "light" === r ? a.indexOf(s) > -1 ? b : o.indexOf(s) > -1 ? $ : y : i.indexOf(s) > -1 ? o.indexOf(s) > -1 ? $ : y : b
12406 var a = o.split(/\}(?!(\}|'|"|;))/).filter(function(e) {
12407 return e && e.trim().length
12408 }).map(function(e) {
12409 return e.trim() + "}"
12411 s = new RegExp("md-(" + _.join("|") + ")", "g");
12412 _.forEach(function(e) {
12414 }), a.forEach(function(e) {
12416 for (var t, n = 0; t = _[n]; n++)
12417 if (e.indexOf(".md-" + t) > -1) return T[t] += e;
12418 for (n = 0; t = _[n]; n++)
12419 if (e.indexOf(t) > -1) return T[t] += e;
12421 }), k.generateOnDemand || e.forEach(n.THEMES, function(e) {
12422 h[e.name] || "default" !== n.defaultTheme() && "default" === e.name || c(e, e.name, k.nonce)
12427 function c(e, t, n) {
12428 var r = document.head,
12429 i = r ? r.firstElementChild : null;
12430 h[t] || (_.forEach(function(t) {
12431 for (var o = a(e, t, T[t]); o.length;) {
12434 var c = document.createElement("style");
12435 c.setAttribute("md-theme-style", ""), n && c.setAttribute("nonce", n), c.appendChild(document.createTextNode(s)), r.insertBefore(c, i)
12438 }), h[e.name] = !0)
12442 if (!f[(e.colors[t] || {}).name]) throw new Error("You supplied an invalid color palette for theme %1's %2 palette. Available palettes: %3".replace("%1", e.name).replace("%2", t).replace("%3", Object.keys(f).join(", ")))
12446 if (e.isArray(t) && 3 == t.length) return t;
12447 if (/^rgb/.test(t)) return t.replace(/(^\s*rgba?\(|\)\s*$)/g, "").split(",").map(function(e, t) {
12448 return 3 == t ? parseFloat(e, 10) : parseInt(e, 10)
12450 if ("#" == t.charAt(0) && (t = t.substring(1)), /^([a-fA-F0-9]{3}){1,2}$/g.test(t)) {
12451 var n = t.length / 3,
12452 r = t.substr(0, n),
12453 i = t.substr(n, n),
12454 o = t.substr(2 * n);
12455 return 1 === n && (r += r, i += i, o += o), [parseInt(r, 16), parseInt(i, 16), parseInt(o, 16)]
12460 return t ? (4 == t.length && (t = e.copy(t), n ? t.pop() : n = t.pop()), n && ("number" == typeof n || "string" == typeof n && n.length) ? "rgba(" + t.join(",") + "," + n + ")" : "rgb(" + t.join(",") + ")") : "rgb('0,0,0')"
12462 t.$inject = ["$mdThemingProvider"], i.$inject = ["$mdTheming", "$interpolate", "$parse", "$mdUtil", "$q", "$log"], o.$inject = ["$mdTheming"], r.$inject = ["$mdColorPalette", "$$mdMetaProvider"], s.$inject = ["$injector", "$mdTheming"], e.module("material.core.theming", ["material.core.theming.palette", "material.core.meta"]).directive("mdTheme", i).directive("mdThemable", o).directive("mdThemesDisabled", function() {
12463 return k.disableTheming = !0, {
12467 }).provider("$mdTheming", r).config(t).run(s);
12471 1: "rgba(0,0,0,0.87)",
12472 2: "rgba(0,0,0,0.54)",
12473 3: "rgba(0,0,0,0.38)",
12474 4: "rgba(0,0,0,0.12)"
12478 1: "rgba(255,255,255,1.0)",
12479 2: "rgba(255,255,255,0.7)",
12480 3: "rgba(255,255,255,0.5)",
12481 4: "rgba(255,255,255,0.12)"
12483 g = "1px 1px 0px rgba(0,0,0,0.4), -1px -1px 0px rgba(0,0,0,0.4)",
12485 b = u("rgba(0,0,0,0.87)"),
12486 y = u("rgba(255,255,255,0.87)"),
12487 $ = u("rgb(255,255,255)"),
12488 _ = ["primary", "accent", "warn", "background"],
12512 _.forEach(function(e) {
12519 E[e] || (E[e] = t), C[e] || (C[e] = t)
12521 var x = ["50", "100", "200", "300", "400", "500", "600", "700", "800", "900", "A100", "A200", "A400", "A700"],
12523 disableTheming: !1,
12524 generateOnDemand: !1,
12525 registeredStyles: [],
12531 function n(n, r, i, o, a) {
12534 translate3d: function(e, t, n, r) {
12538 addClass: r.transitionOutClass,
12539 removeClass: r.transitionInClass,
12540 duration: r.duration
12546 addClass: r.transitionInClass,
12547 removeClass: r.transitionOutClass,
12548 duration: r.duration
12549 }).start().then(function() {
12553 waitTransitionEnd: function(t, n) {
12555 return r(function(r, s) {
12557 e && e.target !== t[0] || (e && i.cancel(l), t.off(o.CSS.TRANSITIONEND, c), r())
12559 return "0s" == (n = n || e.getComputedStyle(t[0])).transitionDuration || !n.transition && !n.transitionProperty
12560 })((n = n || {}).cachedTransitionStyles) && (a = 0);
12561 var l = i(c, n.timeout || a);
12562 t.on(o.CSS.TRANSITIONEND, c)
12565 calculateTransformValues: function(e, t) {
12569 var i = n ? s.clientRect(n) || function() {
12570 var t = e ? e.parent() : null,
12571 n = t ? t.parent() : null;
12572 return n ? s.clientRect(n) : null
12573 }() : s.copyRect(r),
12574 o = s.copyRect(e[0].getBoundingClientRect()),
12575 a = s.centerPointFor(o),
12576 c = s.centerPointFor(i);
12578 centerX: c.x - a.x,
12579 centerY: c.y - a.y,
12580 scaleX: Math.round(100 * Math.min(.5, i.width / o.width)) / 100,
12581 scaleY: Math.round(100 * Math.min(.5, i.height / o.height)) / 100
12591 calculateZoomToOrigin: function(e, r) {
12592 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 ) scale( {scaleX}, {scaleY} )")(s.calculateTransformValues(e, r))
12594 calculateSlideToOrigin: function(e, r) {
12595 return t.bind(null, n.supplant, "translate3d( {centerX}px, {centerY}px, 0 )")(s.calculateTransformValues(e, r))
12597 toCss: function(e) {
12598 function n(e, n, i) {
12599 t.forEach(n.split(" "), function(e) {
12604 return t.forEach(e, function(e, i) {
12605 if (!t.isUndefined(e))
12606 if ("left top right bottom width height x y min-width min-height max-width max-height".indexOf(i) >= 0) r[i] = e + "px";
12609 n(0, o.CSS.TRANSITION, e);
12612 n(0, o.CSS.TRANSFORM, e);
12614 case "transformOrigin":
12615 n(0, o.CSS.TRANSFORM_ORIGIN, e);
12622 toTransformCss: function(e, n, r) {
12624 return t.forEach(o.CSS.TRANSFORM.split(" "), function(t) {
12626 }), n && (r = r || "all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1) !important", i.transition = r), i
12628 copyRect: function(e, n) {
12629 return e ? (n = n || {}, t.forEach("left top right bottom width height".split(" "), function(t) {
12630 n[t] = Math.round(e[t])
12631 }), n.width = n.width || n.right - n.left, n.height = n.height || n.bottom - n.top, n) : null
12633 clientRect: function(e) {
12634 var n = t.element(e)[0].getBoundingClientRect();
12635 return function(e) {
12636 return e && e.width > 0 && e.height > 0
12637 }(n) ? s.copyRect(n) : null
12639 centerPointFor: function(e) {
12641 x: Math.round(e.left + e.width / 2),
12642 y: Math.round(e.top + e.height / 2)
12650 t.module("material.core").factory("$$mdAnimate", ["$q", "$timeout", "$mdConstant", "$animateCss", function(e, t, r, i) {
12651 return function(o) {
12652 return n(o, e, t, r, i)
12655 }(), t.version.minor >= 4 ? t.module("material.core.animate", []) : function() {
12657 return e.replace(/-[a-z]/g, function(e) {
12658 return e.charAt(1).toUpperCase()
12662 r = t.isDefined(document.documentElement.style.WebkitAppearance),
12663 i = r ? "-webkit-" : "",
12664 o = (r ? "webkitTransitionEnd " : "") + "transitionend",
12665 a = (r ? "webkitAnimationEnd " : "") + "animationend",
12666 s = ["$document", function(e) {
12667 return function() {
12668 return e[0].body.clientWidth + 1
12671 c = ["$$rAF", function(e) {
12672 return function() {
12674 return e(function() {
12682 l = ["$q", "$$rAFMutex", function(e, r) {
12684 this.setHost(e), this._doneCallbacks = [], this._runInAnimationFrame = r(), this._state = 0
12686 return i.prototype = {
12687 setHost: function(e) {
12688 this.host = e || {}
12690 done: function(e) {
12691 2 === this._state ? e() : this._doneCallbacks.push(e)
12694 getPromise: function() {
12695 if (!this.promise) {
12697 this.promise = e(function(e, n) {
12698 t.done(function(t) {
12699 !1 === t ? n() : e()
12703 return this.promise
12705 then: function(e, t) {
12706 return this.getPromise().then(e, t)
12708 catch: function(e) {
12709 return this.getPromise().catch(e)
12711 finally: function(e) {
12712 return this.getPromise().finally(e)
12714 pause: function() {
12715 this.host.pause && this.host.pause()
12717 resume: function() {
12718 this.host.resume && this.host.resume()
12721 this.host.end && this.host.end(), this._resolve(!0)
12723 cancel: function() {
12724 this.host.cancel && this.host.cancel(), this._resolve(!1)
12726 complete: function(e) {
12728 0 === t._state && (t._state = 1, t._runInAnimationFrame(function() {
12732 _resolve: function(e) {
12733 2 !== this._state && (n(this._doneCallbacks, function(t) {
12735 }), this._doneCallbacks.length = 0, this._state = 2)
12737 }, i.all = function(e, t) {
12739 o = o && n, ++i === e.length && t(o)
12748 t.module("material.core.animate", []).factory("$$forceReflow", s).factory("$$AnimateRunner", l).factory("$$rAFMutex", c).factory("$animateCss", ["$window", "$$rAF", "$$AnimateRunner", "$$forceReflow", "$$jqLite", "$timeout", "$animate", function(t, s, c, l, u, d, f) {
12750 t.addClass && (u.addClass(e, t.addClass), t.addClass = null), t.removeClass && (u.removeClass(e, t.removeClass), t.removeClass = null)
12755 return r ? "Webkit" + e.charAt(0).toUpperCase() + e.substr(1) : e
12758 o = t.getComputedStyle(i),
12759 a = m(o[n("transitionDuration")]),
12760 s = m(o[n("animationDuration")]),
12761 c = m(o[n("transitionDelay")]),
12762 l = m(o[n("animationDelay")]);
12763 return s *= parseInt(o[n("animationIterationCount")], 10) || 1, {
12764 duration: Math.max(s, a),
12765 delay: Math.max(l, c),
12766 animationDuration: s,
12767 transitionDuration: a,
12775 r = (e || "").split(/\s*,\s*/);
12776 return n(r, function(e) {
12777 "s" == e.charAt(e.length - 1) && (e = e.substring(0, e.length - 1)), e = parseFloat(e) || 0, t = t ? Math.max(e, t) : e
12782 w && w(), E.push(e), w = s(function() {
12784 for (var e = l(), t = 0; t < E.length; t++) E[t](e);
12794 t.from && (e.css(t.from), t.from = null)
12798 t.to && (e.css(t.to), t.to = null)
12802 for (var t = 0; t < e.length; t++)
12803 if (1 === e[t].nodeType) return e[t]
12808 o = e(i + "transition-delay");
12809 r.style[o] = n ? "-9999s" : ""
12812 return function(r, s) {
12815 m = u && f.enabled(),
12818 m && (s.transitionStyle && l.push([i + "transition", s.transitionStyle]), s.keyframeStyle && l.push([i + "animation", s.keyframeStyle]), s.delay && l.push([i + "transition-delay", s.delay + "s"]), s.duration && l.push([i + "transition-duration", s.duration + "s"]), w = s.keyframeStyle || s.to && (s.duration > 0 || s.transitionStyle), E = !!s.addClass || !!s.removeClass, _(r, !0));
12819 var C = m && (w || E);
12824 start: function() {
12826 if (!T) return T = !0, x && k && r.off(x, k), h(r, s), v(r, s), n(l, function(t) {
12827 u.style[e(t[0])] = ""
12828 }), f.complete(!0), f
12831 return g(function() {
12832 if (_(r, !1), !C) return t();
12839 if (0 === c.duration) return t();
12841 s.easing && (c.transitionDuration && f.push([i + "transition-timing-function", s.easing]), c.animationDuration && f.push([i + "animation-timing-function", s.easing])), s.delay && c.animationDelay && f.push([i + "animation-delay", s.delay + "s"]), s.duration && c.animationDuration && f.push([i + "animation-duration", s.duration + "s"]), n(f, function(t) {
12844 u.style[e(n)] = r, l.push(t)
12846 var m = 1e3 * c.delay,
12850 x = [], c.transitionDuration && x.push(o), c.animationDuration && x.push(a), x = x.join(" "), k = function(e) {
12851 e.stopPropagation();
12852 var n = e.originalEvent || e,
12853 r = n.timeStamp || Date.now(),
12854 i = parseFloat(n.elapsedTime.toFixed(3));
12855 Math.max(r - b, 0) >= m && i >= g && t()
12856 }, r.on(x, k), y(r, s), d(t, m + 1.5 * v, !1)
12862 }(), t.module("material.components.autocomplete", ["material.core", "material.components.icon", "material.components.virtualRepeat"]), t.module("material.components.backdrop", ["material.core"]).directive("mdBackdrop", ["$mdTheming", "$mdUtil", "$animate", "$rootElement", "$window", "$log", "$$rAF", "$document", function(e, n, r, i, o, a, s, c) {
12863 var l = "<md-backdrop> may not work properly in a scrolled, static-positioned parent container.";
12866 link: function(u, d, f) {
12868 var e = parseInt(p.height, 10) + Math.abs(parseInt(p.top, 10));
12869 d.css("height", e + "px")
12871 r.pin && r.pin(d, i);
12874 if ("fixed" === (p = o.getComputedStyle(c[0].body)).position) {
12875 var r = n.debounce(function() {
12876 p = o.getComputedStyle(c[0].body), h()
12878 h(), t.element(o).on("resize", r), u.$on("$destroy", function() {
12879 t.element(o).off("resize", r)
12882 var i = d.parent();
12883 i.length && ("BODY" === i[0].nodeName && d.css("position", "fixed"), "static" === o.getComputedStyle(i[0]).position && a.warn(l), e.inherit(d, i))
12892 link: function(t, n) {
12893 n.addClass("_md"), t.$on("$destroy", function() {
12901 function n(e, n, o, a, s, c, l, u) {
12904 e.css(n.CSS.TRANSITION_DURATION, "0ms")
12908 var r = t.pointer.distanceY;
12909 r < 5 && (r = Math.max(-i, r / 2)), e.css(n.CSS.TRANSFORM, "translate3d(0," + (i + r) + "px,0)")
12913 if (t.pointer.distanceY > 0 && (t.pointer.distanceY > 20 || Math.abs(t.pointer.velocityY) > r)) {
12914 var i = e.prop("offsetHeight") - t.pointer.distanceY,
12915 a = Math.min(i / t.pointer.velocityY * .75, 500);
12916 e.css(n.CSS.TRANSITION_DURATION, a + "ms"), o.nextTick(s.cancel, !0)
12917 } else e.css(n.CSS.TRANSITION_DURATION, ""), e.css(n.CSS.TRANSFORM, "")
12919 var d = l.register(t, "drag", {
12922 return t.on("$md.dragstart", a).on("$md.drag", c).on("$md.dragend", u), {
12924 cleanup: function() {
12925 d(), t.off("$md.dragstart", a), t.off("$md.drag", c), t.off("$md.dragend", u)
12932 onShow: function(r, i, l, h) {
12933 (i = o.extractElementByName(i, "md-bottom-sheet")).attr("tabindex", "-1"), i.hasClass("ng-cloak") && u.warn("$mdBottomSheet: using `<md-bottom-sheet ng-cloak >` will affect the bottom-sheet opening animations.", i[0]);
12934 l.disableBackdrop || ((f = o.createBackdrop(r, "md-bottom-sheet-backdrop md-opaque"))[0].tabIndex = -1, l.clickOutsideToClose && f.on("click", function() {
12935 o.nextTick(s.cancel, !0)
12936 }), a.inherit(f, l.parent), e.enter(f, l.parent, null));
12937 var p = new d(i, l.parent);
12938 return l.bottomSheet = p, a.inherit(p.element, l.parent), l.disableParentScroll && (l.restoreScroll = o.disableScrollAround(p.element, l.parent)), e.enter(p.element, l.parent, f).then(function() {
12939 var e = o.findFocusTarget(i) || t.element(i[0].querySelector("button") || i[0].querySelector("a") || i[0].querySelector(o.prefixer("ng-click", !0))) || f;
12940 l.escapeToClose && (l.rootElementKeyupCallback = function(e) {
12941 e.keyCode === n.KEY_CODE.ESCAPE && o.nextTick(s.cancel, !0)
12942 }, c.on("keyup", l.rootElementKeyupCallback), e && e.focus())
12945 onRemove: function(t, n, r) {
12946 var i = r.bottomSheet;
12947 return r.disableBackdrop || e.leave(f), e.leave(i.element).then(function() {
12948 r.disableParentScroll && (r.restoreScroll(), delete r.restoreScroll), i.cleanup()
12951 disableBackdrop: !1,
12953 clickOutsideToClose: !0,
12954 disableParentScroll: !0
12957 n.$inject = ["$animate", "$mdConstant", "$mdUtil", "$mdTheming", "$mdBottomSheet", "$rootElement", "$mdGesture", "$log"];
12960 return e("$mdBottomSheet").setDefaults({
12961 methods: ["disableParentScroll", "escapeToClose", "clickOutsideToClose"],
12965 e.$inject = ["$mdBottomSheet"], n.$inject = ["$$interimElementProvider"], t.module("material.components.bottomSheet", ["material.core", "material.components.backdrop"]).directive("mdBottomSheet", e).provider("$mdBottomSheet", n)
12971 link: function(t, n) {
12977 function n(e, n, r, i) {
12979 return t.isDefined(e.href) || t.isDefined(e.ngHref) || t.isDefined(e.ngLink) || t.isDefined(e.uiSref)
12985 template: function(e, t) {
12986 return o(t) ? '<a class="md-button" ng-transclude></a>' : '<button class="md-button" type="' + (void 0 === t.type ? "button" : t.type) + '" ng-transclude></button>'
12988 link: function(a, s, c) {
12989 n(s), e.attach(a, s), r.expectWithoutText(s, "aria-label"), o(c) && t.isDefined(c.ngDisabled) && a.$watch(c.ngDisabled, function(e) {
12990 s.attr("tabindex", e ? -1 : 0)
12991 }), s.on("click", function(e) {
12992 !0 === c.disabled && (e.preventDefault(), e.stopImmediatePropagation())
12993 }), s.hasClass("md-no-focus") || (s.on("focus", function() {
12994 i.isUserInvoked() && "keyboard" !== i.getLastInteractionType() || s.addClass("md-focused")
12995 }), s.on("blur", function() {
12996 s.removeClass("md-focused")
13001 n.$inject = ["$mdButtonInkRipple", "$mdTheming", "$mdAria", "$mdInteraction"], e.$inject = ["$mdTheming"], t.module("material.components.button", ["material.core"]).directive("mdButton", n).directive("a", e)
13007 link: function(t, n, r) {
13008 n.addClass("_md"), e(n)
13012 e.$inject = ["$mdTheming"], t.module("material.components.card", ["material.core"]).directive("mdCard", e)
13015 function e(e, n, r, i, o, a) {
13019 require: ["^?mdInputContainer", "?ngModel", "?^form"],
13020 priority: r.BEFORE_NG_ARIA,
13021 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',
13022 compile: function(s, c) {
13023 return c.$set("tabindex", c.tabindex || "0"), c.$set("type", "checkbox"), c.$set("role", c.type), {
13024 pre: function(e, t) {
13025 t.on("click", function(e) {
13026 this.hasAttribute("disabled") && e.stopImmediatePropagation()
13029 post: function(s, c, l, u) {
13031 c[0].hasAttribute("disabled") || s.skipToggle || s.$apply(function() {
13032 var t = l.ngChecked && l.ngClick ? l.checked : !m.$viewValue;
13033 m.$setViewValue(t, e && e.type), m.$render()
13038 (h = !1 !== e) && c.attr("aria-checked", "mixed"), c.toggleClass("md-indeterminate", h)
13041 m = u[1] || o.fakeNgModel(),
13044 var v = p.isErrorGetter || function() {
13045 return m.$invalid && (m.$touched || g && g.$submitted)
13047 p.input = c, s.$watch(v, p.setInvalid)
13049 i(c), c.children().on("focus", function() {
13051 }), o.parseAttributeBoolean(l.mdIndeterminate) && (f(), s.$watch(l.mdIndeterminate, f)), l.ngChecked && s.$watch(s.$eval.bind(s, l.ngChecked), function(e) {
13052 m.$setViewValue(e), m.$render()
13054 function(e, t, n) {
13055 l[e] && s.$watch(l[e], function(e) {
13056 n[e] && c.attr(t, n[e])
13058 }("ngDisabled", "tabindex", {
13061 }), n.expectWithText(c, "aria-label"), e.link.pre(s, {
13064 }, l, [m]), c.on("click", d).on("keypress", function(e) {
13065 var t = e.which || e.keyCode;
13066 t !== r.KEY_CODE.SPACE && t !== r.KEY_CODE.ENTER || (e.preventDefault(), c.addClass("md-focused"), d(e))
13067 }).on("focus", function() {
13068 "keyboard" === a.getLastInteractionType() && c.addClass("md-focused")
13069 }).on("blur", function() {
13070 c.removeClass("md-focused")
13071 }), m.$render = function() {
13072 c.toggleClass("md-checked", !!m.$viewValue && !h)
13079 e.$inject = ["inputDirective", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$mdInteraction"], t.module("material.components.checkbox", ["material.core"]).directive("mdCheckbox", e)
13080 }(), t.module("material.components.chips", ["material.core", "material.components.autocomplete"]),
13082 function e(e, n, r) {
13085 var i = e.PALETTES[t.palette][t.hue];
13086 return i = r ? i.contrast : i.value, n.supplant("rgba({0}, {1}, {2}, {3})", [i[0], i[1], i[2], i[3] || t.opacity])
13091 r = e.hasOwnProperty("color");
13092 return t.forEach(e, function(e, t) {
13094 a = t.indexOf("background") > -1;
13095 n[t] = o(i), a && !r && (n.color = o(i, !0))
13100 var r = n.split("-"),
13101 i = t.isDefined(e.THEMES[r[0]]) ? r.splice(0, 1)[0] : e.defaultTheme();
13111 var o = t.length > 1 && -1 !== i.indexOf(t[1]),
13112 a = t[0].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
13113 if (o && (a = t[0] + "-" + t.splice(1, 1)), -1 === i.indexOf(a)) {
13114 var s = e.THEMES[r].colors[a];
13115 if (!s) throw new Error(n.supplant("mdColors: couldn't find '{palette}' in the palettes.", {
13124 var i = e.THEMES[r].colors;
13125 if ("hue" === t[1]) {
13126 var o = parseInt(t.splice(2, 1)[0], 10);
13127 if (o < 1 || o > 3) throw new Error(n.supplant("mdColors: 'hue-{hueNumber}' is not a valid hue, can be only 'hue-1', 'hue-2' and 'hue-3'", {
13130 if (t[1] = "hue-" + o, !(t[0] in i)) throw new Error(n.supplant("mdColors: 'hue-x' can only be used with [{availableThemes}], but was used with '{usedTheme}'", {
13131 availableThemes: Object.keys(i).join(", "),
13134 return i[t[0]].hues[t[1]]
13136 return t[1] || i[t[0] in i ? t[0] : "primary"].hues.default
13138 return i = i || Object.keys(e.PALETTES), {
13139 applyThemeColors: function(e, t) {
13146 getThemeColor: function(e) {
13149 hasTheme: function(n) {
13150 return t.isDefined(e.THEMES[n.split("-")[0]])
13155 function n(e, n, i, o) {
13158 require: ["^?mdTheme"],
13159 compile: function(a, s) {
13160 var c = function() {
13161 var e = s.mdColors,
13162 i = e.indexOf("::") > -1,
13163 o = !!i || r.test(s.mdColors);
13164 s.mdColors = e.replace("::", "");
13165 var a = t.isDefined(s.mdColorsWatch);
13166 return !i && !o && (!a || n.parseAttributeBoolean(s.mdColorsWatch))
13168 return function(n, r, a, s) {
13172 "string" != typeof t && (t = ""), a.mdColors || (a.mdColors = "{}");
13173 var r = o(a.mdColors)(n);
13174 return l && Object.keys(r).forEach(function(n) {
13176 e.hasTheme(i) || (r[n] = (t || l.$mdTheme) + "-" + i)
13180 if (!t.equals(e, u)) {
13181 var n = Object.keys(u);
13182 u.background && !n.color && n.push("color"), n.forEach(function(e) {
13189 l && (h = l.registerChanges(function(t) {
13190 e.applyThemeColors(r, d(t))
13191 })), n.$on("$destroy", function() {
13195 c ? n.$watch(d, t.bind(this, e.applyThemeColors, r), !0) : e.applyThemeColors(r, d())
13203 n.$inject = ["$mdColors", "$mdUtil", "$log", "$parse"], e.$inject = ["$mdTheming", "$mdUtil", "$log"];
13204 var r = /^{((\s|,)*?["'a-zA-Z-]+?\s*?:\s*?('|")[a-zA-Z0-9-.]*('|"))+\s*}$/,
13206 t.module("material.components.colors", ["material.core"]).directive("mdColors", n).service("$mdColors", e)
13212 controller: ["$scope", "$element", function(e, t) {
13213 this.$scope = e, this.$element = t
13215 link: function(t, r) {
13216 r.addClass("_md"), e(r), t.$broadcast("$mdContentLoaded", r), n(r[0])
13222 t.element(e).on("$md.pressdown", function(t) {
13223 "t" === t.pointer.type && (t.$materialScrollFixed || (t.$materialScrollFixed = !0, 0 === e.scrollTop ? e.scrollTop = 1 : e.scrollHeight === e.scrollTop + e.offsetHeight && (e.scrollTop -= 1)))
13226 e.$inject = ["$mdTheming"], t.module("material.components.content", ["material.core"]).directive("mdContent", e)
13227 }(), t.module("material.components.datepicker", ["material.core", "material.components.icon", "material.components.virtualRepeat"]),
13229 function e(e, n, r) {
13232 link: function(i, o) {
13233 o.addClass("_md"), n(o), e(function() {
13235 o.toggleClass("md-content-overflow", a.scrollHeight > a.clientHeight)
13237 var n, a = o[0].querySelector("md-dialog-content");
13238 a && (n = a.getElementsByTagName("img"), e(), t.element(n).on("load", e)), i.$on("$destroy", function() {
13249 template: ['<md-dialog md-theme="{{ dialog.theme || dialog.defaultTheme }}" aria-label="{{ dialog.ariaLabel }}" ng-class="dialog.css">', ' <md-dialog-content class="md-dialog-content" role="document" tabIndex="-1">', ' <h2 class="md-title">{{ dialog.title }}</h2>', ' <div ng-if="::dialog.mdHtmlContent" class="md-dialog-content-body" ', ' ng-bind-html="::dialog.mdHtmlContent"></div>', ' <div ng-if="::!dialog.mdHtmlContent" class="md-dialog-content-body">', " <p>{{::dialog.mdTextContent}}</p>", " </div>", ' <md-input-container md-no-float ng-if="::dialog.$type == \'prompt\'" class="md-prompt-input-container">', ' <input ng-keypress="dialog.keypress($event)" md-autofocus ng-model="dialog.result" placeholder="{{::dialog.placeholder}}">', " </md-input-container>", " </md-dialog-content>", " <md-dialog-actions>", ' <md-button ng-if="dialog.$type === \'confirm\' || dialog.$type === \'prompt\'" ng-click="dialog.abort()" class="md-primary md-cancel-button">', " {{ dialog.cancel }}", " </md-button>", ' <md-button ng-click="dialog.hide()" class="md-primary md-confirm-button" md-autofocus="dialog.$type===\'alert\'">', " {{ dialog.ok }}", " </md-button>", " </md-dialog-actions>", "</md-dialog>"].join("").replace(/\s\s+/g, ""),
13250 controller: function() {
13251 var n = "prompt" == this.$type;
13252 n && this.initialValue && (this.result = this.initialValue), this.hide = function() {
13253 e.hide(!n || this.result)
13254 }, this.abort = function() {
13256 }, this.keypress = function(n) {
13257 n.keyCode === t.KEY_CODE.ENTER && e.hide(this.result)
13260 controllerAs: "dialog",
13261 bindToController: !0
13265 function i(e, r, i, s, c, l, u, d, f, h, p, m, g) {
13268 e.targetEvent && e.targetEvent.target && (n = t.element(e.targetEvent.target));
13269 var r = n && n.controller("mdTheme");
13271 e.themeWatch = r.$shouldWatch;
13272 var i = e.theme || r.$mdTheme;
13273 i && (e.scope.theme = i);
13274 var o = r.registerChanges(function(t) {
13275 e.scope.theme = t, e.themeWatch || o()
13282 var i = t.element(e || {});
13283 if (i && i.length) {
13290 a = t.isFunction(i[0].getBoundingClientRect);
13291 return t.extend(r || {}, {
13292 element: a ? i : n,
13293 bounds: a ? i[0].getBoundingClientRect() : t.extend({}, o, i[0]),
13294 focus: t.bind(i, i.focus)
13300 return t.isString(e) && (e = l[0].querySelector(e)), t.element(e || n)
13302 e.origin = t.extend({
13306 }, e.origin || {}), e.parent = i(e.parent, d), e.closeTo = r(i(e.closeTo)), e.openFrom = r(i(e.openFrom)), e.targetEvent && (e.origin = r(e.targetEvent.target, e.origin), e.originInteraction = g.getLastInteractionType())
13310 var o = t.element(u),
13311 a = i.debounce(function() {
13316 var t = "alert" == r.$type ? e.hide : e.cancel;
13319 if (r.escapeToClose) {
13322 e.keyCode === s.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), l())
13324 n.on("keydown", f), d.on("keydown", f), c.push(function() {
13325 n.off("keydown", f), d.off("keydown", f)
13328 if (o.on("resize", a), c.push(function() {
13330 }), r.clickOutsideToClose) {
13336 h === p[0] && e.target === p[0] && (e.stopPropagation(), e.preventDefault(), l())
13338 p.on("mousedown", m), p.on("mouseup", g), c.push(function() {
13339 p.off("mousedown", m), p.off("mouseup", g)
13342 r.deactivateListeners = function() {
13343 c.forEach(function(e) {
13345 }), r.deactivateListeners = null
13349 function $(e, t, n) {
13350 n.disableParentScroll && (n.restoreScroll = i.disableScrollAround(t, n.parent)), n.hasBackdrop && (n.backdrop = i.createBackdrop(e, "md-dialog-backdrop md-opaque"), c.enter(n.backdrop, n.parent)), n.hideBackdrop = function(e) {
13351 n.backdrop && (e ? n.backdrop.remove() : c.leave(n.backdrop)), n.disableParentScroll && (n.restoreScroll && n.restoreScroll(), delete n.restoreScroll), n.hideBackdrop = null
13356 var n = "alert" === t.$type ? "alertdialog" : "dialog",
13357 s = e.find("md-dialog-content"),
13359 l = "dialogContent_" + (c || i.nextUid());
13363 }), 0 === s.length && (s = e, c && (l = c)), s.attr("id", l), e.attr("aria-describedby", l), t.ariaLabel ? r.expect(e, "aria-label", t.ariaLabel) : r.expectAsync(e, "aria-label", function() {
13364 var e = s.text().split(/\s+/);
13365 return e.length > 3 && (e = e.slice(0, 3).concat("...")), e.join(" ")
13366 }), (o = document.createElement("div")).classList.add("md-dialog-focus-trap"), o.tabIndex = 0, a = o.cloneNode(!1);
13367 var u = function() {
13370 o.addEventListener("focus", u), a.addEventListener("focus", u), e[0].parentNode.insertBefore(o, e[0]), e.after(a)
13375 for (; e.parentNode;) {
13376 if (e === document.body) return;
13377 for (var t = e.parentNode.children, i = 0; i < t.length; i++) e === t[i] || k(t[i], ["SCRIPT", "STYLE"]) || t[i].setAttribute("aria-hidden", r);
13378 n(e = e.parentNode)
13382 n(e[0]), t.unlockScreenReader = function() {
13383 r = !1, n(e[0]), t.unlockScreenReader = null
13388 var n = "fixed" == u.getComputedStyle(l[0].body).position,
13389 r = t.backdrop ? u.getComputedStyle(t.backdrop[0]) : null,
13390 i = r ? Math.min(l[0].body.clientHeight, Math.ceil(Math.abs(parseInt(r.height, 10)))) : 0,
13393 height: e.css("height")
13395 a = Math.abs(t.parent[0].getBoundingClientRect().top);
13397 top: (n ? a : 0) + "px",
13398 height: i ? i + "px" : "100%"
13406 t.parent.append(e), t.reverseContainerStretch = E(e, t);
13407 var n = e.find("md-dialog"),
13408 r = i.dom.animator,
13409 o = r.calculateZoomToOrigin,
13411 transitionInClass: "md-transition-in",
13412 transitionOutClass: "md-transition-out"
13414 s = r.toTransformCss(o(n, t.openFrom || t.origin)),
13415 c = r.toTransformCss("");
13416 return n.toggleClass("md-dialog-fullscreen", !!t.fullscreen), r.translate3d(n, s, c, a).then(function(e) {
13417 return t.reverseAnimate = function() {
13418 return delete t.reverseAnimate, t.closeTo ? (a = {
13419 transitionInClass: "md-transition-out",
13420 transitionOutClass: "md-transition-in"
13421 }, s = c, c = r.toTransformCss(o(n, t.closeTo)), r.translate3d(n, s, c, a)) : e(c = r.toTransformCss(o(n, t.origin)))
13422 }, t.clearAnimate = function() {
13423 return delete t.clearAnimate, n.removeClass([a.transitionOutClass, a.transitionInClass].join(" ")), r.translate3d(n, c, r.toTransformCss(""), {})
13429 return t.reverseAnimate().then(function() {
13430 t.contentElement && t.clearAnimate()
13435 if (-1 !== t.indexOf(e.nodeName)) return !0
13440 onCompiling: function(e) {
13441 e.defaultTheme = p.defaultTheme(), v(e)
13443 onShow: function(e, n, r, o) {
13445 n[0].querySelector(".md-actions") && f.warn("Using a class of md-actions is deprecated, please use <md-dialog-actions>.")
13449 r.focusOnOpen && (i.findFocusTarget(n) || n[0].querySelector(".dialog-close, md-dialog-actions button:last-child") || c).focus()
13451 t.element(l[0].body).addClass("md-dialog-is-showing");
13452 var c = n.find("md-dialog");
13453 c.hasClass("ng-cloak") && f.warn("$mdDialog: using `<md-dialog ng-cloak>` will affect the dialog opening animations.", n[0]);
13454 return b(r), _(c, r), $(e, n, r), y(n, r), C(n, r).then(function() {
13458 onShowing: function(e, t, n, r) {
13460 var i = r.htmlContent || n.htmlContent || "",
13461 o = r.textContent || n.textContent || r.content || n.content || "";
13462 if (i && !h.has("$sanitize")) throw Error("The ngSanitize module must be loaded in order to use htmlContent.");
13463 if (i && o) throw Error("md-dialog cannot have both `htmlContent` and `textContent`");
13464 r.mdHtmlContent = i, r.mdTextContent = o
13467 onRemove: function(e, n, r) {
13469 t.element(l[0].body).removeClass("md-dialog-is-showing"), r.contentElement && r.reverseContainerStretch(), r.cleanupElement(), r.$destroy || "keyboard" !== r.originInteraction || r.origin.focus()
13471 return r.deactivateListeners(), r.unlockScreenReader(), r.hideBackdrop(r.$destroy), o && o.parentNode && o.parentNode.removeChild(o), a && a.parentNode && a.parentNode.removeChild(a), r.$destroy ? i() : x(0, r).then(i)
13473 clickOutsideToClose: !1,
13479 disableParentScroll: !0,
13482 transformTemplate: function(e, t) {
13483 var n = m.startSymbol(),
13485 return '<div class="md-dialog-container" tabindex="-1" md-theme="' + (n + (t.themeWatch ? "" : "::") + "theme" + r) + '">' + function(e) {
13486 return t.autoWrap && !/<\/md-dialog>/g.test(e) ? "<md-dialog>" + (e || "") + "</md-dialog>" : e || ""
13491 r.$inject = ["$mdDialog", "$mdConstant"], i.$inject = ["$mdDialog", "$mdAria", "$mdUtil", "$mdConstant", "$animate", "$document", "$window", "$rootElement", "$log", "$injector", "$mdTheming", "$interpolate", "$mdInteraction"];
13493 return e("$mdDialog").setDefaults({
13494 methods: ["disableParentScroll", "hasBackdrop", "clickOutsideToClose", "escapeToClose", "targetEvent", "closeTo", "openFrom", "parent", "fullscreen", "multiple"],
13496 }).addPreset("alert", {
13497 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "theme", "css"],
13499 }).addPreset("confirm", {
13500 methods: ["title", "htmlContent", "textContent", "content", "ariaLabel", "ok", "cancel", "theme", "css"],
13502 }).addPreset("prompt", {
13503 methods: ["title", "htmlContent", "textContent", "initialValue", "content", "placeholder", "ariaLabel", "ok", "cancel", "theme", "css"],
13507 e.$inject = ["$$rAF", "$mdTheming", "$mdDialog"], r.$inject = ["$$interimElementProvider"], t.module("material.components.dialog", ["material.core", "material.components.backdrop"]).directive("mdDialog", e).provider("$mdDialog", r)
13516 e.$inject = ["$mdTheming"], t.module("material.components.divider", ["material.core"]).directive("mdDivider", e)
13522 require: ["^?mdFabSpeedDial", "^?mdFabToolbar"],
13523 compile: function(t, n) {
13524 var r = t.children();
13525 e.prefixer().hasAttribute(r, "ng-repeat") ? r.addClass("md-fab-action-item") : r.wrap('<div class="md-fab-action-item">')
13529 e.$inject = ["$mdUtil"], t.module("material.components.fabActions", ["material.core"]).directive("mdFabActions", e)
13532 function e(e, n, r, i, o, a) {
13534 A.direction = A.direction || "down", A.isOpen = A.isOpen || !1, u(), n.addClass("md-animations-waiting")
13538 var r = ["click", "focusin", "focusout"];
13539 t.forEach(r, function(e) {
13541 }), e.$on("$destroy", function() {
13542 t.forEach(r, function(e) {
13549 "click" == e.type && T(e), "focusout" != e.type || D || (D = a(function() {
13551 }, 100, !1)), "focusin" == e.type && D && (a.cancel(D), D = null)
13555 A.currentActionIndex = -1
13559 e.$watch("vm.direction", function(e, t) {
13560 r.removeClass(n, "md-" + t), r.addClass(n, "md-" + e), u()
13563 e.$watch("vm.isOpen", function(e) {
13564 u(), t && i || (t = M(), i = S()), e ? h() : p();
13565 var o = e ? "md-is-open" : "",
13566 a = e ? "" : "md-is-open";
13567 t.attr("aria-haspopup", !0), t.attr("aria-expanded", e), i.attr("aria-hidden", !e), r.setClass(n, o, a)
13572 n[0].scrollHeight > 0 ? r.addClass(n, "_md-animations-ready").then(function() {
13573 n.removeClass("md-animations-waiting")
13574 }) : O < 10 && (a(f, 100), O += 1)
13578 n.on("keydown", g), i.nextTick(function() {
13579 t.element(document).on("click touchend", m)
13584 n.off("keydown", g), t.element(document).off("click touchend", m)
13589 var t = i.getClosest(e.target, "md-fab-trigger"),
13590 n = i.getClosest(e.target, "md-fab-actions");
13591 t || n || A.close()
13597 case o.KEY_CODE.ESCAPE:
13598 return A.close(), e.preventDefault(), !1;
13599 case o.KEY_CODE.LEFT_ARROW:
13601 case o.KEY_CODE.UP_ARROW:
13603 case o.KEY_CODE.RIGHT_ARROW:
13605 case o.KEY_CODE.DOWN_ARROW:
13620 A.currentActionIndex = A.currentActionIndex + n, A.currentActionIndex = Math.min(r.length - 1, A.currentActionIndex), A.currentActionIndex = Math.max(0, A.currentActionIndex);
13621 var i = t.element(r[A.currentActionIndex]).children()[0];
13622 t.element(i).attr("tabindex", 0), i.focus(), e.preventDefault(), e.stopImmediatePropagation()
13626 var e = S()[0].querySelectorAll(".md-fab-action-item");
13627 return t.forEach(e, function(e) {
13628 t.element(t.element(e).children()[0]).attr("tabindex", -1)
13633 "left" === A.direction ? b(e) : v(e)
13637 "down" === A.direction ? v(e) : b(e)
13641 "left" === A.direction ? v(e) : b(e)
13645 "up" === A.direction ? v(e) : b(e)
13649 return i.getClosest(e, "md-fab-trigger")
13653 return i.getClosest(e, "md-fab-actions")
13657 x(e.target) && A.toggle(), k(e.target) && A.close()
13661 return n.find("md-fab-trigger")
13665 return n.find("md-fab-actions")
13669 A.open = function() {
13670 e.$evalAsync("vm.isOpen = true")
13671 }, A.close = function() {
13672 e.$evalAsync("vm.isOpen = false"), n.find("md-fab-trigger")[0].focus()
13673 }, A.toggle = function() {
13674 e.$evalAsync("vm.isOpen = !vm.isOpen")
13675 }, A.$onInit = function() {
13677 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit();
13680 e.$inject = ["$scope", "$element", "$animate", "$mdUtil", "$mdConstant", "$timeout"], t.module("material.components.fabShared", ["material.core"]).controller("MdFabController", e)
13689 if (!n.hasClass("md-animations-waiting") || n.hasClass("_md-animations-ready")) {
13691 i = n.controller("mdFabSpeedDial"),
13692 o = r.querySelectorAll(".md-fab-action-item"),
13693 a = r.querySelector("md-fab-trigger"),
13694 s = r.querySelector("._md-css-variables"),
13695 c = parseInt(e.getComputedStyle(s).zIndex);
13696 t.forEach(o, function(e, t) {
13698 n.transform = n.webkitTransform = "", n.transitionDelay = "", n.opacity = 1, n.zIndex = o.length - t + c
13699 }), a.style.zIndex = c + o.length + 1, i.isOpen || t.forEach(o, function(e, t) {
13700 var n, r, o = e.style,
13701 s = (a.clientHeight - e.clientHeight) / 2,
13702 c = (a.clientWidth - e.clientWidth) / 2;
13703 switch (i.direction) {
13705 n = e.scrollHeight * (t + 1) + s, r = "Y";
13708 n = -(e.scrollHeight * (t + 1) + s), r = "Y";
13711 n = e.scrollWidth * (t + 1) + c, r = "X";
13714 n = -(e.scrollWidth * (t + 1) + c), r = "X"
13716 var l = "translate" + r + "(" + n + "px)";
13717 o.transform = o.webkitTransform = l
13722 addClass: function(e, t, n) {
13723 e.hasClass("md-fling") ? (o(e), r(n)) : n()
13725 removeClass: function(e, t, n) {
13738 i = n.controller("mdFabSpeedDial"),
13739 o = r.querySelectorAll(".md-fab-action-item"),
13740 s = r.querySelector("._md-css-variables"),
13741 c = parseInt(e.getComputedStyle(s).zIndex);
13742 t.forEach(o, function(e, t) {
13745 n.opacity = i.isOpen ? 1 : 0, n.transform = n.webkitTransform = i.isOpen ? "scale(1)" : "scale(0)", n.transitionDelay = (i.isOpen ? r : o.length - r) + "ms", n.zIndex = o.length - t + c
13750 addClass: function(e, t, n) {
13753 removeClass: function(e, t, n) {
13758 n.$inject = ["$timeout"], r.$inject = ["$timeout"];
13760 t.module("material.components.fabSpeedDial", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabSpeedDial", function() {
13764 direction: "@?mdDirection",
13767 bindToController: !0,
13768 controller: "MdFabController",
13769 controllerAs: "vm",
13770 link: function(e, t) {
13771 t.prepend('<div class="_md-css-variables"></div>')
13774 }).animation(".md-fling", n).animation(".md-scale", r).service("mdFabSpeedDialFlingAnimation", n).service("mdFabSpeedDialScaleAnimation", r)
13778 function n(n, r, i) {
13781 a = n.controller("mdFabToolbar"),
13782 s = o.querySelector(".md-fab-toolbar-background"),
13783 c = o.querySelector("md-fab-trigger button"),
13784 l = o.querySelector("md-toolbar"),
13785 u = o.querySelector("md-fab-trigger button md-icon"),
13786 d = n.find("md-fab-actions").children();
13788 var f = e.getComputedStyle(c).getPropertyValue("background-color"),
13790 p = (o.offsetHeight, h / c.offsetWidth * 2);
13791 s.style.backgroundColor = f, s.style.borderRadius = h + "px", a.isOpen ? (l.style.pointerEvents = "inherit", s.style.width = c.offsetWidth + "px", s.style.height = c.offsetHeight + "px", s.style.transform = "scale(" + p + ")", s.style.transitionDelay = "0ms", u && (u.style.transitionDelay = ".3s"), t.forEach(d, function(e, t) {
13792 e.style.transitionDelay = 25 * (d.length - t) + "ms"
13793 })) : (l.style.pointerEvents = "none", s.style.transform = "scale(1)", s.style.top = "0", n.hasClass("md-right") && (s.style.left = "0", s.style.right = null), n.hasClass("md-left") && (s.style.right = "0", s.style.left = null), s.style.transitionDelay = "200ms", u && (u.style.transitionDelay = "0ms"), t.forEach(d, function(e, t) {
13794 e.style.transitionDelay = 200 + 25 * t + "ms"
13800 addClass: function(e, t, r) {
13803 removeClass: function(e, t, r) {
13808 t.module("material.components.fabToolbar", ["material.core", "material.components.fabShared", "material.components.fabActions"]).directive("mdFabToolbar", function() {
13812 template: '<div class="md-fab-toolbar-wrapper"> <div class="md-fab-toolbar-content" ng-transclude></div></div>',
13814 direction: "@?mdDirection",
13817 bindToController: !0,
13818 controller: "MdFabController",
13819 controllerAs: "vm",
13820 link: function(e, t, n) {
13821 t.addClass("md-fab-toolbar"), t.find("md-fab-trigger").find("button").prepend('<div class="md-fab-toolbar-background"></div>')
13824 }).animation(".md-fab-toolbar", n).service("mdFabToolbarAnimation", n)
13827 function e(e, r, i, o) {
13834 link: function(n, a, s, c) {
13836 null == e ? c.invalidateLayout() : o(e) && c.invalidateLayout()
13843 function d(e, t, n, r, i, o, a) {
13844 var s = 1 / n * 100,
13851 u = "rtl" != document.dir && "rtl" != document.body.dir ? {
13899 }), u.paddingTop = T({
13903 }), u.marginTop = k({
13910 var d = 1 / r * 100,
13913 gutterShare: (r - 1) / r,
13929 function f(e, t, n, r, i) {
13937 }), o.paddingBottom = "";
13941 share: 1 / e * 100 * (1 / i),
13942 gutterShare: 1 === e ? 0 : (e - 1) / e,
13945 o.height = "", o.paddingBottom = T({
13955 return [].filter.call(a.children(), function(e) {
13956 return "MD-GRID-TILE" == e.tagName && !e.$$mdDestroyed
13961 return [].map.call(e, function(e) {
13962 var n = t.element(e).controller("mdGridTile");
13964 row: parseInt(o.getResponsiveAttribute(n.$attrs, "md-rowspan"), 10) || 1,
13965 col: parseInt(o.getResponsiveAttribute(n.$attrs, "md-colspan"), 10) || 1
13971 var e = parseInt(o.getResponsiveAttribute(s, "md-cols"), 10);
13972 if (isNaN(e)) throw "md-grid-list: md-cols attribute was not found, or contained a non-numeric value";
13977 return y(o.getResponsiveAttribute(s, "md-gutter") || 1)
13981 var e = o.getResponsiveAttribute(s, "md-row-height");
13982 if (!e) throw "md-grid-list: md-row-height attribute was not found";
13987 var t = e.split(":");
13988 return parseFloat(t[0]) / parseFloat(t[1]);
13995 var e = o.getResponsiveAttribute(s, "md-row-height");
13996 if (!e) throw "md-grid-list: md-row-height attribute was not found";
13997 return "fit" == e ? "fit" : -1 !== e.indexOf(":") ? "ratio" : "fixed"
14001 return /\D$/.test(e) ? e : e + "px"
14003 a.addClass("_md"), a.attr("role", "list"), c.layoutDelegate = function(e) {
14012 if (e || !t.equals(o, w)) {
14013 var s = i(o.colCount, o.tileSpans, r).map(function(e, n) {
14017 style: f(o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
14019 tiles: e.map(function(e, i) {
14021 element: t.element(r[i]),
14022 style: d(e.position, e.spans, o.colCount, n, o.gutter, o.rowMode, o.rowHeight)
14026 }).reflow().performance();
14034 var $ = t.bind(c, c.invalidateLayout),
14036 for (var e in r.MEDIA) o(e), o.getQuery(r.MEDIA[e]).addListener($);
14037 return o.watchResponsiveAttributes(["md-cols", "md-row-height", "md-gutter"], s, l)
14039 n.$on("$destroy", function() {
14040 c.layoutDelegate = t.noop, _();
14041 for (var e in r.MEDIA) o.getQuery(r.MEDIA[e]).removeListener($)
14043 var w, E = e.startSymbol(),
14045 x = e(u("share") + "% - (" + u("gutter") + " * " + u("gutterShare") + ")"),
14046 k = e("calc((" + u("unit") + " + " + u("gutter") + ") * " + u("offset") + ")"),
14047 T = e("calc((" + u("unit") + ") * " + u("span") + " + (" + u("span") + " - 1) * " + u("gutter") + ")")
14053 this.layoutInvalidated = !1, this.tilesInvalidated = !1, this.$timeout_ = e.nextTick, this.layoutDelegate = t.noop
14058 var r, a, s, c, l, u;
14059 return c = e.time(function() {
14062 layoutInfo: function() {
14066 return l = e.time(function() {
14067 var e = r.layoutInfo();
14068 s = t(e.positioning, e.rowCount)
14071 reflow: function(t) {
14072 return u = e.time(function() {
14073 (t || o)(s.grid, s.tiles)
14076 performance: function() {
14078 tileCount: n.length,
14082 totalTime: c + l + u
14089 e.element.css(e.style), t.forEach(function(e) {
14090 e.element.css(e.style)
14096 if (t.col > e) throw "md-grid-list: Tile at position " + n + " has a colspan (" + t.col + ") that exceeds the column count (" + e + ")";
14097 for (var l = 0, u = 0; u - l < t.col;) a >= e ? r() : -1 !== (l = c.indexOf(0, a)) && -1 !== (u = o(l + 1)) ? a = u + 1 : (l = u = 0, r());
14098 return i(l, t.col, t.row), a = l + t.col, {
14105 a = 0, s++, i(0, e, -1)
14108 function i(e, t, n) {
14109 for (var r = e; r < e + t; r++) c[r] = Math.max(c[r] + n, 0)
14114 for (t = e; t < c.length; t++)
14115 if (0 !== c[t]) return t;
14116 if (t === c.length) return t
14121 for (var t = [], n = 0; n < e; n++) t.push(0);
14125 positioning: t.map(function(e, t) {
14131 rowCount: s + Math.max.apply(Math, c)
14135 return n.animateWith = function(e) {
14136 o = t.isFunction(e) ? e : r
14143 require: "^mdGridList",
14144 template: "<figure ng-transclude></figure>",
14147 controller: ["$attrs", function(e) {
14150 link: function(n, r, i, o) {
14151 r.attr("role", "listitem");
14152 var a = e.watchResponsiveAttributes(["md-colspan", "md-rowspan"], i, t.bind(o, o.invalidateLayout));
14153 o.invalidateTiles(), n.$on("$destroy", function() {
14154 r[0].$$mdDestroyed = !0, a(), o.invalidateLayout()
14155 }), t.isDefined(n.$parent.$index) && n.$watch(function() {
14156 return n.$parent.$index
14157 }, function(e, t) {
14158 e !== t && o.invalidateTiles()
14166 template: "<figcaption ng-transclude></figcaption>",
14170 n.$inject = ["$mdUtil"], r.$inject = ["$mdUtil"], e.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$mdMedia"], i.$inject = ["$mdMedia"], t.module("material.components.gridList", ["material.core"]).directive("mdGridList", e).directive("mdGridTile", i).directive("mdGridTileFooter", o).directive("mdGridTileHeader", o).factory("$mdGridLayout", r), n.prototype = {
14171 invalidateTiles: function() {
14172 this.tilesInvalidated = !0, this.invalidateLayout()
14174 invalidateLayout: function() {
14175 this.layoutInvalidated || (this.layoutInvalidated = !0, this.$timeout_(t.bind(this, this.layout)))
14177 layout: function() {
14179 this.layoutDelegate(this.tilesInvalidated)
14181 this.layoutInvalidated = !1, this.tilesInvalidated = !1
14185 }(), t.module("material.components.icon", ["material.core"]),
14188 function n(e, n, r, i) {
14190 o.isErrorGetter = r.mdIsError && t(r.mdIsError), o.delegateClick = function() {
14192 }, o.element = n, o.setFocused = function(e) {
14193 n.toggleClass("md-input-focused", !!e)
14194 }, o.setHasValue = function(e) {
14195 n.toggleClass("md-input-has-value", !!e)
14196 }, o.setHasPlaceholder = function(e) {
14197 n.toggleClass("md-input-has-placeholder", !!e)
14198 }, o.setInvalid = function(e) {
14199 e ? i.addClass(n, "md-input-invalid") : i.removeClass(n, "md-input-invalid")
14200 }, e.$watch(function() {
14201 return o.label && o.input
14203 e && !o.label.attr("for") && o.label.attr("for", o.input.attr("id"))
14206 n.$inject = ["$scope", "$element", "$attrs", "$animate"];
14207 var r = ["INPUT", "TEXTAREA", "SELECT", "MD-SELECT"],
14208 i = r.reduce(function(e, t) {
14209 return e.concat(["md-icon ~ " + t, ".md-icon ~ " + t])
14211 o = r.reduce(function(e, t) {
14212 return e.concat([t + " ~ md-icon", t + " ~ .md-icon"])
14216 compile: function(t) {
14217 var n = t[0].querySelector(i),
14218 r = t[0].querySelector(o);
14219 return n && t.addClass("md-icon-left"), r && t.addClass("md-icon-right"),
14228 function r(e, n, r, i, o) {
14231 require: ["^?mdInputContainer", "?ngModel", "?^form"],
14232 link: function(a, s, c, l) {
14234 return f.setHasValue(!p.$isEmpty(e)), e
14238 f.setHasValue(s.val().length > 0 || (s[0].validity || {}).badInput)
14242 p = l[1] || e.fakeNgModel(),
14244 g = t.isDefined(c.readonly),
14245 v = e.parseAttributeBoolean(c.mdNoAsterisk),
14246 b = s[0].tagName.toLowerCase();
14248 if ("hidden" !== c.type) {
14250 if (f.input[0].contains(s[0])) return;
14251 throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!")
14253 f.input = s, f.label && c.$observe("required", function(e) {
14254 f.label.toggleClass("md-required", e && !v)
14256 var y = t.element('<div class="md-errors-spacer">');
14257 s.after(y), f.label || r.expect(s, "aria-label", c.placeholder), s.addClass("md-input"), s.attr("id") || s.attr("id", "input_" + e.nextUid()), "input" === b && "number" === c.type && c.min && c.max && !c.step ? s.attr("step", "any") : "textarea" === b && function() {
14259 s.attr("rows", 1).css("height", "auto").addClass("md-no-flex");
14262 var t = s[0].style.padding || "";
14263 y = s.css("padding", 0).prop("offsetHeight"), s[0].style.padding = t
14265 if (g && y && (e = Math.max(e, y * g)), v && y) {
14267 n < e ? (s.attr("md-no-autogrow", ""), e = n) : s.removeAttr("md-no-autogrow")
14269 y && s.attr("rows", Math.round(e / y)), s.css("height", e + "px").removeClass("md-no-flex")
14273 var e = $.offsetHeight,
14274 t = $.scrollHeight - e;
14275 return e + Math.max(t, 0)
14279 return e.nextTick(r), t
14283 if (m && (m = !1, t.element(n).off("resize", r), b && b(), s.attr("md-no-autogrow", "").off("input", r), h)) {
14284 var e = p.$formatters.indexOf(u);
14285 e > -1 && p.$formatters.splice(e, 1)
14288 var m = !c.hasOwnProperty("mdNoAutogrow");
14291 e.preventDefault(), u = !0, h = e.clientY, p = parseFloat(s.css("height")) || s.prop("offsetHeight")
14295 u && (e.preventDefault(), d(), m.addClass("md-input-resized"))
14299 u && s.css("height", p + e.pointer.distanceY + "px")
14303 u && (u = !1, m.removeClass("md-input-resized"))
14305 if (!c.hasOwnProperty("mdNoResize")) {
14306 var l = t.element('<div class="md-resize-handle"></div>'),
14311 g = o.register(l, "drag", {
14314 s.wrap('<div class="md-resize-wrapper">').after(l), l.on("mousedown", e), m.on("$md.dragstart", n).on("$md.drag", r).on("$md.dragend", i), a.$on("$destroy", function() {
14315 l.off("mousedown", e).remove(), m.off("$md.dragstart", n).off("$md.drag", r).off("$md.dragend", i), g(), l = null, m = null, g = null
14319 var g = c.hasOwnProperty("rows") ? parseInt(c.rows) : NaN,
14320 v = c.hasOwnProperty("maxRows") ? parseInt(c.maxRows) : NaN,
14321 b = a.$on("md-resize-textarea", r),
14326 }, 10, !1), s.on("input", r), h && p.$formatters.push(u), g || s.attr("rows", 1), t.element(n).on("resize", r), a.$on("$destroy", d), c.hasOwnProperty("mdDetectHidden")) {
14327 var _ = function() {
14329 return function() {
14330 var t = 0 === $.offsetHeight;
14331 !1 === t && !0 === e && r(), e = t
14334 a.$watch(function() {
14335 return e.nextTick(_, !1), !0
14340 var $ = f.isErrorGetter || function() {
14341 return p.$invalid && (p.$touched || m && m.$submitted)
14343 a.$watch($, f.setInvalid), c.ngValue && c.$observe("value", d), p.$parsers.push(u), p.$formatters.push(u), s.on("input", d), g || s.on("focus", function(t) {
14344 e.nextTick(function() {
14347 }).on("blur", function(t) {
14348 e.nextTick(function() {
14349 f.setFocused(!1), d()
14351 }), a.$on("$destroy", function() {
14352 f.setFocused(!1), f.setHasValue(!1), f.input = null
14354 } else s.attr("aria-hidden", "true")
14362 require: ["ngModel", "^mdInputContainer"],
14363 link: function(r, i, o, a) {
14365 return l.parent ? (l.text(String(i.val() || e || "").length + " / " + c), e) : e
14367 var c, l, u, d = a[0],
14369 n.nextTick(function() {
14370 u = t.element(f.element[0].querySelector(".md-errors-spacer")), l = t.element('<div class="md-char-counter">'), u.append(l), o.$set("ngTrim", "false"), r.$watch(o.mdMaxlength, function(n) {
14371 c = n, t.isNumber(n) && n > 0 ? (l.parent().length || e.enter(l, u), s()) : e.leave(l)
14372 }), d.$validators["md-maxlength"] = function(e, n) {
14373 return !t.isNumber(c) || c < 0 || (s(), (e || i.val() || n || "").length <= c)
14383 require: "^^?mdInputContainer",
14386 pre: function(n, r, i, o) {
14388 var a = o.element.find("label"),
14389 s = o.element.attr("md-no-float");
14390 if (a && a.length || "" === s || n.$eval(s)) o.setHasPlaceholder(!0);
14391 else if ("MD-SELECT" != r[0].nodeName) {
14392 var c = t.element('<label ng-click="delegateClick()" tabindex="-1">' + i.placeholder + "</label>");
14393 i.$set("placeholder", null), o.element.addClass("md-icon-float").prepend(c), e(c)(n)
14404 link: function(t, n, r) {
14406 a = !0, e(function() {
14407 n[0].select(), a = !1
14412 a && e.preventDefault()
14414 if ("INPUT" === n[0].nodeName || "TEXTAREA" === n[0].nodeName) {
14416 n.on("focus", i).on("mouseup", o), t.$on("$destroy", function() {
14417 n.off("focus", i).off("mouseup", o)
14427 compile: function(t) {
14429 return !!e.getClosest(t, "md-input-container")
14433 e.toggleClass("md-input-message-animation", !0)
14436 else if (function() {
14437 for (var e = t[0]; e = e.parentNode;)
14438 if (e.nodeType === Node.DOCUMENT_FRAGMENT_NODE) return !0;
14440 }()) return function(e, i) {
14448 function c(e, t, n, r) {
14449 return v(e, t, n, r), {
14450 addClass: function(e, t, n) {
14456 function l(e, t, n, r) {
14457 return v(e, t, n, r), {
14458 enter: function(e, t) {
14461 leave: function(e, t) {
14464 addClass: function(e, t, n) {
14465 "ng-hide" == t ? f(e, n) : n()
14467 removeClass: function(e, t, n) {
14468 "ng-hide" == t ? d(e, n) : n()
14473 function u(e, t, n, r) {
14474 return v(e, t, n, r), {
14475 enter: function(e, t) {
14476 h(e).start().done(t)
14478 leave: function(e, t) {
14479 p(e).start().done(t)
14488 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages show animation called on invalid messages element: ", e), void n();
14489 t.forEach(a, function(e) {
14490 r = h(t.element(e)), i.push(r.start())
14498 if (0 == o.length || 0 == a.length) return w.warn("mdInput messages hide animation called on invalid messages element: ", e), void n();
14499 t.forEach(a, function(e) {
14500 r = p(t.element(e)), i.push(r.start())
14505 var n = parseInt(e.getComputedStyle(t[0]).height),
14506 r = parseInt(e.getComputedStyle(t[0]).marginTop),
14509 return r > -n || i.hasClass("md-auto-hide") && !o.hasClass("md-input-invalid") ? $(t, {}) : $(t, {
14514 "margin-top": -n + "px"
14525 var n = t[0].offsetHeight,
14526 r = e.getComputedStyle(t[0]);
14527 return 0 === parseInt(r.opacity) ? $(t, {}) : $(t, {
14536 "margin-top": -n + "px"
14543 return e.controller("mdInputContainer").element
14547 return e.hasClass("md-input-messages-animation") ? e : e.hasClass("md-input-message-animation") ? t.element(_.getClosest(e, function(e) {
14548 return e.classList.contains("md-input-messages-animation")
14549 })) : t.element(e[0].querySelector(".md-input-messages-animation"))
14552 function v(e, t, n, r) {
14553 y = e, $ = t, _ = n, w = r
14555 n.$inject = ["$mdTheming", "$parse"], r.$inject = ["$mdUtil", "$window", "$mdAria", "$timeout", "$mdGesture"], i.$inject = ["$animate", "$mdUtil"], o.$inject = ["$compile"], s.$inject = ["$mdUtil"], a.$inject = ["$timeout"], c.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], l.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"], u.$inject = ["$$AnimateRunner", "$animateCss", "$mdUtil", "$log"];
14556 var b = t.module("material.components.input", ["material.core"]).directive("mdInputContainer", n).directive("label", function() {
14559 require: "^?mdInputContainer",
14560 link: function(e, t, n, r) {
14561 !r || n.mdNoFloat || t.hasClass("md-container-ignore") || (r.label = t, e.$on("$destroy", function() {
14566 }).directive("input", r).directive("textarea", r).directive("mdMaxlength", i).directive("placeholder", o).directive("ngMessages", function() {
14568 return E.some(function(t) {
14574 link: function(t, n, r, i) {
14575 i && (n.toggleClass("md-input-messages-animation", !0), n.toggleClass("md-auto-hide", !0), ("false" == r.mdAutoHide || e(r)) && n.toggleClass("md-auto-hide", !1))
14577 require: "^^?mdInputContainer"
14579 }).directive("ngMessage", s).directive("ngMessageExp", s).directive("mdSelectOnFocus", a).animation(".md-input-invalid", c).animation(".md-input-messages-animation", l).animation(".md-input-message-animation", u);
14580 e._mdMocksIncluded && b.service("$$mdInput", function() {
14588 }).service("mdInputInvalidAnimation", c).service("mdInputMessagesAnimation", l).service("mdInputMessageAnimation", u);
14589 var y, $, _, w, E = ["ngIf", "ngShow", "ngHide", "ngSwitchWhen", "ngSwitchDefault"]
14595 compile: function(t) {
14596 return t[0].setAttribute("role", "list"), e
14601 function n(e, n, r, i) {
14602 var o = ["md-checkbox", "md-switch", "md-menu"];
14605 controller: "MdListController",
14606 compile: function(a, s) {
14608 if ("div" == n)(v = t.element('<div class="md-no-style md-list-item-inner">')).append(a.contents()), a.addClass("md-proxy-focus");
14610 v = t.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');
14611 var r = t.element('<md-button class="md-no-style"></md-button>');
14612 u(a[0], r[0]), r.attr("aria-label") || r.attr("aria-label", e.getText(a)), a.hasClass("md-no-focus") && r.addClass("md-no-focus"), v.prepend(r), v.children().eq(1).append(a.contents()), a.addClass("_md-button-wrap")
14614 a[0].setAttribute("tabindex", "-1"), a.append(v)
14618 if (n && !f(n) && n.hasAttribute("ng-click")) {
14619 e.expect(n, "aria-label");
14620 var i = t.element('<md-button class="md-secondary md-icon-button">');
14621 u(n, i[0], ["ng-if", "ng-hide", "ng-show"]), n.setAttribute("tabindex", "-1"), i.append(n), n = i[0]
14623 n && (!h(n) || !s.ngClick && d(n)) && t.element(n).removeClass("md-secondary"), a.addClass("md-with-secondary"), r.append(n)
14626 function u(e, n, i) {
14627 var o = r.prefixer(["ng-if", "ng-click", "ng-dblclick", "aria-label", "ng-disabled", "ui-sref", "href", "ng-href", "target", "ng-attr-ui-sref", "ui-sref-opts"]);
14628 i && (o = o.concat(r.prefixer(i))), t.forEach(o, function(t) {
14629 e.hasAttribute(t) && (n.setAttribute(t, e.getAttribute(t)), e.removeAttribute(t))
14634 return -1 != o.indexOf(e.nodeName.toLowerCase())
14638 var t = e.nodeName.toUpperCase();
14639 return "MD-BUTTON" == t || "BUTTON" == t
14643 for (var t = e.attributes, n = 0; n < t.length; n++)
14644 if ("ngClick" === s.$normalize(t[n].name)) return !0;
14647 var p, m, g = a[0].querySelectorAll(".md-secondary"),
14649 if (a[0].setAttribute("role", "listitem"), s.ngClick || s.ngDblclick || s.ngHref || s.href || s.uiSref || s.ngAttrUiSref) c("button");
14650 else if (!a.hasClass("md-no-proxy")) {
14651 for (var b, y = 0; b = o[y]; ++y)
14652 if (m = a[0].querySelector(b)) {
14656 p ? c("div") : a.addClass("md-no-proxy")
14658 return function() {
14659 var e = t.element('<div class="md-secondary-container">');
14660 t.forEach(g, function(t) {
14665 for (var e, t, n = ["md-switch", "md-checkbox"], r = 0; t = n[r]; ++r)
14666 if ((e = a.find(t)[0]) && !e.hasAttribute("aria-label")) {
14667 var i = a.find("p")[0];
14669 e.setAttribute("aria-label", "Toggle " + i.textContent)
14671 }(), p && "MD-MENU" === m.nodeName && function() {
14672 var e = t.element(m),
14674 (e.parent().hasClass("md-secondary-container") || m.parentNode.firstElementChild !== m) && (n = "right"), e.attr("md-position-mode") || e.attr("md-position-mode", n + " target");
14675 var r = e.children().eq(0);
14676 h(r[0]) || r.attr("ng-click", "$mdMenu.open($event)"), r.attr("aria-label") || r.attr("aria-label", "Open List Menu")
14678 function(e, a, s, c) {
14680 var t = ["md-slider"];
14681 if (!e.path) return -1 !== t.indexOf(e.target.tagName.toLowerCase());
14682 for (var n = e.path.indexOf(a.children()[0]), r = 0; r < n; r++)
14683 if (-1 !== t.indexOf(e.path[r].tagName.toLowerCase())) return !0
14687 d = a[0].firstElementChild,
14688 f = a.hasClass("_md-button-wrap") ? d.firstElementChild : d,
14690 m = a.hasClass("md-no-proxy");
14691 d && d.children && !p && !m && t.forEach(o, function(e) {
14692 t.forEach(d.querySelectorAll(e + ":not(.md-secondary)"), function(e) {
14695 }), (1 == u.length || p) && (a.addClass("md-clickable"), p || c.attachRipple(e, t.element(a[0].querySelector(".md-no-style")))), u.length && t.forEach(u, function(n) {
14696 n = t.element(n), e.mouseActive = !1, n.on("mousedown", function() {
14697 e.mouseActive = !0, i(function() {
14700 }).on("focus", function() {
14701 !1 === e.mouseActive && a.addClass("md-focused"), n.on("blur", function e() {
14702 a.removeClass("md-focused"), n.off("blur", e)
14706 var g = function(e) {
14707 "INPUT" == e.target.nodeName || "TEXTAREA" == e.target.nodeName || e.target.isContentEditable || (e.which || e.keyCode) == n.KEY_CODE.SPACE && f && (f.click(), e.preventDefault(), e.stopPropagation())
14709 p || u.length || f && f.addEventListener("keypress", g), a.off("click"), a.off("keypress"), 1 == u.length && f && a.children().eq(0).on("click", function(e) {
14710 l(e) || !r.getClosest(e.target, "BUTTON") && f.contains(e.target) && t.forEach(u, function(n) {
14711 e.target === n || n.contains(e.target) || ("MD-MENU" === n.nodeName && (n = n.children[0]), t.element(n).triggerHandler("click"))
14713 }), e.$on("$destroy", function() {
14714 f && f.removeEventListener("keypress", g)
14721 function r(e, t, n) {
14722 this.attachRipple = function(e, t) {
14727 r.$inject = ["$scope", "$element", "$mdListInkRipple"], e.$inject = ["$mdTheming"], n.$inject = ["$mdAria", "$mdConstant", "$mdUtil", "$timeout"], t.module("material.components.list", ["material.core"]).controller("MdListController", r).directive("mdList", e).directive("mdListItem", n)
14728 }(), t.module("material.components.menu", ["material.core", "material.components.backdrop"]), t.module("material.components.menuBar", ["material.core", "material.components.icon", "material.components.menu"]),
14735 controllerAs: "ctrl",
14736 bindToController: !0,
14738 mdSelectedNavItem: "=?",
14740 navBarAriaLabel: "@?"
14742 template: '<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="listbox"tabindex="0"ng-focus="ctrl.onFocus()"ng-keydown="ctrl.onKeydown($event)"aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',
14743 link: function(r, i, o, a) {
14744 n(i), a.navBarAriaLabel || e.expectAsync(i, "aria-label", t.noop)
14749 function r(e, t, n, r) {
14750 this._$timeout = n, this._$scope = t, this._$mdConstant = r, this.mdSelectedNavItem, this.navBarAriaLabel, this._navBarEl = e[0], this._inkbar;
14752 o = this._$scope.$watch(function() {
14753 return i._navBarEl.querySelectorAll("._md-nav-button").length
14755 e > 0 && (i._initTabs(), o())
14762 require: ["mdNavItem", "^mdNavBar"],
14764 bindToController: !0,
14765 controllerAs: "ctrl",
14768 template: function(e, t) {
14769 var n, r, i, o = t.mdNavClick,
14773 if ((o ? 1 : 0) + (a ? 1 : 0) + (s ? 1 : 0) > 1) throw Error("Must not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");
14774 return o ? n = 'ng-click="ctrl.mdNavClick()"' : a ? n = 'ng-href="{{ctrl.mdNavHref}}"' : s && (n = 'ui-sref="{{ctrl.mdNavSref}}"'), r = c ? 'ui-sref-opts="{{ctrl.srefOpts}}" ' : "", n && (i = '<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" tabindex="-1" ' + r + n + '><span ng-transclude class="_md-nav-button-text"></span></md-button>'), '<li class="md-nav-item" role="option" aria-selected="{{ctrl.isSelected()}}">' + (i || "") + "</li>"
14783 link: function(r, i, o, a) {
14787 s = t.element(i[0].querySelector("._md-nav-button"));
14788 n.name || (n.name = t.element(i[0].querySelector("._md-nav-button-text")).text().trim()), s.on("click", function() {
14789 o.mdSelectedNavItem = n.name, r.$apply()
14790 }), e.expectWithText(i, "aria-label")
14797 this._$element = e, this.mdNavClick, this.mdNavHref, this.mdNavSref, this.srefOpts, this.name, this._selected = !1, this._focused = !1
14799 r.$inject = ["$element", "$scope", "$timeout", "$mdConstant"], i.$inject = ["$mdAria", "$$rAF"], o.$inject = ["$element"], e.$inject = ["$mdAria", "$mdTheming"], t.module("material.components.navBar", ["material.core"]).controller("MdNavBarController", r).directive("mdNavBar", e).controller("MdNavItemController", o).directive("mdNavItem", i), r.prototype._initTabs = function() {
14800 this._inkbar = t.element(this._navBarEl.querySelector("md-nav-ink-bar"));
14802 this._$timeout(function() {
14803 e._updateTabs(e.mdSelectedNavItem, n)
14804 }), this._$scope.$watch("ctrl.mdSelectedNavItem", function(t, n) {
14805 e._$timeout(function() {
14806 e._updateTabs(t, n)
14809 }, r.prototype._updateTabs = function(e, t) {
14811 r = this._getTabs();
14815 a = this._getTabByName(e),
14816 s = this._getTabByName(t);
14817 s && (s.setSelected(!1), i = r.indexOf(s)), a && (a.setSelected(!0), o = r.indexOf(a)), this._$timeout(function() {
14818 n._updateInkBarStyles(a, o, i)
14821 }, r.prototype._updateInkBarStyles = function(e, t, n) {
14822 if (this._inkbar.toggleClass("_md-left", t < n).toggleClass("_md-right", t > n), this._inkbar.css({
14823 display: t < 0 ? "none" : ""
14825 var r = e.getButtonEl(),
14829 width: r.offsetWidth + "px"
14832 }, r.prototype._getTabs = function() {
14833 var e = Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(e) {
14834 return t.element(e).controller("mdNavItem")
14836 return e.indexOf(n) ? e : null
14837 }, r.prototype._getTabByName = function(e) {
14838 return this._findTab(function(t) {
14839 return t.getName() == e
14841 }, r.prototype._getSelectedTab = function() {
14842 return this._findTab(function(e) {
14843 return e.isSelected()
14845 }, r.prototype.getFocusedTab = function() {
14846 return this._findTab(function(e) {
14847 return e.hasFocus()
14849 }, r.prototype._findTab = function(e) {
14850 for (var t = this._getTabs(), n = 0; n < t.length; n++)
14851 if (e(t[n])) return t[n];
14853 }, r.prototype.onFocus = function() {
14854 var e = this._getSelectedTab();
14855 e && e.setFocused(!0)
14856 }, r.prototype._moveFocus = function(e, t) {
14857 e.setFocused(!1), t.setFocused(!0)
14858 }, r.prototype.onKeydown = function(e) {
14859 var t = this._$mdConstant.KEY_CODE,
14860 n = this._getTabs(),
14861 r = this.getFocusedTab();
14863 var i = n.indexOf(r);
14864 switch (e.keyCode) {
14867 i > 0 && this._moveFocus(r, n[i - 1]);
14870 case t.RIGHT_ARROW:
14871 i < n.length - 1 && this._moveFocus(r, n[i + 1]);
14875 this._$timeout(function() {
14876 r.getButtonEl().click()
14880 }, o.prototype.getNgClassMap = function() {
14882 "md-active": this._selected,
14883 "md-primary": this._selected,
14884 "md-unselected": !this._selected,
14885 "md-focused": this._focused
14887 }, o.prototype.getName = function() {
14889 }, o.prototype.getButtonEl = function() {
14890 return this._$element[0].querySelector("._md-nav-button")
14891 }, o.prototype.setSelected = function(e) {
14893 }, o.prototype.isSelected = function() {
14894 return this._selected
14895 }, o.prototype.setFocused = function(e) {
14896 this._focused = e, e && this.getButtonEl().focus()
14897 }, o.prototype.hasFocus = function() {
14898 return this._focused
14900 }(), t.module("material.components.progressCircular", ["material.core"]),
14903 if (!e || !t) throw new Error("mdPanelProvider: The panel preset definition is malformed. The name and preset object are required.");
14904 if (p.hasOwnProperty(e)) throw new Error("mdPanelProvider: The panel preset you have requested has already been defined.");
14905 delete t.id, delete t.position, delete t.animation, p[e] = t
14917 return ["$rootElement", "$rootScope", "$injector", "$window", function(e, t, n, r) {
14918 return new a(p, e, t, n, r)
14922 function a(e, n, r, i, o) {
14923 this._defaultConfigOptions = {
14924 bindToController: !0,
14925 clickOutsideToClose: !1,
14926 disableParentScroll: !1,
14931 propagateContainerEvents: !1,
14932 transformTemplate: t.bind(this, this._wrapTemplate),
14935 }, this._config = {}, this._presets = e, this._$rootElement = n, this._$rootScope = r, this._$injector = i, this._$window = o, this._$mdUtil = this._$injector.get("$mdUtil"), this._trackedPanels = {}, this._groups = Object.create(null), this.animation = l.animation, this.xPosition = c.xPosition, this.yPosition = c.yPosition, this.interceptorTypes = s.interceptorTypes, this.closeReasons = s.closeReasons, this.absPosition = c.absPosition
14939 this._$q = t.get("$q"), this._$mdCompiler = t.get("$mdCompiler"), this._$mdConstant = t.get("$mdConstant"), this._$mdUtil = t.get("$mdUtil"), this._$mdTheming = t.get("$mdTheming"), this._$rootScope = t.get("$rootScope"), this._$animate = t.get("$animate"), this._$mdPanel = t.get("$mdPanel"), this._$log = t.get("$log"), this._$window = t.get("$window"), this._$$rAF = t.get("$$rAF"), this.id = e.id, this.config = e, this.panelContainer, this.panelEl, this.isAttached = !1, this._removeListeners = [], this._topFocusTrap, this._bottomFocusTrap, this._backdropRef, this._restoreScroll = null, this._interceptors = Object.create(null), this._compilerCleanup = null, this._restoreCache = {
14946 this._$window = e.get("$window"), this._isRTL = "rtl" === e.get("$mdUtil").bidi(), this._$mdConstant = e.get("$mdConstant"), this._absolute = !1, this._relativeToEl, this._top = "", this._bottom = "", this._left = "", this._right = "", this._translateX = [], this._translateY = [], this._positions = [], this._actualPosition
14950 this._$mdUtil = e.get("$mdUtil"), this._openFrom, this._closeTo, this._animationClass = "", this._openDuration, this._closeDuration, this._rawDuration
14954 var n = t.isString(e) ? document.querySelector(e) : e;
14955 return t.element(n)
14959 var n = getComputedStyle(e[0] || e)[t],
14960 r = n.indexOf("("),
14961 i = n.lastIndexOf(")"),
14966 if (r > -1 && i > -1) {
14967 var a = n.substring(r + 1, i).split(", ").slice(-2);
14968 o.x = parseInt(a[0]), o.y = parseInt(a[1])
14972 a.$inject = ["presets", "$rootElement", "$rootScope", "$injector", "$window"], t.module("material.components.panel", ["material.core", "material.components.backdrop"]).provider("$mdPanel", function() {
14981 h = t.element('<div class="_md-panel-focus-trap" tabindex="0"></div>'),
14983 a.prototype.create = function(e, n) {
14984 if ("string" == typeof e ? e = this._getPresetByName(e) : "object" != typeof e || !t.isUndefined(n) && n || (n = e, e = {}), e = e || {}, n = n || {}, t.isDefined(n.id) && this._trackedPanels[n.id]) {
14985 var r = this._trackedPanels[n.id];
14986 return t.extend(r.config, n), r
14988 this._config = t.extend({
14989 id: n.id || "panel_" + this._$mdUtil.nextUid(),
14990 scope: this._$rootScope.$new(!0),
14991 attachTo: this._$rootElement
14992 }, this._defaultConfigOptions, n, e);
14993 var i = new s(this._config, this._$injector);
14994 return this._trackedPanels[n.id] = i, this._config.groupName && (t.isString(this._config.groupName) && (this._config.groupName = [this._config.groupName]), t.forEach(this._config.groupName, function(e) {
14996 })), this._config.scope.$on("$destroy", t.bind(i, i.detach)), i
14997 }, a.prototype.open = function(e, t) {
14998 var n = this.create(e, t);
14999 return n.open().then(function() {
15002 }, a.prototype._getPresetByName = function(e) {
15003 if (!this._presets[e]) throw new Error("mdPanel: The panel preset configuration that you requested does not exist. Use the $mdPanelProvider to create a preset before requesting one.");
15004 return this._presets[e]
15005 }, a.prototype.newPanelPosition = function() {
15006 return new c(this._$injector)
15007 }, a.prototype.newPanelAnimation = function() {
15008 return new l(this._$injector)
15009 }, a.prototype.newPanelGroup = function(e, t) {
15010 if (!this._groups[e]) {
15014 maxOpen: (t = t || {}).maxOpen > 0 ? t.maxOpen : 1 / 0
15016 this._groups[e] = n
15018 return this._groups[e]
15019 }, a.prototype.setGroupMaxOpen = function(e, t) {
15020 if (!this._groups[e]) throw new Error("mdPanel: Group does not exist yet. Call newPanelGroup().");
15021 this._groups[e].maxOpen = t
15022 }, a.prototype._openCountExceedsMaxOpen = function(e) {
15023 if (this._groups[e]) {
15024 var t = this._groups[e];
15025 return t.maxOpen > 0 && t.openPanels.length > t.maxOpen
15028 }, a.prototype._closeFirstOpenedPanel = function(e) {
15029 this._groups[e].openPanels[0].close()
15030 }, a.prototype._wrapTemplate = function(e) {
15031 return '<div class="md-panel-outer-wrapper"> <div class="md-panel _md-panel-offscreen">' + (e || "") + "</div></div>"
15032 }, a.prototype._wrapContentElement = function(e) {
15033 var n = t.element('<div class="md-panel-outer-wrapper">');
15034 return e.addClass("md-panel _md-panel-offscreen"), n.append(e), n
15035 }, s.interceptorTypes = {
15037 }, s.prototype.open = function() {
15039 return this._$q(function(n, r) {
15040 var i = e._done(n, e),
15041 o = e._simpleBind(e.show, e);
15042 e.attach().then(o).then(function() {
15043 e.config.groupName && t.forEach(e.config.groupName, function(t) {
15044 e._$mdPanel._openCountExceedsMaxOpen(t) && e._$mdPanel._closeFirstOpenedPanel(t)
15046 }).then(i).catch(r)
15048 }, s.prototype.close = function(e) {
15050 return this._$q(function(r, i) {
15051 n._callInterceptors(s.interceptorTypes.CLOSE).then(function() {
15052 var o = n._done(r, n),
15053 a = n._simpleBind(n.detach, n),
15054 s = n.config.onCloseSuccess || t.noop;
15055 s = t.bind(n, s, n, e), n.hide().then(a).then(o).then(s).catch(i)
15058 }, s.prototype.attach = function() {
15059 if (this.isAttached && this.panelEl) return this._$q.when(this);
15061 return this._$q(function(n, r) {
15062 var i = e._done(n, e),
15063 o = e.config.onDomAdded || t.noop;
15064 e._$q.all([e._createBackdrop(), e._createPanel().then(function(t) {
15065 return e.isAttached = !0, e._addEventListeners(), t
15066 }).catch(r)]).then(o).then(i).catch(r)
15068 }, s.prototype.detach = function() {
15069 if (!this.isAttached) return this._$q.when(this);
15071 n = e.config.onDomRemoved || t.noop,
15073 return e._removeEventListeners(), e._topFocusTrap && e._topFocusTrap.parentNode && e._topFocusTrap.parentNode.removeChild(e._topFocusTrap), e._bottomFocusTrap && e._bottomFocusTrap.parentNode && e._bottomFocusTrap.parentNode.removeChild(e._bottomFocusTrap), e._restoreCache.classes && (e.panelEl[0].className = e._restoreCache.classes), e.panelEl[0].style.cssText = e._restoreCache.styles || "", e._compilerCleanup(), e.panelContainer.remove(), e.isAttached = !1, e._$q.when(e)
15075 return this._restoreScroll && (this._restoreScroll(), this._restoreScroll = null), this._$q(function(t, i) {
15076 var o = e._done(t, e);
15077 e._$q.all([r(), !e._backdropRef || e._backdropRef.detach()]).then(n).then(o).catch(i)
15079 }, s.prototype.destroy = function() {
15081 this.config.groupName && t.forEach(this.config.groupName, function(t) {
15082 e.removeFromGroup(t)
15083 }), this.config.scope.$destroy(), this.config.locals = null, this._interceptors = null
15084 }, s.prototype.show = function() {
15085 if (!this.panelContainer) return this._$q(function(e, t) {
15086 t("mdPanel: Panel does not exist yet. Call open() or attach().")
15088 if (!this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
15091 return e.panelContainer.removeClass("_md-panel-hidden"), e._animateOpen()
15093 return this._$q(function(r, i) {
15094 var o = e._done(r, e),
15095 a = e.config.onOpenComplete || t.noop;
15096 e._$q.all([e._backdropRef ? e._backdropRef.show() : e, n().then(function() {
15098 }, i)]).then(a).then(function() {
15099 e.config.groupName && t.forEach(e.config.groupName, function(t) {
15100 e._$mdPanel._groups[t].openPanels.push(e)
15102 }).then(o).catch(i)
15104 }, s.prototype.hide = function() {
15105 if (!this.panelContainer) return this._$q(function(e, t) {
15106 t("mdPanel: Panel does not exist yet. Call open() or attach().")
15108 if (this.panelContainer.hasClass("_md-panel-hidden")) return this._$q.when(this);
15110 return this._$q(function(n, r) {
15111 var i = e._done(n, e),
15112 o = e.config.onRemoving || t.noop;
15113 e._$q.all([e._backdropRef ? e._backdropRef.hide() : e, e._animateClose().then(o).then(function() {
15114 e.panelContainer.addClass("_md-panel-hidden")
15115 }).then(function() {
15116 if (e.config.groupName) {
15118 t.forEach(e.config.groupName, function(t) {
15119 t = e._$mdPanel._groups[t], (n = t.openPanels.indexOf(e)) > -1 && t.openPanels.splice(n, 1)
15122 }).then(function() {
15123 var t = e.config.origin;
15125 }).catch(r)]).then(i, r)
15127 }, s.prototype.addClass = function(e, t) {
15128 if (this._$log.warn("mdPanel: The addClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
15129 t || this.panelContainer.hasClass(e) ? t && !this.panelEl.hasClass(e) && this.panelEl.addClass(e) : this.panelContainer.addClass(e)
15130 }, s.prototype.removeClass = function(e, t) {
15131 if (this._$log.warn("mdPanel: The removeClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
15132 !t && this.panelContainer.hasClass(e) ? this.panelContainer.removeClass(e) : t && this.panelEl.hasClass(e) && this.panelEl.removeClass(e)
15133 }, s.prototype.toggleClass = function(e, t) {
15134 if (this._$log.warn("mdPanel: The toggleClass method is in the process of being deprecated. Full deprecation is scheduled for the AngularJS Material 1.2 release. To achieve the same results, use the panelContainer or panelEl JQLite elements that are referenced in MdPanelRef."), !this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
15135 t ? this.panelEl.toggleClass(e) : this.panelContainer.toggleClass(e)
15136 }, s.prototype._compile = function() {
15138 return e._$mdCompiler.compile(e.config).then(function(n) {
15140 if (r.contentElement) {
15142 e._restoreCache.styles = i[0].style.cssText, e._restoreCache.classes = i[0].className, e.panelContainer = e._$mdPanel._wrapContentElement(i), e.panelEl = i
15143 } else e.panelContainer = n.link(r.scope), e.panelEl = t.element(e.panelContainer[0].querySelector(".md-panel"));
15144 return e._compilerCleanup = n.cleanup, u(e.config.attachTo).append(e.panelContainer), e
15146 }, s.prototype._createPanel = function() {
15148 return this._$q(function(t, n) {
15149 e.config.locals || (e.config.locals = {}), e.config.locals.mdPanelRef = e, e._compile().then(function() {
15150 e.config.disableParentScroll && (e._restoreScroll = e._$mdUtil.disableScrollAround(null, e.panelContainer, {
15151 disableScrollMask: !0
15152 })), e.config.panelClass && e.panelEl.addClass(e.config.panelClass), e.config.propagateContainerEvents && e.panelContainer.css("pointer-events", "none"), e._$animate.pin && e._$animate.pin(e.panelContainer, u(e.config.attachTo)), e._configureTrapFocus(), e._addStyles().then(function() {
15157 }, s.prototype._addStyles = function() {
15159 return this._$q(function(t) {
15160 e.panelContainer.css("z-index", e.config.zIndex), e.panelEl.css("z-index", e.config.zIndex + 1);
15161 var n = function() {
15162 e._setTheming(), e.panelEl.removeClass("_md-panel-offscreen"), e.panelContainer.addClass("_md-panel-hidden"), t(e)
15164 if (e.config.fullscreen) return e.panelEl.addClass("_md-panel-fullscreen"), void n();
15165 e.config.position ? e._$rootScope.$$postDigest(function() {
15166 e._updatePosition(!0), e._setTheming(), t(e)
15169 }, s.prototype._setTheming = function() {
15170 this._$mdTheming(this.panelEl), this._$mdTheming(this.panelContainer)
15171 }, s.prototype.updatePosition = function(e) {
15172 if (!this.panelContainer) throw new Error("mdPanel: Panel does not exist yet. Call open() or attach().");
15173 this.config.position = e, this._updatePosition()
15174 }, s.prototype._updatePosition = function(e) {
15175 var t = this.config.position;
15176 t && (t._setPanelPosition(this.panelEl), e && (this.panelEl.removeClass("_md-panel-offscreen"), this.panelContainer.addClass("_md-panel-hidden")), this.panelEl.css(c.absPosition.TOP, t.getTop()), this.panelEl.css(c.absPosition.BOTTOM, t.getBottom()), this.panelEl.css(c.absPosition.LEFT, t.getLeft()), this.panelEl.css(c.absPosition.RIGHT, t.getRight()))
15177 }, s.prototype._focusOnOpen = function() {
15178 if (this.config.focusOnOpen) {
15180 this._$rootScope.$$postDigest(function() {
15181 (e._$mdUtil.findFocusTarget(e.panelEl) || e.panelEl).focus()
15184 }, s.prototype._createBackdrop = function() {
15185 if (this.config.hasBackdrop) {
15186 if (!this._backdropRef) {
15187 var e = this._$mdPanel.newPanelAnimation().openFrom(this.config.attachTo).withAnimation({
15188 open: "_md-opaque-enter",
15189 close: "_md-opaque-leave"
15191 this.config.animation && e.duration(this.config.animation._rawDuration);
15194 attachTo: this.config.attachTo,
15196 panelClass: "_md-panel-backdrop",
15197 zIndex: this.config.zIndex - 1
15199 this._backdropRef = this._$mdPanel.create(t)
15201 if (!this._backdropRef.isAttached) return this._backdropRef.attach()
15203 }, s.prototype._addEventListeners = function() {
15204 this._configureEscapeToClose(), this._configureClickOutsideToClose(), this._configureScrollListener()
15205 }, s.prototype._removeEventListeners = function() {
15206 this._removeListeners && this._removeListeners.forEach(function(e) {
15208 }), this._removeListeners = []
15209 }, s.prototype._configureEscapeToClose = function() {
15210 if (this.config.escapeToClose) {
15211 var e = u(this.config.attachTo),
15214 e.keyCode === t._$mdConstant.KEY_CODE.ESCAPE && (e.stopPropagation(), e.preventDefault(), t.close(s.closeReasons.ESCAPE))
15216 this.panelContainer.on("keydown", n), e.on("keydown", n), this._removeListeners.push(function() {
15217 t.panelContainer.off("keydown", n), e.off("keydown", n)
15220 }, s.prototype._configureClickOutsideToClose = function() {
15221 if (this.config.clickOutsideToClose) {
15222 var e, n = this.config.propagateContainerEvents ? t.element(document.body) : this.panelContainer,
15228 i.config.propagateContainerEvents ? e === i.panelEl[0] || i.panelEl[0].contains(e) || i.close() : e === n[0] && t.target === n[0] && (t.stopPropagation(), t.preventDefault(), i.close(s.closeReasons.CLICK_OUTSIDE))
15230 n.on("mousedown", r), n.on("mouseup", o), this._removeListeners.push(function() {
15231 n.off("mousedown", r), n.off("mouseup", o)
15234 }, s.prototype._configureScrollListener = function() {
15235 if (!this.config.disableParentScroll) {
15236 var e = t.bind(this, this._updatePosition),
15237 n = this._$$rAF.throttle(e),
15242 this._$window.addEventListener("scroll", i, !0), this._removeListeners.push(function() {
15243 r._$window.removeEventListener("scroll", i, !0)
15246 }, s.prototype._configureTrapFocus = function() {
15247 if (this.panelEl.attr("tabIndex", "-1"), this.config.trapFocus) {
15248 var e = this.panelEl;
15249 this._topFocusTrap = h.clone()[0], this._bottomFocusTrap = h.clone()[0];
15250 var t = function() {
15253 this._topFocusTrap.addEventListener("focus", t), this._bottomFocusTrap.addEventListener("focus", t), this._removeListeners.push(this._simpleBind(function() {
15254 this._topFocusTrap.removeEventListener("focus", t), this._bottomFocusTrap.removeEventListener("focus", t)
15255 }, this)), e[0].parentNode.insertBefore(this._topFocusTrap, e[0]), e.after(this._bottomFocusTrap)
15257 }, s.prototype.updateAnimation = function(e) {
15258 this.config.animation = e, this._backdropRef && this._backdropRef.config.animation.duration(e._rawDuration)
15259 }, s.prototype._animateOpen = function() {
15260 this.panelContainer.addClass("md-panel-is-showing");
15261 var e = this.config.animation;
15262 if (!e) return this.panelContainer.addClass("_md-panel-shown"), this._$q.when(this);
15264 return this._$q(function(n) {
15265 var r = t._done(n, t);
15266 e.animateOpen(t.panelEl).then(r, function() {
15267 t._$log.warn("mdPanel: MdPanel Animations failed. Showing panel without animating."), r()
15270 }, s.prototype._animateClose = function() {
15271 var e = this.config.animation;
15272 if (!e) return this.panelContainer.removeClass("md-panel-is-showing"), this.panelContainer.removeClass("_md-panel-shown"), this._$q.when(this);
15274 return this._$q(function(n) {
15275 var r = function() {
15276 t.panelContainer.removeClass("md-panel-is-showing"), n(t)
15278 e.animateClose(t.panelEl).then(r, function() {
15279 t._$log.warn("mdPanel: MdPanel Animations failed. Hiding panel without animating."), r()
15282 }, s.prototype.registerInterceptor = function(e, n) {
15284 if (t.isString(e) ? t.isFunction(n) || (r = "Interceptor callback must be a function, instead got " + typeof n) : r = "Interceptor type must be a string, instead got " + typeof e, r) throw new Error("MdPanel: " + r);
15285 var i = this._interceptors[e] = this._interceptors[e] || [];
15286 return -1 === i.indexOf(n) && i.push(n), this
15287 }, s.prototype.removeInterceptor = function(e, t) {
15288 var n = this._interceptors[e] ? this._interceptors[e].indexOf(t) : -1;
15289 return n > -1 && this._interceptors[e].splice(n, 1), this
15290 }, s.prototype.removeAllInterceptors = function(e) {
15291 return e ? this._interceptors[e] = [] : this._interceptors = Object.create(null), this
15292 }, s.prototype._callInterceptors = function(e) {
15295 return (n._interceptors && n._interceptors[e] || []).reduceRight(function(e, i) {
15296 var o = i && t.isFunction(i.then) ? i : null;
15297 return e.then(function() {
15306 }, s.prototype._simpleBind = function(e, t) {
15307 return function(n) {
15308 return e.apply(t, n)
15310 }, s.prototype._done = function(e, t) {
15311 return function() {
15314 }, s.prototype.addToGroup = function(e) {
15315 this._$mdPanel._groups[e] || this._$mdPanel.newPanelGroup(e);
15316 var t = this._$mdPanel._groups[e];
15317 t.panels.indexOf(this) < 0 && t.panels.push(this)
15318 }, s.prototype.removeFromGroup = function(e) {
15319 if (!this._$mdPanel._groups[e]) throw new Error("mdPanel: The group " + e + " does not exist.");
15320 var t = this._$mdPanel._groups[e],
15321 n = t.panels.indexOf(this);
15322 n > -1 && t.panels.splice(n, 1)
15323 }, s.closeReasons = {
15324 CLICK_OUTSIDE: "clickOutsideToClose",
15325 ESCAPE: "escapeToClose"
15328 ALIGN_START: "align-start",
15329 ALIGN_END: "align-end",
15330 OFFSET_START: "offset-start",
15331 OFFSET_END: "offset-end"
15334 ALIGN_TOPS: "align-tops",
15335 ALIGN_BOTTOMS: "align-bottoms",
15338 }, c.absPosition = {
15343 }, c.viewportMargin = 8, c.prototype.absolute = function() {
15344 return this._absolute = !0, this
15345 }, c.prototype._setPosition = function(e, n) {
15346 if (e === c.absPosition.RIGHT || e === c.absPosition.LEFT) this._left = this._right = "";
15348 if (e !== c.absPosition.BOTTOM && e !== c.absPosition.TOP) {
15349 var r = Object.keys(c.absPosition).join().toLowerCase();
15350 throw new Error("mdPanel: Position must be one of " + r + ".")
15352 this._top = this._bottom = ""
15354 return this["_" + e] = t.isString(n) ? n : "0", this
15355 }, c.prototype.top = function(e) {
15356 return this._setPosition(c.absPosition.TOP, e)
15357 }, c.prototype.bottom = function(e) {
15358 return this._setPosition(c.absPosition.BOTTOM, e)
15359 }, c.prototype.start = function(e) {
15360 var t = this._isRTL ? c.absPosition.RIGHT : c.absPosition.LEFT;
15361 return this._setPosition(t, e)
15362 }, c.prototype.end = function(e) {
15363 var t = this._isRTL ? c.absPosition.LEFT : c.absPosition.RIGHT;
15364 return this._setPosition(t, e)
15365 }, c.prototype.left = function(e) {
15366 return this._setPosition(c.absPosition.LEFT, e)
15367 }, c.prototype.right = function(e) {
15368 return this._setPosition(c.absPosition.RIGHT, e)
15369 }, c.prototype.centerHorizontally = function() {
15370 return this._left = "50%", this._right = "", this._translateX = ["-50%"], this
15371 }, c.prototype.centerVertically = function() {
15372 return this._top = "50%", this._bottom = "", this._translateY = ["-50%"], this
15373 }, c.prototype.center = function() {
15374 return this.centerHorizontally().centerVertically()
15375 }, c.prototype.relativeTo = function(e) {
15376 return this._absolute = !1, this._relativeToEl = u(e), this
15377 }, c.prototype.addPanelPosition = function(e, t) {
15378 if (!this._relativeToEl) throw new Error("mdPanel: addPanelPosition can only be used with relative positioning. Set relativeTo first.");
15379 return this._validateXPosition(e), this._validateYPosition(t), this._positions.push({
15383 }, c.prototype._validateYPosition = function(e) {
15385 for (var t, n = Object.keys(c.yPosition), r = [], i = 0; t = n[i]; i++) {
15386 var o = c.yPosition[t];
15387 if (r.push(o), o === e) return
15389 throw new Error("mdPanel: Panel y position only accepts the following values:\n" + r.join(" | "))
15391 }, c.prototype._validateXPosition = function(e) {
15393 for (var t, n = Object.keys(c.xPosition), r = [], i = 0; t = n[i]; i++) {
15394 var o = c.xPosition[t];
15395 if (r.push(o), o === e) return
15397 throw new Error("mdPanel: Panel x Position only accepts the following values:\n" + r.join(" | "))
15399 }, c.prototype.withOffsetX = function(e) {
15400 return this._translateX.push(e), this
15401 }, c.prototype.withOffsetY = function(e) {
15402 return this._translateY.push(e), this
15403 }, c.prototype.getTop = function() {
15405 }, c.prototype.getBottom = function() {
15406 return this._bottom
15407 }, c.prototype.getLeft = function() {
15409 }, c.prototype.getRight = function() {
15411 }, c.prototype.getTransform = function() {
15412 return (this._reduceTranslateValues("translateX", this._translateX) + " " + this._reduceTranslateValues("translateY", this._translateY)).trim()
15413 }, c.prototype._setTransform = function(e) {
15414 return e.css(this._$mdConstant.CSS.TRANSFORM, this.getTransform())
15415 }, c.prototype._isOnscreen = function(e) {
15416 var t = parseInt(this.getLeft()),
15417 n = parseInt(this.getTop());
15418 if (this._translateX.length || this._translateY.length) {
15419 var r = d(e, this._$mdConstant.CSS.TRANSFORM);
15422 var i = t + e[0].offsetWidth,
15423 o = n + e[0].offsetHeight;
15424 return t >= 0 && n >= 0 && o <= this._$window.innerHeight && i <= this._$window.innerWidth
15425 }, c.prototype.getActualPosition = function() {
15426 return this._actualPosition
15427 }, c.prototype._reduceTranslateValues = function(e, n) {
15428 return n.map(function(n) {
15429 var r = t.isFunction(n) ? n(this) : n;
15430 return e + "(" + r + ")"
15432 }, c.prototype._setPanelPosition = function(e) {
15433 if (e.removeClass("_md-panel-position-adjusted"), this._absolute) this._setTransform(e);
15435 if (this._actualPosition) return this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), void this._constrainToViewport(e);
15436 for (var t = 0; t < this._positions.length; t++)
15437 if (this._actualPosition = this._positions[t], this._calculatePanelPosition(e, this._actualPosition), this._setTransform(e), this._isOnscreen(e)) return;
15438 this._constrainToViewport(e)
15440 }, c.prototype._constrainToViewport = function(e) {
15441 var t = c.viewportMargin,
15444 if (this.getTop()) {
15445 var i = parseInt(this.getTop()),
15446 o = e[0].offsetHeight + i,
15447 a = this._$window.innerHeight;
15448 i < t ? this._top = t + "px" : o > a && (this._top = i - (o - a + t) + "px")
15450 if (this.getLeft()) {
15451 var s = parseInt(this.getLeft()),
15452 l = e[0].offsetWidth + s,
15453 u = this._$window.innerWidth;
15454 s < t ? this._left = t + "px" : l > u && (this._left = s - (l - u + t) + "px")
15456 e.toggleClass("_md-panel-position-adjusted", this._top !== n || this._left !== r)
15457 }, c.prototype._reverseXPosition = function(e) {
15458 if (e !== c.xPosition.CENTER) {
15459 return e.indexOf("start") > -1 ? e.replace("start", "end") : e.replace("end", "start")
15461 }, c.prototype._bidi = function(e) {
15462 return this._isRTL ? this._reverseXPosition(e) : e
15463 }, c.prototype._calculatePanelPosition = function(e, t) {
15464 var n = e[0].getBoundingClientRect(),
15467 o = this._relativeToEl[0].getBoundingClientRect(),
15471 switch (this._bidi(t.x)) {
15472 case c.xPosition.OFFSET_START:
15473 this._left = a - r + "px";
15475 case c.xPosition.ALIGN_END:
15476 this._left = s - r + "px";
15478 case c.xPosition.CENTER:
15479 var u = a + .5 * l - .5 * r;
15480 this._left = u + "px";
15482 case c.xPosition.ALIGN_START:
15483 this._left = a + "px";
15485 case c.xPosition.OFFSET_END:
15486 this._left = s + "px"
15492 case c.yPosition.ABOVE:
15493 this._top = d - i + "px";
15495 case c.yPosition.ALIGN_BOTTOMS:
15496 this._top = f - i + "px";
15498 case c.yPosition.CENTER:
15499 var p = d + .5 * h - .5 * i;
15500 this._top = p + "px";
15502 case c.yPosition.ALIGN_TOPS:
15503 this._top = d + "px";
15505 case c.yPosition.BELOW:
15506 this._top = f + "px"
15509 SLIDE: "md-panel-animate-slide",
15510 SCALE: "md-panel-animate-scale",
15511 FADE: "md-panel-animate-fade"
15512 }, l.prototype.openFrom = function(e) {
15513 return e = e.target ? e.target : e, this._openFrom = this._getPanelAnimationTarget(e), this._closeTo || (this._closeTo = this._openFrom), this
15514 }, l.prototype.closeTo = function(e) {
15515 return this._closeTo = this._getPanelAnimationTarget(e), this
15516 }, l.prototype.duration = function(e) {
15518 if (t.isNumber(e)) return e / 1e3
15520 return e && (t.isNumber(e) ? this._openDuration = this._closeDuration = n(e) : t.isObject(e) && (this._openDuration = n(e.open), this._closeDuration = n(e.close))), this._rawDuration = e, this
15521 }, l.prototype._getPanelAnimationTarget = function(e) {
15522 return t.isDefined(e.top) || t.isDefined(e.left) ? {
15528 } : this._getBoundingClientRect(u(e))
15529 }, l.prototype.withAnimation = function(e) {
15530 return this._animationClass = e, this
15531 }, l.prototype.animateOpen = function(e) {
15532 var n = this._$mdUtil.dom.animator;
15533 this._fixBounds(e);
15535 i = e[0].style.transform || "",
15536 o = n.toTransformCss(i),
15537 a = n.toTransformCss(i);
15538 switch (this._animationClass) {
15539 case l.animation.SLIDE:
15540 e.css("opacity", "1"), r = {
15541 transitionInClass: "_md-panel-animate-enter"
15543 var s = n.calculateSlideToOrigin(e, this._openFrom) || "";
15544 o = n.toTransformCss(s + " " + i);
15546 case l.animation.SCALE:
15548 transitionInClass: "_md-panel-animate-enter"
15550 var c = n.calculateZoomToOrigin(e, this._openFrom) || "";
15551 o = n.toTransformCss(c + " " + i);
15553 case l.animation.FADE:
15555 transitionInClass: "_md-panel-animate-enter"
15559 r = t.isString(this._animationClass) ? {
15560 transitionInClass: this._animationClass
15562 transitionInClass: this._animationClass.open,
15563 transitionOutClass: this._animationClass.close
15566 return r.duration = this._openDuration, n.translate3d(e, o, a, r)
15567 }, l.prototype.animateClose = function(e) {
15568 var n = this._$mdUtil.dom.animator,
15570 i = e[0].style.transform || "",
15571 o = n.toTransformCss(i),
15572 a = n.toTransformCss(i);
15573 switch (this._animationClass) {
15574 case l.animation.SLIDE:
15575 e.css("opacity", "1"), r = {
15576 transitionInClass: "_md-panel-animate-leave"
15578 var s = n.calculateSlideToOrigin(e, this._closeTo) || "";
15579 a = n.toTransformCss(s + " " + i);
15581 case l.animation.SCALE:
15583 transitionInClass: "_md-panel-animate-scale-out _md-panel-animate-leave"
15585 var c = n.calculateZoomToOrigin(e, this._closeTo) || "";
15586 a = n.toTransformCss(c + " " + i);
15588 case l.animation.FADE:
15590 transitionInClass: "_md-panel-animate-fade-out _md-panel-animate-leave"
15594 r = t.isString(this._animationClass) ? {
15595 transitionOutClass: this._animationClass
15597 transitionInClass: this._animationClass.close,
15598 transitionOutClass: this._animationClass.open
15601 return r.duration = this._closeDuration, n.translate3d(e, o, a, r)
15602 }, l.prototype._fixBounds = function(e) {
15603 var t = e[0].offsetWidth,
15604 n = e[0].offsetHeight;
15605 this._openFrom && null == this._openFrom.bounds.height && (this._openFrom.bounds.height = n), this._openFrom && null == this._openFrom.bounds.width && (this._openFrom.bounds.width = t), this._closeTo && null == this._closeTo.bounds.height && (this._closeTo.bounds.height = n), this._closeTo && null == this._closeTo.bounds.width && (this._closeTo.bounds.width = t)
15606 }, l.prototype._getBoundingClientRect = function(e) {
15607 if (e instanceof t.element) return {
15609 bounds: e[0].getBoundingClientRect()
15614 function e(e, n, r) {
15615 function i(r, i, d) {
15617 var e = (d.mdMode || "").trim();
15618 if (e) switch (e) {
15632 var i = n.supplant("translateX({0}%) scale({1},1)", [(r - 100) / 2, r / 100]),
15636 t.element(e).css(o)
15640 var p, m = d.hasOwnProperty("disabled"),
15641 g = n.dom.animator.toCss,
15642 v = t.element(i[0].querySelector(".md-bar1")),
15643 b = t.element(i[0].querySelector(".md-bar2")),
15644 y = t.element(i[0].querySelector(".md-container"));
15645 i.attr("md-mode", f()).toggleClass(u, m),
15647 if (t.isUndefined(d.mdMode)) {
15648 var e = t.isDefined(d.value) ? a : s;
15649 i.attr("md-mode", e), d.mdMode = e
15651 }(), d.$observe("value", function(e) {
15653 i.attr("aria-valuenow", t), f() != l && h(b, t)
15654 }), d.$observe("mdBufferValue", function(e) {
15656 }), d.$observe("disabled", function(e) {
15657 m = !0 === e || !1 === e ? !!e : t.isDefined(e), i.toggleClass(u, m), y.toggleClass(p, !m)
15658 }), d.$observe("mdMode", function(e) {
15659 switch (p && y.removeClass(p), e) {
15664 y.addClass(p = "md-mode-" + e);
15667 y.addClass(p = "md-mode-" + s)
15673 return Math.max(0, Math.min(e || 0, 100))
15675 var a = "determinate",
15676 s = "indeterminate",
15679 u = "_md-progress-linear-disabled";
15682 template: '<div class="md-container"><div class="md-dashed"></div><div class="md-bar md-bar1"></div><div class="md-bar md-bar2"></div></div>',
15683 compile: function(e, t, n) {
15684 return e.attr("aria-valuemin", 0), e.attr("aria-valuemax", 100), e.attr("role", "progressbar"), i
15688 e.$inject = ["$mdTheming", "$mdUtil", "$log"], t.module("material.components.progressLinear", ["material.core"]).directive("mdProgressLinear", e)
15691 function e(e, n, r, i) {
15693 this._radioButtonRenderFns = [], this.$element = e
15697 var i = e.iterator(n[0].querySelectorAll("md-radio-button"), !0);
15699 var o = n[0].querySelector("md-radio-button.md-checked"),
15700 a = i[r < 0 ? "previous" : "next"](o, function(e) {
15701 return !t.element(e).attr("disabled")
15703 t.element(a).triggerHandler("click")
15706 return o.prototype = {
15707 init: function(e) {
15708 this._ngModelCtrl = e, this._ngModelCtrl.$render = t.bind(this, this.render)
15711 this._radioButtonRenderFns.push(e)
15713 remove: function(e) {
15714 var t = this._radioButtonRenderFns.indexOf(e); - 1 !== t && this._radioButtonRenderFns.splice(t, 1)
15716 render: function() {
15717 this._radioButtonRenderFns.forEach(function(e) {
15721 setViewValue: function(e, t) {
15722 this._ngModelCtrl.$setViewValue(e, t), this.render()
15724 getViewValue: function() {
15725 return this._ngModelCtrl.$viewValue
15727 selectNext: function() {
15728 return a(this.$element, 1)
15730 selectPrevious: function() {
15731 return a(this.$element, -1)
15733 setActiveDescendant: function(e) {
15734 this.$element.attr("aria-activedescendant", e)
15736 isDisabled: function() {
15737 return this.$element[0].hasAttribute("disabled")
15741 controller: ["$element", o],
15742 require: ["mdRadioGroup", "?ngModel"],
15744 pre: function(o, a, s, c) {
15746 a.hasClass("md-focused") || a.addClass("md-focused")
15748 a.addClass("_md"), r(a);
15750 d = c[1] || e.fakeNgModel();
15751 u.init(d), o.mouseActive = !1, a.attr({
15752 role: "radiogroup",
15753 tabIndex: a.attr("tabindex") || "0"
15754 }).on("keydown", function(r) {
15755 var i = r.which || r.keyCode;
15756 if (i == n.KEY_CODE.ENTER || r.currentTarget == r.target) switch (i) {
15757 case n.KEY_CODE.LEFT_ARROW:
15758 case n.KEY_CODE.UP_ARROW:
15759 r.preventDefault(), u.selectPrevious(), l();
15761 case n.KEY_CODE.RIGHT_ARROW:
15762 case n.KEY_CODE.DOWN_ARROW:
15763 r.preventDefault(), u.selectNext(), l();
15765 case n.KEY_CODE.ENTER:
15766 var o = t.element(e.getClosest(a[0], "form"));
15767 o.length > 0 && o.triggerHandler("submit")
15769 }).on("mousedown", function(e) {
15770 o.mouseActive = !0, i(function() {
15773 }).on("focus", function() {
15774 !1 === o.mouseActive && u.$element.addClass("md-focused")
15775 }).on("blur", function() {
15776 u.$element.removeClass("md-focused")
15783 function n(e, t, n) {
15784 var r = "md-checked";
15787 require: "^mdRadioGroup",
15789 template: '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',
15790 link: function(i, o, a, s) {
15792 if (!s) throw "RadioButton: No RadioGroupController could be found.";
15793 s.add(u), a.$observe("value", u), o.on("click", l).on("$destroy", function() {
15799 o[0].hasAttribute("disabled") || s.isDisabled() || i.$apply(function() {
15800 s.setViewValue(a.value, e && e.type)
15805 var e = s.getViewValue() == a.value;
15806 e !== d && ("md-radio-group" !== o[0].parentNode.nodeName.toLowerCase() && o.parent().toggleClass(r, e), e && s.setActiveDescendant(o.attr("id")), d = e, o.attr("aria-checked", e).toggleClass(r, e))
15812 id: a.id || "radio_" + t.nextUid(),
15814 "aria-checked": "false"
15815 }), e.expectWithText(n, "aria-label")
15816 }(o), a.ngValue ? t.nextTick(c, !1) : c()
15820 e.$inject = ["$mdUtil", "$mdConstant", "$mdTheming", "$timeout"], n.$inject = ["$mdAria", "$mdUtil", "$mdTheming"], t.module("material.components.radioButton", ["material.core"]).directive("mdRadioGroup", e).directive("mdRadioButton", n)
15824 return ["$mdUtil", "$window", function(n, r) {
15828 link: function(i, o, a) {
15829 var s = i.$on("$md-resize-enable", function() {
15832 l = c.nodeType === r.Node.ELEMENT_NODE ? r.getComputedStyle(c) : {};
15833 i.$watch(a[e], function(e) {
15835 n.nextTick(function() {
15836 i.$broadcast("$md-resize")
15839 cachedTransitionStyles: l
15841 n.dom.animator.waitTransitionEnd(o, r).then(function() {
15842 i.$broadcast("$md-resize")
15851 t.module("material.components.showHide", ["material.core"]).directive("ngShow", e("ngShow", !0)).directive("ngHide", e("ngHide", !1))
15854 function e(e, r, i, o) {
15856 var o = function() {
15860 return i.when(r.supplant(c, [n || ""]))
15869 then: function(e) {
15870 return s(n).then(e || t.noop)
15876 return e.when(t).catch(o.error)
15878 var c = "SideNav '{0}' is not available! Did you use md-component-id='{0}'?",
15880 find: function(t, i) {
15882 return a || i ? a : (o.error(r.supplant(c, [t || ""])), n)
15886 return function(e, n) {
15887 if (t.isUndefined(e)) return l;
15890 return !i && r ? l.waitFor(e) : !i && t.isUndefined(n) ? a(l, e) : i
15894 function r(e, r, i, o, a, s, c, l, u, d, f, h, p) {
15895 function m(c, m, g, v) {
15898 r = e[0].scrollTop;
15902 bottom: n.style.bottom,
15903 height: n.style.height
15908 height: e[0].clientHeight + "px"
15912 if (!t && x) return function() {
15913 n.style.top = x.top, n.style.bottom = x.bottom, n.style.height = x.height, E[0].style.top = null, E[0].style.bottom = null, E[0].style.height = null, x = null
15918 e && !w ? (w = k.css("overflow"), k.css("overflow", "hidden")) : t.isDefined(w) && (k.css("overflow", w), w = n)
15922 return e.keyCode === i.KEY_CODE.ESCAPE ? _(e) : d.when(!0)
15926 return e.preventDefault(), v.close()
15928 var w, E, C, x, k = null,
15931 S = l(g.mdIsLockedOpen),
15933 g.mdDisableScrollTarget && ((k = f[0].querySelector(g.mdDisableScrollTarget)) ? k = t.element(k) : u.warn(r.supplant('mdSidenav: couldn\'t find element matching selector "{selector}". Falling back to parent.', {
15934 selector: g.mdDisableScrollTarget
15935 }))), k || (k = m.parent()), g.hasOwnProperty("mdDisableBackdrop") || (E = r.createBackdrop(c, "md-sidenav-backdrop md-opaque ng-enter")), m.addClass("_md"), o(m), E && o.inherit(E, m), m.on("$destroy", function() {
15936 E && E.remove(), v.destroy()
15937 }), c.$on("$destroy", function() {
15939 }), c.$watch(function() {
15940 return S(c.$parent, {
15941 $media: function(t) {
15942 return u.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."), e(t)
15946 }, function(e, t) {
15947 c.isLockedOpen = e, e === t ? m.toggleClass("md-locked-open", !!e) : s[e ? "addClass" : "removeClass"](m, "md-locked-open"), E && E.toggleClass("md-locked-open", !!e)
15948 }), c.$watch("isOpen", function(e) {
15949 var t = r.findFocusTarget(m) || r.findFocusTarget(m, "[md-sidenav-focus]") || m,
15951 n[e ? "on" : "off"]("keydown", $), E && E[e ? "on" : "off"]("click", _);
15953 return e && (T = f[0].activeElement, C = a.getLastInteractionType()), y(e), M = d.all([e && E ? s.enter(E, n) : E ? s.leave(E) : d.when(!0), s[e ? "removeClass" : "addClass"](m, "md-closed")]).then(function() {
15954 c.isOpen && (p(function() {
15955 A.triggerHandler("resize")
15956 }), t && t.focus()), i && i()
15958 }), v.$toggleOpen = function(e) {
15959 return c.isOpen == e ? d.when(!0) : (c.isOpen && v.onCloseCb && v.onCloseCb(), d(function(t) {
15960 c.isOpen = e, r.nextTick(function() {
15961 M.then(function(e) {
15962 !c.isOpen && T && "keyboard" === C && (T.focus(), T = null), t(e)
15971 isOpen: "=?mdIsOpen"
15973 controller: "$mdSidenavController",
15974 compile: function(e) {
15975 return e.addClass("md-closed").attr("tabIndex", "-1"), m
15980 function i(e, t, n, r, i) {
15982 o.isOpen = function() {
15984 }, o.isLockedOpen = function() {
15985 return !!e.isLockedOpen
15986 }, o.onClose = function(e) {
15987 return o.onCloseCb = e, o
15988 }, o.open = function() {
15989 return o.$toggleOpen(!0)
15990 }, o.close = function() {
15991 return o.$toggleOpen(!1)
15992 }, o.toggle = function() {
15993 return o.$toggleOpen(!e.isOpen)
15994 }, o.$toggleOpen = function(t) {
15995 return r.when(e.isOpen = t)
15997 var a = t.mdComponentId,
15998 s = a && a.indexOf(i.startSymbol()) > -1,
15999 c = s ? i(a)(e.$parent) : a;
16000 o.destroy = n.register(o, c), s && t.$observe("mdComponentId", function(e) {
16001 e && e !== o.$$mdHandle && (o.destroy(), o.destroy = n.register(o, e))
16004 e.$inject = ["$mdComponentRegistry", "$mdUtil", "$q", "$log"], r.$inject = ["$mdMedia", "$mdUtil", "$mdConstant", "$mdTheming", "$mdInteraction", "$animate", "$compile", "$parse", "$log", "$q", "$document", "$window", "$$rAF"], i.$inject = ["$scope", "$attrs", "$mdComponentRegistry", "$q", "$interpolate"], t.module("material.components.sidenav", ["material.core", "material.components.backdrop"]).factory("$mdSidenav", e).directive("mdSidenav", r).directive("mdSidenavFocus", function() {
16007 require: "^mdSidenav",
16008 link: function(e, t, n, r) {}
16010 }).controller("$mdSidenavController", i)
16013 function r(e, r, i, o, a, c, l, u) {
16014 var d = i.KEY_CODE;
16015 d.SPACE, d.ENTER, d.UP_ARROW, d.DOWN_ARROW;
16018 require: ["^?mdInputContainer", "mdSelect", "ngModel", "?^form"],
16019 compile: function(u, d) {
16020 var f = t.element("<md-select-value><span></span></md-select-value>");
16021 if (f.append('<span class="md-select-icon" aria-hidden="true"></span>'), f.addClass("md-select-value"), f[0].hasAttribute("id") || f.attr("id", "select_value_label_" + r.nextUid()), u.find("md-content").length || u.append(t.element("<md-content>").append(u.contents())), d.mdOnOpen && (u.find("md-content").prepend(t.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')), u.find("md-option").attr("ng-show", "$$loadingAsyncDone")), d.name) {
16022 var h = t.element('<select class="md-visually-hidden">');
16025 "aria-hidden": "true",
16028 var p = u.find("md-option");
16029 t.forEach(p, function(e) {
16030 var n = t.element("<option>" + e.innerHTML + "</option>");
16031 e.hasAttribute("ng-value") ? n.attr("ng-value", e.getAttribute("ng-value")) : e.hasAttribute("value") && n.attr("value", e.getAttribute("value")), h.append(n)
16032 }), h.append('<option ng-value="' + d.ngModel + '" selected></option>'), u.parent().append(h)
16034 var m = r.parseAttributeBoolean(d.multiple),
16035 g = m ? "multiple" : "",
16036 v = '<div class="md-select-menu-container" aria-hidden="true"><md-select-menu {0}>{1}</md-select-menu></div>';
16037 return v = r.supplant(v, [g, u.html()]), u.empty().append(f), u.append(v), d.tabindex || d.$set("tabindex", 0),
16038 function(u, d, f, h) {
16040 var e = d.attr("aria-label") || d.attr("placeholder");
16041 !e && C && C.label && (e = C.label.text()), w = e, a.expect(d, "aria-label", e)
16045 D && (I = I || D.find("md-select-menu").controller("mdSelectMenu"), x.setLabelText(I.selectedLabels()))
16050 var e = I.selectedLabels({
16053 d.attr("aria-label", e.length ? w + ": " + e : w)
16058 C && C.setHasValue(I.selectedLabels().length > 0 || (d[0].validity || {}).badInput)
16062 if (i.isNavigationKey(e)) e.preventDefault(), $();
16063 else if (s(e, i)) {
16064 e.preventDefault();
16065 var n = I.optNodeForKeyboardSearch(e);
16066 if (!n || n.hasAttribute("disabled")) return;
16067 var r = t.element(n).controller("mdOption");
16068 I.isMultiple || I.deselect(Object.keys(I.selected)[0]), I.select(r.hashKey, r.value), I.refreshViewValue()
16073 N._mdSelectIsOpen = !0, d.attr("aria-expanded", "true"), e.show({
16080 preserveElement: !0,
16082 loadingAsync: !!f.mdOnOpen && (u.$eval(f.mdOnOpen) || !0)
16083 }).finally(function() {
16084 N._mdSelectIsOpen = !1, d.focus(), d.attr("aria-expanded", "false"), k.$setTouched()
16092 M = d.find("md-select-value"),
16093 S = t.isDefined(f.readonly),
16094 A = r.parseAttributeBoolean(f.mdNoAsterisk);
16095 if (A && d.addClass("md-no-asterisk"), C) {
16096 var O = C.isErrorGetter || function() {
16097 return k.$invalid && (k.$touched || T && T.$submitted)
16099 if (C.input && d.find("md-select-header").find("input")[0] !== C.input[0]) throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");
16100 C.input = d, C.label || a.expect(d, "aria-label", d.attr("placeholder")), u.$watch(O, C.setInvalid)
16104 if (D = t.element(d[0].querySelector(".md-select-menu-container")), N = u, f.mdContainerClass) {
16105 var e = D[0].getAttribute("class") + " " + f.mdContainerClass;
16106 D[0].setAttribute("class", e)
16107 }(I = D.find("md-select-menu").controller("mdSelectMenu")).init(k, f.ngModel), d.on("$destroy", function() {
16110 }(), o(d), T && t.isDefined(f.multiple) && r.nextTick(function() {
16111 (k.$modelValue || k.$viewValue) && T.$setPristine()
16114 k.$render = function() {
16116 }, f.$observe("placeholder", k.$render), C && C.label && f.$observe("required", function(e) {
16117 C.label.toggleClass("md-required", e && !A)
16118 }), x.setLabelText = function(e) {
16119 x.setIsPlaceholder(!e);
16121 if (f.mdSelectedText && f.mdSelectedHtml) throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");
16122 f.mdSelectedText || f.mdSelectedHtml ? (e = c(f.mdSelectedText || f.mdSelectedHtml)(u), t = !0) : e || (e = f.placeholder || (C && C.label ? C.label.text() : "") || "", t = !0);
16123 var n = M.children().eq(0);
16124 f.mdSelectedHtml ? n.html(l.getTrustedHtml(e)) : t ? n.text(e) : n.html(e)
16125 }, x.setIsPlaceholder = function(e) {
16126 e ? (M.addClass("md-select-placeholder"), C && C.label && C.label.addClass("md-placeholder")) : (M.removeClass("md-select-placeholder"), C && C.label && C.label.removeClass("md-placeholder"))
16127 }, S || (d.on("focus", function(e) {
16128 C && C.setFocused(!0)
16129 }), d.on("blur", function(e) {
16130 E && (E = !1, N._mdSelectIsOpen && e.stopImmediatePropagation()), N._mdSelectIsOpen || (C && C.setFocused(!1), b())
16131 })), x.triggerClose = function() {
16133 }, u.$$postDigest(function() {
16135 }), u.$watch(function() {
16136 return I.selectedLabels()
16139 f.$observe("ngMultiple", function(e) {
16142 P = u.$watch(function() {
16144 }, function(e, t) {
16145 e === n && t === n || (e ? d.attr("multiple", "multiple") : d.removeAttr("multiple"), d.attr("aria-multiselectable", e ? "true" : "false"), D && (I.setMultiple(e), R = k.$render, k.$render = function() {
16149 }), f.$observe("disabled", function(e) {
16150 t.isString(e) && (e = !0), _ !== n && _ === e || (_ = e, e ? d.attr({
16151 "aria-disabled": "true"
16152 }).removeAttr("tabindex").off("click", $).off("keydown", y) : d.attr({
16153 tabindex: f.tabindex,
16154 "aria-disabled": "false"
16155 }).on("click", $).on("keydown", y))
16156 }), f.hasOwnProperty("disabled") || f.hasOwnProperty("ngDisabled") || (d.attr({
16157 "aria-disabled": "false"
16158 }), d.on("click", $), d.on("keydown", y));
16161 "aria-expanded": "false",
16162 "aria-multiselectable": m && !f.ngMultiple ? "true" : "false"
16164 d[0].hasAttribute("id") || (H.id = "select_" + r.nextUid());
16165 var j = "select_container_" + r.nextUid();
16166 D.attr("id", j), H["aria-owns"] = j, d.attr(H), u.$on("$destroy", function() {
16167 e.destroy().finally(function() {
16168 C && (C.setFocused(!1), C.setHasValue(!1), C.input = null), k.$setTouched()
16173 controller: function() {}
16177 function i(e, r, i, o) {
16178 function a(o, a, s) {
16180 var e = d.ngModel.$modelValue || d.ngModel.$viewValue || [];
16181 if (t.isArray(e)) {
16182 var n = Object.keys(d.selected),
16183 r = e.map(d.hashGetter);
16184 n.filter(function(e) {
16185 return -1 === r.indexOf(e)
16186 }).forEach(d.deselect), r.forEach(function(t, n) {
16193 var e = d.ngModel.$viewValue || d.ngModel.$modelValue;
16194 Object.keys(d.selected).forEach(d.deselect), d.select(d.hashGetter(e), e)
16197 d.isMultiple = t.isDefined(a.multiple), d.selected = {}, d.options = {}, o.$watchCollection(function() {
16200 d.ngModel.$render()
16203 d.setMultiple = function(e) {
16205 return t.isArray(e || n || [])
16208 f = f || r.$isEmpty, d.isMultiple = e, d.isMultiple ? (r.$validators["md-multiple"] = n, r.$render = c, o.$watchCollection(d.modelBinding, function(e) {
16209 n(e) && c(), d.ngModel.$setPristine()
16210 }), r.$isEmpty = function(e) {
16211 return !e || 0 === e.length
16212 }) : (delete r.$validators["md-multiple"], r.$render = u)
16214 var h, p, m, g = "";
16215 d.optNodeForKeyboardSearch = function(e) {
16216 h && clearTimeout(h), h = setTimeout(function() {
16217 h = n, g = "", m = n, p = n
16219 var r = e.keyCode - (i.isNumPadKey(e) ? 48 : 0);
16220 g += String.fromCharCode(r);
16221 var o = new RegExp("^" + g, "i");
16222 p || (p = s.find("md-option"), m = new Array(p.length), t.forEach(p, function(e, t) {
16223 m[t] = e.textContent.trim()
16225 for (var a = 0; a < m.length; ++a)
16226 if (o.test(m[a])) return p[a]
16227 }, d.init = function(n, i) {
16228 d.ngModel = n, d.modelBinding = i, d.ngModel.$isEmpty = function(e) {
16229 return !d.options[d.hashGetter(e)]
16231 var a = r.getModelOption(n, "trackBy");
16235 d.hashGetter = function(e, t) {
16236 return s.$value = e, c(t || o, s)
16238 } else d.hashGetter = function(e) {
16239 return t.isObject(e) ? "object_" + (e.$$mdSelectId || (e.$$mdSelectId = ++l)) : e
16241 d.setMultiple(d.isMultiple)
16242 }, d.selectedLabels = function(e) {
16243 var t = (e = e || {}).mode || "html",
16244 n = r.nodesToArray(s[0].querySelectorAll("md-option[selected]"));
16247 return "html" == t ? i = function(e) {
16248 if (e.hasAttribute("md-option-empty")) return "";
16249 var t = e.innerHTML,
16250 n = e.querySelector(".md-ripple-container");
16251 n && (t = t.replace(n.outerHTML, ""));
16252 var r = e.querySelector(".md-container");
16253 return r && (t = t.replace(r.outerHTML, "")), t
16254 } : "aria" == t && (i = function(e) {
16255 return e.hasAttribute("aria-label") ? e.getAttribute("aria-label") : e.textContent
16256 }), r.uniq(n.map(i)).join(", ")
16259 }, d.select = function(e, t) {
16260 var n = d.options[e];
16261 n && n.setSelected(!0), d.selected[e] = t
16262 }, d.deselect = function(e) {
16263 var t = d.options[e];
16264 t && t.setSelected(!1), delete d.selected[e]
16265 }, d.addOption = function(e, n) {
16266 if (t.isDefined(d.options[e])) throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "' + n.value + '" found.');
16267 d.options[e] = n, t.isDefined(d.selected[e]) && (d.select(e, n.value), t.isDefined(d.ngModel.$modelValue) && d.hashGetter(d.ngModel.$modelValue) === e && d.ngModel.$validate(), d.refreshViewValue())
16268 }, d.removeOption = function(e) {
16269 delete d.options[e]
16270 }, d.refreshViewValue = function() {
16272 for (var i in d.selected)(e = d.options[i]) ? n.push(e.value) : n.push(d.selected[i]);
16273 var o = r.getModelOption(d.ngModel, "trackBy"),
16274 a = d.isMultiple ? n : n[0],
16275 s = d.ngModel.$modelValue;
16276 (o ? t.equals(s, a) : s + "" === a) || (d.ngModel.$setViewValue(a), d.ngModel.$render())
16279 return a.$inject = ["$scope", "$attrs", "$element"], {
16281 require: ["mdSelectMenu"],
16285 pre: function(e, n, i, a) {
16287 var i = r.getClosest(n.target, "md-option"),
16288 o = i && t.element(i).data("$mdOptionController");
16290 if (i.hasAttribute("disabled")) return n.stopImmediatePropagation(), !1;
16291 var a = c.hashGetter(o.value),
16292 s = t.isDefined(c.selected[a]);
16293 e.$apply(function() {
16294 c.isMultiple ? s ? c.deselect(a) : c.select(a, o.value) : s || (c.deselect(Object.keys(c.selected)[0]), c.select(a, o.value)), c.refreshViewValue()
16299 n.addClass("_md"), o(n), n.on("click", s), n.on("keypress", function(e) {
16300 13 != e.keyCode && 32 != e.keyCode || s(e)
16307 function o(e, n, r) {
16314 function o(i, o, a, s) {
16315 function c(e, t, n) {
16316 if (d.hashGetter) {
16317 var r = d.hashGetter(t, i),
16318 o = d.hashGetter(e, i);
16319 l.hashKey = o, l.value = e, d.removeOption(r, l), d.addOption(o, l)
16320 } else n || i.$$postDigest(function() {
16326 r(o), d.isMultiple && (o.addClass("md-checkbox-enabled"), o.prepend(u.clone())), t.isDefined(a.ngValue) ? i.$watch(a.ngValue, c) : t.isDefined(a.value) ? c(a.value) : i.$watch(function() {
16327 return o.text().trim()
16328 }, c), a.$observe("disabled", function(e) {
16329 e ? o.attr("tabindex", "-1") : o.attr("tabindex", "0")
16330 }), i.$$postDigest(function() {
16331 a.$observe("selected", function(e) {
16332 t.isDefined(e) && ("string" == typeof e && (e = !0), e ? (d.isMultiple || d.deselect(Object.keys(d.selected)[0]), d.select(l.hashKey, l.value)) : d.deselect(l.hashKey), d.refreshViewValue())
16334 }), e.attach(i, o),
16338 "aria-selected": "false"
16340 o[0].hasAttribute("id") || (e.id = "select_option_" + n.nextUid()), o.attr(e)
16341 }(), i.$on("$destroy", function() {
16342 d.removeOption(l.hashKey, l)
16347 this.selected = !1, this.setSelected = function(t) {
16348 t && !this.selected ? e.attr({
16349 selected: "selected",
16350 "aria-selected": "true"
16351 }) : !t && this.selected && (e.removeAttr("selected"), e.attr("aria-selected", "false")), this.selected = t
16354 return a.$inject = ["$element"], {
16356 require: ["mdOption", "^^mdSelectMenu"],
16358 compile: function(e, n) {
16359 return e.append(t.element('<div class="md-text">').append(e.contents())), e.attr("tabindex", n.tabindex || "0"), i(n) || e.attr("md-option-empty", ""), o
16365 function i(r, i, d, f, h, p, m, g, v) {
16367 var t = e.selectCtrl;
16369 var n = e.selectEl.controller("mdSelectMenu");
16370 t.setLabelText(n ? n.selectedLabels() : ""), t.triggerClose()
16374 function y(n, r, i) {
16376 p = i.target[0].children[0],
16379 b = i.contentEl[0],
16380 y = m.getBoundingClientRect(),
16381 $ = p.getBoundingClientRect(),
16385 bottom: y.height - c,
16386 right: y.width - c - (d.floatingScrollbars() ? 16 : 0)
16389 top: $.top - _.top,
16390 left: $.left - _.left,
16391 right: _.right - ($.left + $.width),
16392 bottom: _.bottom - ($.top + $.height)
16394 E = y.width - 2 * c,
16395 C = g.querySelector("md-option[selected]"),
16396 x = g.getElementsByTagName("md-option"),
16397 k = g.getElementsByTagName("md-optgroup"),
16399 s = o(i.loadingAsync) ? b.firstElementChild || b : C || (k.length ? k[0] : x.length ? x[0] : b.firstElementChild || b), b.offsetWidth > E ? b.style["max-width"] = E + "px" : b.style.maxWidth = null, T && g.classList.add("md-overflow");
16401 "MD-OPTGROUP" === (M.tagName || "").toUpperCase() && (s = M = x[0] || b.firstElementChild || b), i.focusedNode = M, h.style.display = "block";
16402 var S = g.getBoundingClientRect(),
16405 var O = f.getComputedStyle(s);
16406 A.paddingLeft = parseInt(O.paddingLeft, 10) || 0, A.paddingRight = parseInt(O.paddingRight, 10) || 0
16409 var D = b.offsetHeight / 2;
16410 b.scrollTop = A.top + A.height / 2 - D, w.top < D ? b.scrollTop = Math.min(A.top, b.scrollTop + D - w.top) : w.bottom < D && (b.scrollTop = Math.max(A.top + A.height - S.height, b.scrollTop - D + w.bottom))
16413 N = $.left + A.left - A.paddingLeft + 2, I = Math.floor($.top + $.height / 2 - A.height / 2 - A.top + b.scrollTop) + 2, R = A.left + $.width / 2 + "px " + (A.top + A.height / 2 - b.scrollTop) + "px 0px", P = Math.min($.width + A.paddingLeft + A.paddingRight, E), H = e.getComputedStyle(p)["font-size"];
16414 var j = h.getBoundingClientRect(),
16415 L = Math.round(100 * Math.min($.width / S.width, 1)) / 100,
16416 F = Math.round(100 * Math.min($.height / S.height, 1)) / 100;
16419 element: t.element(h),
16421 left: Math.floor(a(_.left, N, _.right - j.width)),
16422 top: Math.floor(a(_.top, I, _.bottom - j.height)),
16428 element: t.element(g),
16430 transformOrigin: R,
16431 transform: i.alreadyOpen ? "" : d.supplant("scale({0},{1})", [L, F])
16436 var $ = "$mdSelect.show() expected a target element in options.target but got '{0}'!",
16437 _ = d.dom.animator,
16442 onShow: function(e, o, a) {
16444 return h(function(e) {
16445 if (a.isRemoved) return h.reject(!1);
16446 var t = y(0, o, a);
16447 t.container.element.css(_.toCss(t.container.styles)), t.dropDown.element.css(_.toCss(t.dropDown.styles)), p(function() {
16448 o.addClass("md-active"), t.dropDown.element.css(_.toCss({
16450 })), l(a.focusedNode), e()
16456 e && !e.hasAttribute("disabled") && e.focus()
16460 var e = function(e, t, n) {
16461 return function() {
16462 if (!n.isRemoved) {
16463 var e = y(0, t, n),
16466 r.element.css(_.toCss(r.styles)), i.element.css(_.toCss(i.styles))
16471 return n.on("resize", e), n.on("orientationchange", e),
16473 n.off("resize", e), n.off("orientationchange", e)
16479 e.preventDefault(), e.stopPropagation(), a.restoreFocus = !1, d.nextTick(r.hide, !0)
16483 switch (e.preventDefault(), e.stopPropagation(), e.keyCode) {
16490 var t = d.getClosest(e.target, "md-option");
16491 t && (h.triggerHandler({
16494 }), e.preventDefault()), f(e);
16498 e.stopPropagation(), e.preventDefault(), a.restoreFocus = !0, d.nextTick(r.hide, !0);
16502 var n = h.controller("mdSelectMenu").optNodeForKeyboardSearch(e);
16503 a.focusedNode = n || a.focusedNode, n && n.focus()
16509 var t, r = d.nodesToArray(a.optionNodes),
16510 i = r.indexOf(a.focusedNode);
16512 -1 === i ? i = 0 : "next" === e && i < r.length - 1 ? i++ : "prev" === e && i > 0 && i--, (t = r[i]).hasAttribute("disabled") && (t = n)
16513 } while (!t && i < r.length - 1 && i > 0);
16514 t && t.focus(), a.focusedNode = t
16526 if (!(e && "click" == e.type && e.currentTarget != h[0] || function() {
16528 if (e && e.currentTarget.children.length > 0) {
16529 var n = e.currentTarget.children[0];
16530 n.scrollHeight > n.clientHeight && n.children.length > 0 && e.pageX - e.currentTarget.getBoundingClientRect().left > n.querySelector("md-option").offsetWidth && (t = !0)
16534 var t = d.getClosest(e.target, "md-option");
16535 t && t.hasAttribute && !t.hasAttribute("disabled") && (e.preventDefault(), e.stopPropagation(), p.isMultiple || (a.restoreFocus = !0, d.nextTick(function() {
16536 r.hide(p.ngModel.$viewValue)
16540 if (!a.isRemoved) {
16541 var h = a.selectEl,
16542 p = h.controller("mdSelectMenu") || {};
16543 return o.addClass("md-clickable"), a.backdrop && a.backdrop.on("click", e), h.on("keydown", t), h.on("click", f),
16545 a.backdrop && a.backdrop.off("click", e), h.off("keydown", t), h.off("click", f), o.removeClass("md-clickable"), a.isRemoved = !0
16549 return a.loadingAsync && !a.isRemoved && (e.$$loadingAsyncDone = !1, h.when(a.loadingAsync).then(function() {
16550 e.$$loadingAsyncDone = !0, delete a.loadingAsync
16551 }).then(function() {
16555 var r = o.find("md-select-menu");
16556 if (!n.target) throw new Error(d.supplant($, [n.target]));
16559 target: t.element(n.target),
16560 parent: t.element(n.parent),
16562 contentEl: o.find("md-content"),
16563 optionNodes: r[0].getElementsByTagName("md-option")
16565 }(0, a), a.hideBackdrop = function(e, t, n) {
16566 return n.disableParentScroll && !d.getClosest(n.target, "MD-DIALOG") ? n.restoreScroll = d.disableScrollAround(n.element, n.parent) : n.disableParentScroll = !1, n.hasBackdrop && (n.backdrop = d.createBackdrop(e, "md-select-backdrop md-click-catcher"), g.enter(n.backdrop, v[0].body, null, {
16570 n.backdrop && n.backdrop.remove(), n.disableParentScroll && n.restoreScroll(), delete n.restoreScroll
16573 function(e, t, n) {
16574 return n.parent.append(t), h(function(e, n) {
16577 removeClass: "md-leave",
16579 }).start().then(c).then(e)
16584 }(0, o, a).then(function(e) {
16585 return o.attr("aria-hidden", "false"), a.alreadyOpen = !0, a.cleanupInteraction = b(), a.cleanupResizing = u(), e
16588 onRemove: function(e, t, n) {
16590 t.removeClass("md-active"), t.attr("aria-hidden", "true"), t[0].style.display = "none", b(n), !n.$destroy && n.restoreFocus && n.target.focus()
16592 return (n = n || {}).cleanupInteraction(), n.cleanupResizing(), n.hideBackdrop(), !0 === n.$destroy ? r() : m(t, {
16593 addClass: "md-leave"
16597 disableParentScroll: !0
16602 return e && t.isFunction(e.then)
16605 function a(e, t, n) {
16606 return Math.max(e, Math.min(t, n))
16611 left: e.offsetLeft,
16613 width: e.offsetWidth,
16614 height: e.offsetHeight
16626 var r = e[0].style.display;
16627 e[0].style.display = "block", n = t.scrollHeight > t.offsetHeight, e[0].style.display = r
16631 return i.$inject = ["$mdSelect", "$mdConstant", "$mdUtil", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$document"], r("$mdSelect").setDefaults({
16632 methods: ["target"],
16638 var n = String.fromCharCode(e.keyCode),
16639 r = e.keyCode <= 31;
16640 return n && n.length && !r && !t.isMetaKey(e) && !t.isFnLockKey(e) && !t.hasModifierKey(e)
16642 r.$inject = ["$mdSelect", "$mdUtil", "$mdConstant", "$mdTheming", "$mdAria", "$parse", "$sce", "$injector"], i.$inject = ["$parse", "$mdUtil", "$mdConstant", "$mdTheming"], o.$inject = ["$mdButtonInkRipple", "$mdUtil", "$mdTheming"], a.$inject = ["$$interimElementProvider"];
16645 u = t.element('<div class="md-container"><div class="md-icon"></div></div>');
16646 t.module("material.components.select", ["material.core", "material.components.backdrop"]).directive("mdSelect", r).directive("mdSelectMenu", i).directive("mdOption", o).directive("mdOptgroup", function() {
16649 compile: function(e, n) {
16650 e.parent().find("md-select-header").length || function() {
16651 var r = e.find("label");
16652 r.length || (r = t.element("<label>"), e.prepend(r)), r.addClass("md-container-ignore"), n.label && r.text(n.label)
16656 }).directive("mdSelectHeader", function() {
16660 }).provider("$mdSelect", a)
16663 function e(e, n, r, i, o, a, s, c, l, u) {
16664 function d(r, d, f, h) {
16670 Z = parseFloat(e), d.attr("aria-valuemin", e), p()
16674 X = parseFloat(e), d.attr("aria-valuemax", e), p()
16682 J = x(parseInt(e), 0, 6)
16686 if (Y && !H() && !t.isUndefined(Q)) {
16688 var e = "Slider step value must be greater than zero when in discrete mode";
16689 throw l.error(e), new Error(e)
16691 var r = Math.floor((X - Z) / Q);
16692 ee || (ee = t.element("<canvas>").css("position", "absolute"), V.append(ee), te = ee[0].getContext("2d"));
16694 !i || i.height || i.width || (_(), i = ne), ee[0].width = i.width, ee[0].height = i.height;
16695 for (var o, a = 0; a <= r; a++) {
16696 var s = n.getComputedStyle(V[0]);
16697 te.fillStyle = s.color || "black", o = Math.floor((W ? i.height : i.width) * (a / r)), te.fillRect(W ? 0 : o - 1, W ? o - 1 : 0, W ? i.width : 2, W ? 2 : i.height)
16705 te.clearRect(0, 0, e.width, e.height)
16710 ne = q[0].getBoundingClientRect()
16718 R.$setViewValue(x(k(e)))
16722 isNaN(R.$viewValue) && (R.$viewValue = R.$modelValue), R.$viewValue = x(R.$viewValue);
16723 var e = I(R.$viewValue);
16724 r.modelValue = R.$viewValue, d.attr("aria-valuenow", R.$viewValue), T(e), L.text(R.$viewValue)
16727 function x(e, n, r) {
16728 if (t.isNumber(e)) return n = t.isNumber(n) ? n : Z, r = t.isNumber(r) ? r : X, Math.max(n, Math.min(r, e))
16732 if (t.isNumber(e)) {
16733 var n = Math.round((e - Z) / Q) * Q + Z;
16734 return n = Math.round(n * Math.pow(10, J)) / Math.pow(10, J), P && P.fitInputWidthToTextLength && i.debounce(function() {
16735 P.fitInputWidthToTextLength(n.toString().length)
16741 var t = 100 * (e = O(e)) + "%",
16742 n = G ? 100 * (1 - e) + "%" : t;
16743 W ? F.css("bottom", t) : i.bidiProperty(F, "left", "right", t), U.css(W ? "height" : "width", n), d.toggleClass(G ? "md-max" : "md-min", 0 === e), d.toggleClass(G ? "md-min" : "md-max", 1 === e)
16747 Y ? A(W ? e.pointer.y : e.pointer.x) : S(W ? e.pointer.y : e.pointer.x)
16751 r.$evalAsync(function() {
16757 var t = x(k(N(D(e))));
16762 return Math.max(0, Math.min(e || 0, 1))
16766 var t = (e - (W ? ne.top : ne.left)) / (W ? ne.height : ne.width);
16767 return W || "rtl" !== i.bidi() || (t = 1 - t), Math.max(0, Math.min(1, W ? 1 - t : t))
16771 return Z + (G ? 1 - e : e) * (X - Z)
16775 var t = (e - Z) / (X - Z);
16776 return G ? 1 - t : t
16780 $setViewValue: function(e) {
16781 this.$viewValue = e, this.$viewChangeListeners.forEach(function(e) {
16787 $viewChangeListeners: []
16790 H = (t.element(i.getClosest(d, "_md-slider-container", !0)), f.ngDisabled ? t.bind(null, c(f.ngDisabled), r.$parent) : function() {
16791 return d[0].hasAttribute("disabled")
16793 j = t.element(d[0].querySelector(".md-thumb")),
16794 L = t.element(d[0].querySelector(".md-thumb-text")),
16796 q = t.element(d[0].querySelector(".md-track-container")),
16797 U = t.element(d[0].querySelector(".md-track-fill")),
16798 V = t.element(d[0].querySelector(".md-track-ticks")),
16799 B = t.element(d[0].getElementsByClassName("md-slider-wrapper")),
16800 z = (t.element(d[0].getElementsByClassName("md-slider-content")), i.throttle(_, 5e3)),
16801 W = t.isDefined(f.mdVertical),
16802 Y = t.isDefined(f.mdDiscrete),
16803 G = t.isDefined(f.mdInvert);
16804 t.isDefined(f.min) ? f.$observe("min", m) : m(0), t.isDefined(f.max) ? f.$observe("max", g) : g(100), t.isDefined(f.step) ? f.$observe("step", v) : v(1), t.isDefined(f.round) ? f.$observe("round", b) : b(3);
16806 f.ngDisabled && r.$parent.$watch(f.ngDisabled, function() {
16807 d.attr("aria-disabled", !!H())
16808 }), s.register(B, "drag", {
16810 }), r.mouseActive = !1, B.on("keydown", function(e) {
16813 (W ? e.keyCode === o.KEY_CODE.DOWN_ARROW : e.keyCode === o.KEY_CODE.LEFT_ARROW) ? t = -Q: (W ? e.keyCode === o.KEY_CODE.UP_ARROW : e.keyCode === o.KEY_CODE.RIGHT_ARROW) && (t = Q), (t = G ? -t : t) && ((e.metaKey || e.ctrlKey || e.altKey) && (t *= 4), e.preventDefault(), e.stopPropagation(), r.$evalAsync(function() {
16814 E(R.$viewValue + t)
16817 }).on("mousedown", function() {
16818 y(), r.mouseActive = !0, B.removeClass("md-focused"), u(function() {
16821 }).on("focus", function() {
16822 !1 === r.mouseActive && B.addClass("md-focused")
16823 }).on("blur", function() {
16824 B.removeClass("md-focused"), d.removeClass("md-active"), $()
16825 }).on("$md.pressdown", function(e) {
16827 d.addClass("md-active"), d[0].focus(), _();
16828 var t = x(k(N(D(W ? e.pointer.y : e.pointer.x))));
16829 r.$apply(function() {
16833 }).on("$md.pressup", function(e) {
16835 d.removeClass("md-dragging");
16836 var t = x(k(N(D(W ? e.pointer.y : e.pointer.x))));
16837 r.$apply(function() {
16841 }).on("$md.dragstart", function(e) {
16842 H() || (re = !0, e.stopPropagation(), d.addClass("md-dragging"), M(e))
16843 }).on("$md.drag", function(e) {
16844 re && (e.stopPropagation(), M(e))
16845 }).on("$md.dragend", function(e) {
16846 re && (e.stopPropagation(), re = !1)
16847 }), setTimeout(p, 0);
16848 var K = e.throttle(p);
16849 t.element(n).on("resize", K), r.$on("$destroy", function() {
16850 t.element(n).off("resize", K)
16851 }), R.$render = C, R.$viewChangeListeners.push(C), R.$formatters.push(x), R.$formatters.push(k);
16852 var Z, X, Q, J, ee, te, ne = {};
16858 require: ["?ngModel", "?^mdSliderContainer"],
16859 template: '<div class="md-slider-wrapper"><div class="md-slider-content"><div class="md-track-container"><div class="md-track"></div><div class="md-track md-track-fill"></div><div class="md-track-ticks"></div></div><div class="md-thumb-container"><div class="md-thumb"></div><div class="md-focus-thumb"></div><div class="md-focus-ring"></div><div class="md-sign"><span class="md-thumb-text"></span></div><div class="md-disabled-thumb"></div></div></div></div>',
16860 compile: function(e, n) {
16861 var i = t.element(e[0].getElementsByClassName("md-slider-wrapper")),
16862 o = n.tabindex || 0;
16863 return i.attr("tabindex", o), (n.disabled || n.ngDisabled) && i.attr("tabindex", -1), i.attr("role", "slider"), r.expect(e, "aria-label"), d
16867 e.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse", "$log", "$timeout"], t.module("material.components.slider", ["material.core"]).directive("mdSlider", e).directive("mdSliderContainer", function() {
16869 controller: function() {},
16870 compile: function(e) {
16871 var r = e.find("md-slider");
16872 if (r) return r.attr("md-vertical") !== n && e.attr("md-vertical", ""), r.attr("flex") || r.attr("flex", ""),
16873 function(e, n, r, i) {
16875 n.children().attr("disabled", e), n.find("input").attr("disabled", e)
16879 r.disabled ? o(!0) : r.ngDisabled && (a = e.$watch(r.ngDisabled, function(e) {
16881 })), e.$on("$destroy", function() {
16885 i.fitInputWidthToTextLength = function(e) {
16886 var t = n[0].querySelector("md-input-container");
16888 var r = getComputedStyle(t),
16889 i = parseInt(r.minWidth),
16890 o = 2 * parseInt(r.padding);
16891 s = s || parseInt(r.maxWidth);
16892 var a = Math.max(s, i + o + i / 2 * e);
16893 t.style.maxWidth = a + "px"
16902 function e(e, t, r, i) {
16905 p.items.forEach(s), p.items = p.items.sort(function(e, t) {
16906 return e.top < t.top ? -1 : 1
16908 for (var e, t = f.prop("scrollTop"), n = p.items.length - 1; n >= 0; n--)
16909 if (t > p.items[n].top) {
16917 var t = e.element[0];
16918 for (e.top = 0, e.left = 0, e.right = 0; t && t !== f[0];) e.top += t.offsetTop, e.left += t.offsetLeft, t.offsetParent && (e.right += t.offsetParent.offsetWidth - t.offsetWidth - t.offsetLeft), t = t.offsetParent;
16919 e.height = e.element.prop("offsetHeight");
16920 var i = r.floatingScrollbars() ? "0" : n;
16921 r.bidi(e.clone, "margin-left", e.left, i), r.bidi(e.clone, "margin-right", i, e.right)
16925 var e = f.prop("scrollTop"),
16926 t = e > (c.prevScrollTop || 0);
16927 if (c.prevScrollTop = e, 0 !== e) {
16929 if (p.next && p.next.top <= e) return void l(p.next);
16930 if (p.current && p.next && p.next.top - e <= p.next.height) return void d(p.current, e + (p.next.top - p.next.height - e))
16933 if (p.current && p.prev && e < p.current.top) return void l(p.prev);
16934 if (p.next && p.current && e >= p.next.top - p.current.height) return void d(p.current, e + (p.next.top - e - p.current.height))
16936 p.current && d(p.current, e)
16941 if (p.current !== e) {
16942 p.current && (d(p.current, null), u(p.current, null)), e && u(e, "active"), p.current = e;
16943 var t = p.items.indexOf(e);
16944 p.next = p.items[t + 1], p.prev = p.items[t - 1], u(p.next, "next"), u(p.prev, "prev")
16949 e && e.state !== t && (e.state && (e.clone.attr("sticky-prev-state", e.state), e.element.attr("sticky-prev-state", e.state)), e.clone.attr("sticky-state", t), e.element.attr("sticky-state", t), e.state = t)
16953 t && (null === i || i === n ? t.translateY && (t.translateY = null, t.clone.css(e.CSS.TRANSFORM, "")) : (t.translateY = i, r.bidi(t.clone, e.CSS.TRANSFORM, "translate3d(" + t.left + "px," + i + "px,0)", "translateY(" + i + "px)")))
16955 var f = i.$element,
16957 a(f), f.on("$scrollstart", h), f.on("$scroll", c);
16964 add: function(e, t) {
16965 t.addClass("md-sticky-clone");
16970 return p.items.push(n), r.nextTick(function() {
16974 p.items.forEach(function(t, n) {
16975 t.element[0] === e[0] && (p.items.splice(n, 1), t.clone.remove())
16985 +r.now() - o > a ? (i = !1, e.triggerHandler("$scrollend")) : (e.triggerHandler("$scroll"), t.throttle(n))
16988 e.on("scroll touchmove", function() {
16989 i || (i = !0, t.throttle(n), e.triggerHandler("$scrollstart")), e.triggerHandler("$scroll"), o = +r.now()
16992 var s = r.checkStickySupport();
16993 return function(e, t, n) {
16994 var r = t.controller("mdContent");
17002 var a = r.$element.data("$$sticky");
17003 a || (a = o(r), r.$element.data("$$sticky", a));
17004 var c = n || i(t.clone())(e),
17006 e.$on("$destroy", l)
17010 e.$inject = ["$mdConstant", "$$rAF", "$mdUtil", "$compile"], t.module("material.components.sticky", ["material.core", "material.components.content"]).factory("$mdSticky", e)
17013 function e(e, n, r, i, o) {
17018 template: '<div class="md-subheader _md"> <div class="md-subheader-inner"> <div class="md-subheader-content"></div> </div></div>',
17019 link: function(a, s, c, l, u) {
17021 return t.element(e[0].querySelector(".md-subheader-content"))
17023 r(s), s.addClass("_md"), i.prefixer().removeAttribute(s, "ng-repeat");
17024 var f = s[0].outerHTML;
17025 c.$set("role", "heading"), o.expect(s, "aria-level", "2"), u(a, function(e) {
17027 }), s.hasClass("md-no-sticky") || u(a, function(t) {
17028 var r = n('<div class="md-subheader-wrapper" aria-hidden="true">' + f + "</div>")(a);
17029 i.nextTick(function() {
17036 e.$inject = ["$mdSticky", "$compile", "$mdTheming", "$mdUtil", "$mdAria"], t.module("material.components.subheader", ["material.core", "material.components.sticky"]).directive("mdSubheader", e)
17039 function e(e, n, r, i, o, a, s) {
17043 priority: r.BEFORE_NG_ARIA,
17045 template: '<div class="md-container"><div class="md-bar"></div><div class="md-thumb-container"><div class="md-thumb" md-ink-ripple md-ink-ripple-checkbox></div></div></div><div ng-transclude class="md-label"></div>',
17046 require: ["^?mdInputContainer", "?ngModel", "?^form"],
17047 compile: function(e, l) {
17048 var u = c.compile(e, l).post;
17049 return e.addClass("md-dragging"),
17050 function(e, c, l, d) {
17052 e.$apply(function() {
17053 h.$setViewValue(t), h.$render()
17057 var h = d[1] || n.fakeNgModel(),
17059 null != l.disabled ? p = function() {
17061 } : l.ngDisabled && (p = i(l.ngDisabled));
17062 var m = t.element(c[0].querySelector(".md-thumb-container")),
17063 g = t.element(c[0].querySelector(".md-container")),
17064 v = t.element(c[0].querySelector(".md-label"));
17066 c.removeClass("md-dragging")
17067 }), u(e, c, l, d), p && e.$watch(p, function(e) {
17068 c.attr("tabindex", e ? -1 : 0)
17069 }), l.$observe("mdInvert", function(e) {
17070 var t = n.parseAttributeBoolean(e);
17071 t ? c.prepend(v) : c.prepend(g), c.toggleClass("md-inverted", t)
17072 }), a.register(g, "drag"), g.on("$md.dragstart", function(t) {
17073 p && p(e) || (t.stopPropagation(), c.addClass("md-dragging"), b = {
17074 width: m.prop("offsetWidth")
17076 }).on("$md.drag", function(e) {
17078 e.stopPropagation(), e.srcEvent && e.srcEvent.preventDefault();
17079 var t = e.pointer.distanceX / b.width,
17080 n = h.$viewValue ? 1 + t : t;
17081 n = Math.max(0, Math.min(1, n)), m.css(r.CSS.TRANSFORM, "translate3d(" + 100 * n + "%,0,0)"), b.translate = n
17083 }).on("$md.dragend", function(t) {
17084 b && (t.stopPropagation(), c.removeClass("md-dragging"), m.css(r.CSS.TRANSFORM, ""), (h.$viewValue ? b.translate < .5 : b.translate > .5) && f(!h.$viewValue), b = null, e.skipToggle = !0, s(function() {
17093 e.$inject = ["mdCheckboxDirective", "$mdUtil", "$mdConstant", "$parse", "$$rAF", "$mdGesture", "$timeout"], t.module("material.components.switch", ["material.core", "material.components.checkbox"]).directive("mdSwitch", e)
17100 link: function(t, i, o) {
17101 i.css("touch-action", o.mdSwipeTouchAction || "none");
17103 i.on(r, function(e) {
17104 t.$applyAsync(function() {
17113 t.$inject = ["$parse"];
17115 r = "$md." + e.toLowerCase();
17118 t.module("material.components.swipe", ["material.core"]).directive("mdSwipeLeft", e("SwipeLeft")).directive("mdSwipeRight", e("SwipeRight")).directive("mdSwipeUp", e("SwipeUp")).directive("mdSwipeDown", e("SwipeDown"))
17119 }(), t.module("material.components.tabs", ["material.core", "material.components.icon"]),
17124 link: function(t, n) {
17125 n.addClass("_md"), t.$on("$destroy", function() {
17137 function r(e, n, r, o) {
17139 return o("gt-xs") ? "md-toast-open-" + (e.indexOf("top") > -1 ? "top" : "bottom") : "md-toast-open-bottom"
17141 var s = "$md.swipeleft $md.swiperight $md.swipeup $md.swipedown";
17143 onShow: function(t, c, l) {
17144 i = l.textContent || l.content;
17145 var u = !o("gt-sm");
17146 return c = r.extractElementByName(c, "md-toast", !0), l.element = c, l.onSwipe = function(e, t) {
17147 var i = e.type.replace("$md.", ""),
17148 o = i.replace("swipe", "");
17149 "down" === o && -1 != l.position.indexOf("top") && !u || "up" === o && (-1 != l.position.indexOf("bottom") || u) || ("left" !== o && "right" !== o || !u) && (c.addClass("md-" + i), r.nextTick(n.cancel))
17150 }, l.openClass = a(l.position), c.addClass(l.toastClass), l.parent.addClass(l.openClass), r.hasComputedStyle(l.parent, "position", "static") && l.parent.css("position", "relative"), c.on(s, l.onSwipe), c.addClass(u ? "md-bottom" : l.position.split(" ").map(function(e) {
17152 }).join(" ")), l.parent && l.parent.addClass("md-toast-animating"), e.enter(c, l.parent).then(function() {
17153 l.parent && l.parent.removeClass("md-toast-animating")
17156 onRemove: function(t, n, i) {
17157 return n.off(s, i.onSwipe), i.parent && i.parent.addClass("md-toast-animating"), i.openClass && i.parent.removeClass(i.openClass), (1 == i.$destroy ? n.remove() : e.leave(n)).then(function() {
17158 i.parent && i.parent.removeClass("md-toast-animating"), r.hasComputedStyle(i.parent, "position", "static") && i.parent.css("position", "")
17162 position: "bottom left",
17166 transformTemplate: function(e, n) {
17167 if (n.autoWrap && e && !/md-toast-content/g.test(e)) {
17168 var r = document.createElement("md-template");
17170 for (var i = 0; i < r.children.length; i++)
17171 if ("MD-TOAST" === r.children[i].nodeName) {
17172 var o = t.element('<div class="md-toast-content">');
17173 o.append(t.element(r.children[i].childNodes)), r.children[i].appendChild(o[0])
17181 r.$inject = ["$animate", "$mdToast", "$mdUtil", "$mdMedia"];
17183 return e("$mdToast").setDefaults({
17184 methods: ["position", "hideDelay", "capsule", "parent", "position", "toastClass"],
17186 }).addPreset("simple", {
17187 argOption: "textContent",
17188 methods: ["textContent", "content", "action", "highlightAction", "highlightClass", "theme", "parent"],
17189 options: ["$mdToast", "$mdTheming", function(e, t) {
17191 template: '<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}"> <div class="md-toast-content"> <span class="md-toast-text" role="alert" aria-relevant="all" aria-atomic="true"> {{ toast.content }} </span> <md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="highlightClasses"> {{ toast.action }} </md-button> </div></md-toast>',
17192 controller: ["$scope", function(t) {
17194 n.highlightAction && (t.highlightClasses = ["md-highlight", n.highlightClass]), t.$watch(function() {
17198 }), this.resolve = function() {
17202 theme: t.defaultTheme(),
17203 controllerAs: "toast",
17204 bindToController: !0
17207 }).addMethod("updateTextContent", n).addMethod("updateContent", n)
17209 e.$inject = ["$mdToast"], n.$inject = ["$$interimElementProvider"], t.module("material.components.toast", ["material.core", "material.components.button"]).directive("mdToast", e).provider("$mdToast", n)
17212 function e(e, n, r, i, o) {
17213 var a = t.bind(null, r.supplant, "translate3d(0,{0}px,0)");
17217 link: function(s, c, l) {
17218 c.addClass("_md"), i(c), r.nextTick(function() {
17219 c.addClass("_md-toolbar-transitions")
17220 }, !1), t.isDefined(l.mdScrollShrink) && function() {
17222 t && c.parent()[0] === t.parent()[0] && (p && p.off("scroll", y), p = t, m = d())
17226 var t = e ? e.target.scrollTop : v;
17227 $(), g = Math.min(h / b, Math.max(0, g + t - v)), c.css(n.CSS.TRANSFORM, a([-g * b])), p.css(n.CSS.TRANSFORM, a([(h - g) * b])), v = t, r.nextTick(function() {
17228 var e = c.hasClass("md-whiteframe-z1");
17229 e && !g ? o.removeClass(c, "md-whiteframe-z1") : !e && g && o.addClass(c, "md-whiteframe-z1")
17234 return p ? (p.on("scroll", y), p.attr("scroll-shrink", "true"), r.nextTick(f, !1), function() {
17235 p.off("scroll", y), p.attr("scroll-shrink", "false"), f()
17240 var e = -(h = c.prop("offsetHeight")) * b + "px";
17246 var h, p, m = t.noop,
17249 b = l.mdShrinkSpeedFactor || .5,
17251 $ = r.debounce(f, 5e3);
17252 s.$on("$mdContentLoaded", i), l.$observe("mdScrollShrink", function(e) {
17253 var t = c.parent().find("md-content");
17254 !p && t.length && i(0, t), !1 === (e = s.$eval(e)) ? m() : m = d()
17255 }), l.ngShow && s.$watch(l.ngShow, f), l.ngHide && s.$watch(l.ngHide, f), s.$on("$destroy", m)
17260 e.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming", "$animate"], t.module("material.components.toolbar", ["material.core", "material.components.content"]).directive("mdToolbar", e)
17263 function n(e, n, r, i, o, a, s, c) {
17264 var l = "focus touchstart mouseenter",
17265 u = "blur touchcancel mouseleave",
17271 x: s.xPosition.CENTER,
17272 y: s.yPosition.ABOVE
17275 x: s.xPosition.OFFSET_END,
17276 y: s.yPosition.CENTER
17279 x: s.xPosition.CENTER,
17280 y: s.yPosition.BELOW
17283 x: s.xPosition.OFFSET_START,
17284 y: s.yPosition.CENTER
17291 mdZIndex: "=?mdZIndex",
17292 mdDelay: "=?mdDelay",
17293 mdVisible: "=?mdVisible",
17294 mdAutohide: "=?mdAutohide",
17295 mdDirection: "@?mdDirection"
17297 link: function(m, g, v) {
17299 m.mdZIndex = m.mdZIndex || d, m.mdDelay = m.mdDelay || f, p[m.mdDirection] || (m.mdDirection = h)
17303 var t = e || o(g.text().trim())(m.$parent);
17304 (!D.attr("aria-label") && !D.attr("aria-labelledby") || D.attr("md-labeled-by-tooltip")) && (D.attr("aria-label", t), D.attr("md-labeled-by-tooltip") || D.attr("md-labeled-by-tooltip", O))
17308 b(), M && M.panelEl && M.panelEl.removeClass(x), x = "md-origin-" + m.mdDirection, k = p[m.mdDirection], T = s.newPanelPosition().relativeTo(D).addPanelPosition(k.x, k.y), M && M.panelEl && (M.panelEl.addClass(x), M.updatePosition(T))
17312 _.queued && _.value === !!t || !_.queued && m.mdVisible === !!t || (_.value = !!t, _.queued || (t ? (_.queued = !0, A = e(function() {
17313 m.mdVisible = _.value, _.queued = !1, A = null, m.visibleWatcher || w(m.mdVisible)
17314 }, m.mdDelay)) : a.nextTick(function() {
17315 m.mdVisible = !1, m.visibleWatcher || w(!1)
17324 if (!g[0].textContent.trim()) throw new Error("Text for the tooltip has not been provided. Please include text within the mdTooltip element.");
17326 var e = t.element(document.body),
17327 n = s.newPanelAnimation().openFrom(D).closeTo(D).withAnimation({
17335 propagateContainerEvents: !0,
17336 panelClass: "md-tooltip " + x,
17339 zIndex: m.mdZIndex,
17344 M.open().then(function() {
17345 M.panelEl.attr("role", "tooltip")
17352 var x, k, T, M, S, A, O = "md-tooltip-" + a.nextUid(),
17353 D = a.getParentWithPointerEvents(g),
17357 b(), y(), g.detach(), $(),
17360 return e.some(function(e) {
17361 return "disabled" === e.attributeName && D[0].disabled
17370 R = document.activeElement === D[0]
17374 "focus" === e.type && R ? R = !1 : m.mdVisible || (D.on(u, d), _(!0), "touchstart" === e.type && D.one("touchend", function() {
17375 a.nextTick(function() {
17376 i.one("touchend", d)
17382 ((S = m.hasOwnProperty("mdAutohide") ? m.mdAutohide : v.hasOwnProperty("mdAutohide")) || I || i[0].activeElement !== D[0]) && (A && (e.cancel(A), _.queued = !1, A = null), D.off(u, d), D.triggerHandler("blur"), _(!1)), I = !1
17388 if (D[0] && "MutationObserver" in n) {
17389 var h = new MutationObserver(function(e) {
17390 t(e) && a.nextTick(function() {
17398 R = !1, c.register("scroll", r, !0), c.register("blur", o), c.register("resize", N), m.$on("$destroy", function() {
17399 c.deregister("scroll", r, !0), c.deregister("blur", o), c.deregister("resize", N), D.off(l, s).off(u, d).off("mousedown", f), d(), h && h.disconnect()
17400 }), D.on("mousedown", f), D.on(l, s)
17406 if (g[0] && "MutationObserver" in n) {
17407 var t = new MutationObserver(function(e) {
17408 e.forEach(function(e) {
17409 "md-visible" !== e.attributeName || m.visibleWatcher || (m.visibleWatcher = m.$watch("mdVisible", w))
17414 }), v.hasOwnProperty("mdVisible") && (m.visibleWatcher = m.$watch("mdVisible", w))
17415 } else m.visibleWatcher = m.$watch("mdVisible", w);
17416 m.$watch("mdDirection", $), g.one("$destroy", e), D.one("$destroy", e), m.$on("$destroy", function() {
17417 _(!1), M && M.destroy(), t && t.disconnect(), g.remove()
17418 }), g.text().indexOf(o.startSymbol()) > -1 && m.$watch(function() {
17419 return g.text().trim()
17425 n.$inject = ["$timeout", "$window", "$$rAF", "$document", "$interpolate", "$mdUtil", "$mdPanel", "$$mdTooltipRegistry"], t.module("material.components.tooltip", ["material.core", "material.components.panel"]).directive("mdTooltip", n).service("$$mdTooltipRegistry", function() {
17427 r[e.type] && r[e.type].forEach(function(t) {
17434 register: function(t, o, a) {
17435 var s = r[t] = r[t] || [];
17436 s.length || (a ? e.addEventListener(t, n, !0) : i.on(t, n)), -1 === s.indexOf(o) && s.push(o)
17438 deregister: function(t, o, a) {
17440 c = s ? s.indexOf(o) : -1;
17441 c > -1 && (s.splice(c, 1), 0 === s.length && (a ? e.removeEventListener(t, n, !0) : i.off(t, n)))
17448 e.addClass("md-truncate")
17450 e.$inject = ["$element"], t.module("material.components.truncate", ["material.core"]).directive("mdTruncate", function() {
17454 controllerAs: "$ctrl",
17455 bindToController: !0
17461 return '<div class="md-virtual-repeat-scroller"><div class="md-virtual-repeat-sizer"></div><div class="md-virtual-repeat-offsetter">' + e[0].innerHTML + "</div></div>"
17464 function n(e, n, r, i, o, a, s, c, l) {
17465 this.$rootScope = o, this.$scope = s, this.$element = c, this.$attrs = l, this.size = 0, this.scrollSize = 0, this.scrollOffset = 0, this.horizontal = this.$attrs.hasOwnProperty("mdOrientHorizontal"), this.repeater = null, this.autoShrink = this.$attrs.hasOwnProperty("mdAutoShrink"), this.autoShrinkMin = parseInt(this.$attrs.mdAutoShrinkMin, 10) || 0, this.originalSize = null, this.offsetSize = parseInt(this.$attrs.mdOffsetSize, 10) || 0, this.oldElementSize = null, this.maxElementPixels = r.ELEMENT_MAX_PIXELS, this.$attrs.mdTopIndex ? (this.bindTopIndex = i(this.$attrs.mdTopIndex), this.topIndex = this.bindTopIndex(this.$scope), t.isDefined(this.topIndex) || (this.topIndex = 0, this.bindTopIndex.assign(this.$scope, 0)), this.$scope.$watch(this.bindTopIndex, t.bind(this, function(e) {
17466 e !== this.topIndex && this.scrollToIndex(e)
17467 }))) : this.topIndex = 0, this.scroller = c[0].querySelector(".md-virtual-repeat-scroller"), this.sizer = this.scroller.querySelector(".md-virtual-repeat-sizer"), this.offsetter = this.scroller.querySelector(".md-virtual-repeat-offsetter");
17468 var u = t.bind(this, this.updateSize);
17469 e(t.bind(this, function() {
17471 var e = n.debounce(u, 10, null, !1),
17473 this.size || e(), r.on("resize", e), s.$on("$destroy", function() {
17475 }), s.$emit("$md-resize-enable"), s.$on("$md-resize", u)
17483 require: ["mdVirtualRepeat", "^^mdVirtualRepeatContainer"],
17486 transclude: "element",
17487 compile: function(t, n) {
17488 var r = n.mdVirtualRepeat.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)\s*$/),
17491 a = n.mdExtraName && e(n.mdExtraName);
17492 return function(e, t, n, r, s) {
17493 r[0].link_(r[1], s, i, o, a)
17499 function i(e, n, r, i, o, a, s, c) {
17500 this.$scope = e, this.$element = n, this.$attrs = r, this.$browser = i, this.$document = o, this.$rootScope = a, this.$$rAF = s, this.onDemand = c.parseAttributeBoolean(r.mdOnDemand), this.browserCheckUrlChange = i.$$checkUrlChange, this.newStartIndex = 0, this.newEndIndex = 0, this.newVisibleEnd = 0, this.startIndex = 0, this.endIndex = 0, this.itemSize = e.$eval(r.mdItemSize) || null, this.isFirstRender = !0, this.isVirtualRepeatUpdating_ = !1, this.itemsLength = 0, this.unwatchItemSize_ = t.noop, this.blocks = {}, this.pooledBlocks = [], e.$on("$destroy", t.bind(this, this.cleanupBlocks_))
17504 if (!t.isFunction(e.getItemAtIndex) || !t.isFunction(e.getLength)) throw Error("When md-on-demand is enabled, the Object passed to md-virtual-repeat must implement functions getItemAtIndex() and getLength() ");
17507 n.$inject = ["$$rAF", "$mdUtil", "$mdConstant", "$parse", "$rootScope", "$window", "$scope", "$element", "$attrs"], i.$inject = ["$scope", "$element", "$attrs", "$browser", "$document", "$rootScope", "$$rAF", "$mdUtil"], r.$inject = ["$parse"], t.module("material.components.virtualRepeat", ["material.core", "material.components.showHide"]).directive("mdVirtualRepeatContainer", function() {
17511 compile: function(e, t) {
17512 e.addClass("md-virtual-repeat-container").addClass(t.hasOwnProperty("mdOrientHorizontal") ? "md-orient-horizontal" : "md-orient-vertical")
17515 }).directive("mdVirtualRepeat", r);
17516 n.prototype.register = function(e) {
17517 this.repeater = e, t.element(this.scroller).on("scroll wheel touchmove touchend", t.bind(this, this.handleScroll_))
17518 }, n.prototype.isHorizontal = function() {
17519 return this.horizontal
17520 }, n.prototype.getSize = function() {
17522 }, n.prototype.setSize_ = function(e) {
17523 var t = this.getDimensionName_();
17524 this.size = e, this.$element[0].style[t] = e + "px"
17525 }, n.prototype.unsetSize_ = function() {
17526 this.$element[0].style[this.getDimensionName_()] = this.oldElementSize, this.oldElementSize = null
17527 }, n.prototype.updateSize = function() {
17528 this.originalSize || (this.size = this.isHorizontal() ? this.$element[0].clientWidth : this.$element[0].clientHeight, this.handleScroll_(), this.repeater && this.repeater.containerUpdated())
17529 }, n.prototype.getScrollSize = function() {
17530 return this.scrollSize
17531 }, n.prototype.getDimensionName_ = function() {
17532 return this.isHorizontal() ? "width" : "height"
17533 }, n.prototype.sizeScroller_ = function(e) {
17534 var t = this.getDimensionName_(),
17535 n = this.isHorizontal() ? "height" : "width";
17536 if (this.sizer.innerHTML = "", e < this.maxElementPixels) this.sizer.style[t] = e + "px";
17538 this.sizer.style[t] = "auto", this.sizer.style[n] = "auto";
17539 var r = Math.floor(e / this.maxElementPixels),
17540 i = document.createElement("div");
17541 i.style[t] = this.maxElementPixels + "px", i.style[n] = "1px";
17542 for (var o = 0; o < r; o++) this.sizer.appendChild(i.cloneNode(!1));
17543 i.style[t] = e - r * this.maxElementPixels + "px", this.sizer.appendChild(i)
17545 }, n.prototype.autoShrink_ = function(e) {
17546 var t = Math.max(e, this.autoShrinkMin * this.repeater.getItemSize());
17547 if (this.autoShrink && t !== this.size) {
17548 null === this.oldElementSize && (this.oldElementSize = this.$element[0].style[this.getDimensionName_()]);
17549 var n = this.originalSize || this.size;
17550 if (!n || t < n) this.originalSize || (this.originalSize = this.size), this.setSize_(t);
17551 else if (null !== this.originalSize) {
17553 var r = this.originalSize;
17554 this.originalSize = null, r || this.updateSize(), this.setSize_(r || this.size)
17556 this.repeater.containerUpdated()
17558 }, n.prototype.setScrollSize = function(e) {
17559 var t = e + this.offsetSize;
17560 this.scrollSize !== t && (this.sizeScroller_(t), this.autoShrink_(t), this.scrollSize = t)
17561 }, n.prototype.getScrollOffset = function() {
17562 return this.scrollOffset
17563 }, n.prototype.scrollTo = function(e) {
17564 this.scroller[this.isHorizontal() ? "scrollLeft" : "scrollTop"] = e, this.handleScroll_()
17565 }, n.prototype.scrollToIndex = function(e) {
17566 var t = this.repeater.getItemSize(),
17567 n = this.repeater.itemsLength;
17568 e > n && (e = n - 1), this.scrollTo(t * e)
17569 }, n.prototype.resetScroll = function() {
17571 }, n.prototype.handleScroll_ = function() {
17572 var e = "rtl" != document.dir && "rtl" != document.body.dir;
17573 e || this.maxSize || (this.scroller.scrollLeft = this.scrollSize, this.maxSize = this.scroller.scrollLeft);
17574 var t = this.isHorizontal() ? e ? this.scroller.scrollLeft : this.maxSize - this.scroller.scrollLeft : this.scroller.scrollTop;
17575 if (!(t === this.scrollOffset || t > this.scrollSize - this.size)) {
17576 var n = this.repeater.getItemSize();
17578 var r = Math.max(0, Math.floor(t / n) - 3),
17579 i = (this.isHorizontal() ? "translateX(" : "translateY(") + (!this.isHorizontal() || e ? r * n : -r * n) + "px)";
17580 if (this.scrollOffset = t, this.offsetter.style.webkitTransform = i, this.offsetter.style.transform = i, this.bindTopIndex) {
17581 var o = Math.floor(t / n);
17582 o !== this.topIndex && o < this.repeater.getItemCount() && (this.topIndex = o, this.bindTopIndex.assign(this.$scope, o), this.$rootScope.$$phase || this.$scope.$digest())
17584 this.repeater.containerUpdated()
17587 }, i.prototype.link_ = function(e, n, r, i, o) {
17588 this.container = e, this.transclude = n, this.repeatName = r, this.rawRepeatListExpression = i, this.extraName = o, this.sized = !1, this.repeatListExpression = t.bind(this, this.repeatListExpression_), this.container.register(this)
17589 }, i.prototype.cleanupBlocks_ = function() {
17590 t.forEach(this.pooledBlocks, function(e) {
17593 }, i.prototype.readItemSize_ = function() {
17594 if (!this.itemSize) {
17595 this.items = this.repeatListExpression(this.$scope), this.parentNode = this.$element[0].parentNode;
17596 var e = this.getBlock_(0);
17597 e.element[0].parentNode || this.parentNode.appendChild(e.element[0]), this.itemSize = e.element[0][this.container.isHorizontal() ? "offsetWidth" : "offsetHeight"] || null, this.blocks[0] = e, this.poolBlock_(0), this.itemSize && this.containerUpdated()
17599 }, i.prototype.repeatListExpression_ = function(e) {
17600 var t = this.rawRepeatListExpression(e);
17601 if (this.onDemand && t) {
17603 return n.$$includeIndexes(this.newStartIndex, this.newVisibleEnd), n
17606 }, i.prototype.containerUpdated = function() {
17607 if (!this.itemSize) return this.unwatchItemSize_ && this.unwatchItemSize_ !== t.noop && this.unwatchItemSize_(), this.unwatchItemSize_ = this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e) {
17608 e && e.length && this.readItemSize_()
17609 })), void(this.$rootScope.$$phase || this.$scope.$digest());
17610 this.sized || (this.items = this.repeatListExpression(this.$scope)), this.sized || (this.unwatchItemSize_(), this.sized = !0, this.$scope.$watchCollection(this.repeatListExpression, t.bind(this, function(e, t) {
17611 this.isVirtualRepeatUpdating_ || this.virtualRepeatUpdate_(e, t)
17612 }))), this.updateIndexes_(), (this.newStartIndex !== this.startIndex || this.newEndIndex !== this.endIndex || this.container.getScrollOffset() > this.container.getScrollSize()) && (this.items instanceof o && this.items.$$includeIndexes(this.newStartIndex, this.newEndIndex), this.virtualRepeatUpdate_(this.items, this.items))
17613 }, i.prototype.getItemSize = function() {
17614 return this.itemSize
17615 }, i.prototype.getItemCount = function() {
17616 return this.itemsLength
17617 }, i.prototype.virtualRepeatUpdate_ = function(e, n) {
17618 this.isVirtualRepeatUpdating_ = !0;
17619 var r = e && e.length || 0,
17621 if (this.items && r < this.items.length && 0 !== this.container.getScrollOffset()) {
17623 var o = this.container.getScrollOffset();
17624 this.container.resetScroll(), this.container.scrollTo(o)
17626 r !== this.itemsLength && (i = !0, this.itemsLength = r), this.items = e, (e !== n || i) && this.updateIndexes_(), this.parentNode = this.$element[0].parentNode, i && this.container.setScrollSize(r * this.itemSize);
17628 this.isFirstRender && (s = !0, this.isFirstRender = !1, a = this.$attrs.mdStartIndex ? this.$scope.$eval(this.$attrs.mdStartIndex) : this.container.topIndex, this.container.scrollToIndex(a)), Object.keys(this.blocks).forEach(function(e) {
17629 var t = parseInt(e, 10);
17630 (t < this.newStartIndex || t >= this.newEndIndex) && this.poolBlock_(t)
17631 }, this), this.$browser.$$checkUrlChange = t.noop;
17634 for (c = this.newStartIndex; c < this.newEndIndex && null == this.blocks[c]; c++) l = this.getBlock_(c), this.updateBlock_(l, c), u.push(l);
17635 for (; null != this.blocks[c]; c++) this.updateBlock_(this.blocks[c], c);
17636 for (var f = c - 1; c < this.newEndIndex; c++) l = this.getBlock_(c), this.updateBlock_(l, c), d.push(l);
17637 u.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(u), this.$element[0].nextSibling), d.length && this.parentNode.insertBefore(this.domFragmentFromBlocks_(d), this.blocks[f] && this.blocks[f].element[0].nextSibling), s && this.container.scrollToIndex(a), this.$browser.$$checkUrlChange = this.browserCheckUrlChange, this.startIndex = this.newStartIndex, this.endIndex = this.newEndIndex, this.isVirtualRepeatUpdating_ = !1
17638 }, i.prototype.getBlock_ = function(e) {
17639 if (this.pooledBlocks.length) return this.pooledBlocks.pop();
17641 return this.transclude(t.bind(this, function(t, r) {
17646 }, this.updateScope_(r, e), this.parentNode.appendChild(t[0])
17648 }, i.prototype.updateBlock_ = function(e, t) {
17649 this.blocks[t] = e, (e.new || e.scope.$index !== t || e.scope[this.repeatName] !== this.items[t]) && (e.new = !1, this.updateScope_(e.scope, t), this.$rootScope.$$phase || e.scope.$digest())
17650 }, i.prototype.updateScope_ = function(e, t) {
17651 e.$index = t, e[this.repeatName] = this.items && this.items[t], this.extraName && (e[this.extraName(this.$scope)] = this.items[t])
17652 }, i.prototype.poolBlock_ = function(e) {
17653 this.pooledBlocks.push(this.blocks[e]), this.parentNode.removeChild(this.blocks[e].element[0]), delete this.blocks[e]
17654 }, i.prototype.domFragmentFromBlocks_ = function(e) {
17655 var t = this.$document[0].createDocumentFragment();
17656 return e.forEach(function(e) {
17657 t.appendChild(e.element[0])
17659 }, i.prototype.updateIndexes_ = function() {
17660 var e = this.items ? this.items.length : 0,
17661 t = Math.ceil(this.container.getSize() / this.itemSize);
17662 this.newStartIndex = Math.max(0, Math.min(e - t, Math.floor(this.container.getScrollOffset() / this.itemSize))), this.newVisibleEnd = this.newStartIndex + t + 3, this.newEndIndex = Math.min(e, this.newVisibleEnd), this.newStartIndex = Math.max(0, this.newStartIndex - 3)
17663 }, o.prototype.$$includeIndexes = function(e, t) {
17664 for (var n = e; n < t; n++) this.hasOwnProperty(n) || (this[n] = this.model.getItemAtIndex(n));
17665 this.length = this.model.getLength()
17675 link: function(o, a, s) {
17677 s.$observe("mdWhiteframe", function(o) {
17678 (o = parseInt(o, 10) || i) != t && (o > r || o < n) && (e.warn("md-whiteframe attribute value is invalid. It should be a number between " + n + " and " + r, a[0]), o = i);
17679 var l = o == t ? "" : "md-whiteframe-" + o + "dp";
17680 s.$updateClass(l, c), c = l
17685 e.$inject = ["$log"], t.module("material.components.whiteframe", ["material.core"]).directive("mdWhiteframe", e)
17688 function e(e, s, c, l, u, d, f, h, p, m, g, v) {
17690 e.requireMatch && ye && ye.$setValidity("md-require-match", !!e.selectedItem || !e.searchText)
17694 if (!fe) return c.nextTick(y, !1, e);
17695 var t, n = (e.dropdownItems || i) * r,
17696 l = fe.wrap.getBoundingClientRect(),
17697 u = fe.snap.getBoundingClientRect(),
17698 d = fe.root.getBoundingClientRect(),
17699 f = u.bottom - d.top,
17700 h = d.bottom - u.top,
17701 m = l.left - d.left,
17705 t = s.find("md-input-container");
17707 var n = t.find("input");
17708 e = t.prop("offsetHeight"), e -= n.prop("offsetTop"), e -= n.prop("offsetHeight"), e += t.prop("offsetTop")
17712 b = e.dropdownPosition;
17713 if (b || (b = f > h && d.height - f - o < n ? "top" : "bottom"), p.mdFloatingLabel && (m += a, g -= 2 * a), t = {
17715 minWidth: g + "px",
17716 maxWidth: Math.max(l.right - d.left, d.right - l.left) - o + "px"
17717 }, "top" === b) t.top = "auto", t.bottom = h + "px", t.maxHeight = Math.min(n, l.top - d.top - o) + "px";
17719 var $ = d.bottom - l.bottom - o + c.getViewportTop();
17720 t.top = f - v + "px", t.bottom = "auto", t.maxHeight = Math.min(n, $) + "px"
17722 fe.$.scrollContainer.css(t), c.nextTick(function() {
17723 var e = fe.scrollContainer.getBoundingClientRect(),
17725 e.right > d.right - o && (t.left = l.right - e.width + "px"), fe.$.scrollContainer.css(t)
17730 fe.$.root.length && (u(fe.$.scrollContainer), fe.$.scrollContainer.detach(), fe.$.root.append(fe.$.scrollContainer), f.pin && f.pin(fe.$.scrollContainer, h))
17738 var n = parseInt(e.delay, 10) || 0;
17739 p.$observe("disabled", function(e) {
17740 le.isDisabled = c.parseAttributeBoolean(e, !1)
17741 }), p.$observe("required", function(e) {
17742 le.isRequired = c.parseAttributeBoolean(e, !1)
17743 }), p.$observe("readonly", function(e) {
17744 le.isReadonly = c.parseAttributeBoolean(e, !1)
17745 }), e.$watch("searchText", n ? c.debounce(N, n) : N), e.$watch("selectedItem", S), t.element(d).on("resize", $e), e.$on("$destroy", E)
17749 if (le.hidden || c.enableScrolling(), t.element(d).off("resize", $e), fe) {
17750 var e = ["ul", "scroller", "scrollContainer", "input"];
17751 t.forEach(e, function(e) {
17761 scrollContainer: s[0].querySelector(".md-virtual-repeat-container"),
17762 scroller: s[0].querySelector(".md-virtual-repeat-scroller"),
17763 ul: s.find("ul")[0],
17764 input: s.find("input")[0],
17767 root: document.body
17768 }).li = fe.ul.getElementsByTagName("li"), fe.$ = k(fe), ye = fe.$.input.controller("ngModel")
17773 for (e = s; e.length && (n = e.attr("md-autocomplete-snap"), !t.isDefined(n)); e = e.parent());
17774 if (e.length) return {
17776 wrap: "width" === n.toLowerCase() ? e[0] : s.find("md-autocomplete-wrap")[0]
17778 var r = s.find("md-autocomplete-wrap")[0];
17787 for (var r in e) e.hasOwnProperty(r) && (n[r] = t.element(e[r]));
17795 return e.on("wheel", t), e.on("touchmove", t),
17797 e.off("wheel", t), e.off("touchmove", t)
17802 ge || le.hidden || fe.input.focus(), pe = !1, le.hidden = F()
17806 b(), n ? P(n).then(function(t) {
17807 e.searchText = t, D(n, r)
17808 }) : r && e.searchText && P(r).then(function(n) {
17809 t.isString(e.searchText) && n.toString().toLowerCase() === e.searchText.toLowerCase() && (e.searchText = "")
17814 t.isFunction(e.itemChange) && e.itemChange(H(e.selectedItem))
17818 t.isFunction(e.textChange) && e.textChange()
17822 me.forEach(function(n) {
17828 le.index = j(), t !== n && (b(), P(e.selectedItem).then(function(r) {
17829 t !== r && (e.selectedItem = null, t !== n && O(), G() ? oe() : (le.matches = [], L(!1), J(!1, _e.Count)))
17834 e && (pe = !1, ge = !1), fe.input.blur()
17838 return t.isNumber(e.minLength) ? e.minLength : 1
17842 return m.when(function(t) {
17843 return t && e.itemText ? e.itemText(H(t)) : null
17844 }(n) || n).then(function(e) {
17845 return e && !t.isString(e) && g.warn("md-autocomplete: Could not resolve display value to a string. Please check the `md-item-text` attribute."), e
17852 return le.itemName && (t[le.itemName] = e), t
17856 return e.autoselect ? 0 : -1
17860 le.loading != e && (le.loading = e), le.hidden = F()
17864 return !q() || !B()
17868 return !(le.loading && !z()) && (!W() && !!ge)
17872 return V("blur") || !le.hidden || le.loading || V("clear") && e.searchText
17876 return !e.escapeOptions || -1 !== e.escapeOptions.toLowerCase().indexOf(t)
17880 return G() && z() || ie()
17884 return !!le.matches.length
17888 return !!le.scope.selectedItem
17892 return P(le.matches[le.index])
17896 return (e.searchText || "").length >= R()
17900 c.nextTick(function() {
17901 P(le.matches[t]).then(function(e) {
17902 var t = fe.$.input.controller("ngModel");
17903 t.$setViewValue(e), t.$render()
17904 }).finally(function() {
17905 e.selectedItem = le.matches[t], L(!1)
17911 le.index = 0, le.matches = []
17915 L(!0), e.searchText = "";
17916 var t = document.createEvent("CustomEvent");
17917 t.initCustomEvent("change", !0, !0, {
17919 }), fe.input.dispatchEvent(t), fe.input.blur(), e.searchText = "", fe.input.focus()
17924 he[o] = t, (n || "") === (e.searchText || "") && ae(t)
17926 var i = e.$parent.$eval(de),
17927 o = n.toLowerCase(),
17930 a ? r(i) : s && function(t) {
17931 t && (t = m.when(t), ve++, L(!0), c.nextTick(function() {
17932 t.then(r).finally(function() {
17940 var n = e ? "polite" : "assertive",
17942 t & _e.Selected && -1 !== le.index && r.push(Y()), t & _e.Count && r.push(m.resolve(ee())), m.all(r).then(function(e) {
17943 v.announce(e.join(" "), n)
17948 switch (le.matches.length) {
17950 return "There are no matches available.";
17952 return "There is 1 match available.";
17954 return "There are " + le.matches.length + " matches available."
17960 var e = fe.li[0].offsetHeight,
17963 r = fe.scroller.clientHeight,
17964 i = fe.scroller.scrollTop;
17965 t < i ? re(t) : n > i + r && re(n - r)
17974 fe.$.scrollContainer.controller("mdVirtualRepeatContainer").scrollTo(e)
17978 var e = (le.scope.searchText || "").length;
17979 return le.hasNotFound && !z() && (!le.loading || ne()) && e >= R() && (ge || pe) && !W()
17983 var t = e.searchText || "",
17984 n = t.toLowerCase();
17985 !e.noCache && he[n] ? ae(he[n]) : Q(t), le.hidden = F()
17989 le.matches = t, le.hidden = F(), le.loading && L(!1), e.selectOnMatch && se(), y(), J(!0, _e.Count)
17993 var t = e.searchText,
17996 1 === n.length && P(r).then(function(n) {
17998 e.matchInsensitive && !r && (r = t.toLowerCase() == n.toLowerCase()), r && K(0)
18002 function ce(t, n) {
18003 p[t] && e.$parent.$eval(p[t], n || {})
18006 ue = e.itemsExpr.split(/ in /i),
18016 $e = c.debounce(function() {
18019 ! function(e, t, n) {
18020 Object.defineProperty(le, e, {
18029 }("hidden", function(e, n) {
18030 !e && n ? (y(), J(!0, _e.Count | _e.Selected), fe && (c.disableScrollAround(fe.ul), be = T(t.element(fe.wrap)))) : e && !n && (c.enableScrolling(), be && (be(), be = null))
18031 }, !0), le.scope = e, le.parent = e.$parent, le.itemName = ue[0], le.matches = [], le.loading = !1, le.hidden = !0, le.index = null, le.id = c.nextUid(), le.isDisabled = null, le.isRequired = null, le.isReadonly = null, le.hasNotFound = !1, le.keydown = function(t) {
18032 switch (t.keyCode) {
18033 case l.KEY_CODE.DOWN_ARROW:
18034 if (le.loading) return;
18035 t.stopPropagation(), t.preventDefault(), le.index = Math.min(le.index + 1, le.matches.length - 1), te(), J(!1, _e.Selected);
18037 case l.KEY_CODE.UP_ARROW:
18038 if (le.loading) return;
18039 t.stopPropagation(), t.preventDefault(), le.index = le.index < 0 ? le.matches.length - 1 : Math.max(0, le.index - 1), te(), J(!1, _e.Selected);
18041 case l.KEY_CODE.TAB:
18042 if (M(), le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
18045 case l.KEY_CODE.ENTER:
18046 if (le.hidden || le.loading || le.index < 0 || le.matches.length < 1) return;
18048 t.stopPropagation(), t.preventDefault(), K(le.index);
18050 case l.KEY_CODE.ESCAPE:
18051 if (t.preventDefault(), !U()) return;
18052 t.stopPropagation(), Z(), e.searchText && V("clear") && X(), le.hidden = !0, V("blur") && I(!0)
18054 }, le.blur = function(e) {
18055 ge = !1, pe || (le.hidden = F(), ce("ngBlur", {
18058 }, le.focus = function(e) {
18059 ge = !0, q() && G() && oe(), le.hidden = F(), ce("ngFocus", {
18062 }, le.clear = function() {
18064 }, le.select = K, le.listEnter = function() {
18066 }, le.listLeave = M, le.mouseUp = function() {
18068 }, le.getCurrentDisplayValue = Y, le.registerSelectedItemWatcher = function(e) {
18069 -1 == me.indexOf(e) && me.push(e)
18070 }, le.unregisterSelectedItemWatcher = function(e) {
18071 var t = me.indexOf(e); - 1 != t && me.splice(t, 1)
18072 }, le.notFoundVisible = ie, le.loadingIsVisible = function() {
18073 return le.loading && !W()
18074 }, le.positionDropdown = y;
18079 return c.initOptionalProperties(e, p, {
18081 selectedItem: null,
18083 }), u(s), w(), void c.nextTick(function() {
18084 C(), $(), e.autofocus && s.on("focus", _)
18087 e.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$mdTheming", "$window", "$animate", "$rootElement", "$attrs", "$q", "$log", "$mdLiveAnnouncer"], t.module("material.components.autocomplete").controller("MdAutocompleteCtrl", e);
18096 controller: "MdAutocompleteCtrl",
18097 controllerAs: "$mdAutocompleteCtrl",
18099 inputName: "@mdInputName",
18100 inputMinlength: "@mdInputMinlength",
18101 inputMaxlength: "@mdInputMaxlength",
18102 searchText: "=?mdSearchText",
18103 selectedItem: "=?mdSelectedItem",
18104 itemsExpr: "@mdItems",
18105 itemText: "&mdItemText",
18106 placeholder: "@placeholder",
18107 noCache: "=?mdNoCache",
18108 requireMatch: "=?mdRequireMatch",
18109 selectOnMatch: "=?mdSelectOnMatch",
18110 matchInsensitive: "=?mdMatchCaseInsensitive",
18111 itemChange: "&?mdSelectedItemChange",
18112 textChange: "&?mdSearchTextChange",
18113 minLength: "=?mdMinLength",
18114 delay: "=?mdDelay",
18115 autofocus: "=?mdAutofocus",
18116 floatingLabel: "@?mdFloatingLabel",
18117 autoselect: "=?mdAutoselect",
18118 menuClass: "@?mdMenuClass",
18119 inputId: "@?mdInputId",
18120 escapeOptions: "@?mdEscapeOptions",
18121 dropdownItems: "=?mdDropdownItems",
18122 dropdownPosition: "@?mdDropdownPosition",
18123 clearButton: "=?mdClearButton"
18125 compile: function(e, n) {
18126 var r = ["md-select-on-focus", "md-no-asterisk", "ng-trim", "ng-pattern"],
18127 i = e.find("input");
18128 return r.forEach(function(e) {
18129 var t = n[n.$normalize(e)];
18130 null !== t && i.attr(e, t)
18132 function(e, n, r, i) {
18133 i.hasNotFound = !!n.attr("md-has-not-found"), t.isDefined(r.mdClearButton) || e.floatingLabel || (e.clearButton = !0)
18136 template: function(t, n) {
18137 var r = function() {
18138 var e = t.find("md-not-found").detach(),
18139 n = e.length ? e.html() : "";
18140 return n ? '<li ng-if="$mdAutocompleteCtrl.notFoundVisible()" md-autocomplete-parent-scope>' + n + "</li>" : ""
18143 var e = t.find("md-item-template").detach(),
18144 n = e.length ? e.html() : t.html();
18145 return e.length || t.empty(), "<md-autocomplete-parent-scope md-autocomplete-replace>" + n + "</md-autocomplete-parent-scope>"
18149 return r && t.attr("md-has-not-found", !0), t.attr("tabindex", "-1"), " <md-autocomplete-wrap ng-class=\"{ 'md-whiteframe-z1': !floatingLabel, 'md-menu-showing': !$mdAutocompleteCtrl.hidden, 'md-show-clear-button': !!clearButton }\"> " + (n.mdFloatingLabel ? ' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" ' + (null != a ? 'tabindex="' + a + '"' : "") + ' id="{{ inputId || \'fl-input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-model-options="{ allowInvalid: true }" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{floatingLabel}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/> <div md-autocomplete-parent-scope md-autocomplete-replace>' + o + "</div> </md-input-container>" : ' <input type="search" ' + (null != a ? 'tabindex="' + a + '"' : "") + ' id="{{ inputId || \'input-\' + $mdAutocompleteCtrl.id }}" name="{{inputName}}" ng-if="!floatingLabel" autocomplete="off" ng-required="$mdAutocompleteCtrl.isRequired" ng-disabled="$mdAutocompleteCtrl.isDisabled" ng-readonly="$mdAutocompleteCtrl.isReadonly" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur($event)" ng-focus="$mdAutocompleteCtrl.focus($event)" placeholder="{{placeholder}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{placeholder}}" aria-autocomplete="list" role="combobox" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>') + ' <button type="button" aria-label="Clear Input" tabindex="-1" ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText && !$mdAutocompleteCtrl.isDisabled" ng-click="$mdAutocompleteCtrl.clear($event)"><md-icon md-svg-src="' + e.mdClose + '"></md-icon></button> <md-progress-linear class="' + (n.mdFloatingLabel ? "md-inline" : "") + '" ng-if="$mdAutocompleteCtrl.loadingIsVisible()" md-mode="indeterminate"></md-progress-linear> <md-virtual-repeat-container md-auto-shrink md-auto-shrink-min="1" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()" ng-hide="$mdAutocompleteCtrl.hidden" class="md-autocomplete-suggestions-container md-whiteframe-z1" ng-class="{ \'md-not-found\': $mdAutocompleteCtrl.notFoundVisible() }" role="presentation"> <ul class="md-autocomplete-suggestions" ng-class="::menuClass" id="ul-{{$mdAutocompleteCtrl.id}}"> <li md-virtual-repeat="item in $mdAutocompleteCtrl.matches" ng-class="{ selected: $index === $mdAutocompleteCtrl.index }" ng-click="$mdAutocompleteCtrl.select($index)" md-extra-name="$mdAutocompleteCtrl.itemName"> ' + i + " </li>" + r + " </ul> </md-virtual-repeat-container> </md-autocomplete-wrap>"
18153 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.autocomplete").directive("mdAutocomplete", e)
18159 compile: function(e, n, r) {
18160 return function(e, n, i) {
18162 s[r] = e[n], e.$watch(n, function(e) {
18163 t.nextTick(function() {
18168 var a = e.$mdAutocompleteCtrl,
18169 s = a.parent.$new(),
18171 o("$index", "$index"), o("item", c),
18175 e.$watch(function() {
18176 n || t || (t = !0, e.$$postDigest(function() {
18177 n || s.$digest(), t = n = !1
18179 }), s.$watch(function() {
18182 }(), r(s, function(e) {
18188 transclude: "element"
18191 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.autocomplete").directive("mdAutocompleteParentScope", e)
18194 function e(e, t, n) {
18195 this.$scope = e, this.$element = t, this.$attrs = n, this.regex = null
18197 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.autocomplete").controller("MdHighlightCtrl", e), e.prototype.init = function(e, t) {
18198 this.flags = this.$attrs.mdHighlightFlags || "", this.unregisterFn = this.$scope.$watch(function(n) {
18203 }.bind(this), this.onRender.bind(this), !0), this.$element.on("$destroy", this.unregisterFn)
18204 }, e.prototype.onRender = function(e, t) {
18205 var n = e.contentText;
18206 null !== this.regex && e.term === t.term || (this.regex = this.createRegex(e.term, this.flags)), e.term ? this.applyRegex(n) : this.$element.text(n)
18207 }, e.prototype.applyRegex = function(e) {
18208 var n = this.resolveTokens(e);
18209 this.$element.empty(), n.forEach(function(e) {
18211 var n = t.element('<span class="highlight">').text(e.text);
18212 this.$element.append(n)
18213 } else this.$element.append(document.createTextNode(e))
18215 }, e.prototype.resolveTokens = function(e) {
18217 var i = e.slice(t, r);
18222 return e.replace(this.regex, function(e, i) {
18226 }), r = i + e.length
18228 }, e.prototype.createRegex = function(e, t) {
18231 i = this.sanitizeRegex(e);
18232 return t.indexOf("^") >= 0 && (n = "^"), t.indexOf("$") >= 0 && (r = "$"), new RegExp(n + i + r, t.replace(/[$\^]/g, ""))
18233 }, e.prototype.sanitizeRegex = function(e) {
18234 return e && e.toString().replace(/[\\\^\$\*\+\?\.\(\)\|\{}\[\]]/g, "\\$&")
18241 controller: "MdHighlightCtrl",
18242 compile: function(n, r) {
18243 var i = t(r.mdHighlightText),
18245 return function(e, t, n, r) {
18251 e.$inject = ["$interpolate", "$parse"], t.module("material.components.autocomplete").directive("mdHighlightText", e)
18254 function r(e, t, r, i, o) {
18255 this.$scope = e, this.$element = t, this.$mdConstant = r, this.$timeout = i, this.$mdUtil = o, this.isEditting = !1, this.parentController = n, this.enableChipEdit = !1
18257 r.$inject = ["$scope", "$element", "$mdConstant", "$timeout", "$mdUtil"], t.module("material.components.chips").controller("MdChipCtrl", r), r.prototype.init = function(e) {
18258 this.parentController = e, this.enableChipEdit = this.parentController.enableChipEdit, this.enableChipEdit && (this.$element.on("keydown", this.chipKeyDown.bind(this)), this.$element.on("mousedown", this.chipMouseDown.bind(this)), this.getChipContent().addClass("_md-chip-content-edit-is-enabled"))
18259 }, r.prototype.getChipContent = function() {
18260 var e = this.$element[0].getElementsByClassName("md-chip-content");
18261 return t.element(e[0])
18262 }, r.prototype.getContentElement = function() {
18263 return t.element(this.getChipContent().children()[0])
18264 }, r.prototype.getChipIndex = function() {
18265 return parseInt(this.$element.attr("index"))
18266 }, r.prototype.goOutOfEditMode = function() {
18267 if (this.isEditting) {
18268 this.isEditting = !1, this.$element.removeClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "false";
18269 var e = this.getChipIndex();
18270 this.getContentElement().text() ? (this.parentController.updateChipContents(e, this.getContentElement().text()), this.$mdUtil.nextTick(function() {
18271 this.parentController.selectedChip === e && this.parentController.focusChip(e)
18272 }.bind(this))) : this.parentController.removeChipAndFocusInput(e)
18274 }, r.prototype.selectNodeContents = function(t) {
18276 document.body.createTextRange ? ((n = document.body.createTextRange()).moveToElementText(t), n.select()) : e.getSelection && (r = e.getSelection(), (n = document.createRange()).selectNodeContents(t), r.removeAllRanges(), r.addRange(n))
18277 }, r.prototype.goInEditMode = function() {
18278 this.isEditting = !0, this.$element.addClass("_md-chip-editing"), this.getChipContent()[0].contentEditable = "true", this.getChipContent().on("blur", function() {
18279 this.goOutOfEditMode()
18280 }.bind(this)), this.selectNodeContents(this.getChipContent()[0])
18281 }, r.prototype.chipKeyDown = function(e) {
18282 this.isEditting || e.keyCode !== this.$mdConstant.KEY_CODE.ENTER && e.keyCode !== this.$mdConstant.KEY_CODE.SPACE ? this.isEditting && e.keyCode === this.$mdConstant.KEY_CODE.ENTER && (e.preventDefault(), this.goOutOfEditMode()) : (e.preventDefault(), this.goInEditMode())
18283 }, r.prototype.chipMouseDown = function() {
18284 this.getChipIndex() == this.parentController.selectedChip && this.enableChipEdit && !this.isEditting && this.goInEditMode()
18288 function e(e, r, i, o) {
18289 var a = r.processTemplate(n);
18292 require: ["^?mdChips", "mdChip"],
18293 link: function(n, r, s, c) {
18296 d = t.element(r[0].querySelector(".md-chip-content"));
18297 e(r), l && (u.init(l), d.append(i(a)(n)), d.on("blur", function() {
18298 l.resetSelectedChip(), l.$scope.$applyAsync()
18299 })), o(function() {
18300 l && l.shouldFocusLastChip && l.focusLastChipThenInput()
18303 controller: "MdChipCtrl"
18306 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"], t.module("material.components.chips").directive("mdChip", e);
18307 var n = ' <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.deleteHint}} </span>'
18313 require: "^mdChips",
18315 link: function(t, n, r, i) {
18316 n.on("click", function(e) {
18317 t.$apply(function() {
18318 i.removeChip(t.$$replacedScope.$index)
18324 }), n.find("button").attr("tabindex", "-1")
18329 e.$inject = ["$timeout"], t.module("material.components.chips").directive("mdChipRemove", e)
18336 link: function(t, n, r) {
18337 var i = t.$parent.$mdChipsCtrl,
18338 o = i.parent.$new(!1, i.parent);
18339 o.$$replacedScope = t, o.$chip = t.$chip, o.$index = t.$index, o.$mdChipsCtrl = i;
18340 var a = i.$scope.$eval(r.mdChipTransclude);
18341 n.html(a), e(n.contents())(o)
18346 e.$inject = ["$compile"], t.module("material.components.chips").directive("mdChipTransclude", e)
18349 function e(e, t, r, i, o, a, s) {
18350 this.$timeout = a, this.$mdConstant = r, this.$scope = e, this.parent = e.$parent, this.$mdUtil = s, this.$log = i, this.$element = o, this.$attrs = t, this.ngModelCtrl = null, this.userInputNgModelCtrl = null, this.autocompleteCtrl = null, this.userInputElement = null, this.items = [], this.selectedChip = -1, this.enableChipEdit = s.parseAttributeBoolean(t.mdEnableChipEdit), this.addOnBlur = s.parseAttributeBoolean(t.mdAddOnBlur), this.inputAriaLabel = "Chips input.", this.containerHint = "Chips container. Use arrow keys to select chips.", this.deleteHint = "Press delete to remove this chip.", this.deleteButtonLabel = "Remove", this.chipBuffer = "", this.useTransformChip = !1, this.useOnAdd = !1, this.useOnRemove = !1, this.wrapperId = "", this.contentIds = [], this.ariaTabIndex = null, this.chipAppendDelay = n, this.init()
18352 e.$inject = ["$scope", "$attrs", "$mdConstant", "$log", "$element", "$timeout", "$mdUtil"];
18354 t.module("material.components.chips").controller("MdChipsCtrl", e), e.prototype.init = function() {
18356 e.wrapperId = "_md-chips-wrapper-" + e.$mdUtil.nextUid(), e.$scope.$watchCollection("$mdChipsCtrl.items", function() {
18357 e.setupInputAria(), e.setupWrapperAria()
18358 }), e.$attrs.$observe("mdChipAppendDelay", function(t) {
18359 e.chipAppendDelay = parseInt(t) || n
18361 }, e.prototype.setupInputAria = function() {
18362 var e = this.$element.find("input");
18363 e && (e.attr("role", "textbox"), e.attr("aria-multiline", !0))
18364 }, e.prototype.setupWrapperAria = function() {
18366 t = this.$element.find("md-chips-wrap");
18367 this.items && this.items.length ? (t.attr("role", "listbox"), this.contentIds = this.items.map(function() {
18368 return e.wrapperId + "-chip-" + e.$mdUtil.nextUid()
18369 }), t.attr("aria-owns", this.contentIds.join(" "))) : (t.removeAttr("role"), t.removeAttr("aria-owns"))
18370 }, e.prototype.inputKeydown = function(e) {
18371 var t = this.getChipBuffer();
18372 if (!(this.autocompleteCtrl && e.isDefaultPrevented && e.isDefaultPrevented())) {
18373 if (e.keyCode === this.$mdConstant.KEY_CODE.BACKSPACE) {
18374 if (0 !== this.getCursorPosition(e.target)) return;
18375 return e.preventDefault(), e.stopPropagation(), void(this.items.length && this.selectAndFocusChipSafe(this.items.length - 1))
18377 if ((!this.separatorKeys || this.separatorKeys.length < 1) && (this.separatorKeys = [this.$mdConstant.KEY_CODE.ENTER]), -1 !== this.separatorKeys.indexOf(e.keyCode)) {
18378 if (this.autocompleteCtrl && this.requireMatch || !t) return;
18379 if (e.preventDefault(), this.hasMaxChipsReached()) return;
18380 return this.appendChip(t.trim()), this.resetChipBuffer(), !1
18383 }, e.prototype.getCursorPosition = function(e) {
18385 if (e.selectionStart === e.selectionEnd) return e.selectionStart
18387 if (!e.value) return 0
18389 }, e.prototype.updateChipContents = function(e, t) {
18390 e >= 0 && e < this.items.length && (this.items[e] = t, this.ngModelCtrl.$setDirty())
18391 }, e.prototype.isEditingChip = function() {
18392 return !!this.$element[0].querySelector("._md-chip-editing")
18393 }, e.prototype.isRemovable = function() {
18394 return !!this.ngModelCtrl && (this.readonly ? this.removable : !t.isDefined(this.removable) || this.removable)
18395 }, e.prototype.chipKeydown = function(e) {
18396 if (!this.getChipBuffer() && !this.isEditingChip()) switch (e.keyCode) {
18397 case this.$mdConstant.KEY_CODE.BACKSPACE:
18398 case this.$mdConstant.KEY_CODE.DELETE:
18399 if (this.selectedChip < 0) return;
18400 if (e.preventDefault(), !this.isRemovable()) return;
18401 this.removeAndSelectAdjacentChip(this.selectedChip);
18403 case this.$mdConstant.KEY_CODE.LEFT_ARROW:
18404 e.preventDefault(), (this.selectedChip < 0 || this.readonly && 0 == this.selectedChip) && (this.selectedChip = this.items.length), this.items.length && this.selectAndFocusChipSafe(this.selectedChip - 1);
18406 case this.$mdConstant.KEY_CODE.RIGHT_ARROW:
18407 e.preventDefault(), this.selectAndFocusChipSafe(this.selectedChip + 1);
18409 case this.$mdConstant.KEY_CODE.ESCAPE:
18410 case this.$mdConstant.KEY_CODE.TAB:
18411 if (this.selectedChip < 0) return;
18412 e.preventDefault(), this.onFocus()
18414 }, e.prototype.getPlaceholder = function() {
18415 return this.items && this.items.length && ("" == this.secondaryPlaceholder || this.secondaryPlaceholder) ? this.secondaryPlaceholder : this.placeholder
18416 }, e.prototype.removeAndSelectAdjacentChip = function(e) {
18418 n = t.getAdjacentChipIndex(e);
18419 this.$element[0].querySelector("md-chips-wrap"), this.$element[0].querySelector('md-chip[index="' + e + '"]');
18420 t.removeChip(e), t.$timeout(function() {
18421 t.$timeout(function() {
18422 t.selectAndFocusChipSafe(n)
18425 }, e.prototype.resetSelectedChip = function() {
18426 this.selectedChip = -1, this.ariaTabIndex = null
18427 }, e.prototype.getAdjacentChipIndex = function(e) {
18428 var t = this.items.length - 1;
18429 return 0 == t ? -1 : e == t ? e - 1 : e
18430 }, e.prototype.appendChip = function(e) {
18431 if (this.shouldFocusLastChip = !0, this.useTransformChip && this.transformChip) {
18432 var n = this.transformChip({
18435 t.isDefined(n) && (e = n)
18437 if (!(t.isObject(e) && this.items.some(function(n) {
18438 return t.equals(e, n)
18439 }) || null == e || this.items.indexOf(e) + 1)) {
18440 var r = this.items.push(e) - 1;
18441 this.ngModelCtrl.$setDirty(), this.validateModel(), this.useOnAdd && this.onAdd && this.onAdd({
18446 }, e.prototype.useTransformChipExpression = function() {
18447 this.useTransformChip = !0
18448 }, e.prototype.useOnAddExpression = function() {
18450 }, e.prototype.useOnRemoveExpression = function() {
18451 this.useOnRemove = !0
18452 }, e.prototype.useOnSelectExpression = function() {
18453 this.useOnSelect = !0
18454 }, e.prototype.getChipBuffer = function() {
18455 var e = this.userInputElement ? this.userInputNgModelCtrl ? this.userInputNgModelCtrl.$viewValue : this.userInputElement[0].value : this.chipBuffer;
18456 return t.isString(e) ? e : ""
18457 }, e.prototype.resetChipBuffer = function() {
18458 this.userInputElement ? this.userInputNgModelCtrl ? (this.userInputNgModelCtrl.$setViewValue(""), this.userInputNgModelCtrl.$render()) : this.userInputElement[0].value = "" : this.chipBuffer = ""
18459 }, e.prototype.hasMaxChipsReached = function() {
18460 return t.isString(this.maxChips) && (this.maxChips = parseInt(this.maxChips, 10) || 0), this.maxChips > 0 && this.items.length >= this.maxChips
18461 }, e.prototype.validateModel = function() {
18462 this.ngModelCtrl.$setValidity("md-max-chips", !this.hasMaxChipsReached())
18463 }, e.prototype.removeChip = function(e) {
18464 var t = this.items.splice(e, 1);
18465 this.ngModelCtrl.$setDirty(), this.validateModel(), t && t.length && this.useOnRemove && this.onRemove && this.onRemove({
18469 }, e.prototype.removeChipAndFocusInput = function(e) {
18470 this.removeChip(e), this.autocompleteCtrl ? (this.autocompleteCtrl.hidden = !0, this.$mdUtil.nextTick(this.onFocus.bind(this))) : this.onFocus()
18471 }, e.prototype.selectAndFocusChipSafe = function(e) {
18472 if (!this.items.length || -1 === e) return this.focusInput();
18473 if (e >= this.items.length) {
18474 if (!this.readonly) return this.onFocus();
18477 e = Math.max(e, 0), e = Math.min(e, this.items.length - 1), this.selectChip(e), this.focusChip(e)
18478 }, e.prototype.focusLastChipThenInput = function() {
18480 e.shouldFocusLastChip = !1, e.focusChip(this.items.length - 1), e.$timeout(function() {
18482 }, e.chipAppendDelay)
18483 }, e.prototype.focusInput = function() {
18484 this.selectChip(-1), this.onFocus()
18485 }, e.prototype.selectChip = function(e) {
18486 e >= -1 && e <= this.items.length ? (this.selectedChip = e, this.useOnSelect && this.onSelect && this.onSelect({
18487 $chip: this.items[e]
18488 })) : this.$log.warn("Selected Chip index out of bounds; ignoring.")
18489 }, e.prototype.selectAndFocusChip = function(e) {
18490 this.selectChip(e), -1 != e && this.focusChip(e)
18491 }, e.prototype.focusChip = function(e) {
18492 var t = this.$element[0].querySelector('md-chip[index="' + e + '"] .md-chip-content');
18493 this.ariaTabIndex = e, t.focus()
18494 }, e.prototype.configureNgModel = function(e) {
18495 this.ngModelCtrl = e;
18497 e.$render = function() {
18498 t.items = t.ngModelCtrl.$viewValue
18500 }, e.prototype.onFocus = function() {
18501 var e = this.$element[0].querySelector("input");
18502 e && e.focus(), this.resetSelectedChip()
18503 }, e.prototype.onInputFocus = function() {
18504 this.inputHasFocus = !0, this.setupInputAria(), this.resetSelectedChip()
18505 }, e.prototype.onInputBlur = function() {
18506 this.inputHasFocus = !1, this.shouldAddOnBlur() && (this.appendChip(this.getChipBuffer().trim()), this.resetChipBuffer())
18507 }, e.prototype.configureUserInput = function(e) {
18508 this.userInputElement = e;
18509 var n = e.controller("ngModel");
18510 n != this.ngModelCtrl && (this.userInputNgModelCtrl = n);
18511 var r = this.$scope,
18513 o = function(e, n) {
18514 r.$evalAsync(t.bind(i, n, e))
18518 }).on("keydown", function(e) {
18519 o(e, i.inputKeydown)
18520 }).on("focus", function(e) {
18521 o(e, i.onInputFocus)
18522 }).on("blur", function(e) {
18523 o(e, i.onInputBlur)
18525 }, e.prototype.configureAutocomplete = function(e) {
18526 e && (this.autocompleteCtrl = e, e.registerSelectedItemWatcher(t.bind(this, function(e) {
18528 if (this.hasMaxChipsReached()) return;
18529 this.appendChip(e), this.resetChipBuffer()
18531 })), this.$element.find("input").on("focus", t.bind(this, this.onInputFocus)).on("blur", t.bind(this, this.onInputBlur)))
18532 }, e.prototype.shouldAddOnBlur = function() {
18533 this.validateModel();
18534 var e = this.getChipBuffer().trim(),
18535 t = this.ngModelCtrl.$valid,
18536 n = this.autocompleteCtrl && !this.autocompleteCtrl.hidden;
18537 return this.userInputNgModelCtrl && (t = t && this.userInputNgModelCtrl.$valid), this.addOnBlur && !this.requireMatch && e && t && !n
18538 }, e.prototype.hasFocus = function() {
18539 return this.inputHasFocus || this.selectedChip >= 0
18540 }, e.prototype.contentIdFor = function(e) {
18541 return this.contentIds[e]
18545 function e(e, t, a, s, c, l) {
18547 chips: t.processTemplate(n),
18548 input: t.processTemplate(r),
18549 default: t.processTemplate(i),
18550 remove: t.processTemplate(o)
18553 template: function(e, t) {
18554 return t.$mdUserTemplate = e.clone(), u.chips
18556 require: ["mdChips"],
18558 controller: "MdChipsCtrl",
18559 controllerAs: "$mdChipsCtrl",
18560 bindToController: !0,
18561 compile: function(n, r) {
18564 var t = o[0].querySelector(e);
18565 return t && t.outerHTML
18568 var o = r.$mdUserTemplate;
18569 r.$mdUserTemplate = null;
18570 var d = i("md-chips>md-chip-template"),
18571 f = i(t.prefixer().buildList("md-chip-remove").map(function(e) {
18572 return "md-chips>*[" + e + "]"
18573 }).join(",")) || u.remove,
18574 h = d || u.default,
18575 p = i("md-chips>md-autocomplete") || i("md-chips>input") || u.input,
18576 m = o.find("md-chip");
18577 return o[0].querySelector("md-chip-template>*[md-chip-remove]") && s.warn("invalid placement of md-chip-remove within md-chip-template."),
18578 function(n, i, o, s) {
18579 t.initOptionalProperties(n, r), e(i);
18581 if (d && (g.enableChipEdit = !1), g.chipContentsTemplate = h, g.chipRemoveTemplate = f, g.chipInputTemplate = p, g.mdCloseIcon = l.mdClose, i.attr({
18583 }).on("focus", function() {
18585 }), r.ngModel && (g.configureNgModel(i.controller("ngModel")), o.mdTransformChip && g.useTransformChipExpression(), o.mdOnAppend && g.useOnAppendExpression(), o.mdOnAdd && g.useOnAddExpression(), o.mdOnRemove && g.useOnRemoveExpression(), o.mdOnSelect && g.useOnSelectExpression(), p != u.input && n.$watch("$mdChipsCtrl.readonly", function(e) {
18586 e || t.nextTick(function() {
18587 if (0 === p.indexOf("<md-autocomplete")) {
18588 var e = i.find("md-autocomplete");
18589 g.configureAutocomplete(e.controller("mdAutocomplete"))
18591 g.configureUserInput(i.find("input"))
18593 }), t.nextTick(function() {
18594 var e = i.find("input");
18595 e && e.toggleClass("md-input", !0)
18596 })), m.length > 0) {
18597 var v = a(m.clone())(n.$parent);
18599 i.find("md-chips-wrap").prepend(v)
18605 readonly: "=readonly",
18606 removable: "=mdRemovable",
18608 secondaryPlaceholder: "@",
18609 maxChips: "@mdMaxChips",
18610 transformChip: "&mdTransformChip",
18611 onAppend: "&mdOnAppend",
18613 onRemove: "&mdOnRemove",
18614 onSelect: "&mdOnSelect",
18615 inputAriaLabel: "@",
18616 containerHint: "@",
18618 deleteButtonLabel: "@",
18619 separatorKeys: "=?mdSeparatorKeys",
18620 requireMatch: "=?mdRequireMatch",
18621 chipAppendDelayString: "@?mdChipAppendDelay"
18625 e.$inject = ["$mdTheming", "$mdUtil", "$compile", "$log", "$timeout", "$$mdSvgRegistry"], t.module("material.components.chips").directive("mdChips", e);
18626 var n = ' <md-chips-wrap id="{{$mdChipsCtrl.wrapperId}}" tabindex="{{$mdChipsCtrl.readonly ? 0 : -1}}" ng-keydown="$mdChipsCtrl.chipKeydown($event)" ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus(), \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly, \'md-removable\': $mdChipsCtrl.isRemovable() }" aria-setsize="{{$mdChipsCtrl.items.length}}" class="md-chips"> <span ng-if="$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.containerHint}} </span> <md-chip ng-repeat="$chip in $mdChipsCtrl.items" index="{{$index}}" ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index, \'md-readonly\': !$mdChipsCtrl.ngModelCtrl || $mdChipsCtrl.readonly}"> <div class="md-chip-content" tabindex="{{$mdChipsCtrl.ariaTabIndex == $index ? 0 : -1}}" id="{{$mdChipsCtrl.contentIdFor($index)}}" role="option" aria-selected="{{$mdChipsCtrl.selectedChip == $index}}" aria-posinset="{{$index}}" ng-click="!$mdChipsCtrl.readonly && $mdChipsCtrl.focusChip($index)" ng-focus="!$mdChipsCtrl.readonly && $mdChipsCtrl.selectChip($index)" md-chip-transclude="$mdChipsCtrl.chipContentsTemplate"></div> <div ng-if="$mdChipsCtrl.isRemovable()" class="md-chip-remove-container" tabindex="-1" md-chip-transclude="$mdChipsCtrl.chipRemoveTemplate"></div> </md-chip> <div class="md-chip-input-container" ng-if="!$mdChipsCtrl.readonly && $mdChipsCtrl.ngModelCtrl"> <div md-chip-transclude="$mdChipsCtrl.chipInputTemplate"></div> </div> </md-chips-wrap>',
18627 r = ' <input class="md-input" tabindex="0" aria-label="{{$mdChipsCtrl.inputAriaLabel}}" placeholder="{{$mdChipsCtrl.getPlaceholder()}}" ng-model="$mdChipsCtrl.chipBuffer" ng-focus="$mdChipsCtrl.onInputFocus()" ng-blur="$mdChipsCtrl.onInputBlur()" ng-keydown="$mdChipsCtrl.inputKeydown($event)">',
18628 i = " <span>{{$chip}}</span>",
18629 o = ' <button class="md-chip-remove" ng-if="$mdChipsCtrl.isRemovable()" ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index)" type="button" tabindex="-1"> <md-icon md-svg-src="{{ $mdChipsCtrl.mdCloseIcon }}"></md-icon> <span class="md-visually-hidden"> {{$mdChipsCtrl.deleteButtonLabel}} </span> </button>'
18633 this.selectedItem = null, this.searchText = ""
18635 t.module("material.components.chips").controller("MdContactChipsCtrl", e), e.prototype.queryContact = function(e) {
18636 return this.contactQuery({
18639 }, e.prototype.itemName = function(e) {
18640 return e[this.contactName]
18646 template: function(e, t) {
18650 controller: "MdContactChipsCtrl",
18651 controllerAs: "$mdContactChipsCtrl",
18652 bindToController: !0,
18653 compile: function(n, r) {
18654 return function(n, i, o, a) {
18656 t.initOptionalProperties(n, r), e(i), i.attr("tabindex", "-1"), o.$observe("mdChipAppendDelay", function(e) {
18657 s.chipAppendDelay = e
18662 contactQuery: "&mdContacts",
18664 secondaryPlaceholder: "@",
18665 contactName: "@mdContactName",
18666 contactImage: "@mdContactImage",
18667 contactEmail: "@mdContactEmail",
18668 contacts: "=ngModel",
18669 requireMatch: "=?mdRequireMatch",
18670 minLength: "=?mdMinLength",
18671 highlightFlags: "@?mdHighlightFlags",
18672 chipAppendDelay: "@?mdChipAppendDelay"
18676 e.$inject = ["$mdTheming", "$mdUtil"], t.module("material.components.chips").directive("mdContactChips", e);
18677 var n = ' <md-chips class="md-contact-chips" ng-model="$mdContactChipsCtrl.contacts" md-require-match="$mdContactChipsCtrl.requireMatch" md-chip-append-delay="{{$mdContactChipsCtrl.chipAppendDelay}}" md-autocomplete-snap> <md-autocomplete md-menu-class="md-contact-chips-suggestions" md-selected-item="$mdContactChipsCtrl.selectedItem" md-search-text="$mdContactChipsCtrl.searchText" md-items="item in $mdContactChipsCtrl.queryContact($mdContactChipsCtrl.searchText)" md-item-text="$mdContactChipsCtrl.itemName(item)" md-no-cache="true" md-min-length="$mdContactChipsCtrl.minLength" md-autoselect placeholder="{{$mdContactChipsCtrl.contacts.length == 0 ? $mdContactChipsCtrl.placeholder : $mdContactChipsCtrl.secondaryPlaceholder}}"> <div class="md-contact-suggestion"> <img ng-src="{{item[$mdContactChipsCtrl.contactImage]}}" alt="{{item[$mdContactChipsCtrl.contactName]}}" ng-if="item[$mdContactChipsCtrl.contactImage]" /> <span class="md-contact-name" md-highlight-text="$mdContactChipsCtrl.searchText" md-highlight-flags="{{$mdContactChipsCtrl.highlightFlags}}"> {{item[$mdContactChipsCtrl.contactName]}} </span> <span class="md-contact-email" >{{item[$mdContactChipsCtrl.contactEmail]}}</span> </div> </md-autocomplete> <md-chip-template> <div class="md-contact-avatar"> <img ng-src="{{$chip[$mdContactChipsCtrl.contactImage]}}" alt="{{$chip[$mdContactChipsCtrl.contactName]}}" ng-if="$chip[$mdContactChipsCtrl.contactImage]" /> </div> <div class="md-contact-name"> {{$chip[$mdContactChipsCtrl.contactName]}} </div> </md-chip-template> </md-chips>'
18680 function e(e, n, i, o, a, s, c, l, u) {
18681 s(e), this.$element = e, this.$scope = n, this.dateUtil = i, this.$mdUtil = o, this.keyCode = a.KEY_CODE, this.$$rAF = c, this.$mdDateLocale = u, this.today = this.dateUtil.createDateAtMidnight(), this.ngModelCtrl = null, this.SELECTED_DATE_CLASS = "md-calendar-selected-date", this.TODAY_CLASS = "md-calendar-date-today", this.FOCUSED_DATE_CLASS = "md-focus", this.id = r++, this.displayDate = null, this.selectedDate = null, this.firstRenderableDate = null, this.lastRenderableDate = null, this.isInitialized = !1, this.width = 0, this.scrollbarWidth = 0, l.tabindex || e.attr("tabindex", "-1");
18682 var d, f = t.bind(this, this.handleKeyEvent);
18683 (d = e.parent().hasClass("md-datepicker-calendar") ? t.element(document.body) : e).on("keydown", f), n.$on("$destroy", function() {
18684 d.off("keydown", f)
18685 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
18687 e.$inject = ["$element", "$scope", "$$mdDateUtil", "$mdUtil", "$mdConstant", "$mdTheming", "$$rAF", "$attrs", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendar", function() {
18689 template: function(e, t) {
18690 return '<div ng-switch="calendarCtrl.currentView" ' + (t.hasOwnProperty("ngIf") ? "" : 'ng-if="calendarCtrl.isInitialized"') + '><md-calendar-year ng-switch-when="year"></md-calendar-year><md-calendar-month ng-switch-default></md-calendar-month></div>'
18693 minDate: "=mdMinDate",
18694 maxDate: "=mdMaxDate",
18695 dateFilter: "=mdDateFilter",
18696 _currentView: "@mdCurrentView"
18698 require: ["ngModel", "mdCalendar"],
18700 controllerAs: "calendarCtrl",
18701 bindToController: !0,
18702 link: function(e, t, n, r) {
18704 r[1].configureNgModel(i)
18710 e.prototype.$onInit = function() {
18711 this.currentView = this._currentView || "month";
18712 var e = this.$mdDateLocale;
18713 this.minDate && this.minDate > e.firstRenderableDate ? this.firstRenderableDate = this.minDate : this.firstRenderableDate = e.firstRenderableDate, this.maxDate && this.maxDate < e.lastRenderableDate ? this.lastRenderableDate = this.maxDate : this.lastRenderableDate = e.lastRenderableDate
18714 }, e.prototype.configureNgModel = function(e) {
18716 t.ngModelCtrl = e, t.$mdUtil.nextTick(function() {
18717 t.isInitialized = !0
18718 }), e.$render = function() {
18719 var e = this.$viewValue;
18720 t.$scope.$broadcast("md-calendar-parent-changed", e), t.selectedDate || (t.selectedDate = e), t.displayDate || (t.displayDate = t.selectedDate || t.today)
18722 }, e.prototype.setNgModelValue = function(e) {
18723 var t = this.dateUtil.createDateAtMidnight(e);
18724 return this.focus(t), this.$scope.$emit("md-calendar-change", t), this.ngModelCtrl.$setViewValue(t), this.ngModelCtrl.$render(), t
18725 }, e.prototype.setCurrentView = function(e, n) {
18727 r.$mdUtil.nextTick(function() {
18728 r.currentView = e, n && (r.displayDate = t.isDate(n) ? n : new Date(n))
18730 }, e.prototype.focus = function(e) {
18731 if (this.dateUtil.isValidDate(e)) {
18732 var t = this.$element[0].querySelector(".md-focus");
18733 t && t.classList.remove(this.FOCUSED_DATE_CLASS);
18734 var n = this.getDateId(e, this.currentView),
18735 r = document.getElementById(n);
18736 r && (r.classList.add(this.FOCUSED_DATE_CLASS), r.focus(), this.displayDate = e)
18738 var i = this.$element[0].querySelector("[ng-switch]");
18741 }, e.prototype.getActionFromKeyEvent = function(e) {
18742 var t = this.keyCode;
18746 case t.RIGHT_ARROW:
18747 return "move-right";
18749 return "move-left";
18751 return e.metaKey ? "move-page-down" : "move-row-down";
18753 return e.metaKey ? "move-page-up" : "move-row-up";
18755 return "move-page-down";
18757 return "move-page-up";
18765 }, e.prototype.handleKeyEvent = function(e) {
18767 this.$scope.$apply(function() {
18768 if (e.which == t.keyCode.ESCAPE || e.which == t.keyCode.TAB) return t.$scope.$emit("md-calendar-close"), void(e.which == t.keyCode.TAB && e.preventDefault());
18769 var n = t.getActionFromKeyEvent(e);
18770 n && (e.preventDefault(), e.stopPropagation(), t.$scope.$broadcast("md-calendar-parent-action", n))
18772 }, e.prototype.hideVerticalScrollbar = function(e) {
18774 var t = r.width || n,
18775 i = r.scrollbarWidth,
18776 a = e.calendarScroller;
18777 o.style.width = t + "px", a.style.width = t + i + "px", a.style.paddingRight = i + "px"
18781 o = i.querySelector(".md-calendar-scroll-mask");
18782 r.width > 0 ? t() : r.$$rAF(function() {
18783 var n = e.calendarScroller;
18784 r.scrollbarWidth = n.offsetWidth - n.clientWidth, r.width = i.querySelector("table").offsetWidth, t()
18786 }, e.prototype.getDateId = function(e, t) {
18787 if (!t) throw new Error("A namespace for the date id has to be specified.");
18788 return ["md", this.id, t, e.getFullYear(), e.getMonth(), e.getDate()].join("-")
18789 }, e.prototype.updateVirtualRepeat = function() {
18790 var e = this.$scope,
18791 t = e.$on("$md-resize-enable", function() {
18792 e.$$phase || e.$apply(), t()
18797 function e(e, t, n, r, i, o) {
18798 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.dateLocale = o, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1;
18800 this.cellClickHandler = function() {
18801 var e = i.getTimestampFromNode(this);
18802 a.$scope.$apply(function() {
18803 a.calendarCtrl.setNgModelValue(e)
18805 }, this.headerClickHandler = function() {
18806 a.calendarCtrl.setCurrentView("year", i.getTimestampFromNode(this))
18809 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonth", function() {
18811 template: '<table aria-hidden="true" class="md-calendar-day-header"><thead></thead></table><div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container" md-offset-size="' + (r - n) + '"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-month-body role="rowgroup" md-virtual-repeat="i in monthCtrl.items" md-month-offset="$index" class="md-calendar-month" md-start-index="monthCtrl.getSelectedMonthIndex()" md-item-size="' + n + '"><tr aria-hidden="true" style="height:' + n + 'px;"></tr></tbody></table></md-virtual-repeat-container></div>',
18812 require: ["^^mdCalendar", "mdCalendarMonth"],
18814 controllerAs: "monthCtrl",
18815 bindToController: !0,
18816 link: function(e, t, n, r) {
18824 e.prototype.initialize = function(e) {
18826 length: this.dateUtil.getMonthDistance(e.firstRenderableDate, e.lastRenderableDate) + 2
18827 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
18828 }, e.prototype.getSelectedMonthIndex = function() {
18829 var e = this.calendarCtrl;
18830 return this.dateUtil.getMonthDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
18831 }, e.prototype.changeSelectedDate = function(e) {
18832 var t = this.calendarCtrl,
18833 n = t.selectedDate;
18834 t.selectedDate = e, this.changeDisplayDate(e).then(function() {
18835 var r = t.SELECTED_DATE_CLASS;
18837 var i = document.getElementById(t.getDateId(n, "month"));
18838 i && (i.classList.remove(r), i.setAttribute("aria-selected", "false"))
18841 var o = document.getElementById(t.getDateId(e, "month"));
18842 o && (o.classList.add(r), o.setAttribute("aria-selected", "true"))
18845 }, e.prototype.changeDisplayDate = function(e) {
18846 if (!this.isInitialized) return this.buildWeekHeader(), this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
18847 if (!this.dateUtil.isValidDate(e) || this.isMonthTransitionInProgress) return this.$q.when();
18848 this.isMonthTransitionInProgress = !0;
18849 var t = this.animateDateChange(e);
18850 this.calendarCtrl.displayDate = e;
18852 return t.then(function() {
18853 n.isMonthTransitionInProgress = !1
18855 }, e.prototype.animateDateChange = function(e) {
18856 if (this.dateUtil.isValidDate(e)) {
18857 var t = this.dateUtil.getMonthDistance(this.calendarCtrl.firstRenderableDate, e);
18858 this.calendarScroller.scrollTop = t * n
18860 return this.$q.when()
18861 }, e.prototype.buildWeekHeader = function() {
18862 for (var e = this.dateLocale.firstDayOfWeek, t = this.dateLocale.shortDays, n = document.createElement("tr"), r = 0; r < 7; r++) {
18863 var i = document.createElement("th");
18864 i.textContent = t[(r + e) % 7], n.appendChild(i)
18866 this.$element.find("thead").append(n)
18867 }, e.prototype.attachScopeListeners = function() {
18869 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
18870 e.changeSelectedDate(n)
18871 }), e.$scope.$on("md-calendar-parent-action", t.bind(this, this.handleKeyEvent))
18872 }, e.prototype.handleKeyEvent = function(e, t) {
18873 var n = this.calendarCtrl,
18875 if ("select" === t) n.setNgModelValue(r);
18881 i = o.incrementDays(r, 1);
18884 i = o.incrementDays(r, -1);
18886 case "move-page-down":
18887 i = o.incrementMonths(r, 1);
18889 case "move-page-up":
18890 i = o.incrementMonths(r, -1);
18892 case "move-row-down":
18893 i = o.incrementDays(r, 7);
18895 case "move-row-up":
18896 i = o.incrementDays(r, -7);
18899 i = o.getFirstDateOfMonth(r);
18902 i = o.getLastDateOfMonth(r)
18904 i && (i = this.dateUtil.clampDate(i, n.minDate, n.maxDate), this.changeDisplayDate(i).then(function() {
18912 var i = e('<md-icon md-svg-src="' + r.mdTabsArrow + '"></md-icon>')({})[0];
18914 require: ["^^mdCalendar", "^^mdCalendarMonth", "mdCalendarMonthBody"],
18916 offset: "=mdMonthOffset"
18919 controllerAs: "mdMonthBodyCtrl",
18920 bindToController: !0,
18921 link: function(e, n, r, o) {
18925 c.calendarCtrl = a, c.monthCtrl = s, c.arrowIcon = i.cloneNode(!0), e.$watch(function() {
18928 t.isNumber(e) && c.generateContent()
18934 function n(e, t, n) {
18935 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.monthCtrl = null, this.calendarCtrl = null, this.offset = null, this.focusAfterAppend = null
18937 e.$inject = ["$compile", "$$mdSvgRegistry"], n.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarMonthBody", e), n.prototype.generateContent = function() {
18938 var e = this.dateUtil.incrementMonths(this.calendarCtrl.firstRenderableDate, this.offset);
18939 this.$element.empty().append(this.buildCalendarForMonth(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
18940 }, n.prototype.buildDateCell = function(e) {
18941 var t = this.monthCtrl,
18942 n = this.calendarCtrl,
18943 r = document.createElement("td");
18944 if (r.tabIndex = -1, r.classList.add("md-calendar-date"), r.setAttribute("role", "gridcell"), e) {
18945 r.setAttribute("tabindex", "-1"), r.setAttribute("aria-label", this.dateLocale.longDateFormatter(e)), r.id = n.getDateId(e, "month"), r.setAttribute("data-timestamp", e.getTime()), this.dateUtil.isSameDay(e, n.today) && r.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameDay(e, n.selectedDate) && (r.classList.add(n.SELECTED_DATE_CLASS), r.setAttribute("aria-selected", "true"));
18946 var i = this.dateLocale.dates[e.getDate()];
18947 if (this.isDateEnabled(e)) {
18948 var o = document.createElement("span");
18949 o.classList.add("md-calendar-date-selection-indicator"), o.textContent = i, r.appendChild(o), r.addEventListener("click", t.cellClickHandler), n.displayDate && this.dateUtil.isSameDay(e, n.displayDate) && (this.focusAfterAppend = r)
18950 } else r.classList.add("md-calendar-date-disabled"), r.textContent = i
18953 }, n.prototype.isDateEnabled = function(e) {
18954 return this.dateUtil.isDateWithinRange(e, this.calendarCtrl.minDate, this.calendarCtrl.maxDate) && (!t.isFunction(this.calendarCtrl.dateFilter) || this.calendarCtrl.dateFilter(e))
18955 }, n.prototype.buildDateRow = function(e) {
18956 var t = document.createElement("tr");
18957 return t.setAttribute("role", "row"), t.setAttribute("aria-label", this.dateLocale.weekNumberFormatter(e)), t
18958 }, n.prototype.buildCalendarForMonth = function(e) {
18959 var t = this.dateUtil.isValidDate(e) ? e : new Date,
18960 n = this.dateUtil.getFirstDateOfMonth(t),
18961 r = this.getLocaleDay_(n),
18962 i = this.dateUtil.getNumberOfDaysInMonth(t),
18963 o = document.createDocumentFragment(),
18965 s = this.buildDateRow(a);
18967 var c = this.offset === this.monthCtrl.items.length - 1,
18969 u = document.createElement("td"),
18970 d = document.createElement("span");
18971 if (d.textContent = this.dateLocale.monthHeaderFormatter(t), u.appendChild(d), u.classList.add("md-calendar-month-label"), this.calendarCtrl.maxDate && n > this.calendarCtrl.maxDate ? u.classList.add("md-calendar-month-label-disabled") : (u.addEventListener("click", this.monthCtrl.headerClickHandler), u.setAttribute("data-timestamp", n.getTime()), u.setAttribute("aria-label", this.dateLocale.monthFormatter(t)), u.appendChild(this.arrowIcon.cloneNode(!0))), r <= 2) {
18972 u.setAttribute("colspan", "7");
18973 var f = this.buildDateRow();
18974 if (f.appendChild(u), o.insertBefore(f, s), c) return o
18975 } else l = 3, u.setAttribute("colspan", "3"), s.appendChild(u);
18976 for (var h = l; h < r; h++) s.appendChild(this.buildDateCell());
18977 for (var p = r, m = n, g = 1; g <= i; g++) {
18980 p = 0, a++, s = this.buildDateRow(a), o.appendChild(s)
18983 var v = this.buildDateCell(m);
18984 s.appendChild(v), p++
18986 for (; s.childNodes.length < 7;) s.appendChild(this.buildDateCell());
18987 for (; o.childNodes.length < 6;) {
18988 for (var b = this.buildDateRow(), y = 0; y < 7; y++) b.appendChild(this.buildDateCell());
18992 }, n.prototype.getLocaleDay_ = function(e) {
18993 return (e.getDay() + (7 - this.dateLocale.firstDayOfWeek)) % 7
18997 function e(e, t, n, r, i) {
18998 this.$element = e, this.$scope = t, this.$animate = n, this.$q = r, this.dateUtil = i, this.calendarScroller = e[0].querySelector(".md-virtual-repeat-scroller"), this.isInitialized = !1, this.isMonthTransitionInProgress = !1;
19000 this.cellClickHandler = function() {
19001 o.calendarCtrl.setCurrentView("month", i.getTimestampFromNode(this))
19004 e.$inject = ["$element", "$scope", "$animate", "$q", "$$mdDateUtil"], t.module("material.components.datepicker").directive("mdCalendarYear", function() {
19006 template: '<div class="md-calendar-scroll-mask"><md-virtual-repeat-container class="md-calendar-scroll-container"><table role="grid" tabindex="0" class="md-calendar" aria-readonly="true"><tbody md-calendar-year-body role="rowgroup" md-virtual-repeat="i in yearCtrl.items" md-year-offset="$index" class="md-calendar-year" md-start-index="yearCtrl.getFocusedYearIndex()" md-item-size="' + n + '"><tr aria-hidden="true" style="height:' + n + 'px;"></tr></tbody></table></md-virtual-repeat-container></div>',
19007 require: ["^^mdCalendar", "mdCalendarYear"],
19009 controllerAs: "yearCtrl",
19010 bindToController: !0,
19011 link: function(e, t, n, r) {
19018 e.prototype.initialize = function(e) {
19020 length: this.dateUtil.getYearDistance(e.firstRenderableDate, e.lastRenderableDate) + 1
19021 }, this.calendarCtrl = e, this.attachScopeListeners(), e.updateVirtualRepeat(), e.ngModelCtrl && e.ngModelCtrl.$render()
19022 }, e.prototype.getFocusedYearIndex = function() {
19023 var e = this.calendarCtrl;
19024 return this.dateUtil.getYearDistance(e.firstRenderableDate, e.displayDate || e.selectedDate || e.today)
19025 }, e.prototype.changeDate = function(e) {
19026 if (!this.isInitialized) return this.calendarCtrl.hideVerticalScrollbar(this), this.isInitialized = !0, this.$q.when();
19027 if (this.dateUtil.isValidDate(e) && !this.isMonthTransitionInProgress) {
19029 n = this.animateDateChange(e);
19030 return t.isMonthTransitionInProgress = !0, t.calendarCtrl.displayDate = e, n.then(function() {
19031 t.isMonthTransitionInProgress = !1
19034 }, e.prototype.animateDateChange = function(e) {
19035 if (this.dateUtil.isValidDate(e)) {
19036 var t = this.dateUtil.getYearDistance(this.calendarCtrl.firstRenderableDate, e);
19037 this.calendarScroller.scrollTop = t * n
19039 return this.$q.when()
19040 }, e.prototype.handleKeyEvent = function(e, t) {
19041 var n = this.calendarCtrl,
19043 if ("select" === t) this.changeDate(r).then(function() {
19044 n.setCurrentView("month", r), n.focus(r)
19051 i = o.incrementMonths(r, 1);
19054 i = o.incrementMonths(r, -1);
19056 case "move-row-down":
19057 i = o.incrementMonths(r, 6);
19059 case "move-row-up":
19060 i = o.incrementMonths(r, -6)
19063 var a = n.minDate ? o.getFirstDateOfMonth(n.minDate) : null,
19064 s = n.maxDate ? o.getFirstDateOfMonth(n.maxDate) : null;
19065 i = o.getFirstDateOfMonth(this.dateUtil.clampDate(i, a, s)), this.changeDate(i).then(function() {
19070 }, e.prototype.attachScopeListeners = function() {
19072 e.$scope.$on("md-calendar-parent-changed", function(t, n) {
19074 }), e.$scope.$on("md-calendar-parent-action", t.bind(e, e.handleKeyEvent))
19078 function e(e, t, n) {
19079 this.$element = e, this.dateUtil = t, this.dateLocale = n, this.calendarCtrl = null, this.yearCtrl = null, this.offset = null, this.focusAfterAppend = null
19081 e.$inject = ["$element", "$$mdDateUtil", "$mdDateLocale"], t.module("material.components.datepicker").directive("mdCalendarYearBody", function() {
19083 require: ["^^mdCalendar", "^^mdCalendarYear", "mdCalendarYearBody"],
19085 offset: "=mdYearOffset"
19088 controllerAs: "mdYearBodyCtrl",
19089 bindToController: !0,
19090 link: function(e, n, r, i) {
19094 s.calendarCtrl = o, s.yearCtrl = a, e.$watch(function() {
19097 t.isNumber(e) && s.generateContent()
19101 }), e.prototype.generateContent = function() {
19102 var e = this.dateUtil.incrementYears(this.calendarCtrl.firstRenderableDate, this.offset);
19103 this.$element.empty().append(this.buildCalendarForYear(e)), this.focusAfterAppend && (this.focusAfterAppend.classList.add(this.calendarCtrl.FOCUSED_DATE_CLASS), this.focusAfterAppend.focus(), this.focusAfterAppend = null)
19104 }, e.prototype.buildMonthCell = function(e, t) {
19105 var n = this.calendarCtrl,
19107 i = this.buildBlankCell(),
19108 o = new Date(e, t, 1);
19109 i.setAttribute("aria-label", this.dateLocale.monthFormatter(o)), i.id = n.getDateId(o, "year"), i.setAttribute("data-timestamp", o.getTime()), this.dateUtil.isSameMonthAndYear(o, n.today) && i.classList.add(n.TODAY_CLASS), this.dateUtil.isValidDate(n.selectedDate) && this.dateUtil.isSameMonthAndYear(o, n.selectedDate) && (i.classList.add(n.SELECTED_DATE_CLASS), i.setAttribute("aria-selected", "true"));
19110 var a = this.dateLocale.shortMonths[t];
19111 if (this.dateUtil.isMonthWithinRange(o, n.minDate, n.maxDate)) {
19112 var s = document.createElement("span");
19113 s.classList.add("md-calendar-date-selection-indicator"), s.textContent = a, i.appendChild(s), i.addEventListener("click", r.cellClickHandler), n.displayDate && this.dateUtil.isSameMonthAndYear(o, n.displayDate) && (this.focusAfterAppend = i)
19114 } else i.classList.add("md-calendar-date-disabled"), i.textContent = a;
19116 }, e.prototype.buildBlankCell = function() {
19117 var e = document.createElement("td");
19118 return e.tabIndex = -1, e.classList.add("md-calendar-date"), e.setAttribute("role", "gridcell"), e.setAttribute("tabindex", "-1"), e
19119 }, e.prototype.buildCalendarForYear = function(e) {
19120 var t, n = e.getFullYear(),
19121 r = document.createDocumentFragment(),
19122 i = document.createElement("tr"),
19123 o = document.createElement("td");
19124 for (o.className = "md-calendar-month-label", o.textContent = n, i.appendChild(o), t = 0; t < 6; t++) i.appendChild(this.buildMonthCell(n, t));
19126 var a = document.createElement("tr");
19127 for (a.appendChild(this.buildBlankCell()), t = 6; t < 12; t++) a.appendChild(this.buildMonthCell(n, t));
19128 return r.appendChild(a), r
19130 }(), t.module("material.components.datepicker").config(["$provide", function(e) {
19132 this.months = null, this.shortMonths = null, this.days = null, this.shortDays = null, this.dates = null, this.firstDayOfWeek = 0, this.formatDate = null, this.parseDate = null, this.monthHeaderFormatter = null, this.weekNumberFormatter = null, this.longDateFormatter = null, this.msgCalendar = "", this.msgOpenCalendar = ""
19134 t.prototype.$get = function(e, t) {
19135 for (var n = e.DATETIME_FORMATS.SHORTDAY.map(function(e) {
19136 return e.substring(0, 1)
19137 }), r = Array(32), i = 1; i <= 31; i++) r[i] = i;
19138 var o = new Date(1880, 0, 1),
19139 a = new Date(o.getFullYear() + 250, 0, 1),
19141 months: this.months || e.DATETIME_FORMATS.MONTH,
19142 shortMonths: this.shortMonths || e.DATETIME_FORMATS.SHORTMONTH,
19143 days: this.days || e.DATETIME_FORMATS.DAY,
19144 shortDays: this.shortDays || n,
19145 dates: this.dates || r,
19146 firstDayOfWeek: this.firstDayOfWeek || 0,
19147 formatDate: this.formatDate || function(e, n) {
19149 var r = e.toLocaleTimeString(),
19151 return 0 !== e.getHours() || -1 === r.indexOf("11:") && -1 === r.indexOf("23:") || (i = new Date(e.getFullYear(), e.getMonth(), e.getDate(), 1, 0, 0)), t("date")(i, "M/d/yyyy", n)
19153 parseDate: this.parseDate || function(e) {
19156 isDateComplete: this.isDateComplete || function(e) {
19157 return e = e.trim(), /^(([a-zA-Z]{3,}|[0-9]{1,4})([ \.,]+|[\/\-])){2}([a-zA-Z]{3,}|[0-9]{1,4})$/.test(e)
19159 monthHeaderFormatter: this.monthHeaderFormatter || function(e) {
19160 return s.shortMonths[e.getMonth()] + " " + e.getFullYear()
19162 monthFormatter: this.monthFormatter || function(e) {
19163 return s.months[e.getMonth()] + " " + e.getFullYear()
19165 weekNumberFormatter: this.weekNumberFormatter || function(e) {
19168 longDateFormatter: this.longDateFormatter || function(e) {
19169 return [s.days[e.getDay()], s.months[e.getMonth()], s.dates[e.getDate()], e.getFullYear()].join(" ")
19171 msgCalendar: this.msgCalendar || "Calendar",
19172 msgOpenCalendar: this.msgOpenCalendar || "Open calendar",
19173 firstRenderableDate: this.firstRenderableDate || o,
19174 lastRenderableDate: this.lastRenderableDate || a
19177 }, t.prototype.$get.$inject = ["$locale", "$filter"], e.provider("$mdDateLocale", new t)
19178 }]), t.module("material.components.datepicker").factory("$$mdDateUtil", function() {
19180 return new Date(e.getFullYear(), e.getMonth(), 1)
19184 return new Date(e.getFullYear(), e.getMonth() + 1, 0).getDate()
19188 return new Date(e.getFullYear(), e.getMonth() + 1, 1)
19192 return new Date(e.getFullYear(), e.getMonth() - 1, 1)
19196 return e.getFullYear() === t.getFullYear() && e.getMonth() === t.getMonth()
19200 var r = new Date(e.getFullYear(), e.getMonth() + t, 1),
19202 return i < e.getDate() ? r.setDate(i) : r.setDate(e.getDate()), r
19206 return e && e.getTime && !isNaN(e.getTime())
19210 s(e) && e.setHours(0, 0, 0, 0)
19215 return n = t.isUndefined(e) ? new Date : new Date(e), c(n), n
19218 getFirstDateOfMonth: e,
19219 getNumberOfDaysInMonth: n,
19220 getDateInNextMonth: r,
19221 getDateInPreviousMonth: i,
19222 isInNextMonth: function(e, t) {
19225 isInPreviousMonth: function(e, t) {
19228 getDateMidpoint: function(e, t) {
19229 return l((e.getTime() + t.getTime()) / 2)
19231 isSameMonthAndYear: o,
19232 getWeekOfMonth: function(t) {
19234 return Math.floor((n.getDay() + t.getDate() - 1) / 7)
19236 incrementDays: function(e, t) {
19237 return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t)
19239 incrementMonths: a,
19240 getLastDateOfMonth: function(e) {
19241 return new Date(e.getFullYear(), e.getMonth(), n(e))
19243 isSameDay: function(e, t) {
19244 return e.getDate() == t.getDate() && o(e, t)
19246 getMonthDistance: function(e, t) {
19247 return 12 * (t.getFullYear() - e.getFullYear()) + (t.getMonth() - e.getMonth())
19250 setDateTimeToMidnight: c,
19251 createDateAtMidnight: l,
19252 isDateWithinRange: function(e, t, n) {
19254 i = s(t) ? l(t) : null,
19255 o = s(n) ? l(n) : null;
19256 return (!i || i <= r) && (!o || o >= r)
19258 incrementYears: function(e, t) {
19259 return a(e, 12 * t)
19261 getYearDistance: function(e, t) {
19262 return t.getFullYear() - e.getFullYear()
19264 clampDate: function(e, t, n) {
19266 return t && e < t && (r = new Date(t.getTime())), n && e > n && (r = new Date(n.getTime())), r
19268 getTimestampFromNode: function(e) {
19269 if (e && e.hasAttribute("data-timestamp")) return Number(e.getAttribute("data-timestamp"))
19271 isMonthWithinRange: function(e, t, n) {
19272 var r = e.getMonth(),
19273 i = e.getFullYear();
19274 return (!t || t.getFullYear() < i || t.getMonth() <= r) && (!n || n.getFullYear() > i || n.getMonth() >= r)
19279 function n(e, n, i, c) {
19281 template: function(t, n) {
19282 var r = n.mdHideIcons,
19283 i = n.ariaLabel || n.mdPlaceholder,
19284 o = "all" === r || "calendar" === r ? "" : '<md-button class="md-datepicker-button md-icon-button" type="button" tabindex="-1" aria-hidden="true" ng-click="ctrl.openCalendarPane($event)"><md-icon class="md-datepicker-calendar-icon" aria-label="md-calendar" md-svg-src="' + e.mdCalendar + '"></md-icon></md-button>',
19286 return "all" !== r && "triangle" !== r && (a = '<md-button type="button" md-no-ink class="md-datepicker-triangle-button md-icon-button" ng-click="ctrl.openCalendarPane($event)" aria-label="{{::ctrl.locale.msgOpenCalendar}}"><div class="md-datepicker-expand-triangle"></div></md-button>', t.addClass(s)), o + '<div class="md-datepicker-input-container" ng-class="{\'md-datepicker-focused\': ctrl.isFocused}"><input ' + (i ? 'aria-label="' + i + '" ' : "") + 'class="md-datepicker-input" aria-haspopup="true" aria-expanded="{{ctrl.isCalendarOpen}}" ng-focus="ctrl.setFocused(true)" ng-blur="ctrl.setFocused(false)"> ' + a + '</div><div class="md-datepicker-calendar-pane md-whiteframe-z1" id="{{::ctrl.calendarPaneId}}"><div class="md-datepicker-input-mask"><div class="md-datepicker-input-mask-opaque"></div></div><div class="md-datepicker-calendar"><md-calendar role="dialog" aria-label="{{::ctrl.locale.msgCalendar}}" md-current-view="{{::ctrl.currentView}}"md-min-date="ctrl.minDate"md-max-date="ctrl.maxDate"md-date-filter="ctrl.dateFilter"ng-model="ctrl.date" ng-if="ctrl.isCalendarOpen"></md-calendar></div></div>'
19288 require: ["ngModel", "mdDatepicker", "?^mdInputContainer", "?^form"],
19290 minDate: "=mdMinDate",
19291 maxDate: "=mdMaxDate",
19292 placeholder: "@mdPlaceholder",
19293 currentView: "@mdCurrentView",
19294 dateFilter: "=mdDateFilter",
19295 isOpen: "=?mdIsOpen",
19296 debounceInterval: "=mdDebounceInterval",
19297 dateLocale: "=mdDateLocale"
19300 controllerAs: "ctrl",
19301 bindToController: !0,
19302 link: function(e, r, s, l) {
19307 p = n.parseAttributeBoolean(s.mdNoAsterisk);
19308 if (d.configureNgModel(u, f, c), f) {
19309 var m = r[0].querySelector(".md-errors-spacer");
19310 m && r.after(t.element("<div>").append(m)), f.setHasPlaceholder(s.mdPlaceholder), f.input = r, f.element.addClass(o).toggleClass(a, "calendar" !== s.mdHideIcons && "all" !== s.mdHideIcons), f.label ? p || s.$observe("required", function(e) {
19311 f.label.toggleClass("md-required", !!e)
19312 }) : i.expect(r, "aria-label", s.mdPlaceholder), e.$watch(f.isErrorGetter || function() {
19313 return u.$invalid && (u.$touched || h && h.$submitted)
19315 } else if (h) var g = e.$watch(function() {
19316 return h.$submitted
19318 e && (d.updateErrorState(), g())
19324 function r(n, r, i, o, a, s, l, u, d, f, h) {
19325 this.$window = o, this.dateUtil = d, this.$mdConstant = a, this.$mdUtil = l, this.$$rAF = f, this.$mdDateLocale = u, this.documentElement = t.element(document.documentElement), this.ngModelCtrl = null, this.inputElement = r[0].querySelector("input"), this.ngInputElement = t.element(this.inputElement), this.inputContainer = r[0].querySelector(".md-datepicker-input-container"), this.calendarPane = r[0].querySelector(".md-datepicker-calendar-pane"), this.calendarButton = r[0].querySelector(".md-datepicker-button"), this.inputMask = t.element(r[0].querySelector(".md-datepicker-input-mask-opaque")), this.$element = r, this.$attrs = i, this.$scope = n, this.date = null, this.isFocused = !1, this.isDisabled, this.setDisabled(r[0].disabled || t.isString(i.disabled)), this.isCalendarOpen = !1, this.openOnFocus = i.hasOwnProperty("mdOpenOnFocus"), this.mdInputContainer = null, this.calendarPaneOpenedFrom = null, this.calendarPaneId = "md-date-pane-" + l.nextUid(), this.bodyClickHandler = t.bind(this, this.handleBodyClick), this.windowEventName = c.test(navigator.userAgent || navigator.vendor || e.opera) ? "orientationchange" : "resize", this.windowEventHandler = l.debounce(t.bind(this, this.closeCalendarPane), 100), this.windowBlurHandler = t.bind(this, this.handleWindowBlur), this.ngDateFilter = h("date"), this.leftMargin = 20, this.topMargin = null, i.tabindex ? (this.ngInputElement.attr("tabindex", i.tabindex), i.$set("tabindex", null)) : i.$set("tabindex", "-1"), i.$set("aria-owns", this.calendarPaneId), s(r), s(t.element(this.calendarPane));
19327 n.$on("$destroy", function() {
19328 p.detachCalendarPane()
19329 }), i.mdIsOpen && n.$watch("ctrl.isOpen", function(e) {
19330 e ? p.openCalendarPane({
19331 target: p.inputElement
19332 }) : p.closeCalendarPane()
19333 }), 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
19335 r.$inject = ["$scope", "$element", "$attrs", "$window", "$mdConstant", "$mdTheming", "$mdUtil", "$mdDateLocale", "$$mdDateUtil", "$$rAF", "$filter"], n.$inject = ["$$mdSvgRegistry", "$mdUtil", "$mdAria", "inputDirective"], t.module("material.components.datepicker").directive("mdDatepicker", n);
19336 var i = "md-datepicker-open",
19337 o = "_md-datepicker-floating-label",
19338 a = "_md-datepicker-has-calendar-icon",
19339 s = "_md-datepicker-has-triangle-icon",
19340 c = /ipad|iphone|ipod|android/i;
19341 r.prototype.$onInit = function() {
19342 this.locale = this.dateLocale ? t.extend({}, this.$mdDateLocale, this.dateLocale) : this.$mdDateLocale, this.installPropertyInterceptors(), this.attachChangeListeners(), this.attachInteractionListeners()
19343 }, r.prototype.configureNgModel = function(e, n, r) {
19344 this.ngModelCtrl = e, this.mdInputContainer = n, this.$attrs.$set("type", "date"), r[0].link.pre(this.$scope, {
19348 }, this.$attrs, [e]);
19350 i.ngModelCtrl.$formatters.push(function(e) {
19351 var n = t.isDefined(e) ? Date.parse(e) : null;
19352 if (!isNaN(n) && t.isNumber(n) && (e = new Date(n)), e && !(e instanceof Date)) throw Error("The ng-model for md-datepicker must be a Date instance or a value that can be parsed into a date. Currently the model is of type: " + typeof e);
19353 return i.onExternalChange(e), e
19354 }), e.$viewChangeListeners.unshift(t.bind(this, this.updateErrorState));
19355 var o = i.$mdUtil.getModelOption(e, "updateOn");
19356 o && this.ngInputElement.on(o, t.bind(this.$element, this.$element.triggerHandler, o))
19357 }, r.prototype.attachChangeListeners = function() {
19359 e.$scope.$on("md-calendar-change", function(t, n) {
19360 e.setModelValue(n), e.onExternalChange(n), e.closeCalendarPane()
19361 }), e.ngInputElement.on("input", t.bind(e, e.resizeInputElement));
19362 var n = t.isDefined(this.debounceInterval) ? this.debounceInterval : 500;
19363 e.ngInputElement.on("input", e.$mdUtil.debounce(e.handleInputEvent, n, e))
19364 }, r.prototype.attachInteractionListeners = function() {
19367 r = this.$mdConstant.KEY_CODE;
19368 e.ngInputElement.on("keydown", function(t) {
19369 t.altKey && t.keyCode == r.DOWN_ARROW && (e.openCalendarPane(t), n.$digest())
19370 }), e.openOnFocus && (e.ngInputElement.on("focus", t.bind(e, e.openCalendarPane)), t.element(e.$window).on("blur", e.windowBlurHandler), n.$on("$destroy", function() {
19371 t.element(e.$window).off("blur", e.windowBlurHandler)
19372 })), n.$on("md-calendar-close", function() {
19373 e.closeCalendarPane()
19375 }, r.prototype.installPropertyInterceptors = function() {
19377 if (this.$attrs.ngDisabled) {
19378 var t = this.$scope.$parent;
19379 t && t.$watch(this.$attrs.ngDisabled, function(t) {
19383 Object.defineProperty(this, "placeholder", {
19385 return e.inputElement.placeholder
19388 e.inputElement.placeholder = t || ""
19391 }, r.prototype.setDisabled = function(e) {
19392 this.isDisabled = e, this.inputElement.disabled = e, this.calendarButton && (this.calendarButton.disabled = e)
19393 }, r.prototype.updateErrorState = function(e) {
19394 var n = e || this.date;
19395 if (this.clearErrorState(), this.dateUtil.isValidDate(n)) {
19396 if (n = this.dateUtil.createDateAtMidnight(n), this.dateUtil.isValidDate(this.minDate)) {
19397 var r = this.dateUtil.createDateAtMidnight(this.minDate);
19398 this.ngModelCtrl.$setValidity("mindate", n >= r)
19400 if (this.dateUtil.isValidDate(this.maxDate)) {
19401 var i = this.dateUtil.createDateAtMidnight(this.maxDate);
19402 this.ngModelCtrl.$setValidity("maxdate", n <= i)
19404 t.isFunction(this.dateFilter) && this.ngModelCtrl.$setValidity("filtered", this.dateFilter(n))
19405 } else this.ngModelCtrl.$setValidity("valid", null == n);
19406 t.element(this.inputContainer).toggleClass("md-datepicker-invalid", !this.ngModelCtrl.$valid)
19407 }, r.prototype.clearErrorState = function() {
19408 this.inputContainer.classList.remove("md-datepicker-invalid"), ["mindate", "maxdate", "filtered", "valid"].forEach(function(e) {
19409 this.ngModelCtrl.$setValidity(e, !0)
19411 }, r.prototype.resizeInputElement = function() {
19412 this.inputElement.size = this.inputElement.value.length + 3
19413 }, r.prototype.handleInputEvent = function() {
19414 var e = this.inputElement.value,
19415 t = e ? this.locale.parseDate(e) : null;
19416 this.dateUtil.setDateTimeToMidnight(t), ("" == e || this.dateUtil.isValidDate(t) && this.locale.isDateComplete(e) && this.isDateEnabled(t)) && (this.setModelValue(t), this.date = t), this.updateErrorState(t)
19417 }, r.prototype.isDateEnabled = function(e) {
19418 return this.dateUtil.isDateWithinRange(e, this.minDate, this.maxDate) && (!t.isFunction(this.dateFilter) || this.dateFilter(e))
19419 }, r.prototype.attachCalendarPane = function() {
19420 var e = this.calendarPane,
19422 e.style.transform = "", this.$element.addClass(i), this.mdInputContainer && this.mdInputContainer.element.addClass(i), t.element(n).addClass("md-datepicker-is-showing");
19423 var r = this.inputContainer.getBoundingClientRect(),
19424 o = n.getBoundingClientRect();
19425 (!this.topMargin || this.topMargin < 0) && (this.topMargin = (this.inputMask.parent().prop("clientHeight") - this.ngInputElement.prop("clientHeight")) / 2);
19426 var a = r.top - o.top - this.topMargin,
19427 s = r.left - o.left - this.leftMargin,
19428 c = o.top < 0 && 0 == document.body.scrollTop ? -o.top : document.body.scrollTop,
19429 l = o.left < 0 && 0 == document.body.scrollLeft ? -o.left : document.body.scrollLeft,
19430 u = c + this.$window.innerHeight,
19431 d = l + this.$window.innerWidth;
19432 if (this.inputMask.css({
19433 position: "absolute",
19434 left: this.leftMargin + "px",
19435 top: this.topMargin + "px",
19436 width: r.width - 1 + "px",
19437 height: r.height - 2 + "px"
19439 if (d - 360 > 0) s = d - 360;
19442 var f = this.$window.innerWidth / 360;
19443 e.style.transform = "scale(" + f + ")"
19445 e.classList.add("md-datepicker-pos-adjusted")
19447 a + 368 > u && u - 368 > c && (a = u - 368, e.classList.add("md-datepicker-pos-adjusted")), e.style.left = s + "px", e.style.top = a + "px", document.body.appendChild(e), this.$$rAF(function() {
19448 e.classList.add("md-pane-open")
19450 }, r.prototype.detachCalendarPane = function() {
19451 this.$element.removeClass(i), this.mdInputContainer && this.mdInputContainer.element.removeClass(i), t.element(document.body).removeClass("md-datepicker-is-showing"), this.calendarPane.classList.remove("md-pane-open"), this.calendarPane.classList.remove("md-datepicker-pos-adjusted"), this.isCalendarOpen && this.$mdUtil.enableScrolling(), this.calendarPane.parentNode && this.calendarPane.parentNode.removeChild(this.calendarPane)
19452 }, r.prototype.openCalendarPane = function(t) {
19453 if (!this.isCalendarOpen && !this.isDisabled && !this.inputFocusedOnWindowBlur) {
19454 this.isCalendarOpen = this.isOpen = !0, this.calendarPaneOpenedFrom = t.target, this.$mdUtil.disableScrollAround(this.calendarPane), this.attachCalendarPane(), this.focusCalendar(), this.evalAttr("ngFocus");
19456 this.$mdUtil.nextTick(function() {
19457 n.documentElement.on("click touchstart", n.bodyClickHandler)
19458 }, !1), e.addEventListener(this.windowEventName, this.windowEventHandler)
19460 }, r.prototype.closeCalendarPane = function() {
19462 n.isCalendarOpen = n.isOpen = !1
19464 if (this.isCalendarOpen) {
19466 n.detachCalendarPane(), n.ngModelCtrl.$setTouched(), n.evalAttr("ngBlur"), n.documentElement.off("click touchstart", n.bodyClickHandler), e.removeEventListener(n.windowEventName, n.windowEventHandler), n.calendarPaneOpenedFrom.focus(), n.calendarPaneOpenedFrom = null, n.openOnFocus ? n.$mdUtil.nextTick(t) : t()
19468 }, r.prototype.getCalendarCtrl = function() {
19469 return t.element(this.calendarPane.querySelector("md-calendar")).controller("mdCalendar")
19470 }, r.prototype.focusCalendar = function() {
19472 this.$mdUtil.nextTick(function() {
19473 e.getCalendarCtrl().focus()
19475 }, r.prototype.setFocused = function(e) {
19476 e || this.ngModelCtrl.$setTouched(), this.openOnFocus || this.evalAttr(e ? "ngFocus" : "ngBlur"), this.isFocused = e
19477 }, r.prototype.handleBodyClick = function(e) {
19478 this.isCalendarOpen && (this.$mdUtil.getClosest(e.target, "md-calendar") || this.closeCalendarPane(), this.$scope.$digest())
19479 }, r.prototype.handleWindowBlur = function() {
19480 this.inputFocusedOnWindowBlur = document.activeElement === this.inputElement
19481 }, r.prototype.evalAttr = function(e) {
19482 this.$attrs[e] && this.$scope.$parent.$eval(this.$attrs[e])
19483 }, r.prototype.setModelValue = function(e) {
19484 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
19485 this.ngModelCtrl.$setViewValue(this.ngDateFilter(e, "yyyy-MM-dd", t))
19486 }, r.prototype.onExternalChange = function(e) {
19487 var t = this.$mdUtil.getModelOption(this.ngModelCtrl, "timezone");
19488 this.date = e, this.inputElement.value = this.locale.formatDate(e, t), this.mdInputContainer && this.mdInputContainer.setHasValue(!!e), this.resizeInputElement(), this.updateErrorState()
19492 t.module("material.components.icon").directive("mdIcon", ["$mdIcon", "$mdTheming", "$mdAria", "$sce", function(e, t, n, r) {
19495 link: function(r, i, o) {
19497 if (!o.mdSvgIcon && !o.mdSvgSrc) {
19498 o.mdFontIcon && (i.removeClass(s), i.addClass(o.mdFontIcon), s = o.mdFontIcon);
19499 var t = e.fontSet(o.mdFontSet);
19500 c !== t && (i.removeClass(c), i.addClass(t), c = t)
19504 var s = o.mdFontIcon,
19505 c = e.fontSet(o.mdFontSet);
19506 o.mdSvgIcon || o.mdSvgSrc || (o.mdFontIcon && i.addClass("md-font " + o.mdFontIcon), i.addClass(c)), o.$observe("mdFontIcon", a), o.$observe("mdFontSet", a), i[0].getAttribute(o.$attr.mdSvgSrc);
19507 var l = o.$normalize(o.$attr.mdSvgIcon || o.$attr.mdSvgSrc || "");
19508 if (o.role || (n.expect(i, "role", "img"), o.role = "img"), "img" === o.role && !o.ariaHidden && !n.hasAriaLabel(i)) {
19510 o.alt ? n.expect(i, "aria-label", o.alt) : n.parentHasAriaLabel(i, 2) ? n.expect(i, "aria-hidden", "true") : (u = o.mdFontIcon || o.mdSvgIcon || i.text()) ? n.expect(i, "aria-label", u) : n.expect(i, "aria-hidden", "true")
19512 l && o.$observe(l, function(t) {
19513 i.empty(), t && e(t).then(function(e) {
19514 i.empty(), i.append(e)
19525 this.url = e, this.viewBoxSize = t || o.defaultViewBoxSize
19528 function i(n, r, i, o, a, s) {
19530 return e = e || "", t.isString(e) || (e = s.getTrustedUrl(e)), g[e] ? i.when(l(g[e])) : b.test(e) || y.test(e) ? h(e).then(u(e)) : (-1 == e.indexOf(":") && (e = "$default:" + e), (n[e] ? d : f)(e).then(u(e)))
19535 r = "_cache" + a.nextUid();
19536 return n.id && (n.id += r), t.forEach(n.querySelectorAll("[id]"), function(e) {
19542 return function(t) {
19543 return g[e] = p(t) ? t : new m(t, n[e]), g[e].clone()
19549 return h(t.url).then(function(e) {
19556 var t = "icon " + e + " not found";
19557 return o.warn(t), i.reject(t || e)
19559 var r = e.substring(0, e.lastIndexOf(":")) || "$default",
19561 return a ? h(a.url).then(function(n) {
19562 var r = e.slice(e.lastIndexOf(":") + 1),
19563 i = n.querySelector("#" + r);
19564 return i ? new m(i, a) : t(e)
19569 return y.test(n) ? function(n) {
19571 o = /base64/i.test(n) ? e.atob(r[2]) : r[2];
19572 return i.when(t.element(o)[0])
19573 }(n) : function(e) {
19574 return i(function(n, i) {
19575 r(e, !0).then(function(r) {
19576 v[e] || (v[e] = t.element("<div>").append(r)[0].querySelector("svg")), n(v[e])
19578 var n = t.isString(e) ? e : e.message || e.data || e.statusText;
19586 return t.isDefined(e.element) && t.isDefined(e.config)
19590 e && "svg" != e.tagName && (e = t.element('<svg xmlns="http://www.w3.org/2000/svg">').append(e.cloneNode(!0))[0]), e.getAttribute("xmlns") || e.setAttribute("xmlns", "http://www.w3.org/2000/svg"), this.element = e, this.config = n, this.prepare()
19594 b = /[-\w@:%\+.~#?&//=]{2,}\.[a-z]{2,4}\b(\/[-\w@:%\+.~#?&//=]*)?/i,
19595 y = /^data:image\/svg\+xml[\s*;\w\-\=]*?(base64)?,(.*)$/i;
19596 return m.prototype = {
19597 clone: function() {
19598 return this.element.cloneNode(!0)
19600 prepare: function() {
19601 var e = this.config ? this.config.viewBoxSize : n.defaultViewBoxSize;
19606 preserveAspectRatio: "xMidYMid meet",
19607 viewBox: this.element.getAttribute("viewBox") || "0 0 " + e + " " + e,
19609 }, function(e, t) {
19610 this.element.setAttribute(t, e)
19613 }, c.fontSet = function(e) {
19614 if (t.isUndefined(e) || !e || !e.length) return n.defaultFontSet;
19616 return t.forEach(n.fontSets, function(t) {
19617 t.alias == e && (r = t.fontSet || r)
19621 i.$inject = ["config", "$templateRequest", "$q", "$log", "$mdUtil", "$sce"], t.module("material.components.icon").constant("$$mdSvgRegistry", {
19622 mdTabsArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4=",
19623 mdClose: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xOSA2LjQxbC0xLjQxLTEuNDEtNS41OSA1LjU5LTUuNTktNS41OS0xLjQxIDEuNDEgNS41OSA1LjU5LTUuNTkgNS41OSAxLjQxIDEuNDEgNS41OS01LjU5IDUuNTkgNS41OSAxLjQxLTEuNDEtNS41OS01LjU5eiIvPjwvZz48L3N2Zz4=",
19624 mdCancel: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik0xMiAyYy01LjUzIDAtMTAgNC40Ny0xMCAxMHM0LjQ3IDEwIDEwIDEwIDEwLTQuNDcgMTAtMTAtNC40Ny0xMC0xMC0xMHptNSAxMy41OWwtMS40MSAxLjQxLTMuNTktMy41OS0zLjU5IDMuNTktMS40MS0xLjQxIDMuNTktMy41OS0zLjU5LTMuNTkgMS40MS0xLjQxIDMuNTkgMy41OSAzLjU5LTMuNTkgMS40MSAxLjQxLTMuNTkgMy41OSAzLjU5IDMuNTl6Ii8+PC9nPjwvc3ZnPg==",
19625 mdMenu: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik0zLDZIMjFWOEgzVjZNMywxMUgyMVYxM0gzVjExTTMsMTZIMjFWMThIM1YxNloiIC8+PC9zdmc+",
19626 mdToggleArrow: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiPjxwYXRoIGQ9Ik0yNCAxNmwtMTIgMTIgMi44MyAyLjgzIDkuMTctOS4xNyA5LjE3IDkuMTcgMi44My0yLjgzeiIvPjxwYXRoIGQ9Ik0wIDBoNDh2NDhoLTQ4eiIgZmlsbD0ibm9uZSIvPjwvc3ZnPg==",
19627 mdCalendar: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",
19628 mdChecked: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz48L2c+PC9zdmc+"
19629 }).provider("$mdIcon", n);
19631 defaultViewBoxSize: 24,
19632 defaultFontSet: "material-icons",
19636 icon: function(e, t, n) {
19637 return -1 == e.indexOf(":") && (e = "$default:" + e), o[e] = new r(t, n), this
19639 iconSet: function(e, t, n) {
19640 return o[e] = new r(t, n), this
19642 defaultIconSet: function(e, t) {
19643 return o.$default || (o.$default = new r(e, t)), o.$default.viewBoxSize = t || o.defaultViewBoxSize, this
19645 defaultViewBoxSize: function(e) {
19646 return o.defaultViewBoxSize = e, this
19648 fontSet: function(e, t) {
19649 return o.fontSets.push({
19654 defaultFontSet: function(e) {
19655 return o.defaultFontSet = e || "", this
19657 defaultIconSize: function(e) {
19658 return o.defaultIconSize = e, this
19660 $get: ["$templateRequest", "$q", "$log", "$mdUtil", "$sce", function(e, t, n, r, a) {
19661 return i(o, e, t, n, r, a)
19666 function e(e, r, i, o, a, s, c, l, u) {
19667 var d, f, h = a.prefixer(),
19669 this.nestLevel = parseInt(r.mdNestLevel, 10) || 0, this.init = function(n, r) {
19670 r = r || {}, d = n, (f = i[0].querySelector(h.buildSelector(["ng-click", "ng-mouseenter"]))).setAttribute("aria-expanded", "false"), this.isInMenuBar = r.isInMenuBar, this.nestedMenus = a.nodesToArray(d[0].querySelectorAll(".md-nested-menu")), d.on("$mdInterimElementRemove", function() {
19671 p.isOpen = !1, a.nextTick(function() {
19672 p.onIsOpenChanged(p.isOpen)
19674 }), a.nextTick(function() {
19675 p.onIsOpenChanged(p.isOpen)
19677 var s = "menu_container_" + a.nextUid();
19678 d.attr("id", s), t.element(f).attr({
19680 "aria-haspopup": "true"
19681 }), o.$on("$destroy", t.bind(this, function() {
19682 this.disableHoverListener(), e.destroy()
19683 })), d.on("$destroy", function() {
19688 this.enableHoverListener = function() {
19689 v.push(c.$on("$mdMenuOpen", function(e, t) {
19690 d[0].contains(t[0]) && (p.currentlyOpenMenu = t.controller("mdMenu"), p.isAlreadyOpening = !1, p.currentlyOpenMenu.registerContainerProxy(p.triggerContainerProxy.bind(p)))
19691 })), v.push(c.$on("$mdMenuClose", function(e, t) {
19692 d[0].contains(t[0]) && (p.currentlyOpenMenu = n)
19693 })), (g = t.element(a.nodesToArray(d[0].children[0].children))).on("mouseenter", p.handleMenuItemHover), g.on("mouseleave", p.handleMenuItemMouseLeave)
19694 }, this.disableHoverListener = function() {
19695 for (; v.length;) v.shift()();
19696 g && g.off("mouseenter", p.handleMenuItemHover), g && g.off("mouseleave", p.handleMenuItemMouseLeave)
19697 }, this.handleMenuItemHover = function(e) {
19698 if (!p.isAlreadyOpening) {
19699 var n = e.target.querySelector("md-menu") || a.getClosest(e.target, "MD-MENU");
19701 if (n && (n = t.element(n).controller("mdMenu")), p.currentlyOpenMenu && p.currentlyOpenMenu != n) {
19702 var e = p.nestLevel + 1;
19703 p.currentlyOpenMenu.close(!0, {
19705 }), p.isAlreadyOpening = !!n, n && n.open()
19706 } else n && !n.isOpen && n.open && (p.isAlreadyOpening = !!n, n && n.open())
19708 var r = e.currentTarget.querySelector(".md-button:not([disabled])");
19711 }, this.handleMenuItemMouseLeave = function() {
19712 m && (s.cancel(m), m = n)
19713 }, this.open = function(t) {
19714 t && t.stopPropagation(), t && t.preventDefault(), p.isOpen || (p.enableHoverListener(), p.isOpen = !0, a.nextTick(function() {
19715 p.onIsOpenChanged(p.isOpen)
19716 }), (f = f || (t ? t.target : i[0])).setAttribute("aria-expanded", "true"), o.$emit("$mdMenuOpen", i), e.show({
19719 nestLevel: p.nestLevel,
19722 preserveElement: !0,
19724 }).finally(function() {
19725 f.setAttribute("aria-expanded", "false"), p.disableHoverListener()
19727 }, this.onIsOpenChanged = function(e) {
19728 e ? (d.attr("aria-hidden", "false"), i[0].classList.add("md-open"), t.forEach(p.nestedMenus, function(e) {
19729 e.classList.remove("md-open")
19730 })) : (d.attr("aria-hidden", "true"), i[0].classList.remove("md-open")), o.$mdMenuIsOpen = p.isOpen
19731 }, this.focusMenuContainer = function() {
19732 var e = d[0].querySelector(h.buildSelector(["md-menu-focus-target", "md-autofocus"]));
19733 e || (e = d[0].querySelector(".md-button:not([disabled])")), e.focus()
19734 }, this.registerContainerProxy = function(e) {
19735 this.containerProxy = e
19736 }, this.triggerContainerProxy = function(e) {
19737 this.containerProxy && this.containerProxy(e)
19738 }, this.destroy = function() {
19739 return p.isOpen ? e.destroy() : l.when(!1)
19740 }, this.close = function(n, r) {
19742 p.isOpen = !1, a.nextTick(function() {
19743 p.onIsOpenChanged(p.isOpen)
19745 var s = t.extend({}, r, {
19748 if (o.$emit("$mdMenuClose", i, s), e.hide(null, r), !n) {
19749 var c = p.restoreFocusTo || i.find("button")[0];
19750 c instanceof t.element && (c = c[0]), c && c.focus()
19753 }, this.positionMode = function() {
19754 var e = (r.mdPositionMode || "target").split(" ");
19755 return 1 == e.length && e.push(e[0]), {
19759 }, this.offsets = function() {
19760 var e = (r.mdOffset || "0 0").split(" ").map(parseFloat);
19761 if (2 == e.length) return {
19765 if (1 == e.length) return {
19769 throw Error("Invalid offsets specified. Please follow format <x, y> or <n>")
19773 }, o.$mdOpenMenu = t.bind(this, function() {
19774 return u.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."), this.open.apply(this, arguments)
19777 e.$inject = ["$mdMenu", "$attrs", "$element", "$scope", "$mdUtil", "$timeout", "$rootScope", "$q", "$log"], t.module("material.components.menu").controller("mdMenuCtrl", e)
19781 function n(e, n, r, i) {
19784 s = t.element('<div class="_md md-open-menu-container md-whiteframe-z2"></div>'),
19785 c = n.children()[1];
19786 n.addClass("_md"), c.hasAttribute("role") || c.setAttribute("role", "menu"), s.append(c), n.on("$destroy", function() {
19788 }), n.append(s), s[0].style.display = "none", o.init(s, {
19792 var r = "Invalid HTML for md-menu: ";
19795 require: ["mdMenu", "?^mdMenuBar"],
19796 controller: "mdMenuCtrl",
19798 compile: function(i) {
19799 i.addClass("md-menu");
19800 var o = i.children()[0],
19801 a = i.children()[1],
19803 s.hasAttribute(o, "ng-click") || (o = o.querySelector(s.buildSelector(["ng-click", "ng-mouseenter"])) || o);
19804 var c = "MD-BUTTON" === o.nodeName || "BUTTON" === o.nodeName;
19805 if (o && c && !o.hasAttribute("type") && o.setAttribute("type", "button"), !o) throw Error(r + "Expected the menu to have a trigger element.");
19806 if (!a || "MD-MENU-CONTENT" !== a.nodeName) throw Error(r + "Expected the menu to contain a `md-menu-content` element.");
19807 o && o.setAttribute("aria-haspopup", "true");
19808 var l = i[0].querySelectorAll("md-menu"),
19809 u = parseInt(i[0].getAttribute("md-nest-level"), 10) || 0;
19810 return l && t.forEach(e.nodesToArray(l), function(e) {
19811 e.hasAttribute("md-position-mode") || e.setAttribute("md-position-mode", "cascade"), e.classList.add("_md-nested-menu"), e.setAttribute("md-nest-level", u + 1)
19816 e.$inject = ["$mdUtil"], t.module("material.components.menu").directive("mdMenu", e)
19820 function r(e, r, a, s, c, l, u, d, f, h) {
19821 function p(n, r, i) {
19822 return i.nestLevel ? t.noop : (i.disableParentScroll && !e.getClosest(i.target, "MD-DIALOG") ? i.restoreScroll = e.disableScrollAround(i.element, i.parent) : i.disableParentScroll = !1, i.hasBackdrop && (i.backdrop = e.createBackdrop(n, "md-menu-backdrop md-click-catcher"), f.enter(i.backdrop, s[0].body)), function() {
19823 i.backdrop && i.backdrop.remove(), i.disableParentScroll && i.restoreScroll()
19827 function m(t, n, r, i) {
19828 for (var o, a = e.getClosest(t.target, "MD-MENU-ITEM"), s = e.nodesToArray(n[0].children), c = s.indexOf(a) + i; c >= 0 && c < s.length && !(o = g(s[c].querySelector(".md-button"))); c += i);
19833 if (e && -1 != e.getAttribute("tabindex")) return e.focus(), s[0].activeElement == e
19837 t.preserveElement ? i(e).style.display = "none" : i(e).parentNode === i(t.parent) && i(t.parent).removeChild(i(e))
19842 l = t[0].firstElementChild,
19843 u = l.getBoundingClientRect(),
19844 d = s[0].body.getBoundingClientRect(),
19845 f = c.getComputedStyle(l),
19846 h = r.target[0].querySelector(y.buildSelector("md-menu-origin")) || r.target[0],
19847 p = h.getBoundingClientRect(),
19850 top: Math.max(d.top, 0) + o,
19851 bottom: Math.max(d.bottom, Math.max(d.top, 0) + d.height) - o,
19866 b = r.mdMenuCtrl.positionMode();
19867 "target" != b.top && "target" != b.left && "target-right" != b.left || (i = function() {
19868 for (var e = 0; e < l.children.length; ++e)
19869 if ("none" != c.getComputedStyle(l.children[e]).display) return l.children[e]
19870 }()) && (g = (i = (i = i.firstElementChild || i).querySelector(y.buildSelector("md-menu-align-target")) || i).getBoundingClientRect(), v = {
19871 top: parseFloat(a.style.top || 0),
19872 left: parseFloat(a.style.left || 0)
19878 $.top = v.top + p.top - g.top;
19881 $.top = p.top - parseFloat(f.paddingTop) - h.style.top;
19884 $.top = p.top + p.height;
19887 throw new Error('Invalid target mode "' + b.top + '" specified for md-menu on Y axis.')
19889 var w = "rtl" == e.bidi();
19892 $.left = v.left + p.left - g.left, _ += w ? "right" : "left";
19894 case "target-left":
19895 $.left = p.left, _ += "left";
19897 case "target-right":
19898 $.left = p.right - u.width + (u.right - g.right), _ += "right";
19901 var E = w ? p.left - u.width < m.left : p.right + u.width < m.right;
19902 $.left = E ? p.right - h.style.left : p.left - h.style.left - u.width, _ += E ? "left" : "right";
19905 w ? ($.left = p.right - p.width, _ += "left") : ($.left = p.right - u.width, _ += "right");
19908 w ? ($.left = p.right - u.width, _ += "right") : ($.left = p.left, _ += "left");
19911 throw new Error('Invalid target mode "' + b.left + '" specified for md-menu on X axis.')
19913 var C = r.mdMenuCtrl.offsets();
19914 $.top += C.top, $.left += C.left,
19916 e.top = Math.max(Math.min(e.top, m.bottom - a.offsetHeight), m.top), e.left = Math.max(Math.min(e.left, m.right - a.offsetWidth), m.left)
19918 var x = Math.round(100 * Math.min(p.width / a.offsetWidth, 1)) / 100,
19919 k = Math.round(100 * Math.min(p.height / a.offsetHeight, 1)) / 100;
19921 top: Math.round($.top),
19922 left: Math.round($.left),
19923 transform: r.alreadyOpen ? n : e.supplant("scale({0},{1})", [x, k]),
19927 var y = e.prefixer(),
19928 $ = e.dom.animator;
19931 onShow: function(n, i, o) {
19933 return o.backdrop ? (o.backdrop.on("click", f), function() {
19934 o.backdrop.off("click", f)
19939 e.preventDefault(), e.stopPropagation(), n.$apply(function() {
19940 o.mdMenuCtrl.close(!0, {
19949 switch (t.keyCode) {
19950 case a.KEY_CODE.ESCAPE:
19951 o.mdMenuCtrl.close(!1, {
19955 case a.KEY_CODE.UP_ARROW:
19956 m(t, o.menuContentEl, 0, -1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19958 case a.KEY_CODE.DOWN_ARROW:
19959 m(t, o.menuContentEl, 0, 1) || o.nestLevel || o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19961 case a.KEY_CODE.LEFT_ARROW:
19962 o.nestLevel ? o.mdMenuCtrl.close() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0;
19964 case a.KEY_CODE.RIGHT_ARROW:
19965 var r = e.getClosest(t.target, "MD-MENU");
19966 r && r != o.parent[0] ? t.target.click() : o.mdMenuCtrl.triggerContainerProxy(t), n = !0
19968 n && (t.preventDefault(), t.stopImmediatePropagation())
19974 for (var n, r = 0; n = t[r]; ++r)
19975 if (y.hasAttribute(e, n)) return !0;
19980 if (i == o.menuContentEl[0]) return;
19981 if ((r(i, ["ng-click", "ng-href", "ui-sref"]) || "BUTTON" == i.nodeName || "MD-BUTTON" == i.nodeName) && !r(i, ["md-prevent-menu-close"])) {
19982 var a = e.getClosest(i, "MD-MENU");
19983 i.hasAttribute("disabled") || a && a != o.parent[0] || n.$apply(function() {
19984 o.mdMenuCtrl.close(!0, {
19990 } while (i = i.parentNode)
19992 if (!o.menuContentEl[0]) return t.noop;
19993 o.menuContentEl.on("keydown", r), o.menuContentEl[0].addEventListener("click", i, !0);
19994 var s = o.menuContentEl[0].querySelector(y.buildSelector(["md-menu-focus-target", "md-autofocus"]));
19996 for (var c = o.menuContentEl[0].children.length, l = 0; l < c; l++) {
19997 var u = o.menuContentEl[0].children[l];
19998 if (s = u.querySelector(".md-button:not([disabled])")) break;
19999 if (u.firstElementChild && !u.firstElementChild.disabled) {
20000 s = u.firstElementChild;
20004 return s && s.focus(),
20006 o.menuContentEl.off("keydown", r), o.menuContentEl[0].removeEventListener("click", i, !0)
20009 return function() {
20010 if (!o.target) throw Error("$mdMenu.show() expected a target to animate from in options.target");
20014 target: t.element(o.target),
20015 parent: t.element(o.parent),
20016 menuContentEl: t.element(i[0].querySelector("md-menu-content"))
20018 }(), o.menuContentEl[0] ? r.inherit(o.menuContentEl, o.target) : h.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.", i), o.cleanupResizing = function() {
20019 var e = function(e, t) {
20020 return u.throttle(function() {
20021 if (!o.isRemoved) {
20027 return c.addEventListener("resize", e), c.addEventListener("orientationchange", e),
20029 c.removeEventListener("resize", e), c.removeEventListener("orientationchange", e)
20031 }(), o.hideBackdrop = p(n, i, o), (o.parent.append(i), i[0].style.display = "", l(function(e) {
20033 i.removeClass("md-leave"), d(i, {
20034 addClass: "md-active",
20040 })).then(function(e) {
20041 return o.alreadyOpen = !0, o.cleanupInteraction = g(), o.cleanupBackdrop = s(), i.addClass("md-clickable"), e
20044 onRemove: function(e, t, n) {
20046 t.removeClass("md-active"), v(t, n), n.alreadyOpen = !1
20048 return n.cleanupInteraction(), n.cleanupBackdrop(), n.cleanupResizing(), n.hideBackdrop(), t.removeClass("md-clickable"), !0 === n.$destroy ? r() : d(t, {
20049 addClass: "md-leave"
20053 disableParentScroll: !0,
20062 return e instanceof t.element && (e = e[0]), e
20064 r.$inject = ["$mdUtil", "$mdTheming", "$mdConstant", "$document", "$window", "$q", "$$rAF", "$animateCss", "$animate", "$log"];
20066 return e("$mdMenu").setDefaults({
20067 methods: ["target"],
20071 e.$inject = ["$$interimElementProvider"], t.module("material.components.menu").provider("$mdMenu", e)
20074 function e(e, n, i, o, a, s, c, l) {
20075 this.$element = i, this.$attrs = o, this.$mdConstant = a, this.$mdUtil = c, this.$document = s, this.$scope = e, this.$rootScope = n, this.$timeout = l;
20077 t.forEach(r, function(e) {
20078 u[e] = t.bind(u, u[e])
20081 e.$inject = ["$scope", "$rootScope", "$element", "$attrs", "$mdConstant", "$document", "$mdUtil", "$timeout"], t.module("material.components.menuBar").controller("MenuBarController", e);
20082 var r = ["handleKeyDown", "handleMenuHover", "scheduleOpenHoveredMenu", "cancelScheduledOpen"];
20083 e.prototype.init = function() {
20084 var e = this.$element,
20089 e.on("keydown", this.handleKeyDown), this.parentToolbar = t.getClosest(e, "MD-TOOLBAR"), o.push(this.$rootScope.$on("$mdMenuOpen", function(t, n) {
20090 -1 != i.getMenus().indexOf(n[0]) && (e[0].classList.add("md-open"), n[0].classList.add("md-open"), i.currentlyOpenMenu = n.controller("mdMenu"), i.currentlyOpenMenu.registerContainerProxy(i.handleKeyDown), i.enableOpenOnHover())
20091 })), o.push(this.$rootScope.$on("$mdMenuClose", function(r, o, a) {
20092 var s = i.getMenus();
20093 if (-1 != s.indexOf(o[0]) && (e[0].classList.remove("md-open"), o[0].classList.remove("md-open")), e[0].contains(o[0])) {
20094 for (var c = o[0]; c && -1 == s.indexOf(c);) c = t.getClosest(c, "MD-MENU", !0);
20095 c && (a.skipFocus || c.querySelector("button:not([disabled])").focus(), i.currentlyOpenMenu = n, i.disableOpenOnHover(), i.setKeyboardMode(!0))
20097 })), r.$on("$destroy", function() {
20098 for (i.disableOpenOnHover(); o.length;) o.shift()()
20099 }), this.setKeyboardMode(!0)
20100 }, e.prototype.setKeyboardMode = function(e) {
20101 e ? this.$element[0].classList.add("md-keyboard-mode") : this.$element[0].classList.remove("md-keyboard-mode")
20102 }, e.prototype.enableOpenOnHover = function() {
20103 if (!this.openOnHoverEnabled) {
20105 e.openOnHoverEnabled = !0, e.parentToolbar && (e.parentToolbar.classList.add("md-has-open-menu"), e.$mdUtil.nextTick(function() {
20106 t.element(e.parentToolbar).on("click", e.handleParentClick)
20107 }, !1)), t.element(e.getMenus()).on("mouseenter", e.handleMenuHover)
20109 }, e.prototype.handleMenuHover = function(e) {
20110 this.setKeyboardMode(!1), this.openOnHoverEnabled && this.scheduleOpenHoveredMenu(e)
20111 }, e.prototype.disableOpenOnHover = function() {
20112 this.openOnHoverEnabled && (this.openOnHoverEnabled = !1, this.parentToolbar && (this.parentToolbar.classList.remove("md-has-open-menu"), t.element(this.parentToolbar).off("click", this.handleParentClick)), t.element(this.getMenus()).off("mouseenter", this.handleMenuHover))
20113 }, e.prototype.scheduleOpenHoveredMenu = function(e) {
20114 var n = t.element(e.currentTarget).controller("mdMenu");
20115 this.setKeyboardMode(!1), this.scheduleOpenMenu(n)
20116 }, e.prototype.scheduleOpenMenu = function(e) {
20119 e != t.currentlyOpenMenu && (r.cancel(t.pendingMenuOpen), t.pendingMenuOpen = r(function() {
20120 t.pendingMenuOpen = n, t.currentlyOpenMenu && t.currentlyOpenMenu.close(!0, {
20124 }, e.prototype.handleKeyDown = function(e) {
20125 var n = this.$mdConstant.KEY_CODE,
20126 r = this.currentlyOpenMenu,
20128 this.setKeyboardMode(!0);
20130 switch (e.keyCode) {
20132 r ? r.focusMenuContainer() : this.openFocusedMenu(), o = !0;
20135 r && r.close(), o = !0;
20138 a = this.focusMenu(-1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0;
20140 case n.RIGHT_ARROW:
20141 a = this.focusMenu(1), i && (s = t.element(a).controller("mdMenu"), this.scheduleOpenMenu(s)), o = !0
20143 o && (e && e.preventDefault && e.preventDefault(), e && e.stopImmediatePropagation && e.stopImmediatePropagation())
20144 }, e.prototype.focusMenu = function(e) {
20145 var t = this.getMenus(),
20146 n = this.getFocusedMenuIndex(); - 1 == n && (n = this.getOpenMenuIndex());
20148 if (-1 == n ? (n = 0, r = !0) : (e < 0 && n > 0 || e > 0 && n < t.length - e) && (n += e, r = !0), r) return t[n].querySelector("button").focus(), t[n]
20149 }, e.prototype.openFocusedMenu = function() {
20150 var e = this.getFocusedMenu();
20151 e && t.element(e).controller("mdMenu").open()
20152 }, e.prototype.getMenus = function() {
20153 var e = this.$element;
20154 return this.$mdUtil.nodesToArray(e[0].children).filter(function(e) {
20155 return "MD-MENU" == e.nodeName
20157 }, e.prototype.getFocusedMenu = function() {
20158 return this.getMenus()[this.getFocusedMenuIndex()]
20159 }, e.prototype.getFocusedMenuIndex = function() {
20160 var e = this.$mdUtil.getClosest(this.$document[0].activeElement, "MD-MENU");
20161 return e ? this.getMenus().indexOf(e) : -1
20162 }, e.prototype.getOpenMenuIndex = function() {
20163 for (var e = this.getMenus(), t = 0; t < e.length; ++t)
20164 if (e[t].classList.contains("md-open")) return t;
20166 }, e.prototype.handleParentClick = function(e) {
20167 var n = this.querySelector("md-menu.md-open");
20168 n && !n.contains(e.target) && t.element(n).controller("mdMenu").close(!0, {
20177 require: "mdMenuBar",
20178 controller: "MenuBarController",
20179 compile: function(r, i) {
20180 return i.ariaRole || r[0].setAttribute("role", "menubar"), t.forEach(r[0].children, function(n) {
20181 if ("MD-MENU" == n.nodeName) {
20182 n.hasAttribute("md-position-mode") || (n.setAttribute("md-position-mode", "left bottom"), n.querySelector("button, a, md-button").setAttribute("role", "menuitem"));
20183 var r = e.nodesToArray(n.querySelectorAll("md-menu-content"));
20184 t.forEach(r, function(e) {
20185 e.classList.add("md-menu-bar-menu"), e.classList.add("md-dense"), e.hasAttribute("width") || e.setAttribute("width", 5)
20188 }), r.find("md-menu-item").addClass("md-in-menu-bar"),
20189 function(e, t, r, i) {
20190 t.addClass("_md"), n(e, t), i.init()
20195 e.$inject = ["$mdUtil", "$mdTheming"], t.module("material.components.menuBar").directive("mdMenuBar", e)
20198 t.module("material.components.menuBar").directive("mdMenuDivider", function() {
20201 compile: function(e, t) {
20202 t.role || e[0].setAttribute("role", "separator")
20208 function e(e, t, n) {
20209 this.$element = t, this.$attrs = n, this.$scope = e
20211 e.$inject = ["$scope", "$element", "$attrs"], t.module("material.components.menuBar").controller("MenuItemController", e), e.prototype.init = function(e) {
20212 var t = this.$element,
20214 this.ngModel = e, "checkbox" != n.type && "radio" != n.type || (this.mode = n.type, this.iconEl = t[0].children[0], this.buttonEl = t[0].children[1], e && this.initClickListeners())
20215 }, e.prototype.clearNgAria = function() {
20216 var e = this.$element[0],
20217 n = ["role", "tabindex", "aria-invalid", "aria-checked"];
20218 t.forEach(n, function(t) {
20219 e.removeAttribute(t)
20221 }, e.prototype.initClickListeners = function() {
20223 if ("radio" == s) {
20224 var e = a.ngValue ? o.$eval(a.ngValue) : a.value;
20225 return i.$modelValue == e
20227 return i.$modelValue
20231 e ? l.off("click", u) : l.on("click", u)
20237 s = (this.$element, this.mode);
20238 this.handleClick = t.bind(this, this.handleClick);
20239 var c = this.iconEl,
20240 l = t.element(this.buttonEl),
20241 u = this.handleClick;
20242 a.$observe("disabled", n), n(a.disabled), i.$render = function() {
20243 r.clearNgAria(), e() ? (c.style.display = "", l.attr("aria-checked", "true")) : (c.style.display = "none", l.attr("aria-checked", "false"))
20244 }, o.$$postDigest(i.$render)
20245 }, e.prototype.handleClick = function(e) {
20246 var t, n = this.mode,
20249 "checkbox" == n ? t = !r.$modelValue : "radio" == n && (t = i.ngValue ? this.$scope.$eval(i.ngValue) : i.value), r.$setViewValue(t), r.$render()
20253 function e(e, n, r) {
20255 controller: "MenuItemController",
20256 require: ["mdMenuItem", "?ngModel"],
20257 priority: n.BEFORE_NG_ARIA,
20258 compile: function(n, i) {
20259 function o(e, r, i) {
20260 (i = i || n) instanceof t.element && (i = i[0]), i.hasAttribute(e) || i.setAttribute(e, r)
20263 if ("checkbox" != a && "radio" != a || !n.hasClass("md-in-menu-bar")) o("role", "menuitem", n[0].querySelector("md-button, button, a"));
20265 var s = n[0].textContent,
20266 c = t.element('<md-button type="button"></md-button>'),
20267 l = '<md-icon md-svg-src="' + r.mdChecked + '"></md-icon>';
20268 c.html(s), c.attr("tabindex", "0"), n.html(""), n.append(t.element(l)), n.append(c), n.addClass("md-indent").removeClass("md-in-menu-bar"), o("role", "checkbox" == a ? "menuitemcheckbox" : "menuitemradio", c),
20270 var i = e.prefixer(r);
20271 t.forEach(i, function(e) {
20272 if (n[0].hasAttribute(e)) {
20273 var t = n[0].getAttribute(e);
20274 c[0].setAttribute(e, t), n[0].removeAttribute(e)
20279 return function(e, t, n, r) {
20287 e.$inject = ["$mdUtil", "$mdConstant", "$$mdSvgRegistry"], t.module("material.components.menuBar").directive("mdMenuItem", e)
20290 function e(e, n, r, i, o, a) {
20291 function s(a, s, y) {
20292 function $(t, r, o, s, c, u) {
20294 M.attr("stroke-dashoffset", l(b, y, e, E)), M.attr("transform", "rotate(" + w + " " + b / 2 + " " + b / 2 + ")")
20299 b = d(a.mdDiameter),
20302 _ = s || n.duration,
20303 w = -90 * (c || 0),
20305 r === t ? p(r) : C = h(function n() {
20306 var r = e.Math.max(0, e.Math.min(i.now() - g, _));
20307 p($(r, t, v, _)), m === D && r < _ && (C = h(n))
20312 $(S, A, n.easeFnIndeterminate, n.durationIndeterminate, O, 75), O = ++O % 4
20316 x || (x = o(_, n.durationIndeterminate, 0, !1), _(), s.addClass(b).removeAttr("aria-valuenow"))
20320 x && (o.cancel(x), x = null, s.removeClass(b))
20322 var C, x, k = s[0],
20323 T = t.element(k.querySelector("svg")),
20324 M = t.element(k.querySelector("path")),
20325 S = n.startIndeterminate,
20326 A = n.endIndeterminate,
20329 r(s), s.toggleClass(v, y.hasOwnProperty("disabled")), a.mdMode === g && w(), a.$on("$destroy", function() {
20331 }), a.$watchGroup(["value", "mdMode", function() {
20332 var e = k.disabled;
20333 return !0 === e || !1 === e ? e : t.isDefined(s.attr("disabled"))
20334 }], function(e, t) {
20337 if (r !== t[2] && s.toggleClass(v, !!r), r) E();
20338 else if (n !== m && n !== g && (n = g, y.$set("mdMode", n)), n === g) w();
20341 E(), s.attr("aria-valuenow", i), $(u(t[0]), i)
20343 }), a.$watch("mdDiameter", function(t) {
20352 T[0].setAttribute("viewBox", "0 0 " + n + " " + n), T.css(h).css("transform-origin", o + " " + o + " " + o), s.css(h), M.attr("stroke-width", r), M.attr("stroke-linecap", "square"), a.mdMode == g ? (M.attr("d", c(n, r, !0)), M.attr("stroke-dasharray", (n - r) * e.Math.PI * .75), M.attr("stroke-dashoffset", l(n, r, 1, 75))) : (M.attr("d", c(n, r, !1)), M.attr("stroke-dasharray", (n - r) * e.Math.PI), M.attr("stroke-dashoffset", l(n, r, 0, 100)), $(i, i))
20356 function c(e, t, n) {
20361 return "M" + o + "A" + a + "," + a + " 0 1 1 " + (i + "," + r) + (n ? "" : "A" + a + "," + a + " 0 0 1 " + o)
20364 function l(t, n, r, i) {
20365 return (t - n) * e.Math.PI * (3 * (i || 100) / 100 - r / 100)
20369 return e.Math.max(0, e.Math.min(t || 0, 100))
20373 var t = n.progressSize;
20375 var r = parseFloat(e);
20376 return e.lastIndexOf("%") === e.length - 1 && (r = r / 100 * t), r
20382 return n.strokeWidth / 100 * e
20384 var h = e.requestAnimationFrame || e.webkitRequestAnimationFrame || t.noop,
20385 p = e.cancelAnimationFrame || e.webkitCancelAnimationFrame || e.webkitCancelRequestAnimationFrame || t.noop,
20387 g = "indeterminate",
20388 v = "_md-progress-circular-disabled",
20389 b = "md-mode-indeterminate";
20397 template: '<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',
20398 compile: function(e, n) {
20400 "aria-valuemin": 0,
20401 "aria-valuemax": 100,
20402 role: "progressbar"
20403 }), t.isUndefined(n.mdMode)) {
20404 var r = n.hasOwnProperty("value") ? m : g;
20405 n.$set("mdMode", r)
20406 } else n.$set("mdMode", n.mdMode.trim());
20411 e.$inject = ["$window", "$mdProgressCircular", "$mdTheming", "$mdUtil", "$interval", "$log"], t.module("material.components.progressCircular").directive("mdProgressCircular", e)
20414 t.module("material.components.progressCircular").provider("$mdProgressCircular", function() {
20415 function e(e, t, n, r) {
20416 return n * e / r + t
20419 function n(e, t, n, r) {
20420 var i = (e /= r) * e,
20422 return t + n * (6 * o * i + -15 * i * i + 10 * o)
20429 durationIndeterminate: 1333,
20430 startIndeterminate: 1,
20431 endIndeterminate: 149,
20432 easeFnIndeterminate: n,
20439 configure: function(e) {
20440 return r = t.extend(r, e || {})
20449 t.module("material.components.tabs").directive("mdTab", function() {
20450 function e(e, r, i, o) {
20452 var a = o.getTabElementIndex(r),
20453 s = n(r, "md-tab-body").remove(),
20454 c = n(r, "md-tab-label").remove(),
20460 template: s.html(),
20463 e.select = e.select || t.noop, e.deselect = e.deselect || t.noop, e.$watch("active", function(e) {
20464 e && o.select(l.getIndex(), !0)
20465 }), e.$watch("disabled", function() {
20467 }), e.$watch(function() {
20468 return o.getTabElementIndex(r)
20470 l.index = e, o.updateTabOrder()
20471 }), e.$on("$destroy", function() {
20478 for (var r = e[0].children, i = 0, o = r.length; i < o; i++) {
20480 if (a.tagName === n.toUpperCase()) return t.element(a)
20485 require: "^?mdTabs",
20487 compile: function(r, i) {
20488 var o = n(r, "md-tab-label"),
20489 a = n(r, "md-tab-body");
20490 if (0 === o.length && (o = t.element("<md-tab-label></md-tab-label>"), i.label ? o.text(i.label) : o.append(r.contents()), 0 === a.length)) {
20491 var s = r.contents().detach();
20492 (a = t.element("<md-tab-body></md-tab-body>")).append(s)
20494 return r.append(o), a.html() && r.append(a), e
20497 active: "=?mdActive",
20498 disabled: "=?ngDisabled",
20499 select: "&?mdOnSelect",
20500 deselect: "&?mdOnDeselect"
20506 t.module("material.components.tabs").directive("mdTabItem", function() {
20508 require: "^?mdTabs",
20509 link: function(e, t, n, r) {
20510 r && r.attachRipple(e, t)
20516 t.module("material.components.tabs").directive("mdTabLabel", function() {
20526 compile: function(t, n) {
20527 var r = e(n.mdTabScroll, null, !0);
20528 return function(e, t) {
20529 t.on("mousewheel", function(t) {
20530 e.$apply(function() {
20540 e.$inject = ["$parse"], t.module("material.components.tabs").directive("mdTabScroll", e)
20543 function e(e, r, i, o, a, s, c, l, u, d, f) {
20545 J.selectedIndex = J.selectedIndex || 0, p(), g(), m(), d(r), s.nextTick(function() {
20546 te = N(), G(), B(), K(), J.tabs[J.selectedIndex] && J.tabs[J.selectedIndex].scope.select(), ie = !0, L()
20551 var e = l.$mdTabsTemplate,
20552 n = t.element(r[0].querySelector("md-tab-data"));
20553 n.html(e), u(n.contents())(J.parent), delete l.$mdTabsTemplate
20557 t.element(i).on("resize", A), e.$on("$destroy", y)
20561 e.$watch("$mdTabsCtrl.selectedIndex", T)
20565 var n = l.$normalize("md-" + e);
20566 t && j(e, t), l.$observe(n, function(t) {
20573 J[e] = "false" !== t
20575 var r = l.$normalize("md-" + e);
20576 t && j(e, t), l.hasOwnProperty(r) && n(l[r]), l.$observe(r, n)
20580 re = !0, t.element(i).off("resize", A)
20585 t.element(n.wrapper).toggleClass("md-stretch-tabs", I()), K()
20589 J.shouldCenterTabs = R()
20595 t.forEach(r.tabs, function(t) {
20596 t.style.maxWidth = e + "px"
20597 }), s.nextTick(J.updateInkBarStyles)
20602 e !== t && (J.maxTabWidth = q(), J.shouldCenterTabs = R(), s.nextTick(function() {
20603 J.maxTabWidth = q(), B(J.selectedIndex)
20608 r[e ? "removeClass" : "addClass"]("md-no-tab-content")
20613 i = J.shouldCenterTabs ? "" : "-" + n + "px";
20614 t.element(r.paging).css(o.CSS.TRANSFORM, "translate3d(" + i + ", 0, 0)"), e.$broadcast("$mdTabsPaginationChanged")
20618 e !== t && N().tabs[e] && (B(), V())
20622 t !== n && (J.selectedIndex = H(t), J.lastSelectedIndex = n, J.updateInkBarStyles(), G(), B(t), e.$broadcast("$mdTabsChanged"), J.tabs[n] && J.tabs[n].scope.deselect(), J.tabs[t] && J.tabs[t].scope.select())
20626 M.watcher || (M.watcher = e.$watch(function() {
20627 s.nextTick(function() {
20628 M.watcher && r.prop("offsetParent") && (M.watcher(), M.watcher = null, A())
20634 ee || (J.focusIndex = J.selectedIndex = e), t && J.noSelectClick || s.nextTick(function() {
20635 J.tabs[e].element.triggerHandler("click")
20640 J.lastSelectedIndex = J.selectedIndex, J.offsetLeft = X(J.offsetLeft), s.nextTick(function() {
20641 J.updateInkBarStyles(), L()
20646 t.element(N().inkBar).toggleClass("ng-hide", e)
20650 r.toggleClass("md-dynamic-height", e)
20656 return e.wrapper = t.querySelector("md-tabs-wrapper"), e.canvas = e.wrapper.querySelector("md-tabs-canvas"), e.paging = e.canvas.querySelector("md-pagination-wrapper"), e.inkBar = e.paging.querySelector("md-ink-bar"), e.contents = t.querySelectorAll("md-tabs-content-wrapper > md-tab-content"), e.tabs = e.paging.querySelectorAll("md-tab-item"), e.dummies = e.canvas.querySelectorAll("md-dummy-tab"), e
20660 switch (J.stretchTabs) {
20666 return !J.shouldPaginate && i.matchMedia("(max-width: 600px)").matches
20671 return J.centerTabs && !J.shouldPaginate
20675 if (J.noPagination || !ie) return !1;
20676 var e = r.prop("clientWidth");
20677 return t.forEach(N().dummies, function(t) {
20683 if (-1 === e) return -1;
20684 var t, n, r = Math.max(J.tabs.length - e, e);
20685 for (t = 0; t <= r; t++) {
20686 if ((n = J.tabs[e + t]) && !0 !== n.scope.disabled) return n.getIndex();
20687 if ((n = J.tabs[e - t]) && !0 !== n.scope.disabled) return n.getIndex()
20692 function j(e, t, n) {
20693 Object.defineProperty(J, e, {
20699 n = e, t && t(e, r)
20705 J.maxTabWidth = q(), J.shouldPaginate = P()
20710 return t.forEach(e, function(e) {
20711 n += Math.max(e.offsetWidth, e.getBoundingClientRect().width)
20716 return r.prop("clientWidth")
20720 var n, r = t ? "focusIndex" : "selectedIndex";
20721 for (n = J[r] + e; J.tabs[n] && J.tabs[n].scope.disabled; n += e);
20722 J.tabs[n] && (J[r] = n)
20726 J.styleTabItemFocus = "keyboard" === f.getLastInteractionType(), N().dummies[J.focusIndex].focus()
20731 if (t.isNumber(e) || (e = J.focusIndex), n.tabs[e] && !J.shouldCenterTabs) {
20734 o = r.offsetWidth + i;
20735 J.offsetLeft = Math.max(J.offsetLeft, X(o - n.canvas.clientWidth + 64)), J.offsetLeft = Math.min(J.offsetLeft, X(i))
20740 ne.forEach(function(e) {
20746 for (var e = !1, t = 0; t < J.tabs.length; t++)
20747 if (J.tabs[t].hasContent) {
20755 J.selectedIndex = H(J.selectedIndex), J.focusIndex = H(J.focusIndex)
20759 if (!J.dynamicHeight) return r.css("height", "");
20760 if (!J.tabs.length) return ne.push(G);
20762 t = e.contents[J.selectedIndex],
20763 i = t ? t.offsetHeight : 0,
20764 o = e.wrapper.offsetHeight,
20766 l = r.prop("clientHeight");
20768 "bottom" === r.attr("md-align-tabs") && (l -= o, a -= o, r.attr("md-border-bottom") !== n && ++l), ee = !0;
20778 easing: "cubic-bezier(0.35, 0, 0.25, 1)",
20780 }).start().done(function() {
20782 transition: "none",
20784 }), s.nextTick(function() {
20785 r.css("transition", "")
20793 if (e.tabs[J.selectedIndex]) {
20794 if (!J.tabs.length) return ne.push(J.updateInkBarStyles);
20795 if (!r.prop("offsetParent")) return M();
20796 var n = J.selectedIndex,
20797 i = e.paging.offsetWidth,
20800 c = i - a - o.offsetWidth;
20801 J.shouldCenterTabs && i > F(e.tabs) && s.nextTick(K, !1), Z(), t.element(e.inkBar).css({
20805 } else t.element(e.inkBar).css({
20813 n = J.selectedIndex,
20814 r = J.lastSelectedIndex,
20815 i = t.element(e.inkBar);
20816 t.isNumber(r) && i.toggleClass("md-left", n < r).toggleClass("md-right", n > r)
20821 if (!t.tabs.length || !J.shouldPaginate) return 0;
20822 var n = t.tabs[t.tabs.length - 1],
20823 r = n.offsetLeft + n.offsetWidth;
20824 return e = Math.max(0, e), e = Math.min(r - t.canvas.clientWidth, e)
20828 if (e.hasContent) {
20829 var n = r[0].querySelectorAll('[md-tab-id="' + e.id + '"]');
20830 t.element(n).attr("aria-controls", J.tabContentPrefix + e.id)
20839 J.$onInit = function() {
20840 v("stretchTabs", $), j("focusIndex", k, J.selectedIndex || 0), j("offsetLeft", x, 0), j("hasContent", C, !1), j("maxTabWidth", w, q()), j("shouldPaginate", E, !1), b("noInkBar", O), b("dynamicHeight", D), b("noPagination"), b("swipeContent"), b("noDisconnect"), b("autoselect"), b("noSelectClick"), b("centerTabs", _), b("enableDisconnect"), J.scope = e, J.parent = e.$parent, J.tabs = [], J.lastSelectedIndex = null, J.hasFocus = !1, J.styleTabItemFocus = !1, J.shouldCenterTabs = R(), J.tabContentPrefix = "tab-content-", h()
20841 }, J.updatePagination = s.debounce(L, 100), J.redirectFocus = V, J.attachRipple = function(e, n) {
20844 colorElement: t.element(r.inkBar)
20847 }, J.insertTab = function(e, n) {
20850 getIndex: function() {
20851 return J.tabs.indexOf(o)
20853 isActive: function() {
20854 return this.getIndex() === J.selectedIndex
20856 isLeft: function() {
20857 return this.getIndex() < J.selectedIndex
20859 isRight: function() {
20860 return this.getIndex() > J.selectedIndex
20862 shouldRender: function() {
20863 return !J.noDisconnect || this.isActive()
20865 hasFocus: function() {
20866 return J.styleTabItemFocus && J.hasFocus && this.getIndex() === J.focusIndex
20869 hasContent: !(!e.template || !e.template.trim())
20871 o = t.extend(i, e);
20872 return t.isDefined(n) ? J.tabs.splice(n, 0, o) : J.tabs.push(o), z(), W(), s.nextTick(function() {
20873 L(), Q(o), r && J.autoselect && s.nextTick(function() {
20874 s.nextTick(function() {
20875 S(J.tabs.indexOf(o))
20879 }, J.removeTab = function(e) {
20881 var t = J.selectedIndex,
20882 n = J.tabs.splice(e.getIndex(), 1)[0];
20883 Y(), J.selectedIndex === t && (n.scope.deselect(), J.tabs[J.selectedIndex] && J.tabs[J.selectedIndex].scope.select()), s.nextTick(function() {
20884 L(), J.offsetLeft = X(J.offsetLeft)
20887 }, J.select = S, J.scroll = function(e) {
20888 J.shouldPaginate && (e.preventDefault(), J.offsetLeft = X(J.offsetLeft - e.wheelDelta))
20889 }, J.nextPage = function() {
20891 r = n.canvas.clientWidth,
20892 i = r + J.offsetLeft;
20893 for (e = 0; e < n.tabs.length && !((t = n.tabs[e]).offsetLeft + t.offsetWidth > i); e++);
20894 r > t.offsetWidth ? J.offsetLeft = X(t.offsetLeft) : J.offsetLeft = X(t.offsetLeft + (t.offsetWidth - r + 1))
20895 }, J.previousPage = function() {
20897 for (e = 0; e < n.tabs.length && !((t = n.tabs[e]).offsetLeft + t.offsetWidth >= J.offsetLeft); e++);
20898 n.canvas.clientWidth > t.offsetWidth ? J.offsetLeft = X(t.offsetLeft + t.offsetWidth - n.canvas.clientWidth) : J.offsetLeft = X(t.offsetLeft)
20899 }, J.keydown = function(e) {
20900 switch (e.keyCode) {
20901 case o.KEY_CODE.LEFT_ARROW:
20902 e.preventDefault(), U(-1, !0);
20904 case o.KEY_CODE.RIGHT_ARROW:
20905 e.preventDefault(), U(1, !0);
20907 case o.KEY_CODE.SPACE:
20908 case o.KEY_CODE.ENTER:
20909 e.preventDefault(), ee || S(J.focusIndex)
20911 }, J.canPageForward = function() {
20913 t = e.tabs[e.tabs.length - 1];
20914 return t && t.offsetLeft + t.offsetWidth > e.canvas.clientWidth + J.offsetLeft
20915 }, J.canPageBack = function() {
20916 return J.offsetLeft > 0
20917 }, J.refreshIndex = Y, J.incrementIndex = U, J.getTabElementIndex = function(e) {
20918 var t = r[0].getElementsByTagName("md-tab");
20919 return Array.prototype.indexOf.call(t, e[0])
20920 }, J.updateInkBarStyles = s.debounce(K, 100), J.updateTabOrder = s.debounce(function() {
20921 var e = J.tabs[J.selectedIndex],
20922 t = J.tabs[J.focusIndex];
20923 J.tabs = J.tabs.sort(function(e, t) {
20924 return e.index - t.index
20925 }), J.selectedIndex = J.tabs.indexOf(e), J.focusIndex = J.tabs.indexOf(t)
20926 }, 100), J.getFocusedTabId = function() {
20927 var e = J.tabs[J.focusIndex];
20928 return e && e.id ? "tab-item-" + e.id : null
20929 }, 1 === t.version.major && t.version.minor <= 4 && this.$onInit()
20931 e.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction"], t.module("material.components.tabs").controller("MdTabsController", e)
20937 selectedIndex: "=?mdSelected"
20939 template: function(t, n) {
20940 return n.$mdTabsTemplate = t.html(), '<md-tabs-wrapper> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-src="' + e.mdTabsArrow + '"></md-icon> </md-next-button> <md-tabs-canvas tabindex="{{ $mdTabsCtrl.hasFocus ? -1 : 0 }}" aria-activedescendant="{{$mdTabsCtrl.getFocusedTabId()}}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate, \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ng-keydown="$mdTabsCtrl.keydown($event)" role="tablist"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" md-tab-scroll="$mdTabsCtrl.scroll($event)"> <md-tab-item tabindex="-1" class="md-tab" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" md-tab-id="{{::tab.id}}"aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-touch-action="pan-y" md-swipe-right="$mdTabsCtrl.previousPage()" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-tab-item> <md-ink-bar></md-ink-bar> </md-pagination-wrapper> <md-tabs-dummy-wrapper class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab class="md-tab" tabindex="-1" id="tab-item-{{::tab.id}}" md-tab-id="{{::tab.id}}"aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-repeat="tab in $mdTabsCtrl.tabs" md-tabs-template="::tab.label" md-scope="::tab.parent"></md-dummy-tab> </md-tabs-dummy-wrapper> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent && $mdTabsCtrl.selectedIndex >= 0" class="_md"> <md-tab-content id="{{:: $mdTabsCtrl.tabContentPrefix + tab.id}}" class="_md" role="tabpanel" aria-labelledby="tab-item-{{::tab.id}}" md-swipe-left="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(1)" md-swipe-right="$mdTabsCtrl.swipeContent && $mdTabsCtrl.incrementIndex(-1)" md-swipe-touch-action="pan-y" ng-if="tab.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': $mdTabsCtrl.dynamicHeight }"> <div md-tabs-template="::tab.template" md-connected-if="tab.isActive()" md-scope="::tab.parent" ng-if="$mdTabsCtrl.enableDisconnect || tab.shouldRender()"></div> </md-tab-content> </md-tabs-content-wrapper>'
20942 controller: "MdTabsController",
20943 controllerAs: "$mdTabsCtrl",
20944 bindToController: !0
20947 e.$inject = ["$$mdSvgRegistry"], t.module("material.components.tabs").directive("mdTabs", e)
20952 require: "^?mdTabs",
20953 link: function(n, r, i, o) {
20955 var a, s, c = function() {
20956 o.updatePagination(), o.updateInkBarStyles()
20958 if ("MutationObserver" in t) {
20964 (a = new MutationObserver(c)).observe(r[0], l), s = a.disconnect.bind(a)
20966 var u = e.debounce(c, 15, null, !1);
20967 r.on("DOMSubtreeModified", u), s = r.off.bind(r, "DOMSubtreeModified", u)
20969 n.$on("$destroy", function() {
20976 e.$inject = ["$mdUtil", "$window"], t.module("material.components.tabs").directive("mdTabsDummyWrapper", e)
20982 link: function(n, r, i, o) {
20984 o.enableDisconnect && t.disconnectScope(c)
20988 o.enableDisconnect && t.reconnectScope(c)
20991 var c = o.enableDisconnect ? n.compileScope.$new() : n.compileScope;
20992 return r.html(n.template), e(r.contents())(c), t.nextTick(function() {
20993 n.$watch("connected", function(e) {
20994 !1 === e ? a() : s()
20995 }), n.$on("$destroy", s)
21000 template: "=mdTabsTemplate",
21001 connected: "=?mdConnectedIf",
21002 compileScope: "=mdScope"
21004 require: "^?mdTabs"
21007 e.$inject = ["$compile", "$mdUtil"], t.module("material.components.tabs").directive("mdTabsTemplate", e)
21008 }(), t.module("material.core").constant("$MD_THEME_CSS", 'md-autocomplete.md-THEME_NAME-theme{background:"{{background-A100}}"}md-autocomplete.md-THEME_NAME-theme[disabled]:not([md-floating-label]){background:"{{background-100}}"}md-autocomplete.md-THEME_NAME-theme button md-icon path{fill:"{{background-600}}"}md-autocomplete.md-THEME_NAME-theme button:after{background:"{{background-600-0.3}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme{background:"{{background-A100}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li{color:"{{background-900}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li .highlight{color:"{{background-600}}"}.md-autocomplete-suggestions-container.md-THEME_NAME-theme li.selected,.md-autocomplete-suggestions-container.md-THEME_NAME-theme li:hover{background:"{{background-200}}"}md-backdrop{background-color:"{{background-900-0.0}}"}md-backdrop.md-opaque.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-bottom-sheet.md-THEME_NAME-theme{background-color:"{{background-50}}";border-top-color:"{{background-300}}"}md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item{color:"{{foreground-1}}"}md-bottom-sheet.md-THEME_NAME-theme .md-subheader{background-color:"{{background-50}}";color:"{{foreground-1}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme:not([disabled]):hover{background-color:"{{background-500-0.2}}"}.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover{background-color:transparent}.md-button.md-THEME_NAME-theme.md-fab md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab,.md-button.md-THEME_NAME-theme.md-primary.md-raised{color:"{{primary-contrast}}";background-color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon{color:"{{primary-contrast}}"}.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover{background-color:"{{primary-600}}"}.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon{color:"{{primary-color}}"}.md-button.md-THEME_NAME-theme.md-fab{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-raised{color:"{{background-900}}";background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) md-icon{color:"{{background-900}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover{background-color:"{{background-50}}"}.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused{background-color:"{{background-200}}"}.md-button.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab,.md-button.md-THEME_NAME-theme.md-warn.md-raised{color:"{{warn-contrast}}";background-color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon{color:"{{warn-contrast}}"}.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover{background-color:"{{warn-600}}"}.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon{color:"{{warn-color}}"}.md-button.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab,.md-button.md-THEME_NAME-theme.md-accent.md-raised{color:"{{accent-contrast}}";background-color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon{color:"{{accent-contrast}}"}.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused,.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover{background-color:"{{accent-A700}}"}.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon{color:"{{accent-color}}"}.md-button.md-THEME_NAME-theme.md-accent[disabled],.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled],.md-button.md-THEME_NAME-theme.md-warn[disabled],.md-button.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}";cursor:default}.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon,.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon,.md-button.md-THEME_NAME-theme[disabled] md-icon{color:"{{foreground-3}}"}.md-button.md-THEME_NAME-theme.md-fab[disabled],.md-button.md-THEME_NAME-theme.md-raised[disabled]{background-color:"{{foreground-4}}"}.md-button.md-THEME_NAME-theme[disabled]{background-color:transparent}._md a.md-THEME_NAME-theme:not(.md-button).md-primary{color:"{{primary-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-primary:hover{color:"{{primary-700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent{color:"{{accent-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-accent:hover{color:"{{accent-A700}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn{color:"{{warn-color}}"}._md a.md-THEME_NAME-theme:not(.md-button).md-warn:hover{color:"{{warn-700}}"}md-card.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-hue-1}}";border-radius:2px}md-card.md-THEME_NAME-theme .md-card-image{border-radius:2px 2px 0 0}md-card.md-THEME_NAME-theme md-card-header md-card-avatar md-icon{color:"{{background-color}}";background-color:"{{foreground-3}}"}md-card.md-THEME_NAME-theme md-card-header md-card-header-text .md-subhead,md-card.md-THEME_NAME-theme md-card-title md-card-title-text:not(:only-child) .md-subhead{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme .md-ripple{color:"{{accent-A700}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before{background-color:"{{accent-color-0.26}}"}md-checkbox.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon{background-color:"{{accent-color-0.87}}"}md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after{border-color:"{{accent-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple{color:"{{primary-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple{color:"{{background-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon{background-color:"{{primary-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after{border-color:"{{primary-contrast-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple{color:"{{warn-600}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ink-ripple{color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon{background-color:"{{warn-color-0.87}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before{background-color:"{{warn-color-0.26}}"}md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled]:not(.md-checked) .md-icon{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon{background-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon:after{border-color:"{{background-200}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-icon:after{border-color:"{{foreground-3}}"}md-checkbox.md-THEME_NAME-theme[disabled] .md-label{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips{box-shadow:0 1px "{{foreground-4}}"}md-chips.md-THEME_NAME-theme .md-chips.md-focused{box-shadow:0 2px "{{primary-color}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input{color:"{{foreground-1}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-moz-placeholder,md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-moz-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input:-ms-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme .md-chips .md-chip-input-container input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-chips.md-THEME_NAME-theme md-chip{background:"{{background-300}}";color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip md-icon{color:"{{background-700}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused{background:"{{primary-color}}";color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip.md-focused md-icon{color:"{{primary-contrast}}"}md-chips.md-THEME_NAME-theme md-chip._md-chip-editing{background:transparent;color:"{{background-800}}"}md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path{fill:"{{background-500}}"}.md-contact-suggestion span.md-contact-email{color:"{{background-400}}"}md-content.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-default}}"}.md-calendar.md-THEME_NAME-theme{background:"{{background-A100}}";color:"{{background-A200-0.87}}"}.md-calendar.md-THEME_NAME-theme tr:last-child td{border-bottom-color:"{{background-200}}"}.md-THEME_NAME-theme .md-calendar-day-header{background:"{{background-300}}";color:"{{background-A200-0.87}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today .md-calendar-date-selection-indicator{border:1px solid "{{primary-500}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-date-today.md-calendar-date-disabled{color:"{{primary-500-0.6}}"}.md-calendar-date.md-focus .md-THEME_NAME-theme .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date-selection-indicator:hover{background:"{{background-300}}"}.md-THEME_NAME-theme .md-calendar-date.md-calendar-selected-date .md-calendar-date-selection-indicator,.md-THEME_NAME-theme .md-calendar-date.md-focus.md-calendar-selected-date .md-calendar-date-selection-indicator{background:"{{primary-500}}";color:"{{primary-500-contrast}}";border-color:transparent}.md-THEME_NAME-theme .md-calendar-date-disabled,.md-THEME_NAME-theme .md-calendar-month-label-disabled{color:"{{background-A200-0.435}}"}.md-THEME_NAME-theme .md-datepicker-input{color:"{{foreground-1}}"}.md-THEME_NAME-theme .md-datepicker-input:-moz-placeholder,.md-THEME_NAME-theme .md-datepicker-input::-moz-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input:-ms-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input::-webkit-input-placeholder{color:"{{foreground-3}}"}.md-THEME_NAME-theme .md-datepicker-input-container{border-bottom-color:"{{foreground-4}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-invalid,.md-warn .md-THEME_NAME-theme .md-datepicker-input-container.md-datepicker-focused{border-bottom-color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar-pane{border-color:"{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-triangle-button .md-datepicker-expand-triangle{border-top-color:"{{foreground-2}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{primary-color}}"}.md-accent .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon,.md-THEME_NAME-theme .md-datepicker-open.md-accent .md-datepicker-calendar-icon{color:"{{accent-color}}"}.md-THEME_NAME-theme .md-datepicker-open.md-warn .md-datepicker-calendar-icon,.md-warn .md-THEME_NAME-theme .md-datepicker-open .md-datepicker-calendar-icon{color:"{{warn-A700}}"}.md-THEME_NAME-theme .md-datepicker-calendar{background:"{{background-A100}}"}.md-THEME_NAME-theme .md-datepicker-input-mask-opaque{box-shadow:0 0 0 9999px "{{background-hue-1}}"}.md-THEME_NAME-theme .md-datepicker-open .md-datepicker-input-container{background:"{{background-hue-1}}"}md-dialog.md-THEME_NAME-theme{border-radius:4px;background-color:"{{background-hue-1}}";color:"{{foreground-1}}"}md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions,md-dialog.md-THEME_NAME-theme.md-content-overflow md-dialog-actions,md-divider.md-THEME_NAME-theme{border-top-color:"{{foreground-4}}"}.layout-gt-lg-row>md-divider.md-THEME_NAME-theme,.layout-gt-md-row>md-divider.md-THEME_NAME-theme,.layout-gt-sm-row>md-divider.md-THEME_NAME-theme,.layout-gt-xs-row>md-divider.md-THEME_NAME-theme,.layout-lg-row>md-divider.md-THEME_NAME-theme,.layout-md-row>md-divider.md-THEME_NAME-theme,.layout-row>md-divider.md-THEME_NAME-theme,.layout-sm-row>md-divider.md-THEME_NAME-theme,.layout-xl-row>md-divider.md-THEME_NAME-theme,.layout-xs-row>md-divider.md-THEME_NAME-theme{border-right-color:"{{foreground-4}}"}md-icon.md-THEME_NAME-theme{color:"{{foreground-2}}"}md-icon.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}md-icon.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}md-icon.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-input-container.md-THEME_NAME-theme .md-input{color:"{{foreground-1}}";border-color:"{{foreground-4}}"}md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme>md-icon{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme .md-placeholder,md-input-container.md-THEME_NAME-theme label{color:"{{foreground-3}}"}md-input-container.md-THEME_NAME-theme label.md-required:after{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-focused):not(.md-input-invalid) label.md-required:after{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation,md-input-container.md-THEME_NAME-theme .md-input-messages-animation{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme .md-input-message-animation .md-char-counter,md-input-container.md-THEME_NAME-theme .md-input-messages-animation .md-char-counter{color:"{{foreground-1}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-moz-placeholder,md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-moz-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input:-ms-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme.md-input-focused .md-input::-webkit-input-placeholder{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label{color:"{{foreground-2}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-resized .md-input{border-color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon{color:"{{primary-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input{border-color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent md-icon{color:"{{accent-color}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label,md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn md-icon{color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input{border-color:"{{warn-A700}}"}md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter,md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input-message-animation,md-input-container.md-THEME_NAME-theme.md-input-invalid label{color:"{{warn-A700}}"}[disabled] md-input-container.md-THEME_NAME-theme .md-input,md-input-container.md-THEME_NAME-theme .md-input[disabled]{border-bottom-color:transparent;color:"{{foreground-3}}";background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4{color:"{{foreground-1}}"}md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p,md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style{background-color:"{{background-100}}"}md-list.md-THEME_NAME-theme md-list-item .md-avatar-icon{background-color:"{{foreground-3}}";color:"{{background-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon{color:"{{foreground-2}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight{color:"{{primary-color}}"}md-list.md-THEME_NAME-theme md-list-item>md-icon.md-highlight.md-accent{color:"{{accent-color}}"}md-menu-content.md-THEME_NAME-theme{background-color:"{{background-A100}}"}md-menu-content.md-THEME_NAME-theme md-menu-item{color:"{{background-A200-0.87}}"}md-menu-content.md-THEME_NAME-theme md-menu-item md-icon{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled],md-menu-content.md-THEME_NAME-theme md-menu-item .md-button[disabled] md-icon{color:"{{background-A200-0.25}}"}md-menu-content.md-THEME_NAME-theme md-menu-divider{background-color:"{{background-A200-0.11}}"}md-menu-bar.md-THEME_NAME-theme>button.md-button{color:"{{foreground-2}}";border-radius:2px}md-menu-bar.md-THEME_NAME-theme md-menu.md-open>button,md-menu-bar.md-THEME_NAME-theme md-menu>button:focus{outline:none;background:"{{background-200}}"}md-menu-bar.md-THEME_NAME-theme.md-open:not(.md-keyboard-mode) md-menu:hover>button{background-color:"{{ background-500-0.2}}"}md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:focus,md-menu-bar.md-THEME_NAME-theme:not(.md-keyboard-mode):not(.md-open) md-menu button:hover{background:transparent}md-menu-content.md-THEME_NAME-theme .md-menu>.md-button:after{color:"{{background-A200-0.54}}"}md-menu-content.md-THEME_NAME-theme .md-menu.md-open>.md-button{background-color:"{{ background-500-0.2}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar{background-color:"{{background-A100}}";color:"{{background-A200}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler{background-color:"{{primary-color}}";color:"{{background-A100-0.87}}"}md-toolbar.md-THEME_NAME-theme.md-menu-toolbar md-toolbar-filler md-icon{color:"{{background-A100-0.87}}"}md-nav-bar.md-THEME_NAME-theme .md-nav-bar{background-color:transparent;border-color:"{{foreground-4}}"}md-nav-bar.md-THEME_NAME-theme .md-button._md-nav-button.md-unselected{color:"{{foreground-2}}"}md-nav-bar.md-THEME_NAME-theme md-nav-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar{background-color:"{{accent-color}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-accent>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar{background-color:"{{warn-color}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-warn>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar{background-color:"{{primary-color}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-active,md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-nav-bar.md-THEME_NAME-theme.md-primary>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{primary-color}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{primary-100}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{primary-contrast}}"}md-toolbar>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{accent-A100}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar md-nav-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button{color:"{{warn-100}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-active,md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-nav-bar.md-THEME_NAME-theme>.md-nav-bar .md-button._md-nav-button.md-focused{background:"{{warn-contrast-0.1}}"}md-progress-circular.md-THEME_NAME-theme path{stroke:"{{primary-color}}"}md-progress-circular.md-THEME_NAME-theme.md-warn path{stroke:"{{warn-color}}"}md-progress-circular.md-THEME_NAME-theme.md-accent path{stroke:"{{accent-color}}"}._md-panel-backdrop.md-THEME_NAME-theme{background-color:"{{background-900-1.0}}"}md-progress-linear.md-THEME_NAME-theme .md-container{background-color:"{{primary-100}}"}md-progress-linear.md-THEME_NAME-theme .md-bar{background-color:"{{primary-color}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-container{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar{background-color:"{{warn-color}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-container{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar{background-color:"{{accent-color}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1{background-color:"{{warn-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before{background:radial-gradient("{{warn-100}}" 0,"{{warn-100}}" 16%,transparent 42%)}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1{background-color:"{{accent-100}}"}md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before{background:radial-gradient("{{accent-100}}" 0,"{{accent-100}}" 16%,transparent 42%)}md-radio-button.md-THEME_NAME-theme .md-off{border-color:"{{foreground-2}}"}md-radio-button.md-THEME_NAME-theme .md-on{background-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-off{border-color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color-0.87}}"}md-radio-button.md-THEME_NAME-theme .md-container .md-ripple{color:"{{accent-A700}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on{background-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off{border-color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple{color:"{{primary-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple{color:"{{primary-600}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on{background-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off{border-color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple{color:"{{warn-color-0.87}}"}md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple,md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple{color:"{{warn-600}}"}md-radio-button.md-THEME_NAME-theme[disabled],md-radio-group.md-THEME_NAME-theme[disabled]{color:"{{foreground-3}}"}md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off,md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on{border-color:"{{foreground-3}}"}md-radio-group.md-THEME_NAME-theme .md-checked .md-ink-ripple{color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked:not([disabled]).md-primary .md-ink-ripple,md-radio-group.md-THEME_NAME-theme.md-primary .md-checked:not([disabled]) .md-ink-ripple{color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme .md-checked.md-primary .md-ink-ripple{color:"{{warn-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before{background-color:"{{accent-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-primary .md-checked .md-container:before{background-color:"{{primary-color-0.26}}"}md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-warn .md-container:before,md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty).md-warn .md-checked .md-container:before{background-color:"{{warn-color-0.26}}"}md-sidenav.md-THEME_NAME-theme,md-sidenav.md-THEME_NAME-theme md-content{background-color:"{{background-hue-1}}"}md-input-container md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-input-container:not(.md-input-focused):not(.md-input-invalid) md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{foreground-3}}"}md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value,md-input-container.md-input-focused:not(.md-input-has-value) md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{primary-color}}"}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-input-container.md-input-invalid md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme[disabled] .md-select-value{border-bottom-color:transparent;background-image:linear-gradient(90deg,"{{foreground-3}}" 0,"{{foreground-3}}" 33%,transparent 0);background-image:-ms-linear-gradient(left,transparent 0,"{{foreground-3}}" 100%)}md-select.md-THEME_NAME-theme .md-select-value{border-bottom-color:"{{foreground-4}}"}md-select.md-THEME_NAME-theme .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-value span:first-child:after{color:"{{warn-A700}}"}md-select.md-THEME_NAME-theme.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched .md-select-value{color:"{{warn-A700}}"!important;border-bottom-color:"{{warn-A700}}"!important}md-select.md-THEME_NAME-theme.ng-invalid.ng-touched.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value{border-bottom-color:"{{primary-color}}";color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-value.md-select-placeholder{color:"{{ foreground-1 }}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-no-underline .md-select-value{border-bottom-color:transparent!important}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-value{border-bottom-color:"{{accent-color}}"}md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-value{border-bottom-color:"{{warn-color}}"}md-select.md-THEME_NAME-theme[disabled] .md-select-icon,md-select.md-THEME_NAME-theme[disabled] .md-select-value,md-select.md-THEME_NAME-theme[disabled] .md-select-value.md-select-placeholder{color:"{{foreground-3}}"}md-select.md-THEME_NAME-theme .md-select-icon{color:"{{foreground-2}}"}md-select-menu.md-THEME_NAME-theme md-content{background:"{{background-A100}}"}md-select-menu.md-THEME_NAME-theme md-content md-optgroup{color:"{{background-600-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option{color:"{{background-900-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[disabled] .md-text{color:"{{background-400-0.87}}"}md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):focus,md-select-menu.md-THEME_NAME-theme md-content md-option:not([disabled]):hover{background:"{{background-200}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]{color:"{{primary-500}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected]:focus{color:"{{primary-600}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent{color:"{{accent-color}}"}md-select-menu.md-THEME_NAME-theme md-content md-option[selected].md-accent:focus{color:"{{accent-A700}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ripple{color:"{{primary-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ripple{color:"{{background-600}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-ink-ripple{color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-ink-ripple{color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme:not(.md-checked) .md-icon{border-color:"{{foreground-2}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon{background-color:"{{primary-color-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected].md-focused .md-container:before{background-color:"{{primary-color-0.26}}"}.md-checkbox-enabled.md-THEME_NAME-theme[selected] .md-icon:after{border-color:"{{primary-contrast-0.87}}"}.md-checkbox-enabled.md-THEME_NAME-theme .md-indeterminate[disabled] .md-container{color:"{{foreground-3}}"}.md-checkbox-enabled.md-THEME_NAME-theme md-option .md-text{color:"{{background-900-0.87}}"}md-slider.md-THEME_NAME-theme .md-track{background-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme .md-track-ticks{color:"{{background-contrast}}"}md-slider.md-THEME_NAME-theme .md-focus-ring{background-color:"{{accent-A200-0.2}}"}md-slider.md-THEME_NAME-theme .md-disabled-thumb{border-color:"{{background-color}}";background-color:"{{background-color}}"}md-slider.md-THEME_NAME-theme.md-min .md-thumb:after{background-color:"{{background-color}}";border-color:"{{foreground-3}}"}md-slider.md-THEME_NAME-theme.md-min .md-focus-ring{background-color:"{{foreground-3-0.38}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-thumb:after{background-color:"{{background-contrast}}";border-color:transparent}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme.md-min[md-discrete][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme .md-track.md-track-fill{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb:after{border-color:"{{accent-color}}";background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign{background-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-sign:after{border-top-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{accent-color}}"}md-slider.md-THEME_NAME-theme .md-thumb-text{color:"{{accent-contrast}}"}md-slider.md-THEME_NAME-theme.md-warn .md-focus-ring{background-color:"{{warn-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after{border-color:"{{warn-color}}";background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign{background-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-sign:after{border-top-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{warn-color}}"}md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text{color:"{{warn-contrast}}"}md-slider.md-THEME_NAME-theme.md-primary .md-focus-ring{background-color:"{{primary-200-0.38}}"}md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after{border-color:"{{primary-color}}";background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign{background-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-sign:after{border-top-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary[md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{primary-color}}"}md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text{color:"{{primary-contrast}}"}md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after{border-color:transparent}md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after,md-slider.md-THEME_NAME-theme[disabled][md-discrete] .md-thumb:after{background-color:"{{foreground-3}}";border-color:transparent}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign{background-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-sign:after{border-top-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly][md-vertical] .md-sign:after{border-top-color:transparent;border-left-color:"{{background-400}}"}md-slider.md-THEME_NAME-theme[disabled][readonly] .md-disabled-thumb{border-color:transparent;background-color:transparent}md-slider-container[disabled]>:first-child:not(md-slider),md-slider-container[disabled]>:last-child:not(md-slider){color:"{{foreground-3}}"}.md-subheader.md-THEME_NAME-theme{color:"{{ foreground-2-0.23 }}";background-color:"{{background-default}}"}.md-subheader.md-THEME_NAME-theme.md-primary{color:"{{primary-color}}"}.md-subheader.md-THEME_NAME-theme.md-accent{color:"{{accent-color}}"}.md-subheader.md-THEME_NAME-theme.md-warn{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme .md-ink-ripple{color:"{{background-500}}"}md-switch.md-THEME_NAME-theme .md-thumb{background-color:"{{background-50}}"}md-switch.md-THEME_NAME-theme .md-bar{background-color:"{{background-500}}"}md-switch.md-THEME_NAME-theme.md-checked .md-ink-ripple{color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-thumb{background-color:"{{accent-color}}"}md-switch.md-THEME_NAME-theme.md-checked .md-bar{background-color:"{{accent-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before{background-color:"{{accent-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-ink-ripple{color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb{background-color:"{{primary-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar{background-color:"{{primary-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before{background-color:"{{primary-color-0.26}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-ink-ripple{color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb{background-color:"{{warn-color}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar{background-color:"{{warn-color-0.5}}"}md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before{background-color:"{{warn-color-0.26}}"}md-switch.md-THEME_NAME-theme[disabled] .md-thumb{background-color:"{{background-400}}"}md-switch.md-THEME_NAME-theme[disabled] .md-bar{background-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme md-tabs-wrapper{background-color:transparent;border-color:"{{foreground-4}}"}md-tabs.md-THEME_NAME-theme .md-paginator md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme md-ink-bar{color:"{{accent-color}}";background:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme .md-tab{color:"{{foreground-2}}"}md-tabs.md-THEME_NAME-theme .md-tab[disabled],md-tabs.md-THEME_NAME-theme .md-tab[disabled] md-icon{color:"{{foreground-3}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-active,md-tabs.md-THEME_NAME-theme .md-tab.md-active md-icon,md-tabs.md-THEME_NAME-theme .md-tab.md-focused,md-tabs.md-THEME_NAME-theme .md-tab.md-focused md-icon{color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme .md-tab.md-focused{background:"{{primary-color-0.1}}"}md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper{background-color:"{{accent-color}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-accent>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper{background-color:"{{primary-color}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-tabs.md-THEME_NAME-theme.md-primary>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper{background-color:"{{warn-color}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-tabs.md-THEME_NAME-theme.md-warn>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{primary-color}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{primary-100}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{primary-contrast}}"}md-toolbar>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{primary-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{accent-color}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{accent-A100}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{accent-contrast}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{accent-contrast-0.1}}"}md-toolbar.md-accent>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-ink-bar{color:"{{primary-600-1}}";background:"{{primary-600-1}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper{background-color:"{{warn-color}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]),md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]) md-icon{color:"{{warn-100}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-active md-icon,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused,md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused md-icon{color:"{{warn-contrast}}"}md-toolbar.md-warn>md-tabs.md-THEME_NAME-theme>md-tabs-wrapper>md-tabs-canvas>md-pagination-wrapper>md-tab-item:not([disabled]).md-focused{background:"{{warn-contrast-0.1}}"}md-toast.md-THEME_NAME-theme .md-toast-content{background-color:#323232;color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button{color:"{{background-50}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight{color:"{{accent-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-primary{color:"{{primary-color}}"}md-toast.md-THEME_NAME-theme .md-toast-content .md-button.md-highlight.md-warn{color:"{{warn-color}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar){background-color:"{{primary-color}}";color:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) md-icon{color:"{{primary-contrast}}";fill:"{{primary-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar) .md-button[disabled] md-icon{color:"{{primary-contrast-0.26}}";fill:"{{primary-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent{background-color:"{{accent-color}}";color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-ink-ripple{color:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent md-icon{color:"{{accent-contrast}}";fill:"{{accent-contrast}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-accent .md-button[disabled] md-icon{color:"{{accent-contrast-0.26}}";fill:"{{accent-contrast-0.26}}"}md-toolbar.md-THEME_NAME-theme:not(.md-menu-toolbar).md-warn{background-color:"{{warn-color}}";color:"{{warn-contrast}}"}.md-panel.md-tooltip.md-THEME_NAME-theme{color:"{{background-700-contrast}}";background-color:"{{background-700}}"}body.md-THEME_NAME-theme,html.md-THEME_NAME-theme{color:"{{foreground-1}}";background-color:"{{background-color}}"}')
21009 }(window, window.angular), window.ngMaterial = {
21015 "object" == typeof exports && "undefined" != typeof module ? t(exports, require("angular")) : "function" == typeof define && define.amd ? define(["exports", "angular"], t) : t(e["@uirouter/angularjs"] = e["@uirouter/angularjs"] || {}, e.angular)
21016 }(this, function(e, t) {
21021 return n.length >= r ? e.apply(null, n) : function() {
21022 return t(n.concat([].slice.apply(arguments)))
21025 var n = [].slice.apply(arguments, [1]),
21033 return function() {
21034 for (var n = t, r = e[t].apply(this, arguments); n--;) r = e[n].call(this, r);
21040 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
21041 return r.apply(null, [].slice.call(arguments).reverse())
21045 return function() {
21046 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
21047 return e.apply(null, n) && t.apply(null, n)
21052 return function() {
21053 for (var n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r];
21054 return e.apply(null, n) || t.apply(null, n)
21059 return function(n) {
21060 return n[e].apply(n, t)
21065 return function(t) {
21066 for (var n = 0; n < e.length; n++)
21067 if (e[n][0](t)) return e[n][1](t)
21072 if (Je(e) && e.length) {
21073 var t = e.slice(0, -1),
21075 return !(t.filter(Re(Xe)).length || n.filter(Re(Ke)).length)
21086 function f(e, t, n, r, i) {
21087 void 0 === i && (i = !1);
21088 var o = function(t) {
21089 return e()[t].bind(n())
21092 return function() {
21093 return t[e] = o(e), t[e].apply(null, arguments)
21096 return (r = r || Object.keys(e())).reduce(function(e, t) {
21097 return e[t] = i ? a(t) : o(t), e
21102 return -1 !== e.indexOf(t)
21106 var n = e.indexOf(t);
21107 return n >= 0 && e.splice(n, 1), e
21111 return e.push(t), t
21115 for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
21116 var r = t.concat({}).reverse(),
21117 i = dt.apply(null, r);
21118 return dt({}, i, b(e || {}, Object.keys(i)))
21123 for (var r in e.path) {
21124 if (e.path[r] !== t.path[r]) break;
21132 for (var r in e) - 1 !== t.indexOf(r) && (n[r] = e[r]);
21137 return Object.keys(e).filter(Re(pt(t))).reduce(function(t, n) {
21138 return t[n] = e[n], t
21149 i = n ? function(e) {
21151 } : function(e, t) {
21154 return ut(e, function(e, n) {
21161 return ut(e, function(e, r) {
21162 n || t(e, r) && (n = e)
21167 var n = Je(e) ? [] : {};
21168 return ut(e, function(e, r) {
21169 return n[r] = t(e, r)
21174 return e.push(t), e
21178 return void 0 === t && (t = "assert failure"),
21181 if (!r) throw new Error(Ke(t) ? t(n) : t);
21187 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
21188 if (0 === e.length) return [];
21189 var n, r = e.reduce(function(e, t) {
21190 return Math.min(t.length, e)
21191 }, 9007199254740991),
21193 for (n = 0; n < r; n++) switch (e.length) {
21198 i.push([e[0][n], e[1][n]]);
21201 i.push([e[0][n], e[1][n], e[2][n]]);
21204 i.push([e[0][n], e[1][n], e[2][n], e[3][n]]);
21207 i.push(e.map(function(e) {
21216 if (Je(t) && (n = t[0], r = t[1]), !Xe(n)) throw new Error("invalid parameters to applyPairs");
21221 return e.length && e[e.length - 1] || void 0
21225 for (var t = 1; t < arguments.length; t++) {
21226 var n = arguments[t];
21228 for (var r = Object.keys(n), i = 0; i < r.length; i++) e[r[i]] = n[r[i]]
21234 if (e === t) return !0;
21235 if (null === e || null === t) return !1;
21236 if (e !== e && t !== t) return !0;
21238 if (n !== typeof t || "object" !== n) return !1;
21240 if (Pe(Je)(r)) return O(e, t);
21241 if (Pe(et)(r)) return e.getTime() === t.getTime();
21242 if (Pe(tt)(r)) return e.toString() === t.toString();
21243 if (Pe(Ke)(r)) return !0;
21244 if ([Ke, Je, et, tt].map(He).reduce(function(e, t) {
21249 if (!A(e[i], t[i])) return !1;
21253 if (!o[i]) return !1;
21258 return e.length === t.length && k(e, t).reduce(function(e, t) {
21259 return e && A(t[0], t[1])
21264 if (!e) return "ui-view (defunct)";
21265 var t = e.creationContext ? e.creationContext.name || "(root)" : "(none)";
21266 return "[ui-view#" + e.id + " " + e.$type + ":" + e.fqn + " (" + e.name + "@" + t + ")]"
21270 return Ze(t) ? e.Category[t] : e.Category[e.Category[t]]
21274 var n = Xe(t) ? [t] : t;
21275 return !!(Ke(n) ? n : function(e) {
21276 for (var t = n, r = 0; r < t.length; r++) {
21277 var i = new qe(t[r]);
21278 if (i && i.matches(e.name) || !i && t[r] === e.name) return !0
21284 function R(e, t, n) {
21285 function r(e, r, o) {
21286 void 0 === o && (o = {});
21287 var a = new zt(t, n, r, e, o);
21290 a._deregistered = !0, mt(i)(a)
21293 var i = (e._registeredHooks = e._registeredHooks || {})[n.name] = [];
21294 return e[n.name] = r, r
21298 return void 0 === e && (e = !1),
21300 var r = e ? -1 : 1,
21301 i = (t.node.state.path.length - n.node.state.path.length) * r;
21302 return 0 !== i ? i : n.hook.priority - t.hook.priority
21308 return Je(e) ? e : We(e) ? [e] : []
21312 switch (e.length) {
21316 return "auto" === t ? e[0] : e;
21323 return function(i) {
21324 if (Je(i) && 0 === i.length) return i;
21325 var o = E(n(i), e);
21326 return !0 === t ? 0 === _(o, function(e) {
21333 return function(t, r) {
21336 if (i.length !== o.length) return !1;
21337 for (var a = 0; a < i.length; a++)
21338 if (!e(i[a], o[a])) return !1;
21343 ["encode", "decode", "equals", "$normalize"].forEach(function(t) {
21344 var n = e[t].bind(e),
21345 r = "equals" === t ? o : i;
21348 dynamic: e.dynamic,
21350 pattern: e.pattern,
21351 inherit: e.inherit,
21352 is: i(e.is.bind(e), !0),
21361 return e = Kt(e) && {
21363 } || e, t.__cacheable = !0, dt(e, {
21364 $$fn: l(e.value) ? e.value : t
21368 function L(t, n, r, i, o) {
21369 if (t.type && n && "string" !== n.name) throw new Error("Param '" + i + "' has two type configurations.");
21370 if (t.type && n && "string" === n.name && o.type(t.type)) return o.type(t.type);
21373 var a = r === e.DefType.CONFIG ? "any" : r === e.DefType.PATH ? "path" : r === e.DefType.SEARCH ? "query" : "string";
21376 return t.type instanceof Yt ? t.type : o.type(t.type)
21379 function F(e, t, n) {
21381 if (!t || !1 === r) return !1;
21382 if (!We(r) || null == r) return n;
21383 if (!0 === r || Xe(r)) return r;
21384 throw new Error("Invalid squash policy: '" + r + "'. Valid policies: false, true, or arbitrary string")
21387 function q(e, t, n, r) {
21390 to: n || t ? void 0 : ""
21393 to: n || t ? void 0 : ""
21395 return i = Je(e.replace) ? e.replace : [], Xe(r) && i.push({
21398 }), o = E(i, De("from")), _(a, function(e) {
21399 return -1 === o.indexOf(e.from)
21404 return t.length <= e ? t : t.substr(0, e - 3) + "..."
21408 for (; t.length < e;) t += " ";
21413 return e.replace(/^([A-Z])/, function(e) {
21414 return e.toLowerCase()
21415 }).replace(/([A-Z])/g, function(e) {
21416 return "-" + e.toLowerCase()
21422 n = t.match(/^(function [^ ]+\([^)]*\))/),
21425 return i && r.match(/function \(/) ? "function " + i + r.substr(9) : r
21429 var t = Je(e) ? e.slice(-1)[0] : e;
21430 return t && t.toString() || "undefined"
21436 if (-1 !== n.indexOf(e)) return "[circular ref]";
21442 return JSON.stringify(e, function(e, n) {
21444 }).replace(/\\"/g, '"')
21448 var t = new RegExp("(" + e + ")", "g");
21449 return function(e) {
21450 return e.split(t).filter(u)
21455 return Xe(M(e)) && Xe(t) ? e.slice(0, -1).concat(M(e) + t) : C(e, t)
21463 return e.self.$$state = function() {
21469 return e.parent && e.parent.data && (e.data = e.self.data = ht(e.parent.data, e.data)), e.data
21473 return e.parent ? e.parent.path.concat(e) : [e]
21477 var t = e.parent ? dt({}, e.parent.includes) : {};
21478 return t[e.name] = !0, t
21482 var t = function(e) {
21483 var t = ot.$injector;
21484 return e.$inject || t && t.annotate(e, t.strictDi) || "deferred"
21487 return e.provide || e.token
21490 [De("resolveFn"), function(e) {
21491 return new en(n(e), e.resolveFn, e.deps, e.policy)
21493 [De("useFactory"), function(e) {
21494 return new en(n(e), e.useFactory, e.deps || e.dependencies, e.policy)
21496 [De("useClass"), function(e) {
21497 return new en(n(e), function() {
21498 return new e.useClass
21501 [De("useValue"), function(e) {
21502 return new en(n(e), function() {
21504 }, [], e.policy, e.useValue)
21506 [De("useExisting"), function(e) {
21507 return new en(n(e), u, [e.useExisting], e.policy)
21511 [i(De("val"), Xe), function(e) {
21512 return new en(e.token, u, [e.val], e.policy)
21514 [i(De("val"), Je), function(e) {
21515 return new en(e.token, M(e.val), e.val.slice(0, -1), e.policy)
21517 [i(De("val"), Ke), function(e) {
21518 return new en(e.token, e.val, t(e.val), e.policy)
21522 [je(en), function(e) {
21526 return !(!e.token || !e.resolveFn)
21529 return !(!e.provide && !e.token || !(e.useValue || e.useFactory || e.useExisting || e.useClass))
21532 return !!(e && e.val && (Xe(e.val) || Je(e.val) || Ke(e.val)))
21534 [Fe(!0), function(e) {
21535 throw new Error("Invalid resolve value: " + Y(e))
21539 return (Je(s) ? s : function(e, t) {
21540 return Object.keys(e || {}).map(function(n) {
21548 }(s, e.resolvePolicy || {})).map(a)
21551 function ne(e, t) {
21553 r = e.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&");
21555 switch (t.squash) {
21557 n = ["(", ")" + (t.isOptional ? "?" : "")];
21560 r = r.replace(/\/$/, ""), n = ["(?:/(", ")|/)?"];
21563 n = ["(" + t.squash + "|", ")?"]
21565 return r + n[0] + t.type.pattern.source + n[1]
21568 function re(e, t, n, r) {
21569 return "/" === r ? e : t ? r.slice(0, -1) + e : n ? r.slice(1) + e : e
21573 if (!(Ke(e) || Xe(e) || je(Ut)(e) || Ut.isDef(e))) throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");
21574 return Ke(e) ? e : Fe(e)
21581 resolveFn: function() {
21585 }, ""), e.addResolvable({
21588 resolveFn: function() {
21592 }, ""), e.addResolvable({
21593 token: "$transition$",
21595 resolveFn: function() {
21599 }, ""), e.addResolvable({
21600 token: "$stateParams",
21602 resolveFn: function() {
21606 }, ""), e.entering().forEach(function(t) {
21610 resolveFn: function() {
21619 return function(t, n) {
21620 return (0, n.$$state()[e])(t, n)
21624 function se(e, t) {
21625 var n = t.$$state().lazyLoad,
21628 r = n._promise = ot.$q.when(n(e, t)).then(function(t) {
21629 return t && Array.isArray(t.states) && t.states.forEach(function(t) {
21630 return e.router.stateRegistry.register(t)
21632 }).then(function(e) {
21633 return delete t.lazyLoad, delete t.$$state().lazyLoad, delete n._promise, e
21635 return delete n._promise, ot.$q.reject(e)
21642 var t = e._ignoredReason();
21644 qt.traceTransitionIgnored(e);
21645 var n = e.router.globals.transition;
21646 return "SameAsCurrent" === t && n && n.abort(), Rt.ignored().toPromise()
21651 if (!e.valid()) throw new Error(e.error())
21655 var t = function(e) {
21670 function de(e, t, n, r) {
21671 return function(i) {
21672 var o = i.locationService = new n(i),
21673 a = i.locationConfig = new r(i, t);
21678 dispose: function(e) {
21679 e.dispose(o), e.dispose(a)
21686 return ot.$injector = kr, ot.$q = wr, {
21687 name: "vanilla.services",
21690 dispose: function() {
21698 return function(t, n) {
21699 return e = e || ot.$injector.get("$templateFactory"), [new Xr(t, n, e)]
21704 if (!e.parent) return {};
21705 var t = ["controller", "controllerProvider", "controllerAs", "resolveAs"],
21706 n = ["component", "bindings", "componentProvider"],
21707 r = ["templateProvider", "templateUrl", "template", "notify", "async"].concat(t),
21709 if (We(e.views) && Kr(i, e)) throw new Error("State '" + e.name + "' has a 'views' object. It cannot also have \"view properties\" at the state level. Move the following properties into a view (in the 'views' object): " + i.filter(function(t) {
21716 return ut(a, function(t, i) {
21717 if (i = i || "$default", Xe(t) && (t = {
21719 }), t = dt({}, t), Kr(n, t) && Kr(r, t)) throw new Error("Cannot combine: " + n.join("|") + " with: " + r.join("|") + " in stateview: '" + i + "@" + e.name + "'");
21720 t.resolveAs = t.resolveAs || "$resolve", t.$type = "ng1", t.$context = e, t.$name = i;
21721 var a = Pn.normalizeUIViewTarget(t.$context, t.$name);
21722 t.$uiViewName = a.uiViewName, t.$uiViewContextAnchor = a.uiViewContextAnchor, o[i] = t
21727 var t = ot.$injector.get(e + "Directive");
21728 if (!t || !t.length) throw new Error("Unable to find component named '" + e + "'");
21729 return t.map(Jr).reduce(Et, [])
21733 function t(e, t, r, i, o, a) {
21734 return n._runtimeServices(i, e, r, t), delete ui.router, delete ui.$get, ui
21735 }(ui = this.router = new Wn).stateProvider = new ti(ui.stateRegistry, ui.stateService), ui.stateRegistry.decorator("views", pe), ui.stateRegistry.decorator("onExit", ni("onExit")), ui.stateRegistry.decorator("onRetain", ni("onRetain")), ui.stateRegistry.decorator("onEnter", ni("onEnter")), ui.viewService._pluginapi._viewConfigFactory("ng1", he());
21736 var n = ui.locationService = ui.locationConfig = new ri(e);
21737 return ri.monkeyPatchPathParameterType(ui), ui.router = ui, ui.$get = t, t.$inject = ["$location", "$browser", "$sniffer", "$rootScope", "$http", "$templateCache"], ui
21740 function ve(e, t, n) {
21741 ot.$injector = e, ot.$q = t, n.stateRegistry.get().map(function(e) {
21742 return e.$$state().resolvables
21743 }).reduce(Et, []).filter(function(e) {
21744 return "deferred" === e.deps
21745 }).forEach(function(t) {
21746 return t.deps = e.annotate(t.resolveFn, e.strictDi)
21751 e.$watch(function() {
21752 qt.approximateDigests++
21757 var t, n = e.match(/^\s*({[^}]*})\s*$/);
21758 if (n && (e = "(" + n[1] + ")"), !(t = e.replace(/\n/g, " ").match(/^\s*([^(]*?)\s*(\((.*)\))?\s*$/)) || 4 !== t.length) throw new Error("Invalid state ref '" + e + "'");
21760 state: t[1] || null,
21761 paramExpr: t[3] || null
21766 var t = e.parent().inheritedData("$uiView"),
21767 n = Ie("$cfg.path")(t);
21768 return n ? M(n).state.name : void 0
21771 function _e(e, t, n) {
21772 var r = n.uiState || e.current.name,
21773 i = dt(Ce(t, e), n.uiStateOpts || {}),
21774 o = e.href(r, n.uiStateParams, i);
21777 uiStateParams: n.uiStateParams,
21784 var t = "[object SVGAnimatedString]" === Object.prototype.toString.call(e.prop("href")),
21785 n = "FORM" === e[0].nodeName;
21787 attr: n ? "action" : t ? "xlink:href" : "href",
21788 isAnchor: "A" === e.prop("tagName").toUpperCase(),
21793 function Ee(e, t, n, r, i) {
21794 return function(o) {
21795 var a = o.which || o.button,
21797 if (!(a > 1 || o.ctrlKey || o.metaKey || o.shiftKey || e.attr("target"))) {
21798 var c = n(function() {
21799 t.go(s.uiState, s.uiStateParams, s.uiStateOpts)
21801 o.preventDefault();
21802 var l = r.isAnchor && !s.href ? 1 : 0;
21803 o.preventDefault = function() {
21804 l-- <= 0 && n.cancel(c)
21810 function Ce(e, t) {
21812 relative: $e(e) || t.$current,
21818 function xe(e, t, n, r) {
21820 r && (i = r.events), Je(i) || (i = ["click"]);
21821 for (var o = e.on ? "on" : "bind", a = 0, s = i; a < s.length; a++) {
21825 t.$on("$destroy", function() {
21826 for (var t = e.off ? "off" : "unbind", r = 0, o = i; r < o.length; r++) {
21834 var t = function(t, n, r) {
21835 return e.is(t, n, r)
21837 return t.$stateful = !0, t
21841 var t = function(t, n, r) {
21842 return e.includes(t, n, r)
21844 return t.$stateful = !0, t
21847 function Me(e, n, r, i, o, a) {
21848 var s = Ie("viewDecl.controllerAs"),
21849 c = Ie("viewDecl.resolveAs");
21853 compile: function(i) {
21857 var u = l.data("$uiView");
21858 if (!u) return l.html(a), void e(l.contents())(i);
21859 var d = u.$cfg || {
21861 getTemplate: t.noop
21863 f = d.path && new sn(d.path);
21864 l.html(d.getTemplate(l, f) || a), qt.traceUIViewFill(u.$uiView, l.html());
21865 var h = e(l.contents()),
21871 var b = n(p, dt({}, v, {
21875 m && (i[m] = b, i[m][g] = v), l.data("$ngControllerController", b), l.children().data("$ngControllerController", b), Se(o, r, b, i, d)
21877 if (Xe(d.viewDecl.component)) var y = d.viewDecl.component,
21879 _ = new RegExp("^(x-|data-)?" + $ + "$", "i"),
21880 w = i.$watch(function() {
21881 var e = [].slice.call(l[0].children).filter(function(e) {
21882 return e && e.tagName && _.exec(e.tagName)
21884 return e && Oe.element(e).data("$" + y + "Controller")
21886 e && (Se(o, r, e, i, d), w())
21894 function Se(e, t, n, r, i) {
21895 !Ke(n.$onInit) || i.viewDecl.component && vi || n.$onInit();
21896 var o = M(i.path).state.self,
21900 if (Ke(n.uiOnParamsChanged)) {
21901 var s = new sn(i.path).getResolvable("$transition$").data;
21902 r.$on("$destroy", t.onSuccess({}, function(e) {
21903 if (e !== s && -1 === e.exiting().indexOf(o)) {
21904 var t = e.params("to"),
21905 r = e.params("from"),
21906 i = e.treeChanges().to.map(function(e) {
21907 return e.paramSchema
21909 a = e.treeChanges().from.map(function(e) {
21910 return e.paramSchema
21912 c = i.filter(function(e) {
21913 var n = a.indexOf(e);
21914 return -1 === n || !a[n].type.equals(t[e.id], r[e.id])
21917 var l = c.map(function(e) {
21920 u = _(t, function(e, t) {
21921 return -1 !== l.indexOf(t)
21923 n.uiOnParamsChanged(u, e)
21928 if (Ke(n.uiCanExit)) {
21931 return !!e && (e._uiCanExitIds && !0 === e._uiCanExitIds[c] || l(e.redirectedFrom()))
21936 r.$on("$destroy", t.onBefore(u, function(t) {
21937 var r, i = t._uiCanExitIds = t._uiCanExitIds || {};
21938 return l(t) || (r = e.when(n.uiCanExit(t))).then(function(e) {
21939 return i[c] = !1 !== e
21944 pe.$inject = ["state"];
21946 Oe = t && t.module ? t : Ae,
21948 return function(t) {
21952 Ne = n(function(e, t, n) {
21953 return n && n[e] === t
21956 return i.apply(null, e.split(".").map(De))
21959 return function() {
21960 for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n];
21961 return !e.apply(null, t)
21965 return function(t) {
21966 return t.reduce(function(t, n) {
21972 return function(t) {
21973 return t.reduce(function(t, n) {
21979 return function(t) {
21980 return null != t && t.constructor === e || t instanceof e
21984 return function(t) {
21989 return function() {
21995 this.text = e, this.glob = e.split(".");
21996 var t = this.text.split(".").map(function(e) {
21997 return "**" === e ? "(?:|(?:\\.[^.]*)*)" : "*" === e ? "\\.[^.]*" : "\\." + e
21999 this.regexp = new RegExp("^" + t + "$")
22001 return e.prototype.matches = function(e) {
22002 return this.regexp.test("." + e)
22003 }, e.is = function(e) {
22004 return !!/[!,*]+/.exec(e)
22005 }, e.fromString = function(t) {
22006 return e.is(t) ? new e(t) : null
22011 return e.create(t || {})
22013 return e.create = function(t) {
22014 t = e.isStateClass(t) ? new t : t;
22015 var n = ht(ht(t, e.prototype));
22016 return t.$$state = function() {
22018 }, n.self = t, n.__stateObjectCache = {
22019 nameGlob: qe.fromString(n.name)
22021 }, e.prototype.is = function(e) {
22022 return this === e || this.self === e || this.fqn() === e
22023 }, e.prototype.fqn = function() {
22024 if (!(this.parent && this.parent instanceof this.constructor)) return this.name;
22025 var e = this.parent.fqn();
22026 return e ? e + "." + this.name : this.name
22027 }, e.prototype.root = function() {
22028 return this.parent && this.parent.root() || this
22029 }, e.prototype.parameters = function(e) {
22030 return ((e = g(e, {
22033 })).inherit && this.parent && this.parent.parameters() || []).concat($t(this.params)).filter(function(t) {
22034 return !e.matchingKeys || e.matchingKeys.hasOwnProperty(t.id)
22036 }, e.prototype.parameter = function(e, t) {
22037 return void 0 === t && (t = {}), this.url && this.url.parameter(e, t) || w($t(this.params), Ne("id", e)) || t.inherit && this.parent && this.parent.parameter(e)
22038 }, e.prototype.toString = function() {
22040 }, e.isStateClass = function(e) {
22041 return Ke(e) && !0 === e.__uiRouterState
22042 }, e.isState = function(e) {
22043 return Qe(e.__stateObjectCache)
22046 Ve = Object.prototype.toString,
22048 return function(t) {
22049 return typeof t === e
22052 ze = Be("undefined"),
22058 Ke = Be("function"),
22062 return null !== e && "object" == typeof e
22064 Je = Array.isArray,
22066 return "[object Date]" === Ve.call(e)
22069 return "[object RegExp]" === Ve.call(e)
22072 rt = o(Qe, i(De("then"), Ke)),
22074 return function() {
22075 throw new Error(e + "(): No coreservices implementation for UI-Router is loaded.")
22082 at = ("undefined" == typeof window ? {} : window).angular || {},
22083 st = at.fromJson || JSON.parse.bind(JSON),
22084 ct = at.toJson || JSON.stringify.bind(JSON),
22085 lt = at.copy || function(e, t) {
22086 return t && Object.keys(t).forEach(function(e) {
22088 }), t || (t = {}), dt(t, e)
22090 ut = at.forEach || function(e, t, n) {
22091 if (Je(e)) return e.forEach(t, n);
22092 Object.keys(e).forEach(function(n) {
22096 dt = Object.assign || S,
22097 ft = at.equals || A,
22098 ht = function(e, t) {
22099 return dt(Object.create(e), t)
22105 return e.slice().forEach(function(t) {
22106 "function" == typeof t && t(), mt(e, t)
22109 bt = function(e, t) {
22114 return Object.keys(e).map(function(t) {
22118 _t = function(e, t) {
22121 wt = function(e, t) {
22124 Et = function(e, t) {
22127 Ct = function(e, t) {
22128 return Je(t) ? e.concat(t.reduce(Ct, [])) : C(e, t)
22130 xt = function(e, t) {
22131 return pt(e, t) ? e : C(e, t)
22134 return e.reduce(Et, [])
22137 return e.reduce(Ct, [])
22142 return Object.keys(e).map(function(t) {
22147 return e.catch(function(e) {
22152 return Ot(ot.$q.reject(e))
22156 void 0 === e && (e = []), void 0 === t && (t = null), this._items = e, this._limit = t
22158 return e.prototype.enqueue = function(e) {
22159 var t = this._items;
22160 return t.push(e), this._limit && t.length > this._limit && t.shift(), e
22161 }, e.prototype.dequeue = function() {
22162 if (this.size()) return this._items.splice(0, 1)[0]
22163 }, e.prototype.clear = function() {
22164 var e = this._items;
22165 return this._items = [], e
22166 }, e.prototype.size = function() {
22167 return this._items.length
22168 }, e.prototype.remove = function(e) {
22169 var t = this._items.indexOf(e);
22170 return t > -1 && this._items.splice(t, 1)[0]
22171 }, e.prototype.peekTail = function() {
22172 return this._items[this._items.length - 1]
22173 }, e.prototype.peekHead = function() {
22174 if (this.size()) return this._items[0]
22178 e[e.SUPERSEDED = 2] = "SUPERSEDED", e[e.ABORTED = 3] = "ABORTED", e[e.INVALID = 4] = "INVALID", e[e.IGNORED = 5] = "IGNORED", e[e.ERROR = 6] = "ERROR"
22179 }(e.RejectType || (e.RejectType = {}));
22182 function t(e, t, n) {
22183 this.$id = It++, this.type = e, this.message = t, this.detail = n
22185 return t.prototype.toString = function() {
22186 var e = function(e) {
22187 return e && e.toString !== Object.prototype.toString ? e.toString() : Y(e)
22190 return "Transition Rejection($id: " + t.$id + " type: " + t.type + ", message: " + t.message + ", detail: " + e + ")"
22191 }, t.prototype.toPromise = function() {
22192 return dt(Dt(this), {
22193 _transitionRejection: this
22195 }, t.isRejectionPromise = function(e) {
22196 return e && "function" == typeof e.then && je(t)(e._transitionRejection)
22197 }, t.superseded = function(n, r) {
22198 var i = new t(e.RejectType.SUPERSEDED, "The transition has been superseded by a different transition", n);
22199 return r && r.redirected && (i.redirected = !0), i
22200 }, t.redirected = function(e) {
22201 return t.superseded(e, {
22204 }, t.invalid = function(n) {
22205 return new t(e.RejectType.INVALID, "This transition is invalid", n)
22206 }, t.ignored = function(n) {
22207 return new t(e.RejectType.IGNORED, "The transition was ignored", n)
22208 }, t.aborted = function(n) {
22209 return new t(e.RejectType.ABORTED, "The transition has been aborted", n)
22210 }, t.errored = function(n) {
22211 return new t(e.RejectType.ERROR, "The transition errored", n)
22212 }, t.normalize = function(e) {
22213 return je(t)(e) ? e : t.errored(e)
22217 var t = e.viewDecl,
22218 n = t.$context.name || "(root)";
22219 return "[View#" + e.$id + " from '" + n + "' state]: target ui-view: '" + t.$uiViewName + "@" + t.$uiViewContextAnchor + "'"
22222 e[e.RESOLVE = 0] = "RESOLVE", e[e.TRANSITION = 1] = "TRANSITION", e[e.HOOK = 2] = "HOOK", e[e.UIVIEW = 3] = "UIVIEW", e[e.VIEWCONFIG = 4] = "VIEWCONFIG"
22223 }(e.Category || (e.Category = {}));
22224 var Ht = Ie("$id"),
22225 jt = Ie("router.$id"),
22227 return "Transition #" + Ht(e) + "-" + jt(e)
22231 this._enabled = {}, this.approximateDigests = 0
22233 return t.prototype._set = function(t, n) {
22235 n.length || (n = Object.keys(e.Category).map(function(e) {
22236 return parseInt(e, 10)
22237 }).filter(function(e) {
22239 }).map(function(t) {
22240 return e.Category[t]
22241 })), n.map(N).forEach(function(e) {
22242 return r._enabled[e] = t
22244 }, t.prototype.enable = function() {
22245 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
22247 }, t.prototype.disable = function() {
22248 for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
22250 }, t.prototype.enabled = function(e) {
22251 return !!this._enabled[N(e)]
22252 }, t.prototype.traceTransitionStart = function(t) {
22253 this.enabled(e.Category.TRANSITION) && console.log(Lt(t) + ": Started -> " + Y(t))
22254 }, t.prototype.traceTransitionIgnored = function(t) {
22255 this.enabled(e.Category.TRANSITION) && console.log(Lt(t) + ": Ignored <> " + Y(t))
22256 }, t.prototype.traceHookInvocation = function(t, n, r) {
22257 if (this.enabled(e.Category.HOOK)) {
22258 var i = Ie("traceData.hookType")(r) || "internal",
22259 o = Ie("traceData.context.state.name")(r) || Ie("traceData.context")(r) || "unknown",
22260 a = z(t.registeredHook.callback);
22261 console.log(Lt(n) + ": Hook -> " + i + " context: " + o + ", " + U(200, a))
22263 }, t.prototype.traceHookResult = function(t, n, r) {
22264 this.enabled(e.Category.HOOK) && console.log(Lt(n) + ": <- Hook returned: " + U(200, Y(t)))
22265 }, t.prototype.traceResolvePath = function(t, n, r) {
22266 this.enabled(e.Category.RESOLVE) && console.log(Lt(r) + ": Resolving " + t + " (" + n + ")")
22267 }, t.prototype.traceResolvableResolved = function(t, n) {
22268 this.enabled(e.Category.RESOLVE) && console.log(Lt(n) + ": <- Resolved " + t + " to: " + U(200, Y(t.data)))
22269 }, t.prototype.traceError = function(t, n) {
22270 this.enabled(e.Category.TRANSITION) && console.log(Lt(n) + ": <- Rejected " + Y(n) + ", reason: " + t)
22271 }, t.prototype.traceSuccess = function(t, n) {
22272 this.enabled(e.Category.TRANSITION) && console.log(Lt(n) + ": <- Success " + Y(n) + ", final state: " + t.name)
22273 }, t.prototype.traceUIViewEvent = function(t, n, r) {
22274 void 0 === r && (r = ""), this.enabled(e.Category.UIVIEW) && console.log("ui-view: " + V(30, t) + " " + D(n) + r)
22275 }, t.prototype.traceUIViewConfigUpdated = function(t, n) {
22276 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Updating", t, " with ViewConfig from context='" + n + "'")
22277 }, t.prototype.traceUIViewFill = function(t, n) {
22278 this.enabled(e.Category.UIVIEW) && this.traceUIViewEvent("Fill", t, " with: " + U(200, n))
22279 }, t.prototype.traceViewSync = function(t) {
22280 if (this.enabled(e.Category.VIEWCONFIG)) {
22281 var n = t.map(function(e) {
22285 "ui-view fqn": t.$type + ":" + t.fqn,
22286 "state: view name": n && n.viewDecl.$context.name + ": " + n.viewDecl.$name + " (" + n.viewDecl.$type + ")"
22288 }).sort(function(e, t) {
22289 return e["ui-view fqn"].localeCompare(t["ui-view fqn"])
22293 }, t.prototype.traceViewServiceEvent = function(t, n) {
22294 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + Pt(n))
22295 }, t.prototype.traceViewServiceUIViewEvent = function(t, n) {
22296 this.enabled(e.Category.VIEWCONFIG) && console.log("VIEWCONFIG: " + t + " " + D(n))
22301 e[e.CREATE = 0] = "CREATE", e[e.BEFORE = 1] = "BEFORE", e[e.RUN = 2] = "RUN", e[e.SUCCESS = 3] = "SUCCESS", e[e.ERROR = 4] = "ERROR"
22302 }(e.TransitionHookPhase || (e.TransitionHookPhase = {})),
22304 e[e.TRANSITION = 0] = "TRANSITION", e[e.STATE = 1] = "STATE"
22305 }(e.TransitionHookScope || (e.TransitionHookScope = {}));
22306 var Ut = function() {
22307 function e(e, t, n, r) {
22308 void 0 === r && (r = {}), this._identifier = e, this._definition = t, this._options = r, this._params = n || {}
22310 return e.prototype.name = function() {
22311 return this._definition && this._definition.name || this._identifier
22312 }, e.prototype.identifier = function() {
22313 return this._identifier
22314 }, e.prototype.params = function() {
22315 return this._params
22316 }, e.prototype.$state = function() {
22317 return this._definition
22318 }, e.prototype.state = function() {
22319 return this._definition && this._definition.self
22320 }, e.prototype.options = function() {
22321 return this._options
22322 }, e.prototype.exists = function() {
22323 return !(!this._definition || !this._definition.self)
22324 }, e.prototype.valid = function() {
22325 return !this.error()
22326 }, e.prototype.error = function() {
22327 var e = this.options().relative;
22328 if (!this._definition && e) {
22329 var t = e.name ? e.name : e;
22330 return "Could not resolve '" + this.name() + "' from state '" + t + "'"
22332 return this._definition ? this._definition.self ? void 0 : "State '" + this.name() + "' has an invalid definition" : "No such state '" + this.name() + "'"
22333 }, e.prototype.toString = function() {
22334 return "'" + this.name() + "'" + ct(this.params())
22335 }, e.isDef = function(e) {
22336 return e && e.state && (Xe(e.state) || Xe(e.state.name))
22346 function t(t, n, r, i) {
22348 this.transition = t, this.stateContext = n, this.registeredHook = r, this.options = i, this.isSuperseded = function() {
22349 return o.type.hookPhase === e.TransitionHookPhase.RUN && !o.options.transition.isActive()
22350 }, this.options = g(i, Vt), this.type = r.eventType
22352 return t.prototype.logError = function(e) {
22353 this.transition.router.stateService.defaultErrorHandler()(e)
22354 }, t.prototype.invokeHook = function() {
22356 t = this.registeredHook;
22357 if (!t._deregistered) {
22358 var n = this.getNotCurrentRejection();
22360 var r = this.options;
22361 qt.traceHookInvocation(this, this.transition, r);
22362 var i = function(n) {
22363 return t.eventType.getErrorHandler(e)(n)
22366 return t.eventType.getResultHandler(e)(n)
22369 var a = t.callback.call(r.bind, e.transition, e.stateContext);
22370 return !this.type.synchronous && rt(a) ? a.catch(function(e) {
22371 return Rt.normalize(e).toPromise()
22372 }).then(o, i) : o(a)
22374 return i(Rt.normalize(e))
22377 }, t.prototype.handleHookResult = function(e) {
22379 n = this.getNotCurrentRejection();
22380 return n || (rt(e) ? e.then(function(e) {
22381 return t.handleHookResult(e)
22382 }) : (qt.traceHookResult(e, this.transition, this.options), !1 === e ? Rt.aborted("Hook aborted transition").toPromise() : je(Ut)(e) ? Rt.redirected(e).toPromise() : void 0))
22383 }, t.prototype.getNotCurrentRejection = function() {
22384 var e = this.transition.router;
22385 return e._disposed ? Rt.aborted("UIRouter instance #" + e.$id + " has been stopped (disposed)").toPromise() : this.transition._aborted ? Rt.aborted().toPromise() : this.isSuperseded() ? Rt.superseded(this.options.current()).toPromise() : void 0
22386 }, t.prototype.toString = function() {
22389 n = e.registeredHook;
22390 return (Ie("traceData.hookType")(t) || "internal") + " context: " + (Ie("traceData.context.state.name")(t) || Ie("traceData.context")(t) || "unknown") + ", " + U(200, W(n.callback))
22391 }, t.chain = function(e, t) {
22392 return e.reduce(function(e, t) {
22393 return e.then(function() {
22394 return t.invokeHook()
22396 }, t || ot.$q.when())
22397 }, t.invokeHooks = function(e, n) {
22398 for (var r = 0; r < e.length; r++) {
22399 var i = e[r].invokeHook();
22401 var o = e.slice(r + 1);
22402 return t.chain(o, i).then(n)
22406 }, t.runAllHooks = function(e) {
22407 e.forEach(function(e) {
22408 return e.invokeHook()
22410 }, t.HANDLE_RESULT = function(e) {
22411 return function(t) {
22412 return e.handleHookResult(t)
22414 }, t.LOG_REJECTED_RESULT = function(e) {
22415 return function(t) {
22416 rt(t) && t.catch(function(t) {
22417 return e.logError(Rt.normalize(t))
22420 }, t.LOG_ERROR = function(e) {
22421 return function(t) {
22422 return e.logError(t)
22424 }, t.REJECT_ERROR = function(e) {
22425 return function(e) {
22428 }, t.THROW_ERROR = function(e) {
22429 return function(e) {
22435 function t(e, t, n, r, i) {
22436 void 0 === i && (i = {}), this.tranSvc = e, this.eventType = t, this.callback = n, this.matchCriteria = r, this.priority = i.priority || 0, this.bind = i.bind || null, this._deregistered = !1
22438 return t.prototype._matchingNodes = function(e, t) {
22439 if (!0 === t) return e;
22440 var n = e.filter(function(e) {
22441 return I(e.state, t)
22443 return n.length ? n : null
22444 }, t.prototype._getDefaultMatchCriteria = function() {
22445 return E(this.tranSvc._pluginapi._getPathTypes(), function() {
22448 }, t.prototype._getMatchingNodes = function(t) {
22450 r = dt(this._getDefaultMatchCriteria(), this.matchCriteria);
22451 return $t(this.tranSvc._pluginapi._getPathTypes()).reduce(function(i, o) {
22452 var a = o.scope === e.TransitionHookScope.STATE,
22453 s = t[o.name] || [],
22454 c = a ? s : [M(s)];
22455 return i[o.name] = n._matchingNodes(c, r[o.name]), i
22457 }, t.prototype.matches = function(e) {
22458 var t = this._getMatchingNodes(e);
22459 return $t(t).every(u) ? t : null
22464 this.transition = e
22466 return t.prototype.buildHooksForPhase = function(e) {
22468 return this.transition.router.transitionService._pluginapi._getEvents(e).map(function(e) {
22469 return t.buildHooks(e)
22470 }).reduce(Et, []).filter(u)
22471 }, t.prototype.buildHooks = function(t) {
22472 var n = this.transition,
22473 r = n.treeChanges(),
22474 i = this.getMatchingHooks(t, r);
22478 current: n.options().current
22480 return i.map(function(i) {
22481 return i.matches(r)[t.criteriaMatchPath.name].map(function(r) {
22489 s = t.criteriaMatchPath.scope === e.TransitionHookScope.STATE ? r.state.self : null,
22490 c = new Bt(n, s, i, a);
22497 }).reduce(Et, []).sort(P(t.reverseSort)).map(function(e) {
22498 return e.transitionHook
22500 }, t.prototype.getMatchingHooks = function(t, n) {
22501 var r = t.hookPhase === e.TransitionHookPhase.CREATE,
22502 i = this.transition.router.transitionService;
22503 return (r ? [i] : [this.transition, i]).map(function(e) {
22504 return e.getHooks(t.name)
22505 }).filter(Mt(Je, "broken event named: " + t.name)).reduce(Et, []).filter(function(e) {
22506 return e.matches(n)
22512 this.pattern = /.*/, this.inherit = !0, dt(this, e)
22514 return e.prototype.is = function(e, t) {
22516 }, e.prototype.encode = function(e, t) {
22518 }, e.prototype.decode = function(e, t) {
22520 }, e.prototype.equals = function(e, t) {
22522 }, e.prototype.$subPattern = function() {
22523 var e = this.pattern.toString();
22524 return e.substr(1, e.length - 2)
22525 }, e.prototype.toString = function() {
22526 return "{ParamType:" + this.name + "}"
22527 }, e.prototype.$normalize = function(e) {
22528 return this.is(e) ? e : this.decode(e)
22529 }, e.prototype.$asArray = function(e, t) {
22530 if (!e) return this;
22531 if ("auto" === e && !t) throw new Error("'auto' array mode is for query parameters only");
22532 return new H(this, e)
22535 Gt = Object.prototype.hasOwnProperty,
22537 return 0 === ["value", "type", "squash", "array", "dynamic"].filter(Gt.bind(e || {})).length
22540 e[e.PATH = 0] = "PATH", e[e.SEARCH = 1] = "SEARCH", e[e.CONFIG = 2] = "CONFIG"
22541 }(e.DefType || (e.DefType = {}));
22542 var Zt = function() {
22543 function t(t, n, r, i, o) {
22544 n = L(r = j(r), n, i, t, o.paramTypes);
22545 var a = function() {
22547 array: i === e.DefType.SEARCH && "auto"
22549 o = t.match(/\[\]$/) ? {
22552 return dt(n, o, r).array
22554 n = a ? n.$asArray(a, i === e.DefType.SEARCH) : n;
22555 var s = void 0 !== r.value || i === e.DefType.SEARCH,
22556 c = We(r.dynamic) ? !!r.dynamic : !!n.dynamic,
22557 l = We(r.raw) ? !!r.raw : !!n.raw,
22558 u = F(r, s, o.defaultSquashPolicy()),
22560 f = We(r.inherit) ? !!r.inherit : !!n.inherit;
22575 return t.prototype.isDefaultValue = function(e) {
22576 return this.isOptional && this.type.equals(this.value(), e)
22577 }, t.prototype.value = function(e) {
22579 return e = function(e) {
22580 for (var n = 0, r = t.replace; n < r.length; n++) {
22582 if (i.from === e) return i.to
22585 }(e), ze(e) ? function() {
22586 if (t._defaultValueCache) return t._defaultValueCache.defaultValue;
22587 if (!ot.$injector) throw new Error("Injectable functions cannot be called at configuration time");
22588 var e = ot.$injector.invoke(t.config.$$fn);
22589 if (null !== e && void 0 !== e && !t.type.is(e)) throw new Error("Default value (" + e + ") for parameter '" + t.id + "' is not an instance of ParamType (" + t.type.name + ")");
22590 return t.config.$$fn.__cacheable && (t._defaultValueCache = {
22593 }() : this.type.$normalize(e)
22594 }, t.prototype.isSearch = function() {
22595 return this.location === e.DefType.SEARCH
22596 }, t.prototype.validates = function(e) {
22597 if ((ze(e) || null === e) && this.isOptional) return !0;
22598 var t = this.type.$normalize(e);
22599 if (!this.type.is(t)) return !1;
22600 var n = this.type.encode(t);
22601 return !(Xe(n) && !this.type.pattern.exec(n))
22602 }, t.prototype.toString = function() {
22603 return "{Param:" + this.id + " " + this.type + " squash: '" + this.squash + "' optional: " + this.isOptional + "}"
22604 }, t.values = function(e, t) {
22605 void 0 === t && (t = {});
22606 for (var n = {}, r = 0, i = e; r < i.length; r++) {
22608 n[o.id] = o.value(t[o.id])
22611 }, t.changed = function(e, t, n) {
22612 return void 0 === t && (t = {}), void 0 === n && (n = {}), e.filter(function(e) {
22613 return !e.type.equals(t[e.id], n[e.id])
22615 }, t.equals = function(e, n, r) {
22616 return void 0 === n && (n = {}), void 0 === r && (r = {}), 0 === t.changed(e, n, r).length
22617 }, t.validates = function(e, t) {
22618 return void 0 === t && (t = {}), e.map(function(e) {
22619 return e.validates(t[e.id])
22625 if (t instanceof e) {
22627 this.state = n.state, this.paramSchema = n.paramSchema.slice(), this.paramValues = dt({}, n.paramValues), this.resolvables = n.resolvables.slice(), this.views = n.views && n.views.slice()
22630 this.state = r, this.paramSchema = r.parameters({
22632 }), this.paramValues = {}, this.resolvables = r.resolvables.map(function(e) {
22637 return e.prototype.applyRawParams = function(e) {
22638 var t = function(t) {
22639 return [t.id, t.value(e[t.id])]
22641 return this.paramValues = this.paramSchema.reduce(function(e, n) {
22644 }, e.prototype.parameter = function(e) {
22645 return w(this.paramSchema, Ne("id", e))
22646 }, e.prototype.equals = function(e, t) {
22647 var n = this.diff(e, t);
22648 return n && 0 === n.length
22649 }, e.prototype.diff = function(e, t) {
22650 if (this.state !== e.state) return !1;
22651 var n = t ? t(this) : this.paramSchema;
22652 return Zt.changed(n, this.paramValues, e.paramValues)
22653 }, e.clone = function(t) {
22659 return e.makeTargetState = function(e) {
22660 var t = M(e).state;
22661 return new Ut(t, t, e.map(De("paramValues")).reduce(bt, {}))
22662 }, e.buildPath = function(e) {
22663 var t = e.params();
22664 return e.$state().path.map(function(e) {
22665 return new Xt(e).applyRawParams(t)
22667 }, e.buildToPath = function(t, n) {
22668 var r = e.buildPath(n);
22669 return n.options().inherit ? e.inheritParams(t, r, Object.keys(n.params())) : r
22670 }, e.applyViewConfigs = function(t, n, r) {
22671 n.filter(function(e) {
22672 return pt(r, e.state)
22673 }).forEach(function(r) {
22674 var i = $t(r.state.views || {}),
22675 o = e.subPath(n, function(e) {
22678 a = i.map(function(e) {
22679 return t.createViewConfig(o, e)
22681 r.views = a.reduce(Et, [])
22683 }, e.inheritParams = function(e, t, n) {
22685 var n = w(e, Ne("state", t));
22686 return dt({}, n && n.paramValues)
22688 void 0 === n && (n = []);
22689 var i = e.map(function(e) {
22690 return e.paramSchema
22691 }).reduce(Et, []).filter(function(e) {
22694 return t.map(function(t) {
22695 var o = dt({}, t && t.paramValues),
22698 var s = y(r(e, t.state) || {}, i),
22700 return new Xt(t.state).applyRawParams(c)
22702 }, e.treeChanges = function(t, n, r) {
22703 for (var i = 0, o = Math.min(t.length, n.length); i < o && t[i].state !== r && function(t, n) {
22704 return t.equals(n, e.nonDynamicParams)
22705 }(t[i], n[i]);) i++;
22707 s = (a = t).slice(0, i), c = a.slice(i);
22708 var d = s.map(function(e, t) {
22709 var r = Xt.clone(e);
22710 return r.paramValues = n[t].paramValues, r
22712 return l = n.slice(i), u = d.concat(l), {
22719 }, e.matching = function(e, t, n) {
22721 return k(e, t).reduce(function(e, t) {
22724 return (r = r || !i.equals(o, n)) ? e : e.concat(i)
22726 }, e.equals = function(t, n, r) {
22727 return t.length === n.length && e.matching(t, n, r).length === t.length
22728 }, e.subPath = function(e, t) {
22731 return -1 === r ? void 0 : e.slice(0, r + 1)
22732 }, e.nonDynamicParams = function(e) {
22733 return e.state.parameters({
22735 }).filter(function(e) {
22738 }, e.paramValues = function(e) {
22739 return e.reduce(function(e, t) {
22740 return dt(e, t.paramValues)
22749 function e(t, n, r, i, o) {
22750 if (this.resolved = !1, this.promise = void 0, t instanceof e) dt(this, t);
22752 if (Ge(t)) throw new Error("new Resolvable(): token argument is required");
22753 if (!Ke(n)) throw new Error("new Resolvable(): resolveFn argument must be a function");
22754 this.token = t, this.policy = i, this.resolveFn = n, this.deps = r || [], this.data = o, this.resolved = void 0 !== o, this.promise = this.resolved ? ot.$q.when(this.data) : void 0
22755 } else if (Qe(t) && t.token && Ke(t.resolveFn)) {
22757 return new e(a.token, a.resolveFn, a.deps, a.policy, a.data)
22760 return e.prototype.getPolicy = function(e) {
22761 var t = this.policy || {},
22762 n = e && e.resolvePolicy || {};
22764 when: t.when || n.when || Jt.when,
22765 async: t.async || n.async || Jt.async
22767 }, e.prototype.resolve = function(e, t) {
22770 i = e.findNode(this),
22772 a = "RXWAIT" === this.getPolicy(o).async ? function(e) {
22773 var t = e.cache(1);
22774 return t.take(1).toPromise().then(function() {
22778 return this.promise = r.when().then(function() {
22779 return r.all(e.getDependencies(n).map(function(n) {
22782 }).then(function(e) {
22783 return n.resolveFn.apply(null, e)
22784 }).then(a).then(function(e) {
22785 return n.data = e, n.resolved = !0, qt.traceResolvableResolved(n, t), n.data
22787 }, e.prototype.get = function(e, t) {
22788 return this.promise || this.resolve(e, t)
22789 }, e.prototype.toString = function() {
22790 return "Resolvable(token: " + Y(this.token) + ", requires: [" + this.deps.map(Y) + "])"
22791 }, e.prototype.clone = function() {
22793 }, e.fromData = function(t, n) {
22794 return new e(t, function() {
22811 rn = [nn.EAGER, nn.LAZY],
22813 an = "Native Injector",
22818 return e.prototype.getTokens = function() {
22819 return this._path.reduce(function(e, t) {
22820 return e.concat(t.resolvables.map(function(e) {
22823 }, []).reduce(xt, [])
22824 }, e.prototype.getResolvable = function(e) {
22825 return M(this._path.map(function(e) {
22826 return e.resolvables
22827 }).reduce(Et, []).filter(function(t) {
22828 return t.token === e
22830 }, e.prototype.getPolicy = function(e) {
22831 var t = this.findNode(e);
22832 return e.getPolicy(t.state)
22833 }, e.prototype.subContext = function(t) {
22834 return new e(Qt.subPath(this._path, function(e) {
22835 return e.state === t
22837 }, e.prototype.addResolvables = function(e, t) {
22838 var n = w(this._path, Ne("state", t)),
22839 r = e.map(function(e) {
22842 n.resolvables = n.resolvables.filter(function(e) {
22843 return -1 === r.indexOf(e.token)
22845 }, e.prototype.resolvePath = function(e, t) {
22847 void 0 === e && (e = "LAZY");
22848 var r = (pt(rn, e) ? e : "LAZY") === tn.when.EAGER ? on : rn;
22849 qt.traceResolvePath(this._path, e, t);
22850 var i = function(e, t) {
22851 return function(r) {
22852 return pt(e, n.getPolicy(r)[t])
22855 o = this._path.reduce(function(e, o) {
22856 var a = o.resolvables.filter(i(r, "when")),
22857 s = a.filter(i(["NOWAIT"], "async")),
22858 c = a.filter(Re(i(["NOWAIT"], "async"))),
22859 l = n.subContext(o.state),
22861 return e.get(l, t).then(function(t) {
22868 return s.forEach(u), e.concat(c.map(u))
22870 return ot.$q.all(o)
22871 }, e.prototype.injector = function() {
22872 return this._injector || (this._injector = new cn(this))
22873 }, e.prototype.findNode = function(e) {
22874 return w(this._path, function(t) {
22875 return pt(t.resolvables, e)
22877 }, e.prototype.getDependencies = function(e) {
22879 n = this.findNode(e),
22880 r = (Qt.subPath(this._path, function(e) {
22882 }) || this._path).reduce(function(e, t) {
22883 return e.concat(t.resolvables)
22884 }, []).filter(function(t) {
22887 return e.deps.map(function(e) {
22888 var n = r.filter(function(t) {
22889 return t.token === e
22891 if (n.length) return M(n);
22892 var i = t.injector().getNative(e);
22893 if (!i) throw new Error("Could not find Dependency Injection token: " + Y(e));
22894 return new en(e, function() {
22902 this.context = e, this.native = this.get(an) || ot.$injector
22904 return e.prototype.get = function(e) {
22905 var t = this.context.getResolvable(e);
22907 if ("NOWAIT" === this.context.getPolicy(t).async) return t.get(this.context);
22908 if (!t.resolved) throw new Error("Resolvable async .get() not complete:" + Y(t.token));
22911 return this.native && this.native.get(e)
22912 }, e.prototype.getAsync = function(e) {
22913 var t = this.context.getResolvable(e);
22914 return t ? t.get(this.context) : ot.$q.when(this.native.get(e))
22915 }, e.prototype.getNative = function(e) {
22916 return this.native && this.native.get(e)
22921 function t(t, n, r) {
22923 if (this._deferred = ot.$q.defer(), this.promise = this._deferred.promise, this._registeredHooks = {}, this._hookBuilder = new Wt(this), this.isActive = function() {
22924 return i.router.globals.transition === i
22925 }, this.router = r, this._targetState = n, !n.valid()) throw new Error(n.error());
22926 this._options = dt({
22928 }, n.options()), this.$id = r.transitionService._transitionCount++;
22929 var o = Qt.buildToPath(t, n);
22930 this._treeChanges = Qt.treeChanges(t, o, this._options.reloadState), this.createTransitionHookRegFns();
22931 var a = this._hookBuilder.buildHooksForPhase(e.TransitionHookPhase.CREATE);
22932 Bt.invokeHooks(a, function() {
22934 }), this.applyViewConfigs(r)
22936 return t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.createTransitionHookRegFns = function() {
22938 this.router.transitionService._pluginapi._getEvents().filter(function(t) {
22939 return t.hookPhase !== e.TransitionHookPhase.CREATE
22940 }).forEach(function(e) {
22941 return R(t, t.router.transitionService, e)
22943 }, t.prototype.getHooks = function(e) {
22944 return this._registeredHooks[e]
22945 }, t.prototype.applyViewConfigs = function(e) {
22946 var t = this._treeChanges.entering.map(function(e) {
22949 Qt.applyViewConfigs(e.transitionService.$view, this._treeChanges.to, t)
22950 }, t.prototype.$from = function() {
22951 return M(this._treeChanges.from).state
22952 }, t.prototype.$to = function() {
22953 return M(this._treeChanges.to).state
22954 }, t.prototype.from = function() {
22955 return this.$from().self
22956 }, t.prototype.to = function() {
22957 return this.$to().self
22958 }, t.prototype.targetState = function() {
22959 return this._targetState
22960 }, t.prototype.is = function(e) {
22961 return e instanceof t ? this.is({
22963 from: e.$from().name
22964 }) : !(e.to && !I(this.$to(), e.to) || e.from && !I(this.$from(), e.from))
22965 }, t.prototype.params = function(e) {
22966 return void 0 === e && (e = "to"), Object.freeze(this._treeChanges[e].map(De("paramValues")).reduce(bt, {}))
22967 }, t.prototype.injector = function(e, t) {
22968 void 0 === t && (t = "to");
22969 var n = this._treeChanges[t];
22970 return e && (n = Qt.subPath(n, function(t) {
22971 return t.state === e || t.state.name === e
22972 })), new sn(n).injector()
22973 }, t.prototype.getResolveTokens = function(e) {
22974 return void 0 === e && (e = "to"), new sn(this._treeChanges[e]).getTokens()
22975 }, t.prototype.addResolvable = function(e, t) {
22976 void 0 === t && (t = ""), e = je(en)(e) ? e : new en(e);
22977 var n = "string" == typeof t ? t : t.name,
22978 r = this._treeChanges.to,
22979 i = w(r, function(e) {
22980 return e.state.name === n
22982 new sn(r).addResolvables([e], i.state)
22983 }, t.prototype.redirectedFrom = function() {
22984 return this._options.redirectedFrom || null
22985 }, t.prototype.originalTransition = function() {
22986 var e = this.redirectedFrom();
22987 return e && e.originalTransition() || this
22988 }, t.prototype.options = function() {
22989 return this._options
22990 }, t.prototype.entering = function() {
22991 return E(this._treeChanges.entering, De("state")).map(ln)
22992 }, t.prototype.exiting = function() {
22993 return E(this._treeChanges.exiting, De("state")).map(ln).reverse()
22994 }, t.prototype.retained = function() {
22995 return E(this._treeChanges.retained, De("state")).map(ln)
22996 }, t.prototype.views = function(e, t) {
22997 void 0 === e && (e = "entering");
22998 var n = this._treeChanges[e];
22999 return (n = t ? n.filter(Ne("state", t)) : n).map(De("views")).filter(u).reduce(Et, [])
23000 }, t.prototype.treeChanges = function(e) {
23001 return e ? this._treeChanges[e] : this._treeChanges
23002 }, t.prototype.redirect = function(e) {
23003 for (var t = 1, n = this; null != (n = n.redirectedFrom());)
23004 if (++t > 20) throw new Error("Too many consecutive Transition redirects (20+)");
23006 redirectedFrom: this,
23009 "url" === this.options().source && !1 !== e.options().location && (r.location = "replace");
23010 var i = dt({}, this.options(), e.options(), r);
23011 e = new Ut(e.identifier(), e.$state(), e.params(), i);
23012 var o = this.router.transitionService.create(this._treeChanges.from, e),
23013 a = this._treeChanges.entering,
23014 s = o._treeChanges.entering;
23015 return Qt.matching(s, a, Qt.nonDynamicParams).filter(Re(function(e) {
23016 return function(t) {
23017 return e && t.state.includes[e.name]
23019 }(e.options().reloadState))).forEach(function(e, t) {
23020 e.resolvables = a[t].resolvables
23022 }, t.prototype._changedParams = function() {
23023 var e = this._treeChanges;
23024 if (!(this._options.reload || e.exiting.length || e.entering.length || e.to.length !== e.from.length || k(e.to, e.from).map(function(e) {
23025 return e[0].state !== e[1].state
23026 }).reduce(wt, !1))) {
23027 var t = e.to.map(function(e) {
23028 return e.paramSchema
23030 n = [e.to, e.from].map(function(e) {
23031 return e.map(function(e) {
23032 return e.paramValues
23035 return k(t, n[0], n[1]).map(function(e) {
23039 return Zt.changed(t, n, r)
23042 }, t.prototype.dynamic = function() {
23043 var e = this._changedParams();
23044 return !!e && e.map(function(e) {
23047 }, t.prototype.ignored = function() {
23048 return !!this._ignoredReason()
23049 }, t.prototype._ignoredReason = function() {
23050 var e = this.router.globals.transition,
23051 t = this._options.reloadState,
23052 n = function(e, n) {
23053 if (e.length !== n.length) return !1;
23054 var r = Qt.matching(e, n);
23055 return e.length === r.filter(function(e) {
23056 return !t || !e.state.includes[t.name]
23059 r = this.treeChanges(),
23060 i = e && e.treeChanges();
23061 return i && n(i.to, r.to) && n(i.exiting, r.exiting) ? "SameAsPending" : 0 === r.exiting.length && 0 === r.entering.length && n(r.from, r.to) ? "SameAsCurrent" : void 0
23062 }, t.prototype.run = function() {
23064 n = Bt.runAllHooks,
23066 return t._hookBuilder.buildHooksForPhase(e)
23068 i = r(e.TransitionHookPhase.BEFORE);
23069 return Bt.invokeHooks(i, function() {
23070 var e = t.router.globals;
23071 return e.lastStartedTransitionId = t.$id, e.transition = t, e.transitionHistory.enqueue(t), qt.traceTransitionStart(t), ot.$q.when(void 0)
23072 }).then(function() {
23073 var t = r(e.TransitionHookPhase.RUN);
23074 return Bt.invokeHooks(t, function() {
23075 return ot.$q.when(void 0)
23077 }).then(function() {
23078 qt.traceSuccess(t.$to(), t), t.success = !0, t._deferred.resolve(t.to()), n(r(e.TransitionHookPhase.SUCCESS))
23080 qt.traceError(i, t), t.success = !1, t._deferred.reject(i), t._error = i, n(r(e.TransitionHookPhase.ERROR))
23082 }, t.prototype.valid = function() {
23083 return !this.error() || void 0 !== this.success
23084 }, t.prototype.abort = function() {
23085 ze(this.success) && (this._aborted = !0)
23086 }, t.prototype.error = function() {
23087 var e = this.$to();
23088 if (e.self.abstract) return "Cannot transition to abstract state '" + e.name + "'";
23089 var t = e.parameters(),
23091 r = t.filter(function(e) {
23092 return !e.validates(n[e.id])
23094 return r.length ? "Param values not valid for state '" + e.name + "'. Invalid params: [ " + r.map(function(e) {
23096 }).join(", ") + " ]" : !1 === this.success ? this._error : void 0
23097 }, t.prototype.toString = function() {
23098 var e = this.from(),
23101 return null !== e["#"] && void 0 !== e["#"] ? e : y(e, ["#"])
23103 return "Transition#" + this.$id + "( '" + (Qe(e) ? e.name : e) + "'" + ct(n(this._treeChanges.from.map(De("paramValues")).reduce(bt, {}))) + " -> " + (this.valid() ? "" : "(X) ") + "'" + (Qe(t) ? t.name : t) + "'" + ct(n(this.params())) + " )"
23104 }, t.diToken = t, t
23108 var t = Rt.isRejectionPromise;
23109 return (dn = dn || c([
23110 [Re(We), Fe("undefined")],
23112 [rt, Fe("[Promise]")],
23114 return e._transitionRejection.toString()
23116 [je(Rt), s("toString")],
23117 [je(un), s("toString")],
23118 [je(en), s("toString")],
23124 return function(t) {
23125 if (!t) return ["", ""];
23126 var n = t.indexOf(e);
23127 return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
23132 this.enqueue = !0, this.typeQueue = [], this.defaultTypes = b(e.prototype, ["hash", "string", "query", "path", "int", "bool", "date", "json", "any"]);
23133 this.types = ht(E(this.defaultTypes, function(e, t) {
23139 return e.prototype.dispose = function() {
23141 }, e.prototype.type = function(e, t, n) {
23142 if (!We(t)) return this.types[e];
23143 if (this.types.hasOwnProperty(e)) throw new Error("A type named '" + e + "' has already been defined.");
23144 return this.types[e] = new Yt(dt({
23146 }, t)), n && (this.typeQueue.push({
23149 }), this.enqueue || this._flushTypeQueue()), this
23150 }, e.prototype._flushTypeQueue = function() {
23151 for (; this.typeQueue.length;) {
23152 var e = this.typeQueue.shift();
23153 if (e.pattern) throw new Error("You cannot override a type's .pattern at runtime.");
23154 dt(this.types[e.name], ot.$injector.invoke(e.def))
23159 var e = function(e) {
23160 var t = function(e) {
23161 return null != e ? e.toString() : e
23168 equals: function(e, t) {
23172 return dt({}, n, e)
23184 decode: function(e) {
23185 return parseInt(e, 10)
23188 return !Ge(e) && this.decode(e.toString()) === e
23193 encode: function(e) {
23196 decode: function(e) {
23197 return 0 !== parseInt(e, 10)
23203 encode: function(e) {
23204 return this.is(e) ? [e.getFullYear(), ("0" + (e.getMonth() + 1)).slice(-2), ("0" + e.getDate()).slice(-2)].join("-") : void 0
23206 decode: function(e) {
23207 if (this.is(e)) return e;
23208 var t = this.capture.exec(e);
23209 return t ? new Date(t[1], t[2] - 1, t[3]) : void 0
23212 return e instanceof Date && !isNaN(e.valueOf())
23214 equals: function(e, t) {
23215 return ["getFullYear", "getMonth", "getDate"].reduce(function(n, r) {
23216 return n && e[r]() === t[r]()
23219 pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,
23220 capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/
23239 var mn, gn = function() {
23241 void 0 === e && (e = {}), dt(this, e)
23243 return e.prototype.$inherit = function(e, t, n) {
23244 var r, i = v(t, n),
23248 if (i[s] && i[s].params && (r = Object.keys(i[s].params)).length)
23249 for (var c in r) a.indexOf(r[c]) >= 0 || (a.push(r[c]), o[r[c]] = this[r[c]]);
23250 return dt({}, o, e)
23254 if (!Xe(e)) return !1;
23255 var t = "^" === e.charAt(0);
23257 val: t ? e.substring(1) : e,
23261 bn = function(e, t) {
23262 return function(n) {
23264 r && r.url && r.name && r.name.match(/\.\*\*$/) && (r.url += "{remainder:any}");
23267 a = i ? e.compile(i.val, {
23268 params: n.params || {},
23269 paramMap: function(e, t) {
23270 return !1 === r.reloadOnSearch && t && (e = dt(e || {}, {
23275 if (!a) return null;
23276 if (!e.isMatcher(a)) throw new Error("Invalid url '" + a + "' in state '" + n + "'");
23277 return i && i.root ? a : (o && o.navigable || t()).url.append(a)
23281 return function(t) {
23282 return !e(t) && t.url ? t : t.parent ? t.parent.navigable : null
23286 return function(t) {
23287 var n = t.url && t.url.parameters({
23290 r = $t(yt(y(t.params || {}, n.map(De("id"))), function(t, n) {
23291 return e.fromConfig(n, null, t)
23293 return n.concat(r).map(function(e) {
23306 return "" === e.name
23311 parent: [function(t) {
23312 return i(t) ? null : e.find(n.parentName(t)) || r()
23316 navigable: [yn(i)],
23317 params: [$n(t.paramFactory)],
23324 return e.prototype.builder = function(e, t) {
23325 var n = this.builders,
23327 return Xe(e) && !We(t) ? r.length > 1 ? r : r[0] : Xe(e) && Ke(t) ? (n[e] = r, n[e].push(t), function() {
23328 return n[e].splice(n[e].indexOf(t, 1)) && null
23330 }, e.prototype.build = function(e) {
23334 i = this.parentName(e);
23335 if (i && !n.find(i, void 0, !1)) return null;
23337 if (r.hasOwnProperty(o)) {
23338 var a = r[o].reduce(function(e, t) {
23339 return function(n) {
23346 }, e.prototype.parentName = function(e) {
23347 var t = e.name || "",
23349 if ("**" === n.pop() && n.pop(), n.length) {
23350 if (e.parent) throw new Error("States that specify the 'parent:' property should not have a '.' in their name (" + t + ")");
23353 return e.parent ? Xe(e.parent) ? e.parent : e.parent.name : ""
23354 }, e.prototype.name = function(e) {
23356 if (-1 !== t.indexOf(".") || !e.parent) return t;
23357 var n = Xe(e.parent) ? e.parent : e.parent.name;
23358 return n ? n + "." + t : t
23365 return e.prototype.isRelative = function(e) {
23366 return 0 === (e = e || "").indexOf(".") || 0 === e.indexOf("^")
23367 }, e.prototype.find = function(e, t, n) {
23368 if (void 0 === n && (n = !0), e || "" === e) {
23370 i = r ? e : e.name;
23371 this.isRelative(i) && (i = this.resolvePath(i, t));
23372 var o = this._states[i];
23373 if (o && (r || !(r || o !== e && o.self !== e))) return o;
23375 var a = $t(this._states).filter(function(e) {
23376 return e.__stateObjectCache.nameGlob && e.__stateObjectCache.nameGlob.matches(i)
23378 return a.length > 1 && console.log("stateMatcher.find: Found multiple matches for " + i + " using glob: ", a.map(function(e) {
23383 }, e.prototype.resolvePath = function(e, t) {
23384 if (!t) throw new Error("No reference point given for path '" + e + "'");
23385 for (var n = this.find(t), r = e.split("."), i = 0, o = r.length, a = n; i < o; i++)
23386 if ("" !== r[i] || 0 !== i) {
23387 if ("^" !== r[i]) break;
23388 if (!a.parent) throw new Error("Path '" + e + "' not valid for state '" + n.name + "'");
23391 var s = r.slice(i).join(".");
23392 return a.name + (a.name && s ? "." : "") + s
23396 function e(e, t, n, r, i) {
23397 this.$registry = e, this.$urlRouter = t, this.states = n, this.builder = r, this.listeners = i, this.queue = [], this.matcher = e.matcher
23399 return e.prototype.dispose = function() {
23401 }, e.prototype.register = function(e) {
23402 var t = this.queue,
23405 if (!Xe(r)) throw new Error("State must have a valid name");
23406 if (this.states.hasOwnProperty(r) || pt(t.map(De("name")), r)) throw new Error("State '" + r + "' is already defined");
23407 return t.push(n), this.flush(), n
23408 }, e.prototype.flush = function() {
23409 for (var e = this, t = this, n = t.queue, r = t.states, i = t.builder, o = [], a = [], s = {}, c = function(t) {
23410 return e.states.hasOwnProperty(t) && e.states[t]
23411 }; n.length > 0;) {
23418 if (h && h.name === u) throw new Error("State '" + u + "' is already defined");
23419 var p = c(u + ".**");
23420 p && this.$registry.deregister(p), r[u] = l, this.attachRoute(l), f >= 0 && a.splice(f, 1), o.push(l)
23423 if (s[u] = n.length, f >= 0 && m === n.length) return n.push(l), r;
23424 f < 0 && a.push(l), n.push(l)
23427 return o.length && this.listeners.forEach(function(e) {
23428 return e("registered", o.map(function(e) {
23432 }, e.prototype.attachRoute = function(e) {
23433 !e.abstract && e.url && this.$urlRouter.rule(this.$urlRouter.urlRuleFactory.create(e))
23438 this._router = e, this.states = {}, this.listeners = [], this.matcher = new wn(this.states), this.builder = new _n(this.matcher, e.urlMatcherFactory), this.stateQueue = new En(this, e.urlRouter, this.states, this.builder, this.listeners), this._registerRoot()
23440 return e.prototype._registerRoot = function() {
23454 (this._root = this.stateQueue.register(e)).navigable = null
23455 }, e.prototype.dispose = function() {
23457 this.stateQueue.dispose(), this.listeners = [], this.get().forEach(function(t) {
23458 return e.get(t) && e.deregister(t)
23460 }, e.prototype.onStatesChanged = function(e) {
23461 return this.listeners.push(e),
23463 mt(this.listeners)(e)
23465 }, e.prototype.root = function() {
23467 }, e.prototype.register = function(e) {
23468 return this.stateQueue.register(e)
23469 }, e.prototype._deregisterTree = function(e) {
23471 n = this.get().map(function(e) {
23475 var t = n.filter(function(t) {
23476 return -1 !== e.indexOf(t.parent)
23478 return 0 === t.length ? t : t.concat(r(t))
23481 o = [e].concat(i).reverse();
23482 return o.forEach(function(e) {
23483 var n = t._router.urlRouter;
23484 n.rules().filter(Ne("state", e)).forEach(n.removeRule.bind(n)), delete t.states[e.name]
23486 }, e.prototype.deregister = function(e) {
23487 var t = this.get(e);
23488 if (!t) throw new Error("Can't deregister state; not found: " + e);
23489 var n = this._deregisterTree(t.$$state());
23490 return this.listeners.forEach(function(e) {
23491 return e("deregistered", n.map(function(e) {
23495 }, e.prototype.get = function(e, t) {
23497 if (0 === arguments.length) return Object.keys(this.states).map(function(e) {
23498 return n.states[e].self
23500 var r = this.matcher.find(e, t);
23501 return r && r.self || null
23502 }, e.prototype.decorator = function(e, t) {
23503 return this.builder.builder(e, t)
23506 xn = function(e, t, n) {
23507 return e[t] = e[t] || n()
23511 function t(e, n, r, i) {
23513 this.config = i, this._cache = {
23515 }, this._children = [], this._params = [], this._segments = [], this._compiled = [], this.pattern = e, this.config = g(this.config, {
23518 caseInsensitive: !1,
23521 for (var a, s, c, l = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, d = /([:]?)([\w\[\].-]+)|\{([\w\[\].-]+)(?:\:\s*((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, f = 0, h = [], p = function(n) {
23522 if (!t.nameValidator.test(n)) throw new Error("Invalid parameter name '" + n + "' in pattern '" + e + "'");
23523 if (w(o._params, Ne("id", n))) throw new Error("Duplicate parameter name '" + n + "' in pattern '" + e + "'")
23524 }, m = function(t, r) {
23525 var i = t[2] || t[3],
23526 a = r ? t[4] : t[4] || ("*" === t[1] ? "[\\s\\S]*" : null);
23530 cfg: o.config.params[i],
23531 segment: e.substring(f, t.index),
23532 type: a ? n.type(a) || function(e) {
23533 return ht(n.type(r ? "query" : "path"), {
23534 pattern: new RegExp(e, o.config.caseInsensitive ? "i" : void 0)
23539 (a = l.exec(e)) && !((s = m(a, !1)).segment.indexOf("?") >= 0);) p(s.id), this._params.push(r.fromPath(s.id, s.type, this.config.paramMap(s.cfg, !1))), this._segments.push(s.segment), h.push([s.segment, M(this._params)]), f = l.lastIndex;
23540 var v = (c = e.substring(f)).indexOf("?");
23542 var b = c.substring(v);
23543 if (c = c.substring(0, v), b.length > 0)
23544 for (f = 0; a = d.exec(b);) p((s = m(a, !0)).id), this._params.push(r.fromSearch(s.id, s.type, this.config.paramMap(s.cfg, !0))), f = l.lastIndex
23546 this._segments.push(c), this._compiled = h.map(function(e) {
23547 return ne.apply(null, e)
23550 return t.prototype.append = function(e) {
23551 return this._children.push(e), e._cache = {
23552 path: this._cache.path.concat(e),
23556 }, t.prototype.isRoot = function() {
23557 return this._cache.path[0] === this
23558 }, t.prototype.toString = function() {
23559 return this.pattern
23560 }, t.prototype.exec = function(e, t, n, r) {
23562 void 0 === t && (t = {}), void 0 === r && (r = {});
23563 var o = xn(this._cache, "pattern", function() {
23564 return new RegExp(["^", kt(i._cache.path.map(De("_compiled"))).join(""), !1 === i.config.strict ? "/?" : "", "$"].join(""), i.config.caseInsensitive ? "i" : void 0)
23566 if (!o) return null;
23567 var a = this.parameters(),
23568 s = a.filter(function(e) {
23569 return !e.isSearch()
23571 c = a.filter(function(e) {
23572 return e.isSearch()
23574 l = this._cache.path.map(function(e) {
23575 return e._segments.length - 1
23576 }).reduce(function(e, t) {
23580 if (l !== o.length - 1) throw new Error("Unbalanced capture group in route '" + this.pattern + "'");
23581 for (var d = 0; d < l; d++) {
23582 for (var f = s[d], h = o[d + 1], p = 0; p < f.replace.length; p++) f.replace[p].from === h && (h = f.replace[p].to);
23583 h && !0 === f.array && (h = function(e) {
23584 var t = function(e) {
23585 return e.split("").reverse().join("")
23587 return E(E(t(e).split(/-(?!\\)/), t), function(e) {
23588 return e.replace(/\\-/g, "-")
23590 }(h)), We(h) && (h = f.type.decode(h)), u[f.id] = f.value(h)
23592 return c.forEach(function(e) {
23593 for (var n = t[e.id], r = 0; r < e.replace.length; r++) e.replace[r].from === n && (n = e.replace[r].to);
23594 We(n) && (n = e.type.decode(n)), u[e.id] = e.value(n)
23595 }), n && (u["#"] = n), u
23596 }, t.prototype.parameters = function(e) {
23597 return void 0 === e && (e = {}), !1 === e.inherit ? this._params : kt(this._cache.path.map(function(e) {
23600 }, t.prototype.parameter = function(e, t) {
23602 void 0 === t && (t = {});
23603 var r = this._cache.parent;
23604 return function() {
23605 for (var t = 0, r = n._params; t < r.length; t++) {
23607 if (i.id === e) return i
23609 }() || !1 !== t.inherit && r && r.parameter(e, t) || null
23610 }, t.prototype.validates = function(e) {
23611 var t = function(e, t) {
23612 return !e || e.validates(t)
23614 return e = e || {}, this.parameters().filter(function(t) {
23615 return e.hasOwnProperty(t.id)
23616 }).map(function(n) {
23617 return t(n, e[n.id])
23619 }, t.prototype.format = function(e) {
23621 var n = t.value(e[t.id]),
23622 r = t.validates(n),
23623 i = t.isDefaultValue(n);
23629 squash: !!i && t.squash,
23630 encoded: t.type.encode(n)
23633 void 0 === e && (e = {});
23634 var r = this._cache.path,
23635 i = r.map(t.pathSegmentsAndParams).reduce(Et, []).map(function(e) {
23636 return Xe(e) ? e : n(e)
23638 o = r.map(t.queryParams).reduce(Et, []).map(n);
23639 if (i.concat(o).filter(function(e) {
23640 return !1 === e.isValid
23641 }).length) return null;
23642 var a = i.reduce(function(e, n) {
23643 if (Xe(n)) return e + n;
23647 return !0 === r ? e.match(/\/$/) ? e.slice(0, -1) : e : Xe(r) ? e + r : !1 !== r ? e : null == i ? e : Je(i) ? e + E(i, t.encodeDashes).join("-") : o.raw ? e + i : e + encodeURIComponent(i)
23649 s = o.map(function(e) {
23653 i = e.isDefaultValue;
23654 if (!(null == r || i && !1 !== n) && (Je(r) || (r = [r]), 0 !== r.length)) return t.raw || (r = E(r, encodeURIComponent)), r.map(function(e) {
23655 return t.id + "=" + e
23657 }).filter(u).reduce(Et, []).join("&");
23658 return a + (s ? "?" + s : "") + (e["#"] ? "#" + e["#"] : "")
23659 }, t.encodeDashes = function(e) {
23660 return encodeURIComponent(e).replace(/-/g, function(e) {
23661 return "%5C%" + e.charCodeAt(0).toString(16).toUpperCase()
23663 }, t.pathSegmentsAndParams = function(t) {
23664 return k(t._segments, t._params.filter(function(t) {
23665 return t.location === e.DefType.PATH
23666 }).concat(void 0)).reduce(Et, []).filter(function(e) {
23667 return "" !== e && We(e)
23669 }, t.queryParams = function(t) {
23670 return t._params.filter(function(t) {
23671 return t.location === e.DefType.SEARCH
23673 }, t.compare = function(e, n) {
23674 var r = function(e) {
23675 return e._cache.segments = e._cache.segments || e._cache.path.map(t.pathSegmentsAndParams).reduce(Et, []).reduce(K, []).map(function(e) {
23676 return Xe(e) ? kn(e) : e
23680 return e._cache.weights = e._cache.weights || r(e).map(function(e) {
23681 return "/" === e ? 1 : Xe(e) ? 2 : e instanceof Zt ? 3 : void 0
23686 ! function(e, t, n) {
23687 for (var r = Math.max(e.length, t.length); e.length < r;) e.push(n);
23688 for (; t.length < r;) t.push(n)
23690 var s, c, l = k(o, a);
23691 for (c = 0; c < l.length; c++)
23692 if (0 != (s = l[c][0] - l[c][1])) return s;
23694 }, t.nameValidator = /^\w+([-.]+\w+)*(?:\[\])?$/, t
23699 this.paramTypes = new pn, this._isCaseInsensitive = !1, this._isStrictMode = !0, this._defaultSquashPolicy = !1, this._getConfig = function(e) {
23701 strict: t._isStrictMode,
23702 caseInsensitive: t._isCaseInsensitive
23704 }, this.paramFactory = {
23705 fromConfig: function(n, r, i) {
23706 return new Zt(n, r, i, e.DefType.CONFIG, t)
23708 fromPath: function(n, r, i) {
23709 return new Zt(n, r, i, e.DefType.PATH, t)
23711 fromSearch: function(n, r, i) {
23712 return new Zt(n, r, i, e.DefType.SEARCH, t)
23719 return t.prototype.caseInsensitive = function(e) {
23720 return this._isCaseInsensitive = We(e) ? e : this._isCaseInsensitive
23721 }, t.prototype.strictMode = function(e) {
23722 return this._isStrictMode = We(e) ? e : this._isStrictMode
23723 }, t.prototype.defaultSquashPolicy = function(e) {
23724 if (We(e) && !0 !== e && !1 !== e && !Xe(e)) throw new Error("Invalid squash policy: " + e + ". Valid policies: false, true, arbitrary-string");
23725 return this._defaultSquashPolicy = We(e) ? e : this._defaultSquashPolicy
23726 }, t.prototype.compile = function(e, t) {
23727 return new Tn(e, this.paramTypes, this.paramFactory, this._getConfig(t))
23728 }, t.prototype.isMatcher = function(e) {
23729 if (!Qe(e)) return !1;
23731 return ut(Tn.prototype, function(n, r) {
23732 Ke(n) && (t = t && We(e[r]) && Ke(e[r]))
23734 }, t.prototype.type = function(e, t, n) {
23735 var r = this.paramTypes.type(e, t, n);
23736 return We(t) ? this : r
23737 }, t.prototype.$get = function() {
23738 return this.paramTypes.enqueue = !1, this.paramTypes._flushTypeQueue(), this
23739 }, t.prototype.dispose = function() {
23740 this.paramTypes.dispose()
23747 return e.prototype.compile = function(e) {
23748 return this.router.urlMatcherFactory.compile(e)
23749 }, e.prototype.create = function(e, t) {
23753 return r(n.compile(e))
23755 [je(Tn), function(e) {
23756 return n.fromUrlMatcher(e, t)
23759 return n.fromState(e, n.router)
23761 [je(RegExp), function(e) {
23762 return n.fromRegExp(e, t)
23765 return new An(e, t)
23769 if (!i) throw new Error("invalid 'what' in when()");
23771 }, e.prototype.fromUrlMatcher = function(e, t) {
23773 Xe(t) && (t = this.router.urlMatcherFactory.compile(t)), je(Tn)(t) && (n = function(e) {
23778 matchPriority: function(t) {
23779 var n = e.parameters().filter(function(e) {
23780 return e.isOptional
23782 return n.length ? n.filter(function(e) {
23784 }).length / n.length : 1e-6
23788 return dt(new An(function(t) {
23789 var n = e.exec(t.path, t.search, t.hash);
23790 return e.validates(n) && n
23792 }, e.prototype.fromState = function(e, t) {
23797 return dt(this.fromUrlMatcher(e.url, function(n) {
23798 var r = t.stateService,
23800 r.href(e, n) !== r.href(i.current, i.params) && r.transitionTo(e, n, {
23805 }, e.prototype.fromRegExp = function(e, t) {
23806 if (e.global || e.sticky) throw new Error("Rule RegExp must not be global or sticky");
23807 var n = Xe(t) ? function(e) {
23808 return t.replace(/\$(\$|\d{1,2})/, function(t, n) {
23809 return e["$" === n ? 0 : Number(n)]
23816 return dt(new An(function(t) {
23817 return e.exec(t.path)
23819 }, e.isUrlRule = function(e) {
23820 return e && ["type", "match", "handler"].every(function(t) {
23826 return function(e, t) {
23828 this.match = e, this.type = "RAW", this.matchPriority = function(e) {
23830 }, this.handler = t || u
23833 On = function(e, t) {
23834 return (t.priority || 0) - (e.priority || 0)
23836 Dn = function(e, t) {
23844 return (n[e.type] || 0) - (n[t.type] || 0)
23846 Nn = function(e, t) {
23847 return e.urlMatcher && t.urlMatcher ? Tn.compare(e.urlMatcher, t.urlMatcher) : 0
23849 In = function(e, t) {
23854 return n[e.type] && n[t.type] ? 0 : (e.$id || 0) - (t.$id || 0)
23856 mn = function(e, t) {
23858 return 0 !== n ? n : 0 !== (n = Dn(e, t)) ? n : 0 !== (n = Nn(e, t)) ? n : In(e, t)
23860 var Rn = function() {
23862 this._sortFn = mn, this._rules = [], this.interceptDeferred = !1, this._id = 0, this._sorted = !1, this._router = t, this.urlRuleFactory = new Sn(t), f(Fe(e.prototype), this, Fe(this))
23864 return e.prototype.dispose = function() {
23865 this.listen(!1), this._rules = [], delete this._otherwiseFn
23866 }, e.prototype.sort = function(e) {
23867 this._rules = this.stableSort(this._rules, this._sortFn = e || this._sortFn), this._sorted = !0
23868 }, e.prototype.ensureSorted = function() {
23869 this._sorted || this.sort()
23870 }, e.prototype.stableSort = function(e, t) {
23871 var n = e.map(function(e, t) {
23877 return n.sort(function(e, n) {
23878 var r = t(e.elem, n.elem);
23879 return 0 === r ? e.idx - n.idx : r
23880 }), n.map(function(e) {
23883 }, e.prototype.match = function(e) {
23885 this.ensureSorted(), e = dt({
23890 var n = this.rules();
23891 this._otherwiseFn && n.push(this._otherwiseFn);
23892 for (var r, i = 0; i < n.length && (!r || 0 === this._sortFn(n[i], r.rule)); i++) {
23893 var o = function(n) {
23894 var r = n.match(e, t._router);
23898 weight: n.matchPriority(r)
23901 r = !r || o && o.weight > r.weight ? o : r
23904 }, e.prototype.sync = function(e) {
23905 if (!e || !e.defaultPrevented) {
23906 var t = this._router,
23908 r = t.stateService,
23911 search: n.search(),
23917 return n.url(e, !0)
23919 [Ut.isDef, function(e) {
23920 return r.go(e.state, e.params, e.options)
23922 [je(Ut), function(e) {
23923 return r.go(e.state(), e.params(), e.options())
23925 ])(o && o.rule.handler(o.match, i, t))
23927 }, e.prototype.listen = function(e) {
23929 if (!1 !== e) return this._stopFn = this._stopFn || this._router.urlService.onChange(function(e) {
23932 this._stopFn && this._stopFn(), delete this._stopFn
23933 }, e.prototype.update = function(e) {
23934 var t = this._router.locationService;
23935 e ? this.location = t.path() : t.path() !== this.location && t.url(this.location, !0)
23936 }, e.prototype.push = function(e, t, n) {
23937 var r = n && !!n.replace;
23938 this._router.urlService.url(e.format(t || {}), r)
23939 }, e.prototype.href = function(e, t, n) {
23940 var r = e.format(t);
23941 if (null == r) return null;
23945 var i = this._router.urlService.config,
23947 if (o || null === r || (r = "#" + i.hashPrefix() + r), r = re(r, o, n.absolute, i.baseHref()), !n.absolute || !r) return r;
23948 var a = !o && r ? "/" : "",
23950 return s = 80 === s || 443 === s ? "" : ":" + s, [i.protocol(), "://", i.host(), s, a, r].join("")
23951 }, e.prototype.rule = function(e) {
23953 if (!Sn.isUrlRule(e)) throw new Error("invalid rule");
23954 return e.$id = this._id++, e.priority = e.priority || 0, this._rules.push(e), this._sorted = !1,
23956 return t.removeRule(e)
23958 }, e.prototype.removeRule = function(e) {
23960 }, e.prototype.rules = function() {
23961 return this.ensureSorted(), this._rules.slice()
23962 }, e.prototype.otherwise = function(e) {
23964 this._otherwiseFn = this.urlRuleFactory.create(Fe(!0), t), this._sorted = !1
23965 }, e.prototype.initial = function(e) {
23967 this.rule(this.urlRuleFactory.create(function(e, t) {
23968 return 0 === t.globals.transitionHistory.size() && !!/^\/?$/.exec(e.path)
23970 }, e.prototype.when = function(e, t, n) {
23971 var r = this.urlRuleFactory.create(e, t);
23972 return We(n && n.priority) && (r.priority = n.priority), this.rule(r), r
23973 }, e.prototype.deferIntercept = function(e) {
23974 void 0 === e && (e = !0), this.interceptDeferred = e
23980 this._uiViews = [], this._viewConfigs = [], this._viewConfigFactories = {}, this._pluginapi = {
23981 _rootViewContext: this._rootViewContext.bind(this),
23982 _viewConfigFactory: this._viewConfigFactory.bind(this),
23983 _registeredUIViews: function() {
23986 _activeViewConfigs: function() {
23987 return e._viewConfigs
23991 return e.prototype._rootViewContext = function(e) {
23992 return this._rootContext = e || this._rootContext
23993 }, e.prototype._viewConfigFactory = function(e, t) {
23994 this._viewConfigFactories[e] = t
23995 }, e.prototype.createViewConfig = function(e, t) {
23996 var n = this._viewConfigFactories[t.$type];
23997 if (!n) throw new Error("ViewService: No view config factory registered for type " + t.$type);
23999 return Je(r) ? r : [r]
24000 }, e.prototype.deactivateViewConfig = function(e) {
24001 qt.traceViewServiceEvent("<- Removing", e), mt(this._viewConfigs, e)
24002 }, e.prototype.activateViewConfig = function(e) {
24003 qt.traceViewServiceEvent("-> Registering", e), this._viewConfigs.push(e)
24004 }, e.prototype.sync = function() {
24006 for (var t = e.viewDecl.$context, n = 0; ++n && t.parent;) t = t.parent;
24010 i = this._uiViews.map(function(e) {
24013 o = n(function(e, t, n, r) {
24014 return t * (e(n) - e(r))
24016 a = this._uiViews.sort(o(function(e) {
24017 var t = function(e) {
24018 return e && e.parent ? t(e.parent) + 1 : 1
24020 return 1e4 * e.fqn.split(".").length + t(e.creationContext)
24021 }, 1)).map(function(n) {
24022 var a = r._viewConfigs.filter(e.matches(i, n));
24023 return a.length > 1 && a.sort(o(t, -1)), [n, a[0]]
24025 qt.traceViewSync(a), a.forEach(function(e) {
24027 n = e[1]; - 1 !== r._uiViews.indexOf(t) && t.configUpdated(n)
24029 }, e.prototype.registerUIView = function(e) {
24030 qt.traceViewServiceUIViewEvent("-> Registering", e);
24031 var t = this._uiViews;
24032 return t.filter(function(t) {
24033 return t.fqn === e.fqn && t.$type === e.$type
24034 }).length && qt.traceViewServiceUIViewEvent("!!!! duplicate uiView named:", e), t.push(e), this.sync(),
24036 -1 !== t.indexOf(e) ? (qt.traceViewServiceUIViewEvent("<- Deregistering", e), mt(t)(e)) : qt.traceViewServiceUIViewEvent("Tried removing non-registered uiView", e)
24038 }, e.prototype.available = function() {
24039 return this._uiViews.map(De("fqn"))
24040 }, e.prototype.active = function() {
24041 return this._uiViews.filter(De("$config")).map(De("name"))
24042 }, e.normalizeUIViewTarget = function(e, t) {
24043 void 0 === t && (t = "");
24044 var n = t.split("@"),
24045 r = n[0] || "$default",
24046 i = Xe(n[1]) ? n[1] : "^",
24047 o = /^(\^(?:\.\^)*)\.(.*$)/.exec(r);
24048 return o && (i = o[1], r = o[2]), "!" === r.charAt(0) && (r = r.substr(1), i = ""), /^(\^(?:\.\^)*)$/.exec(i) ? i = i.split(".").reduce(function(e, t) {
24050 }, e).name : "." === i && (i = e.name), {
24052 uiViewContextAnchor: i
24054 }, e.matches = function(e, t) {
24055 return function(n) {
24056 if (t.$type !== n.viewDecl.$type) return !1;
24057 var r = n.viewDecl,
24058 i = r.$uiViewName.split("."),
24059 o = t.fqn.split(".");
24060 if (!ft(i, o.slice(0 - i.length))) return !1;
24061 var a = 1 - i.length || void 0,
24062 s = o.slice(0, a).join("."),
24063 c = e[s].creationContext;
24064 return r.$uiViewContextAnchor === (c && c.name)
24070 this.params = new gn, this.lastStartedTransitionId = -1, this.transitionHistory = new Nt([], 1), this.successfulTransitions = new Nt([], 1)
24072 return e.prototype.dispose = function() {
24073 this.transitionHistory.clear(), this.successfulTransitions.clear(), this.transition = null
24077 return e.reduce(function(e, t) {
24078 return e[t] = it(t), e
24083 Ln = ["url", "path", "search", "hash", "onChange"],
24084 Fn = ["port", "protocol", "host", "baseHref", "html5Mode", "hashPrefix"],
24085 qn = ["type", "caseInsensitive", "strictMode", "defaultSquashPolicy"],
24086 Un = ["sort", "when", "initial", "otherwise", "rules", "rule", "removeRule"],
24087 Vn = ["deferIntercept", "listen", "sync", "match"],
24090 void 0 === t && (t = !0), this.router = e, this.rules = {}, this.config = {};
24091 var n = function() {
24092 return e.locationService
24094 f(n, this, n, Ln, t);
24095 var r = function() {
24096 return e.locationConfig
24098 f(r, this.config, r, Fn, t);
24099 var i = function() {
24100 return e.urlMatcherFactory
24102 f(i, this.config, i, qn);
24103 var o = function() {
24106 f(o, this.rules, o, Un), f(o, this, o, Vn)
24108 return e.prototype.url = function(e, t, n) {}, e.prototype.path = function() {}, e.prototype.search = function() {}, e.prototype.hash = function() {}, e.prototype.onChange = function(e) {}, e.prototype.parts = function() {
24111 search: this.search(),
24114 }, e.prototype.dispose = function() {}, e.prototype.sync = function(e) {}, e.prototype.listen = function(e) {}, e.prototype.deferIntercept = function(e) {}, e.prototype.match = function(e) {}, e.locationServiceStub = jn(Ln), e.locationConfigStub = jn(Fn), e
24119 void 0 === e && (e = Bn.locationServiceStub), void 0 === t && (t = Bn.locationConfigStub), this.locationService = e, this.locationConfig = t, this.$id = zn++, this._disposed = !1, this._disposables = [], this.trace = qt, this.viewService = new Pn, this.transitionService = new $r(this), this.globals = new Hn, this.urlMatcherFactory = new Mn, this.urlRouter = new Rn(this), this.stateRegistry = new Cn(this), this.stateService = new _r(this), this.urlService = new Bn(this), this._plugins = {}, this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()), this.globals.$current = this.stateRegistry.root(), this.globals.current = this.globals.$current.self, this.disposable(this.globals), this.disposable(this.stateService), this.disposable(this.stateRegistry), this.disposable(this.transitionService), this.disposable(this.urlRouter), this.disposable(e), this.disposable(t)
24121 return e.prototype.disposable = function(e) {
24122 this._disposables.push(e)
24123 }, e.prototype.dispose = function(e) {
24125 e && Ke(e.dispose) ? e.dispose(this) : (this._disposed = !0, this._disposables.slice().forEach(function(e) {
24127 "function" == typeof e.dispose && e.dispose(t), mt(t._disposables, e)
24130 }, e.prototype.plugin = function(e, t) {
24131 void 0 === t && (t = {});
24132 var n = new e(this, t);
24133 if (!n.name) throw new Error("Required property `name` missing on plugin: " + n);
24134 return this._disposables.push(n), this._plugins[n.name] = n
24135 }, e.prototype.getPlugin = function(e) {
24136 return e ? this._plugins[e] : $t(this._plugins)
24140 return e.onCreate({}, oe)
24144 if (t) return t instanceof Ut ? t : Xe(t) ? r.target(t, e.params(), e.options()) : t.state || t.params ? r.target(t.state || e.to(), t.params || e.params(), e.options()) : void 0
24146 var n = e.to().redirectTo;
24148 var r = e.router.stateService;
24149 return Ke(n) ? ot.$q.when(n(e)).then(t) : t(n)
24155 return !!e.redirectTo
24162 exiting: function(e) {
24167 Qn = ae("onRetain"),
24169 return e.onRetain({
24170 retained: function(e) {
24171 return !!e.onRetain
24175 er = ae("onEnter"),
24178 entering: function(e) {
24184 return new sn(e.treeChanges().to).resolvePath("EAGER", e).then(d)
24187 return e.onStart({}, nr, {
24191 ir = function(e, t) {
24192 return new sn(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY", e).then(d)
24203 n = e.views("entering");
24204 if (n.length) return t.all(n.map(function(e) {
24205 return t.when(e.load())
24209 return e.onFinish({}, ar)
24212 var t = e.views("entering"),
24213 n = e.views("exiting");
24214 if (t.length || n.length) {
24215 var r = e.router.viewService;
24216 n.forEach(function(e) {
24217 return r.deactivateViewConfig(e)
24218 }), t.forEach(function(e) {
24219 return r.activateViewConfig(e)
24224 return e.onSuccess({}, cr)
24227 var t = e.router.globals,
24229 t.transition === e && (t.transition = null)
24231 e.onSuccess({}, function() {
24232 t.successfulTransitions.enqueue(e), t.$current = e.$to(), t.current = t.$current.self, lt(e.params(), t.params)
24235 }), e.promise.then(n, n)
24238 return e.onCreate({}, ur)
24241 var t = e.options(),
24242 n = e.router.stateService,
24243 r = e.router.urlRouter;
24244 if ("url" !== t.source && t.location && n.$current.navigable) {
24246 replace: "replace" === t.location
24248 r.push(n.$current.navigable.url, n.params, i)
24253 return e.onSuccess({}, fr, {
24259 n = e.entering().filter(function(e) {
24260 return !!e.$$state().lazyLoad
24261 }).map(function(t) {
24264 return ot.$q.all(n).then(function() {
24265 if ("url" !== e.originalTransition().options().source) {
24266 var n = e.targetState();
24267 return t.stateService.target(n.identifier(), n.params(), n.options())
24269 var r = t.urlService,
24270 i = r.match(r.parts()),
24272 if (o && "STATE" === o.type) {
24275 return t.stateService.target(a, s, e.options())
24277 t.urlService.sync()
24281 return e.onBefore({
24282 entering: function(e) {
24283 return !!e.lazyLoad
24288 return function(e, t, n, r, i, o, a, s) {
24289 void 0 === i && (i = !1), void 0 === o && (o = Bt.HANDLE_RESULT), void 0 === a && (a = Bt.REJECT_ERROR), void 0 === s && (s = !1), this.name = e, this.hookPhase = t, this.hookOrder = n, this.criteriaMatchPath = r, this.reverseSort = i, this.getResultHandler = o, this.getErrorHandler = a, this.synchronous = s
24293 return e.onBefore({}, ce, {
24298 return e.onBefore({}, le, {
24309 current: function() {
24316 this._transitionCount = 0, this._eventTypes = [], this._registeredHooks = {}, this._criteriaPaths = {}, this._router = e, this.$view = e.viewService, this._deregisterHookFns = {}, this._pluginapi = f(Fe(this), {}, Fe(this), ["_definePathType", "_defineEvent", "_getPathTypes", "_getEvents", "getHooks"]), this._defineCorePaths(), this._defineCoreEvents(), this._registerCoreTransitionHooks()
24318 return t.prototype.onCreate = function(e, t, n) {}, t.prototype.onBefore = function(e, t, n) {}, t.prototype.onStart = function(e, t, n) {}, t.prototype.onExit = function(e, t, n) {}, t.prototype.onRetain = function(e, t, n) {}, t.prototype.onEnter = function(e, t, n) {}, t.prototype.onFinish = function(e, t, n) {}, t.prototype.onSuccess = function(e, t, n) {}, t.prototype.onError = function(e, t, n) {}, t.prototype.dispose = function(e) {
24319 $t(this._registeredHooks).forEach(function(e) {
24320 return e.forEach(function(t) {
24321 t._deregistered = !0, mt(e, t)
24324 }, t.prototype.create = function(e, t) {
24325 return new un(e, t, this._router)
24326 }, t.prototype._defineCoreEvents = function() {
24327 var t = e.TransitionHookPhase,
24329 r = this._criteriaPaths;
24330 this._defineEvent("onCreate", t.CREATE, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.THROW_ERROR, !0), this._defineEvent("onBefore", t.BEFORE, 0, r.to), this._defineEvent("onStart", t.RUN, 0, r.to), this._defineEvent("onExit", t.RUN, 100, r.exiting, !0), this._defineEvent("onRetain", t.RUN, 200, r.retained), this._defineEvent("onEnter", t.RUN, 300, r.entering), this._defineEvent("onFinish", t.RUN, 400, r.to), this._defineEvent("onSuccess", t.SUCCESS, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0), this._defineEvent("onError", t.ERROR, 0, r.to, !1, n.LOG_REJECTED_RESULT, n.LOG_ERROR, !0)
24331 }, t.prototype._defineCorePaths = function() {
24332 var t = e.TransitionHookScope.STATE,
24333 n = e.TransitionHookScope.TRANSITION;
24334 this._definePathType("to", n), this._definePathType("from", n), this._definePathType("exiting", t), this._definePathType("retained", t), this._definePathType("entering", t)
24335 }, t.prototype._defineEvent = function(e, t, n, r, i, o, a, s) {
24336 void 0 === i && (i = !1), void 0 === o && (o = Bt.HANDLE_RESULT), void 0 === a && (a = Bt.REJECT_ERROR), void 0 === s && (s = !1);
24337 var c = new gr(e, t, n, r, i, o, a, s);
24338 this._eventTypes.push(c), R(this, this, c)
24339 }, t.prototype._getEvents = function(e) {
24340 return (We(e) ? this._eventTypes.filter(function(t) {
24341 return t.hookPhase === e
24342 }) : this._eventTypes.slice()).sort(function(e, t) {
24343 var n = e.hookPhase - t.hookPhase;
24344 return 0 === n ? e.hookOrder - t.hookOrder : n
24346 }, t.prototype._definePathType = function(e, t) {
24347 this._criteriaPaths[e] = {
24351 }, t.prototype._getPathTypes = function() {
24352 return this._criteriaPaths
24353 }, t.prototype.getHooks = function(e) {
24354 return this._registeredHooks[e]
24355 }, t.prototype._registerCoreTransitionHooks = function() {
24356 var e = this._deregisterHookFns;
24357 e.addCoreResolves = Yn(this), e.ignored = vr(this), e.invalid = br(this), e.redirectTo = Kn(this), e.onExit = Xn(this), e.onRetain = Jn(this), e.onEnter = tr(this), e.eagerResolve = rr(this), e.lazyResolve = or(this), e.loadViews = sr(this), e.activateViews = lr(this), e.updateGlobals = dr(this), e.updateUrl = hr(this), e.lazyLoad = mr(this)
24362 this.router = e, this.invalidCallbacks = [], this._defaultErrorHandler = function(e) {
24363 e instanceof Error && e.stack ? (console.error(e), console.error(e.stack)) : e instanceof Rt ? (console.error(e.toString()), e.detail && e.detail.stack && console.error(e.detail.stack)) : console.error(e)
24365 var n = ["current", "$current", "params", "transition"],
24366 r = Object.keys(t.prototype).filter(Re(pt(n)));
24367 f(Fe(t.prototype), this, Fe(this), r)
24369 return Object.defineProperty(t.prototype, "transition", {
24371 return this.router.globals.transition
24375 }), Object.defineProperty(t.prototype, "params", {
24377 return this.router.globals.params
24381 }), Object.defineProperty(t.prototype, "current", {
24383 return this.router.globals.current
24387 }), Object.defineProperty(t.prototype, "$current", {
24389 return this.router.globals.$current
24393 }), t.prototype.dispose = function() {
24394 this.defaultErrorHandler(d), this.invalidCallbacks = []
24395 }, t.prototype._handleInvalidTargetState = function(e, t) {
24397 var e = c.dequeue();
24398 return void 0 === e ? Rt.invalid(t.error()).toPromise() : ot.$q.when(e(t, i, l)).then(u).then(function(e) {
24403 i = Qt.makeTargetState(e),
24404 o = this.router.globals,
24406 return o.transitionHistory.peekTail()
24409 c = new Nt(this.invalidCallbacks.slice()),
24410 l = new sn(e).injector(),
24412 if (e instanceof Ut) {
24414 return (t = r.target(t.identifier(), t.params(), t.options())).valid() ? a() !== s ? Rt.superseded().toPromise() : r.transitionTo(t.identifier(), t.params(), t.options()) : Rt.invalid(t.error()).toPromise()
24418 }, t.prototype.onInvalid = function(e) {
24419 return this.invalidCallbacks.push(e),
24421 mt(this.invalidCallbacks)(e)
24423 }, t.prototype.reload = function(e) {
24424 return this.transitionTo(this.current, this.params, {
24425 reload: !We(e) || e,
24429 }, t.prototype.go = function(e, t, n) {
24431 relative: this.$current,
24434 return this.transitionTo(e, t, r)
24435 }, t.prototype.target = function(e, t, n) {
24436 if (void 0 === n && (n = {}), Qe(n.reload) && !n.reload.name) throw new Error("Invalid reload state object");
24437 var r = this.router.stateRegistry;
24438 if (n.reloadState = !0 === n.reload ? r.root() : r.matcher.find(n.reload, n.relative), n.reload && !n.reloadState) throw new Error("No such reload state '" + (Xe(n.reload) ? n.reload : n.reload.name) + "'");
24439 var i = r.matcher.find(e, n.relative);
24440 return new Ut(e, i, t, n)
24441 }, t.prototype.getCurrentPath = function() {
24443 t = this.router.globals.successfulTransitions.peekTail();
24444 return t ? t.treeChanges().to : [new Xt(e.router.stateRegistry.root())]
24445 }, t.prototype.transitionTo = function(t, n, r) {
24447 void 0 === n && (n = {}), void 0 === r && (r = {});
24448 var o = this.router,
24452 current: function() {
24453 return a.transition
24456 var s = this.target(t, n, r),
24457 c = this.getCurrentPath();
24458 if (!s.exists()) return this._handleInvalidTargetState(c, s);
24459 if (!s.valid()) return Dt(s.error());
24460 var l = function(t) {
24461 return function(n) {
24462 if (n instanceof Rt) {
24463 var r = o.globals.lastStartedTransitionId === t.$id;
24464 if (n.type === e.RejectType.IGNORED) return r && o.urlRouter.update(), ot.$q.when(a.current);
24466 if (n.type === e.RejectType.SUPERSEDED && n.redirected && s instanceof Ut) {
24467 var c = t.redirect(s);
24468 return c.run().catch(l(c))
24470 if (n.type === e.RejectType.ABORTED) return r && o.urlRouter.update(), ot.$q.reject(n)
24472 return i.defaultErrorHandler()(n), ot.$q.reject(n)
24475 u = this.router.transitionService.create(c, s),
24476 d = u.run().catch(l(u));
24477 return Ot(d), dt(d, {
24480 }, t.prototype.is = function(e, t, n) {
24482 relative: this.$current
24484 var r = this.router.stateRegistry.matcher.find(e, n.relative);
24486 if (this.$current !== r) return !1;
24488 var i = r.parameters({
24492 return Zt.equals(i, Zt.values(i, t), this.params)
24494 }, t.prototype.includes = function(e, t, n) {
24496 relative: this.$current
24498 var r = Xe(e) && qe.fromString(e);
24500 if (!r.matches(this.$current.name)) return !1;
24501 e = this.$current.name
24503 var i = this.router.stateRegistry.matcher.find(e, n.relative),
24504 o = this.$current.includes;
24506 if (!We(o[i.name])) return !1;
24508 var a = i.parameters({
24512 return Zt.equals(a, Zt.values(a, t), this.params)
24514 }, t.prototype.href = function(e, t, n) {
24519 relative: this.$current
24521 var r = this.router.stateRegistry.matcher.find(e, n.relative);
24522 if (!We(r)) return null;
24523 n.inherit && (t = this.params.$inherit(t, this.$current, r));
24524 var i = r && n.lossy ? r.navigable : r;
24525 return i && void 0 !== i.url && null !== i.url ? this.router.urlRouter.href(i.url, t, {
24526 absolute: n.absolute
24528 }, t.prototype.defaultErrorHandler = function(e) {
24529 return this._defaultErrorHandler = e || this._defaultErrorHandler
24530 }, t.prototype.get = function(e, t) {
24531 var n = this.router.stateRegistry;
24532 return 0 === arguments.length ? n.get() : n.get(e, t || this.$current)
24533 }, t.prototype.lazyLoad = function(e, t) {
24534 var n = this.get(e);
24535 if (!n || !n.lazyLoad) throw new Error("Can not lazy load " + e);
24536 var r = this.getCurrentPath(),
24537 i = Qt.makeTargetState(r);
24538 return t = t || this.router.transitionService.create(r, i), se(t, n)
24542 when: function(e) {
24543 return new Promise(function(t, n) {
24547 reject: function(e) {
24548 return new Promise(function(t, n) {
24552 defer: function() {
24554 return e.promise = new Promise(function(t, n) {
24555 e.resolve = t, e.reject = n
24559 if (Je(e)) return Promise.all(e);
24561 var t = Object.keys(e).map(function(t) {
24562 return e[t].then(function(e) {
24569 return wr.all(t).then(function(e) {
24570 return e.reduce(function(e, t) {
24571 return e[t.key] = t.val, e
24578 Cr = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,
24585 return null != kr.get(e)
24587 invoke: function(e, t, n) {
24588 var r = dt({}, Er, n || {}),
24589 i = kr.annotate(e),
24590 o = Mt(function(e) {
24591 return r.hasOwnProperty(e)
24593 return "DI can't find injectable: '" + e + "'"
24595 a = i.filter(o).map(function(e) {
24598 return Ke(e) ? e.apply(t, a) : e.slice(-1)[0].apply(t, a)
24600 annotate: function(e) {
24601 if (!l(e)) throw new Error("Not an injectable function: " + e);
24602 if (e && e.$inject) return e.$inject;
24603 if (Je(e)) return e.slice(0, -1);
24604 var t = e.toString().replace(Cr, "");
24605 return t.slice(t.indexOf("(") + 1, t.indexOf(")")).match(xr) || []
24609 return function(t) {
24610 if (!t) return ["", ""];
24611 var n = t.indexOf(e);
24612 return -1 === n ? [t, ""] : [t.substr(0, n), t.substr(n + 1)]
24619 return e ? e.replace(/^#/, "") : ""
24621 Dr = function(e, t) {
24624 return e.hasOwnProperty(n) ? Je(e[n]) ? e[n].push(r) : e[n] = [e[n], r] : e[n] = r, e
24627 return e.split("&").filter(u).map(Ar).reduce(Dr, {})
24633 i = Object.keys(n).map(function(e) {
24635 return (Je(t) ? t : [t]).map(function(t) {
24638 }).reduce(Et, []).join("&");
24639 return t + (i ? "?" + i : "") + (r ? "#" + r : "")
24644 this.fireAfterUpdate = t, this._listener = function(e) {
24645 return n._listeners.forEach(function(t) {
24648 }, this._listeners = [], this.hash = function() {
24649 return ue(n._get()).hash
24650 }, this.path = function() {
24651 return ue(n._get()).path
24652 }, this.search = function() {
24653 return Nr(ue(n._get()).search)
24654 }, this._location = window && window.location, this._history = window && window.history
24656 return e.prototype.url = function(e, t) {
24657 if (void 0 === t && (t = !0), We(e) && e !== this._get() && (this._set(null, null, e, t), this.fireAfterUpdate)) {
24658 var n = dt(new Event("locationchange"), {
24661 this._listeners.forEach(function(e) {
24666 }, e.prototype.onChange = function(e) {
24668 return this._listeners.push(e),
24670 return mt(t._listeners, e)
24672 }, e.prototype.dispose = function(e) {
24673 vt(this._listeners)
24677 var e = Object.setPrototypeOf || {
24680 instanceof Array && function(e, t) {
24682 } || function(e, t) {
24683 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24685 return function(t, n) {
24687 this.constructor = t
24689 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24694 var n = e.call(this, t, !1) || this;
24695 return window.addEventListener("hashchange", n._listener, !1), n
24697 return Pr(t, e), t.prototype._get = function() {
24698 return Or(this._location.hash)
24699 }, t.prototype._set = function(e, t, n, r) {
24700 this._location.hash = n
24701 }, t.prototype.dispose = function(t) {
24702 e.prototype.dispose.call(this, t), window.removeEventListener("hashchange", this._listener)
24706 var e = Object.setPrototypeOf || {
24709 instanceof Array && function(e, t) {
24711 } || function(e, t) {
24712 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24714 return function(t, n) {
24716 this.constructor = t
24718 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24723 return e.call(this, t, !0) || this
24725 return jr(t, e), t.prototype._get = function() {
24727 }, t.prototype._set = function(e, t, n, r) {
24732 var e = Object.setPrototypeOf || {
24735 instanceof Array && function(e, t) {
24737 } || function(e, t) {
24738 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n])
24740 return function(t, n) {
24742 this.constructor = t
24744 e(t, n), t.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
24749 var n = e.call(this, t, !0) || this;
24750 return n._config = t.urlService.config, window.addEventListener("popstate", n._listener, !1), n
24752 return Fr(t, e), t.prototype._get = function() {
24753 var e = this._location,
24757 return r = Sr(r)[1], n = Mr(n)[1], t + (r ? "?" + r : "") + (n ? "$" + r : "")
24758 }, t.prototype._set = function(e, t, n, r) {
24762 s = o.baseHref() + n;
24763 r ? a.replaceState(e, t, s) : a.pushState(e, t, s)
24764 }, t.prototype.dispose = function(t) {
24765 e.prototype.dispose.call(this, t), window.removeEventListener("popstate", this._listener)
24769 return function() {
24771 this._baseHref = "", this._port = 80, this._protocol = "http", this._host = "localhost", this._hashPrefix = "", this.port = function() {
24773 }, this.protocol = function() {
24775 }, this.host = function() {
24777 }, this.baseHref = function() {
24779 }, this.html5Mode = function() {
24781 }, this.hashPrefix = function(t) {
24782 return We(t) ? e._hashPrefix = t : e._hashPrefix
24783 }, this.dispose = d
24788 void 0 === t && (t = !1), this._isHtml5 = t, this._baseHref = void 0, this._hashPrefix = ""
24790 return e.prototype.port = function() {
24791 return location.port ? Number(location.port) : "https" === this.protocol() ? 443 : 80
24792 }, e.prototype.protocol = function() {
24793 return location.protocol.replace(/:/g, "")
24794 }, e.prototype.host = function() {
24795 return location.hostname
24796 }, e.prototype.html5Mode = function() {
24797 return this._isHtml5
24798 }, e.prototype.hashPrefix = function(e) {
24799 return We(e) ? this._hashPrefix = e : this._hashPrefix
24800 }, e.prototype.baseHref = function(e) {
24801 return We(e) ? this._baseHref = e : this._baseHref || this.applyDocumentBaseHref()
24802 }, e.prototype.applyDocumentBaseHref = function() {
24803 var e = document.getElementsByTagName("base");
24804 return this._baseHref = e.length ? e[0].href.substr(location.origin.length) : ""
24805 }, e.prototype.dispose = function() {}, e
24807 Br = de("vanilla.hashBangLocation", !1, Hr, Vr),
24808 zr = de("vanilla.pushStateLocation", !0, qr, Vr),
24809 Wr = de("vanilla.memoryLocation", !1, Lr, Ur),
24812 return e.prototype.dispose = function(e) {}, e
24814 Gr = Object.freeze({
24823 createProxyFunctions: f,
24851 assertPredicate: Mt,
24859 silenceUncaughtInPromise: Ot,
24860 silentRejection: Dt,
24861 notImplemented: it,
24883 isNullOrUndefined: Ge,
24898 functionToString: z,
24901 beforeAfterSubstr: hn,
24918 resolvePolicies: tn,
24919 defaultResolvePolicy: Jt,
24921 NATIVE_INJECTOR_TOKEN: an,
24922 ResolveContext: sn,
24923 resolvablesBuilder: te,
24927 StateQueueManager: En,
24931 get TransitionHookPhase() {
24932 return e.TransitionHookPhase
24934 get TransitionHookScope() {
24935 return e.TransitionHookScope
24939 RegisteredHook: zt,
24942 return e.RejectType
24946 TransitionHook: Bt,
24947 TransitionEventType: gr,
24948 defaultTransOpts: yr,
24949 TransitionService: $r,
24951 UrlMatcherFactory: Mn,
24953 UrlRuleFactory: Sn,
24957 UIRouterGlobals: Hn,
24961 BaseLocationServices: Rr,
24962 HashLocationService: Hr,
24963 MemoryLocationService: Lr,
24964 PushStateLocationService: qr,
24965 MemoryLocationConfig: Ur,
24966 BrowserLocationConfig: Vr,
24971 keyValsToObjectR: Dr,
24975 locationPluginFactory: de,
24976 servicesPlugin: fe,
24977 hashLocationPlugin: Br,
24978 pushStateLocationPlugin: zr,
24979 memoryLocationPlugin: Wr,
24980 UIRouterPluginBase: Yr
24982 Kr = function(e, t) {
24983 return e.reduce(function(e, n) {
24984 return e || We(t[n])
24989 function e(e, t, n) {
24991 this.path = e, this.viewDecl = t, this.factory = n, this.$id = Zr++, this.loaded = !1, this.getTemplate = function(e, t) {
24992 return r.component ? r.factory.makeComponentTemplate(e, t, r.component, r.viewDecl.bindings) : r.template
24995 return e.prototype.load = function() {
24998 n = new sn(this.path),
24999 r = this.path.reduce(function(e, t) {
25000 return dt(e, t.paramValues)
25003 template: t.when(this.factory.fromConfig(this.viewDecl, r, n)),
25004 controller: t.when(this.getController(n))
25006 return t.all(i).then(function(t) {
25007 return qt.traceViewServiceEvent("Loaded", e), e.controller = t.controller, dt(e, t.template), e
25009 }, e.prototype.getController = function(e) {
25010 var t = this.viewDecl.controllerProvider;
25011 if (!l(t)) return this.viewDecl.controller;
25012 var n = ot.$injector.annotate(t),
25013 r = Je(t) ? M(t) : t;
25014 return new en("", r, n).get(e)
25020 this._useHttp = Oe.version.minor < 3, this.$get = ["$http", "$templateCache", "$injector", function(t, n, r) {
25021 return e.$templateRequest = r.has && r.has("$templateRequest") && r.get("$templateRequest"), e.$http = t, e.$templateCache = n, e
25024 return e.prototype.useHttpService = function(e) {
25026 }, e.prototype.fromConfig = function(e, t, n) {
25027 var r = function(e) {
25028 return ot.$q.when(e).then(function(e) {
25035 return ot.$q.when(e).then(function(e) {
25041 return We(e.template) ? r(this.fromString(e.template, t)) : We(e.templateUrl) ? r(this.fromUrl(e.templateUrl, t)) : We(e.templateProvider) ? r(this.fromProvider(e.templateProvider, t, n)) : We(e.component) ? i(e.component) : We(e.componentProvider) ? i(this.fromComponentProvider(e.componentProvider, t, n)) : r("<ui-view></ui-view>")
25042 }, e.prototype.fromString = function(e, t) {
25043 return Ke(e) ? e(t) : e
25044 }, e.prototype.fromUrl = function(e, t) {
25045 return Ke(e) && (e = e(t)), null == e ? null : this._useHttp ? this.$http.get(e, {
25046 cache: this.$templateCache,
25048 Accept: "text/html"
25050 }).then(function(e) {
25052 }) : this.$templateRequest(e)
25053 }, e.prototype.fromProvider = function(e, t, n) {
25054 var r = ot.$injector.annotate(e),
25055 i = Je(e) ? M(e) : e;
25056 return new en("", i, r).get(n)
25057 }, e.prototype.fromComponentProvider = function(e, t, n) {
25058 var r = ot.$injector.annotate(e),
25059 i = Je(e) ? M(e) : e;
25060 return new en("", i, r).get(n)
25061 }, e.prototype.makeComponentTemplate = function(e, t, n, r) {
25063 var i = Oe.version.minor >= 3 ? "::" : "",
25066 return /^(x|data)-/.exec(t) ? "x-" + t : t
25068 a = me(n).map(function(n) {
25072 if (e.attr(c) && !r[a]) return c + "='" + e.attr(c) + "'";
25074 if ("@" === s) return c + "='{{" + i + "$resolve." + l + "}}'";
25076 var u = t.getResolvable(l),
25078 f = d && ot.$injector.annotate(d) || [];
25079 return c + "='$resolve." + l + (Je(d) ? "[" + (d.length - 1) + "]" : "") + "(" + f.join(",") + ")'"
25081 return c + "='" + i + "$resolve." + l + "'"
25084 return "<" + s + " " + a + "></" + s + ">"
25088 return ei(Qe(e.bindToController) ? e.bindToController : e.scope)
25091 return Object.keys(e || {}).map(function(t) {
25092 return [t, /^([=<@&])[?]?(.*)/.exec(e[t])]
25093 }).filter(function(e) {
25094 return We(e) && Je(e[1])
25095 }).map(function(e) {
25097 name: e[1][2] || e[0],
25104 this.stateRegistry = t, this.stateService = n, f(Fe(e.prototype), this, Fe(this))
25106 return e.prototype.decorator = function(e, t) {
25107 return this.stateRegistry.decorator(e, t) || this
25108 }, e.prototype.state = function(e, t) {
25109 return Qe(e) ? t = e : t.name = e, this.stateRegistry.register(t), this
25110 }, e.prototype.onInvalid = function(e) {
25111 return this.stateService.onInvalid(e)
25115 return function(t, n) {
25117 i = "onExit" === e ? "from" : "to";
25118 return r ? function(e, t) {
25119 var n = new sn(e.treeChanges(i)),
25124 return ot.$injector.invoke(r, this, o)
25130 this._urlListeners = [], this.$locationProvider = e;
25132 f(t, this, t, ["hashPrefix"])
25134 return e.prototype.dispose = function() {}, e.prototype.onChange = function(e) {
25136 return this._urlListeners.push(e),
25138 return mt(t._urlListeners)(e)
25140 }, e.prototype.html5Mode = function() {
25141 var e = this.$locationProvider.html5Mode();
25142 return (e = Qe(e) ? e.enabled : e) && this.$sniffer.history
25143 }, e.prototype.url = function(e, t, n) {
25144 return void 0 === t && (t = !1), e && this.$location.url(e), t && this.$location.replace(), n && this.$location.state(n), this.$location.url()
25145 }, e.prototype._runtimeServices = function(e, t, n, r) {
25147 this.$location = t, this.$sniffer = n, e.$on("$locationChangeSuccess", function(e) {
25148 return i._urlListeners.forEach(function(t) {
25154 f(o, this, o, ["replace", "path", "search", "hash"]), f(o, this, o, ["port", "protocol", "host"]), f(a, this, a, ["baseHref"])
25155 }, e.monkeyPatchPathParameterType = function(e) {
25156 var t = e.urlMatcherFactory.type("path");
25157 t.encode = function(e) {
25158 return null != e ? e.toString().replace(/(~|\/)/g, function(e) {
25164 }, t.decode = function(e) {
25165 return null != e ? e.toString().replace(/(~~|~2F)/g, function(e) {
25176 this._router = e, this._urlRouter = e.urlRouter
25178 return e.prototype.$get = function() {
25179 var e = this._urlRouter;
25180 return e.update(!0), e.interceptDeferred || e.listen(), e
25181 }, e.prototype.rule = function(e) {
25183 if (!Ke(e)) throw new Error("'rule' must be a function");
25184 var n = new An(function() {
25185 return e(ot.$injector, t._router.locationService)
25187 return this._urlRouter.rule(n), this
25188 }, e.prototype.otherwise = function(e) {
25190 n = this._urlRouter;
25191 if (Xe(e)) n.otherwise(e);
25193 if (!Ke(e)) throw new Error("'rule' must be a string or function");
25194 n.otherwise(function() {
25195 return e(ot.$injector, t._router.locationService)
25199 }, e.prototype.when = function(t, n) {
25200 return (Je(n) || Ke(n)) && (n = e.injectableHandler(this._router, n)), this._urlRouter.when(t, n), this
25201 }, e.injectableHandler = function(e, t) {
25202 return function(n) {
25203 return ot.$injector.invoke(t, null, {
25205 $stateParams: e.globals.params
25208 }, e.prototype.deferIntercept = function(e) {
25209 this._urlRouter.deferIntercept(e)
25212 Oe.module("ui.router.angular1", []);
25213 var oi = Oe.module("ui.router.init", []),
25214 ai = Oe.module("ui.router.util", ["ng", "ui.router.init"]),
25215 si = Oe.module("ui.router.router", ["ui.router.util"]),
25216 ci = Oe.module("ui.router.state", ["ui.router.router", "ui.router.util", "ui.router.angular1"]),
25217 li = Oe.module("ui.router", ["ui.router.init", "ui.router.state", "ui.router.angular1"]),
25218 ui = (Oe.module("ui.router.compat", ["ui.router"]), null);
25219 ge.$inject = ["$locationProvider"];
25220 var di = function(e) {
25221 return ["$uiRouterProvider", function(t) {
25222 var n = t.router[e];
25223 return n.$get = function() {
25228 ve.$inject = ["$injector", "$q", "$uiRouter"];
25229 be.$inject = ["$rootScope"], oi.provider("$uiRouter", ge), si.provider("$urlRouter", ["$uiRouterProvider", function(e) {
25230 return e.urlRouterProvider = new ii(e)
25231 }]), ai.provider("$urlService", di("urlService")), ai.provider("$urlMatcherFactory", ["$uiRouterProvider", function() {
25232 return ui.urlMatcherFactory
25233 }]), ai.provider("$templateFactory", function() {
25235 }), ci.provider("$stateRegistry", di("stateRegistry")), ci.provider("$uiRouterGlobals", di("globals")), ci.provider("$transitions", di("transitionService")), ci.provider("$state", ["$uiRouterProvider", function() {
25236 return dt(ui.stateProvider, {
25238 return ui.stateService
25241 }]), ci.factory("$stateParams", ["$uiRouter", function(e) {
25242 return e.globals.params
25243 }]), li.factory("$view", function() {
25244 return ui.viewService
25245 }), li.service("$trace", function() {
25247 }), li.run(be), ai.run(["$urlMatcherFactory", function(e) {}]), ci.run(["$state", function(e) {}]), si.run(["$urlRouter", function(e) {}]), oi.run(ve);
25248 var fi, hi = function(e) {
25249 return e.getTokens().filter(Xe).map(function(t) {
25250 var n = e.getResolvable(t);
25251 return [t, "NOWAIT" === e.getPolicy(n).async ? n.promise : n.data]
25254 fi = ["$uiRouter", "$timeout", function(e, t) {
25255 var n = e.stateService;
25258 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
25259 link: function(r, i, o, a) {
25262 d && d(), u && (d = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
25272 f.uiState = p.state, f.uiStateOpts = o.uiSrefOpts ? r.$eval(o.uiSrefOpts) : {}, p.paramExpr && (r.$watch(p.paramExpr, function(e) {
25273 f.uiStateParams = dt({}, e), s()
25274 }, !0), f.uiStateParams = dt({}, r.$eval(p.paramExpr))), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = Ee(i, n, t, l, h), xe(i, r, c, f.uiStateOpts))
25279 pi = ["$uiRouter", "$timeout", function(e, t) {
25280 var n = e.stateService;
25283 require: ["?^uiSrefActive", "?^uiSrefActiveEq"],
25284 link: function(r, i, o, a) {
25287 f && f(), u && (f = u.$$addStateInfo(e.uiState, e.uiStateParams)), null != e.href && o.$set(l.attr, e.href)
25296 m = ["uiState", "uiStateParams", "uiStateOpts"],
25297 g = m.reduce(function(e, t) {
25300 m.forEach(function(e) {
25301 h[e] = o[e] ? r.$eval(o[e]) : null, o.$observe(e, function(t) {
25302 g[e](), g[e] = r.$watch(t, function(t) {
25306 }), s(), r.$on("$destroy", e.stateRegistry.onStatesChanged(s)), r.$on("$destroy", e.transitionService.onSuccess({}, s)), l.clickable && (c = Ee(i, n, t, l, p), xe(i, r, c, h.uiStateOpts))
25311 mi = ["$state", "$stateParams", "$interpolate", "$uiRouter", function(e, t, n, r) {
25314 controller: ["$scope", "$element", "$attrs", function(t, i, o) {
25316 e.promise.then(c, d)
25319 function s(t, n, r) {
25321 state: e.get(t, $e(i)) || {
25334 var n = function(e) {
25335 return e.split(/\s/).filter(u)
25338 return e.map(function(e) {
25339 return e.activeClass
25340 }).map(n).reduce(Et, [])
25342 o = r(h).concat(n(l)).reduce(xt, []),
25343 a = r(h.filter(function(t) {
25344 return e.includes(t.state.name, t.params)
25346 s = !!h.filter(function(t) {
25347 return e.is(t.state.name, t.params)
25348 }).length ? n(l) : [],
25349 c = a.concat(s).reduce(xt, []),
25350 d = o.filter(function(e) {
25353 t.$evalAsync(function() {
25354 c.forEach(function(e) {
25355 return i.addClass(e)
25356 }), d.forEach(function(e) {
25357 return i.removeClass(e)
25362 l = n(o.uiSrefActiveEq || "", !1)(t);
25364 f = t.$eval(o.uiSrefActive)
25366 f = f || n(o.uiSrefActive || "", !1)(t), Qe(f) && ut(f, function(e, n) {
25369 s(r.state, t.$eval(r.paramExpr), n)
25371 }), this.$$addStateInfo = function(e, t) {
25372 if (!(Qe(f) && h.length > 0)) {
25373 var n = s(e, t, f);
25376 }, t.$on("$stateChangeSuccess", c), t.$on("$destroy", r.transitionService.onStart({}, a)), r.globals.transition && a(r.globals.transition), c()
25379 }], Oe.module("ui.router.state").directive("uiSref", fi).directive("uiSrefActive", mi).directive("uiSrefActiveEq", mi).directive("uiState", pi), ke.$inject = ["$state"], Te.$inject = ["$state"], Oe.module("ui.router.state").filter("isState", ke).filter("includedByState", Te);
25381 gi = ["$view", "$animate", "$uiViewScroll", "$interpolate", "$q", function(e, t, n, r, i) {
25384 enter: function(e, n, r) {
25385 Oe.version.minor > 2 ? t.enter(e, null, n).then(r) : t.enter(e, null, n, r)
25387 leave: function(e, n) {
25388 Oe.version.minor > 2 ? t.leave(e).then(n) : t.leave(e, n)
25399 $context: e._pluginapi._rootViewContext()
25409 transclude: "element",
25410 compile: function(t, l, u) {
25411 return function(t, l, d) {
25413 if (p && (qt.traceUIViewEvent("Removing (previous) el", p.data("$uiView")), p.remove(), p = null), g && (qt.traceUIViewEvent("Destroying scope", C), g.$destroy(), g = null), m) {
25414 var e = m.data("$uiViewAnim");
25415 qt.traceUIViewEvent("Animate out", e), $.leave(m, function() {
25416 e.$$animLeave.resolve(), p = null
25417 }), p = m, m = null
25430 $animEnter: o.promise,
25431 $animLeave: a.promise,
25434 r.$emit("$viewContentLoading", E);
25435 var d = u(r, function(e) {
25436 e.data("$uiViewAnim", c), e.data("$uiView", s), $.enter(e, l, function() {
25437 o.resolve(), g && g.$emit("$viewContentAnimationEnded"), (We(y) && !y || t.$eval(y)) && n(e)
25440 m = d, (g = r).$emit("$viewContentLoaded", e || _), g.$eval(b)
25442 var p, m, g, v, b = d.onload || "",
25446 w = l.inheritedData("$uiView") || s,
25447 E = r(d.uiView || d.name || "")(t) || "$default",
25452 fqn: w.$uiView.fqn ? w.$uiView.fqn + "." + E : E,
25454 configUpdated: function(e) {
25455 (!e || e instanceof Xr) && (a(_, e) || (qt.traceUIViewConfigUpdated(C, e && e.viewDecl && e.viewDecl.$context), _ = e, h(e)))
25457 get creationContext() {
25458 var e = Ie("$cfg.viewDecl.$context")(w),
25459 t = Ie("$uiView.creationContext")(w);
25463 qt.traceUIViewEvent("Linking", C), l.data("$uiView", {
25465 }), h(), v = e.registerUIView(C), t.$on("$destroy", function() {
25466 qt.traceUIViewEvent("Destroying/Unregistering", C), v()
25472 }], Me.$inject = ["$compile", "$controller", "$transitions", "$view", "$q", "$timeout"];
25473 var vi = "function" == typeof Oe.module("ui.router").component,
25475 Oe.module("ui.router.state").directive("uiView", gi), Oe.module("ui.router.state").directive("uiView", Me), Oe.module("ui.router.state").provider("$uiViewScroll", function() {
25477 this.useAnchorScroll = function() {
25479 }, this.$get = ["$anchorScroll", "$timeout", function(t, n) {
25480 return e ? t : function(e) {
25481 return n(function() {
25482 e[0].scrollIntoView()
25487 e.default = "ui.router", e.core = Gr, e.watchDigests = be, e.getLocals = hi, e.getNg1ViewConfigFactory = he, e.ng1ViewsBuilder = pe, e.Ng1ViewConfig = Xr, e.StateProvider = ti, e.UrlRouterProvider = ii, e.fromJson = st, e.toJson = ct, e.copy = lt, e.forEach = ut, e.extend = dt, e.equals = ft, e.identity = u, e.noop = d, e.createProxyFunctions = f, e.inherit = ht, e.inArray = pt, e._inArray = h, e.removeFrom = mt, e._removeFrom = p, e.pushTo = gt, e._pushTo = m, e.deregAll = vt, e.defaults = g, e.mergeR = bt, e.ancestors = v, e.pick = b, e.omit = y, e.pluck = $, e.filter = _, e.find = w, e.mapObj = yt, e.map = E, e.values = $t, e.allTrueR = _t, e.anyTrueR = wt, e.unnestR = Et, e.flattenR = Ct, e.pushR = C, e.uniqR = xt, e.unnest = kt, e.flatten = Tt, e.assertPredicate = Mt, e.assertMap = St, e.assertFn = x, e.pairs = At, e.arrayTuples = k, e.applyPairs = T, e.tail = M, e._extend = S, e.silenceUncaughtInPromise = Ot, e.silentRejection = Dt, e.notImplemented = it, e.services = ot, e.Glob = qe, e.curry = n, e.compose = r, e.pipe = i, e.prop = De, e.propEq = Ne, e.parse = Ie, e.not = Re, e.and = o, e.or = a, e.all = Pe, e.any = He, e.is = je, e.eq = Le, e.val = Fe, e.invoke = s, e.pattern = c, e.isUndefined = ze, e.isDefined = We, e.isNull = Ye, e.isNullOrUndefined = Ge, e.isFunction = Ke, e.isNumber = Ze, e.isString = Xe, e.isObject = Qe, e.isArray = Je, e.isDate = et, e.isRegExp = tt, e.isState = nt, e.isInjectable = l, e.isPromise = rt, e.Queue = Nt, e.maxLength = U, e.padString = V, e.kebobString = B, e.functionToString = z, e.fnToString = W, e.stringify = Y, e.beforeAfterSubstr = hn, e.splitOnDelim = G, e.joinNeighborsR = K, e.Trace = Ft, e.trace = qt, e.Param = Zt, e.ParamTypes = pn, e.StateParams = gn, e.ParamType = Yt, e.PathNode = Xt, e.PathUtils = Qt, e.resolvePolicies = tn, e.defaultResolvePolicy = Jt, e.Resolvable = en, e.NATIVE_INJECTOR_TOKEN = an, e.ResolveContext = sn, e.resolvablesBuilder = te, e.StateBuilder = _n, e.StateObject = Ue, e.StateMatcher = wn, e.StateQueueManager = En, e.StateRegistry = Cn, e.StateService = _r, e.TargetState = Ut, e.HookBuilder = Wt, e.matchState = I, e.RegisteredHook = zt, e.makeEvent = R, e.Rejection = Rt, e.Transition = un, e.TransitionHook = Bt, e.TransitionEventType = gr, e.defaultTransOpts = yr, e.TransitionService = $r, e.UrlMatcher = Tn, e.UrlMatcherFactory = Mn, e.UrlRouter = Rn, e.UrlRuleFactory = Sn, e.BaseUrlRule = An, e.UrlService = Bn, e.ViewService = Pn, e.UIRouterGlobals = Hn, e.UIRouter = Wn, e.$q = wr, e.$injector = kr, e.BaseLocationServices = Rr, e.HashLocationService = Hr, e.MemoryLocationService = Lr, e.PushStateLocationService = qr, e.MemoryLocationConfig = Ur, e.BrowserLocationConfig = Vr, e.splitHash = Mr, e.splitQuery = Sr, e.splitEqual = Ar, e.trimHashVal = Or, e.keyValsToObjectR = Dr, e.getParams = Nr, e.parseUrl = ue, e.buildUrl = Ir, e.locationPluginFactory = de, e.servicesPlugin = fe, e.hashLocationPlugin = Br, e.pushStateLocationPlugin = zr, e.memoryLocationPlugin = Wr, e.UIRouterPluginBase = Yr, Object.defineProperty(e, "__esModule", {
25493 return e.set(t[0], t[1]), e
25500 function n(e, t, n) {
25501 switch (n.length) {
25505 return e.call(t, n[0]);
25507 return e.call(t, n[0], n[1]);
25509 return e.call(t, n[0], n[1], n[2])
25511 return e.apply(t, n)
25514 function r(e, t, n, r) {
25515 for (var i = -1, o = null == e ? 0 : e.length; ++i < o;) {
25523 for (var n = -1, r = null == e ? 0 : e.length; ++n < r && !1 !== t(e[n], n, e););
25528 for (var n = null == e ? 0 : e.length; n-- && !1 !== t(e[n], n, e););
25533 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
25534 if (!t(e[n], n, e)) return !1;
25539 for (var n = -1, r = null == e ? 0 : e.length, i = 0, o = []; ++n < r;) {
25541 t(a, n, e) && (o[i++] = a)
25547 return !!(null == e ? 0 : e.length) && y(e, t, 0) > -1
25550 function l(e, t, n) {
25551 for (var r = -1, i = null == e ? 0 : e.length; ++r < i;)
25552 if (n(t, e[r])) return !0;
25557 for (var n = -1, r = null == e ? 0 : e.length, i = Array(r); ++n < r;) i[n] = t(e[n], n, e);
25562 for (var n = -1, r = t.length, i = e.length; ++n < r;) e[i + n] = t[n];
25566 function f(e, t, n, r) {
25568 o = null == e ? 0 : e.length;
25569 for (r && o && (n = e[++i]); ++i < o;) n = t(n, e[i], i, e);
25573 function h(e, t, n, r) {
25574 var i = null == e ? 0 : e.length;
25575 for (r && i && (n = e[--i]); i--;) n = t(n, e[i], i, e);
25580 for (var n = -1, r = null == e ? 0 : e.length; ++n < r;)
25581 if (t(e[n], n, e)) return !0;
25590 return e.match(Rt) || []
25593 function v(e, t, n) {
25595 return n(e, function(e, n, i) {
25596 if (t(e, n, i)) return r = n, !1
25600 function b(e, t, n, r) {
25601 for (var i = e.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
25602 if (t(e[o], o, e)) return o;
25606 function y(e, t, n) {
25607 return t === t ? W(e, t, n) : b(e, _, n)
25610 function $(e, t, n, r) {
25611 for (var i = n - 1, o = e.length; ++i < o;)
25612 if (r(e[i], t)) return i;
25621 var n = null == e ? 0 : e.length;
25622 return n ? T(e, t) / n : Ae
25626 return function(t) {
25627 return null == t ? J : t[e]
25632 return function(t) {
25633 return null == e ? J : e[t]
25637 function x(e, t, n, r, i) {
25638 return i(e, function(e, i, o) {
25639 n = r ? (r = !1, e) : t(n, e, i, o)
25645 for (e.sort(t); n--;) e[n] = e[n].value;
25650 for (var n, r = -1, i = e.length; ++r < i;) {
25652 o !== J && (n = n === J ? o : n + o)
25658 for (var n = -1, r = Array(e); ++n < e;) r[n] = t(n);
25663 return u(t, function(t) {
25669 return function(t) {
25675 return u(t, function(t) {
25685 for (var n = -1, r = e.length; ++n < r && y(t, e[n], 0) > -1;);
25690 for (var n = e.length; n-- && y(t, e[n], 0) > -1;);
25695 for (var n = e.length, r = 0; n--;) e[n] === t && ++r;
25700 return "\\" + wn[e]
25704 return null == e ? J : e[t]
25716 for (var t, n = []; !(t = e.next()).done;) n.push(t.value);
25723 return e.forEach(function(e, r) {
25729 return function(n) {
25735 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
25737 a !== t && a !== oe || (e[n] = oe, o[i++] = n)
25745 return e.forEach(function(e) {
25753 return e.forEach(function(e) {
25758 function W(e, t, n) {
25759 for (var r = n - 1, i = e.length; ++r < i;)
25760 if (e[r] === t) return r;
25764 function Y(e, t, n) {
25765 for (var r = n + 1; r--;)
25766 if (e[r] === t) return r;
25771 return j(e) ? Z(e) : Ln(e)
25775 return j(e) ? X(e) : m(e)
25779 for (var t = dn.lastIndex = 0; dn.test(e);) ++t;
25784 return e.match(dn) || []
25788 return e.match(fn) || []
25791 te = "Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",
25792 ne = "Expected a function",
25793 re = "__lodash_hash_undefined__",
25795 oe = "__lodash_placeholder__",
25818 Me = 9007199254740991,
25819 Se = 1.7976931348623157e308,
25829 ["curryRight", me],
25832 ["partialRight", ve],
25835 Re = "[object Arguments]",
25836 Pe = "[object Array]",
25837 He = "[object AsyncFunction]",
25838 je = "[object Boolean]",
25839 Le = "[object Date]",
25840 Fe = "[object DOMException]",
25841 qe = "[object Error]",
25842 Ue = "[object Function]",
25843 Ve = "[object GeneratorFunction]",
25844 Be = "[object Map]",
25845 ze = "[object Number]",
25846 We = "[object Null]",
25847 Ye = "[object Object]",
25848 Ge = "[object Proxy]",
25849 Ke = "[object RegExp]",
25850 Ze = "[object Set]",
25851 Xe = "[object String]",
25852 Qe = "[object Symbol]",
25853 Je = "[object Undefined]",
25854 et = "[object WeakMap]",
25855 tt = "[object WeakSet]",
25856 nt = "[object ArrayBuffer]",
25857 rt = "[object DataView]",
25858 it = "[object Float32Array]",
25859 ot = "[object Float64Array]",
25860 at = "[object Int8Array]",
25861 st = "[object Int16Array]",
25862 ct = "[object Int32Array]",
25863 lt = "[object Uint8Array]",
25864 ut = "[object Uint8ClampedArray]",
25865 dt = "[object Uint16Array]",
25866 ft = "[object Uint32Array]",
25867 ht = /\b__p \+= '';/g,
25868 pt = /\b(__p \+=) '' \+/g,
25869 mt = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
25870 gt = /&(?:amp|lt|gt|quot|#39);/g,
25872 bt = RegExp(gt.source),
25873 yt = RegExp(vt.source),
25874 $t = /<%-([\s\S]+?)%>/g,
25875 _t = /<%([\s\S]+?)%>/g,
25876 wt = /<%=([\s\S]+?)%>/g,
25877 Et = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
25880 kt = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
25881 Tt = /[\\^$.*+?()[\]{}|]/g,
25882 Mt = RegExp(Tt.source),
25886 Dt = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
25887 Nt = /\{\n\/\* \[wrapped with (.+)\] \*/,
25889 Rt = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
25891 Ht = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
25893 Lt = /^[-+]0x[0-9a-f]+$/i,
25895 qt = /^\[object .+?Constructor\]$/,
25896 Ut = /^0o[0-7]+$/i,
25897 Vt = /^(?:0|[1-9]\d*)$/,
25898 Bt = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
25900 Wt = /['\n\r\u2028\u2029\\]/g,
25901 Yt = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
25902 Gt = "\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
25903 Kt = "[" + Gt + "]",
25904 Zt = "[" + Yt + "]",
25905 Xt = "[a-z\\xdf-\\xf6\\xf8-\\xff]",
25906 Qt = "[^\\ud800-\\udfff" + Gt + "\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",
25907 Jt = "\\ud83c[\\udffb-\\udfff]",
25908 en = "(?:\\ud83c[\\udde6-\\uddff]){2}",
25909 tn = "[\\ud800-\\udbff][\\udc00-\\udfff]",
25910 nn = "[A-Z\\xc0-\\xd6\\xd8-\\xde]",
25911 rn = "(?:" + Xt + "|" + Qt + ")",
25912 on = "(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",
25913 an = "[\\ufe0e\\ufe0f]?" + on + ("(?:\\u200d(?:" + ["[^\\ud800-\\udfff]", en, tn].join("|") + ")[\\ufe0e\\ufe0f]?" + on + ")*"),
25914 sn = "(?:" + ["[\\u2700-\\u27bf]", en, tn].join("|") + ")" + an,
25915 cn = "(?:" + ["[^\\ud800-\\udfff]" + Zt + "?", Zt, en, tn, "[\\ud800-\\udfff]"].join("|") + ")",
25916 ln = RegExp("['’]", "g"),
25917 un = RegExp(Zt, "g"),
25918 dn = RegExp(Jt + "(?=" + Jt + ")|" + cn + an, "g"),
25919 fn = RegExp([nn + "?" + Xt + "+(?:['’](?:d|ll|m|re|s|t|ve))?(?=" + [Kt, nn, "$"].join("|") + ")", "(?:[A-Z\\xc0-\\xd6\\xd8-\\xde]|[^\\ud800-\\udfff\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\d+\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde])+(?:['’](?:D|LL|M|RE|S|T|VE))?(?=" + [Kt, nn + rn, "$"].join("|") + ")", nn + "?" + rn + "+(?:['’](?:d|ll|m|re|s|t|ve))?", nn + "+(?:['’](?:D|LL|M|RE|S|T|VE))?", "\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)", "\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)", "\\d+", sn].join("|"), "g"),
25920 hn = RegExp("[\\u200d\\ud800-\\udfff" + Yt + "\\ufe0e\\ufe0f]"),
25921 pn = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
25922 mn = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array", "Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol", "TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_", "clearTimeout", "isFinite", "parseInt", "setTimeout"],
25925 vn[it] = vn[ot] = vn[at] = vn[st] = vn[ct] = vn[lt] = vn[ut] = vn[dt] = vn[ft] = !0, vn[Re] = vn[Pe] = vn[nt] = vn[je] = vn[rt] = vn[Le] = vn[qe] = vn[Ue] = vn[Be] = vn[ze] = vn[Ye] = vn[Ke] = vn[Ze] = vn[Xe] = vn[et] = !1;
25927 bn[Re] = bn[Pe] = bn[nt] = bn[rt] = bn[je] = bn[Le] = bn[it] = bn[ot] = bn[at] = bn[st] = bn[ct] = bn[Be] = bn[ze] = bn[Ye] = bn[Ke] = bn[Ze] = bn[Xe] = bn[Qe] = bn[lt] = bn[ut] = bn[dt] = bn[ft] = !0, bn[qe] = bn[Ue] = bn[et] = !1;
26144 xn = "object" == typeof global && global && global.Object === Object && global,
26145 kn = "object" == typeof self && self && self.Object === Object && self,
26146 Tn = xn || kn || Function("return this")(),
26147 Mn = "object" == typeof exports && exports && !exports.nodeType && exports,
26148 Sn = Mn && "object" == typeof module && module && !module.nodeType && module,
26149 An = Sn && Sn.exports === Mn,
26150 On = An && xn.process,
26153 return On && On.binding && On.binding("util")
26156 Nn = Dn && Dn.isArrayBuffer,
26157 In = Dn && Dn.isDate,
26158 Rn = Dn && Dn.isMap,
26159 Pn = Dn && Dn.isRegExp,
26160 Hn = Dn && Dn.isSet,
26161 jn = Dn && Dn.isTypedArray,
26166 Vn = function m(C) {
26168 if (ta(e) && !Bc(e) && !(e instanceof Rt)) {
26169 if (e instanceof X) return e;
26170 if (Ba.call(e, "__wrapped__")) return xo(e)
26178 this.__wrapped__ = e, this.__actions__ = [], this.__chain__ = !!t, this.__index__ = 0, this.__values__ = J
26182 this.__wrapped__ = e, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this.__iteratees__ = [], this.__takeCount__ = Oe, this.__views__ = []
26187 n = null == e ? 0 : e.length;
26188 for (this.clear(); ++t < n;) {
26190 this.set(r[0], r[1])
26196 n = null == e ? 0 : e.length;
26197 for (this.clear(); ++t < n;) {
26199 this.set(r[0], r[1])
26205 n = null == e ? 0 : e.length;
26206 for (this.clear(); ++t < n;) {
26208 this.set(r[0], r[1])
26214 n = null == e ? 0 : e.length;
26215 for (this.__data__ = new Kt; ++t < n;) this.add(e[t])
26219 var t = this.__data__ = new Gt(e);
26223 function Qt(e, t) {
26226 i = !n && !r && Wc(e),
26227 o = !n && !r && !i && Xc(e),
26228 a = n || r || i || o,
26229 s = a ? M(e.length, Ha) : [],
26231 for (var l in e) !t && !Ba.call(e, l) || a && ("length" == l || i && ("offset" == l || "parent" == l) || o && ("buffer" == l || "byteLength" == l || "byteOffset" == l) || ro(l, c)) || s.push(l);
26237 return t ? e[wr(0, t - 1)] : J
26240 function en(e, t) {
26241 return _o(ai(e), hn(t, 0, e.length))
26248 function nn(e, t, n) {
26249 (n === J || Yo(e[t], n)) && (n !== J || t in e) || dn(e, t, n)
26252 function rn(e, t, n) {
26254 Ba.call(e, t) && Yo(r, n) && (n !== J || t in e) || dn(e, t, n)
26257 function on(e, t) {
26258 for (var n = e.length; n--;)
26259 if (Yo(e[n][0], t)) return n;
26263 function an(e, t, n, r) {
26264 return Us(e, function(e, i, o) {
26269 function sn(e, t) {
26270 return e && si(t, ma(t), e)
26273 function cn(e, t) {
26274 return e && si(t, ga(t), e)
26277 function dn(e, t, n) {
26278 "__proto__" == t && cs ? cs(e, t, {
26286 function fn(e, t) {
26287 for (var n = -1, r = t.length, i = Aa(r), o = null == e; ++n < r;) i[n] = o ? J : ha(e, t[n]);
26291 function hn(e, t, n) {
26292 return e === e && (n !== J && (e = e <= n ? e : n), t !== J && (e = e >= t ? e : t)), e
26295 function pn(e, t, n, r, o, a) {
26299 if (n && (s = o ? n(e, r, o, a) : n(e)), s !== J) return s;
26300 if (!ea(e)) return e;
26303 if (s = Qi(e), !c) return ai(e, s)
26306 h = f == Ue || f == Ve;
26307 if (Wc(e)) return Gr(e, c);
26308 if (f == Ye || f == Re || h && !o) {
26309 if (s = l || h ? {} : Ji(e), !c) return l ? li(e, cn(s, e)) : ci(e, sn(s, e))
26311 if (!bn[f]) return o ? e : {};
26312 s = eo(e, f, pn, c)
26319 var m = u ? l ? qi : Fi : l ? ga : ma,
26321 return i(g || e, function(r, i) {
26322 g && (r = e[i = r]), rn(s, i, pn(r, t, n, i, e, a))
26328 return function(n) {
26333 function $n(e, t, n) {
26335 if (null == e) return !r;
26336 for (e = Ra(e); r--;) {
26340 if (a === J && !(i in e) || !o(a)) return !1
26345 function _n(e, t, n) {
26346 if ("function" != typeof e) throw new ja(ne);
26347 return rc(function() {
26352 function wn(e, t, n, r) {
26360 n && (t = u(t, A(n))), r ? (o = l, a = !1) : t.length >= ee && (o = D, a = !1, t = new Zt(t));
26361 e: for (; ++i < s;) {
26363 p = null == n ? h : n(h);
26364 if (h = r || 0 !== h ? h : 0, a && p === p) {
26365 for (var m = f; m--;)
26366 if (t[m] === p) continue e;
26368 } else o(t, p, r) || d.push(h)
26373 function xn(e, t) {
26375 return Us(e, function(e, r, i) {
26376 return n = !!t(e, r, i)
26380 function kn(e, t, n) {
26381 for (var r = -1, i = e.length; ++r < i;) {
26384 if (null != a && (s === J ? a === a && !oa(a) : n(a, s))) var s = a,
26390 function Mn(e, t, n, r) {
26392 for ((n = ca(n)) < 0 && (n = -n > i ? 0 : i + n), (r = r === J || r > i ? i : ca(r)) < 0 && (r += i), r = n > r ? 0 : la(r); n < r;) e[n++] = t;
26396 function Sn(e, t) {
26398 return Us(e, function(e, r, i) {
26399 t(e, r, i) && n.push(e)
26403 function On(e, t, n, r, i) {
26406 for (n || (n = no), i || (i = []); ++o < a;) {
26408 t > 0 && n(s) ? t > 1 ? On(s, t - 1, n, r, i) : d(i, s) : r || (i[i.length] = s)
26413 function Dn(e, t) {
26414 return e && Bs(e, t, ma)
26417 function Ln(e, t) {
26418 return e && zs(e, t, ma)
26421 function Bn(e, t) {
26422 return s(t, function(t) {
26427 function zn(e, t) {
26428 for (var n = 0, r = (t = Wr(t, e)).length; null != e && n < r;) e = e[wo(t[n++])];
26429 return n && n == r ? e : J
26432 function Wn(e, t, n) {
26434 return Bc(e) ? r : d(r, n(e))
26438 return null == e ? e === J ? Je : We : ss && ss in Ra(e) ? Gi(e) : mo(e)
26441 function Gn(e, t) {
26445 function Kn(e, t) {
26446 return null != e && Ba.call(e, t)
26449 function Zn(e, t) {
26450 return null != e && t in Ra(e)
26453 function Xn(e, t, n) {
26454 return e >= $s(t, n) && e < ys(t, n)
26457 function Qn(e, t, n) {
26458 for (var r = n ? l : c, i = e[0].length, o = e.length, a = o, s = Aa(o), d = 1 / 0, f = []; a--;) {
26460 a && t && (h = u(h, A(t))), d = $s(h.length, d), s[a] = !n && (t || i >= 120 && h.length >= 120) ? new Zt(a && h) : J
26465 e: for (; ++p < i && f.length < d;) {
26468 if (g = n || 0 !== g ? g : 0, !(m ? D(m, v) : r(f, v, n))) {
26469 for (a = o; --a;) {
26471 if (!(b ? D(b, v) : r(e[a], v, n))) continue e
26473 m && m.push(v), f.push(g)
26479 function Jn(e, t, n, r) {
26480 return Dn(e, function(e, i, o) {
26485 function er(e, t, r) {
26486 var i = null == (e = vo(e, t = Wr(t, e))) ? e : e[wo(Ao(t))];
26487 return null == i ? J : n(i, e, r)
26491 return ta(e) && Yn(e) == Re
26494 function nr(e, t, n, r, i) {
26495 return e === t || (null == e || null == t || !ta(e) && !ta(t) ? e !== e && t !== t : rr(e, t, n, r, nr, i))
26498 function rr(e, t, n, r, i, o) {
26501 c = a ? Pe : ec(e),
26502 l = s ? Pe : ec(t),
26503 u = (c = c == Re ? Ye : c) == Ye,
26504 d = (l = l == Re ? Ye : l) == Ye,
26507 if (!Wc(t)) return !1;
26510 if (f && !u) return o || (o = new Xt), a || Xc(e) ? Pi(e, t, n, r, i, o) : Hi(e, t, c, n, r, i, o);
26512 var h = u && Ba.call(e, "__wrapped__"),
26513 p = d && Ba.call(t, "__wrapped__");
26515 var m = h ? e.value() : e,
26516 g = p ? t.value() : t;
26517 return o || (o = new Xt), i(m, g, n, r, o)
26520 return !!f && (o || (o = new Xt), ji(e, t, n, r, i, o))
26523 function ir(e, t, n, r) {
26527 if (null == e) return !o;
26528 for (e = Ra(e); i--;) {
26530 if (a && s[2] ? s[1] !== e[s[0]] : !(s[0] in e)) return !1
26533 var c = (s = n[i])[0],
26537 if (l === J && !(c in e)) return !1
26540 if (r) var f = r(l, u, c, e, t, d);
26541 if (!(f === J ? nr(u, l, le | ue, r, d) : f)) return !1
26548 return !(!ea(e) || co(e)) && (Xo(e) ? Za : qt).test(Eo(e))
26552 return "function" == typeof e ? e : null == e ? Ea : "object" == typeof e ? Bc(e) ? fr(e[0], e[1]) : dr(e) : Ta(e)
26556 if (!lo(e)) return bs(e);
26558 for (var n in Ra(e)) Ba.call(e, n) && "constructor" != n && t.push(n);
26563 if (!ea(e)) return po(e);
26566 for (var r in e)("constructor" != r || !t && Ba.call(e, r)) && n.push(r);
26570 function lr(e, t) {
26574 function ur(e, t) {
26576 r = Go(e) ? Aa(e.length) : [];
26577 return Us(e, function(e, i, o) {
26578 r[++n] = t(e, i, o)
26584 return 1 == t.length && t[0][2] ? fo(t[0][0], t[0][1]) : function(n) {
26585 return n === e || ir(n, e, t)
26589 function fr(e, t) {
26590 return oo(e) && uo(t) ? fo(wo(e), t) : function(n) {
26592 return r === J && r === t ? pa(n, e) : nr(t, r, le | ue)
26596 function hr(e, t, n, r, i) {
26597 e !== t && Bs(t, function(o, a) {
26598 if (ea(o)) i || (i = new Xt), pr(e, t, a, n, hr, r, i);
26600 var s = r ? r(e[a], o, a + "", e, t, i) : J;
26601 s === J && (s = o), nn(e, a, s)
26606 function pr(e, t, n, r, i, o, a) {
26610 if (l) nn(e, n, l);
26612 var u = o ? o(s, c, n + "", e, t, a) : J,
26617 p = !f && !h && Xc(c);
26618 u = c, f || h || p ? Bc(s) ? u = s : Ko(s) ? u = ai(s) : h ? (d = !1, u = Gr(c, !0)) : p ? (d = !1, u = ti(c, !0)) : u = [] : ra(c) || Vc(c) ? (u = s, Vc(s) ? u = da(s) : (!ea(s) || r && Xo(s)) && (u = Ji(c))) : d = !1
26620 d && (a.set(c, u), i(u, c, r, o, a), a.delete(c)), nn(e, n, u)
26624 function mr(e, t) {
26626 if (n) return t += t < 0 ? n : 0, ro(t, n) ? e[t] : J
26629 function gr(e, t, n) {
26631 return t = u(t.length ? t : [Ea], A(Bi())), k(ur(e, function(e, n, i) {
26633 criteria: u(t, function(t) {
26639 }), function(e, t) {
26644 function vr(e, t) {
26645 return br(e, t, function(t, n) {
26650 function br(e, t, n) {
26651 for (var r = -1, i = t.length, o = {}; ++r < i;) {
26654 n(s, a) && Mr(o, Wr(a, e), s)
26660 return function(t) {
26665 function $r(e, t, n, r) {
26670 for (e === t && (t = ai(t)), n && (s = u(e, A(n))); ++o < a;)
26671 for (var c = 0, l = t[o], d = n ? n(l) : l;
26672 (c = i(s, d, c, r)) > -1;) s !== e && is.call(s, c, 1), is.call(e, c, 1);
26676 function _r(e, t) {
26677 for (var n = e ? t.length : 0, r = n - 1; n--;) {
26679 if (n == r || i !== o) {
26681 ro(i) ? is.call(e, i, 1) : jr(e, i)
26687 function wr(e, t) {
26688 return e + hs(Es() * (t - e + 1))
26691 function Er(e, t, n, r) {
26692 for (var i = -1, o = ys(fs((t - e) / (n || 1)), 0), a = Aa(o); o--;) a[r ? o : ++i] = e, e += n;
26696 function Cr(e, t) {
26698 if (!e || t < 1 || t > Me) return n;
26700 t % 2 && (n += e), (t = hs(t / 2)) && (e += e)
26705 function xr(e, t) {
26706 return ic(go(e, t, Ea), e + "")
26713 function Tr(e, t) {
26715 return _o(n, hn(t, 0, n.length))
26718 function Mr(e, t, n, r) {
26719 if (!ea(e)) return e;
26720 for (var i = -1, o = (t = Wr(t, e)).length, a = o - 1, s = e; null != s && ++i < o;) {
26725 (l = r ? r(u, c, s) : J) === J && (l = ea(u) ? u : ro(t[i + 1]) ? [] : {})
26727 rn(s, c, l), s = s[c]
26736 function Ar(e, t, n) {
26739 t < 0 && (t = -t > i ? 0 : i + t), (n = n > i ? i : n) < 0 && (n += i), i = t > n ? 0 : n - t >>> 0, t >>>= 0;
26740 for (var o = Aa(i); ++r < i;) o[r] = e[r + t];
26744 function Or(e, t) {
26746 return Us(e, function(e, r, i) {
26747 return !(n = t(e, r, i))
26751 function Dr(e, t, n) {
26753 i = null == e ? r : e.length;
26754 if ("number" == typeof t && t === t && i <= Ne) {
26756 var o = r + i >>> 1,
26758 null !== a && !oa(a) && (n ? a <= t : a < t) ? r = o + 1 : i = o
26762 return Nr(e, t, Ea, n)
26765 function Nr(e, t, n, r) {
26767 for (var i = 0, o = null == e ? 0 : e.length, a = t !== t, s = null === t, c = oa(t), l = t === J; i < o;) {
26768 var u = hs((i + o) / 2),
26774 if (a) var g = r || p;
26775 else g = l ? p && (r || f) : s ? p && f && (r || !h) : c ? p && f && !h && (r || !m) : !h && !m && (r ? d <= t : d < t);
26776 g ? i = u + 1 : o = u
26781 function Ir(e, t) {
26782 for (var n = -1, r = e.length, i = 0, o = []; ++n < r;) {
26785 if (!n || !Yo(s, c)) {
26787 o[i++] = 0 === a ? 0 : a
26794 return "number" == typeof e ? e : oa(e) ? Ae : +e
26798 if ("string" == typeof e) return e;
26799 if (Bc(e)) return u(e, Pr) + "";
26800 if (oa(e)) return Fs ? Fs.call(e) : "";
26802 return "0" == t && 1 / e == -Te ? "-0" : t
26805 function Hr(e, t, n) {
26812 if (n) a = !1, i = l;
26813 else if (o >= ee) {
26814 var d = t ? null : Zs(e);
26815 if (d) return B(d);
26816 a = !1, i = D, u = new Zt
26817 } else u = t ? [] : s;
26818 e: for (; ++r < o;) {
26821 if (f = n || 0 !== f ? f : 0, a && h === h) {
26822 for (var p = u.length; p--;)
26823 if (u[p] === h) continue e;
26824 t && u.push(h), s.push(f)
26825 } else i(u, h, n) || (u !== s && u.push(h), s.push(f))
26830 function jr(e, t) {
26831 return t = Wr(t, e), null == (e = vo(e, t)) || delete e[wo(Ao(t))]
26834 function Lr(e, t, n, r) {
26835 return Mr(e, t, n(zn(e, t)), r)
26838 function Fr(e, t, n, r) {
26839 for (var i = e.length, o = r ? i : -1;
26840 (r ? o-- : ++o < i) && t(e[o], o, e););
26841 return n ? Ar(e, r ? 0 : o, r ? o + 1 : i) : Ar(e, r ? o + 1 : 0, r ? i : o)
26844 function qr(e, t) {
26846 return n instanceof Rt && (n = n.value()), f(t, function(e, t) {
26847 return t.func.apply(t.thisArg, d([e], t.args))
26851 function Ur(e, t, n) {
26853 if (r < 2) return r ? Hr(e[0]) : [];
26854 for (var i = -1, o = Aa(r); ++i < r;)
26855 for (var a = e[i], s = -1; ++s < r;) s != i && (o[i] = wn(o[i] || a, e[s], t, n));
26856 return Hr(On(o, 1), t, n)
26859 function Vr(e, t, n) {
26860 for (var r = -1, i = e.length, o = t.length, a = {}; ++r < i;) {
26861 var s = r < o ? t[r] : J;
26868 return Ko(e) ? e : []
26872 return "function" == typeof e ? e : Ea
26875 function Wr(e, t) {
26876 return Bc(e) ? e : oo(e, t) ? [e] : oc(fa(e))
26879 function Yr(e, t, n) {
26881 return n = n === J ? r : n, !t && n >= r ? e : Ar(e, t, n)
26884 function Gr(e, t) {
26885 if (t) return e.slice();
26887 r = es ? es(n) : new e.constructor(n);
26888 return e.copy(r), r
26892 var t = new e.constructor(e.byteLength);
26893 return new Ja(t).set(new Ja(e)), t
26896 function Zr(e, t) {
26897 var n = t ? Kr(e.buffer) : e.buffer;
26898 return new e.constructor(n, e.byteOffset, e.byteLength)
26901 function Xr(t, n, r) {
26902 return f(n ? r(q(t), ae) : q(t), e, new t.constructor)
26906 var t = new e.constructor(e.source, jt.exec(e));
26907 return t.lastIndex = e.lastIndex, t
26910 function Jr(e, n, r) {
26911 return f(n ? r(B(e), ae) : B(e), t, new e.constructor)
26915 return Ls ? Ra(Ls.call(e)) : {}
26918 function ti(e, t) {
26919 var n = t ? Kr(e.buffer) : e.buffer;
26920 return new e.constructor(n, e.byteOffset, e.length)
26923 function ni(e, t) {
26933 if (!s && !l && !o && e > t || o && a && c && !s && !l || r && a && c || !n && c || !i) return 1;
26934 if (!r && !o && !l && e < t || l && n && i && !r && !o || s && n && i || !a && i || !c) return -1
26939 function ri(e, t, n) {
26940 for (var r = -1, i = e.criteria, o = t.criteria, a = i.length, s = n.length; ++r < a;) {
26941 var c = ni(i[r], o[r]);
26942 if (c) return r >= s ? c : c * ("desc" == n[r] ? -1 : 1)
26944 return e.index - t.index
26947 function ii(e, t, n, r) {
26948 for (var i = -1, o = e.length, a = n.length, s = -1, c = t.length, l = ys(o - a, 0), u = Aa(c + l), d = !r; ++s < c;) u[s] = t[s];
26949 for (; ++i < a;)(d || i < o) && (u[n[i]] = e[i]);
26950 for (; l--;) u[s++] = e[i++];
26954 function oi(e, t, n, r) {
26955 for (var i = -1, o = e.length, a = -1, s = n.length, c = -1, l = t.length, u = ys(o - s, 0), d = Aa(u + l), f = !r; ++i < u;) d[i] = e[i];
26956 for (var h = i; ++c < l;) d[h + c] = t[c];
26957 for (; ++a < s;)(f || i < o) && (d[h + n[a]] = e[i++]);
26961 function ai(e, t) {
26964 for (t || (t = Aa(r)); ++n < r;) t[n] = e[n];
26968 function si(e, t, n, r) {
26971 for (var o = -1, a = t.length; ++o < a;) {
26973 c = r ? r(n[s], e[s], s, n, e) : J;
26974 c === J && (c = e[s]), i ? dn(n, s, c) : rn(n, s, c)
26979 function ci(e, t) {
26980 return si(e, Qs(e), t)
26983 function li(e, t) {
26984 return si(e, Js(e), t)
26987 function ui(e, t) {
26988 return function(n, i) {
26989 var o = Bc(n) ? r : an,
26991 return o(n, e, Bi(i, 2), a)
26996 return xr(function(t, n) {
26999 o = i > 1 ? n[i - 1] : J,
27000 a = i > 2 ? n[2] : J;
27001 for (o = e.length > 3 && "function" == typeof o ? (i--, o) : J, a && io(n[0], n[1], a) && (o = i < 3 ? J : o, i = 1), t = Ra(t); ++r < i;) {
27009 function fi(e, t) {
27010 return function(n, r) {
27011 if (null == n) return n;
27012 if (!Go(n)) return e(n, r);
27013 for (var i = n.length, o = t ? i : -1, a = Ra(n);
27014 (t ? o-- : ++o < i) && !1 !== r(a[o], o, a););
27020 return function(t, n, r) {
27021 for (var i = -1, o = Ra(t), a = r(t), s = a.length; s--;) {
27022 var c = a[e ? s : ++i];
27023 if (!1 === n(o[c], c, o)) break
27029 function pi(e, t, n) {
27031 return (this && this !== Tn && this instanceof r ? o : e).apply(i ? n : this, arguments)
27039 return function(t) {
27040 var n = j(t = fa(t)) ? K(t) : J,
27041 r = n ? n[0] : t.charAt(0),
27042 i = n ? Yr(n, 1).join("") : t.slice(1);
27048 return function(t) {
27049 return f(_a($a(t).replace(ln, "")), e, "")
27054 return function() {
27056 switch (t.length) {
27060 return new e(t[0]);
27062 return new e(t[0], t[1]);
27064 return new e(t[0], t[1], t[2]);
27066 return new e(t[0], t[1], t[2], t[3]);
27068 return new e(t[0], t[1], t[2], t[3], t[4]);
27070 return new e(t[0], t[1], t[2], t[3], t[4], t[5]);
27072 return new e(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
27074 var n = qs(e.prototype),
27076 return ea(r) ? r : n
27080 function bi(e, t, r) {
27082 for (var a = arguments.length, s = Aa(a), c = a, l = Vi(i); c--;) s[c] = arguments[c];
27083 var u = a < 3 && s[0] !== l && s[a - 1] !== l ? [] : V(s, l);
27084 return (a -= u.length) < r ? Si(e, t, _i, i.placeholder, J, s, u, J, J, r - a) : n(this && this !== Tn && this instanceof i ? o : e, this, s)
27091 return function(t, n, r) {
27095 t = ma(t), n = function(e) {
27096 return o(i[e], e, i)
27099 var a = e(t, n, r);
27100 return a > -1 ? i[o ? t[a] : a] : J
27105 return Li(function(t) {
27108 i = X.prototype.thru;
27109 for (e && t.reverse(); r--;) {
27111 if ("function" != typeof o) throw new ja(ne);
27112 if (i && !a && "wrapper" == Ui(o)) var a = new X([], !0)
27114 for (r = a ? r : n; ++r < n;) {
27115 var s = Ui(o = t[r]),
27116 c = "wrapper" == s ? Xs(o) : J;
27117 a = c && so(c[0]) && c[1] == (be | pe | ge | ye) && !c[4].length && 1 == c[9] ? a[Ui(c[0])].apply(a, c[3]) : 1 == o.length && so(o) ? a[s]() : a.thru(o)
27119 return function() {
27122 if (a && 1 == e.length && Bc(r)) return a.plant(r).value();
27123 for (var i = 0, o = n ? t[i].apply(this, e) : r; ++i < n;) o = t[i].call(this, o);
27129 function _i(e, t, n, r, i, o, a, s, c, l) {
27131 for (var v = arguments.length, b = Aa(v), y = v; y--;) b[y] = arguments[y];
27132 if (p) var $ = Vi(u),
27134 if (r && (b = ii(b, r, i, p)), o && (b = oi(b, o, a, p)), v -= _, p && v < l) {
27136 return Si(e, t, _i, u.placeholder, n, b, w, s, c, l - v)
27138 var E = f ? n : this,
27140 return v = b.length, s ? b = bo(b, s) : m && v > 1 && b.reverse(), d && c < v && (b.length = c), this && this !== Tn && this instanceof u && (C = g || vi(C)), C.apply(E, b)
27151 function wi(e, t) {
27152 return function(n, r) {
27153 return Jn(n, e, t(r), {})
27157 function Ei(e, t) {
27158 return function(n, r) {
27160 if (n === J && r === J) return t;
27161 if (n !== J && (i = n), r !== J) {
27162 if (i === J) return r;
27163 "string" == typeof n || "string" == typeof r ? (n = Pr(n), r = Pr(r)) : (n = Rr(n), r = Rr(r)), i = e(n, r)
27170 return Li(function(t) {
27171 return t = u(t, A(Bi())), xr(function(r) {
27173 return e(t, function(e) {
27180 function xi(e, t) {
27181 var n = (t = t === J ? " " : Pr(t)).length;
27182 if (n < 2) return n ? Cr(t, e) : t;
27183 var r = Cr(t, fs(e / G(t)));
27184 return j(t) ? Yr(K(r), 0, e).join("") : r.slice(0, e)
27187 function ki(e, t, r, i) {
27189 for (var t = -1, c = arguments.length, l = -1, u = i.length, d = Aa(u + c), f = this && this !== Tn && this instanceof o ? s : e; ++l < u;) d[l] = i[l];
27190 for (; c--;) d[l++] = arguments[++t];
27191 return n(f, a ? r : this, d)
27199 return function(t, n, r) {
27200 return r && "number" != typeof r && io(t, n, r) && (n = r = J), t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), r = r === J ? t < n ? 1 : -1 : sa(r), Er(t, n, r, e)
27205 return function(t, n) {
27206 return "string" == typeof t && "string" == typeof n || (t = ua(t), n = ua(n)), e(t, n)
27210 function Si(e, t, n, r, i, o, a, s, c, l) {
27216 t |= u ? ge : ve, (t &= ~(u ? ve : ge)) & he || (t &= ~(de | fe));
27217 var m = [e, t, i, h, d, p, f, s, c, l],
27219 return so(e) && nc(g, m), g.placeholder = r, yo(g, e, t)
27224 return function(e, n) {
27225 if (e = ua(e), n = null == n ? 0 : $s(ca(n), 292)) {
27226 var r = (fa(e) + "e").split("e");
27227 return +((r = (fa(t(r[0] + "e" + (+r[1] + n))) + "e").split("e"))[0] + "e" + (+r[1] - n))
27234 return function(t) {
27236 return n == Be ? q(t) : n == Ze ? z(t) : S(t, e(t))
27240 function Di(e, t, n, r, i, o, a, s) {
27242 if (!c && "function" != typeof e) throw new ja(ne);
27243 var l = r ? r.length : 0;
27244 if (l || (t &= ~(ge | ve), r = i = J), a = a === J ? a : ys(ca(a), 0), s = s === J ? s : ca(s), l -= i ? i.length : 0, t & ve) {
27249 var f = c ? J : Xs(e),
27250 h = [e, t, n, r, i, u, d, o, a, s];
27251 if (f && ho(h, f), e = h[0], t = h[1], n = h[2], r = h[3], i = h[4], !(s = h[9] = h[9] === J ? c ? 0 : e.length : ys(h[9] - l, 0)) && t & (pe | me) && (t &= ~(pe | me)), t && t != de) p = t == pe || t == me ? bi(e, t, s) : t != ge && t != (de | ge) || i.length ? _i.apply(J, h) : ki(e, t, n, r);
27252 else var p = pi(e, t, n);
27253 return yo((f ? Ws : nc)(p, h), e, t)
27256 function Ni(e, t, n, r) {
27257 return e === J || Yo(e, qa[n]) && !Ba.call(r, n) ? t : e
27260 function Ii(e, t, n, r, i, o) {
27261 return ea(e) && ea(t) && (o.set(t, e), hr(e, t, J, Ii, o), o.delete(t)), e
27265 return ra(e) ? J : e
27268 function Pi(e, t, n, r, i, o) {
27272 if (s != c && !(a && c > s)) return !1;
27274 if (l && o.get(t)) return l == t;
27277 f = n & ue ? new Zt : J;
27278 for (o.set(e, t), o.set(t, e); ++u < s;) {
27281 if (r) var g = a ? r(m, h, u, t, e, o) : r(h, m, u, e, t, o);
27288 if (!p(t, function(e, t) {
27289 if (!D(f, t) && (h === e || i(h, e, n, r, o))) return f.push(t)
27294 } else if (h !== m && !i(h, m, n, r, o)) {
27299 return o.delete(e), o.delete(t), d
27302 function Hi(e, t, n, r, i, o, a) {
27305 if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;
27306 e = e.buffer, t = t.buffer;
27308 return !(e.byteLength != t.byteLength || !o(new Ja(e), new Ja(t)));
27314 return e.name == t.name && e.message == t.message;
27317 return e == t + "";
27322 if (s || (s = B), e.size != t.size && !c) return !1;
27324 if (l) return l == t;
27325 r |= ue, a.set(e, t);
27326 var u = Pi(s(e), s(t), r, i, o, a);
27327 return a.delete(e), u;
27329 if (Ls) return Ls.call(e) == Ls.call(t)
27334 function ji(e, t, n, r, i, o) {
27338 if (c != Fi(t).length && !a) return !1;
27339 for (var l = c; l--;) {
27341 if (!(a ? u in t : Ba.call(t, u))) return !1
27344 if (d && o.get(t)) return d == t;
27346 o.set(e, t), o.set(t, e);
27347 for (var h = a; ++l < c;) {
27348 var p = e[u = s[l]],
27350 if (r) var g = a ? r(m, p, u, t, e, o) : r(p, m, u, e, t, o);
27351 if (!(g === J ? p === m || i(p, m, n, r, o) : g)) {
27355 h || (h = "constructor" == u)
27358 var v = e.constructor,
27360 v != b && "constructor" in e && "constructor" in t && !("function" == typeof v && v instanceof v && "function" == typeof b && b instanceof b) && (f = !1)
27362 return o.delete(e), o.delete(t), f
27366 return ic(go(e, J, Mo), e + "")
27370 return Wn(e, ma, Qs)
27374 return Wn(e, ga, Js)
27378 for (var t = e.name + "", n = Ds[t], r = Ba.call(Ds, t) ? n.length : 0; r--;) {
27381 if (null == o || o == e) return i.name
27387 return (Ba.call(W, "placeholder") ? W : e).placeholder
27391 var e = W.iteratee || Ca;
27392 return e = e === Ca ? ar : e, arguments.length ? e(arguments[0], arguments[1]) : e
27395 function zi(e, t) {
27396 var n = e.__data__;
27397 return ao(t) ? n["string" == typeof t ? "string" : "hash"] : n.map
27401 for (var t = ma(e), n = t.length; n--;) {
27404 t[n] = [r, i, uo(i)]
27409 function Yi(e, t) {
27411 return or(n) ? n : J
27415 var t = Ba.call(e, ss),
27421 var i = Ya.call(e);
27422 return r && (t ? e[ss] = n : delete e[ss]), i
27425 function Ki(e, t, n) {
27426 for (var r = -1, i = n.length; ++r < i;) {
27450 var t = e.match(Nt);
27451 return t ? t[1].split(It) : []
27454 function Xi(e, t, n) {
27455 for (var r = -1, i = (t = Wr(t, e)).length, o = !1; ++r < i;) {
27457 if (!(o = null != e && n(e, a))) break;
27460 return o || ++r != i ? o : !!(i = null == e ? 0 : e.length) && Jo(i) && ro(a, i) && (Bc(e) || Vc(e))
27465 n = e.constructor(t);
27466 return t && "string" == typeof e[0] && Ba.call(e, "index") && (n.index = e.index, n.input = e.input), n
27470 return "function" != typeof e.constructor || lo(e) ? {} : qs(ts(e))
27473 function eo(e, t, n, r) {
27474 var i = e.constructor;
27494 return Xr(e, r, n);
27501 return Jr(e, r, n);
27507 function to(e, t) {
27511 return t[r] = (n > 1 ? "& " : "") + t[r], t = t.join(n > 2 ? ", " : " "), e.replace(Dt, "{\n/* [wrapped with " + t + "] */\n")
27515 return Bc(e) || Vc(e) || !!(os && e && e[os])
27518 function ro(e, t) {
27519 return !!(t = null == t ? Me : t) && ("number" == typeof e || Vt.test(e)) && e > -1 && e % 1 == 0 && e < t
27522 function io(e, t, n) {
27523 if (!ea(n)) return !1;
27525 return !!("number" == r ? Go(n) && ro(t, n.length) : "string" == r && t in n) && Yo(n[t], e)
27528 function oo(e, t) {
27529 if (Bc(e)) return !1;
27531 return !("number" != n && "symbol" != n && "boolean" != n && null != e && !oa(e)) || Ct.test(e) || !Et.test(e) || null != t && e in Ra(t)
27536 return "string" == t || "number" == t || "symbol" == t || "boolean" == t ? "__proto__" !== e : null === e
27542 if ("function" != typeof n || !(t in Rt.prototype)) return !1;
27543 if (e === n) return !0;
27545 return !!r && e === r[0]
27549 return !!Wa && Wa in e
27553 var t = e && e.constructor;
27554 return e === ("function" == typeof t && t.prototype || qa)
27558 return e === e && !ea(e)
27561 function fo(e, t) {
27562 return function(n) {
27563 return null != n && n[e] === t && (t !== J || e in Ra(n))
27567 function ho(e, t) {
27571 o = i < (de | fe | be),
27572 a = r == be && n == pe || r == be && n == ye && e[7].length <= t[8] || r == (be | ye) && t[7].length <= t[8] && n == pe;
27573 if (!o && !a) return e;
27574 r & de && (e[2] = t[2], i |= n & de ? 0 : he);
27578 e[3] = c ? ii(c, s, t[4]) : s, e[4] = c ? V(e[3], oe) : t[4]
27580 return (s = t[5]) && (c = e[5], e[5] = c ? oi(c, s, t[6]) : s, e[6] = c ? V(e[5], oe) : t[6]), (s = t[7]) && (e[7] = s), r & be && (e[8] = null == e[8] ? t[8] : $s(e[8], t[8])), null == e[9] && (e[9] = t[9]), e[0] = t[0], e[1] = i, e
27586 for (var n in Ra(e)) t.push(n);
27594 function go(e, t, r) {
27595 return t = ys(t === J ? e.length - 1 : t, 0),
27597 for (var i = arguments, o = -1, a = ys(i.length - t, 0), s = Aa(a); ++o < a;) s[o] = i[t + o];
27599 for (var c = Aa(t + 1); ++o < t;) c[o] = i[o];
27600 return c[t] = r(s), n(e, this, c)
27604 function vo(e, t) {
27605 return t.length < 2 ? e : zn(e, Ar(t, 0, -1))
27608 function bo(e, t) {
27609 for (var n = e.length, r = $s(t.length, n), i = ai(e); r--;) {
27611 e[r] = ro(o, n) ? i[o] : J
27616 function yo(e, t, n) {
27618 return ic(e, to(r, Co(Zi(r), n)))
27624 return function() {
27627 if (n = r, i > 0) {
27628 if (++t >= Ee) return arguments[0]
27630 return e.apply(J, arguments)
27634 function _o(e, t) {
27638 for (t = t === J ? r : t; ++n < t;) {
27641 e[o] = e[n], e[n] = a
27643 return e.length = t, e
27647 if ("string" == typeof e || oa(e)) return e;
27649 return "0" == t && 1 / e == -Te ? "-0" : t
27664 function Co(e, t) {
27665 return i(Ie, function(n) {
27666 var r = "_." + n[0];
27667 t & n[1] && !c(e, r) && e.push(r)
27672 if (e instanceof Rt) return e.clone();
27673 var t = new X(e.__wrapped__, e.__chain__);
27674 return t.__actions__ = ai(e.__actions__), t.__index__ = e.__index__, t.__values__ = e.__values__, t
27677 function ko(e, t, n) {
27678 var r = null == e ? 0 : e.length;
27680 var i = null == n ? 0 : ca(n);
27681 return i < 0 && (i = ys(r + i, 0)), b(e, Bi(t, 3), i)
27684 function To(e, t, n) {
27685 var r = null == e ? 0 : e.length;
27688 return n !== J && (i = ca(n), i = n < 0 ? ys(r + i, 0) : $s(i, r - 1)), b(e, Bi(t, 3), i, !0)
27692 return (null == e ? 0 : e.length) ? On(e, 1) : []
27696 return e && e.length ? e[0] : J
27700 var t = null == e ? 0 : e.length;
27701 return t ? e[t - 1] : J
27704 function Oo(e, t) {
27705 return e && e.length && t && t.length ? $r(e, t) : e
27709 return null == e ? e : Cs.call(e)
27713 if (!e || !e.length) return [];
27715 return e = s(e, function(e) {
27716 if (Ko(e)) return t = ys(e.length, t), !0
27717 }), M(t, function(t) {
27722 function Io(e, t) {
27723 if (!e || !e.length) return [];
27725 return null == t ? r : u(r, function(e) {
27732 return t.__chain__ = !0, t
27735 function Po(e, t) {
27739 function Ho(e, t) {
27740 return (Bc(e) ? i : Us)(e, Bi(t, 3))
27743 function jo(e, t) {
27744 return (Bc(e) ? o : Vs)(e, Bi(t, 3))
27747 function Lo(e, t) {
27748 return (Bc(e) ? u : ur)(e, Bi(t, 3))
27751 function Fo(e, t, n) {
27752 return t = n ? J : t, t = e && null == t ? e.length : t, Di(e, be, J, J, J, J, t)
27755 function qo(e, t) {
27757 if ("function" != typeof t) throw new ja(ne);
27760 return --e > 0 && (n = t.apply(this, arguments)), e <= 1 && (t = J), n
27764 function Uo(e, t, n) {
27765 var r = Di(e, pe, J, J, J, J, J, t = n ? J : t);
27766 return r.placeholder = Uo.placeholder, r
27769 function Vo(e, t, n) {
27770 var r = Di(e, me, J, J, J, J, J, t = n ? J : t);
27771 return r.placeholder = Vo.placeholder, r
27774 function Bo(e, t, n) {
27778 return u = d = J, g = t, h = e.apply(r, n)
27782 return g = e, p = rc(s, t), v ? r(e) : h
27788 return b ? $s(r, f - n) : r
27794 return m === J || n >= t || n < 0 || b && r >= f
27799 if (a(e)) return c(e);
27804 return p = J, y && u ? r(e) : (u = d = J, h)
27810 if (u = arguments, d = this, m = e, n) {
27811 if (p === J) return i(m);
27812 if (b) return p = rc(s, t), r(m)
27814 return p === J && (p = rc(s, t)), h
27816 var u, d, f, h, p, m, g = 0,
27820 if ("function" != typeof e) throw new ja(ne);
27821 return t = ua(t) || 0, ea(n) && (v = !!n.leading, f = (b = "maxWait" in n) ? ys(ua(n.maxWait) || 0, t) : f, y = "trailing" in n ? !!n.trailing : y), l.cancel = function() {
27822 p !== J && Ks(p), g = 0, u = m = d = p = J
27823 }, l.flush = function() {
27824 return p === J ? h : c(Dc())
27828 function zo(e, t) {
27829 if ("function" != typeof e || null != t && "function" != typeof t) throw new ja(ne);
27830 var n = function() {
27832 i = t ? t.apply(this, r) : r[0],
27834 if (o.has(i)) return o.get(i);
27835 var a = e.apply(this, r);
27836 return n.cache = o.set(i, a) || o, a
27838 return n.cache = new(zo.Cache || Kt), n
27842 if ("function" != typeof e) throw new ja(ne);
27843 return function() {
27845 switch (t.length) {
27847 return !e.call(this);
27849 return !e.call(this, t[0]);
27851 return !e.call(this, t[0], t[1]);
27853 return !e.call(this, t[0], t[1], t[2])
27855 return !e.apply(this, t)
27859 function Yo(e, t) {
27860 return e === t || e !== e && t !== t
27864 return null != e && Jo(e.length) && !Xo(e)
27868 return ta(e) && Go(e)
27872 if (!ta(e)) return !1;
27874 return t == qe || t == Fe || "string" == typeof e.message && "string" == typeof e.name && !ra(e)
27878 if (!ea(e)) return !1;
27880 return t == Ue || t == Ve || t == He || t == Ge
27884 return "number" == typeof e && e == ca(e)
27888 return "number" == typeof e && e > -1 && e % 1 == 0 && e <= Me
27893 return null != e && ("object" == t || "function" == t)
27897 return null != e && "object" == typeof e
27901 return "number" == typeof e || ta(e) && Yn(e) == ze
27905 if (!ta(e) || Yn(e) != Ye) return !1;
27907 if (null === t) return !0;
27908 var n = Ba.call(t, "constructor") && t.constructor;
27909 return "function" == typeof n && n instanceof n && Va.call(n) == Ga
27913 return "string" == typeof e || !Bc(e) && ta(e) && Yn(e) == Xe
27917 return "symbol" == typeof e || ta(e) && Yn(e) == Qe
27922 if (Go(e)) return ia(e) ? K(e) : ai(e);
27923 if (as && e[as]) return F(e[as]());
27925 return (t == Be ? q : t == Ze ? B : ba)(e)
27929 return e ? (e = ua(e)) === Te || e === -Te ? (e < 0 ? -1 : 1) * Se : e === e ? e : 0 : 0 === e ? e : 0
27935 return t === t ? n ? t - n : t : 0
27939 return e ? hn(ca(e), 0, Oe) : 0
27943 if ("number" == typeof e) return e;
27944 if (oa(e)) return Ae;
27946 var t = "function" == typeof e.valueOf ? e.valueOf() : e;
27947 e = ea(t) ? t + "" : t
27949 if ("string" != typeof e) return 0 === e ? e : +e;
27950 e = e.replace(St, "");
27951 var n = Ft.test(e);
27952 return n || Ut.test(e) ? Cn(e.slice(2), n ? 2 : 8) : Lt.test(e) ? Ae : +e
27956 return si(e, ga(e))
27960 return null == e ? "" : Pr(e)
27963 function ha(e, t, n) {
27964 var r = null == e ? J : zn(e, t);
27965 return r === J ? n : r
27968 function pa(e, t) {
27969 return null != e && Xi(e, t, Zn)
27973 return Go(e) ? Qt(e) : sr(e)
27977 return Go(e) ? Qt(e, !0) : cr(e)
27980 function va(e, t) {
27981 if (null == e) return {};
27982 var n = u(qi(e), function(e) {
27985 return t = Bi(t), br(e, n, function(e, n) {
27991 return null == e ? [] : O(e, ma(e))
27995 return El(fa(e).toLowerCase())
27999 return (e = fa(e)) && e.replace(Bt, Fn).replace(un, "")
28002 function _a(e, t, n) {
28003 return e = fa(e), (t = n ? J : t) === J ? L(e) ? Q(e) : g(e) : e.match(t) || []
28007 return function() {
28017 return ar("function" == typeof e ? e : pn(e, ae))
28020 function xa(e, t, n) {
28023 null != n || ea(t) && (o.length || !r.length) || (n = t, t = e, e = this, o = Bn(t, ma(t)));
28024 var a = !(ea(n) && "chain" in n && !n.chain),
28026 return i(o, function(n) {
28028 e[n] = r, s && (e.prototype[n] = function() {
28029 var t = this.__chain__;
28031 var n = e(this.__wrapped__);
28032 return (n.__actions__ = ai(this.__actions__)).push({
28036 }), n.__chain__ = t, n
28038 return r.apply(e, d([this.value()], arguments))
28046 return oo(e) ? E(wo(e)) : yr(e)
28056 var Aa = (C = null == C ? Tn : Vn.defaults(Tn.Object(), C, Vn.pick(Tn, mn))).Array,
28068 Ua = C["__core-js_shared__"],
28070 Ba = qa.hasOwnProperty,
28073 var e = /[^.]+$/.exec(Ua && Ua.keys && Ua.keys.IE_PROTO || "");
28074 return e ? "Symbol(src)_1." + e : ""
28079 Za = Pa("^" + Va.call(Ba).replace(Tt, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
28080 Xa = An ? C.Buffer : J,
28083 es = Xa ? Xa.allocUnsafe : J,
28084 ts = U(Ra.getPrototypeOf, Ra),
28086 rs = qa.propertyIsEnumerable,
28088 os = Qa ? Qa.isConcatSpreadable : J,
28089 as = Qa ? Qa.iterator : J,
28090 ss = Qa ? Qa.toStringTag : J,
28093 var e = Yi(Ra, "defineProperty");
28094 return e({}, "", {}), e
28097 ls = C.clearTimeout !== Tn.clearTimeout && C.clearTimeout,
28098 us = Oa && Oa.now !== Tn.Date.now && Oa.now,
28099 ds = C.setTimeout !== Tn.setTimeout && C.setTimeout,
28102 ps = Ra.getOwnPropertySymbols,
28103 ms = Xa ? Xa.isBuffer : J,
28106 bs = U(Ra.keys, Ra),
28113 xs = Yi(C, "DataView"),
28115 Ts = Yi(C, "Promise"),
28117 Ss = Yi(C, "WeakMap"),
28118 As = Yi(Ra, "create"),
28126 js = Qa ? Qa.prototype : J,
28127 Ls = js ? js.valueOf : J,
28128 Fs = js ? js.toString : J,
28131 return function(t) {
28132 if (!ea(t)) return {};
28133 if (ns) return ns(t);
28136 return e.prototype = J, n
28139 W.templateSettings = {
28147 }, W.prototype = Z.prototype, W.prototype.constructor = W, X.prototype = qs(Z.prototype), X.prototype.constructor = X, Rt.prototype = qs(Z.prototype), Rt.prototype.constructor = Rt, Yt.prototype.clear = function() {
28148 this.__data__ = As ? As(null) : {}, this.size = 0
28149 }, Yt.prototype.delete = function(e) {
28150 var t = this.has(e) && delete this.__data__[e];
28151 return this.size -= t ? 1 : 0, t
28152 }, Yt.prototype.get = function(e) {
28153 var t = this.__data__;
28156 return n === re ? J : n
28158 return Ba.call(t, e) ? t[e] : J
28159 }, Yt.prototype.has = function(e) {
28160 var t = this.__data__;
28161 return As ? t[e] !== J : Ba.call(t, e)
28162 }, Yt.prototype.set = function(e, t) {
28163 var n = this.__data__;
28164 return this.size += this.has(e) ? 0 : 1, n[e] = As && t === J ? re : t, this
28165 }, Gt.prototype.clear = function() {
28166 this.__data__ = [], this.size = 0
28167 }, Gt.prototype.delete = function(e) {
28168 var t = this.__data__,
28170 return !(n < 0 || (n == t.length - 1 ? t.pop() : is.call(t, n, 1), --this.size, 0))
28171 }, Gt.prototype.get = function(e) {
28172 var t = this.__data__,
28174 return n < 0 ? J : t[n][1]
28175 }, Gt.prototype.has = function(e) {
28176 return on(this.__data__, e) > -1
28177 }, Gt.prototype.set = function(e, t) {
28178 var n = this.__data__,
28180 return r < 0 ? (++this.size, n.push([e, t])) : n[r][1] = t, this
28181 }, Kt.prototype.clear = function() {
28182 this.size = 0, this.__data__ = {
28184 map: new(ks || Gt),
28187 }, Kt.prototype.delete = function(e) {
28188 var t = zi(this, e).delete(e);
28189 return this.size -= t ? 1 : 0, t
28190 }, Kt.prototype.get = function(e) {
28191 return zi(this, e).get(e)
28192 }, Kt.prototype.has = function(e) {
28193 return zi(this, e).has(e)
28194 }, Kt.prototype.set = function(e, t) {
28195 var n = zi(this, e),
28197 return n.set(e, t), this.size += n.size == r ? 0 : 1, this
28198 }, Zt.prototype.add = Zt.prototype.push = function(e) {
28199 return this.__data__.set(e, re), this
28200 }, Zt.prototype.has = function(e) {
28201 return this.__data__.has(e)
28202 }, Xt.prototype.clear = function() {
28203 this.__data__ = new Gt, this.size = 0
28204 }, Xt.prototype.delete = function(e) {
28205 var t = this.__data__,
28207 return this.size = t.size, n
28208 }, Xt.prototype.get = function(e) {
28209 return this.__data__.get(e)
28210 }, Xt.prototype.has = function(e) {
28211 return this.__data__.has(e)
28212 }, Xt.prototype.set = function(e, t) {
28213 var n = this.__data__;
28214 if (n instanceof Gt) {
28215 var r = n.__data__;
28216 if (!ks || r.length < ee - 1) return r.push([e, t]), this.size = ++n.size, this;
28217 n = this.__data__ = new Kt(r)
28219 return n.set(e, t), this.size = n.size, this
28225 Ws = Os ? function(e, t) {
28226 return Os.set(e, t), e
28228 Ys = cs ? function(e, t) {
28229 return cs(e, "toString", {
28237 Ks = ls || function(e) {
28238 return Tn.clearTimeout(e)
28240 Zs = Ms && 1 / B(new Ms([, -0]))[1] == Te ? function(e) {
28243 Xs = Os ? function(e) {
28246 Qs = ps ? function(e) {
28247 return null == e ? [] : (e = Ra(e), s(ps(e), function(t) {
28248 return rs.call(e, t)
28251 Js = ps ? function(e) {
28252 for (var t = []; e;) d(t, Qs(e)), e = ts(e);
28256 (xs && ec(new xs(new ArrayBuffer(1))) != rt || ks && ec(new ks) != Be || Ts && "[object Promise]" != ec(Ts.resolve()) || Ms && ec(new Ms) != Ze || Ss && ec(new Ss) != et) && (ec = function(e) {
28258 n = t == Ye ? e.constructor : J,
28259 r = n ? Eo(n) : "";
28260 if (r) switch (r) {
28266 return "[object Promise]";
28274 var tc = Ua ? Xo : Sa,
28276 rc = ds || function(e, t) {
28277 return Tn.setTimeout(e, t)
28281 var t = zo(e, function(e) {
28282 return n.size === ie && n.clear(), e
28288 return xt.test(e) && t.push(""), e.replace(kt, function(e, n, r, i) {
28289 t.push(r ? i.replace(Pt, "$1") : n || e)
28292 ac = xr(function(e, t) {
28293 return Ko(e) ? wn(e, On(t, 1, Ko, !0)) : []
28295 sc = xr(function(e, t) {
28297 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), Bi(n, 2)) : []
28299 cc = xr(function(e, t) {
28301 return Ko(n) && (n = J), Ko(e) ? wn(e, On(t, 1, Ko, !0), J, n) : []
28303 lc = xr(function(e) {
28305 return t.length && t[0] === e[0] ? Qn(t) : []
28307 uc = xr(function(e) {
28310 return t === Ao(n) ? t = J : n.pop(), n.length && n[0] === e[0] ? Qn(n, Bi(t, 2)) : []
28312 dc = xr(function(e) {
28315 return (t = "function" == typeof t ? t : J) && n.pop(), n.length && n[0] === e[0] ? Qn(n, J, t) : []
28318 hc = Li(function(e, t) {
28319 var n = null == e ? 0 : e.length,
28321 return _r(e, u(t, function(e) {
28322 return ro(e, n) ? +e : e
28325 pc = xr(function(e) {
28326 return Hr(On(e, 1, Ko, !0))
28328 mc = xr(function(e) {
28330 return Ko(t) && (t = J), Hr(On(e, 1, Ko, !0), Bi(t, 2))
28332 gc = xr(function(e) {
28334 return t = "function" == typeof t ? t : J, Hr(On(e, 1, Ko, !0), J, t)
28336 vc = xr(function(e, t) {
28337 return Ko(e) ? wn(e, t) : []
28339 bc = xr(function(e) {
28340 return Ur(s(e, Ko))
28342 yc = xr(function(e) {
28344 return Ko(t) && (t = J), Ur(s(e, Ko), Bi(t, 2))
28346 $c = xr(function(e) {
28348 return t = "function" == typeof t ? t : J, Ur(s(e, Ko), J, t)
28351 wc = xr(function(e) {
28353 n = t > 1 ? e[t - 1] : J;
28354 return n = "function" == typeof n ? (e.pop(), n) : J, Io(e, n)
28356 Ec = Li(function(e) {
28359 r = this.__wrapped__,
28363 return !(t > 1 || this.__actions__.length) && r instanceof Rt && ro(n) ? ((r = r.slice(n, +n + (t ? 1 : 0))).__actions__.push({
28367 }), new X(r, this.__chain__).thru(function(e) {
28368 return t && !e.length && e.push(J), e
28371 Cc = ui(function(e, t, n) {
28372 Ba.call(e, n) ? ++e[n] : dn(e, n, 1)
28376 Tc = ui(function(e, t, n) {
28377 Ba.call(e, n) ? e[n].push(t) : dn(e, n, [t])
28379 Mc = xr(function(e, t, r) {
28381 o = "function" == typeof t,
28382 a = Go(e) ? Aa(e.length) : [];
28383 return Us(e, function(e) {
28384 a[++i] = o ? n(t, e, r) : er(e, t, r)
28387 Sc = ui(function(e, t, n) {
28390 Ac = ui(function(e, t, n) {
28391 e[n ? 0 : 1].push(t)
28398 Oc = xr(function(e, t) {
28399 if (null == e) return [];
28401 return n > 1 && io(e, t[0], t[1]) ? t = [] : n > 2 && io(t[0], t[1], t[2]) && (t = [t[0]]), gr(e, On(t, 1), [])
28403 Dc = us || function() {
28404 return Tn.Date.now()
28406 Nc = xr(function(e, t, n) {
28409 var i = V(n, Vi(Nc));
28412 return Di(e, r, t, n, i)
28414 Ic = xr(function(e, t, n) {
28417 var i = V(n, Vi(Ic));
28420 return Di(t, r, e, n, i)
28422 Rc = xr(function(e, t) {
28425 Pc = xr(function(e, t, n) {
28426 return _n(e, ua(t) || 0, n)
28429 var Hc = Gs(function(e, t) {
28430 var r = (t = 1 == t.length && Bc(t[0]) ? u(t[0], A(Bi())) : u(On(t, 1), A(Bi()))).length;
28431 return xr(function(i) {
28432 for (var o = -1, a = $s(i.length, r); ++o < a;) i[o] = t[o].call(this, i[o]);
28433 return n(e, this, i)
28436 jc = xr(function(e, t) {
28437 var n = V(t, Vi(jc));
28438 return Di(e, ge, J, t, n)
28440 Lc = xr(function(e, t) {
28441 var n = V(t, Vi(Lc));
28442 return Di(e, ve, J, t, n)
28444 Fc = Li(function(e, t) {
28445 return Di(e, ye, J, J, J, t)
28448 Uc = Mi(function(e, t) {
28451 Vc = tr(function() {
28453 }()) ? tr : function(e) {
28454 return ta(e) && Ba.call(e, "callee") && !rs.call(e, "callee")
28457 zc = Nn ? A(Nn) : function(e) {
28458 return ta(e) && Yn(e) == nt
28461 Yc = In ? A(In) : function(e) {
28462 return ta(e) && Yn(e) == Le
28464 Gc = Rn ? A(Rn) : function(e) {
28465 return ta(e) && ec(e) == Be
28467 Kc = Pn ? A(Pn) : function(e) {
28468 return ta(e) && Yn(e) == Ke
28470 Zc = Hn ? A(Hn) : function(e) {
28471 return ta(e) && ec(e) == Ze
28473 Xc = jn ? A(jn) : function(e) {
28474 return ta(e) && Jo(e.length) && !!vn[Yn(e)]
28477 Jc = Mi(function(e, t) {
28480 el = di(function(e, t) {
28481 if (lo(t) || Go(t)) si(t, ma(t), e);
28483 for (var n in t) Ba.call(t, n) && rn(e, n, t[n])
28485 tl = di(function(e, t) {
28488 nl = di(function(e, t, n, r) {
28491 rl = di(function(e, t, n, r) {
28495 ol = xr(function(e) {
28496 return e.push(J, Ni), n(nl, J, e)
28498 al = xr(function(e) {
28499 return e.push(J, Ii), n(dl, J, e)
28501 sl = wi(function(e, t, n) {
28504 cl = wi(function(e, t, n) {
28505 Ba.call(e, t) ? e[t].push(n) : e[t] = [n]
28508 ul = di(function(e, t, n) {
28511 dl = di(function(e, t, n, r) {
28514 fl = Li(function(e, t) {
28516 if (null == e) return n;
28518 t = u(t, function(t) {
28519 return t = Wr(t, e), r || (r = t.length > 1), t
28520 }), si(e, qi(e), n), r && (n = pn(n, ae | se | ce, Ri));
28521 for (var i = t.length; i--;) jr(n, t[i]);
28524 hl = Li(function(e, t) {
28525 return null == e ? {} : vr(e, t)
28529 gl = gi(function(e, t, n) {
28530 return t = t.toLowerCase(), e + (n ? ya(t) : t)
28532 vl = gi(function(e, t, n) {
28533 return e + (n ? "-" : "") + t.toLowerCase()
28535 bl = gi(function(e, t, n) {
28536 return e + (n ? " " : "") + t.toLowerCase()
28538 yl = mi("toLowerCase"),
28539 $l = gi(function(e, t, n) {
28540 return e + (n ? "_" : "") + t.toLowerCase()
28542 _l = gi(function(e, t, n) {
28543 return e + (n ? " " : "") + El(t)
28545 wl = gi(function(e, t, n) {
28546 return e + (n ? " " : "") + t.toUpperCase()
28548 El = mi("toUpperCase"),
28549 Cl = xr(function(e, t) {
28553 return Zo(e) ? e : new Da(e)
28556 xl = Li(function(e, t) {
28557 return i(t, function(t) {
28558 t = wo(t), dn(e, t, Nc(e[t], e))
28563 Ml = xr(function(e, t) {
28564 return function(n) {
28568 Sl = xr(function(e, t) {
28569 return function(n) {
28578 Rl = Ei(function(e, t) {
28582 Hl = Ei(function(e, t) {
28586 Ll = Ei(function(e, t) {
28590 ql = Ei(function(e, t) {
28593 return W.after = function(e, t) {
28594 if ("function" != typeof t) throw new ja(ne);
28597 if (--e < 1) return t.apply(this, arguments)
28599 }, W.ary = Fo, W.assign = el, W.assignIn = tl, W.assignInWith = nl, W.assignWith = rl, W.at = il, W.before = qo, W.bind = Nc, W.bindAll = xl, W.bindKey = Ic, W.castArray = function() {
28600 if (!arguments.length) return [];
28601 var e = arguments[0];
28602 return Bc(e) ? e : [e]
28603 }, W.chain = Ro, W.chunk = function(e, t, n) {
28604 t = (n ? io(e, t, n) : t === J) ? 1 : ys(ca(t), 0);
28605 var r = null == e ? 0 : e.length;
28606 if (!r || t < 1) return [];
28607 for (var i = 0, o = 0, a = Aa(fs(r / t)); i < r;) a[o++] = Ar(e, i, i += t);
28609 }, W.compact = function(e) {
28610 for (var t = -1, n = null == e ? 0 : e.length, r = 0, i = []; ++t < n;) {
28615 }, W.concat = function() {
28616 var e = arguments.length;
28618 for (var t = Aa(e - 1), n = arguments[0], r = e; r--;) t[r - 1] = arguments[r];
28619 return d(Bc(n) ? ai(n) : [n], On(t, 1))
28620 }, W.cond = function(e) {
28621 var t = null == e ? 0 : e.length,
28623 return e = t ? u(e, function(e) {
28624 if ("function" != typeof e[1]) throw new ja(ne);
28625 return [r(e[0]), e[1]]
28626 }) : [], xr(function(r) {
28627 for (var i = -1; ++i < t;) {
28629 if (n(o[0], this, r)) return n(o[1], this, r)
28632 }, W.conforms = function(e) {
28633 return yn(pn(e, ae))
28634 }, W.constant = wa, W.countBy = Cc, W.create = function(e, t) {
28636 return null == t ? n : sn(n, t)
28637 }, W.curry = Uo, W.curryRight = Vo, W.debounce = Bo, W.defaults = ol, W.defaultsDeep = al, W.defer = Rc, W.delay = Pc, W.difference = ac, W.differenceBy = sc, W.differenceWith = cc, W.drop = function(e, t, n) {
28638 var r = null == e ? 0 : e.length;
28639 return r ? (t = n || t === J ? 1 : ca(t), Ar(e, t < 0 ? 0 : t, r)) : []
28640 }, W.dropRight = function(e, t, n) {
28641 var r = null == e ? 0 : e.length;
28642 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Ar(e, 0, t < 0 ? 0 : t)) : []
28643 }, W.dropRightWhile = function(e, t) {
28644 return e && e.length ? Fr(e, Bi(t, 3), !0, !0) : []
28645 }, W.dropWhile = function(e, t) {
28646 return e && e.length ? Fr(e, Bi(t, 3), !0) : []
28647 }, W.fill = function(e, t, n, r) {
28648 var i = null == e ? 0 : e.length;
28649 return i ? (n && "number" != typeof n && io(e, t, n) && (n = 0, r = i), Mn(e, t, n, r)) : []
28650 }, W.filter = function(e, t) {
28651 return (Bc(e) ? s : Sn)(e, Bi(t, 3))
28652 }, W.flatMap = function(e, t) {
28653 return On(Lo(e, t), 1)
28654 }, W.flatMapDeep = function(e, t) {
28655 return On(Lo(e, t), Te)
28656 }, W.flatMapDepth = function(e, t, n) {
28657 return n = n === J ? 1 : ca(n), On(Lo(e, t), n)
28658 }, W.flatten = Mo, W.flattenDeep = function(e) {
28659 return (null == e ? 0 : e.length) ? On(e, Te) : []
28660 }, W.flattenDepth = function(e, t) {
28661 return (null == e ? 0 : e.length) ? (t = t === J ? 1 : ca(t), On(e, t)) : []
28662 }, W.flip = function(e) {
28664 }, W.flow = kl, W.flowRight = Tl, W.fromPairs = function(e) {
28665 for (var t = -1, n = null == e ? 0 : e.length, r = {}; ++t < n;) {
28670 }, W.functions = function(e) {
28671 return null == e ? [] : Bn(e, ma(e))
28672 }, W.functionsIn = function(e) {
28673 return null == e ? [] : Bn(e, ga(e))
28674 }, W.groupBy = Tc, W.initial = function(e) {
28675 return (null == e ? 0 : e.length) ? Ar(e, 0, -1) : []
28676 }, W.intersection = lc, W.intersectionBy = uc, W.intersectionWith = dc, W.invert = sl, W.invertBy = cl, W.invokeMap = Mc, W.iteratee = Ca, W.keyBy = Sc, W.keys = ma, W.keysIn = ga, W.map = Lo, W.mapKeys = function(e, t) {
28678 return t = Bi(t, 3), Dn(e, function(e, r, i) {
28679 dn(n, t(e, r, i), e)
28681 }, W.mapValues = function(e, t) {
28683 return t = Bi(t, 3), Dn(e, function(e, r, i) {
28684 dn(n, r, t(e, r, i))
28686 }, W.matches = function(e) {
28687 return dr(pn(e, ae))
28688 }, W.matchesProperty = function(e, t) {
28689 return fr(e, pn(t, ae))
28690 }, W.memoize = zo, W.merge = ul, W.mergeWith = dl, W.method = Ml, W.methodOf = Sl, W.mixin = xa, W.negate = Wo, W.nthArg = function(e) {
28691 return e = ca(e), xr(function(t) {
28694 }, W.omit = fl, W.omitBy = function(e, t) {
28695 return va(e, Wo(Bi(t)))
28696 }, W.once = function(e) {
28698 }, W.orderBy = function(e, t, n, r) {
28699 return null == e ? [] : (Bc(t) || (t = null == t ? [] : [t]), n = r ? J : n, Bc(n) || (n = null == n ? [] : [n]), gr(e, t, n))
28700 }, W.over = Al, W.overArgs = Hc, W.overEvery = Ol, W.overSome = Dl, W.partial = jc, W.partialRight = Lc, W.partition = Ac, W.pick = hl, W.pickBy = va, W.property = Ta, W.propertyOf = function(e) {
28701 return function(t) {
28702 return null == e ? J : zn(e, t)
28704 }, W.pull = fc, W.pullAll = Oo, W.pullAllBy = function(e, t, n) {
28705 return e && e.length && t && t.length ? $r(e, t, Bi(n, 2)) : e
28706 }, W.pullAllWith = function(e, t, n) {
28707 return e && e.length && t && t.length ? $r(e, t, J, n) : e
28708 }, W.pullAt = hc, W.range = Nl, W.rangeRight = Il, W.rearg = Fc, W.reject = function(e, t) {
28709 return (Bc(e) ? s : Sn)(e, Wo(Bi(t, 3)))
28710 }, W.remove = function(e, t) {
28712 if (!e || !e.length) return n;
28716 for (t = Bi(t, 3); ++r < o;) {
28718 t(a, r, e) && (n.push(a), i.push(r))
28721 }, W.rest = function(e, t) {
28722 if ("function" != typeof e) throw new ja(ne);
28723 return t = t === J ? t : ca(t), xr(e, t)
28724 }, W.reverse = Do, W.sampleSize = function(e, t, n) {
28725 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), (Bc(e) ? en : Tr)(e, t)
28726 }, W.set = function(e, t, n) {
28727 return null == e ? e : Mr(e, t, n)
28728 }, W.setWith = function(e, t, n, r) {
28729 return r = "function" == typeof r ? r : J, null == e ? e : Mr(e, t, n, r)
28730 }, W.shuffle = function(e) {
28731 return (Bc(e) ? tn : Sr)(e)
28732 }, W.slice = function(e, t, n) {
28733 var r = null == e ? 0 : e.length;
28734 return r ? (n && "number" != typeof n && io(e, t, n) ? (t = 0, n = r) : (t = null == t ? 0 : ca(t), n = n === J ? r : ca(n)), Ar(e, t, n)) : []
28735 }, W.sortBy = Oc, W.sortedUniq = function(e) {
28736 return e && e.length ? Ir(e) : []
28737 }, W.sortedUniqBy = function(e, t) {
28738 return e && e.length ? Ir(e, Bi(t, 2)) : []
28739 }, W.split = function(e, t, n) {
28740 return n && "number" != typeof n && io(e, t, n) && (t = n = J), (n = n === J ? Oe : n >>> 0) ? (e = fa(e)) && ("string" == typeof t || null != t && !Kc(t)) && !(t = Pr(t)) && j(e) ? Yr(K(e), 0, n) : e.split(t, n) : []
28741 }, W.spread = function(e, t) {
28742 if ("function" != typeof e) throw new ja(ne);
28743 return t = null == t ? 0 : ys(ca(t), 0), xr(function(r) {
28746 return i && d(o, i), n(e, this, o)
28748 }, W.tail = function(e) {
28749 var t = null == e ? 0 : e.length;
28750 return t ? Ar(e, 1, t) : []
28751 }, W.take = function(e, t, n) {
28752 return e && e.length ? (t = n || t === J ? 1 : ca(t), Ar(e, 0, t < 0 ? 0 : t)) : []
28753 }, W.takeRight = function(e, t, n) {
28754 var r = null == e ? 0 : e.length;
28755 return r ? (t = n || t === J ? 1 : ca(t), t = r - t, Ar(e, t < 0 ? 0 : t, r)) : []
28756 }, W.takeRightWhile = function(e, t) {
28757 return e && e.length ? Fr(e, Bi(t, 3), !1, !0) : []
28758 }, W.takeWhile = function(e, t) {
28759 return e && e.length ? Fr(e, Bi(t, 3)) : []
28760 }, W.tap = function(e, t) {
28762 }, W.throttle = function(e, t, n) {
28765 if ("function" != typeof e) throw new ja(ne);
28766 return ea(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), Bo(e, t, {
28771 }, W.thru = Po, W.toArray = aa, W.toPairs = pl, W.toPairsIn = ml, W.toPath = function(e) {
28772 return Bc(e) ? u(e, wo) : oa(e) ? [e] : ai(oc(fa(e)))
28773 }, W.toPlainObject = da, W.transform = function(e, t, n) {
28775 o = r || Wc(e) || Xc(e);
28776 if (t = Bi(t, 4), null == n) {
28777 var a = e && e.constructor;
28778 n = o ? r ? new a : [] : ea(e) && Xo(a) ? qs(ts(e)) : {}
28780 return (o ? i : Dn)(e, function(e, r, i) {
28781 return t(n, e, r, i)
28783 }, W.unary = function(e) {
28785 }, W.union = pc, W.unionBy = mc, W.unionWith = gc, W.uniq = function(e) {
28786 return e && e.length ? Hr(e) : []
28787 }, W.uniqBy = function(e, t) {
28788 return e && e.length ? Hr(e, Bi(t, 2)) : []
28789 }, W.uniqWith = function(e, t) {
28790 return t = "function" == typeof t ? t : J, e && e.length ? Hr(e, J, t) : []
28791 }, W.unset = function(e, t) {
28792 return null == e || jr(e, t)
28793 }, W.unzip = No, W.unzipWith = Io, W.update = function(e, t, n) {
28794 return null == e ? e : Lr(e, t, zr(n))
28795 }, W.updateWith = function(e, t, n, r) {
28796 return r = "function" == typeof r ? r : J, null == e ? e : Lr(e, t, zr(n), r)
28797 }, W.values = ba, W.valuesIn = function(e) {
28798 return null == e ? [] : O(e, ga(e))
28799 }, W.without = vc, W.words = _a, W.wrap = function(e, t) {
28800 return jc(zr(t), e)
28801 }, W.xor = bc, W.xorBy = yc, W.xorWith = $c, W.zip = _c, W.zipObject = function(e, t) {
28802 return Vr(e || [], t || [], rn)
28803 }, W.zipObjectDeep = function(e, t) {
28804 return Vr(e || [], t || [], Mr)
28805 }, W.zipWith = wc, W.entries = pl, W.entriesIn = ml, W.extend = tl, W.extendWith = nl, xa(W, W), W.add = Rl, W.attempt = Cl, W.camelCase = gl, W.capitalize = ya, W.ceil = Pl, W.clamp = function(e, t, n) {
28806 return n === J && (n = t, t = J), n !== J && (n = (n = ua(n)) === n ? n : 0), t !== J && (t = (t = ua(t)) === t ? t : 0), hn(ua(e), t, n)
28807 }, W.clone = function(e) {
28809 }, W.cloneDeep = function(e) {
28810 return pn(e, ae | ce)
28811 }, W.cloneDeepWith = function(e, t) {
28812 return t = "function" == typeof t ? t : J, pn(e, ae | ce, t)
28813 }, W.cloneWith = function(e, t) {
28814 return t = "function" == typeof t ? t : J, pn(e, ce, t)
28815 }, W.conformsTo = function(e, t) {
28816 return null == t || $n(e, t, ma(t))
28817 }, W.deburr = $a, W.defaultTo = function(e, t) {
28818 return null == e || e !== e ? t : e
28819 }, W.divide = Hl, W.endsWith = function(e, t, n) {
28820 e = fa(e), t = Pr(t);
28822 i = n = n === J ? r : hn(ca(n), 0, r);
28823 return (n -= t.length) >= 0 && e.slice(n, i) == t
28824 }, W.eq = Yo, W.escape = function(e) {
28825 return (e = fa(e)) && yt.test(e) ? e.replace(vt, qn) : e
28826 }, W.escapeRegExp = function(e) {
28827 return (e = fa(e)) && Mt.test(e) ? e.replace(Tt, "\\$&") : e
28828 }, W.every = function(e, t, n) {
28829 var r = Bc(e) ? a : xn;
28830 return n && io(e, t, n) && (t = J), r(e, Bi(t, 3))
28831 }, W.find = xc, W.findIndex = ko, W.findKey = function(e, t) {
28832 return v(e, Bi(t, 3), Dn)
28833 }, W.findLast = kc, W.findLastIndex = To, W.findLastKey = function(e, t) {
28834 return v(e, Bi(t, 3), Ln)
28835 }, W.floor = jl, W.forEach = Ho, W.forEachRight = jo, W.forIn = function(e, t) {
28836 return null == e ? e : Bs(e, Bi(t, 3), ga)
28837 }, W.forInRight = function(e, t) {
28838 return null == e ? e : zs(e, Bi(t, 3), ga)
28839 }, W.forOwn = function(e, t) {
28840 return e && Dn(e, Bi(t, 3))
28841 }, W.forOwnRight = function(e, t) {
28842 return e && Ln(e, Bi(t, 3))
28843 }, W.get = ha, W.gt = qc, W.gte = Uc, W.has = function(e, t) {
28844 return null != e && Xi(e, t, Kn)
28845 }, W.hasIn = pa, W.head = So, W.identity = Ea, W.includes = function(e, t, n, r) {
28846 e = Go(e) ? e : ba(e), n = n && !r ? ca(n) : 0;
28848 return n < 0 && (n = ys(i + n, 0)), ia(e) ? n <= i && e.indexOf(t, n) > -1 : !!i && y(e, t, n) > -1
28849 }, W.indexOf = function(e, t, n) {
28850 var r = null == e ? 0 : e.length;
28852 var i = null == n ? 0 : ca(n);
28853 return i < 0 && (i = ys(r + i, 0)), y(e, t, i)
28854 }, W.inRange = function(e, t, n) {
28855 return t = sa(t), n === J ? (n = t, t = 0) : n = sa(n), e = ua(e), Xn(e, t, n)
28856 }, W.invoke = ll, W.isArguments = Vc, W.isArray = Bc, W.isArrayBuffer = zc, W.isArrayLike = Go, W.isArrayLikeObject = Ko, W.isBoolean = function(e) {
28857 return !0 === e || !1 === e || ta(e) && Yn(e) == je
28858 }, W.isBuffer = Wc, W.isDate = Yc, W.isElement = function(e) {
28859 return ta(e) && 1 === e.nodeType && !ra(e)
28860 }, W.isEmpty = function(e) {
28861 if (null == e) return !0;
28862 if (Go(e) && (Bc(e) || "string" == typeof e || "function" == typeof e.splice || Wc(e) || Xc(e) || Vc(e))) return !e.length;
28864 if (t == Be || t == Ze) return !e.size;
28865 if (lo(e)) return !sr(e).length;
28867 if (Ba.call(e, n)) return !1;
28869 }, W.isEqual = function(e, t) {
28871 }, W.isEqualWith = function(e, t, n) {
28872 var r = (n = "function" == typeof n ? n : J) ? n(e, t) : J;
28873 return r === J ? nr(e, t, J, n) : !!r
28874 }, W.isError = Zo, W.isFinite = function(e) {
28875 return "number" == typeof e && gs(e)
28876 }, W.isFunction = Xo, W.isInteger = Qo, W.isLength = Jo, W.isMap = Gc, W.isMatch = function(e, t) {
28877 return e === t || ir(e, t, Wi(t))
28878 }, W.isMatchWith = function(e, t, n) {
28879 return n = "function" == typeof n ? n : J, ir(e, t, Wi(t), n)
28880 }, W.isNaN = function(e) {
28881 return na(e) && e != +e
28882 }, W.isNative = function(e) {
28883 if (tc(e)) throw new Da(te);
28885 }, W.isNil = function(e) {
28887 }, W.isNull = function(e) {
28889 }, W.isNumber = na, W.isObject = ea, W.isObjectLike = ta, W.isPlainObject = ra, W.isRegExp = Kc, W.isSafeInteger = function(e) {
28890 return Qo(e) && e >= -Me && e <= Me
28891 }, W.isSet = Zc, W.isString = ia, W.isSymbol = oa, W.isTypedArray = Xc, W.isUndefined = function(e) {
28893 }, W.isWeakMap = function(e) {
28894 return ta(e) && ec(e) == et
28895 }, W.isWeakSet = function(e) {
28896 return ta(e) && Yn(e) == tt
28897 }, W.join = function(e, t) {
28898 return null == e ? "" : vs.call(e, t)
28899 }, W.kebabCase = vl, W.last = Ao, W.lastIndexOf = function(e, t, n) {
28900 var r = null == e ? 0 : e.length;
28903 return n !== J && (i = (i = ca(n)) < 0 ? ys(r + i, 0) : $s(i, r - 1)), t === t ? Y(e, t, i) : b(e, _, i, !0)
28904 }, W.lowerCase = bl, W.lowerFirst = yl, W.lt = Qc, W.lte = Jc, W.max = function(e) {
28905 return e && e.length ? kn(e, Ea, Gn) : J
28906 }, W.maxBy = function(e, t) {
28907 return e && e.length ? kn(e, Bi(t, 2), Gn) : J
28908 }, W.mean = function(e) {
28910 }, W.meanBy = function(e, t) {
28911 return w(e, Bi(t, 2))
28912 }, W.min = function(e) {
28913 return e && e.length ? kn(e, Ea, lr) : J
28914 }, W.minBy = function(e, t) {
28915 return e && e.length ? kn(e, Bi(t, 2), lr) : J
28916 }, W.stubArray = Ma, W.stubFalse = Sa, W.stubObject = function() {
28918 }, W.stubString = function() {
28920 }, W.stubTrue = function() {
28922 }, W.multiply = Ll, W.nth = function(e, t) {
28923 return e && e.length ? mr(e, ca(t)) : J
28924 }, W.noConflict = function() {
28925 return Tn._ === this && (Tn._ = Ka), this
28926 }, W.noop = ka, W.now = Dc, W.pad = function(e, t, n) {
28928 var r = (t = ca(t)) ? G(e) : 0;
28929 if (!t || r >= t) return e;
28930 var i = (t - r) / 2;
28931 return xi(hs(i), n) + e + xi(fs(i), n)
28932 }, W.padEnd = function(e, t, n) {
28934 var r = (t = ca(t)) ? G(e) : 0;
28935 return t && r < t ? e + xi(t - r, n) : e
28936 }, W.padStart = function(e, t, n) {
28938 var r = (t = ca(t)) ? G(e) : 0;
28939 return t && r < t ? xi(t - r, n) + e : e
28940 }, W.parseInt = function(e, t, n) {
28941 return n || null == t ? t = 0 : t && (t = +t), ws(fa(e).replace(At, ""), t || 0)
28942 }, W.random = function(e, t, n) {
28943 if (n && "boolean" != typeof n && io(e, t, n) && (t = n = J), n === J && ("boolean" == typeof t ? (n = t, t = J) : "boolean" == typeof e && (n = e, e = J)), e === J && t === J ? (e = 0, t = 1) : (e = sa(e), t === J ? (t = e, e = 0) : t = sa(t)), e > t) {
28947 if (n || e % 1 || t % 1) {
28949 return $s(e + i * (t - e + En("1e-" + ((i + "").length - 1))), t)
28952 }, W.reduce = function(e, t, n) {
28953 var r = Bc(e) ? f : x,
28954 i = arguments.length < 3;
28955 return r(e, Bi(t, 4), n, i, Us)
28956 }, W.reduceRight = function(e, t, n) {
28957 var r = Bc(e) ? h : x,
28958 i = arguments.length < 3;
28959 return r(e, Bi(t, 4), n, i, Vs)
28960 }, W.repeat = function(e, t, n) {
28961 return t = (n ? io(e, t, n) : t === J) ? 1 : ca(t), Cr(fa(e), t)
28962 }, W.replace = function() {
28965 return e.length < 3 ? t : t.replace(e[1], e[2])
28966 }, W.result = function(e, t, n) {
28968 i = (t = Wr(t, e)).length;
28969 for (i || (i = 1, e = J); ++r < i;) {
28970 var o = null == e ? J : e[wo(t[r])];
28971 o === J && (r = i, o = n), e = Xo(o) ? o.call(e) : o
28974 }, W.round = Fl, W.runInContext = m, W.sample = function(e) {
28975 return (Bc(e) ? Jt : kr)(e)
28976 }, W.size = function(e) {
28977 if (null == e) return 0;
28978 if (Go(e)) return ia(e) ? G(e) : e.length;
28980 return t == Be || t == Ze ? e.size : sr(e).length
28981 }, W.snakeCase = $l, W.some = function(e, t, n) {
28982 var r = Bc(e) ? p : Or;
28983 return n && io(e, t, n) && (t = J), r(e, Bi(t, 3))
28984 }, W.sortedIndex = function(e, t) {
28986 }, W.sortedIndexBy = function(e, t, n) {
28987 return Nr(e, t, Bi(n, 2))
28988 }, W.sortedIndexOf = function(e, t) {
28989 var n = null == e ? 0 : e.length;
28992 if (r < n && Yo(e[r], t)) return r
28995 }, W.sortedLastIndex = function(e, t) {
28996 return Dr(e, t, !0)
28997 }, W.sortedLastIndexBy = function(e, t, n) {
28998 return Nr(e, t, Bi(n, 2), !0)
28999 }, W.sortedLastIndexOf = function(e, t) {
29000 if (null == e ? 0 : e.length) {
29001 var n = Dr(e, t, !0) - 1;
29002 if (Yo(e[n], t)) return n
29005 }, W.startCase = _l, W.startsWith = function(e, t, n) {
29006 return e = fa(e), n = null == n ? 0 : hn(ca(n), 0, e.length), t = Pr(t), e.slice(n, n + t.length) == t
29007 }, W.subtract = ql, W.sum = function(e) {
29008 return e && e.length ? T(e, Ea) : 0
29009 }, W.sumBy = function(e, t) {
29010 return e && e.length ? T(e, Bi(t, 2)) : 0
29011 }, W.template = function(e, t, n) {
29012 var r = W.templateSettings;
29013 n && io(e, t, n) && (t = J), e = fa(e), t = nl({}, t, r, Ni);
29014 var i, o, a = nl({}, t.imports, r.imports, Ni),
29018 u = t.interpolate || zt,
29020 f = Pa((t.escape || zt).source + "|" + u.source + "|" + (u === wt ? Ht : zt).source + "|" + (t.evaluate || zt).source + "|$", "g"),
29021 h = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++gn + "]") + "\n";
29022 e.replace(f, function(t, n, r, a, s, c) {
29023 return r || (r = a), d += e.slice(l, c).replace(Wt, P), n && (i = !0, d += "' +\n__e(" + n + ") +\n'"), s && (o = !0, d += "';\n" + s + ";\n__p += '"), r && (d += "' +\n((__t = (" + r + ")) == null ? '' : __t) +\n'"), l = c + t.length, t
29025 var p = t.variable;
29026 p || (d = "with (obj) {\n" + d + "\n}\n"), d = (o ? d.replace(ht, "") : d).replace(pt, "$1").replace(mt, "$1;"), d = "function(" + (p || "obj") + ") {\n" + (p ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (i ? ", __e = _.escape" : "") + (o ? ", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" : ";\n") + d + "return __p\n}";
29027 var m = Cl(function() {
29028 return Na(s, h + "return " + d).apply(J, c)
29030 if (m.source = d, Zo(m)) throw m;
29032 }, W.times = function(e, t) {
29033 if ((e = ca(e)) < 1 || e > Me) return [];
29036 t = Bi(t), e -= Oe;
29037 for (var i = M(r, t); ++n < e;) t(n);
29039 }, W.toFinite = sa, W.toInteger = ca, W.toLength = la, W.toLower = function(e) {
29040 return fa(e).toLowerCase()
29041 }, W.toNumber = ua, W.toSafeInteger = function(e) {
29042 return e ? hn(ca(e), -Me, Me) : 0 === e ? e : 0
29043 }, W.toString = fa, W.toUpper = function(e) {
29044 return fa(e).toUpperCase()
29045 }, W.trim = function(e, t, n) {
29046 if ((e = fa(e)) && (n || t === J)) return e.replace(St, "");
29047 if (!e || !(t = Pr(t))) return e;
29050 return Yr(r, N(r, i), I(r, i) + 1).join("")
29051 }, W.trimEnd = function(e, t, n) {
29052 if ((e = fa(e)) && (n || t === J)) return e.replace(Ot, "");
29053 if (!e || !(t = Pr(t))) return e;
29055 return Yr(r, 0, I(r, K(t)) + 1).join("")
29056 }, W.trimStart = function(e, t, n) {
29057 if ((e = fa(e)) && (n || t === J)) return e.replace(At, "");
29058 if (!e || !(t = Pr(t))) return e;
29060 return Yr(r, N(r, K(t))).join("")
29061 }, W.truncate = function(e, t) {
29065 var i = "separator" in t ? t.separator : i;
29066 n = "length" in t ? ca(t.length) : n, r = "omission" in t ? Pr(t.omission) : r
29068 var o = (e = fa(e)).length;
29073 if (n >= o) return e;
29075 if (s < 1) return r;
29076 var c = a ? Yr(a, 0, s).join("") : e.slice(0, s);
29077 if (i === J) return c + r;
29078 if (a && (s += c.length - s), Kc(i)) {
29079 if (e.slice(s).search(i)) {
29081 for (i.global || (i = Pa(i.source, fa(jt.exec(i)) + "g")), i.lastIndex = 0; l = i.exec(u);) var d = l.index;
29082 c = c.slice(0, d === J ? s : d)
29084 } else if (e.indexOf(Pr(i), s) != s) {
29085 var f = c.lastIndexOf(i);
29086 f > -1 && (c = c.slice(0, f))
29089 }, W.unescape = function(e) {
29090 return (e = fa(e)) && bt.test(e) ? e.replace(gt, Un) : e
29091 }, W.uniqueId = function(e) {
29094 }, W.upperCase = wl, W.upperFirst = El, W.each = Ho, W.eachRight = jo, W.first = So, xa(W, function() {
29096 return Dn(W, function(t, n) {
29097 Ba.call(W.prototype, n) || (e[n] = t)
29101 }), W.VERSION = "4.17.4", i(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"], function(e) {
29102 W[e].placeholder = W
29103 }), i(["drop", "take"], function(e, t) {
29104 Rt.prototype[e] = function(n) {
29105 n = n === J ? 1 : ys(ca(n), 0);
29106 var r = this.__filtered__ && !t ? new Rt(this) : this.clone();
29107 return r.__filtered__ ? r.__takeCount__ = $s(n, r.__takeCount__) : r.__views__.push({
29109 type: e + (r.__dir__ < 0 ? "Right" : "")
29111 }, Rt.prototype[e + "Right"] = function(t) {
29112 return this.reverse()[e](t).reverse()
29114 }), i(["filter", "map", "takeWhile"], function(e, t) {
29116 r = n == xe || 3 == n;
29117 Rt.prototype[e] = function(e) {
29118 var t = this.clone();
29119 return t.__iteratees__.push({
29120 iteratee: Bi(e, 3),
29122 }), t.__filtered__ = t.__filtered__ || r, t
29124 }), i(["head", "last"], function(e, t) {
29125 var n = "take" + (t ? "Right" : "");
29126 Rt.prototype[e] = function() {
29127 return this[n](1).value()[0]
29129 }), i(["initial", "tail"], function(e, t) {
29130 var n = "drop" + (t ? "" : "Right");
29131 Rt.prototype[e] = function() {
29132 return this.__filtered__ ? new Rt(this) : this[n](1)
29134 }), Rt.prototype.compact = function() {
29135 return this.filter(Ea)
29136 }, Rt.prototype.find = function(e) {
29137 return this.filter(e).head()
29138 }, Rt.prototype.findLast = function(e) {
29139 return this.reverse().find(e)
29140 }, Rt.prototype.invokeMap = xr(function(e, t) {
29141 return "function" == typeof e ? new Rt(this) : this.map(function(n) {
29144 }), Rt.prototype.reject = function(e) {
29145 return this.filter(Wo(Bi(e)))
29146 }, Rt.prototype.slice = function(e, t) {
29149 return n.__filtered__ && (e > 0 || t < 0) ? new Rt(n) : (e < 0 ? n = n.takeRight(-e) : e && (n = n.drop(e)), t !== J && (n = (t = ca(t)) < 0 ? n.dropRight(-t) : n.take(t - e)), n)
29150 }, Rt.prototype.takeRightWhile = function(e) {
29151 return this.reverse().takeWhile(e).reverse()
29152 }, Rt.prototype.toArray = function() {
29153 return this.take(Oe)
29154 }, Dn(Rt.prototype, function(e, t) {
29155 var n = /^(?:filter|find|map|reject)|While$/.test(t),
29156 r = /^(?:head|last)$/.test(t),
29157 i = W[r ? "take" + ("last" == t ? "Right" : "") : t],
29158 o = r || /^find/.test(t);
29159 i && (W.prototype[t] = function() {
29160 var t = this.__wrapped__,
29161 a = r ? [1] : arguments,
29162 s = t instanceof Rt,
29166 var t = i.apply(W, d([e], a));
29167 return r && f ? t[0] : t
29169 l && n && "function" == typeof c && 1 != c.length && (s = l = !1);
29170 var f = this.__chain__,
29171 h = !!this.__actions__.length,
29175 t = m ? t : new Rt(this);
29176 var g = e.apply(t, a);
29177 return g.__actions__.push({
29183 return p && m ? e.apply(this, a) : (g = this.thru(u), p ? r ? g.value()[0] : g.value() : g)
29185 }), i(["pop", "push", "shift", "sort", "splice", "unshift"], function(e) {
29187 n = /^(?:push|sort|unshift)$/.test(e) ? "tap" : "thru",
29188 r = /^(?:pop|shift)$/.test(e);
29189 W.prototype[e] = function() {
29191 if (r && !this.__chain__) {
29192 var i = this.value();
29193 return t.apply(Bc(i) ? i : [], e)
29195 return this[n](function(n) {
29196 return t.apply(Bc(n) ? n : [], e)
29199 }), Dn(Rt.prototype, function(e, t) {
29202 var r = n.name + "";
29203 (Ds[r] || (Ds[r] = [])).push({
29208 }), Ds[_i(J, fe).name] = [{
29211 }], Rt.prototype.clone = function() {
29212 var e = new Rt(this.__wrapped__);
29213 return e.__actions__ = ai(this.__actions__), e.__dir__ = this.__dir__, e.__filtered__ = this.__filtered__, e.__iteratees__ = ai(this.__iteratees__), e.__takeCount__ = this.__takeCount__, e.__views__ = ai(this.__views__), e
29214 }, Rt.prototype.reverse = function() {
29215 if (this.__filtered__) {
29216 var e = new Rt(this);
29217 e.__dir__ = -1, e.__filtered__ = !0
29218 } else(e = this.clone()).__dir__ *= -1;
29220 }, Rt.prototype.value = function() {
29221 var e = this.__wrapped__.value(),
29225 i = n ? e.length : 0,
29226 o = Ki(0, i, this.__views__),
29231 u = this.__iteratees__,
29234 h = $s(c, this.__takeCount__);
29235 if (!n || !r && i == c && h == c) return qr(e, this.__actions__);
29237 e: for (; c-- && f < h;) {
29238 for (var m = -1, g = e[l += t]; ++m < d;) {
29243 if (y == ke) g = $;
29245 if (y == xe) continue e;
29252 }, W.prototype.at = Ec, W.prototype.chain = function() {
29254 }, W.prototype.commit = function() {
29255 return new X(this.value(), this.__chain__)
29256 }, W.prototype.next = function() {
29257 this.__values__ === J && (this.__values__ = aa(this.value()));
29258 var e = this.__index__ >= this.__values__.length;
29261 value: e ? J : this.__values__[this.__index__++]
29263 }, W.prototype.plant = function(e) {
29264 for (var t, n = this; n instanceof Z;) {
29266 r.__index__ = 0, r.__values__ = J, t ? i.__wrapped__ = r : t = r;
29270 return i.__wrapped__ = e, t
29271 }, W.prototype.reverse = function() {
29272 var e = this.__wrapped__;
29273 if (e instanceof Rt) {
29275 return this.__actions__.length && (t = new Rt(this)), (t = t.reverse()).__actions__.push({
29279 }), new X(t, this.__chain__)
29281 return this.thru(Do)
29282 }, W.prototype.toJSON = W.prototype.valueOf = W.prototype.value = function() {
29283 return qr(this.__wrapped__, this.__actions__)
29284 }, W.prototype.first = W.prototype.head, as && (W.prototype[as] = function() {
29288 "function" == typeof define && "object" == typeof define.amd && define.amd ? (Tn._ = Vn, define(function() {
29290 })) : Sn ? ((Sn.exports = Vn)._ = Vn, Mn._ = Vn) : Tn._ = Vn
29293 var n = t.isDefined,
29301 t.module("LocalStorageModule", []).provider("localStorageService", function() {
29302 this.prefix = "ls", this.storageType = "localStorage", this.cookie = {
29306 }, this.defaultToCookie = !0, this.notify = {
29309 }, this.setPrefix = function(e) {
29310 return this.prefix = e, this
29311 }, this.setStorageType = function(e) {
29312 return this.storageType = e, this
29313 }, this.setDefaultToCookie = function(e) {
29314 return this.defaultToCookie = !!e, this
29315 }, this.setStorageCookie = function(e, t, n) {
29316 return this.cookie.expiry = e, this.cookie.path = t, this.cookie.secure = n, this
29317 }, this.setStorageCookieDomain = function(e) {
29318 return this.cookie.domain = e, this
29319 }, this.setNotify = function(e, t) {
29320 return this.notify = {
29324 }, this.$get = ["$rootScope", "$window", "$document", "$parse", "$timeout", function(e, t, u, d, f) {
29326 if (n || (n = t.event), b.setItem && s(n.key) && w(n.key)) {
29329 e.$broadcast("LocalStorageModule.notification.changed", {
29331 newvalue: n.newValue,
29332 storageType: m.storageType
29342 u ? u[0] && (u = u[0]) : u = document, "." !== g.substr(-1) && (g = g ? g + "." : "");
29343 var $ = function(e) {
29347 return e.replace(new RegExp("^" + g, "g"), "")
29350 return 0 === e.indexOf(g)
29354 var n = y in t && null !== t[y],
29355 r = $("__" + Math.round(1e7 * Math.random()));
29356 return n && ((p = t[y]).setItem(r, ""), p.removeItem(r)), n
29358 return m.defaultToCookie && (y = "cookie"), e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29362 x = function(t, n, i) {
29365 if (I(i), n = r(n) ? null : l(n), !C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
29368 storageType: "cookie"
29371 p && p.setItem($(t), n), b.setItem && e.$broadcast("LocalStorageModule.notification.setitem", {
29374 storageType: m.storageType
29377 return e.$broadcast("LocalStorageModule.notification.error", r.message), S(t, n)
29384 k = function(t, n) {
29387 if (I(n), !C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), A(t);
29388 var i = p ? p.getItem($(t)) : null;
29389 if (!i || "null" === i) return null;
29391 return JSON.parse(i)
29403 arguments.length >= 1 && ("localStorage" === arguments[arguments.length - 1] || "sessionStorage" === arguments[arguments.length - 1]) && (n = 1, I(arguments[arguments.length - 1]));
29405 for (r = 0; r < arguments.length - n; r++)
29406 if (i = arguments[r], !C && m.defaultToCookie || "cookie" === m.storageType) C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
29408 storageType: "cookie"
29411 p.removeItem($(i)), b.removeItem && e.$broadcast("LocalStorageModule.notification.removeitem", {
29413 storageType: m.storageType
29416 e.$broadcast("LocalStorageModule.notification.error", t.message), O(i)
29424 return t.navigator.cookieEnabled || "cookie" in u && (u.cookie.length > 0 || (u.cookie = "test").indexOf.call(u.cookie, "test") > -1)
29426 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29429 S = function(t, n, s, c) {
29430 if (r(n)) return !1;
29431 if ((a(n) || o(n)) && (n = l(n)), !M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
29436 if (null === n ? (f.setTime(f.getTime() + -864e5), d = "; expires=" + f.toGMTString(), n = "") : i(s) && 0 !== s ? (f.setTime(f.getTime() + 24 * s * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()) : 0 !== v.expiry && (f.setTime(f.getTime() + 24 * v.expiry * 60 * 60 * 1e3), d = "; expires=" + f.toGMTString()), t) {
29437 var p = "; path=" + v.path;
29438 v.domain && (h = "; domain=" + v.domain), "boolean" == typeof c ? !0 === c && (h += "; secure") : !0 === v.secure && (h += "; secure"), u.cookie = $(t) + "=" + encodeURIComponent(n) + d + p + h
29441 return e.$broadcast("LocalStorageModule.notification.error", t.message), !1
29446 if (!M) return e.$broadcast("LocalStorageModule.notification.error", "COOKIES_NOT_SUPPORTED"), !1;
29447 for (var n = u.cookie && u.cookie.split(";") || [], r = 0; r < n.length; r++) {
29449 " " === i.charAt(0);) i = i.substring(1, i.length);
29450 if (0 === i.indexOf($(t) + "=")) {
29451 var o = decodeURIComponent(i.substring(g.length + t.length + 1, i.length));
29453 var a = JSON.parse(o);
29454 return "number" == typeof a ? o : a
29466 for (var e = null, t = g.length, n = u.cookie.split(";"), r = 0; r < n.length; r++) {
29468 " " === e.charAt(0);) e = e.substring(1, e.length);
29469 var i = e.substring(t, e.indexOf("="));
29477 return e && y !== e && (y = e, C = E()), C
29479 C && (t.addEventListener ? (t.addEventListener("storage", h, !1), e.$on("$destroy", function() {
29480 t.removeEventListener("storage", h)
29481 })) : t.attachEvent && (t.attachEvent("onstorage", h), e.$on("$destroy", function() {
29482 t.detachEvent("onstorage", h)
29488 setPrefix: function(e) {
29494 keys: function(t) {
29497 if (I(t), !C) return e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), [];
29501 if (o.substr(0, r) === g) try {
29502 i.push(o.substr(r))
29504 return e.$broadcast("LocalStorageModule.notification.error", t.Description), []
29512 clearAll: function(t, n) {
29516 var i = g ? new RegExp("^" + g) : new RegExp,
29517 o = t ? new RegExp(t) : new RegExp;
29518 if (!C && m.defaultToCookie || "cookie" === m.storageType) return C || e.$broadcast("LocalStorageModule.notification.warning", "LOCAL_STORAGE_NOT_SUPPORTED"), D();
29519 if (!C && !m.defaultToCookie) return !1;
29522 if (i.test(s) && o.test(s.substr(a))) try {
29525 return e.$broadcast("LocalStorageModule.notification.error", t.message), D()
29532 bind: function(e, t, r, i, a) {
29533 var s = k(i = i || t, a);
29534 return null === s && n(r) ? s = r : o(s) && o(r) && (s = c(s, r)), d(t).assign(e, s), e.$watch(t, function(e) {
29540 length: function(e) {
29544 for (var r = 0, i = t[y], o = 0; o < i.length; o++) 0 === i.key(o).indexOf(g) && r++;
29550 defaultToCookie: this.defaultToCookie,
29562 }(window, window.angular),
29568 return d(t, c).chars(e), t.join("")
29570 var r, i, o, a, s, c, l, u, d, f = t.$$minErr("$sanitize");
29571 t.module("ngSanitize", []).provider("$sanitize", function() {
29575 for (n = 0; n < i.length; n++) r[t ? s(i[n]) : i[n]] = !0;
29580 for (var t = {}, n = 0, r = e.length; n < r; n++) {
29582 t[i.name] = i.value
29588 return e.replace(/&/g, "&").replace(b, function(e) {
29589 return "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";"
29590 }).replace(y, function(e) {
29591 return "&#" + e.charCodeAt(0) + ";"
29592 }).replace(/</g, "<").replace(/>/g, ">")
29597 if (t.nodeType === e.Node.ELEMENT_NODE)
29598 for (var n = t.attributes, r = 0, i = n.length; r < i; r++) {
29600 a = o.name.toLowerCase();
29601 "xmlns:ns1" !== a && 0 !== a.lastIndexOf("ns1:", 0) || (t.removeAttributeNode(o), r--, i--)
29603 var s = t.firstChild;
29604 s && m(s), t = g("nextSibling", t)
29610 if (n && l.call(t, n)) throw f("elclob", "Failed to sanitize html because the element is clobbered: {0}", t.outerHTML || t.outerText);
29614 this.$get = ["$$sanitizeUri", function(e) {
29615 return v && i(M, k),
29618 return u(t, d(n, function(t, n) {
29619 return !/^unsafe:/.test(e(t, n))
29622 }], this.enableSvg = function(e) {
29623 return a(e) ? (v = e, this) : v
29624 }, r = t.bind, i = t.extend, o = t.forEach, a = t.isDefined, s = t.lowercase, c = t.noop, u = function(e, t) {
29625 null === e || void 0 === e ? e = "" : "string" != typeof e && (e = "" + e);
29630 if (0 === r) throw f("uinput", "Failed to sanitize html because the input is unstable");
29631 r--, e = n.innerHTML, n = N(e)
29632 } while (e !== n.innerHTML);
29633 for (var i = n.firstChild; i;) {
29634 switch (i.nodeType) {
29636 t.start(i.nodeName.toLowerCase(), h(i.attributes));
29639 t.chars(i.textContent)
29642 if (!((o = i.firstChild) || (1 === i.nodeType && t.end(i.nodeName.toLowerCase()), o = g("nextSibling", i))))
29643 for (; null == o && (i = g("parentNode", i)) !== n;) o = g("nextSibling", i), 1 === i.nodeType && t.end(i.nodeName.toLowerCase());
29646 for (; i = n.firstChild;) n.removeChild(i)
29647 }, d = function(e, t) {
29651 start: function(e, r) {
29652 e = s(e), !n && T[e] && (n = e), n || !0 !== M[e] || (i("<"), i(e), o(r, function(n, r) {
29654 a = "img" === e && "src" === o || "background" === o;
29655 !0 !== D[o] || !0 === S[o] && !t(n, a) || (i(" "), i(r), i('="'), i(p(n)), i('"'))
29659 e = s(e), n || !0 !== M[e] || !0 === $[e] || (i("</"), i(e), i(">")), e == n && (n = !1)
29661 chars: function(e) {
29665 }, l = e.Node.prototype.contains || function(e) {
29666 return !!(16 & this.compareDocumentPosition(e))
29668 var b = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
29669 y = /([^#-~ |!])/g,
29670 $ = n("area,br,col,hr,img,wbr"),
29671 _ = n("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),
29674 C = i({}, _, n("address,article,aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")),
29675 x = i({}, w, n("a,abbr,acronym,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,samp,small,span,strike,strong,sub,sup,time,tt,u,var")),
29676 k = n("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,radialGradient,rect,stop,svg,switch,text,title,tspan"),
29677 T = n("script,style"),
29678 M = i({}, $, C, x, E),
29679 S = n("background,cite,href,longdesc,src,xlink:href"),
29680 A = n("abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,valign,value,vspace,width"),
29681 O = n("accent-height,accumulate,additive,alphabetic,arabic-form,ascent,baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan", !0),
29682 D = i({}, S, O, A),
29683 N = function(e, t) {
29685 if (!t || !t.implementation) throw f("noinert", "Can't create an inert html document");
29686 var r = ((n = t.implementation.createHTMLDocument("inert")).documentElement || n.getDocumentElement()).querySelector("body");
29687 return r.innerHTML = '<svg><g onload="this.parentNode.remove()"></g></svg>', r.querySelector("svg") ? (r.innerHTML = '<svg><p><style><img src="</style><img src=x onerror=alert(1)//">', r.querySelector("svg img") ? function(t) {
29688 t = "<remove></remove>" + t;
29690 var n = (new e.DOMParser).parseFromString(t, "text/html").body;
29691 return n.firstChild.remove(), n
29696 return r.innerHTML = e, t.documentMode && m(r), r
29698 t = "<remove></remove>" + t;
29704 var n = new e.XMLHttpRequest;
29705 n.responseType = "document", n.open("GET", "data:text/html;charset=utf-8," + t, !1), n.send(null);
29706 var r = n.response.body;
29707 return r.firstChild.remove(), r
29711 angularVersion: "1.6.6"
29712 }), t.module("ngSanitize").filter("linky", ["$sanitize", function(e) {
29713 var r = /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i,
29715 o = t.$$minErr("linky"),
29720 return function(t, u, d) {
29724 if (null == t || "" === t) return t;
29725 if (!l(t)) throw o("notstring", "Expected string but received: {0}", t);
29726 for (var h, p, m, g = s(d) ? d : c(d) ? function() {
29730 }, v = t, b = []; h = v.match(r);) p = h[0], h[2] || h[4] || (p = (h[3] ? "http://" : "mailto:") + p), m = h.index, f(v.substr(0, m)),
29734 for (n in r) b.push(n + '="' + r[n] + '" ');
29735 !a(u) || "target" in r || b.push('target="', u, '" '), b.push('href="', e.replace(/"/g, """), '">'), f(t), b.push("</a>")
29736 }(p, h[0].replace(i, "")), v = v.substring(m + h[0].length);
29737 return f(v), e(b.join(""))
29740 }(window, window.angular),
29742 angular.module("ngCsv.config", []).value("ngCsv.config", {
29744 }).config(["$compileProvider", function(e) {
29745 angular.isDefined(e.urlSanitizationWhitelist) ? e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/) : e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)
29746 }]), angular.module("ngCsv.directives", ["ngCsv.services"]), angular.module("ngCsv.services", []), angular.module("ngCsv", ["ngCsv.config", "ngCsv.services", "ngCsv.directives", "ngSanitize"]), "undefined" != typeof module && "undefined" != typeof exports && module.exports === exports && (module.exports = "ngCsv"), angular.module("ngCsv.services").service("CSV", ["$q", function(e) {
29755 this.stringifyField = function(e, t) {
29756 return "locale" === t.decimalSep && this.isFloat(e) ? e.toLocaleString() : "." !== t.decimalSep && this.isFloat(e) ? e.toString().replace(".", t.decimalSep) : "string" == typeof e ? (e = e.replace(/"/g, '""'), (t.quoteStrings || e.indexOf(",") > -1 || e.indexOf("\n") > -1 || e.indexOf("\r") > -1) && (e = t.txtDelim + e + t.txtDelim), e) : "boolean" == typeof e ? e ? "TRUE" : "FALSE" : e
29757 }, this.isFloat = function(e) {
29758 return +e === e && (!isFinite(e) || Boolean(e % 1))
29759 }, this.stringify = function(n, r) {
29764 c = e.when(n).then(function(e) {
29765 if (angular.isDefined(r.header) && r.header) {
29767 n = [], angular.forEach(r.header, function(e) {
29768 this.push(o.stringifyField(e, r))
29769 }, n), c = n.join(r.fieldSep ? r.fieldSep : ","), s += c + t
29772 if (angular.isArray(e) ? l = e : angular.isFunction(e) && (l = e()), angular.isDefined(r.label) && r.label && "boolean" == typeof r.label) {
29774 u = [], angular.forEach(l[0], function(e, t) {
29775 this.push(o.stringifyField(t, r))
29776 }, u), d = u.join(r.fieldSep ? r.fieldSep : ","), s += d + t
29778 angular.forEach(l, function(e, n) {
29779 var i, a, c = angular.copy(l[n]);
29781 var u = r.columnOrder ? r.columnOrder : c;
29782 angular.forEach(u, function(e) {
29783 var t = r.columnOrder ? c[e] : e;
29784 this.push(o.stringifyField(t, r))
29785 }, a), i = a.join(r.fieldSep ? r.fieldSep : ","), s += n < l.length ? i + t : i
29786 }), r.addByteOrderMarker && (a += "\ufeff"), a += s, i.resolve(a)
29788 return "function" == typeof c.catch && c.catch(function(e) {
29791 }, this.isSpecialChar = function(e) {
29792 return void 0 !== n[e]
29793 }, this.getSpecialChar = function(e) {
29796 }]), angular.module("ngCsv.directives").directive("ngCsv", ["$parse", "$q", "CSV", "$document", "$timeout", function(t, n, r, i, o) {
29801 filename: "@filename",
29802 header: "&csvHeader",
29803 columnOrder: "&csvColumnOrder",
29804 txtDelim: "@textDelimiter",
29805 decimalSep: "@decimalSeparator",
29806 quoteStrings: "@quoteStrings",
29807 fieldSep: "@fieldSeparator",
29808 lazyLoad: "@lazyLoad",
29809 addByteOrderMarker: "@addBom",
29811 charset: "@charset",
29814 controller: ["$scope", "$element", "$attrs", "$transclude", function(e, t, i) {
29817 txtDelim: e.txtDelim ? e.txtDelim : '"',
29818 decimalSep: e.decimalSep ? e.decimalSep : ".",
29819 quoteStrings: e.quoteStrings,
29820 addByteOrderMarker: e.addByteOrderMarker
29822 return angular.isDefined(i.csvHeader) && (t.header = e.$eval(e.header)), angular.isDefined(i.csvColumnOrder) && (t.columnOrder = e.$eval(e.columnOrder)), angular.isDefined(i.csvLabel) && (t.label = e.$eval(e.label)), t.fieldSep = e.fieldSep ? e.fieldSep : ",", t.fieldSep = r.isSpecialChar(t.fieldSep) ? r.getSpecialChar(t.fieldSep) : t.fieldSep, t
29824 e.csv = "", angular.isDefined(e.lazyLoad) && "true" == e.lazyLoad || angular.isArray(e.data) && e.$watch("data", function() {
29826 }, !0), e.getFilename = function() {
29827 return e.filename || "download.csv"
29828 }, e.buildCSV = function() {
29830 return t.addClass(i.ngCsvLoadingClass || "ng-csv-loading"), r.stringify(e.data(), o()).then(function(n) {
29831 e.csv = n, t.removeClass(i.ngCsvLoadingClass || "ng-csv-loading"), a.resolve(n)
29832 }), e.$apply(), a.promise
29835 link: function(t, n) {
29837 var n = t.charset || "utf-8",
29838 r = new Blob([t.csv], {
29839 type: "text/csv;charset=" + n + ";"
29841 if (e.navigator.msSaveOrOpenBlob) navigator.msSaveBlob(r, t.getFilename());
29843 var a = angular.element('<div data-tap-disabled="true"><a></a></div>'),
29844 s = angular.element(a.children()[0]);
29845 s.attr("href", e.URL.createObjectURL(r)), s.attr("download", t.getFilename()), s.attr("target", "_blank"), i.find("body").append(a), o(function() {
29846 s[0].click(), s.remove()
29850 n.bind("click", function() {
29851 t.buildCSV().then(function() {
29858 }(window, document),
29863 return null != e && "" !== e && "hasOwnProperty" !== e && a.test("." + e)
29867 if (!n(r)) throw o("badmember", 'Dotted member path "@{0}" is invalid.', r);
29868 for (var i = r.split("."), a = 0, s = i.length; a < s && t.isDefined(e); a++) {
29870 e = null !== e ? e[c] : void 0
29876 n = n || {}, t.forEach(n, function(e, t) {
29879 for (var r in e) !e.hasOwnProperty(r) || "$" === r.charAt(0) && "$" === r.charAt(1) || (n[r] = e[r]);
29882 var o = t.$$minErr("$resource"),
29883 a = /^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;
29884 t.module("ngResource", ["ng"]).info({
29885 angularVersion: "1.6.6"
29886 }).provider("$resource", function() {
29887 var e = /^https?:\/\/\[[^\]]*][^/]*/,
29890 stripTrailingSlashes: !0,
29910 }, this.$get = ["$http", "$log", "$q", "$timeout", function(a, s, c, l) {
29912 this.template = e, this.defaults = p({}, n.defaults, t), this.urlParams = {}
29915 function d(e, t, $, _) {
29918 return n = p({}, t, n), h(n, function(t, n) {
29919 b(t) && (t = t(e)), i[n] = t && t.charAt && "@" === t.charAt(0) ? r(e, t.substr(1)) : t
29930 var x = new u(e, _);
29931 return $ = p({}, n.defaults.actions, $), C.prototype.toJSON = function() {
29932 var e = p({}, this);
29933 return delete e.$promise, delete e.$resolved, delete e.$cancelRequest, e
29934 }, h($, function(e, t) {
29935 var n = !0 === e.hasBody || !1 !== e.hasBody && /^(POST|PUT|PATCH)$/i.test(e.method),
29937 u = v(e.cancellable) ? e.cancellable : x.defaults.cancellable;
29938 r && !y(r) && (s.debug("ngResource:\n Only numeric values are allowed as `timeout`.\n Promises are not supported in $resource, because the same value would be used for multiple requests. If you are looking for a way to cancel requests, you should use the `cancellable` option."), delete e.timeout, r = null), C[t] = function(s, d, v, y) {
29939 var $, _, k, T = {};
29940 switch (arguments.length) {
29946 T = s, $ = d, _ = v;
29955 b(s) ? _ = s : n ? $ = s : T = s;
29960 throw o("badargs", "Expected up to 4 arguments [params, data, success, error], got {0} arguments", arguments.length)
29962 var M, S, A = this instanceof C,
29963 O = A ? $ : e.isArray ? [] : new C($),
29965 N = e.interceptor && e.interceptor.response || E,
29966 I = e.interceptor && e.interceptor.responseError || void 0,
29969 h(e, function(e, t) {
29971 default: D[t] = m(e);
29975 case "interceptor":
29976 case "cancellable":
29978 }), !A && u && (M = c.defer(), D.timeout = M.promise, r && (S = l(M.resolve, r))), n && (D.data = $), x.setUrlParams(D, p({}, w($, e.params || {}), T), e.url);
29979 var H = a(D).then(function(n) {
29982 if (g(r) !== !!e.isArray) throw o("badcfg", "Error in resource configuration for action `{0}`. Expected response to contain an {1} but got an {2} (Request: {3} {4})", t, e.isArray ? "array" : "object", g(r) ? "array" : "object", D.method, D.url);
29983 if (e.isArray) O.length = 0, h(r, function(e) {
29984 "object" == typeof e ? O.push(new C(e)) : O.push(e)
29987 var a = O.$promise;
29988 i(r, O), O.$promise = a
29991 return n.resource = O, n
29993 return e.resource = O, c.reject(e)
29995 return H = H.finally(function() {
29996 O.$resolved = !0, !A && u && (O.$cancelRequest = f, l.cancel(S), M = S = D.timeout = null)
29997 }), H = H.then(function(e) {
29999 return (_ || f)(t, e.headers, e.status, e.statusText), t
30000 }, R || P ? function(e) {
30001 return R && !P && H.catch(f), R && k(e), P ? I(e) : c.reject(e)
30002 } : void 0), A ? H : (O.$promise = H, O.$resolved = !1, u && (O.$cancelRequest = function(e) {
30003 H.catch(f), null !== M && M.resolve(e)
30005 }, C.prototype["$" + t] = function(e, n, r) {
30006 b(e) && (r = n, n = e, e = {});
30007 var i = C[t].call(this, e, this, n, r);
30008 return i.$promise || i
30010 }), C.bind = function(n) {
30011 var r = p({}, t, n);
30012 return d(e, r, $, _)
30023 $ = t.$$encodeUriQuery,
30024 _ = t.$$encodeUriSegment;
30025 return u.prototype = {
30026 setUrlParams: function(t, n, r) {
30027 var i, a, s = this,
30028 c = r || s.template,
30030 u = s.urlParams = Object.create(null);
30031 h(c.split(/\W/), function(e) {
30032 if ("hasOwnProperty" === e) throw o("badname", "hasOwnProperty is not a valid parameter name.");
30033 !new RegExp("^\\d+$").test(e) && e && new RegExp("(^|[^\\\\]):" + e + "(\\W|$)").test(c) && (u[e] = {
30034 isQueryParamValue: new RegExp("\\?.*=:" + e + "(?:\\W|$)").test(c)
30036 }), c = c.replace(/\\:/g, ":"), c = c.replace(e, function(e) {
30038 }), n = n || {}, h(s.urlParams, function(e, t) {
30039 i = n.hasOwnProperty(t) ? n[t] : s.defaults[t], v(i) && null !== i ? (a = e.isQueryParamValue ? $(i, !0) : _(i), c = c.replace(new RegExp(":" + t + "(\\W|$)", "g"), function(e, t) {
30041 })) : c = c.replace(new RegExp("(/?):" + t + "(\\W|$)", "g"), function(e, t, n) {
30042 return "/" === n.charAt(0) ? n : t + n
30044 }), s.defaults.stripTrailingSlashes && (c = c.replace(/\/+$/, "") || "/"), c = c.replace(/\/\.(?=\w+($|\?))/, "."), t.url = l + c.replace(/\/(\\|%5C)\./, "/."), h(n, function(e, n) {
30045 s.urlParams[n] || (t.params = t.params || {}, t.params[n] = e)
30051 }(window, window.angular),
30053 "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : e.moment = t()
30054 }(this, function() {
30058 return bt.apply(null, arguments)
30062 return e instanceof Array || "[object Array]" === Object.prototype.toString.call(e)
30066 return null != e && "[object Object]" === Object.prototype.toString.call(e)
30071 for (t in e) return !1;
30076 return void 0 === e
30080 return "number" == typeof e || "[object Number]" === Object.prototype.toString.call(e)
30084 return e instanceof Date || "[object Date]" === Object.prototype.toString.call(e)
30089 for (n = 0; n < e.length; ++n) r.push(t(e[n], n));
30094 return Object.prototype.hasOwnProperty.call(e, t)
30098 for (var n in t) c(t, n) && (e[n] = t[n]);
30099 return c(t, "toString") && (e.toString = t.toString), c(t, "valueOf") && (e.valueOf = t.valueOf), e
30102 function u(e, t, n, r) {
30103 return Re(e, t, n, r, !0).utc()
30114 invalidMonth: null,
30116 userInvalidated: !1,
30118 parsedDateParts: [],
30121 weekdayMismatch: !1
30126 return null == e._pf && (e._pf = d()), e._pf
30130 if (null == e._isValid) {
30132 n = $t.call(t.parsedDateParts, function(e) {
30135 r = !isNaN(e._d.getTime()) && t.overflow < 0 && !t.empty && !t.invalidMonth && !t.invalidWeekday && !t.nullInput && !t.invalidFormat && !t.userInvalidated && (!t.meridiem || t.meridiem && n);
30136 if (e._strict && (r = r && 0 === t.charsLeftOver && 0 === t.unusedTokens.length && void 0 === t.bigHour), null != Object.isFrozen && Object.isFrozen(e)) return r;
30144 return null != e ? l(f(t), e) : f(t).userInvalidated = !0, t
30149 if (i(t._isAMomentObject) || (e._isAMomentObject = t._isAMomentObject), i(t._i) || (e._i = t._i), i(t._f) || (e._f = t._f), i(t._l) || (e._l = t._l), i(t._strict) || (e._strict = t._strict), i(t._tzm) || (e._tzm = t._tzm), i(t._isUTC) || (e._isUTC = t._isUTC), i(t._offset) || (e._offset = t._offset), i(t._pf) || (e._pf = f(t)), i(t._locale) || (e._locale = t._locale), _t.length > 0)
30150 for (n = 0; n < _t.length; n++) i(o = t[r = _t[n]]) || (e[r] = o);
30155 m(this, t), this._d = new Date(null != t._d ? t._d.getTime() : NaN), this.isValid() || (this._d = new Date(NaN)), !1 === wt && (wt = !0, e.updateOffset(this), wt = !1)
30159 return e instanceof g || null != e && null != e._isAMomentObject
30163 return e < 0 ? Math.ceil(e) || 0 : Math.floor(e)
30169 return 0 !== t && isFinite(t) && (n = b(t)), n
30172 function $(e, t, n) {
30173 var r, i = Math.min(e.length, t.length),
30174 o = Math.abs(e.length - t.length),
30176 for (r = 0; r < i; r++)(n && e[r] !== t[r] || !n && y(e[r]) !== y(t[r])) && a++;
30181 !1 === e.suppressDeprecationWarnings && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + t)
30186 return l(function() {
30187 if (null != e.deprecationHandler && e.deprecationHandler(null, t), r) {
30188 for (var i, o = [], a = 0; a < arguments.length; a++) {
30189 if (i = "", "object" == typeof arguments[a]) {
30190 i += "\n[" + a + "] ";
30191 for (var s in arguments[0]) i += s + ": " + arguments[0][s] + ", ";
30193 } else i = arguments[a];
30196 _(t + "\nArguments: " + Array.prototype.slice.call(o).join("") + "\n" + (new Error).stack), r = !1
30198 return n.apply(this, arguments)
30203 null != e.deprecationHandler && e.deprecationHandler(t, n), Et[t] || (_(n), Et[t] = !0)
30207 return e instanceof Function || "[object Function]" === Object.prototype.toString.call(e)
30211 var r, i = l({}, e);
30212 for (r in t) c(t, r) && (n(e[r]) && n(t[r]) ? (i[r] = {}, l(i[r], e[r]), l(i[r], t[r])) : null != t[r] ? i[r] = t[r] : delete i[r]);
30213 for (r in e) c(e, r) && !c(t, r) && n(e[r]) && (i[r] = l({}, i[r]));
30218 null != e && this.set(e)
30222 var n = e.toLowerCase();
30223 Ot[n] = Ot[n + "s"] = Ot[t] = e
30227 return "string" == typeof e ? Ot[e] || Ot[e.toLowerCase()] : void 0
30232 for (n in e) c(e, n) && (t = M(n)) && (r[t] = e[n]);
30242 for (var n in e) t.push({
30246 return t.sort(function(e, t) {
30247 return e.priority - t.priority
30252 return function(r) {
30253 return null != r ? (I(this, t, r), e.updateOffset(this, n), this) : N(this, t)
30258 return e.isValid() ? e._d["get" + (e._isUTC ? "UTC" : "") + t]() : NaN
30261 function I(e, t, n) {
30262 e.isValid() && e._d["set" + (e._isUTC ? "UTC" : "") + t](n)
30265 function R(e, t, n) {
30266 var r = "" + Math.abs(e),
30268 return (e >= 0 ? n ? "+" : "" : "-") + Math.pow(10, Math.max(0, i)).toString().substr(1) + r
30271 function P(e, t, n, r) {
30273 "string" == typeof r && (i = function() {
30275 }), e && (Pt[e] = i), t && (Pt[t[0]] = function() {
30276 return R(i.apply(this, arguments), t[1], t[2])
30277 }), n && (Pt[n] = function() {
30278 return this.localeData().ordinal(i.apply(this, arguments), e)
30283 return e.match(/\[[\s\S]/) ? e.replace(/^\[|\]$/g, "") : e.replace(/\\/g, "")
30287 var t, n, r = e.match(Nt);
30288 for (t = 0, n = r.length; t < n; t++) Pt[r[t]] ? r[t] = Pt[r[t]] : r[t] = H(r[t]);
30289 return function(t) {
30291 for (i = 0; i < n; i++) o += C(r[i]) ? r[i].call(t, e) : r[i];
30297 return e.isValid() ? (t = F(t, e.localeData()), Rt[t] = Rt[t] || j(t), Rt[t](e)) : e.localeData().invalidDate()
30302 for (It.lastIndex = 0; n >= 0 && It.test(e);) e = e.replace(It, function(e) {
30303 return t.longDateFormat(e) || e
30304 }), It.lastIndex = 0, n -= 1;
30308 function q(e, t, n) {
30309 en[e] = C(t) ? t : function(e, r) {
30310 return e && n ? n : t
30315 return c(en, e) ? en[e](t._strict, t._locale) : new RegExp(V(e))
30319 return B(e.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(e, t, n, r, i) {
30320 return t || n || r || i
30325 return e.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
30330 for ("string" == typeof e && (e = [e]), o(t) && (r = function(e, n) {
30332 }), n = 0; n < e.length; n++) tn[e[n]] = r
30336 z(e, function(e, n, r, i) {
30337 r._w = r._w || {}, t(e, r._w, r, i)
30341 function Y(e, t, n) {
30342 null != t && c(tn, e) && tn[e](t, n._a, n, e)
30346 return new Date(Date.UTC(e, t + 1, 0)).getUTCDate()
30349 function K(e, t, n) {
30350 var r, i, o, a = e.toLocaleLowerCase();
30351 if (!this._monthsParse)
30352 for (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], r = 0; r < 12; ++r) o = u([2e3, r]), this._shortMonthsParse[r] = this.monthsShort(o, "").toLocaleLowerCase(), this._longMonthsParse[r] = this.months(o, "").toLocaleLowerCase();
30353 return n ? "MMM" === t ? -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : null : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : null : "MMM" === t ? -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : null : -1 !== (i = fn.call(this._longMonthsParse, a)) ? i : -1 !== (i = fn.call(this._shortMonthsParse, a)) ? i : null
30358 if (!e.isValid()) return e;
30359 if ("string" == typeof t)
30360 if (/^\d+$/.test(t)) t = y(t);
30361 else if (t = e.localeData().monthsParse(t), !o(t)) return e;
30362 return n = Math.min(e.date(), G(e.year(), t)), e._d["set" + (e._isUTC ? "UTC" : "") + "Month"](t, n), e
30366 return null != t ? (Z(this, t), e.updateOffset(this, !0), this) : N(this, "Month")
30371 return t.length - e.length
30376 for (t = 0; t < 12; t++) n = u([2e3, t]), r.push(this.monthsShort(n, "")), i.push(this.months(n, "")), o.push(this.months(n, "")), o.push(this.monthsShort(n, ""));
30377 for (r.sort(e), i.sort(e), o.sort(e), t = 0; t < 12; t++) r[t] = B(r[t]), i[t] = B(i[t]);
30378 for (t = 0; t < 24; t++) o[t] = B(o[t]);
30379 this._monthsRegex = new RegExp("^(" + o.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + r.join("|") + ")", "i")
30383 return ee(e) ? 366 : 365
30387 return e % 4 == 0 && e % 100 != 0 || e % 400 == 0
30390 function te(e, t, n, r, i, o, a) {
30391 var s = new Date(e, t, n, r, i, o, a);
30392 return e < 100 && e >= 0 && isFinite(s.getFullYear()) && s.setFullYear(e), s
30396 var t = new Date(Date.UTC.apply(null, arguments));
30397 return e < 100 && e >= 0 && isFinite(t.getUTCFullYear()) && t.setUTCFullYear(e), t
30400 function re(e, t, n) {
30402 return -((7 + ne(e, 0, r).getUTCDay() - t) % 7) + r - 1
30405 function ie(e, t, n, r, i) {
30406 var o, a, s = 1 + 7 * (t - 1) + (7 + n - r) % 7 + re(e, r, i);
30407 return s <= 0 ? a = J(o = e - 1) + s : s > J(e) ? (o = e + 1, a = s - J(e)) : (o = e, a = s), {
30413 function oe(e, t, n) {
30414 var r, i, o = re(e.year(), t, n),
30415 a = Math.floor((e.dayOfYear() - o - 1) / 7) + 1;
30416 return a < 1 ? r = a + ae(i = e.year() - 1, t, n) : a > ae(e.year(), t, n) ? (r = a - ae(e.year(), t, n), i = e.year() + 1) : (i = e.year(), r = a), {
30422 function ae(e, t, n) {
30423 var r = re(e, t, n),
30424 i = re(e + 1, t, n);
30425 return (J(e) - r + i) / 7
30428 function se(e, t) {
30429 return "string" != typeof e ? e : isNaN(e) ? "number" == typeof(e = t.weekdaysParse(e)) ? e : null : parseInt(e, 10)
30432 function ce(e, t) {
30433 return "string" == typeof e ? t.weekdaysParse(e) % 7 || 7 : isNaN(e) ? null : e
30436 function le(e, t, n) {
30437 var r, i, o, a = e.toLocaleLowerCase();
30438 if (!this._weekdaysParse)
30439 for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], r = 0; r < 7; ++r) o = u([2e3, 1]).day(r), this._minWeekdaysParse[r] = this.weekdaysMin(o, "").toLocaleLowerCase(), this._shortWeekdaysParse[r] = this.weekdaysShort(o, "").toLocaleLowerCase(), this._weekdaysParse[r] = this.weekdays(o, "").toLocaleLowerCase();
30440 return n ? "dddd" === t ? -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : null : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : "dddd" === t ? -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : "ddd" === t ? -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : null : -1 !== (i = fn.call(this._minWeekdaysParse, a)) ? i : -1 !== (i = fn.call(this._weekdaysParse, a)) ? i : -1 !== (i = fn.call(this._shortWeekdaysParse, a)) ? i : null
30445 return t.length - e.length
30447 var t, n, r, i, o, a = [],
30451 for (t = 0; t < 7; t++) n = u([2e3, 1]).day(t), r = this.weekdaysMin(n, ""), i = this.weekdaysShort(n, ""), o = this.weekdays(n, ""), a.push(r), s.push(i), c.push(o), l.push(r), l.push(i), l.push(o);
30452 for (a.sort(e), s.sort(e), c.sort(e), l.sort(e), t = 0; t < 7; t++) s[t] = B(s[t]), c[t] = B(c[t]), l[t] = B(l[t]);
30453 this._weekdaysRegex = new RegExp("^(" + l.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + c.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + s.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + a.join("|") + ")", "i")
30457 return this.hours() % 12 || 12
30460 function fe(e, t) {
30461 P(e, 0, 0, function() {
30462 return this.localeData().meridiem(this.hours(), this.minutes(), t)
30466 function he(e, t) {
30467 return t._meridiemParse
30471 return e ? e.toLowerCase().replace("_", "-") : e
30475 for (var t, n, r, i, o = 0; o < e.length;) {
30476 for (t = (i = pe(e[o]).split("-")).length, n = (n = pe(e[o + 1])) ? n.split("-") : null; t > 0;) {
30477 if (r = ge(i.slice(0, t).join("-"))) return r;
30478 if (n && n.length >= t && $(i, n, !0) >= t - 1) break;
30488 if (!An[e] && "undefined" != typeof module && module && module.exports) try {
30489 t = kn._abbr, require("./locale/" + e), ve(t)
30494 function ve(e, t) {
30496 return e && (n = i(t) ? ye(e) : be(e, t)) && (kn = n), kn._abbr
30499 function be(e, t) {
30502 if (t.abbr = e, null != An[e]) E("defineLocaleOverride", "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."), n = An[e]._config;
30503 else if (null != t.parentLocale) {
30504 if (null == An[t.parentLocale]) return On[t.parentLocale] || (On[t.parentLocale] = []), On[t.parentLocale].push({
30508 n = An[t.parentLocale]._config
30510 return An[e] = new k(x(n, t)), On[e] && On[e].forEach(function(e) {
30511 be(e.name, e.config)
30514 return delete An[e], null
30519 if (e && e._locale && e._locale._abbr && (e = e._locale._abbr), !e) return kn;
30521 if (n = ge(e)) return n;
30529 return n && -2 === f(e).overflow && (t = n[rn] < 0 || n[rn] > 11 ? rn : n[on] < 1 || n[on] > G(n[nn], n[rn]) ? on : n[an] < 0 || n[an] > 24 || 24 === n[an] && (0 !== n[sn] || 0 !== n[cn] || 0 !== n[ln]) ? an : n[sn] < 0 || n[sn] > 59 ? sn : n[cn] < 0 || n[cn] > 59 ? cn : n[ln] < 0 || n[ln] > 999 ? ln : -1, f(e)._overflowDayOfYear && (t < nn || t > on) && (t = on), f(e)._overflowWeeks && -1 === t && (t = un), f(e)._overflowWeekday && -1 === t && (t = dn), f(e).overflow = t), e
30533 var t, n, r, i, o, a, s = e._i,
30534 c = Dn.exec(s) || Nn.exec(s);
30536 for (f(e).iso = !0, t = 0, n = Rn.length; t < n; t++)
30537 if (Rn[t][1].exec(c[1])) {
30538 i = Rn[t][0], r = !1 !== Rn[t][2];
30541 if (null == i) return void(e._isValid = !1);
30543 for (t = 0, n = Pn.length; t < n; t++)
30544 if (Pn[t][1].exec(c[3])) {
30545 o = (c[2] || " ") + Pn[t][0];
30548 if (null == o) return void(e._isValid = !1)
30550 if (!r && null != o) return void(e._isValid = !1);
30552 if (!In.exec(c[4])) return void(e._isValid = !1);
30555 e._f = i + (o || "") + (a || ""), Me(e)
30556 } else e._isValid = !1
30560 var t, n, r, i, o, a, s, c, l = {
30571 if (t = e._i.replace(/\([^\)]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s|\s$/g, ""), n = jn.exec(t)) {
30572 if (r = n[1] ? "ddd" + (5 === n[1].length ? ", " : " ") : "", i = "D MMM " + (n[2].length > 10 ? "YYYY " : "YY "), o = "HH:mm" + (n[4] ? ":ss" : ""), n[1]) {
30573 var u = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"][new Date(n[2]).getDay()];
30574 if (n[1].substr(0, 3) !== u) return f(e).weekdayMismatch = !0, void(e._isValid = !1)
30576 switch (n[5].length) {
30578 s = 0 === c ? " +0000" : ((c = "YXWVUTSRQPONZABCDEFGHIKLM".indexOf(n[5][1].toUpperCase()) - 12) < 0 ? " -" : " +") + ("" + c).replace(/^-?/, "0").match(/..$/)[0] + "00";
30586 n[5] = s, e._i = n.splice(1).join(""), a = " ZZ", e._f = r + i + o + a, Me(e), f(e).rfc2822 = !0
30587 } else e._isValid = !1
30591 var n = Hn.exec(t._i);
30592 null === n ? (_e(t), !1 === t._isValid && (delete t._isValid, we(t), !1 === t._isValid && (delete t._isValid, e.createFromInputFallback(t)))) : t._d = new Date(+n[1])
30595 function Ce(e, t, n) {
30596 return null != e ? e : null != t ? t : n
30600 var n = new Date(e.now());
30601 return t._useUTC ? [n.getUTCFullYear(), n.getUTCMonth(), n.getUTCDate()] : [n.getFullYear(), n.getMonth(), n.getDate()]
30605 var t, n, r, i, o = [];
30607 for (r = xe(e), e._w && null == e._a[on] && null == e._a[rn] && Te(e), null != e._dayOfYear && (i = Ce(e._a[nn], r[nn]), (e._dayOfYear > J(i) || 0 === e._dayOfYear) && (f(e)._overflowDayOfYear = !0), n = ne(i, 0, e._dayOfYear), e._a[rn] = n.getUTCMonth(), e._a[on] = n.getUTCDate()), t = 0; t < 3 && null == e._a[t]; ++t) e._a[t] = o[t] = r[t];
30608 for (; t < 7; t++) e._a[t] = o[t] = null == e._a[t] ? 2 === t ? 1 : 0 : e._a[t];
30609 24 === e._a[an] && 0 === e._a[sn] && 0 === e._a[cn] && 0 === e._a[ln] && (e._nextDay = !0, e._a[an] = 0), e._d = (e._useUTC ? ne : te).apply(null, o), null != e._tzm && e._d.setUTCMinutes(e._d.getUTCMinutes() - e._tzm), e._nextDay && (e._a[an] = 24)
30614 var t, n, r, i, o, a, s, c;
30615 if (null != (t = e._w).GG || null != t.W || null != t.E) o = 1, a = 4, n = Ce(t.GG, e._a[nn], oe(Pe(), 1, 4).year), r = Ce(t.W, 1), ((i = Ce(t.E, 1)) < 1 || i > 7) && (c = !0);
30617 o = e._locale._week.dow, a = e._locale._week.doy;
30618 var l = oe(Pe(), o, a);
30619 n = Ce(t.gg, e._a[nn], l.year), r = Ce(t.w, l.week), null != t.d ? ((i = t.d) < 0 || i > 6) && (c = !0) : null != t.e ? (i = t.e + o, (t.e < 0 || t.e > 6) && (c = !0)) : i = o
30621 r < 1 || r > ae(n, o, a) ? f(e)._overflowWeeks = !0 : null != c ? f(e)._overflowWeekday = !0 : (s = ie(n, r, i, o, a), e._a[nn] = s.year, e._dayOfYear = s.dayOfYear)
30625 if (t._f !== e.ISO_8601)
30626 if (t._f !== e.RFC_2822) {
30627 t._a = [], f(t).empty = !0;
30628 var n, r, i, o, a, s = "" + t._i,
30631 for (i = F(t._f, t._locale).match(Nt) || [], n = 0; n < i.length; n++) o = i[n], (r = (s.match(U(o, t)) || [])[0]) && ((a = s.substr(0, s.indexOf(r))).length > 0 && f(t).unusedInput.push(a), s = s.slice(s.indexOf(r) + r.length), l += r.length), Pt[o] ? (r ? f(t).empty = !1 : f(t).unusedTokens.push(o), Y(o, r, t)) : t._strict && !r && f(t).unusedTokens.push(o);
30632 f(t).charsLeftOver = c - l, s.length > 0 && f(t).unusedInput.push(s), t._a[an] <= 12 && !0 === f(t).bigHour && t._a[an] > 0 && (f(t).bigHour = void 0), f(t).parsedDateParts = t._a.slice(0), f(t).meridiem = t._meridiem, t._a[an] = Se(t._locale, t._a[an], t._meridiem), ke(t), $e(t)
30637 function Se(e, t, n) {
30639 return null == n ? t : null != e.meridiemHour ? e.meridiemHour(t, n) : null != e.isPM ? ((r = e.isPM(n)) && t < 12 && (t += 12), r || 12 !== t || (t = 0), t) : t
30644 if (0 === e._f.length) return f(e).invalidFormat = !0, void(e._d = new Date(NaN));
30645 for (i = 0; i < e._f.length; i++) o = 0, t = m({}, e), null != e._useUTC && (t._useUTC = e._useUTC), t._f = e._f[i], Me(t), h(t) && (o += f(t).charsLeftOver, o += 10 * f(t).unusedTokens.length, f(t).score = o, (null == r || o < r) && (r = o, n = t));
30652 e._a = s([t.year, t.month, t.day || t.date, t.hour, t.minute, t.second, t.millisecond], function(e) {
30653 return e && parseInt(e, 10)
30659 var t = new g($e(Ne(e)));
30660 return t._nextDay && (t.add(1, "d"), t._nextDay = void 0), t
30666 return e._locale = e._locale || ye(e._l), null === n || void 0 === r && "" === n ? p({
30668 }) : ("string" == typeof n && (e._i = n = e._locale.preparse(n)), v(n) ? new g($e(n)) : (a(n) ? e._d = n : t(r) ? Ae(e) : r ? Me(e) : Ie(e), h(e) || (e._d = null), e))
30673 i(c) ? r._d = new Date(e.now()) : a(c) ? r._d = new Date(c.valueOf()) : "string" == typeof c ? Ee(r) : t(c) ? (r._a = s(c.slice(0), function(e) {
30674 return parseInt(e, 10)
30675 }), ke(r)) : n(c) ? Oe(r) : o(c) ? r._d = new Date(c) : e.createFromInputFallback(r)
30678 function Re(e, i, o, a, s) {
30680 return !0 !== o && !1 !== o || (a = o, o = void 0), (n(e) && r(e) || t(e) && 0 === e.length) && (e = void 0), c._isAMomentObject = !0, c._useUTC = c._isUTC = s, c._l = o, c._i = e, c._f = i, c._strict = a, De(c)
30683 function Pe(e, t, n, r) {
30684 return Re(e, t, n, r, !1)
30687 function He(e, n) {
30689 if (1 === n.length && t(n[0]) && (n = n[0]), !n.length) return Pe();
30690 for (r = n[0], i = 1; i < n.length; ++i) n[i].isValid() && !n[i][e](r) || (r = n[i]);
30696 if (-1 === qn.indexOf(t) || null != e[t] && isNaN(e[t])) return !1;
30697 for (var n = !1, r = 0; r < qn.length; ++r)
30700 parseFloat(e[qn[r]]) !== y(e[qn[r]]) && (n = !0)
30708 r = t.quarter || 0,
30715 u = t.millisecond || 0;
30716 this._isValid = je(t), this._milliseconds = +u + 1e3 * l + 6e4 * c + 1e3 * s * 60 * 60, this._days = +a + 7 * o, this._months = +i + 3 * r + 12 * n, this._data = {}, this._locale = ye(), this._bubble()
30720 return e instanceof Le
30724 return e < 0 ? -1 * Math.round(-1 * e) : Math.round(e)
30727 function Ue(e, t) {
30728 P(e, 0, 0, function() {
30729 var e = this.utcOffset(),
30731 return e < 0 && (e = -e, n = "-"), n + R(~~(e / 60), 2) + t + R(~~e % 60, 2)
30735 function Ve(e, t) {
30736 var n = (t || "").match(e);
30737 if (null === n) return null;
30738 var r = ((n[n.length - 1] || []) + "").match(Un) || ["-", 0, 0],
30739 i = 60 * r[1] + y(r[2]);
30740 return 0 === i ? 0 : "+" === r[0] ? i : -i
30743 function Be(t, n) {
30745 return n._isUTC ? (r = n.clone(), i = (v(t) || a(t) ? t.valueOf() : Pe(t).valueOf()) - r.valueOf(), r._d.setTime(r._d.valueOf() + i), e.updateOffset(r, !1), r) : Pe(t).local()
30749 return 15 * -Math.round(e._d.getTimezoneOffset() / 15)
30753 return !!this.isValid() && (this._isUTC && 0 === this._offset)
30756 function Ye(e, t) {
30757 var n, r, i, a = e,
30759 return Fe(e) ? a = {
30760 ms: e._milliseconds,
30763 } : o(e) ? (a = {}, t ? a[t] = e : a.milliseconds = e) : (s = Vn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
30769 ms: y(qe(1e3 * s[ln])) * n
30770 }) : (s = Bn.exec(e)) ? (n = "-" === s[1] ? -1 : 1, a = {
30778 }) : null == a ? a = {} : "object" == typeof a && ("from" in a || "to" in a) && (i = Ze(Pe(a.from), Pe(a.to)), (a = {}).ms = i.milliseconds, a.M = i.months), r = new Le(a), Fe(e) && c(e, "_locale") && (r._locale = e._locale), r
30781 function Ge(e, t) {
30782 var n = e && parseFloat(e.replace(",", "."));
30783 return (isNaN(n) ? 0 : n) * t
30786 function Ke(e, t) {
30791 return n.months = t.month() - e.month() + 12 * (t.year() - e.year()), e.clone().add(n.months, "M").isAfter(t) && --n.months, n.milliseconds = +t - +e.clone().add(n.months, "M"), n
30794 function Ze(e, t) {
30796 return e.isValid() && t.isValid() ? (t = Be(t, e), e.isBefore(t) ? n = Ke(e, t) : ((n = Ke(t, e)).milliseconds = -n.milliseconds, n.months = -n.months), n) : {
30802 function Xe(e, t) {
30803 return function(n, r) {
30805 return null === r || isNaN(+r) || (E(t, "moment()." + t + "(period, number) is deprecated. Please use moment()." + t + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), o = n, n = r, r = o), n = "string" == typeof n ? +n : n, i = Ye(n, r), Qe(this, i, e), this
30809 function Qe(t, n, r, i) {
30810 var o = n._milliseconds,
30813 t.isValid() && (i = null == i || i, o && t._d.setTime(t._d.valueOf() + o * r), a && I(t, "Date", N(t, "Date") + a * r), s && Z(t, N(t, "Month") + s * r), i && e.updateOffset(t, a || s))
30816 function Je(e, t) {
30817 var n, r = 12 * (t.year() - e.year()) + (t.month() - e.month()),
30818 i = e.clone().add(r, "months");
30819 return n = t - i < 0 ? (t - i) / (i - e.clone().add(r - 1, "months")) : (t - i) / (e.clone().add(r + 1, "months") - i), -(r + n) || 0
30824 return void 0 === e ? this._locale._abbr : (null != (t = ye(e)) && (this._locale = t), this)
30828 return this._locale
30831 function nt(e, t) {
30832 P(0, [e, e.length], 0, t)
30835 function rt(e, t, n, r, i) {
30837 return null == e ? oe(this, r, i).year : (o = ae(e, r, i), t > o && (t = o), it.call(this, e, t, n, r, i))
30840 function it(e, t, n, r, i) {
30841 var o = ie(e, t, n, r, i),
30842 a = ne(o.year, 0, o.dayOfYear);
30843 return this.year(a.getUTCFullYear()), this.month(a.getUTCMonth()), this.date(a.getUTCDate()), this
30850 function at(e, t, n, r) {
30856 function st(e, t, n) {
30857 if (o(e) && (t = e, e = void 0), e = e || "", null != t) return at(e, t, n, "month");
30859 for (r = 0; r < 12; r++) i[r] = at(e, r, n, "month");
30863 function ct(e, t, n, r) {
30864 "boolean" == typeof e ? (o(t) && (n = t, t = void 0), t = t || "") : (n = t = e, e = !1, o(t) && (n = t, t = void 0), t = t || "");
30866 a = e ? i._week.dow : 0;
30867 if (null != n) return at(t, (n + a) % 7, r, "day");
30869 for (s = 0; s < 7; s++) c[s] = at(t, (s + a) % 7, r, "day");
30873 function lt(e, t, n, r) {
30875 return e._milliseconds += r * i._milliseconds, e._days += r * i._days, e._months += r * i._months, e._bubble()
30879 return e < 0 ? Math.floor(e) : Math.ceil(e)
30883 return 4800 * e / 146097
30887 return 146097 * e / 4800
30891 return function() {
30897 return function() {
30898 return this.isValid() ? this._data[e] : NaN
30902 function mt(e, t, n, r, i) {
30903 return i.relativeTime(t || 1, !!n, e, r)
30906 function gt(e, t, n) {
30907 var r = Ye(e).abs(),
30914 u = i <= br.ss && ["s", i] || i < br.s && ["ss", i] || o <= 1 && ["m"] || o < br.m && ["mm", o] || a <= 1 && ["h"] || a < br.h && ["hh", a] || s <= 1 && ["d"] || s < br.d && ["dd", s] || c <= 1 && ["M"] || c < br.M && ["MM", c] || l <= 1 && ["y"] || ["yy", l];
30915 return u[2] = t, u[3] = +e > 0, u[4] = n, mt.apply(null, u)
30919 if (!this.isValid()) return this.localeData().invalidDate();
30920 var e, t, n, r = yr(this._milliseconds) / 1e3,
30921 i = yr(this._days),
30922 o = yr(this._months);
30923 t = b((e = b(r / 60)) / 60), r %= 60, e %= 60;
30924 var a = n = b(o / 12),
30930 f = this.asSeconds();
30931 return f ? (f < 0 ? "-" : "") + "P" + (a ? a + "Y" : "") + (s ? s + "M" : "") + (c ? c + "D" : "") + (l || u || d ? "T" : "") + (l ? l + "H" : "") + (u ? u + "M" : "") + (d ? d + "S" : "") : "P0D"
30933 var bt, yt, $t = yt = Array.prototype.some ? Array.prototype.some : function(e) {
30934 for (var t = Object(this), n = t.length >>> 0, r = 0; r < n; r++)
30935 if (r in t && e.call(this, t[r], r, t)) return !0;
30938 _t = e.momentProperties = [],
30941 e.suppressDeprecationWarnings = !1, e.deprecationHandler = null;
30942 var Ct, xt, kt = Ct = Object.keys ? Object.keys : function(e) {
30944 for (t in e) c(e, t) && n.push(t);
30948 sameDay: "[Today at] LT",
30949 nextDay: "[Tomorrow at] LT",
30950 nextWeek: "dddd [at] LT",
30951 lastDay: "[Yesterday at] LT",
30952 lastWeek: "[Last] dddd [at] LT",
30959 LL: "MMMM D, YYYY",
30960 LLL: "MMMM D, YYYY h:mm A",
30961 LLLL: "dddd, MMMM D, YYYY h:mm A"
30967 s: "a few seconds",
30982 Nt = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
30983 It = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
30993 Bt = /\d\d\d\d\d\d?/,
30996 Yt = /[+-]?\d{1,6}/,
30999 Zt = /Z|[+-]\d\d:?\d\d/gi,
31000 Xt = /Z|[+-]\d\d(?::?\d\d)?/gi,
31001 Qt = /[+-]?\d+(\.\d{1,3})?/,
31002 Jt = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
31014 fn = xt = Array.prototype.indexOf ? Array.prototype.indexOf : function(e) {
31016 for (t = 0; t < this.length; ++t)
31017 if (this[t] === e) return t;
31020 P("M", ["MM", 2], "Mo", function() {
31021 return this.month() + 1
31022 }), P("MMM", 0, 0, function(e) {
31023 return this.localeData().monthsShort(this, e)
31024 }), P("MMMM", 0, 0, function(e) {
31025 return this.localeData().months(this, e)
31026 }), T("month", "M"), A("month", 8), q("M", Ut), q("MM", Ut, jt), q("MMM", function(e, t) {
31027 return t.monthsShortRegex(e)
31028 }), q("MMMM", function(e, t) {
31029 return t.monthsRegex(e)
31030 }), z(["M", "MM"], function(e, t) {
31032 }), z(["MMM", "MMMM"], function(e, t, n, r) {
31033 var i = n._locale.monthsParse(e, r, n._strict);
31034 null != i ? t[rn] = i : f(n).invalidMonth = e
31036 var hn = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
31037 pn = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
31038 mn = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
31041 P("Y", 0, 0, function() {
31042 var e = this.year();
31043 return e <= 9999 ? "" + e : "+" + e
31044 }), P(0, ["YY", 2], 0, function() {
31045 return this.year() % 100
31046 }), P(0, ["YYYY", 4], 0, "year"), P(0, ["YYYYY", 5], 0, "year"), P(0, ["YYYYYY", 6, !0], 0, "year"), T("year", "y"), A("year", 1), q("Y", Kt), q("YY", Ut, jt), q("YYYY", Wt, Ft), q("YYYYY", Yt, qt), q("YYYYYY", Yt, qt), z(["YYYYY", "YYYYYY"], nn), z("YYYY", function(t, n) {
31047 n[nn] = 2 === t.length ? e.parseTwoDigitYear(t) : y(t)
31048 }), z("YY", function(t, n) {
31049 n[nn] = e.parseTwoDigitYear(t)
31050 }), z("Y", function(e, t) {
31051 t[nn] = parseInt(e, 10)
31052 }), e.parseTwoDigitYear = function(e) {
31053 return y(e) + (y(e) > 68 ? 1900 : 2e3)
31055 var bn = D("FullYear", !0);
31056 P("w", ["ww", 2], "wo", "week"), P("W", ["WW", 2], "Wo", "isoWeek"), T("week", "w"), T("isoWeek", "W"), A("week", 5), A("isoWeek", 5), q("w", Ut), q("ww", Ut, jt), q("W", Ut), q("WW", Ut, jt), W(["w", "ww", "W", "WW"], function(e, t, n, r) {
31057 t[r.substr(0, 1)] = y(e)
31063 P("d", 0, "do", "day"), P("dd", 0, 0, function(e) {
31064 return this.localeData().weekdaysMin(this, e)
31065 }), P("ddd", 0, 0, function(e) {
31066 return this.localeData().weekdaysShort(this, e)
31067 }), P("dddd", 0, 0, function(e) {
31068 return this.localeData().weekdays(this, e)
31069 }), P("e", 0, 0, "weekday"), P("E", 0, 0, "isoWeekday"), T("day", "d"), T("weekday", "e"), T("isoWeekday", "E"), A("day", 11), A("weekday", 11), A("isoWeekday", 11), q("d", Ut), q("e", Ut), q("E", Ut), q("dd", function(e, t) {
31070 return t.weekdaysMinRegex(e)
31071 }), q("ddd", function(e, t) {
31072 return t.weekdaysShortRegex(e)
31073 }), q("dddd", function(e, t) {
31074 return t.weekdaysRegex(e)
31075 }), W(["dd", "ddd", "dddd"], function(e, t, n, r) {
31076 var i = n._locale.weekdaysParse(e, r, n._strict);
31077 null != i ? t.d = i : f(n).invalidWeekday = e
31078 }), W(["d", "e", "E"], function(e, t, n, r) {
31081 var $n = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
31082 _n = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
31083 wn = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
31087 P("H", ["HH", 2], 0, "hour"), P("h", ["hh", 2], 0, de), P("k", ["kk", 2], 0, function() {
31088 return this.hours() || 24
31089 }), P("hmm", 0, 0, function() {
31090 return "" + de.apply(this) + R(this.minutes(), 2)
31091 }), P("hmmss", 0, 0, function() {
31092 return "" + de.apply(this) + R(this.minutes(), 2) + R(this.seconds(), 2)
31093 }), P("Hmm", 0, 0, function() {
31094 return "" + this.hours() + R(this.minutes(), 2)
31095 }), P("Hmmss", 0, 0, function() {
31096 return "" + this.hours() + R(this.minutes(), 2) + R(this.seconds(), 2)
31097 }), fe("a", !0), fe("A", !1), T("hour", "h"), A("hour", 13), q("a", he), q("A", he), q("H", Ut), q("h", Ut), q("k", Ut), q("HH", Ut, jt), q("hh", Ut, jt), q("kk", Ut, jt), q("hmm", Vt), q("hmmss", Bt), q("Hmm", Vt), q("Hmmss", Bt), z(["H", "HH"], an), z(["k", "kk"], function(e, t, n) {
31099 t[an] = 24 === r ? 0 : r
31100 }), z(["a", "A"], function(e, t, n) {
31101 n._isPm = n._locale.isPM(e), n._meridiem = e
31102 }), z(["h", "hh"], function(e, t, n) {
31103 t[an] = y(e), f(n).bigHour = !0
31104 }), z("hmm", function(e, t, n) {
31105 var r = e.length - 2;
31106 t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r)), f(n).bigHour = !0
31107 }), z("hmmss", function(e, t, n) {
31108 var r = e.length - 4,
31110 t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r, 2)), t[cn] = y(e.substr(i)), f(n).bigHour = !0
31111 }), z("Hmm", function(e, t, n) {
31112 var r = e.length - 2;
31113 t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r))
31114 }), z("Hmmss", function(e, t, n) {
31115 var r = e.length - 4,
31117 t[an] = y(e.substr(0, r)), t[sn] = y(e.substr(r, 2)), t[cn] = y(e.substr(i))
31119 var kn, Tn = /[ap]\.?m?\.?/i,
31120 Mn = D("Hours", !0),
31123 longDateFormat: Mt,
31124 invalidDate: "Invalid date",
31126 dayOfMonthOrdinalParse: St,
31138 Dn = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
31139 Nn = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
31140 In = /Z|[+-]\d\d(?::?\d\d)?/,
31142 ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
31143 ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
31144 ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
31145 ["GGGG-[W]WW", /\d{4}-W\d\d/, !1],
31146 ["YYYY-DDD", /\d{4}-\d{3}/],
31147 ["YYYY-MM", /\d{4}-\d\d/, !1],
31148 ["YYYYYYMMDD", /[+-]\d{10}/],
31149 ["YYYYMMDD", /\d{8}/],
31150 ["GGGG[W]WWE", /\d{4}W\d{3}/],
31151 ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
31152 ["YYYYDDD", /\d{7}/]
31155 ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
31156 ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
31157 ["HH:mm:ss", /\d\d:\d\d:\d\d/],
31158 ["HH:mm", /\d\d:\d\d/],
31159 ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
31160 ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
31161 ["HHmmss", /\d\d\d\d\d\d/],
31162 ["HHmm", /\d\d\d\d/],
31165 Hn = /^\/?Date\((\-?\d+)/i,
31166 jn = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;
31167 e.createFromInputFallback = w("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(e) {
31168 e._d = new Date(e._i + (e._useUTC ? " UTC" : ""))
31169 }), e.ISO_8601 = function() {}, e.RFC_2822 = function() {};
31170 var Ln = w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
31171 var e = Pe.apply(null, arguments);
31172 return this.isValid() && e.isValid() ? e < this ? this : e : p()
31174 Fn = w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
31175 var e = Pe.apply(null, arguments);
31176 return this.isValid() && e.isValid() ? e > this ? this : e : p()
31178 qn = ["year", "quarter", "month", "week", "day", "hour", "minute", "second", "millisecond"];
31179 Ue("Z", ":"), Ue("ZZ", ""), q("Z", Xt), q("ZZ", Xt), z(["Z", "ZZ"], function(e, t, n) {
31180 n._useUTC = !0, n._tzm = Ve(Xt, e)
31182 var Un = /([\+\-]|\d\d)/gi;
31183 e.updateOffset = function() {};
31184 var Vn = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,
31185 Bn = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
31186 Ye.fn = Le.prototype, Ye.invalid = function() {
31189 var zn = Xe(1, "add"),
31190 Wn = Xe(-1, "subtract");
31191 e.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", e.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
31192 var Yn = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(e) {
31193 return void 0 === e ? this.localeData() : this.locale(e)
31195 P(0, ["gg", 2], 0, function() {
31196 return this.weekYear() % 100
31197 }), P(0, ["GG", 2], 0, function() {
31198 return this.isoWeekYear() % 100
31199 }), nt("gggg", "weekYear"), nt("ggggg", "weekYear"), nt("GGGG", "isoWeekYear"), nt("GGGGG", "isoWeekYear"), T("weekYear", "gg"), T("isoWeekYear", "GG"), A("weekYear", 1), A("isoWeekYear", 1), q("G", Kt), q("g", Kt), q("GG", Ut, jt), q("gg", Ut, jt), q("GGGG", Wt, Ft), q("gggg", Wt, Ft), q("GGGGG", Yt, qt), q("ggggg", Yt, qt), W(["gggg", "ggggg", "GGGG", "GGGGG"], function(e, t, n, r) {
31200 t[r.substr(0, 2)] = y(e)
31201 }), W(["gg", "GG"], function(t, n, r, i) {
31202 n[i] = e.parseTwoDigitYear(t)
31203 }), P("Q", 0, "Qo", "quarter"), T("quarter", "Q"), A("quarter", 7), q("Q", Ht), z("Q", function(e, t) {
31204 t[rn] = 3 * (y(e) - 1)
31205 }), P("D", ["DD", 2], "Do", "date"), T("date", "D"), A("date", 9), q("D", Ut), q("DD", Ut, jt), q("Do", function(e, t) {
31206 return e ? t._dayOfMonthOrdinalParse || t._ordinalParse : t._dayOfMonthOrdinalParseLenient
31207 }), z(["D", "DD"], on), z("Do", function(e, t) {
31208 t[on] = y(e.match(Ut)[0], 10)
31210 var Gn = D("Date", !0);
31211 P("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), T("dayOfYear", "DDD"), A("dayOfYear", 4), q("DDD", zt), q("DDDD", Lt), z(["DDD", "DDDD"], function(e, t, n) {
31212 n._dayOfYear = y(e)
31213 }), P("m", ["mm", 2], 0, "minute"), T("minute", "m"), A("minute", 14), q("m", Ut), q("mm", Ut, jt), z(["m", "mm"], sn);
31214 var Kn = D("Minutes", !1);
31215 P("s", ["ss", 2], 0, "second"), T("second", "s"), A("second", 15), q("s", Ut), q("ss", Ut, jt), z(["s", "ss"], cn);
31216 var Zn = D("Seconds", !1);
31217 P("S", 0, 0, function() {
31218 return ~~(this.millisecond() / 100)
31219 }), P(0, ["SS", 2], 0, function() {
31220 return ~~(this.millisecond() / 10)
31221 }), P(0, ["SSS", 3], 0, "millisecond"), P(0, ["SSSS", 4], 0, function() {
31222 return 10 * this.millisecond()
31223 }), P(0, ["SSSSS", 5], 0, function() {
31224 return 100 * this.millisecond()
31225 }), P(0, ["SSSSSS", 6], 0, function() {
31226 return 1e3 * this.millisecond()
31227 }), P(0, ["SSSSSSS", 7], 0, function() {
31228 return 1e4 * this.millisecond()
31229 }), P(0, ["SSSSSSSS", 8], 0, function() {
31230 return 1e5 * this.millisecond()
31231 }), P(0, ["SSSSSSSSS", 9], 0, function() {
31232 return 1e6 * this.millisecond()
31233 }), T("millisecond", "ms"), A("millisecond", 16), q("S", zt, Ht), q("SS", zt, jt), q("SSS", zt, Lt);
31235 for (Xn = "SSSS"; Xn.length <= 9; Xn += "S") q(Xn, Gt);
31236 for (Xn = "S"; Xn.length <= 9; Xn += "S") z(Xn, function(e, t) {
31237 t[ln] = y(1e3 * ("0." + e))
31239 var Qn = D("Milliseconds", !1);
31240 P("z", 0, 0, "zoneAbbr"), P("zz", 0, 0, "zoneName");
31241 var Jn = g.prototype;
31242 Jn.add = zn, Jn.calendar = function(t, n) {
31244 i = Be(r, this).startOf("day"),
31245 o = e.calendarFormat(this, i) || "sameElse",
31246 a = n && (C(n[o]) ? n[o].call(this, r) : n[o]);
31247 return this.format(a || this.localeData().calendar(o, this, Pe(r)))
31248 }, Jn.clone = function() {
31250 }, Jn.diff = function(e, t, n) {
31252 return this.isValid() && (r = Be(e, this)).isValid() ? (i = 6e4 * (r.utcOffset() - this.utcOffset()), "year" === (t = M(t)) || "month" === t || "quarter" === t ? (a = Je(this, r), "quarter" === t ? a /= 3 : "year" === t && (a /= 12)) : (o = this - r, a = "second" === t ? o / 1e3 : "minute" === t ? o / 6e4 : "hour" === t ? o / 36e5 : "day" === t ? (o - i) / 864e5 : "week" === t ? (o - i) / 6048e5 : o), n ? a : b(a)) : NaN
31253 }, Jn.endOf = function(e) {
31254 return void 0 === (e = M(e)) || "millisecond" === e ? this : ("date" === e && (e = "day"), this.startOf(e).add(1, "isoWeek" === e ? "week" : e).subtract(1, "ms"))
31255 }, Jn.format = function(t) {
31256 t || (t = this.isUtc() ? e.defaultFormatUtc : e.defaultFormat);
31257 var n = L(this, t);
31258 return this.localeData().postformat(n)
31259 }, Jn.from = function(e, t) {
31260 return this.isValid() && (v(e) && e.isValid() || Pe(e).isValid()) ? Ye({
31263 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
31264 }, Jn.fromNow = function(e) {
31265 return this.from(Pe(), e)
31266 }, Jn.to = function(e, t) {
31267 return this.isValid() && (v(e) && e.isValid() || Pe(e).isValid()) ? Ye({
31270 }).locale(this.locale()).humanize(!t) : this.localeData().invalidDate()
31271 }, Jn.toNow = function(e) {
31272 return this.to(Pe(), e)
31273 }, Jn.get = function(e) {
31274 return e = M(e), C(this[e]) ? this[e]() : this
31275 }, Jn.invalidAt = function() {
31276 return f(this).overflow
31277 }, Jn.isAfter = function(e, t) {
31278 var n = v(e) ? e : Pe(e);
31279 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() > n.valueOf() : n.valueOf() < this.clone().startOf(t).valueOf())
31280 }, Jn.isBefore = function(e, t) {
31281 var n = v(e) ? e : Pe(e);
31282 return !(!this.isValid() || !n.isValid()) && ("millisecond" === (t = M(i(t) ? "millisecond" : t)) ? this.valueOf() < n.valueOf() : this.clone().endOf(t).valueOf() < n.valueOf())
31283 }, Jn.isBetween = function(e, t, n, r) {
31284 return ("(" === (r = r || "()")[0] ? this.isAfter(e, n) : !this.isBefore(e, n)) && (")" === r[1] ? this.isBefore(t, n) : !this.isAfter(t, n))
31285 }, Jn.isSame = function(e, t) {
31286 var n, r = v(e) ? e : Pe(e);
31287 return !(!this.isValid() || !r.isValid()) && ("millisecond" === (t = M(t || "millisecond")) ? this.valueOf() === r.valueOf() : (n = r.valueOf(), this.clone().startOf(t).valueOf() <= n && n <= this.clone().endOf(t).valueOf()))
31288 }, Jn.isSameOrAfter = function(e, t) {
31289 return this.isSame(e, t) || this.isAfter(e, t)
31290 }, Jn.isSameOrBefore = function(e, t) {
31291 return this.isSame(e, t) || this.isBefore(e, t)
31292 }, Jn.isValid = function() {
31294 }, Jn.lang = Yn, Jn.locale = et, Jn.localeData = tt, Jn.max = Fn, Jn.min = Ln, Jn.parsingFlags = function() {
31295 return l({}, f(this))
31296 }, Jn.set = function(e, t) {
31297 if ("object" == typeof e)
31298 for (var n = O(e = S(e)), r = 0; r < n.length; r++) this[n[r].unit](e[n[r].unit]);
31299 else if (e = M(e), C(this[e])) return this[e](t);
31301 }, Jn.startOf = function(e) {
31302 switch (e = M(e)) {
31318 this.milliseconds(0)
31320 return "week" === e && this.weekday(0), "isoWeek" === e && this.isoWeekday(1), "quarter" === e && this.month(3 * Math.floor(this.month() / 3)), this
31321 }, Jn.subtract = Wn, Jn.toArray = function() {
31323 return [e.year(), e.month(), e.date(), e.hour(), e.minute(), e.second(), e.millisecond()]
31324 }, Jn.toObject = function() {
31331 minutes: e.minutes(),
31332 seconds: e.seconds(),
31333 milliseconds: e.milliseconds()
31335 }, Jn.toDate = function() {
31336 return new Date(this.valueOf())
31337 }, Jn.toISOString = function() {
31338 if (!this.isValid()) return null;
31339 var e = this.clone().utc();
31340 return e.year() < 0 || e.year() > 9999 ? L(e, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : C(Date.prototype.toISOString) ? this.toDate().toISOString() : L(e, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
31341 }, Jn.inspect = function() {
31342 if (!this.isValid()) return "moment.invalid(/* " + this._i + " */)";
31345 this.isLocal() || (e = 0 === this.utcOffset() ? "moment.utc" : "moment.parseZone", t = "Z");
31346 var n = "[" + e + '("]',
31347 r = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY",
31349 return this.format(n + r + "-MM-DD[T]HH:mm:ss.SSS" + i)
31350 }, Jn.toJSON = function() {
31351 return this.isValid() ? this.toISOString() : null
31352 }, Jn.toString = function() {
31353 return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
31354 }, Jn.unix = function() {
31355 return Math.floor(this.valueOf() / 1e3)
31356 }, Jn.valueOf = function() {
31357 return this._d.valueOf() - 6e4 * (this._offset || 0)
31358 }, Jn.creationData = function() {
31362 locale: this._locale,
31363 isUTC: this._isUTC,
31364 strict: this._strict
31366 }, Jn.year = bn, Jn.isLeapYear = function() {
31367 return ee(this.year())
31368 }, Jn.weekYear = function(e) {
31369 return rt.call(this, e, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
31370 }, Jn.isoWeekYear = function(e) {
31371 return rt.call(this, e, this.isoWeek(), this.isoWeekday(), 1, 4)
31372 }, Jn.quarter = Jn.quarters = function(e) {
31373 return null == e ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (e - 1) + this.month() % 3)
31374 }, Jn.month = X, Jn.daysInMonth = function() {
31375 return G(this.year(), this.month())
31376 }, Jn.week = Jn.weeks = function(e) {
31377 var t = this.localeData().week(this);
31378 return null == e ? t : this.add(7 * (e - t), "d")
31379 }, Jn.isoWeek = Jn.isoWeeks = function(e) {
31380 var t = oe(this, 1, 4).week;
31381 return null == e ? t : this.add(7 * (e - t), "d")
31382 }, Jn.weeksInYear = function() {
31383 var e = this.localeData()._week;
31384 return ae(this.year(), e.dow, e.doy)
31385 }, Jn.isoWeeksInYear = function() {
31386 return ae(this.year(), 1, 4)
31387 }, Jn.date = Gn, Jn.day = Jn.days = function(e) {
31388 if (!this.isValid()) return null != e ? this : NaN;
31389 var t = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
31390 return null != e ? (e = se(e, this.localeData()), this.add(e - t, "d")) : t
31391 }, Jn.weekday = function(e) {
31392 if (!this.isValid()) return null != e ? this : NaN;
31393 var t = (this.day() + 7 - this.localeData()._week.dow) % 7;
31394 return null == e ? t : this.add(e - t, "d")
31395 }, Jn.isoWeekday = function(e) {
31396 if (!this.isValid()) return null != e ? this : NaN;
31398 var t = ce(e, this.localeData());
31399 return this.day(this.day() % 7 ? t : t - 7)
31401 return this.day() || 7
31402 }, Jn.dayOfYear = function(e) {
31403 var t = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
31404 return null == e ? t : this.add(e - t, "d")
31405 }, Jn.hour = Jn.hours = Mn, Jn.minute = Jn.minutes = Kn, Jn.second = Jn.seconds = Zn, Jn.millisecond = Jn.milliseconds = Qn, Jn.utcOffset = function(t, n, r) {
31406 var i, o = this._offset || 0;
31407 if (!this.isValid()) return null != t ? this : NaN;
31409 if ("string" == typeof t) {
31410 if (null === (t = Ve(Xt, t))) return this
31411 } else Math.abs(t) < 16 && !r && (t *= 60);
31412 return !this._isUTC && n && (i = ze(this)), this._offset = t, this._isUTC = !0, null != i && this.add(i, "m"), o !== t && (!n || this._changeInProgress ? Qe(this, Ye(t - o, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, e.updateOffset(this, !0), this._changeInProgress = null)), this
31414 return this._isUTC ? o : ze(this)
31415 }, Jn.utc = function(e) {
31416 return this.utcOffset(0, e)
31417 }, Jn.local = function(e) {
31418 return this._isUTC && (this.utcOffset(0, e), this._isUTC = !1, e && this.subtract(ze(this), "m")), this
31419 }, Jn.parseZone = function() {
31420 if (null != this._tzm) this.utcOffset(this._tzm, !1, !0);
31421 else if ("string" == typeof this._i) {
31422 var e = Ve(Zt, this._i);
31423 null != e ? this.utcOffset(e) : this.utcOffset(0, !0)
31426 }, Jn.hasAlignedHourOffset = function(e) {
31427 return !!this.isValid() && (e = e ? Pe(e).utcOffset() : 0, (this.utcOffset() - e) % 60 == 0)
31428 }, Jn.isDST = function() {
31429 return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
31430 }, Jn.isLocal = function() {
31431 return !!this.isValid() && !this._isUTC
31432 }, Jn.isUtcOffset = function() {
31433 return !!this.isValid() && this._isUTC
31434 }, Jn.isUtc = We, Jn.isUTC = We, Jn.zoneAbbr = function() {
31435 return this._isUTC ? "UTC" : ""
31436 }, Jn.zoneName = function() {
31437 return this._isUTC ? "Coordinated Universal Time" : ""
31438 }, Jn.dates = w("dates accessor is deprecated. Use date instead.", Gn), Jn.months = w("months accessor is deprecated. Use month instead", X), Jn.years = w("years accessor is deprecated. Use year instead", bn), Jn.zone = w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", function(e, t) {
31439 return null != e ? ("string" != typeof e && (e = -e), this.utcOffset(e, t), this) : -this.utcOffset()
31440 }), Jn.isDSTShifted = w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", function() {
31441 if (!i(this._isDSTShifted)) return this._isDSTShifted;
31443 if (m(e, this), (e = Ne(e))._a) {
31444 var t = e._isUTC ? u(e._a) : Pe(e._a);
31445 this._isDSTShifted = this.isValid() && $(e._a, t.toArray()) > 0
31446 } else this._isDSTShifted = !1;
31447 return this._isDSTShifted
31449 var er = k.prototype;
31450 er.calendar = function(e, t, n) {
31451 var r = this._calendar[e] || this._calendar.sameElse;
31452 return C(r) ? r.call(t, n) : r
31453 }, er.longDateFormat = function(e) {
31454 var t = this._longDateFormat[e],
31455 n = this._longDateFormat[e.toUpperCase()];
31456 return t || !n ? t : (this._longDateFormat[e] = n.replace(/MMMM|MM|DD|dddd/g, function(e) {
31458 }), this._longDateFormat[e])
31459 }, er.invalidDate = function() {
31460 return this._invalidDate
31461 }, er.ordinal = function(e) {
31462 return this._ordinal.replace("%d", e)
31463 }, er.preparse = ot, er.postformat = ot, er.relativeTime = function(e, t, n, r) {
31464 var i = this._relativeTime[n];
31465 return C(i) ? i(e, t, n, r) : i.replace(/%d/i, e)
31466 }, er.pastFuture = function(e, t) {
31467 var n = this._relativeTime[e > 0 ? "future" : "past"];
31468 return C(n) ? n(t) : n.replace(/%s/i, t)
31469 }, er.set = function(e) {
31471 for (n in e) C(t = e[n]) ? this[n] = t : this["_" + n] = t;
31472 this._config = e, this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source)
31473 }, er.months = function(e, n) {
31474 return e ? t(this._months) ? this._months[e.month()] : this._months[(this._months.isFormat || hn).test(n) ? "format" : "standalone"][e.month()] : t(this._months) ? this._months : this._months.standalone
31475 }, er.monthsShort = function(e, n) {
31476 return e ? t(this._monthsShort) ? this._monthsShort[e.month()] : this._monthsShort[hn.test(n) ? "format" : "standalone"][e.month()] : t(this._monthsShort) ? this._monthsShort : this._monthsShort.standalone
31477 }, er.monthsParse = function(e, t, n) {
31479 if (this._monthsParseExact) return K.call(this, e, t, n);
31480 for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), r = 0; r < 12; r++) {
31481 if (i = u([2e3, r]), n && !this._longMonthsParse[r] && (this._longMonthsParse[r] = new RegExp("^" + this.months(i, "").replace(".", "") + "$", "i"), this._shortMonthsParse[r] = new RegExp("^" + this.monthsShort(i, "").replace(".", "") + "$", "i")), n || this._monthsParse[r] || (o = "^" + this.months(i, "") + "|^" + this.monthsShort(i, ""), this._monthsParse[r] = new RegExp(o.replace(".", ""), "i")), n && "MMMM" === t && this._longMonthsParse[r].test(e)) return r;
31482 if (n && "MMM" === t && this._shortMonthsParse[r].test(e)) return r;
31483 if (!n && this._monthsParse[r].test(e)) return r
31485 }, er.monthsRegex = function(e) {
31486 return this._monthsParseExact ? (c(this, "_monthsRegex") || Q.call(this), e ? this._monthsStrictRegex : this._monthsRegex) : (c(this, "_monthsRegex") || (this._monthsRegex = vn), this._monthsStrictRegex && e ? this._monthsStrictRegex : this._monthsRegex)
31487 }, er.monthsShortRegex = function(e) {
31488 return this._monthsParseExact ? (c(this, "_monthsRegex") || Q.call(this), e ? this._monthsShortStrictRegex : this._monthsShortRegex) : (c(this, "_monthsShortRegex") || (this._monthsShortRegex = gn), this._monthsShortStrictRegex && e ? this._monthsShortStrictRegex : this._monthsShortRegex)
31489 }, er.week = function(e) {
31490 return oe(e, this._week.dow, this._week.doy).week
31491 }, er.firstDayOfYear = function() {
31492 return this._week.doy
31493 }, er.firstDayOfWeek = function() {
31494 return this._week.dow
31495 }, er.weekdays = function(e, n) {
31496 return e ? t(this._weekdays) ? this._weekdays[e.day()] : this._weekdays[this._weekdays.isFormat.test(n) ? "format" : "standalone"][e.day()] : t(this._weekdays) ? this._weekdays : this._weekdays.standalone
31497 }, er.weekdaysMin = function(e) {
31498 return e ? this._weekdaysMin[e.day()] : this._weekdaysMin
31499 }, er.weekdaysShort = function(e) {
31500 return e ? this._weekdaysShort[e.day()] : this._weekdaysShort
31501 }, er.weekdaysParse = function(e, t, n) {
31503 if (this._weekdaysParseExact) return le.call(this, e, t, n);
31504 for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), r = 0; r < 7; r++) {
31505 if (i = u([2e3, 1]).day(r), n && !this._fullWeekdaysParse[r] && (this._fullWeekdaysParse[r] = new RegExp("^" + this.weekdays(i, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[r] = new RegExp("^" + this.weekdaysShort(i, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[r] = new RegExp("^" + this.weekdaysMin(i, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[r] || (o = "^" + this.weekdays(i, "") + "|^" + this.weekdaysShort(i, "") + "|^" + this.weekdaysMin(i, ""), this._weekdaysParse[r] = new RegExp(o.replace(".", ""), "i")), n && "dddd" === t && this._fullWeekdaysParse[r].test(e)) return r;
31506 if (n && "ddd" === t && this._shortWeekdaysParse[r].test(e)) return r;
31507 if (n && "dd" === t && this._minWeekdaysParse[r].test(e)) return r;
31508 if (!n && this._weekdaysParse[r].test(e)) return r
31510 }, er.weekdaysRegex = function(e) {
31511 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysStrictRegex : this._weekdaysRegex) : (c(this, "_weekdaysRegex") || (this._weekdaysRegex = En), this._weekdaysStrictRegex && e ? this._weekdaysStrictRegex : this._weekdaysRegex)
31512 }, er.weekdaysShortRegex = function(e) {
31513 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (c(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = Cn), this._weekdaysShortStrictRegex && e ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
31514 }, er.weekdaysMinRegex = function(e) {
31515 return this._weekdaysParseExact ? (c(this, "_weekdaysRegex") || ue.call(this), e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (c(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = xn), this._weekdaysMinStrictRegex && e ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
31516 }, er.isPM = function(e) {
31517 return "p" === (e + "").toLowerCase().charAt(0)
31518 }, er.meridiem = function(e, t, n) {
31519 return e > 11 ? n ? "pm" : "PM" : n ? "am" : "AM"
31521 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
31522 ordinal: function(e) {
31524 return e + (1 === y(e % 100 / 10) ? "th" : 1 === t ? "st" : 2 === t ? "nd" : 3 === t ? "rd" : "th")
31526 }), e.lang = w("moment.lang is deprecated. Use moment.locale instead.", ve), e.langData = w("moment.langData is deprecated. Use moment.localeData instead.", ye);
31536 ur = pt("milliseconds"),
31537 dr = pt("seconds"),
31538 fr = pt("minutes"),
31554 return $r.isValid = function() {
31555 return this._isValid
31556 }, $r.abs = function() {
31557 var e = this._data;
31558 return this._milliseconds = tr(this._milliseconds), this._days = tr(this._days), this._months = tr(this._months), e.milliseconds = tr(e.milliseconds), e.seconds = tr(e.seconds), e.minutes = tr(e.minutes), e.hours = tr(e.hours), e.months = tr(e.months), e.years = tr(e.years), this
31559 }, $r.add = function(e, t) {
31560 return lt(this, e, t, 1)
31561 }, $r.subtract = function(e, t) {
31562 return lt(this, e, t, -1)
31563 }, $r.as = function(e) {
31564 if (!this.isValid()) return NaN;
31565 var t, n, r = this._milliseconds;
31566 if ("month" === (e = M(e)) || "year" === e) return t = this._days + r / 864e5, n = this._months + dt(t), "month" === e ? n : n / 12;
31567 switch (t = this._days + Math.round(ft(this._months)), e) {
31569 return t / 7 + r / 6048e5;
31571 return t + r / 864e5;
31573 return 24 * t + r / 36e5;
31575 return 1440 * t + r / 6e4;
31577 return 86400 * t + r / 1e3;
31578 case "millisecond":
31579 return Math.floor(864e5 * t) + r;
31581 throw new Error("Unknown unit " + e)
31583 }, $r.asMilliseconds = nr, $r.asSeconds = rr, $r.asMinutes = ir, $r.asHours = or, $r.asDays = ar, $r.asWeeks = sr, $r.asMonths = cr, $r.asYears = lr, $r.valueOf = function() {
31584 return this.isValid() ? this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * y(this._months / 12) : NaN
31585 }, $r._bubble = function() {
31586 var e, t, n, r, i, o = this._milliseconds,
31590 return o >= 0 && a >= 0 && s >= 0 || o <= 0 && a <= 0 && s <= 0 || (o += 864e5 * ut(ft(s) + a), a = 0, s = 0), c.milliseconds = o % 1e3, e = b(o / 1e3), c.seconds = e % 60, t = b(e / 60), c.minutes = t % 60, n = b(t / 60), c.hours = n % 24, a += b(n / 24), i = b(dt(a)), s += i, a -= ut(ft(i)), r = b(s / 12), s %= 12, c.days = a, c.months = s, c.years = r, this
31591 }, $r.get = function(e) {
31592 return e = M(e), this.isValid() ? this[e + "s"]() : NaN
31593 }, $r.milliseconds = ur, $r.seconds = dr, $r.minutes = fr, $r.hours = hr, $r.days = pr, $r.weeks = function() {
31594 return b(this.days() / 7)
31595 }, $r.months = mr, $r.years = gr, $r.humanize = function(e) {
31596 if (!this.isValid()) return this.localeData().invalidDate();
31597 var t = this.localeData(),
31598 n = gt(this, !e, t);
31599 return e && (n = t.pastFuture(+this, n)), t.postformat(n)
31600 }, $r.toISOString = vt, $r.toString = vt, $r.toJSON = vt, $r.locale = et, $r.localeData = tt, $r.toIsoString = w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", vt), $r.lang = Yn, P("X", 0, 0, "unix"), P("x", 0, 0, "valueOf"), q("x", Kt), q("X", Qt), z("X", function(e, t, n) {
31601 n._d = new Date(1e3 * parseFloat(e, 10))
31602 }), z("x", function(e, t, n) {
31603 n._d = new Date(y(e))
31604 }), e.version = "2.18.1",
31607 }(Pe), e.fn = Jn, e.min = function() {
31608 return He("isBefore", [].slice.call(arguments, 0))
31609 }, e.max = function() {
31610 return He("isAfter", [].slice.call(arguments, 0))
31611 }, e.now = function() {
31612 return Date.now ? Date.now() : +new Date
31613 }, e.utc = u, e.unix = function(e) {
31615 }, e.months = function(e, t) {
31616 return st(e, t, "months")
31617 }, e.isDate = a, e.locale = ve, e.invalid = p, e.duration = Ye, e.isMoment = v, e.weekdays = function(e, t, n) {
31618 return ct(e, t, n, "weekdays")
31619 }, e.parseZone = function() {
31620 return Pe.apply(null, arguments).parseZone()
31621 }, e.localeData = ye, e.isDuration = Fe, e.monthsShort = function(e, t) {
31622 return st(e, t, "monthsShort")
31623 }, e.weekdaysMin = function(e, t, n) {
31624 return ct(e, t, n, "weekdaysMin")
31625 }, e.defineLocale = be, e.updateLocale = function(e, t) {
31628 null != An[e] && (r = An[e]._config), (n = new k(t = x(r, t))).parentLocale = An[e], An[e] = n, ve(e)
31629 } else null != An[e] && (null != An[e].parentLocale ? An[e] = An[e].parentLocale : null != An[e] && delete An[e]);
31631 }, e.locales = function() {
31633 }, e.weekdaysShort = function(e, t, n) {
31634 return ct(e, t, n, "weekdaysShort")
31635 }, e.normalizeUnits = M, e.relativeTimeRounding = function(e) {
31636 return void 0 === e ? vr : "function" == typeof e && (vr = e, !0)
31637 }, e.relativeTimeThreshold = function(e, t) {
31638 return void 0 !== br[e] && (void 0 === t ? br[e] : (br[e] = t, "s" === e && (br.ss = t - 1), !0))
31639 }, e.calendarFormat = function(e, t) {
31640 var n = e.diff(t, "days", !0);
31641 return n < -6 ? "sameElse" : n < -1 ? "lastWeek" : n < 0 ? "lastDay" : n < 1 ? "sameDay" : n < 2 ? "nextDay" : n < 7 ? "nextWeek" : "sameElse"
31642 }, e.prototype = Jn, e
31646 "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) {
31647 if (!e.document) throw new Error("jQuery requires a window with a document");
31650 }("undefined" != typeof window ? window : this, function(e, t) {
31654 var n = (t = t || te).createElement("script");
31655 n.text = e, t.head.appendChild(n).parentNode.removeChild(n)
31659 var t = !!e && "length" in e && e.length,
31661 return "function" !== n && !he.isWindow(e) && ("array" === n || 0 === t || "number" == typeof t && t > 0 && t - 1 in e)
31665 return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase()
31668 function o(e, t, n) {
31669 return he.isFunction(t) ? he.grep(e, function(e, r) {
31670 return !!t.call(e, r, e) !== n
31671 }) : t.nodeType ? he.grep(e, function(e) {
31672 return e === t !== n
31673 }) : "string" != typeof t ? he.grep(e, function(e) {
31674 return ae.call(t, e) > -1 !== n
31675 }) : Ee.test(t) ? he.filter(t, e, n) : (t = he.filter(t, e), he.grep(e, function(e) {
31676 return ae.call(t, e) > -1 !== n && 1 === e.nodeType
31682 (e = e[t]) && 1 !== e.nodeType;);
31688 return he.each(e.match(Me) || [], function(e, n) {
31701 function u(e, t, n, r) {
31704 e && he.isFunction(i = e.promise) ? i.call(e).done(t).fail(n) : e && he.isFunction(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r))
31706 n.apply(void 0, [e])
31711 te.removeEventListener("DOMContentLoaded", d), e.removeEventListener("load", d), he.ready()
31715 this.expando = he.expando + f.uid++
31719 return "true" === e || "false" !== e && ("null" === e ? null : e === +e + "" ? +e : Re.test(e) ? JSON.parse(e) : e)
31722 function p(e, t, n) {
31724 if (void 0 === n && 1 === e.nodeType)
31725 if (r = "data-" + t.replace(Pe, "-$&").toLowerCase(), "string" == typeof(n = e.getAttribute(r))) {
31734 function m(e, t, n, r) {
31737 s = r ? function() {
31740 return he.css(e, t, "")
31743 l = n && n[3] || (he.cssNumber[t] ? "" : "px"),
31744 u = (he.cssNumber[t] || "px" !== l && +c) && je.exec(he.css(e, t));
31745 if (u && u[3] !== l) {
31746 l = l || u[3], n = n || [], u = +c || 1;
31748 u /= o = o || ".5", he.style(e, t, u + l)
31749 } while (o !== (o = s() / c) && 1 !== o && --a)
31751 return n && (u = +u || +c || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = u, r.end = i)), i
31755 var t, n = e.ownerDocument,
31758 return i || (t = n.body.appendChild(n.createElement(r)), i = he.css(t, "display"), t.parentNode.removeChild(t), "none" === i && (i = "block"), Ue[r] = i, i)
31762 for (var n, r, i = [], o = 0, a = e.length; o < a; o++)(r = e[o]).style && (n = r.style.display, t ? ("none" === n && (i[o] = Ne.get(r, "display") || null, i[o] || (r.style.display = "")), "" === r.style.display && Fe(r) && (i[o] = g(r))) : "none" !== n && (i[o] = "none", Ne.set(r, "display", n)));
31763 for (o = 0; o < a; o++) null != i[o] && (e[o].style.display = i[o]);
31769 return n = void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t || "*") : void 0 !== e.querySelectorAll ? e.querySelectorAll(t || "*") : [], void 0 === t || t && i(e, t) ? he.merge([e], n) : n
31773 for (var n = 0, r = e.length; n < r; n++) Ne.set(e[n], "globalEval", !t || Ne.get(t[n], "globalEval"))
31776 function $(e, t, n, r, i) {
31777 for (var o, a, s, c, l, u, d = t.createDocumentFragment(), f = [], h = 0, p = e.length; h < p; h++)
31778 if ((o = e[h]) || 0 === o)
31779 if ("object" === he.type(o)) he.merge(f, o.nodeType ? [o] : o);
31780 else if (Ye.test(o)) {
31781 for (a = a || d.appendChild(t.createElement("div")), s = (Be.exec(o) || ["", ""])[1].toLowerCase(), c = We[s] || We._default, a.innerHTML = c[1] + he.htmlPrefilter(o) + c[2], u = c[0]; u--;) a = a.lastChild;
31782 he.merge(f, a.childNodes), (a = d.firstChild).textContent = ""
31783 } else f.push(t.createTextNode(o));
31784 for (d.textContent = "", h = 0; o = f[h++];)
31785 if (r && he.inArray(o, r) > -1) i && i.push(o);
31786 else if (l = he.contains(o.ownerDocument, o), a = b(d.appendChild(o), "script"), l && y(a), n)
31787 for (u = 0; o = a[u++];) ze.test(o.type || "") && n.push(o);
31801 return te.activeElement
31805 function C(e, t, n, r, i, o) {
31807 if ("object" == typeof t) {
31808 "string" != typeof n && (r = r || n, n = void 0);
31809 for (s in t) C(e, s, n, r, t[s], o);
31812 if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = w;
31813 else if (!i) return e;
31814 return 1 === o && (a = i, (i = function(e) {
31815 return he().off(e), a.apply(this, arguments)
31816 }).guid = a.guid || (a.guid = he.guid++)), e.each(function() {
31817 he.event.add(this, t, i, r, n)
31822 return i(e, "table") && i(11 !== t.nodeType ? t : t.firstChild, "tr") ? he(">tbody", e)[0] || e : e
31826 return e.type = (null !== e.getAttribute("type")) + "/" + e.type, e
31830 var t = tt.exec(e.type);
31831 return t ? e.type = t[1] : e.removeAttribute("type"), e
31835 var n, r, i, o, a, s, c, l;
31836 if (1 === t.nodeType) {
31837 if (Ne.hasData(e) && (o = Ne.access(e), a = Ne.set(t, o), l = o.events)) {
31838 delete a.handle, a.events = {};
31840 for (n = 0, r = l[i].length; n < r; n++) he.event.add(t, i, l[i][n])
31842 Ie.hasData(e) && (s = Ie.access(e), c = he.extend({}, s), Ie.set(t, c))
31847 var n = t.nodeName.toLowerCase();
31848 "input" === n && Ve.test(e.type) ? t.checked = e.checked : "input" !== n && "textarea" !== n || (t.defaultValue = e.defaultValue)
31851 function A(e, t, r, i) {
31852 t = ie.apply([], t);
31853 var o, a, s, c, l, u, d = 0,
31857 m = he.isFunction(p);
31858 if (m || f > 1 && "string" == typeof p && !fe.checkClone && et.test(p)) return e.each(function(n) {
31860 m && (t[0] = p.call(this, n, o.html())), A(o, t, r, i)
31862 if (f && (o = $(t, e[0].ownerDocument, !1, e, i), a = o.firstChild, 1 === o.childNodes.length && (o = a), a || i)) {
31863 for (c = (s = he.map(b(o, "script"), k)).length; d < f; d++) l = o, d !== h && (l = he.clone(l, !0, !0), c && he.merge(s, b(l, "script"))), r.call(e[d], l, d);
31865 for (u = s[s.length - 1].ownerDocument, he.map(s, T), d = 0; d < c; d++) l = s[d], ze.test(l.type || "") && !Ne.access(l, "globalEval") && he.contains(u, l) && (l.src ? he._evalUrl && he._evalUrl(l.src) : n(l.textContent.replace(nt, ""), u))
31870 function O(e, t, n) {
31871 for (var r, i = t ? he.filter(t, e) : e, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || he.cleanData(b(r)), r.parentNode && (n && he.contains(r.ownerDocument, r) && y(b(r, "script")), r.parentNode.removeChild(r));
31875 function D(e, t, n) {
31876 var r, i, o, a, s = e.style;
31877 return (n = n || ot(e)) && ("" !== (a = n.getPropertyValue(t) || n[t]) || he.contains(e.ownerDocument, e) || (a = he.style(e, t)), !fe.pixelMarginRight() && it.test(a) && rt.test(t) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + "" : a
31883 if (!e()) return (this.get = t).apply(this, arguments);
31890 if (e in dt) return e;
31891 for (var t = e[0].toUpperCase() + e.slice(1), n = ut.length; n--;)
31892 if ((e = ut[n] + t) in dt) return e
31896 var t = he.cssProps[e];
31897 return t || (t = he.cssProps[e] = I(e) || e), t
31900 function P(e, t, n) {
31901 var r = je.exec(t);
31902 return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t
31905 function H(e, t, n, r, i) {
31907 for (o = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0; o < 4; o += 2) "margin" === n && (a += he.css(e, n + Le[o], !0, i)), r ? ("content" === n && (a -= he.css(e, "padding" + Le[o], !0, i)), "margin" !== n && (a -= he.css(e, "border" + Le[o] + "Width", !0, i))) : (a += he.css(e, "padding" + Le[o], !0, i), "padding" !== n && (a += he.css(e, "border" + Le[o] + "Width", !0, i)));
31911 function j(e, t, n) {
31914 a = "border-box" === he.css(e, "boxSizing", !1, i);
31915 return it.test(o) ? o : (r = a && (fe.boxSizingReliable() || o === e.style[t]), "auto" === o && (o = e["offset" + t[0].toUpperCase() + t.slice(1)]), (o = parseFloat(o) || 0) + H(e, t, n || (a ? "border" : "content"), r, i) + "px")
31918 function L(e, t, n, r, i) {
31919 return new L.prototype.init(e, t, n, r, i)
31923 ht && (!1 === te.hidden && e.requestAnimationFrame ? e.requestAnimationFrame(F) : e.setTimeout(F, he.fx.interval), he.fx.tick())
31927 return e.setTimeout(function() {
31937 for (t = t ? 1 : 0; r < 4; r += 2 - t) i["margin" + (n = Le[r])] = i["padding" + n] = e;
31938 return t && (i.opacity = i.width = e), i
31941 function V(e, t, n) {
31942 for (var r, i = (z.tweeners[t] || []).concat(z.tweeners["*"]), o = 0, a = i.length; o < a; o++)
31943 if (r = i[o].call(n, t, e)) return r
31949 if (r = he.camelCase(n), i = t[r], o = e[n], Array.isArray(o) && (i = o[1], o = e[n] = o[0]), n !== r && (e[r] = o, delete e[n]), (a = he.cssHooks[r]) && "expand" in a) {
31950 o = a.expand(o), delete e[r];
31951 for (n in o) n in e || (e[n] = o[n], t[n] = i)
31955 function z(e, t, n) {
31957 a = z.prefilters.length,
31958 s = he.Deferred().always(function() {
31963 for (var t = ft || q(), n = Math.max(0, l.startTime + l.duration - t), r = 1 - (n / l.duration || 0), o = 0, a = l.tweens.length; o < a; o++) l.tweens[o].run(r);
31964 return s.notifyWith(e, [l, r, n]), r < 1 && a ? n : (a || s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l]), !1)
31968 props: he.extend({}, t),
31969 opts: he.extend(!0, {
31971 easing: he.easing._default
31973 originalProperties: t,
31974 originalOptions: n,
31975 startTime: ft || q(),
31976 duration: n.duration,
31978 createTween: function(t, n) {
31979 var r = he.Tween(e, l.opts, t, n, l.opts.specialEasing[t] || l.opts.easing);
31980 return l.tweens.push(r), r
31982 stop: function(t) {
31984 r = t ? l.tweens.length : 0;
31985 if (i) return this;
31986 for (i = !0; n < r; n++) l.tweens[n].run(1);
31987 return t ? (s.notifyWith(e, [l, 1, 0]), s.resolveWith(e, [l, t])) : s.rejectWith(e, [l, t]), this
31991 for (B(u, l.opts.specialEasing); o < a; o++)
31992 if (r = z.prefilters[o].call(l, e, u, l.opts)) return he.isFunction(r.stop) && (he._queueHooks(l.elem, l.opts.queue).stop = he.proxy(r.stop, r)), r;
31993 return he.map(u, V, l), he.isFunction(l.opts.start) && l.opts.start.call(e, l), l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), he.fx.timer(he.extend(c, {
31996 queue: l.opts.queue
32001 return (e.match(Me) || []).join(" ")
32005 return e.getAttribute && e.getAttribute("class") || ""
32008 function G(e, t, n, r) {
32010 if (Array.isArray(t)) he.each(t, function(t, i) {
32011 n || xt.test(e) ? r(e, i) : G(e + "[" + ("object" == typeof i && null != i ? t : "") + "]", i, n, r)
32013 else if (n || "object" !== he.type(t)) r(e, t);
32015 for (i in t) G(e + "[" + i + "]", t[i], n, r)
32019 return function(t, n) {
32020 "string" != typeof t && (n = t, t = "*");
32022 o = t.toLowerCase().match(Me) || [];
32023 if (he.isFunction(n))
32024 for (; r = o[i++];) "+" === r[0] ? (r = r.slice(1) || "*", (e[r] = e[r] || []).unshift(n)) : (e[r] = e[r] || []).push(n)
32028 function Z(e, t, n, r) {
32031 return o[s] = !0, he.each(e[s] || [], function(e, s) {
32032 var l = s(t, n, r);
32033 return "string" != typeof l || a || o[l] ? a ? !(c = l) : void 0 : (t.dataTypes.unshift(l), i(l), !1)
32038 return i(t.dataTypes[0]) || !o["*"] && i("*")
32042 var n, r, i = he.ajaxSettings.flatOptions || {};
32043 for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]);
32044 return r && he.extend(!0, e, r), e
32047 function Q(e, t, n) {
32048 for (var r, i, o, a, s = e.contents, c = e.dataTypes;
32049 "*" === c[0];) c.shift(), void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type"));
32052 if (s[i] && s[i].test(r)) {
32056 if (c[0] in n) o = c[0];
32059 if (!c[0] || e.converters[i + " " + c[0]]) {
32067 if (o) return o !== c[0] && c.unshift(o), n[o]
32070 function J(e, t, n, r) {
32071 var i, o, a, s, c, l = {},
32072 u = e.dataTypes.slice();
32074 for (a in e.converters) l[a.toLowerCase()] = e.converters[a];
32075 for (o = u.shift(); o;)
32076 if (e.responseFields[o] && (n[e.responseFields[o]] = t), !c && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), c = o, o = u.shift())
32077 if ("*" === o) o = c;
32078 else if ("*" !== c && c !== o) {
32079 if (!(a = l[c + " " + o] || l["* " + o]))
32081 if ((s = i.split(" "))[1] === o && (a = l[c + " " + s[0]] || l["* " + s[0]])) {
32082 !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], u.unshift(s[1]));
32086 if (a && e.throws) t = a(t);
32091 state: "parsererror",
32092 error: a ? e : "No conversion from " + c + " to " + o
32103 ne = Object.getPrototypeOf,
32110 le = se.hasOwnProperty,
32112 de = ue.call(Object),
32114 he = function(e, t) {
32115 return new he.fn.init(e, t)
32117 pe = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
32120 ve = function(e, t) {
32121 return t.toUpperCase()
32123 he.fn = he.prototype = {
32127 toArray: function() {
32128 return re.call(this)
32131 return null == e ? re.call(this) : e < 0 ? this[e + this.length] : this[e]
32133 pushStack: function(e) {
32134 var t = he.merge(this.constructor(), e);
32135 return t.prevObject = this, t
32137 each: function(e) {
32138 return he.each(this, e)
32141 return this.pushStack(he.map(this, function(t, n) {
32142 return e.call(t, n, t)
32145 slice: function() {
32146 return this.pushStack(re.apply(this, arguments))
32148 first: function() {
32155 var t = this.length,
32156 n = +e + (e < 0 ? t : 0);
32157 return this.pushStack(n >= 0 && n < t ? [this[n]] : [])
32160 return this.prevObject || this.constructor()
32165 }, he.extend = he.fn.extend = function() {
32166 var e, t, n, r, i, o, a = arguments[0] || {},
32168 c = arguments.length,
32170 for ("boolean" == typeof a && (l = a, a = arguments[s] || {}, s++), "object" == typeof a || he.isFunction(a) || (a = {}), s === c && (a = this, s--); s < c; s++)
32171 if (null != (e = arguments[s]))
32172 for (t in e) n = a[t], a !== (r = e[t]) && (l && r && (he.isPlainObject(r) || (i = Array.isArray(r))) ? (i ? (i = !1, o = n && Array.isArray(n) ? n : []) : o = n && he.isPlainObject(n) ? n : {}, a[t] = he.extend(l, o, r)) : void 0 !== r && (a[t] = r));
32175 expando: "jQuery" + ("3.2.1" + Math.random()).replace(/\D/g, ""),
32177 error: function(e) {
32180 noop: function() {},
32181 isFunction: function(e) {
32182 return "function" === he.type(e)
32184 isWindow: function(e) {
32185 return null != e && e === e.window
32187 isNumeric: function(e) {
32188 var t = he.type(e);
32189 return ("number" === t || "string" === t) && !isNaN(e - parseFloat(e))
32191 isPlainObject: function(e) {
32193 return !(!e || "[object Object]" !== ce.call(e)) && (!(t = ne(e)) || "function" == typeof(n = le.call(t, "constructor") && t.constructor) && ue.call(n) === de)
32195 isEmptyObject: function(e) {
32197 for (t in e) return !1;
32200 type: function(e) {
32201 return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? se[ce.call(e)] || "object" : typeof e
32203 globalEval: function(e) {
32206 camelCase: function(e) {
32207 return e.replace(me, "ms-").replace(ge, ve)
32209 each: function(e, t) {
32212 for (n = e.length; i < n && !1 !== t.call(e[i], i, e[i]); i++);
32215 if (!1 === t.call(e[i], i, e[i])) break; return e
32217 trim: function(e) {
32218 return null == e ? "" : (e + "").replace(pe, "")
32220 makeArray: function(e, t) {
32222 return null != e && (r(Object(e)) ? he.merge(n, "string" == typeof e ? [e] : e) : oe.call(n, e)), n
32224 inArray: function(e, t, n) {
32225 return null == t ? -1 : ae.call(t, e, n)
32227 merge: function(e, t) {
32228 for (var n = +t.length, r = 0, i = e.length; r < n; r++) e[i++] = t[r];
32229 return e.length = i, e
32231 grep: function(e, t, n) {
32232 for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) !t(e[i], i) !== a && r.push(e[i]);
32235 map: function(e, t, n) {
32239 for (i = e.length; a < i; a++) null != (o = t(e[a], a, n)) && s.push(o);
32241 for (a in e) null != (o = t(e[a], a, n)) && s.push(o);
32242 return ie.apply([], s)
32245 proxy: function(e, t) {
32247 if ("string" == typeof t && (n = e[t], t = e, e = n), he.isFunction(e)) return r = re.call(arguments, 2), i = function() {
32248 return e.apply(t || this, r.concat(re.call(arguments)))
32249 }, i.guid = e.guid = e.guid || he.guid++, i
32253 }), "function" == typeof Symbol && (he.fn[Symbol.iterator] = ee[Symbol.iterator]), he.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) {
32254 se["[object " + t + "]"] = t.toLowerCase()
32256 var be = function(e) {
32257 function t(e, t, n, r) {
32258 var i, o, a, s, c, u, f, h = t && t.ownerDocument,
32259 p = t ? t.nodeType : 9;
32260 if (n = n || [], "string" != typeof e || !e || 1 !== p && 9 !== p && 11 !== p) return n;
32261 if (!r && ((t ? t.ownerDocument || t : L) !== O && A(t), t = t || O, N)) {
32262 if (11 !== p && (c = me.exec(e)))
32265 if (!(a = t.getElementById(i))) return n;
32266 if (a.id === i) return n.push(a), n
32267 } else if (h && (a = h.getElementById(i)) && H(t, a) && a.id === i) return n.push(a), n
32269 if (c[2]) return Z.apply(n, t.getElementsByTagName(e)), n;
32270 if ((i = c[3]) && $.getElementsByClassName && t.getElementsByClassName) return Z.apply(n, t.getElementsByClassName(i)), n
32272 if ($.qsa && !B[e + " "] && (!I || !I.test(e))) {
32273 if (1 !== p) h = t, f = e;
32274 else if ("object" !== t.nodeName.toLowerCase()) {
32275 for ((s = t.getAttribute("id")) ? s = s.replace(ye, $e) : t.setAttribute("id", s = j), o = (u = C(e)).length; o--;) u[o] = "#" + s + " " + d(u[o]);
32276 f = u.join(","), h = ge.test(e) && l(t.parentNode) || t
32279 return Z.apply(n, h.querySelectorAll(f)), n
32280 } catch (e) {} finally {
32281 s === j && t.removeAttribute("id")
32285 return k(e.replace(oe, "$1"), t, n, r)
32290 return t.push(n + " ") > _.cacheLength && delete e[t.shift()], e[n + " "] = r
32297 return e[j] = !0, e
32301 var t = O.createElement("fieldset");
32307 t.parentNode && t.parentNode.removeChild(t), t = null
32312 for (var n = e.split("|"), r = n.length; r--;) _.attrHandle[n[r]] = t
32317 r = n && 1 === e.nodeType && 1 === t.nodeType && e.sourceIndex - t.sourceIndex;
32320 for (; n = n.nextSibling;)
32321 if (n === t) return -1;
32326 return function(t) {
32327 return "form" in t ? t.parentNode && !1 === t.disabled ? "label" in t ? "label" in t.parentNode ? t.parentNode.disabled === e : t.disabled === e : t.isDisabled === e || t.isDisabled !== !e && we(t) === e : t.disabled === e : "label" in t && t.disabled === e
32332 return r(function(t) {
32333 return t = +t, r(function(n, r) {
32334 for (var i, o = e([], n.length, t), a = o.length; a--;) n[i = o[a]] && (n[i] = !(r[i] = n[i]))
32340 return e && void 0 !== e.getElementsByTagName && e
32346 for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
32350 function f(e, t, n) {
32354 a = n && "parentNode" === o,
32356 return t.first ? function(t, n, i) {
32358 if (1 === t.nodeType || a) return e(t, n, i);
32360 } : function(t, n, c) {
32361 var l, u, d, f = [F, s];
32364 if ((1 === t.nodeType || a) && e(t, n, c)) return !0
32367 if (1 === t.nodeType || a)
32368 if (d = t[j] || (t[j] = {}), u = d[t.uniqueID] || (d[t.uniqueID] = {}), i && i === t.nodeName.toLowerCase()) t = t[r] || t;
32370 if ((l = u[o]) && l[0] === F && l[1] === s) return f[2] = l[2];
32371 if (u[o] = f, f[2] = e(t, n, c)) return !0
32377 return e.length > 1 ? function(t, n, r) {
32378 for (var i = e.length; i--;)
32379 if (!e[i](t, n, r)) return !1;
32384 function p(e, n, r) {
32385 for (var i = 0, o = n.length; i < o; i++) t(e, n[i], r);
32389 function m(e, t, n, r, i) {
32390 for (var o, a = [], s = 0, c = e.length, l = null != t; s < c; s++)(o = e[s]) && (n && !n(o, r, i) || (a.push(o), l && t.push(s)));
32394 function g(e, t, n, i, o, a) {
32395 return i && !i[j] && (i = g(i)), o && !o[j] && (o = g(o, a)), r(function(r, a, s, c) {
32396 var l, u, d, f = [],
32399 v = r || p(t || "*", s.nodeType ? [s] : s, []),
32400 b = !e || !r && t ? v : m(v, f, e, s, c),
32401 y = n ? o || (r ? e : g || i) ? [] : a : b;
32402 if (n && n(b, y, s, c), i)
32403 for (l = m(y, h), i(l, [], s, c), u = l.length; u--;)(d = l[u]) && (y[h[u]] = !(b[h[u]] = d));
32407 for (l = [], u = y.length; u--;)(d = y[u]) && l.push(b[u] = d);
32408 o(null, y = [], l, c)
32410 for (u = y.length; u--;)(d = y[u]) && (l = o ? Q(r, d) : f[u]) > -1 && (r[l] = !(a[l] = d))
32412 } else y = m(y === a ? y.splice(g, y.length) : y), o ? o(null, a, y, c) : Z.apply(a, y)
32417 for (var t, n, r, i = e.length, o = _.relative[e[0].type], a = o || _.relative[" "], s = o ? 1 : 0, c = f(function(e) {
32419 }, a, !0), l = f(function(e) {
32420 return Q(t, e) > -1
32421 }, a, !0), u = [function(e, n, r) {
32422 var i = !o && (r || n !== T) || ((t = n).nodeType ? c(e, n, r) : l(e, n, r));
32425 if (n = _.relative[e[s].type]) u = [f(h(u), n)];
32427 if ((n = _.filter[e[s].type].apply(null, e[s].matches))[j]) {
32428 for (r = ++s; r < i && !_.relative[e[r].type]; r++);
32429 return g(s > 1 && h(u), s > 1 && d(e.slice(0, s - 1).concat({
32430 value: " " === e[s - 2].type ? "*" : ""
32431 })).replace(oe, "$1"), n, s < r && v(e.slice(s, r)), r < i && v(e = e.slice(r)), r < i && d(e))
32439 var i = n.length > 0,
32441 a = function(r, a, s, c, l) {
32442 var u, d, f, h = 0,
32447 y = r || o && _.find.TAG("*", l),
32448 $ = F += null == b ? 1 : Math.random() || .1,
32450 for (l && (T = a === O || a || l); p !== w && null != (u = y[p]); p++) {
32452 for (d = 0, a || u.ownerDocument === O || (A(u), s = !N); f = e[d++];)
32453 if (f(u, a || O, s)) {
32459 i && ((u = !f && u) && h--, r && g.push(u))
32461 if (h += p, i && p !== h) {
32462 for (d = 0; f = n[d++];) f(g, v, a, s);
32465 for (; p--;) g[p] || v[p] || (v[p] = G.call(c));
32468 Z.apply(c, v), l && !r && v.length > 0 && h + n.length > 1 && t.uniqueSort(c)
32470 return l && (F = $, T = b), g
32472 return i ? r(a) : a
32474 var y, $, _, w, E, C, x, k, T, M, S, A, O, D, N, I, R, P, H, j = "sizzle" + 1 * new Date,
32481 z = function(e, t) {
32482 return e === t && (S = !0), 0
32484 W = {}.hasOwnProperty,
32490 Q = function(e, t) {
32491 for (var n = 0, r = e.length; n < r; n++)
32492 if (e[n] === t) return n;
32495 J = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
32496 ee = "[\\x20\\t\\r\\n\\f]",
32497 te = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
32498 ne = "\\[" + ee + "*(" + te + ")(?:" + ee + "*([*^$|!~]?=)" + ee + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + te + "))|)" + ee + "*\\]",
32499 re = ":(" + te + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ne + ")*)|.*)\\)|)",
32500 ie = new RegExp(ee + "+", "g"),
32501 oe = new RegExp("^" + ee + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ee + "+$", "g"),
32502 ae = new RegExp("^" + ee + "*," + ee + "*"),
32503 se = new RegExp("^" + ee + "*([>+~]|" + ee + ")" + ee + "*"),
32504 ce = new RegExp("=" + ee + "*([^\\]'\"]*?)" + ee + "*\\]", "g"),
32505 le = new RegExp(re),
32506 ue = new RegExp("^" + te + "$"),
32508 ID: new RegExp("^#(" + te + ")"),
32509 CLASS: new RegExp("^\\.(" + te + ")"),
32510 TAG: new RegExp("^(" + te + "|[*])"),
32511 ATTR: new RegExp("^" + ne),
32512 PSEUDO: new RegExp("^" + re),
32513 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ee + "*(even|odd|(([+-]|)(\\d*)n|)" + ee + "*(?:([+-]|)" + ee + "*(\\d+)|))" + ee + "*\\)|)", "i"),
32514 bool: new RegExp("^(?:" + J + ")$", "i"),
32515 needsContext: new RegExp("^" + ee + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ee + "*((?:-\\d)?\\d*)" + ee + "*\\)|)(?=[^-]|$)", "i")
32517 fe = /^(?:input|select|textarea|button)$/i,
32519 pe = /^[^{]+\{\s*\[native \w/,
32520 me = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
32522 ve = new RegExp("\\\\([\\da-f]{1,6}" + ee + "?|(" + ee + ")|.)", "ig"),
32523 be = function(e, t, n) {
32524 var r = "0x" + t - 65536;
32525 return r !== r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
32527 ye = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
32528 $e = function(e, t) {
32529 return t ? "\0" === e ? "�" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e
32534 we = f(function(e) {
32535 return !0 === e.disabled && ("form" in e || "label" in e)
32541 Z.apply(Y = X.call(L.childNodes), L.childNodes), Y[L.childNodes.length].nodeType
32544 apply: Y.length ? function(e, t) {
32545 K.apply(e, X.call(t))
32546 } : function(e, t) {
32547 for (var n = e.length, r = 0; e[n++] = t[r++];);
32552 $ = t.support = {}, E = t.isXML = function(e) {
32553 var t = e && (e.ownerDocument || e).documentElement;
32554 return !!t && "HTML" !== t.nodeName
32555 }, A = t.setDocument = function(e) {
32556 var t, n, r = e ? e.ownerDocument || e : L;
32557 return r !== O && 9 === r.nodeType && r.documentElement ? (O = r, D = O.documentElement, N = !E(O), L !== O && (n = O.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener("unload", _e, !1) : n.attachEvent && n.attachEvent("onunload", _e)), $.attributes = i(function(e) {
32558 return e.className = "i", !e.getAttribute("className")
32559 }), $.getElementsByTagName = i(function(e) {
32560 return e.appendChild(O.createComment("")), !e.getElementsByTagName("*").length
32561 }), $.getElementsByClassName = pe.test(O.getElementsByClassName), $.getById = i(function(e) {
32562 return D.appendChild(e).id = j, !O.getElementsByName || !O.getElementsByName(j).length
32563 }), $.getById ? (_.filter.ID = function(e) {
32564 var t = e.replace(ve, be);
32565 return function(e) {
32566 return e.getAttribute("id") === t
32568 }, _.find.ID = function(e, t) {
32569 if (void 0 !== t.getElementById && N) {
32570 var n = t.getElementById(e);
32571 return n ? [n] : []
32573 }) : (_.filter.ID = function(e) {
32574 var t = e.replace(ve, be);
32575 return function(e) {
32576 var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
32577 return n && n.value === t
32579 }, _.find.ID = function(e, t) {
32580 if (void 0 !== t.getElementById && N) {
32581 var n, r, i, o = t.getElementById(e);
32583 if ((n = o.getAttributeNode("id")) && n.value === e) return [o];
32584 for (i = t.getElementsByName(e), r = 0; o = i[r++];)
32585 if ((n = o.getAttributeNode("id")) && n.value === e) return [o]
32589 }), _.find.TAG = $.getElementsByTagName ? function(e, t) {
32590 return void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e) : $.qsa ? t.querySelectorAll(e) : void 0
32591 } : function(e, t) {
32594 o = t.getElementsByTagName(e);
32596 for (; n = o[i++];) 1 === n.nodeType && r.push(n);
32600 }, _.find.CLASS = $.getElementsByClassName && function(e, t) {
32601 if (void 0 !== t.getElementsByClassName && N) return t.getElementsByClassName(e)
32602 }, R = [], I = [], ($.qsa = pe.test(O.querySelectorAll)) && (i(function(e) {
32603 D.appendChild(e).innerHTML = "<a id='" + j + "'></a><select id='" + j + "-\r\\' msallowcapture=''><option selected=''></option></select>", e.querySelectorAll("[msallowcapture^='']").length && I.push("[*^$]=" + ee + "*(?:''|\"\")"), e.querySelectorAll("[selected]").length || I.push("\\[" + ee + "*(?:value|" + J + ")"), e.querySelectorAll("[id~=" + j + "-]").length || I.push("~="), e.querySelectorAll(":checked").length || I.push(":checked"), e.querySelectorAll("a#" + j + "+*").length || I.push(".#.+[+~]")
32604 }), i(function(e) {
32605 e.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
32606 var t = O.createElement("input");
32607 t.setAttribute("type", "hidden"), e.appendChild(t).setAttribute("name", "D"), e.querySelectorAll("[name=d]").length && I.push("name" + ee + "*[*^$|!~]?="), 2 !== e.querySelectorAll(":enabled").length && I.push(":enabled", ":disabled"), D.appendChild(e).disabled = !0, 2 !== e.querySelectorAll(":disabled").length && I.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), I.push(",.*:")
32608 })), ($.matchesSelector = pe.test(P = D.matches || D.webkitMatchesSelector || D.mozMatchesSelector || D.oMatchesSelector || D.msMatchesSelector)) && i(function(e) {
32609 $.disconnectedMatch = P.call(e, "*"), P.call(e, "[s!='']:x"), R.push("!=", re)
32610 }), I = I.length && new RegExp(I.join("|")), R = R.length && new RegExp(R.join("|")), t = pe.test(D.compareDocumentPosition), H = t || pe.test(D.contains) ? function(e, t) {
32611 var n = 9 === e.nodeType ? e.documentElement : e,
32612 r = t && t.parentNode;
32613 return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
32614 } : function(e, t) {
32616 for (; t = t.parentNode;)
32617 if (t === e) return !0;
32619 }, z = t ? function(e, t) {
32620 if (e === t) return S = !0, 0;
32621 var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
32622 return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !$.sortDetached && t.compareDocumentPosition(e) === n ? e === O || e.ownerDocument === L && H(L, e) ? -1 : t === O || t.ownerDocument === L && H(L, t) ? 1 : M ? Q(M, e) - Q(M, t) : 0 : 4 & n ? -1 : 1)
32623 } : function(e, t) {
32624 if (e === t) return S = !0, 0;
32630 if (!i || !o) return e === O ? -1 : t === O ? 1 : i ? -1 : o ? 1 : M ? Q(M, e) - Q(M, t) : 0;
32631 if (i === o) return a(e, t);
32632 for (n = e; n = n.parentNode;) s.unshift(n);
32633 for (n = t; n = n.parentNode;) c.unshift(n);
32634 for (; s[r] === c[r];) r++;
32635 return r ? a(s[r], c[r]) : s[r] === L ? -1 : c[r] === L ? 1 : 0
32637 }, t.matches = function(e, n) {
32638 return t(e, null, null, n)
32639 }, t.matchesSelector = function(e, n) {
32640 if ((e.ownerDocument || e) !== O && A(e), n = n.replace(ce, "='$1']"), $.matchesSelector && N && !B[n + " "] && (!R || !R.test(n)) && (!I || !I.test(n))) try {
32641 var r = P.call(e, n);
32642 if (r || $.disconnectedMatch || e.document && 11 !== e.document.nodeType) return r
32644 return t(n, O, null, [e]).length > 0
32645 }, t.contains = function(e, t) {
32646 return (e.ownerDocument || e) !== O && A(e), H(e, t)
32647 }, t.attr = function(e, t) {
32648 (e.ownerDocument || e) !== O && A(e);
32649 var n = _.attrHandle[t.toLowerCase()],
32650 r = n && W.call(_.attrHandle, t.toLowerCase()) ? n(e, t, !N) : void 0;
32651 return void 0 !== r ? r : $.attributes || !N ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
32652 }, t.escape = function(e) {
32653 return (e + "").replace(ye, $e)
32654 }, t.error = function(e) {
32655 throw new Error("Syntax error, unrecognized expression: " + e)
32656 }, t.uniqueSort = function(e) {
32660 if (S = !$.detectDuplicates, M = !$.sortStable && e.slice(0), e.sort(z), S) {
32661 for (; t = e[i++];) t === e[i] && (r = n.push(i));
32662 for (; r--;) e.splice(n[r], 1)
32665 }, w = t.getText = function(e) {
32670 if (1 === i || 9 === i || 11 === i) {
32671 if ("string" == typeof e.textContent) return e.textContent;
32672 for (e = e.firstChild; e; e = e.nextSibling) n += w(e)
32673 } else if (3 === i || 4 === i) return e.nodeValue
32675 for (; t = e[r++];) n += w(t);
32677 }, (_ = t.selectors = {
32692 dir: "previousSibling",
32696 dir: "previousSibling"
32700 ATTR: function(e) {
32701 return e[1] = e[1].replace(ve, be), e[3] = (e[3] || e[4] || e[5] || "").replace(ve, be), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
32703 CHILD: function(e) {
32704 return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || t.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && t.error(e[0]), e
32706 PSEUDO: function(e) {
32707 var t, n = !e[6] && e[2];
32708 return de.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && le.test(n) && (t = C(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
32713 var t = e.replace(ve, be).toLowerCase();
32714 return "*" === e ? function() {
32717 return e.nodeName && e.nodeName.toLowerCase() === t
32720 CLASS: function(e) {
32721 var t = U[e + " "];
32722 return t || (t = new RegExp("(^|" + ee + ")" + e + "(" + ee + "|$)")) && U(e, function(e) {
32723 return t.test("string" == typeof e.className && e.className || void 0 !== e.getAttribute && e.getAttribute("class") || "")
32726 ATTR: function(e, n, r) {
32727 return function(i) {
32728 var o = t.attr(i, e);
32729 return null == o ? "!=" === n : !n || (o += "", "=" === n ? o === r : "!=" === n ? o !== r : "^=" === n ? r && 0 === o.indexOf(r) : "*=" === n ? r && o.indexOf(r) > -1 : "$=" === n ? r && o.slice(-r.length) === r : "~=" === n ? (" " + o.replace(ie, " ") + " ").indexOf(r) > -1 : "|=" === n && (o === r || o.slice(0, r.length + 1) === r + "-"))
32732 CHILD: function(e, t, n, r, i) {
32733 var o = "nth" !== e.slice(0, 3),
32734 a = "last" !== e.slice(-4),
32735 s = "of-type" === t;
32736 return 1 === r && 0 === i ? function(e) {
32737 return !!e.parentNode
32738 } : function(t, n, c) {
32739 var l, u, d, f, h, p, m = o !== a ? "nextSibling" : "previousSibling",
32741 v = s && t.nodeName.toLowerCase(),
32747 for (f = t; f = f[m];)
32748 if (s ? f.nodeName.toLowerCase() === v : 1 === f.nodeType) return !1;
32749 p = m = "only" === e && !p && "nextSibling"
32753 if (p = [a ? g.firstChild : g.lastChild], a && b) {
32754 for (y = (h = (l = (u = (d = (f = g)[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]) && l[2], f = h && g.childNodes[h]; f = ++h && f && f[m] || (y = h = 0) || p.pop();)
32755 if (1 === f.nodeType && ++y && f === t) {
32759 } else if (b && (y = h = (l = (u = (d = (f = t)[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] || [])[0] === F && l[1]), !1 === y)
32761 (f = ++h && f && f[m] || (y = h = 0) || p.pop()) && ((s ? f.nodeName.toLowerCase() !== v : 1 !== f.nodeType) || !++y || (b && ((u = (d = f[j] || (f[j] = {}))[f.uniqueID] || (d[f.uniqueID] = {}))[e] = [F, y]), f !== t)););
32762 return (y -= i) === r || y % r == 0 && y / r >= 0
32766 PSEUDO: function(e, n) {
32767 var i, o = _.pseudos[e] || _.setFilters[e.toLowerCase()] || t.error("unsupported pseudo: " + e);
32768 return o[j] ? o(n) : o.length > 1 ? (i = [e, e, "", n], _.setFilters.hasOwnProperty(e.toLowerCase()) ? r(function(e, t) {
32769 for (var r, i = o(e, n), a = i.length; a--;) e[r = Q(e, i[a])] = !(t[r] = i[a])
32776 not: r(function(e) {
32779 i = x(e.replace(oe, "$1"));
32780 return i[j] ? r(function(e, t, n, r) {
32781 for (var o, a = i(e, null, r, []), s = e.length; s--;)(o = a[s]) && (e[s] = !(t[s] = o))
32782 }) : function(e, r, o) {
32783 return t[0] = e, i(t, null, o, n), t[0] = null, !n.pop()
32786 has: r(function(e) {
32787 return function(n) {
32788 return t(e, n).length > 0
32791 contains: r(function(e) {
32792 return e = e.replace(ve, be),
32794 return (t.textContent || t.innerText || w(t)).indexOf(e) > -1
32797 lang: r(function(e) {
32798 return ue.test(e || "") || t.error("unsupported lang: " + e), e = e.replace(ve, be).toLowerCase(),
32802 if (n = N ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return (n = n.toLowerCase()) === e || 0 === n.indexOf(e + "-")
32803 } while ((t = t.parentNode) && 1 === t.nodeType);
32807 target: function(t) {
32808 var n = e.location && e.location.hash;
32809 return n && n.slice(1) === t.id
32811 root: function(e) {
32814 focus: function(e) {
32815 return e === O.activeElement && (!O.hasFocus || O.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
32819 checked: function(e) {
32820 var t = e.nodeName.toLowerCase();
32821 return "input" === t && !!e.checked || "option" === t && !!e.selected
32823 selected: function(e) {
32824 return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
32826 empty: function(e) {
32827 for (e = e.firstChild; e; e = e.nextSibling)
32828 if (e.nodeType < 6) return !1;
32831 parent: function(e) {
32832 return !_.pseudos.empty(e)
32834 header: function(e) {
32835 return he.test(e.nodeName)
32837 input: function(e) {
32838 return fe.test(e.nodeName)
32840 button: function(e) {
32841 var t = e.nodeName.toLowerCase();
32842 return "input" === t && "button" === e.type || "button" === t
32844 text: function(e) {
32846 return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
32848 first: c(function() {
32851 last: c(function(e, t) {
32854 eq: c(function(e, t, n) {
32855 return [n < 0 ? n + t : n]
32857 even: c(function(e, t) {
32858 for (var n = 0; n < t; n += 2) e.push(n);
32861 odd: c(function(e, t) {
32862 for (var n = 1; n < t; n += 2) e.push(n);
32865 lt: c(function(e, t, n) {
32866 for (var r = n < 0 ? n + t : n; --r >= 0;) e.push(r);
32869 gt: c(function(e, t, n) {
32870 for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
32874 }).pseudos.nth = _.pseudos.eq;
32881 }) _.pseudos[y] = function(e) {
32882 return function(t) {
32883 return "input" === t.nodeName.toLowerCase() && t.type === e
32889 }) _.pseudos[y] = function(e) {
32890 return function(t) {
32891 var n = t.nodeName.toLowerCase();
32892 return ("input" === n || "button" === n) && t.type === e
32895 return u.prototype = _.filters = _.pseudos, _.setFilters = new u, C = t.tokenize = function(e, n) {
32896 var r, i, o, a, s, c, l, u = V[e + " "];
32897 if (u) return n ? 0 : u.slice(0);
32898 for (s = e, c = [], l = _.preFilter; s;) {
32899 r && !(i = ae.exec(s)) || (i && (s = s.slice(i[0].length) || s), c.push(o = [])), r = !1, (i = se.exec(s)) && (r = i.shift(), o.push({
32901 type: i[0].replace(oe, " ")
32902 }), s = s.slice(r.length));
32903 for (a in _.filter) !(i = de[a].exec(s)) || l[a] && !(i = l[a](i)) || (r = i.shift(), o.push({
32907 }), s = s.slice(r.length));
32910 return n ? s.length : s ? t.error(e) : V(e, c).slice(0)
32911 }, x = t.compile = function(e, t) {
32916 for (t || (t = C(e)), n = t.length; n--;)(o = v(t[n]))[j] ? r.push(o) : i.push(o);
32917 (o = B(e, b(i, r))).selector = e
32920 }, k = t.select = function(e, t, n, r) {
32921 var i, o, a, s, c, u = "function" == typeof e && e,
32922 f = !r && C(e = u.selector || e);
32923 if (n = n || [], 1 === f.length) {
32924 if ((o = f[0] = f[0].slice(0)).length > 2 && "ID" === (a = o[0]).type && 9 === t.nodeType && N && _.relative[o[1].type]) {
32925 if (!(t = (_.find.ID(a.matches[0].replace(ve, be), t) || [])[0])) return n;
32926 u && (t = t.parentNode), e = e.slice(o.shift().value.length)
32928 for (i = de.needsContext.test(e) ? 0 : o.length; i-- && (a = o[i], !_.relative[s = a.type]);)
32929 if ((c = _.find[s]) && (r = c(a.matches[0].replace(ve, be), ge.test(o[0].type) && l(t.parentNode) || t))) {
32930 if (o.splice(i, 1), !(e = r.length && d(o))) return Z.apply(n, r), n;
32934 return (u || x(e, f))(r, t, !N, n, !t || ge.test(e) && l(t.parentNode) || t), n
32935 }, $.sortStable = j.split("").sort(z).join("") === j, $.detectDuplicates = !!S, A(), $.sortDetached = i(function(e) {
32936 return 1 & e.compareDocumentPosition(O.createElement("fieldset"))
32937 }), i(function(e) {
32938 return e.innerHTML = "<a href='#'></a>", "#" === e.firstChild.getAttribute("href")
32939 }) || o("type|href|height|width", function(e, t, n) {
32940 if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
32941 }), $.attributes && i(function(e) {
32942 return e.innerHTML = "<input/>", e.firstChild.setAttribute("value", ""), "" === e.firstChild.getAttribute("value")
32943 }) || o("value", function(e, t, n) {
32944 if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue
32945 }), i(function(e) {
32946 return null == e.getAttribute("disabled")
32947 }) || o(J, function(e, t, n) {
32949 if (!n) return !0 === e[t] ? t.toLowerCase() : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
32952 he.find = be, he.expr = be.selectors, he.expr[":"] = he.expr.pseudos, he.uniqueSort = he.unique = be.uniqueSort, he.text = be.getText, he.isXMLDoc = be.isXML, he.contains = be.contains, he.escapeSelector = be.escape;
32953 var ye = function(e, t, n) {
32954 for (var r = [], i = void 0 !== n;
32955 (e = e[t]) && 9 !== e.nodeType;)
32956 if (1 === e.nodeType) {
32957 if (i && he(e).is(n)) break;
32962 $e = function(e, t) {
32963 for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
32966 _e = he.expr.match.needsContext,
32967 we = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,
32968 Ee = /^.[^:#\[\.,]*$/;
32969 he.filter = function(e, t, n) {
32971 return n && (e = ":not(" + e + ")"), 1 === t.length && 1 === r.nodeType ? he.find.matchesSelector(r, e) ? [r] : [] : he.find.matches(e, he.grep(t, function(e) {
32972 return 1 === e.nodeType
32975 find: function(e) {
32976 var t, n, r = this.length,
32978 if ("string" != typeof e) return this.pushStack(he(e).filter(function() {
32979 for (t = 0; t < r; t++)
32980 if (he.contains(i[t], this)) return !0
32982 for (n = this.pushStack([]), t = 0; t < r; t++) he.find(e, i[t], n);
32983 return r > 1 ? he.uniqueSort(n) : n
32985 filter: function(e) {
32986 return this.pushStack(o(this, e || [], !1))
32989 return this.pushStack(o(this, e || [], !0))
32992 return !!o(this, "string" == typeof e && _e.test(e) ? he(e) : e || [], !1).length
32995 var Ce, xe = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
32996 (he.fn.init = function(e, t, n) {
32998 if (!e) return this;
32999 if (n = n || Ce, "string" == typeof e) {
33000 if (!(r = "<" === e[0] && ">" === e[e.length - 1] && e.length >= 3 ? [null, e, null] : xe.exec(e)) || !r[1] && t) return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e);
33002 if (t = t instanceof he ? t[0] : t, he.merge(this, he.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : te, !0)), we.test(r[1]) && he.isPlainObject(t))
33003 for (r in t) he.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
33006 return (i = te.getElementById(r[2])) && (this[0] = i, this.length = 1), this
33008 return e.nodeType ? (this[0] = e, this.length = 1, this) : he.isFunction(e) ? void 0 !== n.ready ? n.ready(e) : e(he) : he.makeArray(e, this)
33009 }).prototype = he.fn, Ce = he(te);
33010 var ke = /^(?:parents|prev(?:Until|All))/,
33019 var t = he(e, this),
33021 return this.filter(function() {
33022 for (var e = 0; e < n; e++)
33023 if (he.contains(this, t[e])) return !0
33026 closest: function(e, t) {
33030 a = "string" != typeof e && he(e);
33033 for (n = this[r]; n && n !== t; n = n.parentNode)
33034 if (n.nodeType < 11 && (a ? a.index(n) > -1 : 1 === n.nodeType && he.find.matchesSelector(n, e))) {
33038 return this.pushStack(o.length > 1 ? he.uniqueSort(o) : o)
33040 index: function(e) {
33041 return e ? "string" == typeof e ? ae.call(he(e), this[0]) : ae.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
33043 add: function(e, t) {
33044 return this.pushStack(he.uniqueSort(he.merge(this.get(), he(e, t))))
33046 addBack: function(e) {
33047 return this.add(null == e ? this.prevObject : this.prevObject.filter(e))
33050 parent: function(e) {
33051 var t = e.parentNode;
33052 return t && 11 !== t.nodeType ? t : null
33054 parents: function(e) {
33055 return ye(e, "parentNode")
33057 parentsUntil: function(e, t, n) {
33058 return ye(e, "parentNode", n)
33060 next: function(e) {
33061 return a(e, "nextSibling")
33063 prev: function(e) {
33064 return a(e, "previousSibling")
33066 nextAll: function(e) {
33067 return ye(e, "nextSibling")
33069 prevAll: function(e) {
33070 return ye(e, "previousSibling")
33072 nextUntil: function(e, t, n) {
33073 return ye(e, "nextSibling", n)
33075 prevUntil: function(e, t, n) {
33076 return ye(e, "previousSibling", n)
33078 siblings: function(e) {
33079 return $e((e.parentNode || {}).firstChild, e)
33081 children: function(e) {
33082 return $e(e.firstChild)
33084 contents: function(e) {
33085 return i(e, "iframe") ? e.contentDocument : (i(e, "template") && (e = e.content || e), he.merge([], e.childNodes))
33087 }, function(e, t) {
33088 he.fn[e] = function(n, r) {
33089 var i = he.map(this, t, n);
33090 return "Until" !== e.slice(-5) && (r = n), r && "string" == typeof r && (i = he.filter(r, i)), this.length > 1 && (Te[e] || he.uniqueSort(i), ke.test(e) && i.reverse()), this.pushStack(i)
33093 var Me = /[^\x20\t\r\n\f]+/g;
33094 he.Callbacks = function(e) {
33095 e = "string" == typeof e ? s(e) : he.extend({}, e);
33096 var t, n, r, i, o = [],
33100 for (i = i || e.once, r = t = !0; a.length; c = -1)
33101 for (n = a.shift(); ++c < o.length;) !1 === o[c].apply(n[0], n[1]) && e.stopOnFalse && (c = o.length, n = !1);
33102 e.memory || (n = !1), t = !1, i && (o = n ? [] : "")
33106 return o && (n && !t && (c = o.length - 1, a.push(n)), function t(n) {
33107 he.each(n, function(n, r) {
33108 he.isFunction(r) ? e.unique && u.has(r) || o.push(r) : r && r.length && "string" !== he.type(r) && t(r)
33110 }(arguments), n && !t && l()), this
33112 remove: function() {
33113 return he.each(arguments, function(e, t) {
33115 (n = he.inArray(t, o, n)) > -1;) o.splice(n, 1), n <= c && c--
33119 return e ? he.inArray(e, o) > -1 : o.length > 0
33121 empty: function() {
33122 return o && (o = []), this
33124 disable: function() {
33125 return i = a = [], o = n = "", this
33127 disabled: function() {
33131 return i = a = [], n || t || (o = n = ""), this
33133 locked: function() {
33136 fireWith: function(e, n) {
33137 return i || (n = [e, (n = n || []).slice ? n.slice() : n], a.push(n), t || l()), this
33140 return u.fireWith(this, arguments), this
33142 fired: function() {
33148 Deferred: function(t) {
33150 ["notify", "progress", he.Callbacks("memory"), he.Callbacks("memory"), 2],
33151 ["resolve", "done", he.Callbacks("once memory"), he.Callbacks("once memory"), 0, "resolved"],
33152 ["reject", "fail", he.Callbacks("once memory"), he.Callbacks("once memory"), 1, "rejected"]
33156 state: function() {
33159 always: function() {
33160 return o.done(arguments).fail(arguments), this
33162 catch: function(e) {
33163 return i.then(null, e)
33167 return he.Deferred(function(t) {
33168 he.each(n, function(n, r) {
33169 var i = he.isFunction(e[r[4]]) && e[r[4]];
33170 o[r[1]](function() {
33171 var e = i && i.apply(this, arguments);
33172 e && he.isFunction(e.promise) ? e.promise().progress(t.notify).done(t.resolve).fail(t.reject) : t[r[0] + "With"](this, i ? [e] : arguments)
33177 then: function(t, r, i) {
33178 function o(t, n, r, i) {
33179 return function() {
33185 if ((e = r.apply(s, u)) === n.promise()) throw new TypeError("Thenable self-resolution");
33186 d = e && ("object" == typeof e || "function" == typeof e) && e.then, he.isFunction(d) ? i ? d.call(e, o(a, n, c, i), o(a, n, l, i)) : (a++, d.call(e, o(a, n, c, i), o(a, n, l, i), o(a, n, c, n.notifyWith))) : (r !== c && (s = void 0, u = [e]), (i || n.resolveWith)(s, u))
33189 f = i ? d : function() {
33193 he.Deferred.exceptionHook && he.Deferred.exceptionHook(e, f.stackTrace), t + 1 >= a && (r !== l && (s = void 0, u = [e]), n.rejectWith(s, u))
33196 t ? f() : (he.Deferred.getStackHook && (f.stackTrace = he.Deferred.getStackHook()), e.setTimeout(f))
33200 return he.Deferred(function(e) {
33201 n[0][3].add(o(0, e, he.isFunction(i) ? i : c, e.notifyWith)), n[1][3].add(o(0, e, he.isFunction(t) ? t : c)), n[2][3].add(o(0, e, he.isFunction(r) ? r : l))
33204 promise: function(e) {
33205 return null != e ? he.extend(e, i) : i
33209 return he.each(n, function(e, t) {
33212 i[t[1]] = a.add, s && a.add(function() {
33214 }, n[3 - e][2].disable, n[0][2].lock), a.add(t[3].fire), o[t[0]] = function() {
33215 return o[t[0] + "With"](this === o ? void 0 : this, arguments), this
33216 }, o[t[0] + "With"] = a.fireWith
33217 }), i.promise(o), t && t.call(o, o), o
33219 when: function(e) {
33220 var t = arguments.length,
33223 i = re.call(arguments),
33226 return function(n) {
33227 r[e] = this, i[e] = arguments.length > 1 ? re.call(arguments) : n, --t || o.resolveWith(r, i)
33230 if (t <= 1 && (u(e, o.done(a(n)).resolve, o.reject, !t), "pending" === o.state() || he.isFunction(i[n] && i[n].then))) return o.then();
33231 for (; n--;) u(i[n], a(n), o.reject);
33235 var Se = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
33236 he.Deferred.exceptionHook = function(t, n) {
33237 e.console && e.console.warn && t && Se.test(t.name) && e.console.warn("jQuery.Deferred exception: " + t.message, t.stack, n)
33238 }, he.readyException = function(t) {
33239 e.setTimeout(function() {
33243 var Ae = he.Deferred();
33244 he.fn.ready = function(e) {
33245 return Ae.then(e).catch(function(e) {
33246 he.readyException(e)
33251 ready: function(e) {
33252 (!0 === e ? --he.readyWait : he.isReady) || (he.isReady = !0, !0 !== e && --he.readyWait > 0 || Ae.resolveWith(te, [he]))
33254 }), he.ready.then = Ae.then, "complete" === te.readyState || "loading" !== te.readyState && !te.documentElement.doScroll ? e.setTimeout(he.ready) : (te.addEventListener("DOMContentLoaded", d), e.addEventListener("load", d));
33255 var Oe = function(e, t, n, r, i, o, a) {
33259 if ("object" === he.type(n)) {
33261 for (s in n) Oe(e, t, s, n[s], !0, o, a)
33262 } else if (void 0 !== r && (i = !0, he.isFunction(r) || (a = !0), l && (a ? (t.call(e, r), t = null) : (l = t, t = function(e, t, n) {
33263 return l.call(he(e), n)
33265 for (; s < c; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n)));
33266 return i ? e : l ? t.call(e) : c ? t(e[0], n) : o
33269 return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType
33271 f.uid = 1, f.prototype = {
33272 cache: function(e) {
33273 var t = e[this.expando];
33274 return t || (t = {}, De(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, {
33279 set: function(e, t, n) {
33280 var r, i = this.cache(e);
33281 if ("string" == typeof t) i[he.camelCase(t)] = n;
33283 for (r in t) i[he.camelCase(r)] = t[r];
33286 get: function(e, t) {
33287 return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][he.camelCase(t)]
33289 access: function(e, t, n) {
33290 return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), void 0 !== n ? n : t)
33292 remove: function(e, t) {
33293 var n, r = e[this.expando];
33294 if (void 0 !== r) {
33295 if (void 0 !== t) {
33296 n = (t = Array.isArray(t) ? t.map(he.camelCase) : (t = he.camelCase(t)) in r ? [t] : t.match(Me) || []).length;
33297 for (; n--;) delete r[t[n]]
33298 }(void 0 === t || he.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando])
33301 hasData: function(e) {
33302 var t = e[this.expando];
33303 return void 0 !== t && !he.isEmptyObject(t)
33308 Re = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
33311 hasData: function(e) {
33312 return Ie.hasData(e) || Ne.hasData(e)
33314 data: function(e, t, n) {
33315 return Ie.access(e, t, n)
33317 removeData: function(e, t) {
33320 _data: function(e, t, n) {
33321 return Ne.access(e, t, n)
33323 _removeData: function(e, t) {
33327 data: function(e, t) {
33328 var n, r, i, o = this[0],
33329 a = o && o.attributes;
33330 if (void 0 === e) {
33331 if (this.length && (i = Ie.get(o), 1 === o.nodeType && !Ne.get(o, "hasDataAttrs"))) {
33332 for (n = a.length; n--;) a[n] && 0 === (r = a[n].name).indexOf("data-") && (r = he.camelCase(r.slice(5)), p(o, r, i[r]));
33333 Ne.set(o, "hasDataAttrs", !0)
33337 return "object" == typeof e ? this.each(function() {
33339 }) : Oe(this, function(t) {
33341 if (o && void 0 === t) {
33342 if (void 0 !== (n = Ie.get(o, e))) return n;
33343 if (void 0 !== (n = p(o, e))) return n
33344 } else this.each(function() {
33347 }, null, t, arguments.length > 1, null, !0)
33349 removeData: function(e) {
33350 return this.each(function() {
33355 queue: function(e, t, n) {
33357 if (e) return t = (t || "fx") + "queue", r = Ne.get(e, t), n && (!r || Array.isArray(n) ? r = Ne.access(e, t, he.makeArray(n)) : r.push(n)), r || []
33359 dequeue: function(e, t) {
33361 var n = he.queue(e, t),
33364 o = he._queueHooks(e, t);
33365 "inprogress" === i && (i = n.shift(), r--), i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, function() {
33367 }, o)), !r && o && o.empty.fire()
33369 _queueHooks: function(e, t) {
33370 var n = t + "queueHooks";
33371 return Ne.get(e, n) || Ne.access(e, n, {
33372 empty: he.Callbacks("once memory").add(function() {
33373 Ne.remove(e, [t + "queue", n])
33378 queue: function(e, t) {
33380 return "string" != typeof e && (t = e, e = "fx", n--), arguments.length < n ? he.queue(this[0], e) : void 0 === t ? this : this.each(function() {
33381 var n = he.queue(this, e, t);
33382 he._queueHooks(this, e), "fx" === e && "inprogress" !== n[0] && he.dequeue(this, e)
33385 dequeue: function(e) {
33386 return this.each(function() {
33387 he.dequeue(this, e)
33390 clearQueue: function(e) {
33391 return this.queue(e || "fx", [])
33393 promise: function(e, t) {
33399 --r || i.resolveWith(o, [o])
33401 for ("string" != typeof e && (t = e, e = void 0), e = e || "fx"; a--;)(n = Ne.get(o[a], e + "queueHooks")) && n.empty && (r++, n.empty.add(s));
33402 return s(), i.promise(t)
33405 var He = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
33406 je = new RegExp("^(?:([+-])=|)(" + He + ")([a-z%]*)$", "i"),
33407 Le = ["Top", "Right", "Bottom", "Left"],
33408 Fe = function(e, t) {
33409 return "none" === (e = t || e).style.display || "" === e.style.display && he.contains(e.ownerDocument, e) && "none" === he.css(e, "display")
33411 qe = function(e, t, n, r) {
33413 for (o in t) a[o] = e.style[o], e.style[o] = t[o];
33414 i = n.apply(e, r || []);
33415 for (o in t) e.style[o] = a[o];
33426 toggle: function(e) {
33427 return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() {
33428 Fe(this) ? he(this).show() : he(this).hide()
33432 var Ve = /^(?:checkbox|radio)$/i,
33433 Be = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i,
33434 ze = /^$|\/(?:java|ecma)script/i,
33436 option: [1, "<select multiple='multiple'>", "</select>"],
33437 thead: [1, "<table>", "</table>"],
33438 col: [2, "<table><colgroup>", "</colgroup></table>"],
33439 tr: [2, "<table><tbody>", "</tbody></table>"],
33440 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
33441 _default: [0, "", ""]
33443 We.optgroup = We.option, We.tbody = We.tfoot = We.colgroup = We.caption = We.thead, We.th = We.td;
33444 var Ye = /<|&#?\w+;/;
33446 var e = te.createDocumentFragment().appendChild(te.createElement("div")),
33447 t = te.createElement("input");
33448 t.setAttribute("type", "radio"), t.setAttribute("checked", "checked"), t.setAttribute("name", "t"), e.appendChild(t), fe.checkClone = e.cloneNode(!0).cloneNode(!0).lastChild.checked, e.innerHTML = "<textarea>x</textarea>", fe.noCloneChecked = !!e.cloneNode(!0).lastChild.defaultValue
33450 var Ge = te.documentElement,
33452 Ze = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
33453 Xe = /^([^.]*)(?:\.(.+)|)/;
33456 add: function(e, t, n, r, i) {
33457 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.get(e);
33459 for (n.handler && (n = (o = n).handler, i = o.selector), i && he.find.matchesSelector(Ge, i), n.guid || (n.guid = he.guid++), (c = g.events) || (c = g.events = {}), (a = g.handle) || (a = g.handle = function(t) {
33460 return void 0 !== he && he.event.triggered !== t.type ? he.event.dispatch.apply(e, arguments) : void 0
33461 }), l = (t = (t || "").match(Me) || [""]).length; l--;) h = m = (s = Xe.exec(t[l]) || [])[1], p = (s[2] || "").split(".").sort(), h && (d = he.event.special[h] || {}, h = (i ? d.delegateType : d.bindType) || h, d = he.event.special[h] || {}, u = he.extend({
33468 needsContext: i && he.expr.match.needsContext.test(i),
33469 namespace: p.join(".")
33470 }, o), (f = c[h]) || ((f = c[h] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(e, r, p, a) || e.addEventListener && e.addEventListener(h, a)), d.add && (d.add.call(e, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), he.event.global[h] = !0)
33472 remove: function(e, t, n, r, i) {
33473 var o, a, s, c, l, u, d, f, h, p, m, g = Ne.hasData(e) && Ne.get(e);
33474 if (g && (c = g.events)) {
33475 for (l = (t = (t || "").match(Me) || [""]).length; l--;)
33476 if (s = Xe.exec(t[l]) || [], h = m = s[1], p = (s[2] || "").split(".").sort(), h) {
33477 for (d = he.event.special[h] || {}, f = c[h = (r ? d.delegateType : d.bindType) || h] || [], s = s[2] && new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)"), a = o = f.length; o--;) u = f[o], !i && m !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || r && r !== u.selector && ("**" !== r || !u.selector) || (f.splice(o, 1), u.selector && f.delegateCount--, d.remove && d.remove.call(e, u));
33478 a && !f.length && (d.teardown && !1 !== d.teardown.call(e, p, g.handle) || he.removeEvent(e, h, g.handle), delete c[h])
33480 for (h in c) he.event.remove(e, h + t[l], n, r, !0);
33481 he.isEmptyObject(c) && Ne.remove(e, "handle events")
33484 dispatch: function(e) {
33485 var t, n, r, i, o, a, s = he.event.fix(e),
33486 c = new Array(arguments.length),
33487 l = (Ne.get(this, "events") || {})[s.type] || [],
33488 u = he.event.special[s.type] || {};
33489 for (c[0] = s, t = 1; t < arguments.length; t++) c[t] = arguments[t];
33490 if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {
33491 for (a = he.event.handlers.call(this, s, l), t = 0;
33492 (i = a[t++]) && !s.isPropagationStopped();)
33493 for (s.currentTarget = i.elem, n = 0;
33494 (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((he.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, c)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));
33495 return u.postDispatch && u.postDispatch.call(this, s), s.result
33498 handlers: function(e, t) {
33499 var n, r, i, o, a, s = [],
33500 c = t.delegateCount,
33502 if (c && l.nodeType && !("click" === e.type && e.button >= 1))
33503 for (; l !== this; l = l.parentNode || this)
33504 if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) {
33505 for (o = [], a = {}, n = 0; n < c; n++) void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? he(i, this).index(l) > -1 : he.find(i, this, null, [l]).length), a[i] && o.push(r);
33506 o.length && s.push({
33511 return l = this, c < t.length && s.push({
33513 handlers: t.slice(c)
33516 addProp: function(e, t) {
33517 Object.defineProperty(he.Event.prototype, e, {
33520 get: he.isFunction(t) ? function() {
33521 if (this.originalEvent) return t(this.originalEvent)
33523 if (this.originalEvent) return this.originalEvent[e]
33526 Object.defineProperty(this, e, {
33536 return e[he.expando] ? e : new he.Event(e)
33543 trigger: function() {
33544 if (this !== E() && this.focus) return this.focus(), !1
33546 delegateType: "focusin"
33549 trigger: function() {
33550 if (this === E() && this.blur) return this.blur(), !1
33552 delegateType: "focusout"
33555 trigger: function() {
33556 if ("checkbox" === this.type && this.click && i(this, "input")) return this.click(), !1
33558 _default: function(e) {
33559 return i(e.target, "a")
33563 postDispatch: function(e) {
33564 void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result)
33568 }, he.removeEvent = function(e, t, n) {
33569 e.removeEventListener && e.removeEventListener(t, n)
33570 }, he.Event = function(e, t) {
33571 if (!(this instanceof he.Event)) return new he.Event(e, t);
33572 e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? _ : w, this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, this.currentTarget = e.currentTarget, this.relatedTarget = e.relatedTarget) : this.type = e, t && he.extend(this, t), this.timeStamp = e && e.timeStamp || he.now(), this[he.expando] = !0
33573 }, he.Event.prototype = {
33574 constructor: he.Event,
33575 isDefaultPrevented: w,
33576 isPropagationStopped: w,
33577 isImmediatePropagationStopped: w,
33579 preventDefault: function() {
33580 var e = this.originalEvent;
33581 this.isDefaultPrevented = _, e && !this.isSimulated && e.preventDefault()
33583 stopPropagation: function() {
33584 var e = this.originalEvent;
33585 this.isPropagationStopped = _, e && !this.isSimulated && e.stopPropagation()
33587 stopImmediatePropagation: function() {
33588 var e = this.originalEvent;
33589 this.isImmediatePropagationStopped = _, e && !this.isSimulated && e.stopImmediatePropagation(), this.stopPropagation()
33595 changedTouches: !0,
33621 which: function(e) {
33623 return null == e.which && Ke.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== t && Ze.test(e.type) ? 1 & t ? 1 : 2 & t ? 3 : 4 & t ? 2 : 0 : e.which
33625 }, he.event.addProp), he.each({
33626 mouseenter: "mouseover",
33627 mouseleave: "mouseout",
33628 pointerenter: "pointerover",
33629 pointerleave: "pointerout"
33630 }, function(e, t) {
33631 he.event.special[e] = {
33634 handle: function(e) {
33636 i = e.relatedTarget,
33638 return i && (i === r || he.contains(r, i)) || (e.type = o.origType, n = o.handler.apply(this, arguments), e.type = t), n
33642 on: function(e, t, n, r) {
33643 return C(this, e, t, n, r)
33645 one: function(e, t, n, r) {
33646 return C(this, e, t, n, r, 1)
33648 off: function(e, t, n) {
33650 if (e && e.preventDefault && e.handleObj) return r = e.handleObj, he(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), this;
33651 if ("object" == typeof e) {
33652 for (i in e) this.off(i, t, e[i]);
33655 return !1 !== t && "function" != typeof t || (n = t, t = void 0), !1 === n && (n = w), this.each(function() {
33656 he.event.remove(this, e, n, t)
33660 var Qe = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
33661 Je = /<script|<style|<link/i,
33662 et = /checked\s*(?:[^=]|=\s*.checked.)/i,
33663 tt = /^true\/(.*)/,
33664 nt = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
33666 htmlPrefilter: function(e) {
33667 return e.replace(Qe, "<$1></$2>")
33669 clone: function(e, t, n) {
33670 var r, i, o, a, s = e.cloneNode(!0),
33671 c = he.contains(e.ownerDocument, e);
33672 if (!(fe.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || he.isXMLDoc(e)))
33673 for (a = b(s), r = 0, i = (o = b(e)).length; r < i; r++) S(o[r], a[r]);
33676 for (o = o || b(e), a = a || b(s), r = 0, i = o.length; r < i; r++) M(o[r], a[r]);
33678 return (a = b(s, "script")).length > 0 && y(a, !c && b(e, "script")), s
33680 cleanData: function(e) {
33681 for (var t, n, r, i = he.event.special, o = 0; void 0 !== (n = e[o]); o++)
33683 if (t = n[Ne.expando]) {
33685 for (r in t.events) i[r] ? he.event.remove(n, r) : he.removeEvent(n, r, t.handle);
33686 n[Ne.expando] = void 0
33688 n[Ie.expando] && (n[Ie.expando] = void 0)
33692 detach: function(e) {
33693 return O(this, e, !0)
33695 remove: function(e) {
33698 text: function(e) {
33699 return Oe(this, function(e) {
33700 return void 0 === e ? he.text(this) : this.empty().each(function() {
33701 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e)
33703 }, null, e, arguments.length)
33705 append: function() {
33706 return A(this, arguments, function(e) {
33707 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || x(this, e).appendChild(e)
33710 prepend: function() {
33711 return A(this, arguments, function(e) {
33712 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
33713 var t = x(this, e);
33714 t.insertBefore(e, t.firstChild)
33718 before: function() {
33719 return A(this, arguments, function(e) {
33720 this.parentNode && this.parentNode.insertBefore(e, this)
33723 after: function() {
33724 return A(this, arguments, function(e) {
33725 this.parentNode && this.parentNode.insertBefore(e, this.nextSibling)
33728 empty: function() {
33729 for (var e, t = 0; null != (e = this[t]); t++) 1 === e.nodeType && (he.cleanData(b(e, !1)), e.textContent = "");
33732 clone: function(e, t) {
33733 return e = null != e && e, t = null == t ? e : t, this.map(function() {
33734 return he.clone(this, e, t)
33737 html: function(e) {
33738 return Oe(this, function(e) {
33739 var t = this[0] || {},
33742 if (void 0 === e && 1 === t.nodeType) return t.innerHTML;
33743 if ("string" == typeof e && !Je.test(e) && !We[(Be.exec(e) || ["", ""])[1].toLowerCase()]) {
33744 e = he.htmlPrefilter(e);
33746 for (; n < r; n++) 1 === (t = this[n] || {}).nodeType && (he.cleanData(b(t, !1)), t.innerHTML = e);
33750 t && this.empty().append(e)
33751 }, null, e, arguments.length)
33753 replaceWith: function() {
33755 return A(this, arguments, function(t) {
33756 var n = this.parentNode;
33757 he.inArray(this, e) < 0 && (he.cleanData(b(this)), n && n.replaceChild(t, this))
33761 appendTo: "append",
33762 prependTo: "prepend",
33763 insertBefore: "before",
33764 insertAfter: "after",
33765 replaceAll: "replaceWith"
33766 }, function(e, t) {
33767 he.fn[e] = function(e) {
33768 for (var n, r = [], i = he(e), o = i.length - 1, a = 0; a <= o; a++) n = a === o ? this : this.clone(!0), he(i[a])[t](n), oe.apply(r, n.get());
33769 return this.pushStack(r)
33772 var rt = /^margin/,
33773 it = new RegExp("^(" + He + ")(?!px)[a-z%]+$", "i"),
33775 var n = t.ownerDocument.defaultView;
33776 return n && n.opener || (n = e), n.getComputedStyle(t)
33781 s.style.cssText = "box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%", s.innerHTML = "", Ge.appendChild(a);
33782 var t = e.getComputedStyle(s);
33783 n = "1%" !== t.top, o = "2px" === t.marginLeft, r = "4px" === t.width, s.style.marginRight = "50%", i = "4px" === t.marginRight, Ge.removeChild(a), s = null
33786 var n, r, i, o, a = te.createElement("div"),
33787 s = te.createElement("div");
33788 s.style && (s.style.backgroundClip = "content-box", s.cloneNode(!0).style.backgroundClip = "", fe.clearCloneStyle = "content-box" === s.style.backgroundClip, a.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", a.appendChild(s), he.extend(fe, {
33789 pixelPosition: function() {
33792 boxSizingReliable: function() {
33795 pixelMarginRight: function() {
33798 reliableMarginLeft: function() {
33803 var at = /^(none|table(?!-c[ea]).+)/,
33806 position: "absolute",
33807 visibility: "hidden",
33811 letterSpacing: "0",
33814 ut = ["Webkit", "Moz", "ms"],
33815 dt = te.createElement("div").style;
33819 get: function(e, t) {
33821 var n = D(e, "opacity");
33822 return "" === n ? "1" : n
33828 animationIterationCount: !0,
33845 style: function(e, t, n, r) {
33846 if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
33847 var i, o, a, s = he.camelCase(t),
33850 if (c || (t = R(s)), a = he.cssHooks[t] || he.cssHooks[s], void 0 === n) return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t];
33851 "string" == (o = typeof n) && (i = je.exec(n)) && i[1] && (n = m(e, t, i), o = "number"), null != n && n === n && ("number" === o && (n += i && i[3] || (he.cssNumber[s] ? "" : "px")), fe.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), a && "set" in a && void 0 === (n = a.set(e, n, r)) || (c ? l.setProperty(t, n) : l[t] = n))
33854 css: function(e, t, n, r) {
33855 var i, o, a, s = he.camelCase(t);
33856 return st.test(t) || (t = R(s)), (a = he.cssHooks[t] || he.cssHooks[s]) && "get" in a && (i = a.get(e, !0, n)), void 0 === i && (i = D(e, t, r)), "normal" === i && t in lt && (i = lt[t]), "" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i
33858 }), he.each(["height", "width"], function(e, t) {
33860 get: function(e, n, r) {
33861 if (n) return !at.test(he.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? j(e, t, r) : qe(e, ct, function() {
33865 set: function(e, n, r) {
33866 var i, o = r && ot(e),
33867 a = r && H(e, t, r, "border-box" === he.css(e, "boxSizing", !1, o), o);
33868 return a && (i = je.exec(n)) && "px" !== (i[3] || "px") && (e.style[t] = n, n = he.css(e, t)), P(0, n, a)
33871 }), he.cssHooks.marginLeft = N(fe.reliableMarginLeft, function(e, t) {
33872 if (t) return (parseFloat(D(e, "marginLeft")) || e.getBoundingClientRect().left - qe(e, {
33875 return e.getBoundingClientRect().left
33881 }, function(e, t) {
33882 he.cssHooks[e + t] = {
33883 expand: function(n) {
33884 for (var r = 0, i = {}, o = "string" == typeof n ? n.split(" ") : [n]; r < 4; r++) i[e + Le[r] + t] = o[r] || o[r - 2] || o[0];
33887 }, rt.test(e) || (he.cssHooks[e + t].set = P)
33889 css: function(e, t) {
33890 return Oe(this, function(e, t, n) {
33893 if (Array.isArray(t)) {
33894 for (r = ot(e), i = t.length; a < i; a++) o[t[a]] = he.css(e, t[a], !1, r);
33897 return void 0 !== n ? he.style(e, t, n) : he.css(e, t)
33898 }, e, t, arguments.length > 1)
33900 }), he.Tween = L, L.prototype = {
33902 init: function(e, t, n, r, i, o) {
33903 this.elem = e, this.prop = n, this.easing = i || he.easing._default, this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (he.cssNumber[n] ? "" : "px")
33906 var e = L.propHooks[this.prop];
33907 return e && e.get ? e.get(this) : L.propHooks._default.get(this)
33910 var t, n = L.propHooks[this.prop];
33911 return this.options.duration ? this.pos = t = he.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : L.propHooks._default.set(this), this
33913 }, L.prototype.init.prototype = L.prototype, L.propHooks = {
33917 return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = he.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0
33920 he.fx.step[e.prop] ? he.fx.step[e.prop](e) : 1 !== e.elem.nodeType || null == e.elem.style[he.cssProps[e.prop]] && !he.cssHooks[e.prop] ? e.elem[e.prop] = e.now : he.style(e.elem, e.prop, e.now + e.unit)
33923 }, L.propHooks.scrollTop = L.propHooks.scrollLeft = {
33925 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now)
33928 linear: function(e) {
33931 swing: function(e) {
33932 return .5 - Math.cos(e * Math.PI) / 2
33935 }, he.fx = L.prototype.init, he.fx.step = {};
33936 var ft, ht, pt = /^(?:toggle|show|hide)$/,
33937 mt = /queueHooks$/;
33938 he.Animation = he.extend(z, {
33940 "*": [function(e, t) {
33941 var n = this.createTween(e, t);
33942 return m(n.elem, e, je.exec(t), n), n
33945 tweener: function(e, t) {
33946 he.isFunction(e) ? (t = e, e = ["*"]) : e = e.match(Me);
33947 for (var n, r = 0, i = e.length; r < i; r++) n = e[r], z.tweeners[n] = z.tweeners[n] || [], z.tweeners[n].unshift(t)
33949 prefilters: [function(e, t, n) {
33950 var r, i, o, a, s, c, l, u, d = "width" in t || "height" in t,
33954 m = e.nodeType && Fe(e),
33955 g = Ne.get(e, "fxshow");
33956 n.queue || (null == (a = he._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, s = a.empty.fire, a.empty.fire = function() {
33958 }), a.unqueued++, f.always(function() {
33959 f.always(function() {
33960 a.unqueued--, he.queue(e, "fx").length || a.empty.fire()
33964 if (i = t[r], pt.test(i)) {
33965 if (delete t[r], o = o || "toggle" === i, i === (m ? "hide" : "show")) {
33966 if ("show" !== i || !g || void 0 === g[r]) continue;
33969 h[r] = g && g[r] || he.style(e, r)
33971 if ((c = !he.isEmptyObject(t)) || !he.isEmptyObject(h)) {
33972 d && 1 === e.nodeType && (n.overflow = [p.overflow, p.overflowX, p.overflowY], null == (l = g && g.display) && (l = Ne.get(e, "display")), "none" === (u = he.css(e, "display")) && (l ? u = l : (v([e], !0), l = e.style.display || l, u = he.css(e, "display"), v([e]))), ("inline" === u || "inline-block" === u && null != l) && "none" === he.css(e, "float") && (c || (f.done(function() {
33974 }), null == l && (u = p.display, l = "none" === u ? "" : u)), p.display = "inline-block")), n.overflow && (p.overflow = "hidden", f.always(function() {
33975 p.overflow = n.overflow[0], p.overflowX = n.overflow[1], p.overflowY = n.overflow[2]
33977 for (r in h) c || (g ? "hidden" in g && (m = g.hidden) : g = Ne.access(e, "fxshow", {
33979 }), o && (g.hidden = !m), m && v([e], !0), f.done(function() {
33980 m || v([e]), Ne.remove(e, "fxshow");
33981 for (r in h) he.style(e, r, h[r])
33982 })), c = V(m ? g[r] : 0, r, f), r in g || (g[r] = c.start, m && (c.end = c.start, c.start = 0))
33985 prefilter: function(e, t) {
33986 t ? z.prefilters.unshift(e) : z.prefilters.push(e)
33988 }), he.speed = function(e, t, n) {
33989 var r = e && "object" == typeof e ? he.extend({}, e) : {
33990 complete: n || !n && t || he.isFunction(e) && e,
33992 easing: n && t || t && !he.isFunction(t) && t
33994 return he.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in he.fx.speeds ? r.duration = he.fx.speeds[r.duration] : r.duration = he.fx.speeds._default), null != r.queue && !0 !== r.queue || (r.queue = "fx"), r.old = r.complete, r.complete = function() {
33995 he.isFunction(r.old) && r.old.call(this), r.queue && he.dequeue(this, r.queue)
33998 fadeTo: function(e, t, n, r) {
33999 return this.filter(Fe).css("opacity", 0).show().end().animate({
34003 animate: function(e, t, n, r) {
34004 var i = he.isEmptyObject(e),
34005 o = he.speed(t, n, r),
34007 var t = z(this, he.extend({}, e), o);
34008 (i || Ne.get(this, "finish")) && t.stop(!0)
34010 return a.finish = a, i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a)
34012 stop: function(e, t, n) {
34013 var r = function(e) {
34015 delete e.stop, t(n)
34017 return "string" != typeof e && (n = t, t = e, e = void 0), t && !1 !== e && this.queue(e || "fx", []), this.each(function() {
34019 i = null != e && e + "queueHooks",
34022 if (i) a[i] && a[i].stop && r(a[i]);
34024 for (i in a) a[i] && a[i].stop && mt.test(i) && r(a[i]);
34025 for (i = o.length; i--;) o[i].elem !== this || null != e && o[i].queue !== e || (o[i].anim.stop(n), t = !1, o.splice(i, 1));
34026 !t && n || he.dequeue(this, e)
34029 finish: function(e) {
34030 return !1 !== e && (e = e || "fx"), this.each(function() {
34031 var t, n = Ne.get(this),
34032 r = n[e + "queue"],
34033 i = n[e + "queueHooks"],
34035 a = r ? r.length : 0;
34036 for (n.finish = !0, he.queue(this, e, []), i && i.stop && i.stop.call(this, !0), t = o.length; t--;) o[t].elem === this && o[t].queue === e && (o[t].anim.stop(!0), o.splice(t, 1));
34037 for (t = 0; t < a; t++) r[t] && r[t].finish && r[t].finish.call(this);
34041 }), he.each(["toggle", "show", "hide"], function(e, t) {
34043 he.fn[t] = function(e, r, i) {
34044 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(U(t, !0), e, r, i)
34047 slideDown: U("show"),
34048 slideUp: U("hide"),
34049 slideToggle: U("toggle"),
34059 }, function(e, t) {
34060 he.fn[e] = function(e, n, r) {
34061 return this.animate(t, e, n, r)
34063 }), he.timers = [], he.fx.tick = function() {
34066 for (ft = he.now(); t < n.length; t++)(e = n[t])() || n[t] !== e || n.splice(t--, 1);
34067 n.length || he.fx.stop(), ft = void 0
34068 }, he.fx.timer = function(e) {
34069 he.timers.push(e), he.fx.start()
34070 }, he.fx.interval = 13, he.fx.start = function() {
34071 ht || (ht = !0, F())
34072 }, he.fx.stop = function() {
34074 }, he.fx.speeds = {
34078 }, he.fn.delay = function(t, n) {
34079 return t = he.fx ? he.fx.speeds[t] || t : t, n = n || "fx", this.queue(n, function(n, r) {
34080 var i = e.setTimeout(n, t);
34081 r.stop = function() {
34087 var e = te.createElement("input"),
34088 t = te.createElement("select").appendChild(te.createElement("option"));
34089 e.type = "checkbox", fe.checkOn = "" !== e.value, fe.optSelected = t.selected, (e = te.createElement("input")).value = "t", e.type = "radio", fe.radioValue = "t" === e.value
34091 var gt, vt = he.expr.attrHandle;
34093 attr: function(e, t) {
34094 return Oe(this, he.attr, e, t, arguments.length > 1)
34096 removeAttr: function(e) {
34097 return this.each(function() {
34098 he.removeAttr(this, e)
34102 attr: function(e, t, n) {
34103 var r, i, o = e.nodeType;
34104 if (3 !== o && 8 !== o && 2 !== o) return void 0 === e.getAttribute ? he.prop(e, t, n) : (1 === o && he.isXMLDoc(e) || (i = he.attrHooks[t.toLowerCase()] || (he.expr.match.bool.test(t) ? gt : void 0)), void 0 !== n ? null === n ? void he.removeAttr(e, t) : i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), n) : i && "get" in i && null !== (r = i.get(e, t)) ? r : null == (r = he.find.attr(e, t)) ? void 0 : r)
34108 set: function(e, t) {
34109 if (!fe.radioValue && "radio" === t && i(e, "input")) {
34111 return e.setAttribute("type", t), n && (e.value = n), t
34116 removeAttr: function(e, t) {
34118 i = t && t.match(Me);
34119 if (i && 1 === e.nodeType)
34120 for (; n = i[r++];) e.removeAttribute(n)
34123 set: function(e, t, n) {
34124 return !1 === t ? he.removeAttr(e, n) : e.setAttribute(n, n), n
34126 }, he.each(he.expr.match.bool.source.match(/\w+/g), function(e, t) {
34127 var n = vt[t] || he.find.attr;
34128 vt[t] = function(e, t, r) {
34129 var i, o, a = t.toLowerCase();
34130 return r || (o = vt[a], vt[a] = i, i = null != n(e, t, r) ? a : null, vt[a] = o), i
34133 var bt = /^(?:input|select|textarea|button)$/i,
34134 yt = /^(?:a|area)$/i;
34136 prop: function(e, t) {
34137 return Oe(this, he.prop, e, t, arguments.length > 1)
34139 removeProp: function(e) {
34140 return this.each(function() {
34141 delete this[he.propFix[e] || e]
34145 prop: function(e, t, n) {
34146 var r, i, o = e.nodeType;
34147 if (3 !== o && 8 !== o && 2 !== o) return 1 === o && he.isXMLDoc(e) || (t = he.propFix[t] || t, i = he.propHooks[t]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get" in i && null !== (r = i.get(e, t)) ? r : e[t]
34152 var t = he.find.attr(e, "tabindex");
34153 return t ? parseInt(t, 10) : bt.test(e.nodeName) || yt.test(e.nodeName) && e.href ? 0 : -1
34161 }), fe.optSelected || (he.propHooks.selected = {
34163 var t = e.parentNode;
34164 return t && t.parentNode && t.parentNode.selectedIndex, null
34167 var t = e.parentNode;
34168 t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
34170 }), he.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
34171 he.propFix[this.toLowerCase()] = this
34173 addClass: function(e) {
34174 var t, n, r, i, o, a, s, c = 0;
34175 if (he.isFunction(e)) return this.each(function(t) {
34176 he(this).addClass(e.call(this, t, Y(this)))
34178 if ("string" == typeof e && e)
34179 for (t = e.match(Me) || []; n = this[c++];)
34180 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
34181 for (a = 0; o = t[a++];) r.indexOf(" " + o + " ") < 0 && (r += o + " ");
34182 i !== (s = W(r)) && n.setAttribute("class", s)
34186 removeClass: function(e) {
34187 var t, n, r, i, o, a, s, c = 0;
34188 if (he.isFunction(e)) return this.each(function(t) {
34189 he(this).removeClass(e.call(this, t, Y(this)))
34191 if (!arguments.length) return this.attr("class", "");
34192 if ("string" == typeof e && e)
34193 for (t = e.match(Me) || []; n = this[c++];)
34194 if (i = Y(n), r = 1 === n.nodeType && " " + W(i) + " ") {
34195 for (a = 0; o = t[a++];)
34196 for (; r.indexOf(" " + o + " ") > -1;) r = r.replace(" " + o + " ", " ");
34197 i !== (s = W(r)) && n.setAttribute("class", s)
34201 toggleClass: function(e, t) {
34203 return "boolean" == typeof t && "string" === n ? t ? this.addClass(e) : this.removeClass(e) : he.isFunction(e) ? this.each(function(n) {
34204 he(this).toggleClass(e.call(this, n, Y(this), t), t)
34205 }) : this.each(function() {
34207 if ("string" === n)
34208 for (r = 0, i = he(this), o = e.match(Me) || []; t = o[r++];) i.hasClass(t) ? i.removeClass(t) : i.addClass(t);
34209 else void 0 !== e && "boolean" !== n || ((t = Y(this)) && Ne.set(this, "__className__", t), this.setAttribute && this.setAttribute("class", t || !1 === e ? "" : Ne.get(this, "__className__") || ""))
34212 hasClass: function(e) {
34214 for (t = " " + e + " "; n = this[r++];)
34215 if (1 === n.nodeType && (" " + W(Y(n)) + " ").indexOf(t) > -1) return !0;
34222 var t, n, r, i = this[0]; {
34223 if (arguments.length) return r = he.isFunction(e), this.each(function(n) {
34225 1 === this.nodeType && (null == (i = r ? e.call(this, n, he(this).val()) : e) ? i = "" : "number" == typeof i ? i += "" : Array.isArray(i) && (i = he.map(i, function(e) {
34226 return null == e ? "" : e + ""
34227 })), (t = he.valHooks[this.type] || he.valHooks[this.nodeName.toLowerCase()]) && "set" in t && void 0 !== t.set(this, i, "value") || (this.value = i))
34229 if (i) return (t = he.valHooks[i.type] || he.valHooks[i.nodeName.toLowerCase()]) && "get" in t && void 0 !== (n = t.get(i, "value")) ? n : "string" == typeof(n = i.value) ? n.replace($t, "") : null == n ? "" : n
34236 var t = he.find.attr(e, "value");
34237 return null != t ? t : W(he.text(e))
34242 var t, n, r, o = e.options,
34243 a = e.selectedIndex,
34244 s = "select-one" === e.type,
34246 l = s ? a + 1 : o.length;
34247 for (r = a < 0 ? l : s ? a : 0; r < l; r++)
34248 if (((n = o[r]).selected || r === a) && !n.disabled && (!n.parentNode.disabled || !i(n.parentNode, "optgroup"))) {
34249 if (t = he(n).val(), s) return t;
34254 set: function(e, t) {
34255 for (var n, r, i = e.options, o = he.makeArray(t), a = i.length; a--;)((r = i[a]).selected = he.inArray(he.valHooks.option.get(r), o) > -1) && (n = !0);
34256 return n || (e.selectedIndex = -1), o
34260 }), he.each(["radio", "checkbox"], function() {
34261 he.valHooks[this] = {
34262 set: function(e, t) {
34263 if (Array.isArray(t)) return e.checked = he.inArray(he(e).val(), t) > -1
34265 }, fe.checkOn || (he.valHooks[this].get = function(e) {
34266 return null === e.getAttribute("value") ? "on" : e.value
34269 var _t = /^(?:focusinfocus|focusoutblur)$/;
34270 he.extend(he.event, {
34271 trigger: function(t, n, r, i) {
34272 var o, a, s, c, l, u, d, f = [r || te],
34273 h = le.call(t, "type") ? t.type : t,
34274 p = le.call(t, "namespace") ? t.namespace.split(".") : [];
34275 if (a = s = r = r || te, 3 !== r.nodeType && 8 !== r.nodeType && !_t.test(h + he.event.triggered) && (h.indexOf(".") > -1 && (h = (p = h.split(".")).shift(), p.sort()), l = h.indexOf(":") < 0 && "on" + h, t = t[he.expando] ? t : new he.Event(h, "object" == typeof t && t), t.isTrigger = i ? 2 : 3, t.namespace = p.join("."), t.rnamespace = t.namespace ? new RegExp("(^|\\.)" + p.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = r), n = null == n ? [t] : he.makeArray(n, [t]), d = he.event.special[h] || {}, i || !d.trigger || !1 !== d.trigger.apply(r, n))) {
34276 if (!i && !d.noBubble && !he.isWindow(r)) {
34277 for (c = d.delegateType || h, _t.test(c + h) || (a = a.parentNode); a; a = a.parentNode) f.push(a), s = a;
34278 s === (r.ownerDocument || te) && f.push(s.defaultView || s.parentWindow || e)
34281 (a = f[o++]) && !t.isPropagationStopped();) t.type = o > 1 ? c : d.bindType || h, (u = (Ne.get(a, "events") || {})[t.type] && Ne.get(a, "handle")) && u.apply(a, n), (u = l && a[l]) && u.apply && De(a) && (t.result = u.apply(a, n), !1 === t.result && t.preventDefault());
34282 return t.type = h, i || t.isDefaultPrevented() || d._default && !1 !== d._default.apply(f.pop(), n) || !De(r) || l && he.isFunction(r[h]) && !he.isWindow(r) && ((s = r[l]) && (r[l] = null), he.event.triggered = h, r[h](), he.event.triggered = void 0, s && (r[l] = s)), t.result
34285 simulate: function(e, t, n) {
34286 var r = he.extend(new he.Event, n, {
34290 he.event.trigger(r, null, t)
34293 trigger: function(e, t) {
34294 return this.each(function() {
34295 he.event.trigger(e, t, this)
34298 triggerHandler: function(e, t) {
34300 if (n) return he.event.trigger(e, t, n, !0)
34302 }), he.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(e, t) {
34303 he.fn[t] = function(e, n) {
34304 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
34307 hover: function(e, t) {
34308 return this.mouseenter(e).mouseleave(t || e)
34310 }), fe.focusin = "onfocusin" in e, fe.focusin || he.each({
34313 }, function(e, t) {
34314 var n = function(e) {
34315 he.event.simulate(t, e.target, he.event.fix(e))
34317 he.event.special[t] = {
34318 setup: function() {
34319 var r = this.ownerDocument || this,
34320 i = Ne.access(r, t);
34321 i || r.addEventListener(e, n, !0), Ne.access(r, t, (i || 0) + 1)
34323 teardown: function() {
34324 var r = this.ownerDocument || this,
34325 i = Ne.access(r, t) - 1;
34326 i ? Ne.access(r, t, i) : (r.removeEventListener(e, n, !0), Ne.remove(r, t))
34330 var wt = e.location,
34333 he.parseXML = function(t) {
34335 if (!t || "string" != typeof t) return null;
34337 n = (new e.DOMParser).parseFromString(t, "text/xml")
34341 return n && !n.getElementsByTagName("parsererror").length || he.error("Invalid XML: " + t), n
34345 Tt = /^(?:submit|button|image|reset|file)$/i,
34346 Mt = /^(?:input|select|textarea|keygen)/i;
34347 he.param = function(e, t) {
34349 i = function(e, t) {
34350 var n = he.isFunction(t) ? t() : t;
34351 r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n)
34353 if (Array.isArray(e) || e.jquery && !he.isPlainObject(e)) he.each(e, function() {
34354 i(this.name, this.value)
34357 for (n in e) G(n, e[n], t, i);
34360 serialize: function() {
34361 return he.param(this.serializeArray())
34363 serializeArray: function() {
34364 return this.map(function() {
34365 var e = he.prop(this, "elements");
34366 return e ? he.makeArray(e) : this
34367 }).filter(function() {
34369 return this.name && !he(this).is(":disabled") && Mt.test(this.nodeName) && !Tt.test(e) && (this.checked || !Ve.test(e))
34370 }).map(function(e, t) {
34371 var n = he(this).val();
34372 return null == n ? null : Array.isArray(n) ? he.map(n, function(e) {
34375 value: e.replace(kt, "\r\n")
34379 value: n.replace(kt, "\r\n")
34386 Ot = /([?&])_=[^&]*/,
34387 Dt = /^(.*?):[ \t]*([^\r\n]*)$/gm,
34388 Nt = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
34389 It = /^(?:GET|HEAD)$/,
34393 jt = "*/".concat("*"),
34394 Lt = te.createElement("a");
34395 Lt.href = wt.href, he.extend({
34402 isLocal: Nt.test(wt.protocol),
34406 contentType: "application/x-www-form-urlencoded; charset=UTF-8",
34409 text: "text/plain",
34411 xml: "application/xml, text/xml",
34412 json: "application/json, text/javascript"
34420 xml: "responseXML",
34421 text: "responseText",
34422 json: "responseJSON"
34427 "text json": JSON.parse,
34428 "text xml": he.parseXML
34435 ajaxSetup: function(e, t) {
34436 return t ? X(X(e, he.ajaxSettings), t) : X(he.ajaxSettings, e)
34438 ajaxPrefilter: K(Pt),
34439 ajaxTransport: K(Ht),
34440 ajax: function(t, n) {
34441 function r(t, n, r, s) {
34442 var l, f, h, $, _, w = n;
34443 u || (u = !0, c && e.clearTimeout(c), i = void 0, a = s || "", E.readyState = t > 0 ? 4 : 0, l = t >= 200 && t < 300 || 304 === t, r && ($ = Q(p, E, r)), $ = J(p, $, E, l), l ? (p.ifModified && ((_ = E.getResponseHeader("Last-Modified")) && (he.lastModified[o] = _), (_ = E.getResponseHeader("etag")) && (he.etag[o] = _)), 204 === t || "HEAD" === p.type ? w = "nocontent" : 304 === t ? w = "notmodified" : (w = $.state, f = $.data, l = !(h = $.error))) : (h = w, !t && w || (w = "error", t < 0 && (t = 0))), E.status = t, E.statusText = (n || w) + "", l ? v.resolveWith(m, [f, w, E]) : v.rejectWith(m, [E, w, h]), E.statusCode(y), y = void 0, d && g.trigger(l ? "ajaxSuccess" : "ajaxError", [E, p, l ? f : h]), b.fireWith(m, [E, w]), d && (g.trigger("ajaxComplete", [E, p]), --he.active || he.event.trigger("ajaxStop")))
34445 "object" == typeof t && (n = t, t = void 0), n = n || {};
34446 var i, o, a, s, c, l, u, d, f, h, p = he.ajaxSetup({}, n),
34447 m = p.context || p,
34448 g = p.context && (m.nodeType || m.jquery) ? he(m) : he.event,
34450 b = he.Callbacks("once memory"),
34451 y = p.statusCode || {},
34457 getResponseHeader: function(e) {
34461 for (s = {}; t = Dt.exec(a);) s[t[1].toLowerCase()] = t[2];
34462 t = s[e.toLowerCase()]
34464 return null == t ? null : t
34466 getAllResponseHeaders: function() {
34467 return u ? a : null
34469 setRequestHeader: function(e, t) {
34470 return null == u && (e = _[e.toLowerCase()] = _[e.toLowerCase()] || e, $[e] = t), this
34472 overrideMimeType: function(e) {
34473 return null == u && (p.mimeType = e), this
34475 statusCode: function(e) {
34478 if (u) E.always(e[E.status]);
34480 for (t in e) y[t] = [y[t], e[t]];
34483 abort: function(e) {
34485 return i && i.abort(t), r(0, t), this
34488 if (v.promise(E), p.url = ((t || p.url || wt.href) + "").replace(Rt, wt.protocol + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = (p.dataType || "*").toLowerCase().match(Me) || [""], null == p.crossDomain) {
34489 l = te.createElement("a");
34491 l.href = p.url, l.href = l.href, p.crossDomain = Lt.protocol + "//" + Lt.host != l.protocol + "//" + l.host
34496 if (p.data && p.processData && "string" != typeof p.data && (p.data = he.param(p.data, p.traditional)), Z(Pt, p, n, E), u) return E;
34497 (d = he.event && p.global) && 0 == he.active++ && he.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !It.test(p.type), o = p.url.replace(At, ""), p.hasContent ? p.data && p.processData && 0 === (p.contentType || "").indexOf("application/x-www-form-urlencoded") && (p.data = p.data.replace(St, "+")) : (h = p.url.slice(o.length), p.data && (o += (Ct.test(o) ? "&" : "?") + p.data, delete p.data), !1 === p.cache && (o = o.replace(Ot, "$1"), h = (Ct.test(o) ? "&" : "?") + "_=" + Et++ + h), p.url = o + h), p.ifModified && (he.lastModified[o] && E.setRequestHeader("If-Modified-Since", he.lastModified[o]), he.etag[o] && E.setRequestHeader("If-None-Match", he.etag[o])), (p.data && p.hasContent && !1 !== p.contentType || n.contentType) && E.setRequestHeader("Content-Type", p.contentType), E.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + jt + "; q=0.01" : "") : p.accepts["*"]);
34498 for (f in p.headers) E.setRequestHeader(f, p.headers[f]);
34499 if (p.beforeSend && (!1 === p.beforeSend.call(m, E, p) || u)) return E.abort();
34500 if (w = "abort", b.add(p.complete), E.done(p.success), E.fail(p.error), i = Z(Ht, p, n, E)) {
34501 if (E.readyState = 1, d && g.trigger("ajaxSend", [E, p]), u) return E;
34502 p.async && p.timeout > 0 && (c = e.setTimeout(function() {
34506 u = !1, i.send($, r)
34511 } else r(-1, "No Transport");
34514 getJSON: function(e, t, n) {
34515 return he.get(e, t, n, "json")
34517 getScript: function(e, t) {
34518 return he.get(e, void 0, t, "script")
34520 }), he.each(["get", "post"], function(e, t) {
34521 he[t] = function(e, n, r, i) {
34522 return he.isFunction(n) && (i = i || r, r = n, n = void 0), he.ajax(he.extend({
34528 }, he.isPlainObject(e) && e))
34530 }), he._evalUrl = function(e) {
34534 dataType: "script",
34541 wrapAll: function(e) {
34543 return this[0] && (he.isFunction(e) && (e = e.call(this[0])), t = he(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
34544 for (var e = this; e.firstElementChild;) e = e.firstElementChild;
34546 }).append(this)), this
34548 wrapInner: function(e) {
34549 return he.isFunction(e) ? this.each(function(t) {
34550 he(this).wrapInner(e.call(this, t))
34551 }) : this.each(function() {
34554 n.length ? n.wrapAll(e) : t.append(e)
34557 wrap: function(e) {
34558 var t = he.isFunction(e);
34559 return this.each(function(n) {
34560 he(this).wrapAll(t ? e.call(this, n) : e)
34563 unwrap: function(e) {
34564 return this.parent(e).not("body").each(function() {
34565 he(this).replaceWith(this.childNodes)
34568 }), he.expr.pseudos.hidden = function(e) {
34569 return !he.expr.pseudos.visible(e)
34570 }, he.expr.pseudos.visible = function(e) {
34571 return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length)
34572 }, he.ajaxSettings.xhr = function() {
34574 return new e.XMLHttpRequest
34581 qt = he.ajaxSettings.xhr();
34582 fe.cors = !!qt && "withCredentials" in qt, fe.ajax = qt = !!qt, he.ajaxTransport(function(t) {
34584 if (fe.cors || qt && !t.crossDomain) return {
34585 send: function(i, o) {
34586 var a, s = t.xhr();
34587 if (s.open(t.type, t.url, t.async, t.username, t.password), t.xhrFields)
34588 for (a in t.xhrFields) s[a] = t.xhrFields[a];
34589 t.mimeType && s.overrideMimeType && s.overrideMimeType(t.mimeType), t.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
34590 for (a in i) s.setRequestHeader(a, i[a]);
34592 return function() {
34593 n && (n = r = s.onload = s.onerror = s.onabort = s.onreadystatechange = null, "abort" === e ? s.abort() : "error" === e ? "number" != typeof s.status ? o(0, "error") : o(s.status, s.statusText) : o(Ft[s.status] || s.status, s.statusText, "text" !== (s.responseType || "text") || "string" != typeof s.responseText ? {
34596 text: s.responseText
34597 }, s.getAllResponseHeaders()))
34599 }, s.onload = n(), r = s.onerror = n("error"), void 0 !== s.onabort ? s.onabort = r : s.onreadystatechange = function() {
34600 4 === s.readyState && e.setTimeout(function() {
34605 s.send(t.hasContent && t.data || null)
34610 abort: function() {
34614 }), he.ajaxPrefilter(function(e) {
34615 e.crossDomain && (e.contents.script = !1)
34618 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
34621 script: /\b(?:java|ecma)script\b/
34624 "text script": function(e) {
34625 return he.globalEval(e), e
34628 }), he.ajaxPrefilter("script", function(e) {
34629 void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET")
34630 }), he.ajaxTransport("script", function(e) {
34631 if (e.crossDomain) {
34634 send: function(r, i) {
34635 t = he("<script>").prop({
34636 charset: e.scriptCharset,
34638 }).on("load error", n = function(e) {
34639 t.remove(), n = null, e && i("error" === e.type ? 404 : 200, e.type)
34640 }), te.head.appendChild(t[0])
34642 abort: function() {
34649 Vt = /(=)\?(?=&|$)|\?\?/;
34652 jsonpCallback: function() {
34653 var e = Ut.pop() || he.expando + "_" + Et++;
34654 return this[e] = !0, e
34656 }), he.ajaxPrefilter("json jsonp", function(t, n, r) {
34657 var i, o, a, s = !1 !== t.jsonp && (Vt.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t.contentType || "").indexOf("application/x-www-form-urlencoded") && Vt.test(t.data) && "data");
34658 if (s || "jsonp" === t.dataTypes[0]) return i = t.jsonpCallback = he.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Vt, "$1" + i) : !1 !== t.jsonp && (t.url += (Ct.test(t.url) ? "&" : "?") + t.jsonp + "=" + i), t.converters["script json"] = function() {
34659 return a || he.error(i + " was not called"), a[0]
34660 }, t.dataTypes[0] = "json", o = e[i], e[i] = function() {
34662 }, r.always(function() {
34663 void 0 === o ? he(e).removeProp(i) : e[i] = o, t[i] && (t.jsonpCallback = n.jsonpCallback, Ut.push(i)), a && he.isFunction(o) && o(a[0]), a = o = void 0
34665 }), fe.createHTMLDocument = function() {
34666 var e = te.implementation.createHTMLDocument("").body;
34667 return e.innerHTML = "<form></form><form></form>", 2 === e.childNodes.length
34668 }(), he.parseHTML = function(e, t, n) {
34669 if ("string" != typeof e) return [];
34670 "boolean" == typeof t && (n = t, t = !1);
34672 return t || (fe.createHTMLDocument ? ((r = (t = te.implementation.createHTMLDocument("")).createElement("base")).href = te.location.href, t.head.appendChild(r)) : t = te), i = we.exec(e), o = !n && [], i ? [t.createElement(i[1])] : (i = $([e], t, o), o && o.length && he(o).remove(), he.merge([], i.childNodes))
34673 }, he.fn.load = function(e, t, n) {
34674 var r, i, o, a = this,
34675 s = e.indexOf(" ");
34676 return s > -1 && (r = W(e.slice(s)), e = e.slice(0, s)), he.isFunction(t) ? (n = t, t = void 0) : t && "object" == typeof t && (i = "POST"), a.length > 0 && he.ajax({
34681 }).done(function(e) {
34682 o = arguments, a.html(r ? he("<div>").append(he.parseHTML(e)).find(r) : e)
34683 }).always(n && function(e, t) {
34684 a.each(function() {
34685 n.apply(this, o || [e.responseText, t, e])
34688 }, he.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) {
34689 he.fn[t] = function(e) {
34690 return this.on(t, e)
34692 }), he.expr.pseudos.animated = function(e) {
34693 return he.grep(he.timers, function(t) {
34694 return e === t.elem
34697 setOffset: function(e, t, n) {
34698 var r, i, o, a, s, c, l = he.css(e, "position"),
34701 "static" === l && (e.style.position = "relative"), s = u.offset(), o = he.css(e, "top"), c = he.css(e, "left"), ("absolute" === l || "fixed" === l) && (o + c).indexOf("auto") > -1 ? (a = (r = u.position()).top, i = r.left) : (a = parseFloat(o) || 0, i = parseFloat(c) || 0), he.isFunction(t) && (t = t.call(e, n, he.extend({}, s))), null != t.top && (d.top = t.top - s.top + a), null != t.left && (d.left = t.left - s.left + i), "using" in t ? t.using.call(e, d) : u.css(d)
34704 offset: function(e) {
34705 if (arguments.length) return void 0 === e ? this : this.each(function(t) {
34706 he.offset.setOffset(this, e, t)
34708 var t, n, r, i, o = this[0];
34709 if (o) return o.getClientRects().length ? (r = o.getBoundingClientRect(), t = o.ownerDocument, n = t.documentElement, i = t.defaultView, {
34710 top: r.top + i.pageYOffset - n.clientTop,
34711 left: r.left + i.pageXOffset - n.clientLeft
34717 position: function() {
34719 var e, t, n = this[0],
34724 return "fixed" === he.css(n, "position") ? t = n.getBoundingClientRect() : (e = this.offsetParent(), t = this.offset(), i(e[0], "html") || (r = e.offset()), r = {
34725 top: r.top + he.css(e[0], "borderTopWidth", !0),
34726 left: r.left + he.css(e[0], "borderLeftWidth", !0)
34728 top: t.top - r.top - he.css(n, "marginTop", !0),
34729 left: t.left - r.left - he.css(n, "marginLeft", !0)
34733 offsetParent: function() {
34734 return this.map(function() {
34735 for (var e = this.offsetParent; e && "static" === he.css(e, "position");) e = e.offsetParent;
34740 scrollLeft: "pageXOffset",
34741 scrollTop: "pageYOffset"
34742 }, function(e, t) {
34743 var n = "pageYOffset" === t;
34744 he.fn[e] = function(r) {
34745 return Oe(this, function(e, r, i) {
34747 if (he.isWindow(e) ? o = e : 9 === e.nodeType && (o = e.defaultView), void 0 === i) return o ? o[t] : e[r];
34748 o ? o.scrollTo(n ? o.pageXOffset : i, n ? i : o.pageYOffset) : e[r] = i
34749 }, e, r, arguments.length)
34751 }), he.each(["top", "left"], function(e, t) {
34752 he.cssHooks[t] = N(fe.pixelPosition, function(e, n) {
34753 if (n) return n = D(e, t), it.test(n) ? he(e).position()[t] + "px" : n
34758 }, function(e, t) {
34760 padding: "inner" + e,
34763 }, function(n, r) {
34764 he.fn[r] = function(i, o) {
34765 var a = arguments.length && (n || "boolean" != typeof i),
34766 s = n || (!0 === i || !0 === o ? "margin" : "border");
34767 return Oe(this, function(t, n, i) {
34769 return he.isWindow(t) ? 0 === r.indexOf("outer") ? t["inner" + e] : t.document.documentElement["client" + e] : 9 === t.nodeType ? (o = t.documentElement, Math.max(t.body["scroll" + e], o["scroll" + e], t.body["offset" + e], o["offset" + e], o["client" + e])) : void 0 === i ? he.css(t, n, s) : he.style(t, n, i, s)
34770 }, t, a ? i : void 0, a)
34774 bind: function(e, t, n) {
34775 return this.on(e, null, t, n)
34777 unbind: function(e, t) {
34778 return this.off(e, null, t)
34780 delegate: function(e, t, n, r) {
34781 return this.on(t, e, n, r)
34783 undelegate: function(e, t, n) {
34784 return 1 === arguments.length ? this.off(e, "**") : this.off(t, e || "**", n)
34786 }), he.holdReady = function(e) {
34787 e ? he.readyWait++ : he.ready(!0)
34788 }, he.isArray = Array.isArray, he.parseJSON = JSON.parse, he.nodeName = i, "function" == typeof define && define.amd && define("jquery", [], function() {
34793 return he.noConflict = function(t) {
34794 return e.$ === he && (e.$ = zt), t && e.jQuery === he && (e.jQuery = Bt), he
34795 }, t || (e.jQuery = e.$ = he), he
34798 "function" == typeof define && define.amd ? define(["jquery"], function(t) {
34799 return e(t, window, document)
34800 }) : "object" == typeof exports ? module.exports = e(require("jquery"), window, document) : e(jQuery, window, document)
34801 }(function(e, t, n) {
34803 var r, i, o, a, s, c, l, u, d, f, h, p, m, g, v, b, y, $, _, w, E, C, x, k, T, M, S;
34805 paneClass: "nano-pane",
34806 sliderClass: "nano-slider",
34807 contentClass: "nano-content",
34808 enabledClass: "has-scrollbar",
34809 flashedClass: "flashed",
34810 activeClass: "active",
34811 iOSNativeScrolling: !1,
34812 preventPageScrolling: !1,
34816 sliderMinHeight: 20,
34817 sliderMaxHeight: null,
34818 documentContext: null,
34819 windowContext: null
34820 }, v = "scroll", l = "mousedown", u = "mouseenter", d = "mousemove", h = "mousewheel", f = "mouseup", g = "resize", s = "drag", c = "enter", y = "up", m = "panedown", o = "DOMMouseScroll", a = "down", $ = "wheel", b = "touchmove", r = "Microsoft Internet Explorer" === t.navigator.appName && /msie 7./i.test(t.navigator.appVersion) && t.ActiveXObject, i = null, k = t.requestAnimationFrame, _ = t.cancelAnimationFrame, M = n.createElement("div").style, S = function() {
34822 for (e = n = 0, r = (t = ["t", "webkitT", "MozT", "msT", "OT"]).length; r > n; e = ++n)
34823 if (t[e], t[e] + "ransform" in M) return t[e].substr(0, t[e].length - 1);
34825 }(), T = function(e) {
34826 return !1 !== S && ("" === S ? e : S + e.charAt(0).toUpperCase() + e.substr(1))
34827 }("transform"), C = !1 !== T, E = function() {
34829 return e = n.createElement("div"), t = e.style, t.position = "absolute", t.width = "100px", t.height = "100px", t.overflow = v, t.top = "-9999px", n.body.appendChild(e), r = e.offsetWidth - e.clientWidth, n.body.removeChild(e), r
34830 }, x = function() {
34832 return n = t.navigator.userAgent, !!(e = /(?=.+Mac OS X)(?=.+Firefox)/.test(n)) && ((r = /Firefox\/\d{2}\./.exec(n)) && (r = r[0].replace(/\D+/g, "")), e && +r > 23)
34833 }, p = function() {
34835 this.el = r, this.options = o, i || (i = E()), this.$el = e(this.el), this.doc = e(this.options.documentContext || n), this.win = e(this.options.windowContext || t), this.body = this.doc.find("body"), this.$content = this.$el.children("." + this.options.contentClass), this.$content.attr("tabindex", this.options.tabIndex || 0), this.content = this.$content[0], this.previousPosition = 0, this.options.iOSNativeScrolling && null != this.el.style.WebkitOverflowScrolling ? this.nativeScrolling() : this.generate(), this.createEvents(), this.addEvents(), this.reset()
34837 return p.prototype.preventScrolling = function(e, t) {
34839 if (e.type === o)(t === a && e.originalEvent.detail > 0 || t === y && e.originalEvent.detail < 0) && e.preventDefault();
34840 else if (e.type === h) {
34841 if (!e.originalEvent || !e.originalEvent.wheelDelta) return;
34842 (t === a && e.originalEvent.wheelDelta < 0 || t === y && e.originalEvent.wheelDelta > 0) && e.preventDefault()
34844 }, p.prototype.nativeScrolling = function() {
34845 this.$content.css({
34846 WebkitOverflowScrolling: "touch"
34847 }), this.iOSNativeScrolling = !0, this.isActive = !0
34848 }, p.prototype.updateScrollValues = function() {
34850 e = this.content, this.maxScrollTop = e.scrollHeight - e.clientHeight, this.prevScrollTop = this.contentScrollTop || 0, this.contentScrollTop = e.scrollTop, t = this.contentScrollTop > this.previousPosition ? "down" : this.contentScrollTop < this.previousPosition ? "up" : "same", this.previousPosition = this.contentScrollTop, "same" !== t && this.$el.trigger("update", {
34851 position: this.contentScrollTop,
34852 maximum: this.maxScrollTop,
34854 }), this.iOSNativeScrolling || (this.maxSliderTop = this.paneHeight - this.sliderHeight, this.sliderTop = 0 === this.maxScrollTop ? 0 : this.contentScrollTop * this.maxSliderTop / this.maxScrollTop)
34855 }, p.prototype.setOnScrollStyles = function() {
34857 C ? (e = {}, e[T] = "translate(0, " + this.sliderTop + "px)") : e = {
34858 top: this.sliderTop
34859 }, k ? (_ && this.scrollRAF && _(this.scrollRAF), this.scrollRAF = k(function(t) {
34860 return function() {
34861 return t.scrollRAF = null, t.slider.css(e)
34863 }(this))) : this.slider.css(e)
34864 }, p.prototype.createEvents = function() {
34866 down: function(e) {
34867 return function(t) {
34868 return e.isBeingDragged = !0, e.offsetY = t.pageY - e.slider.offset().top, e.slider.is(t.target) || (e.offsetY = 0), e.pane.addClass(e.options.activeClass), e.doc.bind(d, e.events[s]).bind(f, e.events[y]), e.body.bind(u, e.events[c]), !1
34871 drag: function(e) {
34872 return function(t) {
34873 return e.sliderY = t.pageY - e.$el.offset().top - e.paneTop - (e.offsetY || .5 * e.sliderHeight), e.scroll(), e.contentScrollTop >= e.maxScrollTop && e.prevScrollTop !== e.maxScrollTop ? e.$el.trigger("scrollend") : 0 === e.contentScrollTop && 0 !== e.prevScrollTop && e.$el.trigger("scrolltop"), !1
34877 return function(t) {
34878 return e.isBeingDragged = !1, e.pane.removeClass(e.options.activeClass), e.doc.unbind(d, e.events[s]).unbind(f, e.events[y]), e.body.unbind(u, e.events[c]), !1
34881 resize: function(e) {
34882 return function(t) {
34886 panedown: function(e) {
34887 return function(t) {
34888 return e.sliderY = (t.offsetY || t.originalEvent.layerY) - .5 * e.sliderHeight, e.scroll(), e.events.down(t), !1
34891 scroll: function(e) {
34892 return function(t) {
34893 e.updateScrollValues(), e.isBeingDragged || (e.iOSNativeScrolling || (e.sliderY = e.sliderTop, e.setOnScrollStyles()), null != t && (e.contentScrollTop >= e.maxScrollTop ? (e.options.preventPageScrolling && e.preventScrolling(t, a), e.prevScrollTop !== e.maxScrollTop && e.$el.trigger("scrollend")) : 0 === e.contentScrollTop && (e.options.preventPageScrolling && e.preventScrolling(t, y), 0 !== e.prevScrollTop && e.$el.trigger("scrolltop"))))
34896 wheel: function(e) {
34897 return function(t) {
34899 if (null != t) return (n = t.delta || t.wheelDelta || t.originalEvent && t.originalEvent.wheelDelta || -t.detail || t.originalEvent && -t.originalEvent.detail) && (e.sliderY += -n / 3), e.scroll(), !1
34902 enter: function(e) {
34903 return function(t) {
34905 if (e.isBeingDragged) return 1 !== (t.buttons || t.which) ? (n = e.events)[y].apply(n, arguments) : void 0
34909 }, p.prototype.addEvents = function() {
34911 this.removeEvents(), e = this.events, this.options.disableResize || this.win.bind(g, e[g]), this.iOSNativeScrolling || (this.slider.bind(l, e[a]), this.pane.bind(l, e[m]).bind(h + " " + o, e[$])), this.$content.bind(v + " " + h + " " + o + " " + b, e[v])
34912 }, p.prototype.removeEvents = function() {
34914 e = this.events, this.win.unbind(g, e[g]), this.iOSNativeScrolling || (this.slider.unbind(), this.pane.unbind()), this.$content.unbind(v + " " + h + " " + o + " " + b, e[v])
34915 }, p.prototype.generate = function() {
34916 var e, n, r, o, a, s;
34917 return r = this.options, a = r.paneClass, s = r.sliderClass, r.contentClass, (o = this.$el.children("." + a)).length || o.children("." + s).length || this.$el.append('<div class="' + a + '"><div class="' + s + '" /></div>'), this.pane = this.$el.children("." + a), this.slider = this.pane.find("." + s), 0 === i && x() ? (n = t.getComputedStyle(this.content, null).getPropertyValue("padding-right").replace(/[^0-9.]+/g, ""), e = {
34919 paddingRight: +n + 14
34922 }, this.$el.addClass(r.enabledClass)), null != e && this.$content.css(e), this
34923 }, p.prototype.restore = function() {
34924 this.stopped = !1, this.iOSNativeScrolling || this.pane.show(), this.addEvents()
34925 }, p.prototype.reset = function() {
34926 var e, t, n, o, a, s, c, l, u, d, f, h;
34927 return this.iOSNativeScrolling ? void(this.contentHeight = this.content.scrollHeight) : (this.$el.find("." + this.options.paneClass).length || this.generate().stop(), this.stopped && this.restore(), e = this.content, o = e.style, a = o.overflowY, r && this.$content.css({
34928 height: this.$content.height()
34929 }), t = e.scrollHeight + i, (d = parseInt(this.$el.css("max-height"), 10)) > 0 && (this.$el.height(""), this.$el.height(e.scrollHeight > d ? d : e.scrollHeight)), c = this.pane.outerHeight(!1), u = parseInt(this.pane.css("top"), 10), s = parseInt(this.pane.css("bottom"), 10), l = c + u + s, (h = Math.round(l / t * c)) < this.options.sliderMinHeight ? h = this.options.sliderMinHeight : null != this.options.sliderMaxHeight && h > this.options.sliderMaxHeight && (h = this.options.sliderMaxHeight), a === v && o.overflowX !== v && (h += i), this.maxSliderTop = l - h, this.contentHeight = t, this.paneHeight = c, this.paneOuterHeight = l, this.sliderHeight = h, this.paneTop = u, this.slider.height(h), this.events.scroll(), this.pane.show(), this.isActive = !0, e.scrollHeight === e.clientHeight || this.pane.outerHeight(!0) >= e.scrollHeight && a !== v ? (this.pane.hide(), this.isActive = !1) : this.el.clientHeight === e.scrollHeight && a === v ? this.slider.hide() : this.slider.show(), this.pane.css({
34930 opacity: this.options.alwaysVisible ? 1 : "",
34931 visibility: this.options.alwaysVisible ? "visible" : ""
34932 }), ("static" === (n = this.$content.css("position")) || "relative" === n) && (f = parseInt(this.$content.css("right"), 10)) && this.$content.css({
34936 }, p.prototype.scroll = function() {
34937 return this.isActive ? (this.sliderY = Math.max(0, this.sliderY), this.sliderY = Math.min(this.maxSliderTop, this.sliderY), this.$content.scrollTop(this.maxScrollTop * this.sliderY / this.maxSliderTop), this.iOSNativeScrolling || (this.updateScrollValues(), this.setOnScrollStyles()), this) : void 0
34938 }, p.prototype.scrollBottom = function(e) {
34939 return this.isActive ? (this.$content.scrollTop(this.contentHeight - this.$content.height() - e).trigger(h), this.stop().restore(), this) : void 0
34940 }, p.prototype.scrollTop = function(e) {
34941 return this.isActive ? (this.$content.scrollTop(+e).trigger(h), this.stop().restore(), this) : void 0
34942 }, p.prototype.scrollTo = function(e) {
34943 return this.isActive ? (this.scrollTop(this.$el.find(e).get(0).offsetTop), this) : void 0
34944 }, p.prototype.stop = function() {
34945 return _ && this.scrollRAF && (_(this.scrollRAF), this.scrollRAF = null), this.stopped = !0, this.removeEvents(), this.iOSNativeScrolling || this.pane.hide(), this
34946 }, p.prototype.destroy = function() {
34947 return this.stopped || this.stop(), !this.iOSNativeScrolling && this.pane.length && this.pane.remove(), r && this.$content.height(""), this.$content.removeAttr("tabindex"), this.$el.hasClass(this.options.enabledClass) && (this.$el.removeClass(this.options.enabledClass), this.$content.css({
34950 }, p.prototype.flash = function() {
34951 return !this.iOSNativeScrolling && this.isActive ? (this.reset(), this.pane.addClass(this.options.flashedClass), setTimeout(function(e) {
34952 return function() {
34953 e.pane.removeClass(e.options.flashedClass)
34955 }(this), this.options.flashDelay), this) : void 0
34957 }(), e.fn.nanoScroller = function(t) {
34958 return this.each(function() {
34960 if ((r = this.nanoscroller) || (n = e.extend({}, w, t), this.nanoscroller = r = new p(this, n)), t && "object" == typeof t) {
34961 if (e.extend(r.options, t), null != t.scrollBottom) return r.scrollBottom(t.scrollBottom);
34962 if (null != t.scrollTop) return r.scrollTop(t.scrollTop);
34963 if (t.scrollTo) return r.scrollTo(t.scrollTo);
34964 if ("bottom" === t.scroll) return r.scrollBottom(0);
34965 if ("top" === t.scroll) return r.scrollTop(0);
34966 if (t.scroll && t.scroll instanceof e) return r.scrollTo(t.scroll);
34967 if (t.stop) return r.stop();
34968 if (t.destroy) return r.destroy();
34969 if (t.flash) return r.flash()
34973 }, e.fn.nanoScroller.Constructor = p
34976 "function" == typeof define && define.amd ? define(t) : "object" == typeof exports ? module.exports = t(require, exports, module) : e.Tether = t()
34977 }(this, function(e, t, n) {
34981 if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
34985 var t = getComputedStyle(e).position;
34986 if ("fixed" === t) return e;
34987 for (var n = e; n = n.parentNode;) {
34990 r = getComputedStyle(n)
34992 if (void 0 === r || null === r) return n;
34993 var i = r.overflow,
34996 if (/(auto|scroll)/.test(i + a + o) && ("absolute" !== t || ["relative", "absolute", "fixed"].indexOf(r.position) >= 0)) return n
34998 return document.body
35003 e === document ? (t = document, e = document.documentElement) : t = e.ownerDocument;
35004 var n = t.documentElement,
35006 i = e.getBoundingClientRect();
35007 for (var o in i) r[o] = i[o];
35009 return r.top -= a.top, r.left -= a.left, void 0 === r.width && (r.width = document.body.scrollWidth - r.left - r.right), void 0 === r.height && (r.height = document.body.scrollHeight - r.top - r.bottom), r.top = r.top - n.clientTop, r.left = r.left - n.clientLeft, r.right = t.body.clientWidth - r.width - r.left, r.bottom = t.body.clientHeight - r.height - r.top, r
35013 return e.offsetParent || document.documentElement
35017 var e = document.createElement("div");
35018 e.style.width = "100%", e.style.height = "200px";
35019 var t = document.createElement("div");
35021 position: "absolute",
35024 pointerEvents: "none",
35025 visibility: "hidden",
35029 }), t.appendChild(e), document.body.appendChild(t);
35030 var n = e.offsetWidth;
35031 t.style.overflow = "scroll";
35032 var r = e.offsetWidth;
35033 n === r && (r = t.clientWidth), document.body.removeChild(t);
35042 var e = arguments.length <= 0 || void 0 === arguments[0] ? {} : arguments[0],
35044 return Array.prototype.push.apply(t, arguments), t.slice(1).forEach(function(t) {
35046 for (var n in t)({}).hasOwnProperty.call(t, n) && (e[n] = t[n])
35051 if (void 0 !== e.classList) t.split(" ").forEach(function(t) {
35052 t.trim() && e.classList.remove(t)
35055 var n = new RegExp("(^| )" + t.split(" ").join("|") + "( |$)", "gi"),
35056 r = f(e).replace(n, " ");
35062 if (void 0 !== e.classList) t.split(" ").forEach(function(t) {
35063 t.trim() && e.classList.add(t)
35067 var n = f(e) + " " + t;
35073 if (void 0 !== e.classList) return e.classList.contains(t);
35075 return new RegExp("(^| )" + t + "( |$)", "gi").test(n)
35079 return e.className instanceof SVGAnimatedString ? e.className.baseVal : e.className
35083 e.setAttribute("class", t)
35086 function p(e, t, n) {
35087 n.forEach(function(n) {
35088 -1 === t.indexOf(n) && d(e, n) && l(e, n)
35089 }), t.forEach(function(t) {
35095 if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
35099 var n = arguments.length <= 2 || void 0 === arguments[2] ? 1 : arguments[2];
35100 return e + n >= t && t >= e - n
35104 return "undefined" != typeof performance && void 0 !== performance.now ? performance.now() : +new Date
35111 }, t = arguments.length, n = Array(t), r = 0; t > r; r++) n[r] = arguments[r];
35112 return n.forEach(function(t) {
35115 "string" == typeof n && (n = parseFloat(n, 10)), "string" == typeof r && (r = parseFloat(r, 10)), e.top += n, e.left += r
35120 return "string" == typeof e.left && -1 !== e.left.indexOf("%") && (e.left = parseFloat(e.left, 10) / 100 * t.width), "string" == typeof e.top && -1 !== e.top.indexOf("%") && (e.top = parseFloat(e.top, 10) / 100 * t.height), e
35124 return "scrollParent" === t ? t = e.scrollParent : "window" === t && (t = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset]), t === document && (t = t.documentElement), void 0 !== t.nodeType && function() {
35127 r = getComputedStyle(t);
35128 t = [n.left, n.top, e.width + n.left, e.height + n.top], V.forEach(function(e, n) {
35129 "Top" === (e = e[0].toUpperCase() + e.substr(1)) || "Left" === e ? t[n] += parseFloat(r["border" + e + "Width"]) : t[n] -= parseFloat(r["border" + e + "Width"])
35133 var $ = function() {
35135 for (var n = 0; n < t.length; n++) {
35137 r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
35140 return function(t, n, r) {
35141 return n && e(t.prototype, n), r && e(t, r), t
35145 void 0 === _ && (_ = {
35148 var w = function() {
35150 return function() {
35156 var t = e._tetherZeroElement;
35157 void 0 === t && ((t = e.createElement("div")).setAttribute("data-tether-id", w()), c(t.style, {
35160 position: "absolute"
35161 }), e.body.appendChild(t), e._tetherZeroElement = t);
35162 var n = t.getAttribute("data-tether-id");
35163 if (void 0 === E[n]) {
35165 var r = t.getBoundingClientRect();
35166 for (var i in r) E[n][i] = r[i];
35178 for (var e = void 0; e = x.pop();) e()
35186 value: function(e, t, n) {
35187 var r = !(arguments.length <= 3 || void 0 === arguments[3]) && arguments[3];
35188 void 0 === this.bindings && (this.bindings = {}), void 0 === this.bindings[e] && (this.bindings[e] = []), this.bindings[e].push({
35196 value: function(e, t, n) {
35197 this.on(e, t, n, !0)
35201 value: function(e, t) {
35202 if (void 0 === this.bindings || void 0 === this.bindings[e])
35203 if (void 0 === t) delete this.bindings[e];
35205 for (var n = 0; n < this.bindings[e].length;) this.bindings[e][n].handler === t ? this.bindings[e].splice(n, 1) : ++n
35209 value: function(e) {
35210 if (void 0 !== this.bindings && this.bindings[e])
35211 for (var t = 0; t < this.bindings[e].length;) {
35212 var n = this.bindings[e][t],
35217 void 0 === a && (a = this);
35218 for (var s = arguments.length, c = Array(s > 1 ? s - 1 : 0), l = 1; s > l; l++) c[l - 1] = arguments[l];
35219 r.apply(a, c), o ? this.bindings[e].splice(t, 1) : ++t
35225 getScrollParent: i,
35227 getOffsetParent: a,
35237 getScrollBarSize: s
35239 var S = function() {
35246 for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35251 !r && s.return && s.return()
35258 return function(t, n) {
35259 if (Array.isArray(t)) return t;
35260 if (Symbol.iterator in Object(t)) return e(t, n);
35261 throw new TypeError("Invalid attempt to destructure non-iterable instance")
35266 for (var n = 0; n < t.length; n++) {
35268 r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r)
35271 return function(t, n, r) {
35272 return n && e(t.prototype, n), r && e(t, r), t
35275 if (void 0 === _) throw new Error("You must include the utils.js file before tether.js");
35277 i = A.getScrollParent,
35279 a = A.getOffsetParent,
35283 p = A.updateClasses,
35286 s = A.getScrollBarSize,
35288 for (var e = document.createElement("div"), t = ["transform", "webkitTransform", "OTransform", "MozTransform", "msTransform"], n = 0; n < t.length; ++n) {
35290 if (void 0 !== e.style[r]) return r
35295 D.forEach(function(e) {
35304 return void 0 !== t && t > 16 ? (t = Math.min(t - 16, 250), void(n = setTimeout(r, 250))) : void(void 0 !== e && g() - e < 10 || (void 0 !== n && (clearTimeout(n), n = null), e = g(), N(), t = g() - e))
35306 ["resize", "scroll", "touchmove"].forEach(function(e) {
35307 window.addEventListener(e, r)
35328 H = function(e, t) {
35331 return "auto" === n && (n = I[t.left]), "auto" === r && (r = R[t.top]), {
35339 return void 0 !== P[e.left] && (t = P[e.left]), void 0 !== P[e.top] && (n = P[e.top]), {
35345 var t = e.split(" "),
35356 r(this, e), this.position = this.position.bind(this), D.push(this), this.history = [], this.setOptions(t, !1), _.modules.forEach(function(e) {
35357 void 0 !== e.initialize && e.initialize.call(n)
35358 }), this.position()
35362 value: function() {
35363 var e = arguments.length <= 0 || void 0 === arguments[0] ? "" : arguments[0],
35364 t = this.options.classes;
35365 return void 0 !== t && t[e] ? this.options.classes[e] : this.options.classPrefix ? this.options.classPrefix + "-" + e : e
35369 value: function(e) {
35371 n = arguments.length <= 1 || void 0 === arguments[1] || arguments[1],
35374 targetOffset: "0 0",
35375 targetAttachment: "auto auto",
35376 classPrefix: "tether"
35378 this.options = c(r, e);
35379 var o = this.options,
35382 l = o.targetModifier;
35383 if (this.element = a, this.target = s, this.targetModifier = l, "viewport" === this.target ? (this.target = document.body, this.targetModifier = "visible") : "scroll-handle" === this.target && (this.target = document.body, this.targetModifier = "scroll-handle"), ["element", "target"].forEach(function(e) {
35384 if (void 0 === t[e]) throw new Error("Tether Error: Both element and target must be defined");
35385 void 0 !== t[e].jquery ? t[e] = t[e][0] : "string" == typeof t[e] && (t[e] = document.querySelector(t[e]))
35386 }), u(this.element, this.getClass("element")), !1 !== this.options.addTargetClasses && u(this.target, this.getClass("target")), !this.options.attachment) throw new Error("Tether Error: You must provide an attachment");
35387 this.targetAttachment = F(this.options.targetAttachment), this.attachment = F(this.options.attachment), this.offset = L(this.options.offset), this.targetOffset = L(this.options.targetOffset), void 0 !== this.scrollParent && this.disable(), this.scrollParent = "scroll-handle" === this.targetModifier ? this.target : i(this.target), !1 !== this.options.enabled && this.enable(n)
35390 key: "getTargetBounds",
35391 value: function() {
35392 if (void 0 === this.targetModifier) return o(this.target);
35393 if ("visible" === this.targetModifier) return this.target === document.body ? {
35396 height: innerHeight,
35399 height: (e = o(this.target)).height,
35403 }).height = Math.min(a.height, e.height - (pageYOffset - e.top)), a.height = Math.min(a.height, e.height - (e.top + e.height - (pageYOffset + innerHeight))), a.height = Math.min(innerHeight, a.height), a.height -= 2, a.width = Math.min(a.width, e.width - (pageXOffset - e.left)), a.width = Math.min(a.width, e.width - (e.left + e.width - (pageXOffset + innerWidth))), a.width = Math.min(innerWidth, a.width), a.width -= 2, a.top < pageYOffset && (a.top = pageYOffset), a.left < pageXOffset && (a.left = pageXOffset), a);
35404 if ("scroll-handle" === this.targetModifier) {
35407 t === document.body ? (t = document.documentElement, e = {
35410 height: innerHeight,
35413 var n = getComputedStyle(t),
35415 (t.scrollWidth > t.clientWidth || [n.overflow, n.overflowX].indexOf("scroll") >= 0 || this.target !== document.body) && (r = 15);
35416 var i = e.height - parseFloat(n.borderTopWidth) - parseFloat(n.borderBottomWidth) - r,
35419 height: .975 * i * (i / t.scrollHeight),
35420 left: e.left + e.width - parseFloat(n.borderLeftWidth) - 15
35423 408 > i && this.target === document.body && (s = -11e-5 * Math.pow(i, 2) - .00727 * i + 22.58), this.target !== document.body && (a.height = Math.max(a.height, 24));
35424 var c = this.target.scrollTop / (t.scrollHeight - i);
35425 return a.top = c * (i - a.height - s) + e.top + parseFloat(n.borderTopWidth), this.target === document.body && (a.height = Math.max(a.height, 24)), a
35430 value: function() {
35435 value: function(e, t) {
35436 return void 0 === this._cache && (this._cache = {}), void 0 === this._cache[e] && (this._cache[e] = t.call(this)), this._cache[e]
35440 value: function() {
35441 var e = arguments.length <= 0 || void 0 === arguments[0] || arguments[0];
35442 !1 !== this.options.addTargetClasses && u(this.target, this.getClass("enabled")), u(this.element, this.getClass("enabled")), this.enabled = !0, this.scrollParent !== document && this.scrollParent.addEventListener("scroll", this.position), e && this.position()
35446 value: function() {
35447 l(this.target, this.getClass("enabled")), l(this.element, this.getClass("enabled")), this.enabled = !1, void 0 !== this.scrollParent && this.scrollParent.removeEventListener("scroll", this.position)
35451 value: function() {
35453 this.disable(), D.forEach(function(t, n) {
35454 return t === e ? void D.splice(n, 1) : void 0
35458 key: "updateAttachClasses",
35459 value: function(e, t) {
35461 e = e || this.attachment, t = t || this.targetAttachment;
35462 var r = ["left", "top", "bottom", "right", "middle", "center"];
35463 void 0 !== this._addAttachClasses && this._addAttachClasses.length && this._addAttachClasses.splice(0, this._addAttachClasses.length), void 0 === this._addAttachClasses && (this._addAttachClasses = []);
35464 var i = this._addAttachClasses;
35465 e.top && i.push(this.getClass("element-attached") + "-" + e.top), e.left && i.push(this.getClass("element-attached") + "-" + e.left), t.top && i.push(this.getClass("target-attached") + "-" + t.top), t.left && i.push(this.getClass("target-attached") + "-" + t.left);
35467 r.forEach(function(e) {
35468 o.push(n.getClass("element-attached") + "-" + e), o.push(n.getClass("target-attached") + "-" + e)
35470 void 0 !== n._addAttachClasses && (p(n.element, n._addAttachClasses, o), !1 !== n.options.addTargetClasses && p(n.target, n._addAttachClasses, o), delete n._addAttachClasses)
35475 value: function() {
35477 t = arguments.length <= 0 || void 0 === arguments[0] || arguments[0];
35478 if (this.enabled) {
35480 var n = H(this.targetAttachment, this.attachment);
35481 this.updateAttachClasses(this.attachment, n);
35482 var r = this.cache("element-bounds", function() {
35483 return o(e.element)
35487 if (0 === i && 0 === c && void 0 !== this.lastSize) {
35488 var l = this.lastSize;
35489 i = l.width, c = l.height
35490 } else this.lastSize = {
35494 var u = this.cache("target-bounds", function() {
35495 return e.getTargetBounds()
35498 f = b(j(this.attachment), {
35503 p = b(this.offset, {
35507 m = b(this.targetOffset, d);
35508 f = v(f, p), h = v(h, m);
35509 for (var g = u.left + h.left - f.left, y = u.top + h.top - f.top, $ = 0; $ < _.modules.length; ++$) {
35510 var w = _.modules[$].position.call(this, {
35513 targetAttachment: n,
35519 manualTargetOffset: m,
35521 attachment: this.attachment
35523 if (!1 === w) return !1;
35524 void 0 !== w && "object" == typeof w && (y = w.top, g = w.left)
35532 top: y - pageYOffset,
35533 bottom: pageYOffset - y - c + innerHeight,
35534 left: g - pageXOffset,
35535 right: pageXOffset - g - i + innerWidth
35539 return document.body.scrollWidth > window.innerWidth && (C = this.cache("scrollbar-size", s), E.viewport.bottom -= C.height), document.body.scrollHeight > window.innerHeight && (C = this.cache("scrollbar-size", s), E.viewport.right -= C.width), (-1 === ["", "static"].indexOf(document.body.style.position) || -1 === ["", "static"].indexOf(document.body.parentElement.style.position)) && (E.page.bottom = document.body.scrollHeight - y - c, E.page.right = document.body.scrollWidth - g - i), void 0 !== this.options.optimizations && !1 !== this.options.optimizations.moveElement && void 0 === this.targetModifier && function() {
35540 var t = e.cache("target-offsetparent", function() {
35543 n = e.cache("target-offsetparent-bounds", function() {
35546 r = getComputedStyle(t),
35549 if (["Top", "Left", "Bottom", "Right"].forEach(function(e) {
35550 s[e.toLowerCase()] = parseFloat(r["border" + e + "Width"])
35551 }), n.right = document.body.scrollWidth - n.left - i.width + s.right, n.bottom = document.body.scrollHeight - n.top - i.height + s.bottom, E.page.top >= n.top + s.top && E.page.bottom >= n.bottom && E.page.left >= n.left + s.left && E.page.right >= n.right) {
35552 var c = t.scrollTop,
35555 top: E.page.top - n.top + c - s.top,
35556 left: E.page.left - n.left + l - s.left
35559 }(), this.move(E), this.history.unshift(E), this.history.length > 3 && this.history.pop(), t && T(), !0
35564 value: function(e) {
35566 if (void 0 !== this.element.parentNode) {
35570 for (var i in e[r]) {
35571 for (var o = !1, s = 0; s < this.history.length; ++s) {
35572 var l = this.history[s];
35573 if (void 0 !== l[r] && !m(l[r][i], e[r][i])) {
35578 o || (n[r][i] = !0)
35587 d = function(e, n) {
35588 if (!1 !== (void 0 !== t.options.optimizations ? t.options.optimizations.gpu : null)) {
35591 e.top ? (u.top = 0, r = n.top) : (u.bottom = 0, r = -n.bottom), e.left ? (u.left = 0, i = n.left) : (u.right = 0, i = -n.right), u[O] = "translateX(" + Math.round(i) + "px) translateY(" + Math.round(r) + "px)", "msTransform" !== O && (u[O] += " translateZ(0)")
35592 } else e.top ? u.top = n.top + "px" : u.bottom = n.bottom + "px", e.left ? u.left = n.left + "px" : u.right = n.right + "px"
35595 if ((n.page.top || n.page.bottom) && (n.page.left || n.page.right) ? (u.position = "absolute", d(n.page, e.page)) : (n.viewport.top || n.viewport.bottom) && (n.viewport.left || n.viewport.right) ? (u.position = "fixed", d(n.viewport, e.viewport)) : void 0 !== n.offset && n.offset.top && n.offset.left ? function() {
35596 u.position = "absolute";
35597 var r = t.cache("target-offsetparent", function() {
35600 a(t.element) !== r && k(function() {
35601 t.element.parentNode.removeChild(t.element), r.appendChild(t.element)
35602 }), d(n.offset, e.offset), f = !0
35603 }() : (u.position = "absolute", d({
35607 for (var h = !0, p = this.element.parentNode; p && "BODY" !== p.tagName;) {
35608 if ("static" !== getComputedStyle(p).position) {
35614 h || (this.element.parentNode.removeChild(this.element), document.body.appendChild(this.element))
35620 y = this.element.style[i];
35621 "" !== y && "" !== b && ["top", "left", "bottom", "right"].indexOf(i) >= 0 && (y = parseFloat(y), b = parseFloat(b)), y !== b && (v = !0, g[i] = b)
35623 v && k(function() {
35624 c(t.element.style, g)
35630 q.modules = [], _.position = N;
35639 for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35644 !r && s.return && s.return()
35651 return function(t, n) {
35652 if (Array.isArray(t)) return t;
35653 if (Symbol.iterator in Object(t)) return e(t, n);
35654 throw new TypeError("Invalid attempt to destructure non-iterable instance")
35657 o = (A = _.Utils).getBounds,
35659 p = A.updateClasses,
35661 V = ["left", "top", "right", "bottom"];
35663 position: function(e) {
35667 i = e.targetAttachment;
35668 if (!this.options.constraints) return !0;
35669 var a = this.cache("element-bounds", function() {
35670 return o(t.element)
35674 if (0 === l && 0 === s && void 0 !== this.lastSize) {
35675 var u = this.lastSize;
35676 l = u.width, s = u.height
35678 var d = this.cache("target-bounds", function() {
35679 return t.getTargetBounds()
35683 m = [this.getClass("pinned"), this.getClass("out-of-bounds")];
35684 this.options.constraints.forEach(function(e) {
35685 var t = e.outOfBoundsClass,
35687 t && m.push(t), n && m.push(n)
35688 }), m.forEach(function(e) {
35689 ["left", "top", "right", "bottom"].forEach(function(t) {
35690 m.push(e + "-" + t)
35695 b = c({}, this.attachment);
35696 return this.options.constraints.forEach(function(e) {
35700 void 0 === a && (a = "");
35703 if (a.indexOf(" ") >= 0) {
35704 var p = a.split(" "),
35709 ("target" === d || "both" === d) && (n < $[1] && "top" === v.top && (n += f, v.top = "bottom"), n + s > $[3] && "bottom" === v.top && (n -= f, v.top = "top")), "together" === d && (n < $[1] && "top" === v.top && ("bottom" === b.top ? (n += f, v.top = "bottom", n += s, b.top = "top") : "top" === b.top && (n += f, v.top = "bottom", n -= s, b.top = "bottom")), n + s > $[3] && "bottom" === v.top && ("top" === b.top ? (n -= f, v.top = "top", n -= s, b.top = "bottom") : "bottom" === b.top && (n -= f, v.top = "top", n += s, b.top = "top")), "middle" === v.top && (n + s > $[3] && "top" === b.top ? (n -= s, b.top = "bottom") : n < $[1] && "bottom" === b.top && (n += s, b.top = "top"))), ("target" === u || "both" === u) && (r < $[0] && "left" === v.left && (r += h, v.left = "right"), r + l > $[2] && "right" === v.left && (r -= h, v.left = "left")), "together" === u && (r < $[0] && "left" === v.left ? "right" === b.left ? (r += h, v.left = "right", r += l, b.left = "left") : "left" === b.left && (r += h, v.left = "right", r -= l, b.left = "right") : r + l > $[2] && "right" === v.left ? "left" === b.left ? (r -= h, v.left = "left", r -= l, b.left = "right") : "right" === b.left && (r -= h, v.left = "left", r += l, b.left = "left") : "center" === v.left && (r + l > $[2] && "left" === b.left ? (r -= l, b.left = "right") : r < $[0] && "right" === b.left && (r += l, b.left = "left"))), ("element" === d || "both" === d) && (n < $[1] && "bottom" === b.top && (n += s, b.top = "top"), n + s > $[3] && "top" === b.top && (n -= s, b.top = "bottom")), ("element" === u || "both" === u) && (r < $[0] && "right" === b.left && (r += l, b.left = "left"), r + l > $[2] && "left" === b.left && (r -= l, b.left = "right")), "string" == typeof c ? c = c.split(",").map(function(e) {
35711 }) : !0 === c && (c = ["top", "left", "right", "bottom"]), c = c || [];
35714 n < $[1] && (c.indexOf("top") >= 0 ? (n = $[1], _.push("top")) : w.push("top")), n + s > $[3] && (c.indexOf("bottom") >= 0 ? (n = $[3] - s, _.push("bottom")) : w.push("bottom")), r < $[0] && (c.indexOf("left") >= 0 ? (r = $[0], _.push("left")) : w.push("left")), r + l > $[2] && (c.indexOf("right") >= 0 ? (r = $[2] - l, _.push("right")) : w.push("right")), _.length && function() {
35716 e = void 0 !== t.options.pinnedClass ? t.options.pinnedClass : t.getClass("pinned"), g.push(e), _.forEach(function(t) {
35717 g.push(e + "-" + t)
35719 }(), w.length && function() {
35721 e = void 0 !== t.options.outOfBoundsClass ? t.options.outOfBoundsClass : t.getClass("out-of-bounds"), g.push(e), w.forEach(function(t) {
35722 g.push(e + "-" + t)
35724 }(), (_.indexOf("left") >= 0 || _.indexOf("right") >= 0) && (b.left = v.left = !1), (_.indexOf("top") >= 0 || _.indexOf("bottom") >= 0) && (b.top = v.top = !1), (v.top !== i.top || v.left !== i.left || b.top !== t.attachment.top || b.left !== t.attachment.left) && t.updateAttachClasses(b, v)
35726 !1 !== t.options.addTargetClasses && p(t.target, g, m), p(t.element, g, m)
35733 var o = (A = _.Utils).getBounds,
35734 p = A.updateClasses,
35737 position: function(e) {
35741 i = this.cache("element-bounds", function() {
35742 return o(t.element)
35746 c = this.getTargetBounds(),
35750 n <= c.bottom && l >= c.top && ["left", "right"].forEach(function(e) {
35752 (t === r || t === u) && d.push(e)
35753 }), r <= c.right && u >= c.left && ["top", "bottom"].forEach(function(e) {
35755 (t === n || t === l) && d.push(e)
35759 m = ["left", "top", "right", "bottom"];
35760 return f.push(this.getClass("abutted")), m.forEach(function(e) {
35761 f.push(t.getClass("abutted") + "-" + e)
35762 }), d.length && h.push(this.getClass("abutted")), d.forEach(function(e) {
35763 h.push(t.getClass("abutted") + "-" + e)
35765 !1 !== t.options.addTargetClasses && p(t.target, h, f), p(t.element, h, f)
35776 for (var a, s = e[Symbol.iterator](); !(r = (a = s.next()).done) && (n.push(a.value), !t || n.length !== t); r = !0);
35781 !r && s.return && s.return()
35788 return function(t, n) {
35789 if (Array.isArray(t)) return t;
35790 if (Symbol.iterator in Object(t)) return e(t, n);
35791 throw new TypeError("Invalid attempt to destructure non-iterable instance")
35794 return _.modules.push({
35795 position: function(e) {
35798 if (this.options.shift) {
35799 var r = this.options.shift;
35800 "function" == typeof this.options.shift && (r = this.options.shift.call(this, {
35806 if ("string" == typeof r) {
35807 (r = r.split(" "))[1] = r[1] || r[0];
35809 i = a[0], o = a[1], i = parseFloat(i, 10), o = parseFloat(o, 10)
35810 } else i = r.top, o = r.left;
35811 return t += i, n += o, {
35821 "00a9": ["©", ["copyright"]],
35822 "00ae": ["®", ["registered"]],
35823 "203c": ["‼", ["bangbang"]],
35824 2049: ["⁉", ["interrobang"]],
35825 2122: ["™", ["tm"]],
35826 2139: ["ℹ", ["information_source"]],
35827 2194: ["↔", ["left_right_arrow"]],
35828 2195: ["↕", ["arrow_up_down"]],
35829 2196: ["↖", ["arrow_upper_left"]],
35830 2197: ["↗", ["arrow_upper_right"]],
35831 2198: ["↘", ["arrow_lower_right"]],
35832 2199: ["↙", ["arrow_lower_left"]],
35833 "21a9": ["↩", ["leftwards_arrow_with_hook"]],
35834 "21aa": ["↪", ["arrow_right_hook"]],
35835 "231a": ["⌚", ["watch"]],
35836 "231b": ["⌛", ["hourglass"]],
35837 "23e9": ["⏩", ["fast_forward"]],
35838 "23ea": ["⏪", ["rewind"]],
35839 "23eb": ["⏫", ["arrow_double_up"]],
35840 "23ec": ["⏬", ["arrow_double_down"]],
35841 "23f0": ["⏰", ["alarm_clock"]],
35842 "23f3": ["⏳", ["hourglass_flowing_sand"]],
35843 "24c2": ["Ⓜ", ["m"]],
35844 "25aa": ["▪", ["black_small_square"]],
35845 "25ab": ["▫", ["white_small_square"]],
35846 "25b6": ["▶", ["arrow_forward"]],
35847 "25c0": ["◀", ["arrow_backward"]],
35848 "25fb": ["◻", ["white_medium_square"]],
35849 "25fc": ["◼", ["black_medium_square"]],
35850 "25fd": ["◽", ["white_medium_small_square"]],
35851 "25fe": ["◾", ["black_medium_small_square"]],
35852 2600: ["☀", ["sunny"]],
35853 2601: ["☁", ["cloud"]],
35854 "260e": ["☎", ["phone", "telephone"]],
35855 2611: ["☑", ["ballot_box_with_check"]],
35856 2614: ["☔", ["umbrella"]],
35857 2615: ["☕", ["coffee"]],
35858 "261d": ["☝", ["point_up"]],
35859 "263a": ["☺", ["relaxed"]],
35860 2648: ["♈", ["aries"]],
35861 2649: ["♉", ["taurus"]],
35862 "264a": ["♊", ["gemini"]],
35863 "264b": ["♋", ["cancer"]],
35864 "264c": ["♌", ["leo"]],
35865 "264d": ["♍", ["virgo"]],
35866 "264e": ["♎", ["libra"]],
35867 "264f": ["♏", ["scorpius"]],
35868 2650: ["♐", ["sagittarius"]],
35869 2651: ["♑", ["capricorn"]],
35870 2652: ["♒", ["aquarius"]],
35871 2653: ["♓", ["pisces"]],
35872 2660: ["♠", ["spades"]],
35873 2663: ["♣", ["clubs"]],
35874 2665: ["♥", ["hearts"]],
35875 2666: ["♦", ["diamonds"]],
35876 2668: ["♨", ["hotsprings"]],
35877 "267b": ["♻", ["recycle"]],
35878 "267f": ["♿", ["wheelchair"]],
35879 2693: ["⚓", ["anchor"]],
35880 "26a0": ["⚠", ["warning"]],
35881 "26a1": ["⚡", ["zap"]],
35882 "26aa": ["⚪", ["white_circle"]],
35883 "26ab": ["⚫", ["black_circle"]],
35884 "26bd": ["⚽", ["soccer"]],
35885 "26be": ["⚾", ["baseball"]],
35886 "26c4": ["⛄", ["snowman"]],
35887 "26c5": ["⛅", ["partly_sunny"]],
35888 "26ce": ["⛎", ["ophiuchus"]],
35889 "26d4": ["⛔", ["no_entry"]],
35890 "26ea": ["⛪", ["church"]],
35891 "26f2": ["⛲", ["fountain"]],
35892 "26f3": ["⛳", ["golf"]],
35893 "26f5": ["⛵", ["boat", "sailboat"]],
35894 "26fa": ["⛺", ["tent"]],
35895 "26fd": ["⛽", ["fuelpump"]],
35896 2702: ["✂", ["scissors"]],
35897 2705: ["✅", ["white_check_mark"]],
35898 2708: ["✈", ["airplane"]],
35899 2709: ["✉", ["email", "envelope"]],
35900 "270a": ["✊", ["fist"]],
35901 "270b": ["✋", ["hand", "raised_hand"]],
35902 "270c": ["✌", ["v"]],
35903 "270f": ["✏", ["pencil2"]],
35904 2712: ["✒", ["black_nib"]],
35905 2714: ["✔", ["heavy_check_mark"]],
35906 2716: ["✖", ["heavy_multiplication_x"]],
35907 2728: ["✨", ["sparkles"]],
35908 2733: ["✳", ["eight_spoked_asterisk"]],
35909 2734: ["✴", ["eight_pointed_black_star"]],
35910 2744: ["❄", ["snowflake"]],
35911 2747: ["❇", ["sparkle"]],
35912 "274c": ["❌", ["x"]],
35913 "274e": ["❎", ["negative_squared_cross_mark"]],
35914 2753: ["❓", ["question"]],
35915 2754: ["❔", ["grey_question"]],
35916 2755: ["❕", ["grey_exclamation"]],
35917 2757: ["❗", ["exclamation", "heavy_exclamation_mark"]],
35918 2764: ["❤", ["heart"], "<3"],
35919 2795: ["➕", ["heavy_plus_sign"]],
35920 2796: ["➖", ["heavy_minus_sign"]],
35921 2797: ["➗", ["heavy_division_sign"]],
35922 "27a1": ["➡", ["arrow_right"]],
35923 "27b0": ["➰", ["curly_loop"]],
35924 "27bf": ["➿", ["loop"]],
35925 2934: ["⤴", ["arrow_heading_up"]],
35926 2935: ["⤵", ["arrow_heading_down"]],
35927 "2b05": ["⬅", ["arrow_left"]],
35928 "2b06": ["⬆", ["arrow_up"]],
35929 "2b07": ["⬇", ["arrow_down"]],
35930 "2b1b": ["⬛", ["black_large_square"]],
35931 "2b1c": ["⬜", ["white_large_square"]],
35932 "2b50": ["⭐", ["star"]],
35933 "2b55": ["⭕", ["o"]],
35934 3030: ["〰", ["wavy_dash"]],
35935 "303d": ["〽", ["part_alternation_mark"]],
35936 3297: ["㊗", ["congratulations"]],
35937 3299: ["㊙", ["secret"]],
35938 "1f004": ["🀄", ["mahjong"]],
35939 "1f0cf": ["🃏", ["black_joker"]],
35940 "1f170": ["🅰", ["a"]],
35941 "1f171": ["🅱", ["b"]],
35942 "1f17e": ["🅾", ["o2"]],
35943 "1f17f": ["🅿", ["parking"]],
35944 "1f18e": ["🆎", ["ab"]],
35945 "1f191": ["🆑", ["cl"]],
35946 "1f192": ["🆒", ["cool"]],
35947 "1f193": ["🆓", ["free"]],
35948 "1f194": ["🆔", ["id"]],
35949 "1f195": ["🆕", ["new"]],
35950 "1f196": ["🆖", ["ng"]],
35951 "1f197": ["🆗", ["ok"]],
35952 "1f198": ["🆘", ["sos"]],
35953 "1f199": ["🆙", ["up"]],
35954 "1f19a": ["🆚", ["vs"]],
35955 "1f201": ["🈁", ["koko"]],
35956 "1f202": ["🈂", ["sa"]],
35957 "1f21a": ["🈚", ["u7121"]],
35958 "1f22f": ["🈯", ["u6307"]],
35959 "1f232": ["🈲", ["u7981"]],
35960 "1f233": ["🈳", ["u7a7a"]],
35961 "1f234": ["🈴", ["u5408"]],
35962 "1f235": ["🈵", ["u6e80"]],
35963 "1f236": ["🈶", ["u6709"]],
35964 "1f237": ["🈷", ["u6708"]],
35965 "1f238": ["🈸", ["u7533"]],
35966 "1f239": ["🈹", ["u5272"]],
35967 "1f23a": ["🈺", ["u55b6"]],
35968 "1f250": ["🉐", ["ideograph_advantage"]],
35969 "1f251": ["🉑", ["accept"]],
35970 "1f300": ["🌀", ["cyclone"]],
35971 "1f301": ["🌁", ["foggy"]],
35972 "1f302": ["🌂", ["closed_umbrella"]],
35973 "1f303": ["🌃", ["night_with_stars"]],
35974 "1f304": ["🌄", ["sunrise_over_mountains"]],
35975 "1f305": ["🌅", ["sunrise"]],
35976 "1f306": ["🌆", ["city_sunset"]],
35977 "1f307": ["🌇", ["city_sunrise"]],
35978 "1f308": ["🌈", ["rainbow"]],
35979 "1f309": ["🌉", ["bridge_at_night"]],
35980 "1f30a": ["🌊", ["ocean"]],
35981 "1f30b": ["🌋", ["volcano"]],
35982 "1f30c": ["🌌", ["milky_way"]],
35983 "1f30d": ["🌍", ["earth_africa"]],
35984 "1f30e": ["🌎", ["earth_americas"]],
35985 "1f30f": ["🌏", ["earth_asia"]],
35986 "1f310": ["🌐", ["globe_with_meridians"]],
35987 "1f311": ["🌑", ["new_moon"]],
35988 "1f312": ["🌒", ["waxing_crescent_moon"]],
35989 "1f313": ["🌓", ["first_quarter_moon"]],
35990 "1f314": ["🌔", ["moon", "waxing_gibbous_moon"]],
35991 "1f315": ["🌕", ["full_moon"]],
35992 "1f316": ["🌖", ["waning_gibbous_moon"]],
35993 "1f317": ["🌗", ["last_quarter_moon"]],
35994 "1f318": ["🌘", ["waning_crescent_moon"]],
35995 "1f319": ["🌙", ["crescent_moon"]],
35996 "1f320": ["🌠", ["stars"]],
35997 "1f31a": ["🌚", ["new_moon_with_face"]],
35998 "1f31b": ["🌛", ["first_quarter_moon_with_face"]],
35999 "1f31c": ["🌜", ["last_quarter_moon_with_face"]],
36000 "1f31d": ["🌝", ["full_moon_with_face"]],
36001 "1f31e": ["🌞", ["sun_with_face"]],
36002 "1f31f": ["🌟", ["star2"]],
36003 "1f330": ["🌰", ["chestnut"]],
36004 "1f331": ["🌱", ["seedling"]],
36005 "1f332": ["🌲", ["evergreen_tree"]],
36006 "1f333": ["🌳", ["deciduous_tree"]],
36007 "1f334": ["🌴", ["palm_tree"]],
36008 "1f335": ["🌵", ["cactus"]],
36009 "1f337": ["🌷", ["tulip"]],
36010 "1f338": ["🌸", ["cherry_blossom"]],
36011 "1f339": ["🌹", ["rose"]],
36012 "1f33a": ["🌺", ["hibiscus"]],
36013 "1f33b": ["🌻", ["sunflower"]],
36014 "1f33c": ["🌼", ["blossom"]],
36015 "1f33d": ["🌽", ["corn"]],
36016 "1f33e": ["🌾", ["ear_of_rice"]],
36017 "1f33f": ["🌿", ["herb"]],
36018 "1f340": ["🍀", ["four_leaf_clover"]],
36019 "1f341": ["🍁", ["maple_leaf"]],
36020 "1f342": ["🍂", ["fallen_leaf"]],
36021 "1f343": ["🍃", ["leaves"]],
36022 "1f344": ["🍄", ["mushroom"]],
36023 "1f345": ["🍅", ["tomato"]],
36024 "1f346": ["🍆", ["eggplant"]],
36025 "1f347": ["🍇", ["grapes"]],
36026 "1f348": ["🍈", ["melon"]],
36027 "1f349": ["🍉", ["watermelon"]],
36028 "1f34a": ["🍊", ["tangerine"]],
36029 "1f34b": ["🍋", ["lemon"]],
36030 "1f34c": ["🍌", ["banana"]],
36031 "1f34d": ["🍍", ["pineapple"]],
36032 "1f34e": ["🍎", ["apple"]],
36033 "1f34f": ["🍏", ["green_apple"]],
36034 "1f350": ["🍐", ["pear"]],
36035 "1f351": ["🍑", ["peach"]],
36036 "1f352": ["🍒", ["cherries"]],
36037 "1f353": ["🍓", ["strawberry"]],
36038 "1f354": ["🍔", ["hamburger"]],
36039 "1f355": ["🍕", ["pizza"]],
36040 "1f356": ["🍖", ["meat_on_bone"]],
36041 "1f357": ["🍗", ["poultry_leg"]],
36042 "1f358": ["🍘", ["rice_cracker"]],
36043 "1f359": ["🍙", ["rice_ball"]],
36044 "1f35a": ["🍚", ["rice"]],
36045 "1f35b": ["🍛", ["curry"]],
36046 "1f35c": ["🍜", ["ramen"]],
36047 "1f35d": ["🍝", ["spaghetti"]],
36048 "1f35e": ["🍞", ["bread"]],
36049 "1f35f": ["🍟", ["fries"]],
36050 "1f360": ["🍠", ["sweet_potato"]],
36051 "1f361": ["🍡", ["dango"]],
36052 "1f362": ["🍢", ["oden"]],
36053 "1f363": ["🍣", ["sushi"]],
36054 "1f364": ["🍤", ["fried_shrimp"]],
36055 "1f365": ["🍥", ["fish_cake"]],
36056 "1f366": ["🍦", ["icecream"]],
36057 "1f367": ["🍧", ["shaved_ice"]],
36058 "1f368": ["🍨", ["ice_cream"]],
36059 "1f369": ["🍩", ["doughnut"]],
36060 "1f36a": ["🍪", ["cookie"]],
36061 "1f36b": ["🍫", ["chocolate_bar"]],
36062 "1f36c": ["🍬", ["candy"]],
36063 "1f36d": ["🍭", ["lollipop"]],
36064 "1f36e": ["🍮", ["custard"]],
36065 "1f36f": ["🍯", ["honey_pot"]],
36066 "1f370": ["🍰", ["cake"]],
36067 "1f371": ["🍱", ["bento"]],
36068 "1f372": ["🍲", ["stew"]],
36069 "1f373": ["🍳", ["egg"]],
36070 "1f374": ["🍴", ["fork_and_knife"]],
36071 "1f375": ["🍵", ["tea"]],
36072 "1f376": ["🍶", ["sake"]],
36073 "1f377": ["🍷", ["wine_glass"]],
36074 "1f378": ["🍸", ["cocktail"]],
36075 "1f379": ["🍹", ["tropical_drink"]],
36076 "1f37a": ["🍺", ["beer"]],
36077 "1f37b": ["🍻", ["beers"]],
36078 "1f37c": ["🍼", ["baby_bottle"]],
36079 "1f380": ["🎀", ["ribbon"]],
36080 "1f381": ["🎁", ["gift"]],
36081 "1f382": ["🎂", ["birthday"]],
36082 "1f383": ["🎃", ["jack_o_lantern"]],
36083 "1f384": ["🎄", ["christmas_tree"]],
36084 "1f385": ["🎅", ["santa"]],
36085 "1f386": ["🎆", ["fireworks"]],
36086 "1f387": ["🎇", ["sparkler"]],
36087 "1f388": ["🎈", ["balloon"]],
36088 "1f389": ["🎉", ["tada"]],
36089 "1f38a": ["🎊", ["confetti_ball"]],
36090 "1f38b": ["🎋", ["tanabata_tree"]],
36091 "1f38c": ["🎌", ["crossed_flags"]],
36092 "1f38d": ["🎍", ["bamboo"]],
36093 "1f38e": ["🎎", ["dolls"]],
36094 "1f38f": ["🎏", ["flags"]],
36095 "1f390": ["🎐", ["wind_chime"]],
36096 "1f391": ["🎑", ["rice_scene"]],
36097 "1f392": ["🎒", ["school_satchel"]],
36098 "1f393": ["🎓", ["mortar_board"]],
36099 "1f3a0": ["🎠", ["carousel_horse"]],
36100 "1f3a1": ["🎡", ["ferris_wheel"]],
36101 "1f3a2": ["🎢", ["roller_coaster"]],
36102 "1f3a3": ["🎣", ["fishing_pole_and_fish"]],
36103 "1f3a4": ["🎤", ["microphone"]],
36104 "1f3a5": ["🎥", ["movie_camera"]],
36105 "1f3a6": ["🎦", ["cinema"]],
36106 "1f3a7": ["🎧", ["headphones"]],
36107 "1f3a8": ["🎨", ["art"]],
36108 "1f3a9": ["🎩", ["tophat"]],
36109 "1f3aa": ["🎪", ["circus_tent"]],
36110 "1f3ab": ["🎫", ["ticket"]],
36111 "1f3ac": ["🎬", ["clapper"]],
36112 "1f3ad": ["🎭", ["performing_arts"]],
36113 "1f3ae": ["🎮", ["video_game"]],
36114 "1f3af": ["🎯", ["dart"]],
36115 "1f3b0": ["🎰", ["slot_machine"]],
36116 "1f3b1": ["🎱", ["8ball"]],
36117 "1f3b2": ["🎲", ["game_die"]],
36118 "1f3b3": ["🎳", ["bowling"]],
36119 "1f3b4": ["🎴", ["flower_playing_cards"]],
36120 "1f3b5": ["🎵", ["musical_note"]],
36121 "1f3b6": ["🎶", ["notes"]],
36122 "1f3b7": ["🎷", ["saxophone"]],
36123 "1f3b8": ["🎸", ["guitar"]],
36124 "1f3b9": ["🎹", ["musical_keyboard"]],
36125 "1f3ba": ["🎺", ["trumpet"]],
36126 "1f3bb": ["🎻", ["violin"]],
36127 "1f3bc": ["🎼", ["musical_score"]],
36128 "1f3bd": ["🎽", ["running_shirt_with_sash"]],
36129 "1f3be": ["🎾", ["tennis"]],
36130 "1f3bf": ["🎿", ["ski"]],
36131 "1f3c0": ["🏀", ["basketball"]],
36132 "1f3c1": ["🏁", ["checkered_flag"]],
36133 "1f3c2": ["🏂", ["snowboarder"]],
36134 "1f3c3": ["🏃", ["runner", "running"]],
36135 "1f3c4": ["🏄", ["surfer"]],
36136 "1f3c6": ["🏆", ["trophy"]],
36137 "1f3c7": ["🏇", ["horse_racing"]],
36138 "1f3c8": ["🏈", ["football"]],
36139 "1f3c9": ["🏉", ["rugby_football"]],
36140 "1f3ca": ["🏊", ["swimmer"]],
36141 "1f3e0": ["🏠", ["house"]],
36142 "1f3e1": ["🏡", ["house_with_garden"]],
36143 "1f3e2": ["🏢", ["office"]],
36144 "1f3e3": ["🏣", ["post_office"]],
36145 "1f3e4": ["🏤", ["european_post_office"]],
36146 "1f3e5": ["🏥", ["hospital"]],
36147 "1f3e6": ["🏦", ["bank"]],
36148 "1f3e7": ["🏧", ["atm"]],
36149 "1f3e8": ["🏨", ["hotel"]],
36150 "1f3e9": ["🏩", ["love_hotel"]],
36151 "1f3ea": ["🏪", ["convenience_store"]],
36152 "1f3eb": ["🏫", ["school"]],
36153 "1f3ec": ["🏬", ["department_store"]],
36154 "1f3ed": ["🏭", ["factory"]],
36155 "1f3ee": ["🏮", ["izakaya_lantern", "lantern"]],
36156 "1f3ef": ["🏯", ["japanese_castle"]],
36157 "1f3f0": ["🏰", ["european_castle"]],
36158 "1f400": ["🐀", ["rat"]],
36159 "1f401": ["🐁", ["mouse2"]],
36160 "1f402": ["🐂", ["ox"]],
36161 "1f403": ["🐃", ["water_buffalo"]],
36162 "1f404": ["🐄", ["cow2"]],
36163 "1f405": ["🐅", ["tiger2"]],
36164 "1f406": ["🐆", ["leopard"]],
36165 "1f407": ["🐇", ["rabbit2"]],
36166 "1f408": ["🐈", ["cat2"]],
36167 "1f409": ["🐉", ["dragon"]],
36168 "1f40a": ["🐊", ["crocodile"]],
36169 "1f40b": ["🐋", ["whale2"]],
36170 "1f40c": ["🐌", ["snail"]],
36171 "1f40d": ["🐍", ["snake"]],
36172 "1f40e": ["🐎", ["racehorse"]],
36173 "1f40f": ["🐏", ["ram"]],
36174 "1f410": ["🐐", ["goat"]],
36175 "1f411": ["🐑", ["sheep"]],
36176 "1f412": ["🐒", ["monkey"]],
36177 "1f413": ["🐓", ["rooster"]],
36178 "1f414": ["🐔", ["chicken"]],
36179 "1f415": ["🐕", ["dog2"]],
36180 "1f416": ["🐖", ["pig2"]],
36181 "1f417": ["🐗", ["boar"]],
36182 "1f418": ["🐘", ["elephant"]],
36183 "1f419": ["🐙", ["octopus"]],
36184 "1f41a": ["🐚", ["shell"]],
36185 "1f41b": ["🐛", ["bug"]],
36186 "1f41c": ["🐜", ["ant"]],
36187 "1f41d": ["🐝", ["bee", "honeybee"]],
36188 "1f41e": ["🐞", ["beetle"]],
36189 "1f41f": ["🐟", ["fish"]],
36190 "1f420": ["🐠", ["tropical_fish"]],
36191 "1f421": ["🐡", ["blowfish"]],
36192 "1f422": ["🐢", ["turtle"]],
36193 "1f423": ["🐣", ["hatching_chick"]],
36194 "1f424": ["🐤", ["baby_chick"]],
36195 "1f425": ["🐥", ["hatched_chick"]],
36196 "1f426": ["🐦", ["bird"]],
36197 "1f427": ["🐧", ["penguin"]],
36198 "1f428": ["🐨", ["koala"]],
36199 "1f429": ["🐩", ["poodle"]],
36200 "1f42a": ["🐪", ["dromedary_camel"]],
36201 "1f42b": ["🐫", ["camel"]],
36202 "1f42c": ["🐬", ["dolphin", "flipper"]],
36203 "1f42d": ["🐭", ["mouse"]],
36204 "1f42e": ["🐮", ["cow"]],
36205 "1f42f": ["🐯", ["tiger"]],
36206 "1f430": ["🐰", ["rabbit"]],
36207 "1f431": ["🐱", ["cat"]],
36208 "1f432": ["🐲", ["dragon_face"]],
36209 "1f433": ["🐳", ["whale"]],
36210 "1f434": ["🐴", ["horse"]],
36211 "1f435": ["🐵", ["monkey_face"]],
36212 "1f436": ["🐶", ["dog"]],
36213 "1f437": ["🐷", ["pig"]],
36214 "1f438": ["🐸", ["frog"]],
36215 "1f439": ["🐹", ["hamster"]],
36216 "1f43a": ["🐺", ["wolf"]],
36217 "1f43b": ["🐻", ["bear"]],
36218 "1f43c": ["🐼", ["panda_face"]],
36219 "1f43d": ["🐽", ["pig_nose"]],
36220 "1f43e": ["🐾", ["feet", "paw_prints"]],
36221 "1f440": ["👀", ["eyes"]],
36222 "1f442": ["👂", ["ear"]],
36223 "1f443": ["👃", ["nose"]],
36224 "1f444": ["👄", ["lips"]],
36225 "1f445": ["👅", ["tongue"]],
36226 "1f446": ["👆", ["point_up_2"]],
36227 "1f447": ["👇", ["point_down"]],
36228 "1f448": ["👈", ["point_left"]],
36229 "1f449": ["👉", ["point_right"]],
36230 "1f44a": ["👊", ["facepunch", "punch"]],
36231 "1f44b": ["👋", ["wave"]],
36232 "1f44c": ["👌", ["ok_hand"]],
36233 "1f44d": ["👍", ["+1", "thumbsup"]],
36234 "1f44e": ["👎", ["-1", "thumbsdown"]],
36235 "1f44f": ["👏", ["clap"]],
36236 "1f450": ["👐", ["open_hands"]],
36237 "1f451": ["👑", ["crown"]],
36238 "1f452": ["👒", ["womans_hat"]],
36239 "1f453": ["👓", ["eyeglasses"]],
36240 "1f454": ["👔", ["necktie"]],
36241 "1f455": ["👕", ["shirt", "tshirt"]],
36242 "1f456": ["👖", ["jeans"]],
36243 "1f457": ["👗", ["dress"]],
36244 "1f458": ["👘", ["kimono"]],
36245 "1f459": ["👙", ["bikini"]],
36246 "1f45a": ["👚", ["womans_clothes"]],
36247 "1f45b": ["👛", ["purse"]],
36248 "1f45c": ["👜", ["handbag"]],
36249 "1f45d": ["👝", ["pouch"]],
36250 "1f45e": ["👞", ["mans_shoe", "shoe"]],
36251 "1f45f": ["👟", ["athletic_shoe"]],
36252 "1f460": ["👠", ["high_heel"]],
36253 "1f461": ["👡", ["sandal"]],
36254 "1f462": ["👢", ["boot"]],
36255 "1f463": ["👣", ["footprints"]],
36256 "1f464": ["👤", ["bust_in_silhouette"]],
36257 "1f465": ["👥", ["busts_in_silhouette"]],
36258 "1f466": ["👦", ["boy"]],
36259 "1f467": ["👧", ["girl"]],
36260 "1f468": ["👨", ["man"]],
36261 "1f469": ["👩", ["woman"]],
36262 "1f46a": ["👪", ["family"]],
36263 "1f46b": ["👫", ["couple"]],
36264 "1f46c": ["👬", ["two_men_holding_hands"]],
36265 "1f46d": ["👭", ["two_women_holding_hands"]],
36266 "1f46e": ["👮", ["cop"]],
36267 "1f46f": ["👯", ["dancers"]],
36268 "1f470": ["👰", ["bride_with_veil"]],
36269 "1f471": ["👱", ["person_with_blond_hair"]],
36270 "1f472": ["👲", ["man_with_gua_pi_mao"]],
36271 "1f473": ["👳", ["man_with_turban"]],
36272 "1f474": ["👴", ["older_man"]],
36273 "1f475": ["👵", ["older_woman"]],
36274 "1f476": ["👶", ["baby"]],
36275 "1f477": ["👷", ["construction_worker"]],
36276 "1f478": ["👸", ["princess"]],
36277 "1f479": ["👹", ["japanese_ogre"]],
36278 "1f47a": ["👺", ["japanese_goblin"]],
36279 "1f47b": ["👻", ["ghost"]],
36280 "1f47c": ["👼", ["angel"]],
36281 "1f47d": ["👽", ["alien"]],
36282 "1f47e": ["👾", ["space_invader"]],
36283 "1f47f": ["👿", ["imp"]],
36284 "1f480": ["💀", ["skull"]],
36285 "1f481": ["💁", ["information_desk_person"]],
36286 "1f482": ["💂", ["guardsman"]],
36287 "1f483": ["💃", ["dancer"]],
36288 "1f484": ["💄", ["lipstick"]],
36289 "1f485": ["💅", ["nail_care"]],
36290 "1f486": ["💆", ["massage"]],
36291 "1f487": ["💇", ["haircut"]],
36292 "1f488": ["💈", ["barber"]],
36293 "1f489": ["💉", ["syringe"]],
36294 "1f48a": ["💊", ["pill"]],
36295 "1f48b": ["💋", ["kiss"]],
36296 "1f48c": ["💌", ["love_letter"]],
36297 "1f48d": ["💍", ["ring"]],
36298 "1f48e": ["💎", ["gem"]],
36299 "1f48f": ["💏", ["couplekiss"]],
36300 "1f490": ["💐", ["bouquet"]],
36301 "1f491": ["💑", ["couple_with_heart"]],
36302 "1f492": ["💒", ["wedding"]],
36303 "1f493": ["💓", ["heartbeat"]],
36304 "1f494": ["💔", ["broken_heart"], "</3"],
36305 "1f495": ["💕", ["two_hearts"]],
36306 "1f496": ["💖", ["sparkling_heart"]],
36307 "1f497": ["💗", ["heartpulse"]],
36308 "1f498": ["💘", ["cupid"]],
36309 "1f499": ["💙", ["blue_heart"], "<3"],
36310 "1f49a": ["💚", ["green_heart"], "<3"],
36311 "1f49b": ["💛", ["yellow_heart"], "<3"],
36312 "1f49c": ["💜", ["purple_heart"], "<3"],
36313 "1f49d": ["💝", ["gift_heart"]],
36314 "1f49e": ["💞", ["revolving_hearts"]],
36315 "1f49f": ["💟", ["heart_decoration"]],
36316 "1f4a0": ["💠", ["diamond_shape_with_a_dot_inside"]],
36317 "1f4a1": ["💡", ["bulb"]],
36318 "1f4a2": ["💢", ["anger"]],
36319 "1f4a3": ["💣", ["bomb"]],
36320 "1f4a4": ["💤", ["zzz"]],
36321 "1f4a5": ["💥", ["boom", "collision"]],
36322 "1f4a6": ["💦", ["sweat_drops"]],
36323 "1f4a7": ["💧", ["droplet"]],
36324 "1f4a8": ["💨", ["dash"]],
36325 "1f4a9": ["💩", ["hankey", "poop", "shit"]],
36326 "1f4aa": ["💪", ["muscle"]],
36327 "1f4ab": ["💫", ["dizzy"]],
36328 "1f4ac": ["💬", ["speech_balloon"]],
36329 "1f4ad": ["💭", ["thought_balloon"]],
36330 "1f4ae": ["💮", ["white_flower"]],
36331 "1f4af": ["💯", ["100"]],
36332 "1f4b0": ["💰", ["moneybag"]],
36333 "1f4b1": ["💱", ["currency_exchange"]],
36334 "1f4b2": ["💲", ["heavy_dollar_sign"]],
36335 "1f4b3": ["💳", ["credit_card"]],
36336 "1f4b4": ["💴", ["yen"]],
36337 "1f4b5": ["💵", ["dollar"]],
36338 "1f4b6": ["💶", ["euro"]],
36339 "1f4b7": ["💷", ["pound"]],
36340 "1f4b8": ["💸", ["money_with_wings"]],
36341 "1f4b9": ["💹", ["chart"]],
36342 "1f4ba": ["💺", ["seat"]],
36343 "1f4bb": ["💻", ["computer"]],
36344 "1f4bc": ["💼", ["briefcase"]],
36345 "1f4bd": ["💽", ["minidisc"]],
36346 "1f4be": ["💾", ["floppy_disk"]],
36347 "1f4bf": ["💿", ["cd"]],
36348 "1f4c0": ["📀", ["dvd"]],
36349 "1f4c1": ["📁", ["file_folder"]],
36350 "1f4c2": ["📂", ["open_file_folder"]],
36351 "1f4c3": ["📃", ["page_with_curl"]],
36352 "1f4c4": ["📄", ["page_facing_up"]],
36353 "1f4c5": ["📅", ["date"]],
36354 "1f4c6": ["📆", ["calendar"]],
36355 "1f4c7": ["📇", ["card_index"]],
36356 "1f4c8": ["📈", ["chart_with_upwards_trend"]],
36357 "1f4c9": ["📉", ["chart_with_downwards_trend"]],
36358 "1f4ca": ["📊", ["bar_chart"]],
36359 "1f4cb": ["📋", ["clipboard"]],
36360 "1f4cc": ["📌", ["pushpin"]],
36361 "1f4cd": ["📍", ["round_pushpin"]],
36362 "1f4ce": ["📎", ["paperclip"]],
36363 "1f4cf": ["📏", ["straight_ruler"]],
36364 "1f4d0": ["📐", ["triangular_ruler"]],
36365 "1f4d1": ["📑", ["bookmark_tabs"]],
36366 "1f4d2": ["📒", ["ledger"]],
36367 "1f4d3": ["📓", ["notebook"]],
36368 "1f4d4": ["📔", ["notebook_with_decorative_cover"]],
36369 "1f4d5": ["📕", ["closed_book"]],
36370 "1f4d6": ["📖", ["book", "open_book"]],
36371 "1f4d7": ["📗", ["green_book"]],
36372 "1f4d8": ["📘", ["blue_book"]],
36373 "1f4d9": ["📙", ["orange_book"]],
36374 "1f4da": ["📚", ["books"]],
36375 "1f4db": ["📛", ["name_badge"]],
36376 "1f4dc": ["📜", ["scroll"]],
36377 "1f4dd": ["📝", ["memo", "pencil"]],
36378 "1f4de": ["📞", ["telephone_receiver"]],
36379 "1f4df": ["📟", ["pager"]],
36380 "1f4e0": ["📠", ["fax"]],
36381 "1f4e1": ["📡", ["satellite"]],
36382 "1f4e2": ["📢", ["loudspeaker"]],
36383 "1f4e3": ["📣", ["mega"]],
36384 "1f4e4": ["📤", ["outbox_tray"]],
36385 "1f4e5": ["📥", ["inbox_tray"]],
36386 "1f4e6": ["📦", ["package"]],
36387 "1f4e7": ["📧", ["e-mail"]],
36388 "1f4e8": ["📨", ["incoming_envelope"]],
36389 "1f4e9": ["📩", ["envelope_with_arrow"]],
36390 "1f4ea": ["📪", ["mailbox_closed"]],
36391 "1f4eb": ["📫", ["mailbox"]],
36392 "1f4ec": ["📬", ["mailbox_with_mail"]],
36393 "1f4ed": ["📭", ["mailbox_with_no_mail"]],
36394 "1f4ee": ["📮", ["postbox"]],
36395 "1f4ef": ["📯", ["postal_horn"]],
36396 "1f4f0": ["📰", ["newspaper"]],
36397 "1f4f1": ["📱", ["iphone"]],
36398 "1f4f2": ["📲", ["calling"]],
36399 "1f4f3": ["📳", ["vibration_mode"]],
36400 "1f4f4": ["📴", ["mobile_phone_off"]],
36401 "1f4f5": ["📵", ["no_mobile_phones"]],
36402 "1f4f6": ["📶", ["signal_strength"]],
36403 "1f4f7": ["📷", ["camera"]],
36404 "1f4f9": ["📹", ["video_camera"]],
36405 "1f4fa": ["📺", ["tv"]],
36406 "1f4fb": ["📻", ["radio"]],
36407 "1f4fc": ["📼", ["vhs"]],
36408 "1f500": ["🔀", ["twisted_rightwards_arrows"]],
36409 "1f501": ["🔁", ["repeat"]],
36410 "1f502": ["🔂", ["repeat_one"]],
36411 "1f503": ["🔃", ["arrows_clockwise"]],
36412 "1f504": ["🔄", ["arrows_counterclockwise"]],
36413 "1f505": ["🔅", ["low_brightness"]],
36414 "1f506": ["🔆", ["high_brightness"]],
36415 "1f507": ["🔇", ["mute"]],
36416 "1f508": ["🔉", ["speaker"]],
36417 "1f509": ["🔉", ["sound"]],
36418 "1f50a": ["🔊", ["loud_sound"]],
36419 "1f50b": ["🔋", ["battery"]],
36420 "1f50c": ["🔌", ["electric_plug"]],
36421 "1f50d": ["🔍", ["mag"]],
36422 "1f50e": ["🔎", ["mag_right"]],
36423 "1f50f": ["🔏", ["lock_with_ink_pen"]],
36424 "1f510": ["🔐", ["closed_lock_with_key"]],
36425 "1f511": ["🔑", ["key"]],
36426 "1f512": ["🔒", ["lock"]],
36427 "1f513": ["🔓", ["unlock"]],
36428 "1f514": ["🔔", ["bell"]],
36429 "1f515": ["🔕", ["no_bell"]],
36430 "1f516": ["🔖", ["bookmark"]],
36431 "1f517": ["🔗", ["link"]],
36432 "1f518": ["🔘", ["radio_button"]],
36433 "1f519": ["🔙", ["back"]],
36434 "1f51a": ["🔚", ["end"]],
36435 "1f51b": ["🔛", ["on"]],
36436 "1f51c": ["🔜", ["soon"]],
36437 "1f51d": ["🔝", ["top"]],
36438 "1f51e": ["🔞", ["underage"]],
36439 "1f51f": ["🔟", ["keycap_ten"]],
36440 "1f520": ["🔠", ["capital_abcd"]],
36441 "1f521": ["🔡", ["abcd"]],
36442 "1f522": ["🔢", ["1234"]],
36443 "1f523": ["🔣", ["symbols"]],
36444 "1f524": ["🔤", ["abc"]],
36445 "1f525": ["🔥", ["fire"]],
36446 "1f526": ["🔦", ["flashlight"]],
36447 "1f527": ["🔧", ["wrench"]],
36448 "1f528": ["🔨", ["hammer"]],
36449 "1f529": ["🔩", ["nut_and_bolt"]],
36450 "1f52a": ["🔪", ["hocho"]],
36451 "1f52b": ["🔫", ["gun"]],
36452 "1f52c": ["🔬", ["microscope"]],
36453 "1f52d": ["🔭", ["telescope"]],
36454 "1f52e": ["🔮", ["crystal_ball"]],
36455 "1f52f": ["🔯", ["six_pointed_star"]],
36456 "1f530": ["🔰", ["beginner"]],
36457 "1f531": ["🔱", ["trident"]],
36458 "1f532": ["🔲", ["black_square_button"]],
36459 "1f533": ["🔳", ["white_square_button"]],
36460 "1f534": ["🔴", ["red_circle"]],
36461 "1f535": ["🔵", ["large_blue_circle"]],
36462 "1f536": ["🔶", ["large_orange_diamond"]],
36463 "1f537": ["🔷", ["large_blue_diamond"]],
36464 "1f538": ["🔸", ["small_orange_diamond"]],
36465 "1f539": ["🔹", ["small_blue_diamond"]],
36466 "1f53a": ["🔺", ["small_red_triangle"]],
36467 "1f53b": ["🔻", ["small_red_triangle_down"]],
36468 "1f53c": ["🔼", ["arrow_up_small"]],
36469 "1f53d": ["🔽", ["arrow_down_small"]],
36470 "1f550": ["🕐", ["clock1"]],
36471 "1f551": ["🕑", ["clock2"]],
36472 "1f552": ["🕒", ["clock3"]],
36473 "1f553": ["🕓", ["clock4"]],
36474 "1f554": ["🕔", ["clock5"]],
36475 "1f555": ["🕕", ["clock6"]],
36476 "1f556": ["🕖", ["clock7"]],
36477 "1f557": ["🕗", ["clock8"]],
36478 "1f558": ["🕘", ["clock9"]],
36479 "1f559": ["🕙", ["clock10"]],
36480 "1f55a": ["🕚", ["clock11"]],
36481 "1f55b": ["🕛", ["clock12"]],
36482 "1f55c": ["🕜", ["clock130"]],
36483 "1f55d": ["🕝", ["clock230"]],
36484 "1f55e": ["🕞", ["clock330"]],
36485 "1f55f": ["🕟", ["clock430"]],
36486 "1f560": ["🕠", ["clock530"]],
36487 "1f561": ["🕡", ["clock630"]],
36488 "1f562": ["🕢", ["clock730"]],
36489 "1f563": ["🕣", ["clock830"]],
36490 "1f564": ["🕤", ["clock930"]],
36491 "1f565": ["🕥", ["clock1030"]],
36492 "1f566": ["🕦", ["clock1130"]],
36493 "1f567": ["🕧", ["clock1230"]],
36494 "1f5fb": ["🗻", ["mount_fuji"]],
36495 "1f5fc": ["🗼", ["tokyo_tower"]],
36496 "1f5fd": ["🗽", ["statue_of_liberty"]],
36497 "1f5fe": ["🗾", ["japan"]],
36498 "1f5ff": ["🗿", ["moyai"]],
36499 "1f600": ["😀", ["grinning"]],
36500 "1f601": ["😁", ["grin"]],
36501 "1f602": ["😂", ["joy"]],
36502 "1f603": ["😃", ["smiley"], ":)"],
36503 "1f604": ["😄", ["smile"], ":)"],
36504 "1f605": ["😅", ["sweat_smile"]],
36505 "1f606": ["😆", ["satisfied"]],
36506 "1f607": ["😇", ["innocent"]],
36507 "1f608": ["😈", ["smiling_imp"]],
36508 "1f609": ["😉", ["wink"], ";)"],
36509 "1f60a": ["😊", ["blush"]],
36510 "1f60b": ["😋", ["yum"]],
36511 "1f60c": ["😌", ["relieved"]],
36512 "1f60d": ["😍", ["heart_eyes"]],
36513 "1f60e": ["😎", ["sunglasses"]],
36514 "1f60f": ["😏", ["smirk"]],
36515 "1f610": ["😐", ["neutral_face"]],
36516 "1f611": ["😑", ["expressionless"]],
36517 "1f612": ["😒", ["unamused"]],
36518 "1f613": ["😓", ["sweat"]],
36519 "1f614": ["😔", ["pensive"]],
36520 "1f615": ["😕", ["confused"]],
36521 "1f616": ["😖", ["confounded"]],
36522 "1f617": ["😗", ["kissing"]],
36523 "1f618": ["😘", ["kissing_heart"]],
36524 "1f619": ["😙", ["kissing_smiling_eyes"]],
36525 "1f61a": ["😚", ["kissing_closed_eyes"]],
36526 "1f61b": ["😛", ["stuck_out_tongue"]],
36527 "1f61c": ["😜", ["stuck_out_tongue_winking_eye"], ";p"],
36528 "1f61d": ["😝", ["stuck_out_tongue_closed_eyes"]],
36529 "1f61e": ["😞", ["disappointed"], ":("],
36530 "1f61f": ["😟", ["worried"]],
36531 "1f620": ["😠", ["angry"]],
36532 "1f621": ["😡", ["rage"]],
36533 "1f622": ["😢", ["cry"], ":'("],
36534 "1f623": ["😣", ["persevere"]],
36535 "1f624": ["😤", ["triumph"]],
36536 "1f625": ["😥", ["disappointed_relieved"]],
36537 "1f626": ["😦", ["frowning"]],
36538 "1f627": ["😧", ["anguished"]],
36539 "1f628": ["😨", ["fearful"]],
36540 "1f629": ["😩", ["weary"]],
36541 "1f62a": ["😪", ["sleepy"]],
36542 "1f62b": ["😫", ["tired_face"]],
36543 "1f62c": ["😬", ["grimacing"]],
36544 "1f62d": ["😭", ["sob"], ":'("],
36545 "1f62e": ["😮", ["open_mouth"]],
36546 "1f62f": ["😯", ["hushed"]],
36547 "1f630": ["😰", ["cold_sweat"]],
36548 "1f631": ["😱", ["scream"]],
36549 "1f632": ["😲", ["astonished"]],
36550 "1f633": ["😳", ["flushed"]],
36551 "1f634": ["😴", ["sleeping"]],
36552 "1f635": ["😵", ["dizzy_face"]],
36553 "1f636": ["😶", ["no_mouth"]],
36554 "1f637": ["😷", ["mask"]],
36555 "1f638": ["😸", ["smile_cat"]],
36556 "1f639": ["😹", ["joy_cat"]],
36557 "1f63a": ["😺", ["smiley_cat"]],
36558 "1f63b": ["😻", ["heart_eyes_cat"]],
36559 "1f63c": ["😼", ["smirk_cat"]],
36560 "1f63d": ["😽", ["kissing_cat"]],
36561 "1f63e": ["😾", ["pouting_cat"]],
36562 "1f63f": ["😿", ["crying_cat_face"]],
36563 "1f640": ["🙀", ["scream_cat"]],
36564 "1f645": ["🙅", ["no_good"]],
36565 "1f646": ["🙆", ["ok_woman"]],
36566 "1f647": ["🙇", ["bow"]],
36567 "1f648": ["🙈", ["see_no_evil"]],
36568 "1f649": ["🙉", ["hear_no_evil"]],
36569 "1f64a": ["🙊", ["speak_no_evil"]],
36570 "1f64b": ["🙋", ["raising_hand"]],
36571 "1f64c": ["🙌", ["raised_hands"]],
36572 "1f64d": ["🙍", ["person_frowning"]],
36573 "1f64e": ["🙎", ["person_with_pouting_face"]],
36574 "1f64f": ["🙏", ["pray"]],
36575 "1f680": ["🚀", ["rocket"]],
36576 "1f681": ["🚁", ["helicopter"]],
36577 "1f682": ["🚂", ["steam_locomotive"]],
36578 "1f683": ["🚃", ["railway_car"]],
36579 "1f68b": ["🚋", ["train"]],
36580 "1f684": ["🚄", ["bullettrain_side"]],
36581 "1f685": ["🚅", ["bullettrain_front"]],
36582 "1f686": ["🚆", ["train2"]],
36583 "1f687": ["🚇", ["metro"]],
36584 "1f688": ["🚈", ["light_rail"]],
36585 "1f689": ["🚉", ["station"]],
36586 "1f68a": ["🚊", ["tram"]],
36587 "1f68c": ["🚌", ["bus"]],
36588 "1f68d": ["🚍", ["oncoming_bus"]],
36589 "1f68e": ["🚎", ["trolleybus"]],
36590 "1f68f": ["🚏", ["busstop"]],
36591 "1f690": ["🚐", ["minibus"]],
36592 "1f691": ["🚑", ["ambulance"]],
36593 "1f692": ["🚒", ["fire_engine"]],
36594 "1f693": ["🚓", ["police_car"]],
36595 "1f694": ["🚔", ["oncoming_police_car"]],
36596 "1f695": ["🚕", ["taxi"]],
36597 "1f696": ["🚖", ["oncoming_taxi"]],
36598 "1f697": ["🚗", ["car", "red_car"]],
36599 "1f698": ["🚘", ["oncoming_automobile"]],
36600 "1f699": ["🚙", ["blue_car"]],
36601 "1f69a": ["🚚", ["truck"]],
36602 "1f69b": ["🚛", ["articulated_lorry"]],
36603 "1f69c": ["🚜", ["tractor"]],
36604 "1f69d": ["🚝", ["monorail"]],
36605 "1f69e": ["🚞", ["mountain_railway"]],
36606 "1f69f": ["🚟", ["suspension_railway"]],
36607 "1f6a0": ["🚠", ["mountain_cableway"]],
36608 "1f6a1": ["🚡", ["aerial_tramway"]],
36609 "1f6a2": ["🚢", ["ship"]],
36610 "1f6a3": ["🚣", ["rowboat"]],
36611 "1f6a4": ["🚤", ["speedboat"]],
36612 "1f6a5": ["🚥", ["traffic_light"]],
36613 "1f6a6": ["🚦", ["vertical_traffic_light"]],
36614 "1f6a7": ["🚧", ["construction"]],
36615 "1f6a8": ["🚨", ["rotating_light"]],
36616 "1f6a9": ["🚩", ["triangular_flag_on_post"]],
36617 "1f6aa": ["🚪", ["door"]],
36618 "1f6ab": ["🚫", ["no_entry_sign"]],
36619 "1f6ac": ["🚬", ["smoking"]],
36620 "1f6ad": ["🚭", ["no_smoking"]],
36621 "1f6ae": ["🚮", ["put_litter_in_its_place"]],
36622 "1f6af": ["🚯", ["do_not_litter"]],
36623 "1f6b0": ["🚰", ["potable_water"]],
36624 "1f6b1": ["🚱", ["non-potable_water"]],
36625 "1f6b2": ["🚲", ["bike"]],
36626 "1f6b3": ["🚳", ["no_bicycles"]],
36627 "1f6b4": ["🚴", ["bicyclist"]],
36628 "1f6b5": ["🚵", ["mountain_bicyclist"]],
36629 "1f6b6": ["🚶", ["walking"]],
36630 "1f6b7": ["🚷", ["no_pedestrians"]],
36631 "1f6b8": ["🚸", ["children_crossing"]],
36632 "1f6b9": ["🚹", ["mens"]],
36633 "1f6ba": ["🚺", ["womens"]],
36634 "1f6bb": ["🚻", ["restroom"]],
36635 "1f6bc": ["🚼", ["baby_symbol"]],
36636 "1f6bd": ["🚽", ["toilet"]],
36637 "1f6be": ["🚾", ["wc"]],
36638 "1f6bf": ["🚿", ["shower"]],
36639 "1f6c0": ["🛀", ["bath"]],
36640 "1f6c1": ["🛁", ["bathtub"]],
36641 "1f6c2": ["🛂", ["passport_control"]],
36642 "1f6c3": ["🛃", ["customs"]],
36643 "1f6c4": ["🛄", ["baggage_claim"]],
36644 "1f6c5": ["🛅", ["left_luggage"]],
36645 "0023": ["#⃣", ["hash"]],
36646 "0030": ["0⃣", ["zero"]],
36647 "0031": ["1⃣", ["one"]],
36648 "0032": ["2⃣", ["two"]],
36649 "0033": ["3⃣", ["three"]],
36650 "0034": ["4⃣", ["four"]],
36651 "0035": ["5⃣", ["five"]],
36652 "0036": ["6⃣", ["six"]],
36653 "0037": ["7⃣", ["seven"]],
36654 "0038": ["8⃣", ["eight"]],
36655 "0039": ["9⃣", ["nine"]],
36656 "1f1e8-1f1f3": ["🇨🇳", ["cn"]],
36657 "1f1e9-1f1ea": ["🇩🇪", ["de"]],
36658 "1f1ea-1f1f8": ["🇪🇸", ["es"]],
36659 "1f1eb-1f1f7": ["🇫🇷", ["fr"]],
36660 "1f1ec-1f1e7": ["🇬🇧", ["gb", "uk"]],
36661 "1f1ee-1f1f9": ["🇮🇹", ["it"]],
36662 "1f1ef-1f1f5": ["🇯🇵", ["jp"]],
36663 "1f1f0-1f1f7": ["🇰🇷", ["kr"]],
36664 "1f1f7-1f1fa": ["🇷🇺", ["ru"]],
36665 "1f1fa-1f1f8": ["🇺🇸", ["us"]]
36666 }, Config.EmojiCategories = [
36667 ["1f604", "1f603", "1f600", "1f60a", "263a", "1f609", "1f60d", "1f618", "1f61a", "1f617", "1f619", "1f61c", "1f61d", "1f61b", "1f633", "1f601", "1f614", "1f60c", "1f612", "1f61e", "1f623", "1f622", "1f602", "1f62d", "1f62a", "1f625", "1f630", "1f605", "1f613", "1f629", "1f62b", "1f628", "1f631", "1f620", "1f621", "1f624", "1f616", "1f606", "1f60b", "1f637", "1f60e", "1f634", "1f635", "1f632", "1f61f", "1f626", "1f627", "1f608", "1f47f", "1f62e", "1f62c", "1f610", "1f615", "1f62f", "1f636", "1f607", "1f60f", "1f611", "1f472", "1f473", "1f46e", "1f477", "1f482", "1f476", "1f466", "1f467", "1f468", "1f469", "1f474", "1f475", "1f471", "1f47c", "1f478", "1f63a", "1f638", "1f63b", "1f63d", "1f63c", "1f640", "1f63f", "1f639", "1f63e", "1f479", "1f47a", "1f648", "1f649", "1f64a", "1f480", "1f47d", "1f4a9", "1f525", "2728", "1f31f", "1f4ab", "1f4a5", "1f4a2", "1f4a6", "1f4a7", "1f4a4", "1f4a8", "1f442", "1f440", "1f443", "1f445", "1f444", "1f44d", "1f44e", "1f44c", "1f44a", "270a", "270c", "1f44b", "270b", "1f450", "1f446", "1f447", "1f449", "1f448", "1f64c", "1f64f", "261d", "1f44f", "1f4aa", "1f6b6", "1f3c3", "1f483", "1f46b", "1f46a", "1f46c", "1f46d", "1f48f", "1f491", "1f46f", "1f646", "1f645", "1f481", "1f64b", "1f486", "1f487", "1f485", "1f470", "1f64e", "1f64d", "1f647", "1f3a9", "1f451", "1f452", "1f45f", "1f45e", "1f461", "1f460", "1f462", "1f455", "1f454", "1f45a", "1f457", "1f3bd", "1f456", "1f458", "1f459", "1f4bc", "1f45c", "1f45d", "1f45b", "1f453", "1f380", "1f302", "1f484", "1f49b", "1f499", "1f49c", "1f49a", "2764", "1f494", "1f497", "1f493", "1f495", "1f496", "1f49e", "1f498", "1f48c", "1f48b", "1f48d", "1f48e", "1f464", "1f465", "1f4ac", "1f463", "1f4ad"],
36668 ["1f436", "1f43a", "1f431", "1f42d", "1f439", "1f430", "1f438", "1f42f", "1f428", "1f43b", "1f437", "1f43d", "1f42e", "1f417", "1f435", "1f412", "1f434", "1f411", "1f418", "1f43c", "1f427", "1f426", "1f424", "1f425", "1f423", "1f414", "1f40d", "1f422", "1f41b", "1f41d", "1f41c", "1f41e", "1f40c", "1f419", "1f41a", "1f420", "1f41f", "1f42c", "1f433", "1f40b", "1f404", "1f40f", "1f400", "1f403", "1f405", "1f407", "1f409", "1f40e", "1f410", "1f413", "1f415", "1f416", "1f401", "1f402", "1f432", "1f421", "1f40a", "1f42b", "1f42a", "1f406", "1f408", "1f429", "1f43e", "1f490", "1f338", "1f337", "1f340", "1f339", "1f33b", "1f33a", "1f341", "1f343", "1f342", "1f33f", "1f33e", "1f344", "1f335", "1f334", "1f332", "1f333", "1f330", "1f331", "1f33c", "1f310", "1f31e", "1f31d", "1f31a", "1f311", "1f312", "1f313", "1f314", "1f315", "1f316", "1f317", "1f318", "1f31c", "1f31b", "1f319", "1f30d", "1f30e", "1f30f", "1f30b", "1f30c", "1f320", "2b50", "2600", "26c5", "2601", "26a1", "2614", "2744", "26c4", "1f300", "1f301", "1f308", "1f30a"],
36669 ["1f38d", "1f49d", "1f38e", "1f392", "1f393", "1f38f", "1f386", "1f387", "1f390", "1f391", "1f383", "1f47b", "1f385", "1f384", "1f381", "1f38b", "1f389", "1f38a", "1f388", "1f38c", "1f52e", "1f3a5", "1f4f7", "1f4f9", "1f4fc", "1f4bf", "1f4c0", "1f4bd", "1f4be", "1f4bb", "1f4f1", "260e", "1f4de", "1f4df", "1f4e0", "1f4e1", "1f4fa", "1f4fb", "1f50a", "1f509", "1f508", "1f507", "1f514", "1f515", "1f4e3", "1f4e2", "23f3", "231b", "23f0", "231a", "1f513", "1f512", "1f50f", "1f510", "1f511", "1f50e", "1f4a1", "1f526", "1f506", "1f505", "1f50c", "1f50b", "1f50d", "1f6c0", "1f6c1", "1f6bf", "1f6bd", "1f527", "1f529", "1f528", "1f6aa", "1f6ac", "1f4a3", "1f52b", "1f52a", "1f48a", "1f489", "1f4b0", "1f4b4", "1f4b5", "1f4b7", "1f4b6", "1f4b3", "1f4b8", "1f4f2", "1f4e7", "1f4e5", "1f4e4", "2709", "1f4e9", "1f4e8", "1f4ef", "1f4eb", "1f4ea", "1f4ec", "1f4ed", "1f4ee", "1f4e6", "1f4dd", "1f4c4", "1f4c3", "1f4d1", "1f4ca", "1f4c8", "1f4c9", "1f4dc", "1f4cb", "1f4c5", "1f4c6", "1f4c7", "1f4c1", "1f4c2", "2702", "1f4cc", "1f4ce", "2712", "270f", "1f4cf", "1f4d0", "1f4d5", "1f4d7", "1f4d8", "1f4d9", "1f4d3", "1f4d4", "1f4d2", "1f4da", "1f4d6", "1f516", "1f4db", "1f52c", "1f52d", "1f4f0", "1f3a8", "1f3ac", "1f3a4", "1f3a7", "1f3bc", "1f3b5", "1f3b6", "1f3b9", "1f3bb", "1f3ba", "1f3b7", "1f3b8", "1f47e", "1f3ae", "1f0cf", "1f3b4", "1f004", "1f3b2", "1f3af", "1f3c8", "1f3c0", "26bd", "26be", "1f3be", "1f3b1", "1f3c9", "1f3b3", "26f3", "1f6b5", "1f6b4", "1f3c1", "1f3c7", "1f3c6", "1f3bf", "1f3c2", "1f3ca", "1f3c4", "1f3a3", "2615", "1f375", "1f376", "1f37c", "1f37a", "1f37b", "1f378", "1f379", "1f377", "1f374", "1f355", "1f354", "1f35f", "1f357", "1f356", "1f35d", "1f35b", "1f364", "1f371", "1f363", "1f365", "1f359", "1f358", "1f35a", "1f35c", "1f372", "1f362", "1f361", "1f373", "1f35e", "1f369", "1f36e", "1f366", "1f368", "1f367", "1f382", "1f370", "1f36a", "1f36b", "1f36c", "1f36d", "1f36f", "1f34e", "1f34f", "1f34a", "1f34b", "1f352", "1f347", "1f349", "1f353", "1f351", "1f348", "1f34c", "1f350", "1f34d", "1f360", "1f346", "1f345", "1f33d"],
36670 ["1f3e0", "1f3e1", "1f3eb", "1f3e2", "1f3e3", "1f3e5", "1f3e6", "1f3ea", "1f3e9", "1f3e8", "1f492", "26ea", "1f3ec", "1f3e4", "1f307", "1f306", "1f3ef", "1f3f0", "26fa", "1f3ed", "1f5fc", "1f5fe", "1f5fb", "1f304", "1f305", "1f303", "1f5fd", "1f309", "1f3a0", "1f3a1", "26f2", "1f3a2", "1f6a2", "26f5", "1f6a4", "1f6a3", "2693", "1f680", "2708", "1f4ba", "1f681", "1f682", "1f68a", "1f689", "1f69e", "1f686", "1f684", "1f685", "1f688", "1f687", "1f69d", "1f683", "1f68b", "1f68e", "1f68c", "1f68d", "1f699", "1f698", "1f697", "1f695", "1f696", "1f69b", "1f69a", "1f6a8", "1f693", "1f694", "1f692", "1f691", "1f690", "1f6b2", "1f6a1", "1f69f", "1f6a0", "1f69c", "1f488", "1f68f", "1f3ab", "1f6a6", "1f6a5", "26a0", "1f6a7", "1f530", "26fd", "1f3ee", "1f3b0", "2668", "1f5ff", "1f3aa", "1f3ad", "1f4cd", "1f6a9", "1f1ef-1f1f5", "1f1f0-1f1f7", "1f1e9-1f1ea", "1f1e8-1f1f3", "1f1fa-1f1f8", "1f1eb-1f1f7", "1f1ea-1f1f8", "1f1ee-1f1f9", "1f1f7-1f1fa", "1f1ec-1f1e7"],
36671 ["0031", "0032", "0033", "0034", "0035", "0036", "0037", "0038", "0039", "0030", "1f51f", "1f522", "0023", "1f523", "2b06", "2b07", "2b05", "27a1", "1f520", "1f521", "1f524", "2197", "2196", "2198", "2199", "2194", "2195", "1f504", "25c0", "25b6", "1f53c", "1f53d", "21a9", "21aa", "2139", "23ea", "23e9", "23eb", "23ec", "2935", "2934", "1f197", "1f500", "1f501", "1f502", "1f195", "1f199", "1f192", "1f193", "1f196", "1f4f6", "1f3a6", "1f201", "1f22f", "1f233", "1f235", "1f234", "1f232", "1f250", "1f239", "1f23a", "1f236", "1f21a", "1f6bb", "1f6b9", "1f6ba", "1f6bc", "1f6be", "1f6b0", "1f6ae", "1f17f", "267f", "1f6ad", "1f237", "1f238", "1f202", "24c2", "1f6c2", "1f6c4", "1f6c5", "1f6c3", "1f251", "3299", "3297", "1f191", "1f198", "1f194", "1f6ab", "1f51e", "1f4f5", "1f6af", "1f6b1", "1f6b3", "1f6b7", "1f6b8", "26d4", "2733", "2747", "274e", "2705", "2734", "1f49f", "1f19a", "1f4f3", "1f4f4", "1f170", "1f171", "1f18e", "1f17e", "1f4a0", "27bf", "267b", "2648", "2649", "264a", "264b", "264c", "264d", "264e", "264f", "2650", "2651", "2652", "2653", "26ce", "1f52f", "1f3e7", "1f4b9", "1f4b2", "1f4b1", "00a9", "00ae", "2122", "274c", "203c", "2049", "2757", "2753", "2755", "2754", "2b55", "1f51d", "1f51a", "1f519", "1f51b", "1f51c", "1f503", "1f55b", "1f567", "1f550", "1f55c", "1f551", "1f55d", "1f552", "1f55e", "1f553", "1f55f", "1f554", "1f560", "1f555", "1f556", "1f557", "1f558", "1f559", "1f55a", "1f561", "1f562", "1f563", "1f564", "1f565", "1f566", "2716", "2795", "2796", "2797", "2660", "2665", "2663", "2666", "1f4ae", "1f4af", "2714", "2611", "1f518", "1f517", "27b0", "3030", "303d", "1f531", "25fc", "25fb", "25fe", "25fd", "25aa", "25ab", "1f53a", "1f532", "1f533", "26ab", "26aa", "1f534", "1f535", "1f53b", "2b1c", "2b1b", "1f536", "1f537", "1f538", "1f539"]
36672 ], Config.EmojiCategorySpritesheetDimens = [
36678 ], Config.emoji_data = {
36680 ["©"], "
\e24e", "
\feb29", ["copyright"], 0, 0
36683 ["®"], "
\e24f", "
\feb2d", ["registered"], 0, 1
36686 ["‼️", "‼"], "", "
\feb06", ["bangbang"], 0, 2
36689 ["⁉️", "⁉"], "", "
\feb05", ["interrobang"], 0, 3
36692 ["™"], "
\e537", "
\feb2a", ["tm"], 0, 4
36695 ["ℹ️", "ℹ"], "", "
\feb47", ["information_source"], 0, 5
36698 ["↔️", "↔"], "", "
\feaf6", ["left_right_arrow"], 0, 6
36701 ["↕️", "↕"], "", "
\feaf7", ["arrow_up_down"], 0, 7
36704 ["↖️", "↖"], "
\e237", "
\feaf2", ["arrow_upper_left"], 0, 8
36707 ["↗️", "↗"], "
\e236", "
\feaf0", ["arrow_upper_right"], 0, 9
36710 ["↘️", "↘"], "
\e238", "
\feaf1", ["arrow_lower_right"], 0, 10
36713 ["↙️", "↙"], "
\e239", "
\feaf3", ["arrow_lower_left"], 0, 11
36716 ["↩️", "↩"], "", "
\feb83", ["leftwards_arrow_with_hook"], 0, 12
36719 ["↪️", "↪"], "", "
\feb88", ["arrow_right_hook"], 0, 13
36722 ["⌚️", "⌚"], "", "
\fe01d", ["watch"], 0, 14
36725 ["⌛️", "⌛"], "", "
\fe01c", ["hourglass"], 0, 15
36728 ["⏩"], "
\e23c", "
\feafe", ["fast_forward"], 0, 16
36731 ["⏪"], "
\e23d", "
\feaff", ["rewind"], 0, 17
36734 ["⏫"], "", "
\feb03", ["arrow_double_up"], 0, 18
36737 ["⏬"], "", "
\feb02", ["arrow_double_down"], 0, 19
36740 ["⏰"], "
\e02d", "
\fe02a", ["alarm_clock"], 0, 20
36743 ["⏳"], "", "
\fe01b", ["hourglass_flowing_sand"], 0, 21
36746 ["Ⓜ️", "Ⓜ"], "
\e434", "
\fe7e1", ["m"], 0, 22
36749 ["▪️", "▪"], "
\e21a", "
\feb6e", ["black_small_square"], 0, 23
36752 ["▫️", "▫"], "
\e21b", "
\feb6d", ["white_small_square"], 0, 24
36755 ["▶️", "▶"], "
\e23a", "
\feafc", ["arrow_forward"], 0, 25
36758 ["◀️", "◀"], "
\e23b", "
\feafd", ["arrow_backward"], 0, 26
36761 ["◻️", "◻"], "
\e21b", "
\feb71", ["white_medium_square"], 0, 27
36764 ["◼️", "◼"], "
\e21a", "
\feb72", ["black_medium_square"], 0, 28
36767 ["◽️", "◽"], "
\e21b", "
\feb6f", ["white_medium_small_square"], 0, 29
36770 ["◾️", "◾"], "
\e21a", "
\feb70", ["black_medium_small_square"], 1, 0
36773 ["☀️", "☀"], "
\e04a", "
\fe000", ["sunny"], 1, 1
36776 ["☁️", "☁"], "
\e049", "
\fe001", ["cloud"], 1, 2
36779 ["☎️", "☎"], "
\e009", "
\fe523", ["phone", "telephone"], 1, 3
36782 ["☑️", "☑"], "", "
\feb8b", ["ballot_box_with_check"], 1, 4
36785 ["☔️", "☔"], "
\e04b", "
\fe002", ["umbrella"], 1, 5
36788 ["☕️", "☕"], "
\e045", "
\fe981", ["coffee"], 1, 6
36791 ["☝️", "☝"], "
\e00f", "
\feb98", ["point_up"], 1, 7
36794 ["☺️", "☺"], "
\e414", "
\fe336", ["relaxed"], 1, 8
36797 ["♈️", "♈"], "
\e23f", "
\fe02b", ["aries"], 1, 9
36800 ["♉️", "♉"], "
\e240", "
\fe02c", ["taurus"], 1, 10
36803 ["♊️", "♊"], "
\e241", "
\fe02d", ["gemini"], 1, 11
36806 ["♋️", "♋"], "
\e242", "
\fe02e", ["cancer"], 1, 12
36809 ["♌️", "♌"], "
\e243", "
\fe02f", ["leo"], 1, 13
36812 ["♍️", "♍"], "
\e244", "
\fe030", ["virgo"], 1, 14
36815 ["♎️", "♎"], "
\e245", "
\fe031", ["libra"], 1, 15
36818 ["♏️", "♏"], "
\e246", "
\fe032", ["scorpius"], 1, 16
36821 ["♐️", "♐"], "
\e247", "
\fe033", ["sagittarius"], 1, 17
36824 ["♑️", "♑"], "
\e248", "
\fe034", ["capricorn"], 1, 18
36827 ["♒️", "♒"], "
\e249", "
\fe035", ["aquarius"], 1, 19
36830 ["♓️", "♓"], "
\e24a", "
\fe036", ["pisces"], 1, 20
36833 ["♠️", "♠"], "
\e20e", "
\feb1b", ["spades"], 1, 21
36836 ["♣️", "♣"], "
\e20f", "
\feb1d", ["clubs"], 1, 22
36839 ["♥️", "♥"], "
\e20c", "
\feb1a", ["hearts"], 1, 23
36842 ["♦️", "♦"], "
\e20d", "
\feb1c", ["diamonds"], 1, 24
36845 ["♨️", "♨"], "
\e123", "
\fe7fa", ["hotsprings"], 1, 25
36848 ["♻️", "♻"], "", "
\feb2c", ["recycle"], 1, 26
36851 ["♿️", "♿"], "
\e20a", "
\feb20", ["wheelchair"], 1, 27
36854 ["⚓️", "⚓"], "
\e202", "
\fe4c1", ["anchor"], 1, 28
36857 ["⚠️", "⚠"], "
\e252", "
\feb23", ["warning"], 1, 29
36860 ["⚡️", "⚡"], "
\e13d", "
\fe004", ["zap"], 2, 0
36863 ["⚪️", "⚪"], "
\e219", "
\feb65", ["white_circle"], 2, 1
36866 ["⚫️", "⚫"], "
\e219", "
\feb66", ["black_circle"], 2, 2
36869 ["⚽️", "⚽"], "
\e018", "
\fe7d4", ["soccer"], 2, 3
36872 ["⚾️", "⚾"], "
\e016", "
\fe7d1", ["baseball"], 2, 4
36875 ["⛄️", "⛄"], "
\e048", "
\fe003", ["snowman"], 2, 5
36878 ["⛅️", "⛅"], "
\e04a\e049", "
\fe00f", ["partly_sunny"], 2, 6
36881 ["⛎"], "
\e24b", "
\fe037", ["ophiuchus"], 2, 7
36884 ["⛔️", "⛔"], "
\e137", "
\feb26", ["no_entry"], 2, 8
36887 ["⛪️", "⛪"], "
\e037", "
\fe4bb", ["church"], 2, 9
36890 ["⛲️", "⛲"], "
\e121", "
\fe4bc", ["fountain"], 2, 10
36893 ["⛳️", "⛳"], "
\e014", "
\fe7d2", ["golf"], 2, 11
36896 ["⛵️", "⛵"], "
\e01c", "
\fe7ea", ["boat", "sailboat"], 2, 12
36899 ["⛺️", "⛺"], "
\e122", "
\fe7fb", ["tent"], 2, 13
36902 ["⛽️", "⛽"], "
\e03a", "
\fe7f5", ["fuelpump"], 2, 14
36905 ["✂️", "✂"], "
\e313", "
\fe53e", ["scissors"], 2, 15
36908 ["✅"], "", "
\feb4a", ["white_check_mark"], 2, 16
36911 ["✈️", "✈"], "
\e01d", "
\fe7e9", ["airplane"], 2, 17
36914 ["✉️", "✉"], "
\e103", "
\fe529", ["email", "envelope"], 2, 18
36917 ["✊"], "
\e010", "
\feb93", ["fist"], 2, 19
36920 ["✋"], "
\e012", "
\feb95", ["hand", "raised_hand"], 2, 20
36923 ["✌️", "✌"], "
\e011", "
\feb94", ["v"], 2, 21
36926 ["✏️", "✏"], "
\e301", "
\fe539", ["pencil2"], 2, 22
36929 ["✒️", "✒"], "", "
\fe536", ["black_nib"], 2, 23
36932 ["✔️", "✔"], "", "
\feb49", ["heavy_check_mark"], 2, 24
36935 ["✖️", "✖"], "
\e333", "
\feb53", ["heavy_multiplication_x"], 2, 25
36938 ["✨"], "
\e32e", "
\feb60", ["sparkles"], 2, 26
36941 ["✳️", "✳"], "
\e206", "
\feb62", ["eight_spoked_asterisk"], 2, 27
36944 ["✴️", "✴"], "
\e205", "
\feb61", ["eight_pointed_black_star"], 2, 28
36947 ["❄️", "❄"], "", "
\fe00e", ["snowflake"], 2, 29
36950 ["❇️", "❇"], "
\e32e", "
\feb77", ["sparkle"], 3, 0
36953 ["❌"], "
\e333", "
\feb45", ["x"], 3, 1
36956 ["❎"], "
\e333", "
\feb46", ["negative_squared_cross_mark"], 3, 2
36959 ["❓"], "
\e020", "
\feb09", ["question"], 3, 3
36962 ["❔"], "
\e336", "
\feb0a", ["grey_question"], 3, 4
36965 ["❕"], "
\e337", "
\feb0b", ["grey_exclamation"], 3, 5
36968 ["❗️", "❗"], "
\e021", "
\feb04", ["exclamation", "heavy_exclamation_mark"], 3, 6
36971 ["❤️", "❤"], "
\e022", "
\feb0c", ["heart"], 3, 7, "<3"
36974 ["➕"], "", "
\feb51", ["heavy_plus_sign"], 3, 8
36977 ["➖"], "", "
\feb52", ["heavy_minus_sign"], 3, 9
36980 ["➗"], "", "
\feb54", ["heavy_division_sign"], 3, 10
36983 ["➡️", "➡"], "
\e234", "
\feafa", ["arrow_right"], 3, 11
36986 ["➰"], "", "
\feb08", ["curly_loop"], 3, 12
36989 ["➿"], "
\e211", "
\fe82b", ["loop"], 3, 13
36992 ["⤴️", "⤴"], "
\e236", "
\feaf4", ["arrow_heading_up"], 3, 14
36995 ["⤵️", "⤵"], "
\e238", "
\feaf5", ["arrow_heading_down"], 3, 15
36998 ["⬅️", "⬅"], "
\e235", "
\feafb", ["arrow_left"], 3, 16
37001 ["⬆️", "⬆"], "
\e232", "
\feaf8", ["arrow_up"], 3, 17
37004 ["⬇️", "⬇"], "
\e233", "
\feaf9", ["arrow_down"], 3, 18
37007 ["⬛️", "⬛"], "
\e21a", "
\feb6c", ["black_large_square"], 3, 19
37010 ["⬜️", "⬜"], "
\e21b", "
\feb6b", ["white_large_square"], 3, 20
37013 ["⭐️", "⭐"], "
\e32f", "
\feb68", ["star"], 3, 21
37016 ["⭕️", "⭕"], "
\e332", "
\feb44", ["o"], 3, 22
37019 ["〰"], "", "
\feb07", ["wavy_dash"], 3, 23
37022 ["〽️", "〽"], "
\e12c", "
\fe81b", ["part_alternation_mark"], 3, 24
37025 ["㊗️", "㊗"], "
\e30d", "
\feb43", ["congratulations"], 3, 25
37028 ["㊙️", "㊙"], "
\e315", "
\feb2b", ["secret"], 3, 26
37031 ["🀄️", "🀄"], "
\e12d", "
\fe80b", ["mahjong"], 3, 27
37034 ["🃏"], "", "
\fe812", ["black_joker"], 3, 28
37037 ["🅰"], "
\e532", "
\fe50b", ["a"], 3, 29
37040 ["🅱"], "
\e533", "
\fe50c", ["b"], 4, 0
37043 ["🅾"], "
\e535", "
\fe50e", ["o2"], 4, 1
37046 ["🅿️", "🅿"], "
\e14f", "
\fe7f6", ["parking"], 4, 2
37049 ["🆎"], "
\e534", "
\fe50d", ["ab"], 4, 3
37052 ["🆑"], "", "
\feb84", ["cl"], 4, 4
37055 ["🆒"], "
\e214", "
\feb38", ["cool"], 4, 5
37058 ["🆓"], "", "
\feb21", ["free"], 4, 6
37061 ["🆔"], "
\e229", "
\feb81", ["id"], 4, 7
37064 ["🆕"], "
\e212", "
\feb36", ["new"], 4, 8
37067 ["🆖"], "", "
\feb28", ["ng"], 4, 9
37070 ["🆗"], "
\e24d", "
\feb27", ["ok"], 4, 10
37073 ["🆘"], "", "
\feb4f", ["sos"], 4, 11
37076 ["🆙"], "
\e213", "
\feb37", ["up"], 4, 12
37079 ["🆚"], "
\e12e", "
\feb32", ["vs"], 4, 13
37082 ["🈁"], "
\e203", "
\feb24", ["koko"], 4, 14
37085 ["🈂"], "
\e228", "
\feb3f", ["sa"], 4, 15
37088 ["🈚️", "🈚"], "
\e216", "
\feb3a", ["u7121"], 4, 16
37091 ["🈯️", "🈯"], "
\e22c", "
\feb40", ["u6307"], 4, 17
37094 ["🈲"], "", "
\feb2e", ["u7981"], 4, 18
37097 ["🈳"], "
\e22b", "
\feb2f", ["u7a7a"], 4, 19
37100 ["🈴"], "", "
\feb30", ["u5408"], 4, 20
37103 ["🈵"], "
\e22a", "
\feb31", ["u6e80"], 4, 21
37106 ["🈶"], "
\e215", "
\feb39", ["u6709"], 4, 22
37109 ["🈷"], "
\e217", "
\feb3b", ["u6708"], 4, 23
37112 ["🈸"], "
\e218", "
\feb3c", ["u7533"], 4, 24
37115 ["🈹"], "
\e227", "
\feb3e", ["u5272"], 4, 25
37118 ["🈺"], "
\e22d", "
\feb41", ["u55b6"], 4, 26
37121 ["🉐"], "
\e226", "
\feb3d", ["ideograph_advantage"], 4, 27
37124 ["🉑"], "", "
\feb50", ["accept"], 4, 28
37127 ["🌀"], "
\e443", "
\fe005", ["cyclone"], 4, 29
37130 ["🌁"], "", "
\fe006", ["foggy"], 5, 0
37133 ["🌂"], "
\e43c", "
\fe007", ["closed_umbrella"], 5, 1
37136 ["🌃"], "
\e44b", "
\fe008", ["night_with_stars"], 5, 2
37139 ["🌄"], "
\e04d", "
\fe009", ["sunrise_over_mountains"], 5, 3
37142 ["🌅"], "
\e449", "
\fe00a", ["sunrise"], 5, 4
37145 ["🌆"], "
\e146", "
\fe00b", ["city_sunset"], 5, 5
37148 ["🌇"], "
\e44a", "
\fe00c", ["city_sunrise"], 5, 6
37151 ["🌈"], "
\e44c", "
\fe00d", ["rainbow"], 5, 7
37154 ["🌉"], "
\e44b", "
\fe010", ["bridge_at_night"], 5, 8
37157 ["🌊"], "
\e43e", "
\fe038", ["ocean"], 5, 9
37160 ["🌋"], "", "
\fe03a", ["volcano"], 5, 10
37163 ["🌌"], "
\e44b", "
\fe03b", ["milky_way"], 5, 11
37166 ["🌍"], "", "", ["earth_africa"], 5, 12
37169 ["🌎"], "", "", ["earth_americas"], 5, 13
37172 ["🌏"], "", "
\fe039", ["earth_asia"], 5, 14
37175 ["🌐"], "", "", ["globe_with_meridians"], 5, 15
37178 ["🌑"], "", "
\fe011", ["new_moon"], 5, 16
37181 ["🌒"], "", "", ["waxing_crescent_moon"], 5, 17
37184 ["🌓"], "
\e04c", "
\fe013", ["first_quarter_moon"], 5, 18
37187 ["🌔"], "
\e04c", "
\fe012", ["moon", "waxing_gibbous_moon"], 5, 19
37190 ["🌕"], "", "
\fe015", ["full_moon"], 5, 20
37193 ["🌖"], "", "", ["waning_gibbous_moon"], 5, 21
37196 ["🌗"], "", "", ["last_quarter_moon"], 5, 22
37199 ["🌘"], "", "", ["waning_crescent_moon"], 5, 23
37202 ["🌙"], "
\e04c", "
\fe014", ["crescent_moon"], 5, 24
37205 ["🌚"], "", "", ["new_moon_with_face"], 5, 25
37208 ["🌛"], "
\e04c", "
\fe016", ["first_quarter_moon_with_face"], 5, 26
37211 ["🌜"], "", "", ["last_quarter_moon_with_face"], 5, 27
37214 ["🌝"], "", "", ["full_moon_with_face"], 5, 28
37217 ["🌞"], "", "", ["sun_with_face"], 5, 29
37220 ["🌟"], "
\e335", "
\feb69", ["star2"], 6, 0
37223 ["🌠"], "", "
\feb6a", ["stars"], 6, 1
37226 ["🌰"], "", "
\fe04c", ["chestnut"], 6, 2
37229 ["🌱"], "
\e110", "
\fe03e", ["seedling"], 6, 3
37232 ["🌲"], "", "", ["evergreen_tree"], 6, 4
37235 ["🌳"], "", "", ["deciduous_tree"], 6, 5
37238 ["🌴"], "
\e307", "
\fe047", ["palm_tree"], 6, 6
37241 ["🌵"], "
\e308", "
\fe048", ["cactus"], 6, 7
37244 ["🌷"], "
\e304", "
\fe03d", ["tulip"], 6, 8
37247 ["🌸"], "
\e030", "
\fe040", ["cherry_blossom"], 6, 9
37250 ["🌹"], "
\e032", "
\fe041", ["rose"], 6, 10
37253 ["🌺"], "
\e303", "
\fe045", ["hibiscus"], 6, 11
37256 ["🌻"], "
\e305", "
\fe046", ["sunflower"], 6, 12
37259 ["🌼"], "
\e305", "
\fe04d", ["blossom"], 6, 13
37262 ["🌽"], "", "
\fe04a", ["corn"], 6, 14
37265 ["🌾"], "
\e444", "
\fe049", ["ear_of_rice"], 6, 15
37268 ["🌿"], "
\e110", "
\fe04e", ["herb"], 6, 16
37271 ["🍀"], "
\e110", "
\fe03c", ["four_leaf_clover"], 6, 17
37274 ["🍁"], "
\e118", "
\fe03f", ["maple_leaf"], 6, 18
37277 ["🍂"], "
\e119", "
\fe042", ["fallen_leaf"], 6, 19
37280 ["🍃"], "
\e447", "
\fe043", ["leaves"], 6, 20
37283 ["🍄"], "", "
\fe04b", ["mushroom"], 6, 21
37286 ["🍅"], "
\e349", "
\fe055", ["tomato"], 6, 22
37289 ["🍆"], "
\e34a", "
\fe056", ["eggplant"], 6, 23
37292 ["🍇"], "", "
\fe059", ["grapes"], 6, 24
37295 ["🍈"], "", "
\fe057", ["melon"], 6, 25
37298 ["🍉"], "
\e348", "
\fe054", ["watermelon"], 6, 26
37301 ["🍊"], "
\e346", "
\fe052", ["tangerine"], 6, 27
37304 ["🍋"], "", "", ["lemon"], 6, 28
37307 ["🍌"], "", "
\fe050", ["banana"], 6, 29
37310 ["🍍"], "", "
\fe058", ["pineapple"], 7, 0
37313 ["🍎"], "
\e345", "
\fe051", ["apple"], 7, 1
37316 ["🍏"], "
\e345", "
\fe05b", ["green_apple"], 7, 2
37319 ["🍐"], "", "", ["pear"], 7, 3
37322 ["🍑"], "", "
\fe05a", ["peach"], 7, 4
37325 ["🍒"], "", "
\fe04f", ["cherries"], 7, 5
37328 ["🍓"], "
\e347", "
\fe053", ["strawberry"], 7, 6
37331 ["🍔"], "
\e120", "
\fe960", ["hamburger"], 7, 7
37334 ["🍕"], "", "
\fe975", ["pizza"], 7, 8
37337 ["🍖"], "", "
\fe972", ["meat_on_bone"], 7, 9
37340 ["🍗"], "", "
\fe976", ["poultry_leg"], 7, 10
37343 ["🍘"], "
\e33d", "
\fe969", ["rice_cracker"], 7, 11
37346 ["🍙"], "
\e342", "
\fe961", ["rice_ball"], 7, 12
37349 ["🍚"], "
\e33e", "
\fe96a", ["rice"], 7, 13
37352 ["🍛"], "
\e341", "
\fe96c", ["curry"], 7, 14
37355 ["🍜"], "
\e340", "
\fe963", ["ramen"], 7, 15
37358 ["🍝"], "
\e33f", "
\fe96b", ["spaghetti"], 7, 16
37361 ["🍞"], "
\e339", "
\fe964", ["bread"], 7, 17
37364 ["🍟"], "
\e33b", "
\fe967", ["fries"], 7, 18
37367 ["🍠"], "", "
\fe974", ["sweet_potato"], 7, 19
37370 ["🍡"], "
\e33c", "
\fe968", ["dango"], 7, 20
37373 ["🍢"], "
\e343", "
\fe96d", ["oden"], 7, 21
37376 ["🍣"], "
\e344", "
\fe96e", ["sushi"], 7, 22
37379 ["🍤"], "", "
\fe97f", ["fried_shrimp"], 7, 23
37382 ["🍥"], "", "
\fe973", ["fish_cake"], 7, 24
37385 ["🍦"], "
\e33a", "
\fe966", ["icecream"], 7, 25
37388 ["🍧"], "
\e43f", "
\fe971", ["shaved_ice"], 7, 26
37391 ["🍨"], "", "
\fe977", ["ice_cream"], 7, 27
37394 ["🍩"], "", "
\fe978", ["doughnut"], 7, 28
37397 ["🍪"], "", "
\fe979", ["cookie"], 7, 29
37400 ["🍫"], "", "
\fe97a", ["chocolate_bar"], 8, 0
37403 ["🍬"], "", "
\fe97b", ["candy"], 8, 1
37406 ["🍭"], "", "
\fe97c", ["lollipop"], 8, 2
37409 ["🍮"], "", "
\fe97d", ["custard"], 8, 3
37412 ["🍯"], "", "
\fe97e", ["honey_pot"], 8, 4
37415 ["🍰"], "
\e046", "
\fe962", ["cake"], 8, 5
37418 ["🍱"], "
\e34c", "
\fe96f", ["bento"], 8, 6
37421 ["🍲"], "
\e34d", "
\fe970", ["stew"], 8, 7
37424 ["🍳"], "
\e147", "
\fe965", ["egg"], 8, 8
37427 ["🍴"], "
\e043", "
\fe980", ["fork_and_knife"], 8, 9
37430 ["🍵"], "
\e338", "
\fe984", ["tea"], 8, 10
37433 ["🍶"], "
\e30b", "
\fe985", ["sake"], 8, 11
37436 ["🍷"], "
\e044", "
\fe986", ["wine_glass"], 8, 12
37439 ["🍸"], "
\e044", "
\fe982", ["cocktail"], 8, 13
37442 ["🍹"], "
\e044", "
\fe988", ["tropical_drink"], 8, 14
37445 ["🍺"], "
\e047", "
\fe983", ["beer"], 8, 15
37448 ["🍻"], "
\e30c", "
\fe987", ["beers"], 8, 16
37451 ["🍼"], "", "", ["baby_bottle"], 8, 17
37454 ["🎀"], "
\e314", "
\fe50f", ["ribbon"], 8, 18
37457 ["🎁"], "
\e112", "
\fe510", ["gift"], 8, 19
37460 ["🎂"], "
\e34b", "
\fe511", ["birthday"], 8, 20
37463 ["🎃"], "
\e445", "
\fe51f", ["jack_o_lantern"], 8, 21
37466 ["🎄"], "
\e033", "
\fe512", ["christmas_tree"], 8, 22
37469 ["🎅"], "
\e448", "
\fe513", ["santa"], 8, 23
37472 ["🎆"], "
\e117", "
\fe515", ["fireworks"], 8, 24
37475 ["🎇"], "
\e440", "
\fe51d", ["sparkler"], 8, 25
37478 ["🎈"], "
\e310", "
\fe516", ["balloon"], 8, 26
37481 ["🎉"], "
\e312", "
\fe517", ["tada"], 8, 27
37484 ["🎊"], "", "
\fe520", ["confetti_ball"], 8, 28
37487 ["🎋"], "", "
\fe521", ["tanabata_tree"], 8, 29
37490 ["🎌"], "
\e143", "
\fe514", ["crossed_flags"], 9, 0
37493 ["🎍"], "
\e436", "
\fe518", ["bamboo"], 9, 1
37496 ["🎎"], "
\e438", "
\fe519", ["dolls"], 9, 2
37499 ["🎏"], "
\e43b", "
\fe51c", ["flags"], 9, 3
37502 ["🎐"], "
\e442", "
\fe51e", ["wind_chime"], 9, 4
37505 ["🎑"], "
\e446", "
\fe017", ["rice_scene"], 9, 5
37508 ["🎒"], "
\e43a", "
\fe51b", ["school_satchel"], 9, 6
37511 ["🎓"], "
\e439", "
\fe51a", ["mortar_board"], 9, 7
37514 ["🎠"], "", "
\fe7fc", ["carousel_horse"], 9, 8
37517 ["🎡"], "
\e124", "
\fe7fd", ["ferris_wheel"], 9, 9
37520 ["🎢"], "
\e433", "
\fe7fe", ["roller_coaster"], 9, 10
37523 ["🎣"], "
\e019", "
\fe7ff", ["fishing_pole_and_fish"], 9, 11
37526 ["🎤"], "
\e03c", "
\fe800", ["microphone"], 9, 12
37529 ["🎥"], "
\e03d", "
\fe801", ["movie_camera"], 9, 13
37532 ["🎦"], "
\e507", "
\fe802", ["cinema"], 9, 14
37535 ["🎧"], "
\e30a", "
\fe803", ["headphones"], 9, 15
37538 ["🎨"], "
\e502", "
\fe804", ["art"], 9, 16
37541 ["🎩"], "
\e503", "
\fe805", ["tophat"], 9, 17
37544 ["🎪"], "", "
\fe806", ["circus_tent"], 9, 18
37547 ["🎫"], "
\e125", "
\fe807", ["ticket"], 9, 19
37550 ["🎬"], "
\e324", "
\fe808", ["clapper"], 9, 20
37553 ["🎭"], "
\e503", "
\fe809", ["performing_arts"], 9, 21
37556 ["🎮"], "", "
\fe80a", ["video_game"], 9, 22
37559 ["🎯"], "
\e130", "
\fe80c", ["dart"], 9, 23
37562 ["🎰"], "
\e133", "
\fe80d", ["slot_machine"], 9, 24
37565 ["🎱"], "
\e42c", "
\fe80e", ["8ball"], 9, 25
37568 ["🎲"], "", "
\fe80f", ["game_die"], 9, 26
37571 ["🎳"], "", "
\fe810", ["bowling"], 9, 27
37574 ["🎴"], "", "
\fe811", ["flower_playing_cards"], 9, 28
37577 ["🎵"], "
\e03e", "
\fe813", ["musical_note"], 9, 29
37580 ["🎶"], "
\e326", "
\fe814", ["notes"], 10, 0
37583 ["🎷"], "
\e040", "
\fe815", ["saxophone"], 10, 1
37586 ["🎸"], "
\e041", "
\fe816", ["guitar"], 10, 2
37589 ["🎹"], "", "
\fe817", ["musical_keyboard"], 10, 3
37592 ["🎺"], "
\e042", "
\fe818", ["trumpet"], 10, 4
37595 ["🎻"], "", "
\fe819", ["violin"], 10, 5
37598 ["🎼"], "
\e326", "
\fe81a", ["musical_score"], 10, 6
37601 ["🎽"], "", "
\fe7d0", ["running_shirt_with_sash"], 10, 7
37604 ["🎾"], "
\e015", "
\fe7d3", ["tennis"], 10, 8
37607 ["🎿"], "
\e013", "
\fe7d5", ["ski"], 10, 9
37610 ["🏀"], "
\e42a", "
\fe7d6", ["basketball"], 10, 10
37613 ["🏁"], "
\e132", "
\fe7d7", ["checkered_flag"], 10, 11
37616 ["🏂"], "", "
\fe7d8", ["snowboarder"], 10, 12
37619 ["🏃"], "
\e115", "
\fe7d9", ["runner", "running"], 10, 13
37622 ["🏄"], "
\e017", "
\fe7da", ["surfer"], 10, 14
37625 ["🏆"], "
\e131", "
\fe7db", ["trophy"], 10, 15
37628 ["🏇"], "", "", ["horse_racing"], 10, 16
37631 ["🏈"], "
\e42b", "
\fe7dd", ["football"], 10, 17
37634 ["🏉"], "", "", ["rugby_football"], 10, 18
37637 ["🏊"], "
\e42d", "
\fe7de", ["swimmer"], 10, 19
37640 ["🏠"], "
\e036", "
\fe4b0", ["house"], 10, 20
37643 ["🏡"], "
\e036", "
\fe4b1", ["house_with_garden"], 10, 21
37646 ["🏢"], "
\e038", "
\fe4b2", ["office"], 10, 22
37649 ["🏣"], "
\e153", "
\fe4b3", ["post_office"], 10, 23
37652 ["🏤"], "", "", ["european_post_office"], 10, 24
37655 ["🏥"], "
\e155", "
\fe4b4", ["hospital"], 10, 25
37658 ["🏦"], "
\e14d", "
\fe4b5", ["bank"], 10, 26
37661 ["🏧"], "
\e154", "
\fe4b6", ["atm"], 10, 27
37664 ["🏨"], "
\e158", "
\fe4b7", ["hotel"], 10, 28
37667 ["🏩"], "
\e501", "
\fe4b8", ["love_hotel"], 10, 29
37670 ["🏪"], "
\e156", "
\fe4b9", ["convenience_store"], 11, 0
37673 ["🏫"], "
\e157", "
\fe4ba", ["school"], 11, 1
37676 ["🏬"], "
\e504", "
\fe4bd", ["department_store"], 11, 2
37679 ["🏭"], "
\e508", "
\fe4c0", ["factory"], 11, 3
37682 ["🏮"], "
\e30b", "
\fe4c2", ["izakaya_lantern", "lantern"], 11, 4
37685 ["🏯"], "
\e505", "
\fe4be", ["japanese_castle"], 11, 5
37688 ["🏰"], "
\e506", "
\fe4bf", ["european_castle"], 11, 6
37691 ["🐀"], "", "", ["rat"], 11, 7
37694 ["🐁"], "", "", ["mouse2"], 11, 8
37697 ["🐂"], "", "", ["ox"], 11, 9
37700 ["🐃"], "", "", ["water_buffalo"], 11, 10
37703 ["🐄"], "", "", ["cow2"], 11, 11
37706 ["🐅"], "", "", ["tiger2"], 11, 12
37709 ["🐆"], "", "", ["leopard"], 11, 13
37712 ["🐇"], "", "", ["rabbit2"], 11, 14
37715 ["🐈"], "", "", ["cat2"], 11, 15
37718 ["🐉"], "", "", ["dragon"], 11, 16
37721 ["🐊"], "", "", ["crocodile"], 11, 17
37724 ["🐋"], "", "", ["whale2"], 11, 18
37727 ["🐌"], "", "
\fe1b9", ["snail"], 11, 19
37730 ["🐍"], "
\e52d", "
\fe1d3", ["snake"], 11, 20
37733 ["🐎"], "
\e134", "
\fe7dc", ["racehorse"], 11, 21
37736 ["🐏"], "", "", ["ram"], 11, 22
37739 ["🐐"], "", "", ["goat"], 11, 23
37742 ["🐑"], "
\e529", "
\fe1cf", ["sheep"], 11, 24
37745 ["🐒"], "
\e528", "
\fe1ce", ["monkey"], 11, 25
37748 ["🐓"], "", "", ["rooster"], 11, 26
37751 ["🐔"], "
\e52e", "
\fe1d4", ["chicken"], 11, 27
37754 ["🐕"], "", "", ["dog2"], 11, 28
37757 ["🐖"], "", "", ["pig2"], 11, 29
37760 ["🐗"], "
\e52f", "
\fe1d5", ["boar"], 12, 0
37763 ["🐘"], "
\e526", "
\fe1cc", ["elephant"], 12, 1
37766 ["🐙"], "
\e10a", "
\fe1c5", ["octopus"], 12, 2
37769 ["🐚"], "
\e441", "
\fe1c6", ["shell"], 12, 3
37772 ["🐛"], "
\e525", "
\fe1cb", ["bug"], 12, 4
37775 ["🐜"], "", "
\fe1da", ["ant"], 12, 5
37778 ["🐝"], "", "
\fe1e1", ["bee", "honeybee"], 12, 6
37781 ["🐞"], "", "
\fe1e2", ["beetle"], 12, 7
37784 ["🐟"], "
\e019", "
\fe1bd", ["fish"], 12, 8
37787 ["🐠"], "
\e522", "
\fe1c9", ["tropical_fish"], 12, 9
37790 ["🐡"], "
\e019", "
\fe1d9", ["blowfish"], 12, 10
37793 ["🐢"], "", "
\fe1dc", ["turtle"], 12, 11
37796 ["🐣"], "
\e523", "
\fe1dd", ["hatching_chick"], 12, 12
37799 ["🐤"], "
\e523", "
\fe1ba", ["baby_chick"], 12, 13
37802 ["🐥"], "
\e523", "
\fe1bb", ["hatched_chick"], 12, 14
37805 ["🐦"], "
\e521", "
\fe1c8", ["bird"], 12, 15
37808 ["🐧"], "
\e055", "
\fe1bc", ["penguin"], 12, 16
37811 ["🐨"], "
\e527", "
\fe1cd", ["koala"], 12, 17
37814 ["🐩"], "
\e052", "
\fe1d8", ["poodle"], 12, 18
37817 ["🐪"], "", "", ["dromedary_camel"], 12, 19
37820 ["🐫"], "
\e530", "
\fe1d6", ["camel"], 12, 20
37823 ["🐬"], "
\e520", "
\fe1c7", ["dolphin", "flipper"], 12, 21
37826 ["🐭"], "
\e053", "
\fe1c2", ["mouse"], 12, 22
37829 ["🐮"], "
\e52b", "
\fe1d1", ["cow"], 12, 23
37832 ["🐯"], "
\e050", "
\fe1c0", ["tiger"], 12, 24
37835 ["🐰"], "
\e52c", "
\fe1d2", ["rabbit"], 12, 25
37838 ["🐱"], "
\e04f", "
\fe1b8", ["cat"], 12, 26
37841 ["🐲"], "", "
\fe1de", ["dragon_face"], 12, 27
37844 ["🐳"], "
\e054", "
\fe1c3", ["whale"], 12, 28
37847 ["🐴"], "
\e01a", "
\fe1be", ["horse"], 12, 29
37850 ["🐵"], "
\e109", "
\fe1c4", ["monkey_face"], 13, 0
37853 ["🐶"], "
\e052", "
\fe1b7", ["dog"], 13, 1
37856 ["🐷"], "
\e10b", "
\fe1bf", ["pig"], 13, 2
37859 ["🐸"], "
\e531", "
\fe1d7", ["frog"], 13, 3
37862 ["🐹"], "
\e524", "
\fe1ca", ["hamster"], 13, 4
37865 ["🐺"], "
\e52a", "
\fe1d0", ["wolf"], 13, 5
37868 ["🐻"], "
\e051", "
\fe1c1", ["bear"], 13, 6
37871 ["🐼"], "", "
\fe1df", ["panda_face"], 13, 7
37874 ["🐽"], "
\e10b", "
\fe1e0", ["pig_nose"], 13, 8
37877 ["🐾"], "
\e536", "
\fe1db", ["feet", "paw_prints"], 13, 9
37880 ["👀"], "
\e419", "
\fe190", ["eyes"], 13, 10
37883 ["👂"], "
\e41b", "
\fe191", ["ear"], 13, 11
37886 ["👃"], "
\e41a", "
\fe192", ["nose"], 13, 12
37889 ["👄"], "
\e41c", "
\fe193", ["lips"], 13, 13
37892 ["👅"], "
\e409", "
\fe194", ["tongue"], 13, 14
37895 ["👆"], "
\e22e", "
\feb99", ["point_up_2"], 13, 15
37898 ["👇"], "
\e22f", "
\feb9a", ["point_down"], 13, 16
37901 ["👈"], "
\e230", "
\feb9b", ["point_left"], 13, 17
37904 ["👉"], "
\e231", "
\feb9c", ["point_right"], 13, 18
37907 ["👊"], "
\e00d", "
\feb96", ["facepunch", "punch"], 13, 19
37910 ["👋"], "
\e41e", "
\feb9d", ["wave"], 13, 20
37913 ["👌"], "
\e420", "
\feb9f", ["ok_hand"], 13, 21
37916 ["👍"], "
\e00e", "
\feb97", ["+1", "thumbsup"], 13, 22
37919 ["👎"], "
\e421", "
\feba0", ["-1", "thumbsdown"], 13, 23
37922 ["👏"], "
\e41f", "
\feb9e", ["clap"], 13, 24
37925 ["👐"], "
\e422", "
\feba1", ["open_hands"], 13, 25
37928 ["👑"], "
\e10e", "
\fe4d1", ["crown"], 13, 26
37931 ["👒"], "
\e318", "
\fe4d4", ["womans_hat"], 13, 27
37934 ["👓"], "", "
\fe4ce", ["eyeglasses"], 13, 28
37937 ["👔"], "
\e302", "
\fe4d3", ["necktie"], 13, 29
37940 ["👕"], "
\e006", "
\fe4cf", ["shirt", "tshirt"], 14, 0
37943 ["👖"], "", "
\fe4d0", ["jeans"], 14, 1
37946 ["👗"], "
\e319", "
\fe4d5", ["dress"], 14, 2
37949 ["👘"], "
\e321", "
\fe4d9", ["kimono"], 14, 3
37952 ["👙"], "
\e322", "
\fe4da", ["bikini"], 14, 4
37955 ["👚"], "
\e006", "
\fe4db", ["womans_clothes"], 14, 5
37958 ["👛"], "", "
\fe4dc", ["purse"], 14, 6
37961 ["👜"], "
\e323", "
\fe4f0", ["handbag"], 14, 7
37964 ["👝"], "", "
\fe4f1", ["pouch"], 14, 8
37967 ["👞"], "
\e007", "
\fe4cc", ["mans_shoe", "shoe"], 14, 9
37970 ["👟"], "
\e007", "
\fe4cd", ["athletic_shoe"], 14, 10
37973 ["👠"], "
\e13e", "
\fe4d6", ["high_heel"], 14, 11
37976 ["👡"], "
\e31a", "
\fe4d7", ["sandal"], 14, 12
37979 ["👢"], "
\e31b", "
\fe4d8", ["boot"], 14, 13
37982 ["👣"], "
\e536", "
\fe553", ["footprints"], 14, 14
37985 ["👤"], "", "
\fe19a", ["bust_in_silhouette"], 14, 15
37988 ["👥"], "", "", ["busts_in_silhouette"], 14, 16
37991 ["👦"], "
\e001", "
\fe19b", ["boy"], 14, 17
37994 ["👧"], "
\e002", "
\fe19c", ["girl"], 14, 18
37997 ["👨"], "
\e004", "
\fe19d", ["man"], 14, 19
38000 ["👩"], "
\e005", "
\fe19e", ["woman"], 14, 20
38003 ["👪"], "", "
\fe19f", ["family"], 14, 21
38006 ["👫"], "
\e428", "
\fe1a0", ["couple"], 14, 22
38009 ["👬"], "", "", ["two_men_holding_hands"], 14, 23
38012 ["👭"], "", "", ["two_women_holding_hands"], 14, 24
38015 ["👮"], "
\e152", "
\fe1a1", ["cop"], 14, 25
38018 ["👯"], "
\e429", "
\fe1a2", ["dancers"], 14, 26
38021 ["👰"], "", "
\fe1a3", ["bride_with_veil"], 14, 27
38024 ["👱"], "
\e515", "
\fe1a4", ["person_with_blond_hair"], 14, 28
38027 ["👲"], "
\e516", "
\fe1a5", ["man_with_gua_pi_mao"], 14, 29
38030 ["👳"], "
\e517", "
\fe1a6", ["man_with_turban"], 15, 0
38033 ["👴"], "
\e518", "
\fe1a7", ["older_man"], 15, 1
38036 ["👵"], "
\e519", "
\fe1a8", ["older_woman"], 15, 2
38039 ["👶"], "
\e51a", "
\fe1a9", ["baby"], 15, 3
38042 ["👷"], "
\e51b", "
\fe1aa", ["construction_worker"], 15, 4
38045 ["👸"], "
\e51c", "
\fe1ab", ["princess"], 15, 5
38048 ["👹"], "", "
\fe1ac", ["japanese_ogre"], 15, 6
38051 ["👺"], "", "
\fe1ad", ["japanese_goblin"], 15, 7
38054 ["👻"], "
\e11b", "
\fe1ae", ["ghost"], 15, 8
38057 ["👼"], "
\e04e", "
\fe1af", ["angel"], 15, 9
38060 ["👽"], "
\e10c", "
\fe1b0", ["alien"], 15, 10
38063 ["👾"], "
\e12b", "
\fe1b1", ["space_invader"], 15, 11
38066 ["👿"], "
\e11a", "
\fe1b2", ["imp"], 15, 12
38069 ["💀"], "
\e11c", "
\fe1b3", ["skull"], 15, 13
38072 ["💁"], "
\e253", "
\fe1b4", ["information_desk_person"], 15, 14
38075 ["💂"], "
\e51e", "
\fe1b5", ["guardsman"], 15, 15
38078 ["💃"], "
\e51f", "
\fe1b6", ["dancer"], 15, 16
38081 ["💄"], "
\e31c", "
\fe195", ["lipstick"], 15, 17
38084 ["💅"], "
\e31d", "
\fe196", ["nail_care"], 15, 18
38087 ["💆"], "
\e31e", "
\fe197", ["massage"], 15, 19
38090 ["💇"], "
\e31f", "
\fe198", ["haircut"], 15, 20
38093 ["💈"], "
\e320", "
\fe199", ["barber"], 15, 21
38096 ["💉"], "
\e13b", "
\fe509", ["syringe"], 15, 22
38099 ["💊"], "
\e30f", "
\fe50a", ["pill"], 15, 23
38102 ["💋"], "
\e003", "
\fe823", ["kiss"], 15, 24
38105 ["💌"], "
\e103\e328", "
\fe824", ["love_letter"], 15, 25
38108 ["💍"], "
\e034", "
\fe825", ["ring"], 15, 26
38111 ["💎"], "
\e035", "
\fe826", ["gem"], 15, 27
38114 ["💏"], "
\e111", "
\fe827", ["couplekiss"], 15, 28
38117 ["💐"], "
\e306", "
\fe828", ["bouquet"], 15, 29
38120 ["💑"], "
\e425", "
\fe829", ["couple_with_heart"], 16, 0
38123 ["💒"], "
\e43d", "
\fe82a", ["wedding"], 16, 1
38126 ["💓"], "
\e327", "
\feb0d", ["heartbeat"], 16, 2
38129 ["💔"], "
\e023", "
\feb0e", ["broken_heart"], 16, 3, "</3"
38132 ["💕"], "
\e327", "
\feb0f", ["two_hearts"], 16, 4
38135 ["💖"], "
\e327", "
\feb10", ["sparkling_heart"], 16, 5
38138 ["💗"], "
\e328", "
\feb11", ["heartpulse"], 16, 6
38141 ["💘"], "
\e329", "
\feb12", ["cupid"], 16, 7
38144 ["💙"], "
\e32a", "
\feb13", ["blue_heart"], 16, 8, "<3"
38147 ["💚"], "
\e32b", "
\feb14", ["green_heart"], 16, 9, "<3"
38150 ["💛"], "
\e32c", "
\feb15", ["yellow_heart"], 16, 10, "<3"
38153 ["💜"], "
\e32d", "
\feb16", ["purple_heart"], 16, 11, "<3"
38156 ["💝"], "
\e437", "
\feb17", ["gift_heart"], 16, 12
38159 ["💞"], "
\e327", "
\feb18", ["revolving_hearts"], 16, 13
38162 ["💟"], "
\e204", "
\feb19", ["heart_decoration"], 16, 14
38165 ["💠"], "", "
\feb55", ["diamond_shape_with_a_dot_inside"], 16, 15
38168 ["💡"], "
\e10f", "
\feb56", ["bulb"], 16, 16
38171 ["💢"], "
\e334", "
\feb57", ["anger"], 16, 17
38174 ["💣"], "
\e311", "
\feb58", ["bomb"], 16, 18
38177 ["💤"], "
\e13c", "
\feb59", ["zzz"], 16, 19
38180 ["💥"], "", "
\feb5a", ["boom", "collision"], 16, 20
38183 ["💦"], "
\e331", "
\feb5b", ["sweat_drops"], 16, 21
38186 ["💧"], "
\e331", "
\feb5c", ["droplet"], 16, 22
38189 ["💨"], "
\e330", "
\feb5d", ["dash"], 16, 23
38192 ["💩"], "
\e05a", "
\fe4f4", ["hankey", "poop", "shit"], 16, 24
38195 ["💪"], "
\e14c", "
\feb5e", ["muscle"], 16, 25
38198 ["💫"], "
\e407", "
\feb5f", ["dizzy"], 16, 26
38201 ["💬"], "", "
\fe532", ["speech_balloon"], 16, 27
38204 ["💭"], "", "", ["thought_balloon"], 16, 28
38207 ["💮"], "", "
\feb7a", ["white_flower"], 16, 29
38210 ["💯"], "", "
\feb7b", ["100"], 17, 0
38213 ["💰"], "
\e12f", "
\fe4dd", ["moneybag"], 17, 1
38216 ["💱"], "
\e149", "
\fe4de", ["currency_exchange"], 17, 2
38219 ["💲"], "
\e12f", "
\fe4e0", ["heavy_dollar_sign"], 17, 3
38222 ["💳"], "", "
\fe4e1", ["credit_card"], 17, 4
38225 ["💴"], "", "
\fe4e2", ["yen"], 17, 5
38228 ["💵"], "
\e12f", "
\fe4e3", ["dollar"], 17, 6
38231 ["💶"], "", "", ["euro"], 17, 7
38234 ["💷"], "", "", ["pound"], 17, 8
38237 ["💸"], "", "
\fe4e4", ["money_with_wings"], 17, 9
38240 ["💹"], "
\e14a", "
\fe4df", ["chart"], 17, 10
38243 ["💺"], "
\e11f", "
\fe537", ["seat"], 17, 11
38246 ["💻"], "
\e00c", "
\fe538", ["computer"], 17, 12
38249 ["💼"], "
\e11e", "
\fe53b", ["briefcase"], 17, 13
38252 ["💽"], "
\e316", "
\fe53c", ["minidisc"], 17, 14
38255 ["💾"], "
\e316", "
\fe53d", ["floppy_disk"], 17, 15
38258 ["💿"], "
\e126", "
\fe81d", ["cd"], 17, 16
38261 ["📀"], "
\e127", "
\fe81e", ["dvd"], 17, 17
38264 ["📁"], "", "
\fe543", ["file_folder"], 17, 18
38267 ["📂"], "", "
\fe544", ["open_file_folder"], 17, 19
38270 ["📃"], "
\e301", "
\fe540", ["page_with_curl"], 17, 20
38273 ["📄"], "
\e301", "
\fe541", ["page_facing_up"], 17, 21
38276 ["📅"], "", "
\fe542", ["date"], 17, 22
38279 ["📆"], "", "
\fe549", ["calendar"], 17, 23
38282 ["📇"], "
\e148", "
\fe54d", ["card_index"], 17, 24
38285 ["📈"], "
\e14a", "
\fe54b", ["chart_with_upwards_trend"], 17, 25
38288 ["📉"], "", "
\fe54c", ["chart_with_downwards_trend"], 17, 26
38291 ["📊"], "
\e14a", "
\fe54a", ["bar_chart"], 17, 27
38294 ["📋"], "
\e301", "
\fe548", ["clipboard"], 17, 28
38297 ["📌"], "", "
\fe54e", ["pushpin"], 17, 29
38300 ["📍"], "", "
\fe53f", ["round_pushpin"], 18, 0
38303 ["📎"], "", "
\fe53a", ["paperclip"], 18, 1
38306 ["📏"], "", "
\fe550", ["straight_ruler"], 18, 2
38309 ["📐"], "", "
\fe551", ["triangular_ruler"], 18, 3
38312 ["📑"], "
\e301", "
\fe552", ["bookmark_tabs"], 18, 4
38315 ["📒"], "
\e148", "
\fe54f", ["ledger"], 18, 5
38318 ["📓"], "
\e148", "
\fe545", ["notebook"], 18, 6
38321 ["📔"], "
\e148", "
\fe547", ["notebook_with_decorative_cover"], 18, 7
38324 ["📕"], "
\e148", "
\fe502", ["closed_book"], 18, 8
38327 ["📖"], "
\e148", "
\fe546", ["book", "open_book"], 18, 9
38330 ["📗"], "
\e148", "
\fe4ff", ["green_book"], 18, 10
38333 ["📘"], "
\e148", "
\fe500", ["blue_book"], 18, 11
38336 ["📙"], "
\e148", "
\fe501", ["orange_book"], 18, 12
38339 ["📚"], "
\e148", "
\fe503", ["books"], 18, 13
38342 ["📛"], "", "
\fe504", ["name_badge"], 18, 14
38345 ["📜"], "", "
\fe4fd", ["scroll"], 18, 15
38348 ["📝"], "
\e301", "
\fe527", ["memo", "pencil"], 18, 16
38351 ["📞"], "
\e009", "
\fe524", ["telephone_receiver"], 18, 17
38354 ["📟"], "", "
\fe522", ["pager"], 18, 18
38357 ["📠"], "
\e00b", "
\fe528", ["fax"], 18, 19
38360 ["📡"], "
\e14b", "
\fe531", ["satellite"], 18, 20
38363 ["📢"], "
\e142", "
\fe52f", ["loudspeaker"], 18, 21
38366 ["📣"], "
\e317", "
\fe530", ["mega"], 18, 22
38369 ["📤"], "", "
\fe533", ["outbox_tray"], 18, 23
38372 ["📥"], "", "
\fe534", ["inbox_tray"], 18, 24
38375 ["📦"], "
\e112", "
\fe535", ["package"], 18, 25
38378 ["📧"], "
\e103", "
\feb92", ["e-mail"], 18, 26
38381 ["📨"], "
\e103", "
\fe52a", ["incoming_envelope"], 18, 27
38384 ["📩"], "
\e103", "
\fe52b", ["envelope_with_arrow"], 18, 28
38387 ["📪"], "
\e101", "
\fe52c", ["mailbox_closed"], 18, 29
38390 ["📫"], "
\e101", "
\fe52d", ["mailbox"], 19, 0
38393 ["📬"], "", "", ["mailbox_with_mail"], 19, 1
38396 ["📭"], "", "", ["mailbox_with_no_mail"], 19, 2
38399 ["📮"], "
\e102", "
\fe52e", ["postbox"], 19, 3
38402 ["📯"], "", "", ["postal_horn"], 19, 4
38405 ["📰"], "", "
\fe822", ["newspaper"], 19, 5
38408 ["📱"], "
\e00a", "
\fe525", ["iphone"], 19, 6
38411 ["📲"], "
\e104", "
\fe526", ["calling"], 19, 7
38414 ["📳"], "
\e250", "
\fe839", ["vibration_mode"], 19, 8
38417 ["📴"], "
\e251", "
\fe83a", ["mobile_phone_off"], 19, 9
38420 ["📵"], "", "", ["no_mobile_phones"], 19, 10
38423 ["📶"], "
\e20b", "
\fe838", ["signal_strength"], 19, 11
38426 ["📷"], "
\e008", "
\fe4ef", ["camera"], 19, 12
38429 ["📹"], "
\e03d", "
\fe4f9", ["video_camera"], 19, 13
38432 ["📺"], "
\e12a", "
\fe81c", ["tv"], 19, 14
38435 ["📻"], "
\e128", "
\fe81f", ["radio"], 19, 15
38438 ["📼"], "
\e129", "
\fe820", ["vhs"], 19, 16
38441 ["🔀"], "", "", ["twisted_rightwards_arrows"], 19, 17
38444 ["🔁"], "", "", ["repeat"], 19, 18
38447 ["🔂"], "", "", ["repeat_one"], 19, 19
38450 ["🔃"], "", "
\feb91", ["arrows_clockwise"], 19, 20
38453 ["🔄"], "", "", ["arrows_counterclockwise"], 19, 21
38456 ["🔅"], "", "", ["low_brightness"], 19, 22
38459 ["🔆"], "", "", ["high_brightness"], 19, 23
38462 ["🔇"], "", "", ["mute"], 19, 24
38465 ["🔈"], "", "", ["speaker"], 19, 25
38468 ["🔉"], "", "", ["sound"], 19, 26
38471 ["🔊"], "
\e141", "
\fe821", ["loud_sound"], 19, 27
38474 ["🔋"], "", "
\fe4fc", ["battery"], 19, 28
38477 ["🔌"], "", "
\fe4fe", ["electric_plug"], 19, 29
38480 ["🔍"], "
\e114", "
\feb85", ["mag"], 20, 0
38483 ["🔎"], "
\e114", "
\feb8d", ["mag_right"], 20, 1
38486 ["🔏"], "
\e144", "
\feb90", ["lock_with_ink_pen"], 20, 2
38489 ["🔐"], "
\e144", "
\feb8a", ["closed_lock_with_key"], 20, 3
38492 ["🔑"], "
\e03f", "
\feb82", ["key"], 20, 4
38495 ["🔒"], "
\e144", "
\feb86", ["lock"], 20, 5
38498 ["🔓"], "
\e145", "
\feb87", ["unlock"], 20, 6
38501 ["🔔"], "
\e325", "
\fe4f2", ["bell"], 20, 7
38504 ["🔕"], "", "", ["no_bell"], 20, 8
38507 ["🔖"], "", "
\feb8f", ["bookmark"], 20, 9
38510 ["🔗"], "", "
\feb4b", ["link"], 20, 10
38513 ["🔘"], "", "
\feb8c", ["radio_button"], 20, 11
38516 ["🔙"], "
\e235", "
\feb8e", ["back"], 20, 12
38519 ["🔚"], "", "
\fe01a", ["end"], 20, 13
38522 ["🔛"], "", "
\fe019", ["on"], 20, 14
38525 ["🔜"], "", "
\fe018", ["soon"], 20, 15
38528 ["🔝"], "
\e24c", "
\feb42", ["top"], 20, 16
38531 ["🔞"], "
\e207", "
\feb25", ["underage"], 20, 17
38534 ["🔟"], "", "
\fe83b", ["keycap_ten"], 20, 18
38537 ["🔠"], "", "
\feb7c", ["capital_abcd"], 20, 19
38540 ["🔡"], "", "
\feb7d", ["abcd"], 20, 20
38543 ["🔢"], "", "
\feb7e", ["1234"], 20, 21
38546 ["🔣"], "", "
\feb7f", ["symbols"], 20, 22
38549 ["🔤"], "", "
\feb80", ["abc"], 20, 23
38552 ["🔥"], "
\e11d", "
\fe4f6", ["fire"], 20, 24
38555 ["🔦"], "", "
\fe4fb", ["flashlight"], 20, 25
38558 ["🔧"], "", "
\fe4c9", ["wrench"], 20, 26
38561 ["🔨"], "
\e116", "
\fe4ca", ["hammer"], 20, 27
38564 ["🔩"], "", "
\fe4cb", ["nut_and_bolt"], 20, 28
38567 ["🔪"], "", "
\fe4fa", ["hocho", "knife"], 20, 29
38570 ["🔫"], "
\e113", "
\fe4f5", ["gun"], 21, 0
38573 ["🔬"], "", "", ["microscope"], 21, 1
38576 ["🔭"], "", "", ["telescope"], 21, 2
38579 ["🔮"], "
\e23e", "
\fe4f7", ["crystal_ball"], 21, 3
38582 ["🔯"], "
\e23e", "
\fe4f8", ["six_pointed_star"], 21, 4
38585 ["🔰"], "
\e209", "
\fe044", ["beginner"], 21, 5
38588 ["🔱"], "
\e031", "
\fe4d2", ["trident"], 21, 6
38591 ["🔲"], "
\e21a", "
\feb64", ["black_square_button"], 21, 7
38594 ["🔳"], "
\e21b", "
\feb67", ["white_square_button"], 21, 8
38597 ["🔴"], "
\e219", "
\feb63", ["red_circle"], 21, 9
38600 ["🔵"], "
\e21a", "
\feb64", ["large_blue_circle"], 21, 10
38603 ["🔶"], "
\e21b", "
\feb73", ["large_orange_diamond"], 21, 11
38606 ["🔷"], "
\e21b", "
\feb74", ["large_blue_diamond"], 21, 12
38609 ["🔸"], "
\e21b", "
\feb75", ["small_orange_diamond"], 21, 13
38612 ["🔹"], "
\e21b", "
\feb76", ["small_blue_diamond"], 21, 14
38615 ["🔺"], "", "
\feb78", ["small_red_triangle"], 21, 15
38618 ["🔻"], "", "
\feb79", ["small_red_triangle_down"], 21, 16
38621 ["🔼"], "", "
\feb01", ["arrow_up_small"], 21, 17
38624 ["🔽"], "", "
\feb00", ["arrow_down_small"], 21, 18
38627 ["🕐"], "
\e024", "
\fe01e", ["clock1"], 21, 19
38630 ["🕑"], "
\e025", "
\fe01f", ["clock2"], 21, 20
38633 ["🕒"], "
\e026", "
\fe020", ["clock3"], 21, 21
38636 ["🕓"], "
\e027", "
\fe021", ["clock4"], 21, 22
38639 ["🕔"], "
\e028", "
\fe022", ["clock5"], 21, 23
38642 ["🕕"], "
\e029", "
\fe023", ["clock6"], 21, 24
38645 ["🕖"], "
\e02a", "
\fe024", ["clock7"], 21, 25
38648 ["🕗"], "
\e02b", "
\fe025", ["clock8"], 21, 26
38651 ["🕘"], "
\e02c", "
\fe026", ["clock9"], 21, 27
38654 ["🕙"], "
\e02d", "
\fe027", ["clock10"], 21, 28
38657 ["🕚"], "
\e02e", "
\fe028", ["clock11"], 21, 29
38660 ["🕛"], "
\e02f", "
\fe029", ["clock12"], 22, 0
38663 ["🕜"], "", "", ["clock130"], 22, 1
38666 ["🕝"], "", "", ["clock230"], 22, 2
38669 ["🕞"], "", "", ["clock330"], 22, 3
38672 ["🕟"], "", "", ["clock430"], 22, 4
38675 ["🕠"], "", "", ["clock530"], 22, 5
38678 ["🕡"], "", "", ["clock630"], 22, 6
38681 ["🕢"], "", "", ["clock730"], 22, 7
38684 ["🕣"], "", "", ["clock830"], 22, 8
38687 ["🕤"], "", "", ["clock930"], 22, 9
38690 ["🕥"], "", "", ["clock1030"], 22, 10
38693 ["🕦"], "", "", ["clock1130"], 22, 11
38696 ["🕧"], "", "", ["clock1230"], 22, 12
38699 ["🗻"], "
\e03b", "
\fe4c3", ["mount_fuji"], 22, 13
38702 ["🗼"], "
\e509", "
\fe4c4", ["tokyo_tower"], 22, 14
38705 ["🗽"], "
\e51d", "
\fe4c6", ["statue_of_liberty"], 22, 15
38708 ["🗾"], "", "
\fe4c7", ["japan"], 22, 16
38711 ["🗿"], "", "
\fe4c8", ["moyai"], 22, 17
38714 ["😀"], "", "", ["grinning"], 22, 18, ":D"
38717 ["😁"], "
\e404", "
\fe333", ["grin"], 22, 19
38720 ["😂"], "
\e412", "
\fe334", ["joy"], 22, 20
38723 ["😃"], "
\e057", "
\fe330", ["smiley"], 22, 21, ":)"
38726 ["😄"], "
\e415", "
\fe338", ["smile"], 22, 22, ":)"
38729 ["😅"], "
\e415\e331", "
\fe331", ["sweat_smile"], 22, 23
38732 ["😆"], "
\e40a", "
\fe332", ["satisfied"], 22, 24
38735 ["😇"], "", "", ["innocent"], 22, 25
38738 ["😈"], "", "", ["smiling_imp"], 22, 26
38741 ["😉"], "
\e405", "
\fe347", ["wink"], 22, 27, ";)"
38744 ["😊"], "
\e056", "
\fe335", ["blush"], 22, 28
38747 ["😋"], "
\e056", "
\fe32b", ["yum"], 22, 29
38750 ["😌"], "
\e40a", "
\fe33e", ["relieved"], 23, 0
38753 ["😍"], "
\e106", "
\fe327", ["heart_eyes"], 23, 1
38756 ["😎"], "", "", ["sunglasses"], 23, 2
38759 ["😏"], "
\e402", "
\fe343", ["smirk"], 23, 3
38762 ["😐"], "", "", ["neutral_face"], 23, 4
38765 ["😑"], "", "", ["expressionless"], 23, 5
38768 ["😒"], "
\e40e", "
\fe326", ["unamused"], 23, 6
38771 ["😓"], "
\e108", "
\fe344", ["sweat"], 23, 7
38774 ["😔"], "
\e403", "
\fe340", ["pensive"], 23, 8
38777 ["😕"], "", "", ["confused"], 23, 9
38780 ["😖"], "
\e407", "
\fe33f", ["confounded"], 23, 10
38783 ["😗"], "", "", ["kissing"], 23, 11
38786 ["😘"], "
\e418", "
\fe32c", ["kissing_heart"], 23, 12
38789 ["😙"], "", "", ["kissing_smiling_eyes"], 23, 13
38792 ["😚"], "
\e417", "
\fe32d", ["kissing_closed_eyes"], 23, 14
38795 ["😛"], "", "", ["stuck_out_tongue"], 23, 15, ":p"
38798 ["😜"], "
\e105", "
\fe329", ["stuck_out_tongue_winking_eye"], 23, 16, ";p"
38801 ["😝"], "
\e409", "
\fe32a", ["stuck_out_tongue_closed_eyes"], 23, 17
38804 ["😞"], "
\e058", "
\fe323", ["disappointed"], 23, 18, ":("
38807 ["😟"], "", "", ["worried"], 23, 19
38810 ["😠"], "
\e059", "
\fe320", ["angry"], 23, 20
38813 ["😡"], "
\e416", "
\fe33d", ["rage"], 23, 21
38816 ["😢"], "
\e413", "
\fe339", ["cry"], 23, 22, ":'("
38819 ["😣"], "
\e406", "
\fe33c", ["persevere"], 23, 23
38822 ["😤"], "
\e404", "
\fe328", ["triumph"], 23, 24
38825 ["😥"], "
\e401", "
\fe345", ["disappointed_relieved"], 23, 25
38828 ["😦"], "", "", ["frowning"], 23, 26
38831 ["😧"], "", "", ["anguished"], 23, 27
38834 ["😨"], "
\e40b", "
\fe33b", ["fearful"], 23, 28
38837 ["😩"], "
\e403", "
\fe321", ["weary"], 23, 29
38840 ["😪"], "
\e408", "
\fe342", ["sleepy"], 24, 0
38843 ["😫"], "
\e406", "
\fe346", ["tired_face"], 24, 1
38846 ["😬"], "", "", ["grimacing"], 24, 2
38849 ["😭"], "
\e411", "
\fe33a", ["sob"], 24, 3, ":'("
38852 ["😮"], "", "", ["open_mouth"], 24, 4
38855 ["😯"], "", "", ["hushed"], 24, 5
38858 ["😰"], "
\e40f", "
\fe325", ["cold_sweat"], 24, 6
38861 ["😱"], "
\e107", "
\fe341", ["scream"], 24, 7
38864 ["😲"], "
\e410", "
\fe322", ["astonished"], 24, 8
38867 ["😳"], "
\e40d", "
\fe32f", ["flushed"], 24, 9
38870 ["😴"], "", "", ["sleeping"], 24, 10
38873 ["😵"], "
\e406", "
\fe324", ["dizzy_face"], 24, 11
38876 ["😶"], "", "", ["no_mouth"], 24, 12
38879 ["😷"], "
\e40c", "
\fe32e", ["mask"], 24, 13
38882 ["😸"], "
\e404", "
\fe349", ["smile_cat"], 24, 14
38885 ["😹"], "
\e412", "
\fe34a", ["joy_cat"], 24, 15
38888 ["😺"], "
\e057", "
\fe348", ["smiley_cat"], 24, 16
38891 ["😻"], "
\e106", "
\fe34c", ["heart_eyes_cat"], 24, 17
38894 ["😼"], "
\e404", "
\fe34f", ["smirk_cat"], 24, 18
38897 ["😽"], "
\e418", "
\fe34b", ["kissing_cat"], 24, 19
38900 ["😾"], "
\e416", "
\fe34e", ["pouting_cat"], 24, 20
38903 ["😿"], "
\e413", "
\fe34d", ["crying_cat_face"], 24, 21
38906 ["🙀"], "
\e403", "
\fe350", ["scream_cat"], 24, 22
38909 ["🙅"], "
\e423", "
\fe351", ["no_good"], 24, 23
38912 ["🙆"], "
\e424", "
\fe352", ["ok_woman"], 24, 24
38915 ["🙇"], "
\e426", "
\fe353", ["bow"], 24, 25
38918 ["🙈"], "", "
\fe354", ["see_no_evil"], 24, 26
38921 ["🙉"], "", "
\fe356", ["hear_no_evil"], 24, 27
38924 ["🙊"], "", "
\fe355", ["speak_no_evil"], 24, 28
38927 ["🙋"], "
\e012", "
\fe357", ["raising_hand"], 24, 29
38930 ["🙌"], "
\e427", "
\fe358", ["raised_hands"], 25, 0
38933 ["🙍"], "
\e403", "
\fe359", ["person_frowning"], 25, 1
38936 ["🙎"], "
\e416", "
\fe35a", ["person_with_pouting_face"], 25, 2
38939 ["🙏"], "
\e41d", "
\fe35b", ["pray"], 25, 3
38942 ["🚀"], "
\e10d", "
\fe7ed", ["rocket"], 25, 4
38945 ["🚁"], "", "", ["helicopter"], 25, 5
38948 ["🚂"], "", "", ["steam_locomotive"], 25, 6
38951 ["🚃"], "
\e01e", "
\fe7df", ["railway_car"], 25, 7
38954 ["🚄"], "
\e435", "
\fe7e2", ["bullettrain_side"], 25, 8
38957 ["🚅"], "
\e01f", "
\fe7e3", ["bullettrain_front"], 25, 9
38960 ["🚆"], "", "", ["train2"], 25, 10
38963 ["🚇"], "
\e434", "
\fe7e0", ["metro"], 25, 11
38966 ["🚈"], "", "", ["light_rail"], 25, 12
38969 ["🚉"], "
\e039", "
\fe7ec", ["station"], 25, 13
38972 ["🚊"], "", "", ["tram"], 25, 14
38975 ["🚋"], "", "", ["train"], 25, 15
38978 ["🚌"], "
\e159", "
\fe7e6", ["bus"], 25, 16
38981 ["🚍"], "", "", ["oncoming_bus"], 25, 17
38984 ["🚎"], "", "", ["trolleybus"], 25, 18
38987 ["🚏"], "
\e150", "
\fe7e7", ["busstop"], 25, 19
38990 ["🚐"], "", "", ["minibus"], 25, 20
38993 ["🚑"], "
\e431", "
\fe7f3", ["ambulance"], 25, 21
38996 ["🚒"], "
\e430", "
\fe7f2", ["fire_engine"], 25, 22
38999 ["🚓"], "
\e432", "
\fe7f4", ["police_car"], 25, 23
39002 ["🚔"], "", "", ["oncoming_police_car"], 25, 24
39005 ["🚕"], "
\e15a", "
\fe7ef", ["taxi"], 25, 25
39008 ["🚖"], "", "", ["oncoming_taxi"], 25, 26
39011 ["🚗"], "
\e01b", "
\fe7e4", ["car", "red_car"], 25, 27
39014 ["🚘"], "", "", ["oncoming_automobile"], 25, 28
39017 ["🚙"], "
\e42e", "
\fe7e5", ["blue_car"], 25, 29
39020 ["🚚"], "
\e42f", "
\fe7f1", ["truck"], 26, 0
39023 ["🚛"], "", "", ["articulated_lorry"], 26, 1
39026 ["🚜"], "", "", ["tractor"], 26, 2
39029 ["🚝"], "", "", ["monorail"], 26, 3
39032 ["🚞"], "", "", ["mountain_railway"], 26, 4
39035 ["🚟"], "", "", ["suspension_railway"], 26, 5
39038 ["🚠"], "", "", ["mountain_cableway"], 26, 6
39041 ["🚡"], "", "", ["aerial_tramway"], 26, 7
39044 ["🚢"], "
\e202", "
\fe7e8", ["ship"], 26, 8
39047 ["🚣"], "", "", ["rowboat"], 26, 9
39050 ["🚤"], "
\e135", "
\fe7ee", ["speedboat"], 26, 10
39053 ["🚥"], "
\e14e", "
\fe7f7", ["traffic_light"], 26, 11
39056 ["🚦"], "", "", ["vertical_traffic_light"], 26, 12
39059 ["🚧"], "
\e137", "
\fe7f8", ["construction"], 26, 13
39062 ["🚨"], "
\e432", "
\fe7f9", ["rotating_light"], 26, 14
39065 ["🚩"], "", "
\feb22", ["triangular_flag_on_post"], 26, 15
39068 ["🚪"], "", "
\fe4f3", ["door"], 26, 16
39071 ["🚫"], "", "
\feb48", ["no_entry_sign"], 26, 17
39074 ["🚬"], "
\e30e", "
\feb1e", ["smoking"], 26, 18
39077 ["🚭"], "
\e208", "
\feb1f", ["no_smoking"], 26, 19
39080 ["🚮"], "", "", ["put_litter_in_its_place"], 26, 20
39083 ["🚯"], "", "", ["do_not_litter"], 26, 21
39086 ["🚰"], "", "", ["potable_water"], 26, 22
39089 ["🚱"], "", "", ["non-potable_water"], 26, 23
39092 ["🚲"], "
\e136", "
\fe7eb", ["bike"], 26, 24
39095 ["🚳"], "", "", ["no_bicycles"], 26, 25
39098 ["🚴"], "", "", ["bicyclist"], 26, 26
39101 ["🚵"], "", "", ["mountain_bicyclist"], 26, 27
39104 ["🚶"], "
\e201", "
\fe7f0", ["walking"], 26, 28
39107 ["🚷"], "", "", ["no_pedestrians"], 26, 29
39110 ["🚸"], "", "", ["children_crossing"], 27, 0
39113 ["🚹"], "
\e138", "
\feb33", ["mens"], 27, 1
39116 ["🚺"], "
\e139", "
\feb34", ["womens"], 27, 2
39119 ["🚻"], "
\e151", "
\fe506", ["restroom"], 27, 3
39122 ["🚼"], "
\e13a", "
\feb35", ["baby_symbol"], 27, 4
39125 ["🚽"], "
\e140", "
\fe507", ["toilet"], 27, 5
39128 ["🚾"], "
\e309", "
\fe508", ["wc"], 27, 6
39131 ["🚿"], "", "", ["shower"], 27, 7
39134 ["🛀"], "
\e13f", "
\fe505", ["bath"], 27, 8
39137 ["🛁"], "", "", ["bathtub"], 27, 9
39140 ["🛂"], "", "", ["passport_control"], 27, 10
39143 ["🛃"], "", "", ["customs"], 27, 11
39146 ["🛄"], "", "", ["baggage_claim"], 27, 12
39149 ["🛅"], "", "", ["left_luggage"], 27, 13
39152 ["#️⃣", "#⃣"], "
\e210", "
\fe82c", ["hash"], 27, 14
39155 ["0️⃣", "0⃣"], "
\e225", "
\fe837", ["zero"], 27, 15
39158 ["1️⃣", "1⃣"], "
\e21c", "
\fe82e", ["one"], 27, 16
39161 ["2️⃣", "2⃣"], "
\e21d", "
\fe82f", ["two"], 27, 17
39164 ["3️⃣", "3⃣"], "
\e21e", "
\fe830", ["three"], 27, 18
39167 ["4️⃣", "4⃣"], "
\e21f", "
\fe831", ["four"], 27, 19
39170 ["5️⃣", "5⃣"], "
\e220", "
\fe832", ["five"], 27, 20
39173 ["6️⃣", "6⃣"], "
\e221", "
\fe833", ["six"], 27, 21
39176 ["7️⃣", "7⃣"], "
\e222", "
\fe834", ["seven"], 27, 22
39179 ["8️⃣", "8⃣"], "
\e223", "
\fe835", ["eight"], 27, 23
39182 ["9️⃣", "9⃣"], "
\e224", "
\fe836", ["nine"], 27, 24
39185 ["🇨🇳"], "
\e513", "
\fe4ed", ["cn"], 27, 25
39188 ["🇩🇪"], "
\e50e", "
\fe4e8", ["de"], 27, 26
39191 ["🇪🇸"], "
\e511", "
\fe4eb", ["es"], 27, 27
39194 ["🇫🇷"], "
\e50d", "
\fe4e7", ["fr"], 27, 28
39197 ["🇬🇧"], "
\e510", "
\fe4ea", ["gb", "uk"], 27, 29
39200 ["🇮🇹"], "
\e50f", "
\fe4e9", ["it"], 28, 0
39203 ["🇯🇵"], "
\e50b", "
\fe4e5", ["jp"], 28, 1
39206 ["🇰🇷"], "
\e514", "
\fe4ee", ["kr"], 28, 2
39209 ["🇷🇺"], "
\e512", "
\fe4ec", ["ru"], 28, 3
39212 ["🇺🇸"], "
\e50c", "
\fe4e6", ["us"], 28, 4
39214 }, Config.smileys = {
39216 "</3": "broken_heart",
39226 "):": "disappointed",
39227 ":(": "disappointed",
39228 ":-(": "disappointed",
39236 "8)": "sunglasses",
39237 ":\\\\": "confused",
39238 ":-\\\\": "confused",
39241 ":|": "neutral_face",
39242 ":-|": "neutral_face",
39243 ":o": "open_mouth",
39244 ":-o": "open_mouth",
39247 ":p": "stuck_out_tongue",
39248 ":-p": "stuck_out_tongue",
39249 ":P": "stuck_out_tongue",
39250 ":-P": "stuck_out_tongue",
39251 ":b": "stuck_out_tongue",
39252 ":-b": "stuck_out_tongue",
39253 ";p": "stuck_out_tongue_winking_eye",
39254 ";-p": "stuck_out_tongue_winking_eye",
39255 ";b": "stuck_out_tongue_winking_eye",
39256 ";-b": "stuck_out_tongue_winking_eye",
39257 ";P": "stuck_out_tongue_winking_eye",
39258 ";-P": "stuck_out_tongue_winking_eye",
39259 ":o)": "monkey_face",
39261 }, Config.inits = {}, Config.map = {}, Config.mapcolon = {};
39263 Config.reversemap = {}, Config.init_emoticons = function() {
39264 if (!Config.inits.emoticons) {
39265 Config.init_colons(), Config.inits.emoticons = 1;
39267 Config.map.emoticons = {};
39268 for (var t in Config.emoticons_data) {
39269 var n = t.replace(/\&/g, "&").replace(/\</g, "<").replace(/\>/g, ">");
39270 Config.map.colons[emoji.emoticons_data[t]] && (Config.map.emoticons[n] = Config.map.colons[Config.emoticons_data[t]], e.push(Config.escape_rx(n)))
39272 Config.rx_emoticons = new RegExp("(^|\\s)(" + e.join("|") + ")(?=$|[\\s|\\?\\.,!])", "g")
39274 }, Config.init_colons = function() {
39275 if (!Config.inits.colons) {
39276 Config.inits.colons = 1, Config.rx_colons = new RegExp(":[^\\s:]+:", "g"), Config.map.colons = {};
39277 for (var e in Config.data)
39278 for (var t = 0; t < Config.data[e][3].length; t++) Config.map.colons[emoji.data[e][3][t]] = e
39280 }, Config.init_unified = function() {
39281 Config.inits.unified || (Config.inits.unified = 1, buildMap())
39282 }, Config.escape_rx = function(e) {
39283 return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
39287 return r ? (r = !1, "") : n
39292 o = !!(e.chrome && chrome.storage && chrome.storage.local),
39293 a = !o && !!e.localStorage;
39294 e.ConfigStorage = {
39295 prefix: function(e) {
39298 noPrefix: function() {
39302 var e, n, r, s = Array.prototype.slice.call(arguments),
39308 for (n = 0; n < s.length; n++)
39309 if ("xt_" != (r = s[n] = f + s[n]).substr(0, 3) && void 0 !== i[r]) l.push(i[r]);
39312 e = localStorage.getItem(r)
39317 e = void 0 !== e && null !== e && JSON.parse(e)
39322 } else o ? d = !1 : l.push(i[r] = !1);
39323 if (d) return c(u ? l[0] : l);
39324 chrome.storage.local.get(s, function(e) {
39326 for (l = [], n = 0; n < s.length; n++) t = void 0 !== (t = e[r = s[n]]) && null !== t && JSON.parse(t), l.push(i[r] = t);
39330 set: function(e, n) {
39334 if (e.hasOwnProperty(r))
39335 if (s = e[r], r = l + r, i[r] = s, s = JSON.stringify(s), a) try {
39336 localStorage.setItem(r, s)
39340 !a && o ? chrome.storage.local.set(c, n) : n && n()
39342 remove: function() {
39343 var e, n, r, s = Array.prototype.slice.call(arguments),
39345 for ("function" == typeof s[s.length - 1] && (r = s.pop()), e = 0; e < s.length; e++)
39346 if (n = s[e] = c + s[e], delete i[n], a) try {
39347 localStorage.removeItem(n)
39351 o ? chrome.storage.local.remove(s, r): r && r()
39355 function(e, t, n) {
39356 var r = [8, 9, 17, 18, 37, 38, 39, 40, 91, 46];
39360 emojiAttachmentLocation: "bottom right",
39361 emojiMenuLocation: "top left",
39364 var i = ":joy:,:kissing_heart:,:heart:,:heart_eyes:,:blush:,:grin:,:+1:,:relaxed:,:pensive:,:smile:,:sob:,:kiss:,:unamused:,:flushed:,:stuck_out_tongue_winking_eye:,:see_no_evil:,:wink:,:smiley:,:cry:,:stuck_out_tongue_closed_eyes:,:scream:,:rage:,:smirk:,:disappointed:,:sweat_smile:,:kissing_closed_eyes:,:speak_no_evil:,:relieved:,:grinning:,:yum:,:laughing:,:ok_hand:,:neutral_face:,:confused:".split(",");
39365 e.fn.emojiarea = function(t) {
39366 return (t = e.extend({}, t)).elemId && this.push(e("#" + t.elemId)), this.each(function() {
39369 new s(n, r, t), n.attr({
39370 "data-emojiable": "converted",
39372 "data-type": "original-input"
39377 o.restoreSelection = t.getSelection ? function(e) {
39378 var n = t.getSelection();
39379 n.removeAllRanges();
39380 for (var r = 0, i = e.length; r < i; ++r) n.addRange(e[r])
39381 } : n.selection && n.selection.createRange ? function(e) {
39383 } : void 0, o.saveSelection = t.getSelection ? function() {
39384 var e = t.getSelection(),
39387 for (var r = 0, i = e.rangeCount; r < i; ++r) n.push(e.getRangeAt(r));
39389 } : n.selection && n.selection.createRange ? function() {
39390 var e = n.selection;
39391 return "none" !== e.type.toLowerCase() ? e.createRange() : null
39392 } : void 0, o.replaceSelection = t.getSelection ? function(e) {
39393 var r, i = t.getSelection(),
39394 o = "string" == typeof e ? n.createTextNode(e) : e;
39395 i.getRangeAt && i.rangeCount && ((r = i.getRangeAt(0)).deleteContents(), r.insertNode(o), r.setStart(o, 0), t.setTimeout(function() {
39396 (r = n.createRange()).setStartAfter(o), r.collapse(!0), i.removeAllRanges(), i.addRange(r)
39398 } : n.selection && n.selection.createRange ? function(e) {
39399 var t = n.selection.createRange();
39400 "string" == typeof e ? t.text = e : t.pasteHTML(e.outerHTML)
39401 } : void 0, o.insertAtCursor = function(e, t) {
39403 var r, i, o = t.value;
39404 void 0 !== t.selectionStart && void 0 !== t.selectionEnd ? (r = t.selectionStart, t.selectionEnd, t.value = o.substring(0, r) + e + o.substring(t.selectionEnd), t.selectionStart = t.selectionEnd = r + e.length) : void 0 !== n.selection && void 0 !== n.selection.createRange && ((i = n.selection.createRange()).text = e, i.select())
39405 }, o.extend = function(e, t) {
39406 if (void 0 !== e && e || (e = {}), "object" == typeof t)
39407 for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
39409 }, o.escapeRegex = function(e) {
39410 return (e + "").replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1")
39411 }, o.htmlEntities = function(e) {
39412 return String(e).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """)
39413 }, o.emojiInserted = function(e, t) {
39414 ConfigStorage.get("emojis_recent", function(t) {
39415 var n = (t = t || i || []).indexOf(e);
39416 if (!n) return !1; - 1 != n && t.splice(n, 1), t.unshift(e), t.length > 42 && (t = t.slice(42)), ConfigStorage.set({
39421 var a = function() {};
39422 a.prototype.setup = function() {
39424 e.emojiMenu = new c(e), this.setupButton()
39425 }, a.prototype.setupButton = function() {
39427 n = e("[data-id=" + this.id + "][data-type=picker]");
39428 n.on("click", function(e) {
39429 t.emojiMenu.show(t)
39430 }), this.$button = n, this.$dontHideOnClick = "emoji-picker"
39431 }, a.createIcon = function(t, n) {
39436 c = e.emojiarea.assetsPath + "/emoji_spritesheet_!.png",
39437 l = e.emojiarea.assetsPath + "/blank.gif",
39438 u = n && Config.Mobile ? 26 : e.emojiarea.iconSize,
39441 h = Config.EmojiCategorySpritesheetDimens[r][1] * u,
39442 p = Config.EmojiCategorySpritesheetDimens[r][0] * u,
39443 m = "display:inline-block;";
39444 return m += "width:" + u + "px;", m += "height:" + u + "px;", m += "background:url('" + c.replace("!", r) + "') " + d + "px " + f + "px no-repeat;", m += "background-size:" + h + "px " + p + "px;", '<img src="' + l + '" class="img" style="' + m + '" alt="' + o.htmlEntities(s) + '">'
39445 }, e.emojiarea.createIcon = a.createIcon;
39446 var s = function(e, i, o) {
39447 this.options = o, this.$textarea = e, this.options.inputMethod = "unicode", this.emojiPopup = o.emojiPopup, this.$editor = e, this.id = i;
39448 var a = this.emojiPopup.unicodeToImage(e.val());
39449 this.$editor.html(a), this.$editor.attr({
39451 "data-type": "input",
39452 placeholder: e.attr("placeholder"),
39453 contenteditable: "true"
39455 this.options.norealTime;
39456 var s = this.$editor;
39457 if (this.$editor.on("change keydown keyup resize scroll", function(e) {
39458 -1 != r.indexOf(e.which) || (e.ctrlKey || e.metaKey) && 65 == e.which || (e.ctrlKey || e.metaKey) && 67 == e.which || !(s.text().length + s.find("img").length >= s.attr("maxlength")) || e.preventDefault()
39459 }), this.options.onPaste) {
39461 this.$editor.on("paste", function(e) {
39462 if (e.preventDefault(), (e.originalEvent || e).clipboardData) {
39463 var r = (e.originalEvent || e).clipboardData.getData("text/plain"),
39464 i = c.options.onPaste(r);
39465 n.execCommand("insertText", !1, i)
39466 } else if (t.clipboardData) {
39467 var r = t.clipboardData.getData("Text"),
39468 i = c.options.onPaste(r);
39469 n.selection.createRange().pasteHTML(i)
39471 s.scrollTop(s[0].scrollHeight)
39474 e.after("<i class='emoji-picker-icon emoji-picker " + this.options.popupButtonClasses + "' data-id='" + i + "' data-type='picker'></i>"), this.setup()
39476 s.prototype.insert = function(e) {
39478 t = this.emojiPopup.colonToUnicode(e), o.insertAtCursor(t, this.$textarea[0]), o.emojiInserted(e, this.menu), this.$textarea.trigger("change"), this.$textarea.focus()
39479 }, s.prototype.val = function() {
39480 return "\n" == this.$textarea ? "" : this.$textarea.val()
39481 }, o.extend(s.prototype, a.prototype), jQuery.fn.hasScrollbar = function() {
39482 var e = this.get(0).scrollHeight;
39483 return this.outerHeight() < e
39485 var c = function(r) {
39490 this.visible = !1, this.emojiarea = r, c.menuZIndex = 5e3, this.$menu = e("<div>"), this.$menu.addClass("emoji-menu"), this.$menu.attr("data-id", i.id), this.$menu.attr("data-type", "menu"), this.$menu.hide(), this.$itemsTailWrap = e('<div class="emoji-items-wrap1"></div>').appendTo(this.$menu), this.$categoryTabs = e('<table class="emoji-menu-tabs"><tr><td><a class="emoji-menu-tab icon-recent" ></a></td><td><a class="emoji-menu-tab icon-smile" ></a></td><td><a class="emoji-menu-tab icon-flower"></a></td><td><a class="emoji-menu-tab icon-bell"></a></td><td><a class="emoji-menu-tab icon-car"></a></td><td><a class="emoji-menu-tab icon-grid"></a></td></tr></table>').appendTo(this.$itemsTailWrap), this.$itemsWrap = e('<div class="emoji-items-wrap nano mobile_scrollable_wrap"></div>').appendTo(this.$itemsTailWrap), this.$items = e('<div class="emoji-items nano-content">').appendTo(this.$itemsWrap), o.append(this.$menu), Config.Mobile || this.$itemsWrap.nanoScroller({
39491 preventPageScrolling: !0,
39493 }), o.on("keydown", function(e) {
39494 27 !== e.keyCode && 9 !== e.keyCode || i.hide()
39495 }), o.on("message_send", function(e) {
39497 }), o.on("mouseup", function(n) {
39498 var r = (n = n.originalEvent || n).originalTarget || n.target || t;
39499 if (!e(r).hasClass(i.emojiarea.$dontHideOnClick)) {
39500 for (; r && r != t;)
39501 if ((r = r.parentNode) == i.$menu[0] || i.emojiarea && r == i.emojiarea.$button[0]) return;
39504 }), this.$menu.on("mouseup", "a", function(e) {
39505 return e.stopPropagation(), !1
39506 }), this.$menu.on("click", "a", function(n) {
39507 if (e(this).hasClass("emoji-menu-tab")) return i.getTabIndex(this) !== i.currentCategory && i.selectCategory(i.getTabIndex(this)), !1;
39508 var r = e(".label", e(this)).text();
39509 return t.setTimeout(function() {
39510 i.onItemSelected(r), (n.ctrlKey || n.metaKey) && i.hide()
39511 }, 0), n.stopPropagation(), !1
39512 }), this.selectCategory(0)
39514 c.prototype.getTabIndex = function(e) {
39515 return this.$categoryTabs.find(".emoji-menu-tab").index(e)
39516 }, c.prototype.selectCategory = function(e) {
39517 this.$categoryTabs.find(".emoji-menu-tab").each(function(t) {
39518 t === e ? this.className += "-selected" : this.className = this.className.replace("-selected", "")
39519 }), this.currentCategory = e, this.load(e), Config.Mobile || this.$itemsWrap.nanoScroller({
39522 }, c.prototype.onItemSelected = function(e) {
39523 this.emojiarea.$editor.text().length + this.emojiarea.$editor.find("img").length >= this.emojiarea.$editor.attr("maxlength") || this.emojiarea.insert(e)
39524 }, c.prototype.load = function(t) {
39526 r = e.emojiarea.icons,
39527 s = e.emojiarea.assetsPath,
39529 s.length && "/" !== s.charAt(s.length - 1) && (s += "/");
39530 var l = function() {
39531 c.$items.html(n.join("")), Config.Mobile || setTimeout(function() {
39532 c.$itemsWrap.nanoScroller()
39536 for (var u in r) r.hasOwnProperty(u) && r[u][0] === t - 1 && n.push('<a href="javascript:void(0)" title="' + o.htmlEntities(u) + '">' + a.createIcon(r[u], !0) + '<span class="label">' + o.htmlEntities(u) + "</span></a>");
39538 } else ConfigStorage.get("emojis_recent", function(e) {
39541 for (s = 0; s < e.length; s++) t = e[s], r[t] && n.push('<a href="javascript:void(0)" title="' + o.htmlEntities(t) + '">' + a.createIcon(r[t], !0) + '<span class="label">' + o.htmlEntities(t) + "</span></a>");
39544 }, c.prototype.reposition = function(e, t) {
39545 this.tether = new Tether({
39546 element: '[data-id="' + this.id + '"][data-type="menu"]',
39547 target: '[data-id="' + this.id + '"][data-type="picker"]',
39549 targetAttachment: t,
39555 }, c.prototype.hide = function(e) {
39556 this.visible = !1, this.$menu.hide("fast")
39557 }, c.prototype.show = function(t) {
39558 if (this.visible) return this.hide();
39559 this.reposition(t.options.emojiAttachmentLocation, t.options.emojiMenuLocation), e(this.$menu).css("z-index", ++c.menuZIndex), this.$menu.show("fast"), this.currentCategory || this.load(0), this.visible = !0, this.tether.position()
39560 }, angular.module("ngEmojiPicker", []).directive("emojiPicker", ["$timeout", function(e) {
39562 link: function(t, n, r) {
39563 var i = r.emojiAttachmentLocation || "bottom right",
39564 o = r.emojiMenuLocation || "top left",
39566 s = r.emojiAssetsPath || "/assets/images/ng-emoji-picker",
39567 c = r.emojiPopupButtonClasses || "fa fa-smile-o",
39568 l = new EmojiPicker({
39569 emojiable_selector: '[emoji-picker="emoji-picker"]',
39571 popupButtonClasses: c,
39572 emojiAttachmentLocation: i,
39573 emojiMenuLocation: o,
39582 }(jQuery, window, document),
39584 this.EmojiPicker = function() {
39587 null == e && (e = {}), $.emojiarea.iconSize = null != (t = e.iconSize) ? t : 25, $.emojiarea.assetsPath = null != (n = e.assetsPath) ? n : "", this.generateEmojiIconSets(e), e.emojiable_selector || (e.emojiable_selector = "[data-emojiable=true]"), this.options = e
39589 return e.prototype.discover = function() {
39590 if (!(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream)) return $(this.options.emojiable_selector).emojiarea($.extend({
39594 }, e.prototype.generateEmojiIconSets = function(e) {
39595 var t, n, r, i, o, a, s, c, l;
39596 for (i = {}, s = {}, r = void 0, o = void 0, void 0, a = void 0, n = void 0, c = void 0, t = void 0, l = void 0, o = 0; o < Config.EmojiCategories.length;) {
39597 for (l = Config.EmojiCategorySpritesheetDimens[o][1], r = 0; r < Config.EmojiCategories[o].length;) a = (n = Config.Emoji[Config.EmojiCategories[o][r]])[1][0], c = Math.floor(r / l), t = r % l, i[":" + a + ":"] = [o, c, t, ":" + a + ":"], s[a] = n[0], r++;
39600 return $.emojiarea.icons = i, $.emojiarea.reverseIcons = s
39601 }, e.prototype.colonToUnicode = function(e) {
39602 return e ? (Config.rx_colons || Config.init_unified(), e.replace(Config.rx_colons, function(e) {
39603 return Config.mapcolon[e] || ""
39605 }, e.prototype.unicodeToImage = function(e) {
39606 return e ? (Config.rx_codes || Config.init_unified(), e.replace(Config.rx_codes, function(e) {
39608 return (t = Config.reversemap[e]) ? (t = ":" + t + ":", $.emojiarea.createIcon($.emojiarea.icons[t])) : ""
39610 }, e.prototype.colonToImage = function(e) {
39611 return e ? (Config.rx_colons || Config.init_unified(), e.replace(Config.rx_colons, function(e) {
39612 return e ? $.emojiarea.createIcon($.emojiarea.icons[e]) : ""
39616 }.call(this), angular.module("ngRateIt", []).directive("ngRateIt", ["$q", function(e) {
39624 readOnly: "&?readOnly",
39625 pristine: "=?pristine",
39626 resetable: "&?resetable",
39627 starWidth: "=?starWidth",
39628 starHeight: "=?starHeight",
39629 canelWidth: "=?canelWidth",
39630 cancelHeight: "=?cancelHeight",
39633 beforeRated: "=?beforeRated",
39634 beforeReset: "=?beforeReset"
39636 templateUrl: "ngRateIt/ng-rate-it.html",
39637 require: "ngModel",
39639 link: function(t, n, r) {
39640 r.readOnly || (t.readOnly = function() {
39642 }), r.resetable || (t.resetable = function() {
39644 }), r.beforeRated || (t.beforeRated = function() {
39646 return t.resolve(), t.promise
39647 }), r.rated || (t.rated = function() {}), r.beforeReset || (t.beforeReset = function() {
39649 return t.resolve(), t.promise
39650 }), r.reset || (t.reset = function() {})
39652 controller: "ngRateItController"
39654 }]).controller("ngRateItController", ["$scope", "$timeout", function(e, t) {
39656 e.isTouch = !!window.hasOwnProperty("ontouchstart") || window.navigator.msMaxTouchPoints > 0, e.orgValue = angular.copy(e.ngModel), e.min = e.min || 0, e.max = e.max || 5, e.step = e.step || .5, e.pristine = e.orgValue === e.ngModel, e.starWidth = e.starWidth || 16, e.starPartWidth = e.starWidth * e.step, e.starHeight = e.starHeight || 16, e.canelWidth = e.canelWidth || e.starWidth, e.cancelHeight = e.cancelHeight || e.starHeight;
39657 var n = e.max - e.min,
39659 i = e.$watch("ngModel", function() {
39660 e.pristine = e.orgValue === e.ngModel
39663 return (e + 1) / r * n
39665 e.getStartParts = function() {
39666 return new Array(r)
39667 }, e.getStarOffset = function(t) {
39668 var n = 1 / e.step;
39669 return -e.starWidth / n * (t % n)
39670 }, e.isSelected = function(t) {
39671 return o(t) <= e.ngModel - e.min
39672 }, e.removeRating = function() {
39673 e.resetable() && !e.readOnly() && e.beforeReset().then(function() {
39674 e.ngModel = e.min, e.reset()
39676 }, e.setValue = function(n) {
39677 if (!e.readOnly()) {
39678 var r = angular.copy(e.min + o(n));
39679 e.beforeRated(r).then(function() {
39680 e.ngModel = r, t(function() {
39685 }, e.$on("$destroy", function() {
39688 }]).run(["$templateCache", function(e) {
39690 e.put("ngRateIt/ng-rate-it.html", '<div class="ngrateit" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"' + "ng-style=\"{'width': starPartWidth+'px', 'height':starHeight+'px', 'background-position': getStarOffset($index)+'px 0'}\"><span></div>")
39692 function(e, t, n) {
39696 if (this.support = !("undefined" == typeof File || "undefined" == typeof Blob || "undefined" == typeof FileList || !Blob.prototype.slice && !Blob.prototype.webkitSlice && !Blob.prototype.mozSlice), this.support) {
39697 this.supportDirectory = /Chrome/.test(e.navigator.userAgent) || /Firefox/.test(e.navigator.userAgent) || /Edge/.test(e.navigator.userAgent), this.files = [], this.defaults = {
39698 chunkSize: 1048576,
39699 forceChunkSize: !1,
39700 simultaneousUploads: 3,
39702 fileParameterName: "file",
39703 progressCallbacksInterval: 500,
39704 speedSmoothingFactor: .1,
39707 withCredentials: !1,
39709 method: "multipart",
39711 uploadMethod: "POST",
39712 prioritizeFirstAndLastChunk: !1,
39713 allowDuplicateUploads: !1,
39716 generateUniqueIdentifier: null,
39717 maxChunkRetries: 0,
39718 chunkRetryInterval: null,
39719 permanentErrors: [404, 413, 415, 500, 501],
39720 successStatuses: [200, 201, 202],
39721 onDropStopPropagation: !1,
39724 }, this.opts = {}, this.events = {};
39726 this.onDrop = function(e) {
39727 n.opts.onDropStopPropagation && e.stopPropagation(), e.preventDefault();
39728 var t = e.dataTransfer;
39729 t.items && t.items[0] && t.items[0].webkitGetAsEntry ? n.webkitReadDataTransfer(e) : n.addFiles(t.files, e)
39730 }, this.preventEvent = function(e) {
39732 }, this.opts = r.extend({}, this.defaults, t || {})
39736 function i(e, t, r) {
39737 this.flowObj = e, this.bytes = null, this.file = t, this.name = t.fileName || t.name, this.size = t.size, this.relativePath = t.relativePath || t.webkitRelativePath || this.name, this.uniqueIdentifier = r === n ? e.generateUniqueIdentifier(t) : r, this.chunks = [], this.paused = !1, this.error = !1, this.averageSpeed = 0, this.currentSpeed = 0, this._lastProgressCallback = Date.now(), this._prevUploadedSize = 0, this._prevProgress = 0, this.bootstrap()
39740 function o(e, t, n, r, i) {
39742 e.file.slice ? o = "slice" : e.file.mozSlice ? o = "mozSlice" : e.file.webkitSlice && (o = "webkitSlice"), i.readFinished(e.file[o](t, n, r))
39745 function a(e, t, n) {
39746 this.flowObj = e, this.fileObj = t, this.offset = n, this.tested = !1, this.retries = 0, this.pendingRetry = !1, this.preprocessState = 0, this.readState = 0, this.loaded = 0, this.total = 0, this.chunkSize = this.flowObj.opts.chunkSize, this.startByte = this.offset * this.chunkSize, this.computeEndByte = function() {
39747 var e = Math.min(this.fileObj.size, (this.offset + 1) * this.chunkSize);
39748 return this.fileObj.size - e < this.chunkSize && !this.flowObj.opts.forceChunkSize && (e = this.fileObj.size), e
39749 }, this.endByte = this.computeEndByte(), this.xhr = null;
39751 this.event = function(e, t) {
39752 (t = Array.prototype.slice.call(arguments)).unshift(r), r.fileObj.chunkEvent.apply(r.fileObj, t)
39753 }, this.progressHandler = function(e) {
39754 e.lengthComputable && (r.loaded = e.loaded, r.total = e.total), r.event("progress", e)
39755 }, this.testHandler = function(e) {
39756 var t = r.status(!0);
39757 "error" === t ? (r.event(t, r.message()), r.flowObj.uploadNextChunk()) : "success" === t ? (r.tested = !0, r.event(t, r.message()), r.flowObj.uploadNextChunk()) : r.fileObj.paused || (r.tested = !0, r.send())
39758 }, this.doneHandler = function(e) {
39759 var t = r.status();
39760 if ("success" === t || "error" === t) delete this.data, r.event(t, r.message()), r.flowObj.uploadNextChunk();
39762 r.event("retry", r.message()), r.pendingRetry = !0, r.abort(), r.retries++;
39763 var n = r.flowObj.opts.chunkRetryInterval;
39764 null !== n ? setTimeout(function() {
39772 var n = e.indexOf(t);
39773 n > -1 && e.splice(n, 1)
39777 return "function" == typeof e && (t = Array.prototype.slice.call(arguments), e = e.apply(null, t.slice(1))), e
39781 setTimeout(e.bind(t), 0)
39785 return d(arguments, function(t) {
39786 t !== e && d(t, function(t, n) {
39792 function d(e, t, n) {
39795 if (void 0 !== e.length) {
39796 for (r = 0; r < e.length; r++)
39797 if (!1 === t.call(n, e[r], r)) return
39800 if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r)) return
39803 var f = e.navigator.msPointerEnabled;
39805 on: function(e, t) {
39806 e = e.toLowerCase(), this.events.hasOwnProperty(e) || (this.events[e] = []), this.events[e].push(t)
39808 off: function(e, t) {
39809 e !== n ? (e = e.toLowerCase(), t !== n ? this.events.hasOwnProperty(e) && s(this.events[e], t) : delete this.events[e]) : this.events = {}
39811 fire: function(e, t) {
39812 t = Array.prototype.slice.call(arguments), e = e.toLowerCase();
39814 return this.events.hasOwnProperty(e) && d(this.events[e], function(e) {
39815 n = !1 === e.apply(this, t.slice(1)) || n
39816 }, this), "catchall" != e && (t.unshift("catchAll"), n = !1 === this.fire.apply(this, t) || n), !n
39818 webkitReadDataTransfer: function(e) {
39820 e.readEntries(function(o) {
39821 o.length ? (a += o.length, d(o, function(e) {
39823 var i = e.fullPath;
39824 e.file(function(e) {
39827 } else e.isDirectory && t(e.createReader())
39833 e.relativePath = t.substring(1), s.push(e), i()
39841 0 == --a && o.addFiles(s, e)
39844 a = e.dataTransfer.items.length,
39846 d(e.dataTransfer.items, function(e) {
39847 var r = e.webkitGetAsEntry();
39848 r ? r.isFile ? n(e.getAsFile(), r.fullPath) : t(r.createReader()) : i()
39851 generateUniqueIdentifier: function(e) {
39852 var t = this.opts.generateUniqueIdentifier;
39853 if ("function" == typeof t) return t(e);
39854 var n = e.relativePath || e.webkitRelativePath || e.fileName || e.name;
39855 return e.size + "-" + n.replace(/[^0-9a-zA-Z_-]/gim, "")
39857 uploadNextChunk: function(e) {
39859 if (this.opts.prioritizeFirstAndLastChunk && (d(this.files, function(e) {
39860 return !e.paused && e.chunks.length && "pending" === e.chunks[0].status() ? (e.chunks[0].send(), t = !0, !1) : !e.paused && e.chunks.length > 1 && "pending" === e.chunks[e.chunks.length - 1].status() ? (e.chunks[e.chunks.length - 1].send(), t = !0, !1) : void 0
39862 if (d(this.files, function(e) {
39863 if (e.paused || d(e.chunks, function(e) {
39864 if ("pending" === e.status()) return e.send(), t = !0, !1
39868 return d(this.files, function(e) {
39869 if (!e.isComplete()) return n = !0, !1
39870 }), n || e || l(function() {
39871 this.fire("complete")
39874 assignBrowse: function(e, n, r, i) {
39875 e instanceof Element && (e = [e]), d(e, function(e) {
39877 "INPUT" === e.tagName && "file" === e.type ? o = e : ((o = t.createElement("input")).setAttribute("type", "file"), u(o.style, {
39878 visibility: "hidden",
39879 position: "absolute",
39882 }), e.appendChild(o), e.addEventListener("click", function() {
39884 }, !1)), this.opts.singleFile || r || o.setAttribute("multiple", "multiple"), n && o.setAttribute("webkitdirectory", "webkitdirectory"), d(i, function(e, t) {
39885 o.setAttribute(t, e)
39888 o.addEventListener("change", function(e) {
39889 e.target.value && (a.addFiles(e.target.files, e), e.target.value = "")
39893 assignDrop: function(e) {
39894 void 0 === e.length && (e = [e]), d(e, function(e) {
39895 e.addEventListener("dragover", this.preventEvent, !1), e.addEventListener("dragenter", this.preventEvent, !1), e.addEventListener("drop", this.onDrop, !1)
39898 unAssignDrop: function(e) {
39899 void 0 === e.length && (e = [e]), d(e, function(e) {
39900 e.removeEventListener("dragover", this.preventEvent), e.removeEventListener("dragenter", this.preventEvent), e.removeEventListener("drop", this.onDrop)
39903 isUploading: function() {
39905 return d(this.files, function(t) {
39906 if (t.isUploading()) return e = !0, !1
39909 _shouldUploadNext: function() {
39912 n = this.opts.simultaneousUploads;
39913 return d(this.files, function(r) {
39914 d(r.chunks, function(r) {
39915 if ("uploading" === r.status() && ++e >= n) return t = !1, !1
39919 upload: function() {
39920 var e = this._shouldUploadNext();
39922 this.fire("uploadStart");
39923 for (var t = !1, n = 1; n <= this.opts.simultaneousUploads - e; n++) t = this.uploadNextChunk(!0) || t;
39924 t || l(function() {
39925 this.fire("complete")
39929 resume: function() {
39930 d(this.files, function(e) {
39931 e.isComplete() || e.resume()
39934 pause: function() {
39935 d(this.files, function(e) {
39939 cancel: function() {
39940 for (var e = this.files.length - 1; e >= 0; e--) this.files[e].cancel()
39942 progress: function() {
39945 return d(this.files, function(n) {
39946 e += n.progress() * n.size, t += n.size
39947 }), t > 0 ? e / t : 0
39949 addFile: function(e, t) {
39950 this.addFiles([e], t)
39952 addFiles: function(e, t) {
39955 if ((!f || f && e.size > 0) && (e.size % 4096 != 0 || "." !== e.name && "." !== e.fileName)) {
39956 var r = this.generateUniqueIdentifier(e);
39957 if (this.opts.allowDuplicateUploads || !this.getFromUniqueIdentifier(r)) {
39958 var o = new i(this, e, r);
39959 this.fire("fileAdded", o, t) && n.push(o)
39962 }, this), this.fire("filesAdded", n, t) && (d(n, function(e) {
39963 this.opts.singleFile && this.files.length > 0 && this.removeFile(this.files[0]), this.files.push(e)
39964 }, this), this.fire("filesSubmitted", n, t))
39966 removeFile: function(e) {
39967 for (var t = this.files.length - 1; t >= 0; t--) this.files[t] === e && (this.files.splice(t, 1), e.abort(), this.fire("fileRemoved", e))
39969 getFromUniqueIdentifier: function(e) {
39971 return d(this.files, function(n) {
39972 n.uniqueIdentifier === e && (t = n)
39975 getSize: function() {
39977 return d(this.files, function(t) {
39981 sizeUploaded: function() {
39983 return d(this.files, function(t) {
39984 e += t.sizeUploaded()
39987 timeRemaining: function() {
39990 return d(this.files, function(n) {
39991 n.paused || n.error || (e += n.size - n.sizeUploaded(), t += n.averageSpeed)
39992 }), e && !t ? Number.POSITIVE_INFINITY : e || t ? Math.floor(e / t) : 0
39995 measureSpeed: function() {
39996 var e = Date.now() - this._lastProgressCallback;
39998 var t = this.flowObj.opts.speedSmoothingFactor,
39999 n = this.sizeUploaded();
40000 this.currentSpeed = Math.max((n - this._prevUploadedSize) / e * 1e3, 0), this.averageSpeed = t * this.currentSpeed + (1 - t) * this.averageSpeed, this._prevUploadedSize = n
40003 chunkEvent: function(e, t, n) {
40006 if (Date.now() - this._lastProgressCallback < this.flowObj.opts.progressCallbacksInterval) break;
40007 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now();
40010 this.error = !0, this.abort(!0), this.flowObj.fire("fileError", this, n, e), this.flowObj.fire("error", n, this, e);
40013 if (this.error) return;
40014 this.measureSpeed(), this.flowObj.fire("fileProgress", this, e), this.flowObj.fire("progress"), this._lastProgressCallback = Date.now(), this.isComplete() && (this.currentSpeed = 0, this.averageSpeed = 0, this.flowObj.fire("fileSuccess", this, n, e));
40017 this.flowObj.fire("fileRetry", this, e)
40020 pause: function() {
40021 this.paused = !0, this.abort()
40023 resume: function() {
40024 this.paused = !1, this.flowObj.upload()
40026 abort: function(e) {
40027 this.currentSpeed = 0, this.averageSpeed = 0;
40028 var t = this.chunks;
40029 e && (this.chunks = []), d(t, function(e) {
40030 "uploading" === e.status() && (e.abort(), this.flowObj.uploadNextChunk())
40033 cancel: function() {
40034 this.flowObj.removeFile(this)
40036 retry: function() {
40037 this.bootstrap(), this.flowObj.upload()
40039 bootstrap: function() {
40040 "function" == typeof this.flowObj.opts.initFileFn && this.flowObj.opts.initFileFn(this), this.abort(!0), this.error = !1, this._prevProgress = 0;
40041 for (var e = this.flowObj.opts.forceChunkSize ? Math.ceil : Math.floor, t = Math.max(e(this.size / this.flowObj.opts.chunkSize), 1), n = 0; n < t; n++) this.chunks.push(new a(this.flowObj, this, n))
40043 progress: function() {
40044 if (this.error) return 1;
40045 if (1 === this.chunks.length) return this._prevProgress = Math.max(this._prevProgress, this.chunks[0].progress()), this._prevProgress;
40047 d(this.chunks, function(t) {
40048 e += t.progress() * (t.endByte - t.startByte)
40050 var t = e / this.size;
40051 return this._prevProgress = Math.max(this._prevProgress, t > .9999 ? 1 : t), this._prevProgress
40053 isUploading: function() {
40055 return d(this.chunks, function(t) {
40056 if ("uploading" === t.status()) return e = !0, !1
40059 isComplete: function() {
40061 return d(this.chunks, function(t) {
40062 var n = t.status();
40063 if ("pending" === n || "uploading" === n || "reading" === n || 1 === t.preprocessState || 1 === t.readState) return e = !0, !1
40066 sizeUploaded: function() {
40068 return d(this.chunks, function(t) {
40069 e += t.sizeUploaded()
40072 timeRemaining: function() {
40073 if (this.paused || this.error) return 0;
40074 var e = this.size - this.sizeUploaded();
40075 return e && !this.averageSpeed ? Number.POSITIVE_INFINITY : e || this.averageSpeed ? Math.floor(e / this.averageSpeed) : 0
40077 getType: function() {
40078 return this.file.type && this.file.type.split("/")[1]
40080 getExtension: function() {
40081 return this.name.substr(2 + (~-this.name.lastIndexOf(".") >>> 0)).toLowerCase()
40084 getParams: function() {
40086 flowChunkNumber: this.offset + 1,
40087 flowChunkSize: this.flowObj.opts.chunkSize,
40088 flowCurrentChunkSize: this.endByte - this.startByte,
40089 flowTotalSize: this.fileObj.size,
40090 flowIdentifier: this.fileObj.uniqueIdentifier,
40091 flowFilename: this.fileObj.name,
40092 flowRelativePath: this.fileObj.relativePath,
40093 flowTotalChunks: this.fileObj.chunks.length
40096 getTarget: function(e, t) {
40097 return e.indexOf("?") < 0 ? e += "?" : e += "&", e + t.join("&")
40100 this.xhr = new XMLHttpRequest, this.xhr.addEventListener("load", this.testHandler, !1), this.xhr.addEventListener("error", this.testHandler, !1);
40101 var e = c(this.flowObj.opts.testMethod, this.fileObj, this),
40102 t = this.prepareXhrRequest(e, !0);
40105 preprocessFinished: function() {
40106 this.endByte = this.computeEndByte(), this.preprocessState = 2, this.send()
40108 readFinished: function(e) {
40109 this.readState = 2, this.bytes = e, this.send()
40112 var e = this.flowObj.opts.preprocess,
40113 t = this.flowObj.opts.readFileFn;
40114 if ("function" == typeof e) switch (this.preprocessState) {
40116 return this.preprocessState = 1, void e(this);
40120 switch (this.readState) {
40122 return this.readState = 1, void t(this.fileObj, this.startByte, this.endByte, this.fileObj.file.type, this);
40126 if (!this.flowObj.opts.testChunks || this.tested) {
40127 this.loaded = 0, this.total = 0, this.pendingRetry = !1, this.xhr = new XMLHttpRequest, this.xhr.upload.addEventListener("progress", this.progressHandler, !1), this.xhr.addEventListener("load", this.doneHandler, !1), this.xhr.addEventListener("error", this.doneHandler, !1);
40128 var n = c(this.flowObj.opts.uploadMethod, this.fileObj, this),
40129 r = this.prepareXhrRequest(n, !1, this.flowObj.opts.method, this.bytes);
40133 abort: function() {
40135 this.xhr = null, e && e.abort()
40137 status: function(e) {
40138 return 1 === this.readState ? "reading" : this.pendingRetry || 1 === this.preprocessState ? "uploading" : this.xhr ? this.xhr.readyState < 4 ? "uploading" : this.flowObj.opts.successStatuses.indexOf(this.xhr.status) > -1 ? "success" : this.flowObj.opts.permanentErrors.indexOf(this.xhr.status) > -1 || !e && this.retries >= this.flowObj.opts.maxChunkRetries ? "error" : (this.abort(), "pending") : "pending"
40140 message: function() {
40141 return this.xhr ? this.xhr.responseText : ""
40143 progress: function() {
40144 if (this.pendingRetry) return 0;
40145 var e = this.status();
40146 return "success" === e || "error" === e ? 1 : "pending" === e ? 0 : this.total > 0 ? this.loaded / this.total : 0
40148 sizeUploaded: function() {
40149 var e = this.endByte - this.startByte;
40150 return "success" !== this.status() && (e = this.progress() * e), e
40152 prepareXhrRequest: function(e, t, n, r) {
40153 var i = c(this.flowObj.opts.query, this.fileObj, this, t);
40154 i = u(i, this.getParams());
40155 var o = c(this.flowObj.opts.target, this.fileObj, this, t),
40157 if ("GET" === e || "octet" === n) {
40159 d(i, function(e, t) {
40160 s.push([encodeURIComponent(t), encodeURIComponent(e)].join("="))
40161 }), o = this.getTarget(o, s), a = r || null
40162 } else a = new FormData, d(i, function(e, t) {
40164 }), void 0 !== r && a.append(this.flowObj.opts.fileParameterName, r, this.fileObj.file.name);
40165 return this.xhr.open(e, o, !0), this.xhr.withCredentials = this.flowObj.opts.withCredentials, d(c(this.flowObj.opts.headers, this.fileObj, this, t), function(e, t) {
40166 this.xhr.setRequestHeader(t, e)
40169 }, r.evalOpts = c, r.extend = u, r.each = d, r.FlowFile = i, r.FlowChunk = a, r.version = "2.13.0", "object" == typeof module && module && "object" == typeof module.exports ? module.exports = r : (e.Flow = r, "function" == typeof define && define.amd && define("flow", [], function() {
40172 }(window, document), angular.module("flow.provider", []).provider("flowFactory", function() {
40174 this.defaults = {}, this.factory = function(e) {
40176 }, this.events = [], this.on = function(e, t) {
40177 this.events.push([e, t])
40178 }, this.$get = function() {
40179 var e = this.factory,
40183 create: function(r) {
40184 var i = e(angular.extend({}, t, r));
40185 return angular.forEach(n, function(e) {
40191 }), angular.module("flow.init", ["flow.provider"]).controller("flowCtrl", ["$scope", "$attrs", "$parse", "flowFactory", function(e, t, n, r) {
40192 var i = angular.extend({}, e.$eval(t.flowInit)),
40193 o = e.$eval(t.flowObject) || r.create(i),
40195 var n = Array.prototype.slice.call(arguments);
40197 var r = e.$broadcast.apply(e, ["flow::" + t, o].concat(n));
40204 }[t] && e.$apply(), r.defaultPrevented) return !1
40206 o.on("catchAll", a), e.$on("$destroy", function() {
40207 o.off("catchAll", a)
40208 }), e.$flow = o, t.hasOwnProperty("flowName") && (n(t.flowName).assign(e, o), e.$on("$destroy", function() {
40209 n(t.flowName).assign(e)
40211 }]).directive("flowInit", [function() {
40214 controller: "flowCtrl"
40216 }]), angular.module("flow.btn", ["flow.init"]).directive("flowBtn", [function() {
40220 require: "^flowInit",
40221 link: function(e, t, n) {
40222 var r = n.hasOwnProperty("flowDirectory"),
40223 i = n.hasOwnProperty("flowSingleFile"),
40224 o = n.hasOwnProperty("flowAttrs") && e.$eval(n.flowAttrs);
40225 e.$flow.assignBrowse(t, r, i, o)
40228 }]), angular.module("flow.dragEvents", ["flow.init"]).directive("flowPreventDrop", function() {
40231 link: function(e, t, n) {
40232 t.bind("drop dragover", function(e) {
40237 }).directive("flowDragEnter", ["$timeout", function(e) {
40240 link: function(t, n, r) {
40243 n = e.dataTransfer || e.originalEvent.dataTransfer;
40244 return angular.forEach(n && n.types, function(e) {
40245 "Files" === e && (t = !0)
40249 n.bind("dragover", function(n) {
40250 i(n) && (a || (t.$apply(r.flowDragEnter), a = !0), e.cancel(o), n.preventDefault())
40251 }), n.bind("dragleave drop", function(n) {
40252 e.cancel(o), o = e(function() {
40253 t.$eval(r.flowDragLeave), o = null, a = !1
40258 }]), angular.module("flow.drop", ["flow.init"]).directive("flowDrop", function() {
40261 require: "^flowInit",
40262 link: function(e, t, n) {
40264 e.$flow.assignDrop(t)
40268 e.$flow.unAssignDrop(t)
40270 n.flowDropEnabled ? e.$watch(n.flowDropEnabled, function(e) {
40280 return e.charAt(0).toUpperCase() + e.slice(1)
40282 var n = e.module("flow.events", ["flow.init"]),
40284 fileSuccess: ["$file", "$message"],
40285 fileProgress: ["$file"],
40286 fileAdded: ["$file", "$event"],
40287 filesAdded: ["$files", "$event"],
40288 filesSubmitted: ["$files", "$event"],
40289 fileRetry: ["$file"],
40290 fileRemoved: ["$file"],
40291 fileError: ["$file", "$message"],
40295 error: ["$message", "$file"]
40297 e.forEach(r, function(r, i) {
40298 var o = "flow" + t(i);
40299 "flowUploadStart" == o && (o = "flowUploadStarted"), n.directive(o, [function() {
40301 require: "^flowInit",
40302 controller: ["$scope", "$attrs", function(t, n) {
40303 t.$on("flow::" + i, function() {
40304 var i = Array.prototype.slice.call(arguments),
40306 if (t.$flow === i.shift()) {
40308 e.forEach(r, function(e, t) {
40310 }), !1 === t.$eval(n[o], s) && a.preventDefault()
40317 }(angular), angular.module("flow.img", ["flow.init"]).directive("flowImg", [function() {
40320 require: "^flowInit",
40321 link: function(e, t, n) {
40323 e.$watch(r, function(t) {
40325 var r = new FileReader;
40326 r.readAsDataURL(t.file), r.onload = function(t) {
40327 e.$apply(function() {
40328 n.$set("src", t.target.result)
40335 }]), angular.module("flow.transfers", ["flow.init"]).directive("flowTransfers", [function() {
40338 require: "^flowInit",
40339 link: function(e) {
40340 e.transfers = e.$flow.files
40343 }]), angular.module("flow", ["flow.provider", "flow.init", "flow.events", "flow.btn", "flow.drop", "flow.transfers", "flow.img", "flow.dragEvents"]),
40346 angular.module("ngEmbed", ["ngSanitize"]).filter("embed", ["$sce", function(e) {
40365 class: "wondering",
40381 class: "thumbsup2",
40397 class: "thumbs-up",
40413 class: "heart-broken",
40417 class: "heart-broken",
40440 n = ["bowtie", "smile", "laughing", "blush", "smiley", "relaxed", "smirk", "heart_eyes", "kissing_heart", "kissing_closed_eyes", "flushed", "relieved", "satisfied", "grin", "wink", "stuck_out_tongue_winking_eye", "stuck_out_tongue_closed_eyes", "grinning", "kissing", "winky_face", "kissing_smiling_eyes", "stuck_out_tongue", "sleeping", "worried", "frowning", "anguished", "open_mouth", "grimacing", "confused", "hushed", "expressionless", "unamused", "sweat_smile", "sweat", "wow", "disappointed_relieved", "weary", "pensive", "disappointed", "confounded", "fearful", "cold_sweat", "persevere", "cry", "sob", "joy", "astonished", "scream", "neckbeard", "tired_face", "angry", "rage", "triumph", "sleepy", "yum", "mask", "sunglasses", "dizzy_face", "imp", "smiling_imp", "neutral_face", "no_mouth", "innocent", "alien", "yellow_heart", "blue_heart", "purple_heart", "heart", "green_heart", "broken_heart", "heartbeat", "heartpulse", "two_hearts", "revolving_hearts", "cupid", "sparkling_heart", "sparkles", "star", "star2", "dizzy", "boom", "collision", "anger", "exclamation", "question", "grey_exclamation", "grey_question", "zzz", "dash", "sweat_drops", "notes", "musical_note", "fire", "hankey", "poop", "shit", "\\+1", "thumbsup", "-1", "thumbsdown", "ok_hand", "punch", "facepunch", "fist", "v", "wave", "hand", "raised_hand", "open_hands", "point_up", "point_down", "point_left", "point_right", "raised_hands", "pray", "point_up_2", "clap", "muscle", "metal", "fu", "walking", "runner", "running", "couple", "family", "two_men_holding_hands", "two_women_holding_hands", "dancer", "dancers", "ok_woman", "no_good", "information_desk_person", "raising_hand", "bride_with_veil", "person_with_pouting_face", "person_frowning", "bow", "couplekiss", "couple_with_heart", "massage", "haircut", "nail_care", "boy", "girl", "woman", "man", "baby", "older_woman", "older_man", "person_with_blond_hair", "man_with_gua_pi_mao", "man_with_turban", "construction_worker", "cop", "angel", "princess", "smiley_cat", "smile_cat", "heart_eyes_cat", "kissing_cat", "smirk_cat", "scream_cat", "crying_cat_face", "joy_cat", "pouting_cat", "japanese_ogre", "japanese_goblin", "see_no_evil", "hear_no_evil", "speak_no_evil", "guardsman", "skull", "feet", "lips", "kiss", "droplet", "ear", "eyes", "nose", "tongue", "love_letter", "bust_in_silhouette", "busts_in_silhouette", "speech_balloon", "thought_balloon", "feelsgood", "finnadie", "goberserk", "godmode", "hurtrealbad", "rage1", "rage2", "rage3", "rage4", "suspect", "trollface", "sunny", "umbrella", "cloud", "snowflake", "snowman", "zap", "cyclone", "foggy", "ocean", "cat", "dog", "mouse", "hamster", "rabbit", "wolf", "frog", "tiger", "koala", "bear", "pig", "pig_nose", "cow", "boar", "monkey_face", "monkey", "horse", "racehorse", "camel", "sheep", "elephant", "panda_face", "snake", "bird", "baby_chick", "hatched_chick", "hatching_chick", "chicken", "penguin", "turtle", "bug", "honeybee", "ant", "beetle", "snail", "octopus", "tropical_fish", "fish", "whale", "whale2", "dolphin", "cow2", "ram", "rat", "water_buffalo", "tiger2", "rabbit2", "dragon", "goat", "rooster", "dog2", "pig2", "mouse2", "ox", "dragon_face", "blowfish", "crocodile", "dromedary_camel", "leopard", "cat2", "poodle", "paw_prints", "bouquet", "cherry_blossom", "tulip", "four_leaf_clover", "rose", "sunflower", "hibiscus", "maple_leaf", "leaves", "fallen_leaf", "herb", "mushroom", "cactus", "palm_tree", "evergreen_tree", "deciduous_tree", "chestnut", "seedling", "blossom", "ear_of_rice", "shell", "globe_with_meridians", "sun_with_face", "full_moon_with_face", "new_moon_with_face", "new_moon", "waxing_crescent_moon", "first_quarter_moon", "waxing_gibbous_moon", "full_moon", "waning_gibbous_moon", "last_quarter_moon", "waning_crescent_moon", "last_quarter_moon_with_face", "first_quarter_moon_with_face", "moon", "earth_africa", "earth_americas", "earth_asia", "volcano", "milky_way", "partly_sunny", "octocat", "squirrel", "bamboo", "gift_heart", "dolls", "school_satchel", "mortar_board", "flags", "fireworks", "sparkler", "wind_chime", "rice_scene", "jack_o_lantern", "ghost", "santa", "christmas_tree", "gift", "bell", "no_bell", "tanabata_tree", "tada", "confetti_ball", "balloon", "crystal_ball", "cd", "dvd", "floppy_disk", "camera", "video_camera", "movie_camera", "computer", "tv", "iphone", "phone", "telephone", "telephone_receiver", "pager", "fax", "minidisc", "vhs", "sound", "speaker", "mute", "loudspeaker", "mega", "hourglass", "hourglass_flowing_sand", "alarm_clock", "watch", "radio", "satellite", "loop", "mag", "mag_right", "unlock", "lock", "lock_with_ink_pen", "closed_lock_with_key", "key", "bulb", "flashlight", "high_brightness", "low_brightness", "electric_plug", "battery", "calling", "email", "mailbox", "postbox", "bath", "bathtub", "shower", "toilet", "wrench", "nut_and_bolt", "hammer", "seat", "moneybag", "yen", "dollar", "pound", "euro", "credit_card", "money_with_wings", "e-mail", "inbox_tray", "outbox_tray", "envelope", "incoming_envelope", "postal_horn", "mailbox_closed", "mailbox_with_mail", "mailbox_with_no_mail", "door", "smoking", "bomb", "gun", "hocho", "pill", "syringe", "page_facing_up", "page_with_curl", "bookmark_tabs", "bar_chart", "chart_with_upwards_trend", "chart_with_downwards_trend", "scroll", "clipboard", "calendar", "date", "card_index", "file_folder", "open_file_folder", "scissors", "pushpin", "paperclip", "black_nib", "pencil2", "straight_ruler", "triangular_ruler", "closed_book", "green_book", "blue_book", "orange_book", "notebook", "notebook_with_decorative_cover", "ledger", "books", "bookmark", "name_badge", "microscope", "telescope", "newspaper", "football", "basketball", "soccer", "baseball", "tennis", "8ball", "rugby_football", "bowling", "golf", "mountain_bicyclist", "bicyclist", "horse_racing", "snowboarder", "swimmer", "surfer", "ski", "spades", "hearts", "clubs", "diamonds", "gem", "ring", "trophy", "musical_score", "musical_keyboard", "violin", "space_invader", "video_game", "black_joker", "flower_playing_cards", "game_die", "dart", "mahjong", "clapper", "memo", "pencil", "book", "art", "microphone", "headphones", "trumpet", "saxophone", "guitar", "shoe", "sandal", "high_heel", "lipstick", "boot", "shirt", "tshirt", "necktie", "womans_clothes", "dress", "running_shirt_with_sash", "jeans", "kimono", "bikini", "ribbon", "tophat", "crown", "womans_hat", "mans_shoe", "closed_umbrella", "briefcase", "handbag", "pouch", "purse", "eyeglasses", "fishing_pole_and_fish", "coffee", "tea", "sake", "baby_bottle", "beer", "beers", "cocktail", "tropical_drink", "wine_glass", "fork_and_knife", "pizza", "hamburger", "fries", "poultry_leg", "meat_on_bone", "spaghetti", "curry", "fried_shrimp", "bento", "sushi", "fish_cake", "rice_ball", "rice_cracker", "rice", "ramen", "stew", "oden", "dango", "egg", "bread", "doughnut", "custard", "icecream", "ice_cream", "shaved_ice", "birthday", "cake", "cookie", "chocolate_bar", "candy", "lollipop", "honey_pot", "apple", "green_apple", "tangerine", "lemon", "cherries", "grapes", "watermelon", "strawberry", "peach", "melon", "banana", "pear", "pineapple", "sweet_potato", "eggplant", "tomato", "corn", "house", "house_with_garden", "school", "office", "post_office", "hospital", "bank", "convenience_store", "love_hotel", "hotel", "wedding", "church", "department_store", "european_post_office", "city_sunrise", "city_sunset", "japanese_castle", "european_castle", "tent", "factory", "tokyo_tower", "japan", "mount_fuji", "sunrise_over_mountains", "sunrise", "stars", "themoreyouknow", "tmyk", "statue_of_liberty", "bridge_at_night", "carousel_horse", "rainbow", "ferris_wheel", "fountain", "roller_coaster", "ship", "speedboat", "boat", "sailboat", "rowboat", "anchor", "rocket", "airplane", "helicopter", "steam_locomotive", "tram", "mountain_railway", "bike", "aerial_tramway", "suspension_railway", "mountain_cableway", "tractor", "blue_car", "oncoming_automobile", "car", "red_car", "taxi", "oncoming_taxi", "articulated_lorry", "bus", "oncoming_bus", "rotating_light", "police_car", "oncoming_police_car", "fire_engine", "ambulance", "minibus", "truck", "train", "station", "train2", "bullettrain_front", "bullettrain_side", "light_rail", "monorail", "railway_car", "trolleybus", "ticket", "fuelpump", "vertical_traffic_light", "traffic_light", "warning", "construction", "beginner", "atm", "slot_machine", "busstop", "barber", "hotsprings", "checkered_flag", "crossed_flags", "izakaya_lantern", "moyai", "circus_tent", "performing_arts", "round_pushpin", "triangular_flag_on_post", "jp", "kr", "cn", "us", "fr", "es", "it", "ru", "gb", "uk", "de", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "keycap_ten", "1234", "zero", "hash", "symbols", "arrow_backward", "arrow_down", "arrow_forward", "arrow_left", "capital_abcd", "abcd", "abc", "arrow_lower_left", "arrow_lower_right", "arrow_right", "arrow_up", "arrow_upper_left", "arrow_upper_right", "arrow_double_down", "arrow_double_up", "arrow_down_small", "arrow_heading_down", "arrow_heading_up", "leftwards_arrow_with_hook", "arrow_right_hook", "left_right_arrow", "arrow_up_down", "arrow_up_small", "arrows_clockwise", "arrows_counterclockwise", "rewind", "fast_forward", "information_source", "ok", "twisted_rightwards_arrows", "repeat", "repeat_one", "new", "top", "up", "cool", "free", "ng", "cinema", "koko", "signal_strength", "u5272", "u5408", "u55b6", "u6307", "u6708", "u6709", "u6e80", "u7121", "u7533", "u7a7a", "u7981", "sa", "restroom", "mens", "womens", "baby_symbol", "no_smoking", "parking", "wheelchair", "metro", "baggage_claim", "accept", "wc", "potable_water", "put_litter_in_its_place", "secret", "congratulations", "m", "passport_control", "left_luggage", "customs", "ideograph_advantage", "cl", "sos", "id", "no_entry_sign", "underage", "no_mobile_phones", "do_not_litter", "non-potable_water", "no_bicycles", "no_pedestrians", "children_crossing", "no_entry", "eight_spoked_asterisk", "eight_pointed_black_star", "heart_decoration", "vs", "vibration_mode", "mobile_phone_off", "chart", "currency_exchange", "aries", "taurus", "gemini", "cancer", "leo", "virgo", "libra", "scorpius", "sagittarius", "capricorn", "aquarius", "pisces", "ophiuchus", "six_pointed_star", "negative_squared_cross_mark", "a", "b", "ab", "o2", "diamond_shape_with_a_dot_inside", "recycle", "end", "on", "soon", "clock1", "clock130", "clock10", "clock1030", "clock11", "clock1130", "clock12", "clock1230", "clock2", "clock230", "clock3", "clock330", "clock4", "clock430", "clock5", "clock530", "clock6", "clock630", "clock7", "clock730", "clock8", "clock830", "clock9", "clock930", "heavy_dollar_sign", "copyright", "registered", "tm", "x", "heavy_exclamation_mark", "bangbang", "interrobang", "o", "heavy_multiplication_x", "heavy_plus_sign", "heavy_minus_sign", "heavy_division_sign", "white_flower", "100", "heavy_check_mark", "ballot_box_with_check", "radio_button", "link", "curly_loop", "wavy_dash", "part_alternation_mark", "trident", "black_square", "white_square", "white_check_mark", "black_square_button", "white_square_button", "black_circle", "white_circle", "red_circle", "large_blue_circle", "large_blue_diamond", "large_orange_diamond", "small_blue_diamond", "small_orange_diamond", "small_red_triangle", "small_red_triangle_down", "shipit"];
40441 return function(r, i) {
40443 return angular.forEach(arguments, function(t) {
40444 t !== e && angular.forEach(t, function(t, n) {
40445 e[n] && e[n].constructor && e[n].constructor === Object ? o(e[n], t) : e[n] = t
40453 linkTarget: "_self"
40455 if (o(a, i), void 0 !== r && null !== r) {
40456 if ("object" == typeof r) return r;
40462 return angular.isNumber(r) || (r = r.toString()), r = r.replace(/[&<>]/g, function(e) {
40464 }), a.fontSmiley && (r = function(e) {
40465 var n = e.split(" ");
40466 return angular.forEach(t, function(e) {
40467 for (var t = 0; t < n.length; t++) n[t] === e.text && (n[t] = '<i class="ne-emoticon" title="' + e.text + '">&#x' + e.code + "</i>")
40469 }(r)), a.emoji && (r = function(e) {
40470 var t = new RegExp(":(" + n.join("|") + "):", "g");
40471 return e.replace(t, function(e, t) {
40472 return "<i class='emoticon emoticon-" + t + "' title=':" + t + ":'></i>"
40474 }(r)), a.link && (r = function(e) {
40475 var t = /\b(?:(https?|ftp|file):\/\/|www\.)[-A-Z0-9+()&@$#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]/gi,
40476 n = /^[a-z]+\:\/\//i;
40477 return e.replace(t, function(e) {
40479 return n.test(e) || (t = "http://" + e), "cordova" == a.linkTarget ? '<a href="#" onclick="window.open(\'' + t + "', '_system', 'location=yes')\" >" + e + "</a>" : '<a href="' + t + '" target="' + a.linkTarget + '">' + e + "</a>"
40481 }(r)), e.trustAsHtml(r)
40484 }]).directive("ngEmbed", ["$filter", "$sce", "$http", "$timeout", "$templateCache", function(e, t, n, r, i) {
40485 return i.put("", '<div ng-bind-html="neText"></div> <div class="ne-video" ng-if="video.host" class="fade"> <div class="ne-video-preview" ng-hide="nePlayVideo || !options.video.details"> <div class="ne-video-thumb" ng-click="nePlayVideo=!nePlayVideo"> <img ng-src="{{video.thumbnail}}" alt=""/> <i class="fa fa-play-circle-o"></i> </div> <div class="ne-video-detail"> <div class="ne-video-title"> <a ng-href="{{video.url}}">{{video.title}}</a> </div> <div class="ne-video-desc"> {{video.description}} </div> <div class="ne-video-stats"> <span><i class="fa fa-eye"></i> {{video.views}}</span> <span><i class="fa fa-heart"></i> {{video.likes}}</span> </div> </div> </div> <div class="ne-video-player" ng-if="nePlayVideo || !(options.video.details)"> <iframe ng-src="{{video.embedSrc}}" frameBorder="0" width="{{video.width}}" height="{{video.height}}" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> </div> </div> <div class="ne-video" ng-if="video.basic"> <div class="ne-video-player"> <div class="player"> <video ng-src="{{video.basic}}" controls></video> </div> </div> </div> <div ng-init="neImageLong=false" ng-class="{false:\'ne-image\', true:\'ne-image ne-image-long\'}[neImageLong]" ng-if="image.url"> <div class="ne-image-wrapper"> <img ng-src="{{image.url}}" ng-click="neImageLong=!neImageLong" alt=""/> </div> </div> <div class="ne-pdf" ng-if="pdf.url"> <div class="ne-pdf-preview" ng-hide="neShowPdf"> <div class="ne-pdf-icon"> <i class="fa fa-file-pdf-o"></i> </div> <div class="ne-pdf-detail" > <div class="ne-pdf-title"> <a href="">{{pdf.url}}</a> </div> <div class="ne-pdf-view"> <button><i class="fa fa-download"></i> <a ng-href="{{pdf.url}}" target="_blank">Download</a></button> <button ng-click="neShowPdf=!neShowPdf"><i class="fa fa-eye"></i> View PDF</button> </div> </div> </div> <div class="ne-pdf-viewer" ng-if="neShowPdf" ng-show="neShowPdf"> <iframe ng-src="{{pdf.url}}" frameBorder="0"></iframe> </div> </div> <div class="ne-audio" ng-if="audio.url"> <audio ng-src="{{audio.url}}" controls></audio> </div> <div ng-if="tweets" ng-repeat="tweet in tweets"> <div ng-bind-html="tweet"></div> </div> <div ng-if="videoServices" class="ne-video" ng-repeat="v in videoServices"> <div class="ne-video-player"> <div class="player"> <div ng-bind-html="v"></div> </div> </div> </div> <div ng-if="audioServices" class="ne-audio" ng-repeat="a in audioServices"> <div ng-bind-html="a"></div> </div> <div ng-if="codeServices" class="ne-embed" ng-repeat="c in codeServices"> <div ng-bind-html="c"></div> </div> <div ng-if="gist" class="ne-gist" ng-repeat="g in gist"> <ne-gist id="{{g}}"></ne-gist> </div>'), {
40488 templateUrl: function(e, t) {
40489 return t.embedTemplateUrl || ""
40491 link: function(i, o, a) {
40493 return angular.forEach(arguments, function(t) {
40494 t !== e && angular.forEach(t, function(t, n) {
40495 e[n] && e[n].constructor && e[n].constructor === Object ? s(e[n], t) : e[n] = t
40499 var c = i.$eval(a.embedData),
40500 l = i.$eval(a.embedOptions);
40501 i.video = {}, i.image = {}, i.pdf = {}, i.audio = {}, i.videoServices = [], i.audioServices = [], i.codeServices = [], i.gist = [];
40506 linkTarget: "_self",
40528 thumbnailQuality: "medium"
40539 dailymotionEmbed: !0,
40543 soundCloudEmbed: !0,
40544 soundCloudOptions: {
40546 themeColor: "f50000",
40557 codepenHeight: 300,
40559 jsfiddleHeight: 300,
40563 githubgistEmbed: !0,
40567 s(u, l), String.prototype.trunc = function(e, t) {
40568 var n = this.length > e,
40569 r = n ? this.substr(0, e - 1) : this;
40570 return r = t && n ? r.substr(0, r.lastIndexOf(" ")) : r, n ? r + "..." : r
40571 }, Array.prototype.getUnique = function() {
40572 for (var e = {}, t = [], n = 0, r = this.length; n < r; ++n) e.hasOwnProperty(this[n]) || (t.push(this[n]), e[this[n]] = 1);
40576 calcDimensions: function(e) {
40581 return t.width = e.video.width, t.height = e.video.height, e.video.height && e.video.width ? t : e.video.height ? (t.width = e.video.height / 390 * 640, t) : e.video.width ? (t.height = t.width / 640 * 390, t) : (t.width = 640, t.height = 390, t)
40583 embed: function(e, r) {
40584 var o = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/ytscreeningroom\?v=|\/feeds\/api\/videos\/|\/user\S*[^\w\-\s]|\S*[^\w\-\s]))([\w\-]{11})[?=&+%\w-]*/gi;
40586 var a = this.calcDimensions(r);
40587 return i.video.id = RegExp.$1, r.video.details ? n.get("https://www.googleapis.com/youtube/v3/videos?id=" + RegExp.$1 + "&key=" + r.gdevAuth + "&part=snippet,statistics").success(function(e) {
40588 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "?autoplay=1" : "?autoplay=0",
40590 i.video.host = "youtube", i.video.title = o.snippet.title, i.video.thumbnail = o.snippet.thumbnails.medium.url, i.video.description = o.snippet.description.trunc(250, !0).replace(/\n/g, " ").replace(/ /g, " "), i.video.rawDescription = o.snippet.description, i.video.views = o.statistics.viewCount, i.video.likes = o.statistics.likeCount, i.video.uploader = o.snippet.channelTitle, i.video.uploaderPage = "https://www.youtube.com/channel/" + o.snippet.channelId, i.video.uploadDate = o.snippet.publishedAt, i.video.url = t.trustAsResourceUrl("https://www.youtube.com/watch?v=" + o.id), i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + i.video.id + n), i.video.width = a.width, i.video.height = a.height
40591 }) : (i.video.width = a.width, i.video.height = a.height, i.video.host = "youtube", i.video.embedSrc = t.trustAsResourceUrl("https://www.youtube.com/embed/" + RegExp.$1 + "?autoplay=0")), e
40593 var s = /https?:\/\/(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|album\/(\d+)\/video\/|)(\d+)(?:$|\/|\?)*/gi;
40595 var c = this.calcDimensions(r);
40596 i.video.id = RegExp.$3, r.video.details ? n.get("https://vimeo.com/api/v2/video/" + RegExp.$3 + ".json").success(function(e) {
40597 var n = void 0 === r.video.autoPlay || !0 === r.video.autoPlay ? "&autoplay=1" : "&autoplay=0";
40598 i.video.host = "vimeo", i.video.title = e[0].title, i.video.rawDescription = e[0].description.replace(/\n/g, "<br/>").replace(/ /g, "<br/>"), i.video.description = e[0].description.replace(/((<|<)br\s*\/*(>|>)\r\n)/g, " ").trunc(250, !0), i.video.thumbnail = e[0].thumbnail_medium, i.video.views = e[0].stats_number_of_plays, i.video.likes = e[0].stats_number_of_likes, i.video.uploader = e[0].user_name, i.video.uploaderPage = e[0].user_url, i.video.uploadDate = e[0].uploadDate, i.video.url = e[0].url, i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + e[0].id + "?title=0&byline=0&portrait=0" + n), i.video.width = c.width, i.video.height = c.height
40599 }) : (i.video.width = c.width, i.video.height = c.height, i.video.host = "vimeo", i.video.embedSrc = t.trustAsResourceUrl("//player.vimeo.com/video/" + RegExp.$3 + "?title=0&byline=0&portrait=0&autoplay=0"))
40603 embedBasic: function(e) {
40604 var n = /((?:https?):\/\/\S*\.(?:ogv|webm|mp4))/gi;
40605 return e.match(n) && (i.video.basic = t.trustAsResourceUrl(RegExp.$1)), e
40607 twitchtvEmbed: function(e, n) {
40608 var r = /www.twitch.tv\/[a-zA_Z0-9_]+/gi,
40609 o = e.match(r) ? e.match(r).getUnique() : null,
40610 a = d.calcDimensions(n);
40612 for (var s = 0; s < o.length;) {
40613 var c = t.trustAsHtml('<object bgcolor="#000000" data="//www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" height="' + a.height + '" id="clip_embed_player_flash" type="application/x-shockwave-flash" width="' + a.width + '"><param name="movie" value="http://www-cdn.jtvnw.net/swflibs/TwitchPlayer.swf" /><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="allowFullScreen" value="true" /><param name="flashvars" value="channel=' + o[s].split("/")[1] + '&auto_play=false" /></object>');
40614 i.videoServices.push(c), s++
40618 dailymotionEmbed: function(e, n) {
40619 var r = /dailymotion.com\/video\/[a-zA-Z0-9-_]+/gi,
40620 o = e.match(r) ? e.match(r).getUnique() : null,
40621 a = d.calcDimensions(n);
40623 for (var s = 0; s < o.length;) {
40624 var c = t.trustAsHtml('<iframe src="http://www.dailymotion.com/embed/video/' + o[s].split("/")[2] + '" height="' + a.height + '" width="' + a.width + '"></iframe>');
40625 i.videoServices.push(c), s++
40629 tedEmbed: function(e, n) {
40630 var r = /ted.com\/talks\/[a-zA-Z0-9_]+/gi,
40631 o = e.match(r) ? e.match(r).getUnique() : null,
40632 a = d.calcDimensions(n);
40634 for (var s = 0; s < o.length;) {
40635 var c = t.trustAsHtml('<iframe src="https://embed.ted.com/talks/' + o[s].split("/")[2] + '.html" height="' + a.height + '" width="' + a.width + '"></iframe>');
40636 i.videoServices.push(c), s++
40640 dotsubEmbed: function(e, n) {
40641 var r = /dotsub.com\/view\/[a-zA-Z0-9-]+/gi,
40642 o = e.match(r) ? e.match(r).getUnique() : null,
40643 a = d.calcDimensions(n);
40645 for (var s = 0; s < o.length;) {
40646 var c = t.trustAsHtml('<iframe src="https://dotsub.com/media/' + o[s].split("/")[2] + '/embed/" width="' + a.width + '" height="' + a.height + '"></iframe>');
40647 i.videoServices.push(c), s++
40651 liveleakEmbed: function(e, n) {
40652 var r = /liveleak.com\/view\?i=[a-zA-Z0-9_]+/gi,
40653 o = e.match(r) ? e.match(r).getUnique() : null,
40654 a = d.calcDimensions(n);
40656 for (var s = 0; s < o.length;) {
40657 var c = t.trustAsHtml('<iframe src="http://www.liveleak.com/e/' + o[s].split("=")[1] + '" height="' + a.height + '" width="' + a.width + '"></iframe></div>');
40658 i.videoServices.push(c), s++
40664 embed: function(e) {
40665 var n = /((?:https?):\/\/\S*\.(?:wav|mp3|ogg))/gi;
40666 return e.match(n) && (i.audio.url = t.trustAsResourceUrl(RegExp.$1)), e
40668 soundcloudEmbed: function(e, n) {
40669 var r = /soundcloud.com\/[a-zA-Z0-9-_]+\/[a-zA-Z0-9-_]+/gi,
40670 o = e.match(r) ? e.match(r).getUnique() : null;
40672 for (var a = 0; a < o.length;) {
40673 var s = t.trustAsHtml('<iframe height="160" scrolling="no" src="https://w.soundcloud.com/player/?url=https://' + o[a] + "&auto_play=" + n.soundCloudOptions.autoPlay + "&hide_related=" + n.soundCloudOptions.hideRelated + "&show_comments=" + n.soundCloudOptions.showComments + "&show_user=" + n.soundCloudOptions.showUser + "&show_reposts=" + n.soundCloudOptions.showReposts + "&visual=" + n.soundCloudOptions.visual + "&download=" + n.soundCloudOptions.download + "&color=" + n.soundCloudOptions.themeColor + "&theme_color=" + n.soundCloudOptions.themeColor + '"></iframe>');
40674 i.videoServices.push(s), a++
40678 spotifyEmbed: function(e) {
40679 var n = /spotify.com\/track\/[a-zA-Z0-9_]+/gi,
40680 r = e.match(n) ? e.match(n).getUnique() : null;
40682 for (var o = 0; o < r.length;) {
40683 var a = t.trustAsHtml('<iframe src="https://embed.spotify.com/?uri=spotify:track:' + r[o].split("/")[2] + '" height="80"></iframe>');
40684 i.audioServices.push(a), o++
40690 embed: function(e) {
40691 var t = /((?:https?):\/\/\S*\.(?:gif|jpg|jpeg|tiff|png|svg|webp))/gi;
40692 return e.match(t) && (i.image.url = RegExp.$1), e
40696 getCode: function(e) {
40697 return e = e.replace(/(`+)(\s|[a-z]+)\s*([\s\S]*?[^`])\s*\1(?!`)/gm, function(e, t, n, r) {
40699 i = (i = (i = i.replace(/^([ \t]*)/g, "")).replace(/[ \t]*$/g, "")).replace(/:\/\//g, "~P");
40701 return n && o.push(n), '<pre><code class="ne-code hljs ' + n + '">' + hljs.highlightAuto(i, o).value + "</code></pre>"
40706 embed: function(e) {
40707 var n = /((?:https?):\/\/\S*\.(?:pdf|PDF))/gi;
40708 return e.match(n) && (i.pdf.url = t.trustAsResourceUrl(RegExp.$1)), e
40712 embed: function(e, t) {
40715 twttr.widgets.load()
40718 if (!window.twttr) throw new ReferenceError("twttr is not defined. Load http://platform.twitter.com/widgets.js");
40719 var a = /https:\/\/twitter\.com\/\w+\/\w+\/\d+/gi,
40720 s = e.match(a) ? e.match(a).getUnique() : null;
40721 if (i.tweets = [], s)
40722 for (var c = 0; c < s.length;) {
40723 var l = "https://api.twitter.com/1/statuses/oembed.json?omit_script=true&callback=JSON_CALLBACK&url=" + s[c] + "&maxwidth=" + t.tweetOptions.maxWidth + "&hide_media=" + t.tweetOptions.hideMedia + "&hide_thread=" + t.tweetOptions.hideThread + "&align=" + t.tweetOptions.align + "&lang=" + t.tweetOptions.lang;
40724 n.jsonp(l).success(function(e) {
40725 i.tweets.push(e.html), i.tweets.length == s.length && o()
40732 codepenEmbed: function(e, n) {
40733 var r = /http:\/\/codepen.io\/([A-Za-z0-9_]+)\/pen\/([A-Za-z0-9_]+)/gi,
40734 o = e.match(r) ? e.match(r).getUnique() : null;
40736 for (var a = 0; a < o.length;) {
40737 var s = t.trustAsHtml('<iframe scrolling="no" height="' + n.codepenHeight + '" src="' + o[a].replace(/\/pen\//, "/embed/") + "/?height=" + n.codepenHeight + '" frameborder="no" allowtransparency="true" allowfullscreen="true"></iframe>');
40738 i.codeServices.push(s), a++
40742 jsfiddleEmbed: function(e, n) {
40743 var r = /jsfiddle.net\/[a-zA-Z0-9_]+\/[a-zA-Z0-9_]+/gi,
40744 o = e.match(r) ? e.match(r).getUnique() : null;
40746 for (var a = 0; a < o.length;) {
40747 var s = t.trustAsHtml('<iframe height="' + n.jsfiddleHeight + '" src="http://' + o[a] + '/embedded"></iframe>');
40748 i.codeServices.push(s), a++
40752 jsbinEmbed: function(e, n) {
40753 var r = /jsbin.com\/[a-zA-Z0-9_]+\/[0-9_]+/gi,
40754 o = e.match(r) ? e.match(r).getUnique() : null;
40756 for (var a = 0; a < o.length;) {
40757 var s = t.trustAsHtml('<iframe height="' + n.jsbinHeight + '" class="jsbin-embed foo" src="http://' + o[a] + '/embed?html,js,output">Simple Animation Tests</iframe>');
40758 i.codeServices.push(s), a++
40762 plunkerEmbed: function(e, n) {
40763 var r = /plnkr.co\/edit\/[a-zA-Z0-9\?=]+/gi,
40764 o = e.match(r) ? e.match(r).getUnique() : null;
40766 for (var a = 0; a < o.length;) {
40767 var s = -1 === o[a].indexOf("?") ? o[a].split("/")[2] : o[a].split("/")[2].split("?")[0],
40768 c = t.trustAsHtml('<iframe class="ne-plunker" src="http://embed.plnkr.co/' + s + '" height="' + n.jsbinHeight + '"></iframe>');
40769 i.codeServices.push(c), a++
40773 githubgistEmbed: function(e) {
40774 var t = /gist.github.com\/[a-zA-Z0-9_-]+\/([a-zA-Z0-9]+)/g,
40775 n = e.match(t) ? e.match(t).getUnique() : null;
40777 for (var r = 0; r < n.length;) i.gist.push(n[r].split("/")[2]), r++;
40780 ideoneEmbed: function(e, n) {
40781 var r = /ideone.com\/[a-zA-Z0-9]{6}/gi,
40782 o = e.match(r) ? e.match(r).getUnique() : null;
40784 for (var a = 0; a < o.length;) {
40785 var s = t.trustAsHtml('<iframe src="http://ideone.com/embed/' + o[a].split("/")[1] + '" height="' + n.ideoneHeight + '"></iframe>');
40786 i.codeServices.push(s), a++
40791 if (u.code.highlight) {
40792 if (!window.hljs) throw new ReferenceError("hlsj (Highlight JS is not defined.");
40793 c = p.getCode(c), r(function() {
40794 u.code.lineNumbers && angular.element(".ne-code").each(function() {
40796 t = $(this).text().split("\n").length,
40797 n = $("<ul/>").addClass("pre-numbering");
40798 for (angular.element(this).addClass("has-numbering").parent().append(n), e; e <= t; e++) n.append(angular.element("<li/>").text(e))
40802 var b = e("embed")(c, u).$$unwrapTrustedValue();
40803 if (u.video.embed) {
40804 if (!u.gdevAuth) throw "Youtube authentication key is required to get data from youtube.";
40807 b = u.basicVideo ? d.embedBasic(b) : b, b = u.audio.embed ? f.embed(b) : b, b = u.image.embed ? h.embed(b) : b, b = u.pdf.embed ? m.embed(b) : b, b = u.tweetEmbed ? g.embed(b, u) : b, b = u.twitchtvEmbed ? d.twitchtvEmbed(b, u) : b, b = u.dailymotionEmbed ? d.dailymotionEmbed(b, u) : b, b = u.tedEmbed ? d.tedEmbed(b, u) : b, b = u.dotsubEmbed ? d.dotsubEmbed(b, u) : b, b = u.liveleakEmbed ? d.liveleakEmbed(b, u) : b, b = u.soundCloudEmbed ? f.soundcloudEmbed(b, u) : b, b = u.spotifyEmbed ? f.spotifyEmbed(b) : b, b = u.codepenEmbed ? v.codepenEmbed(b, u) : b, b = u.jsfiddleEmbed ? v.jsfiddleEmbed(b, u) : b, b = u.jsbinEmbed ? v.jsbinEmbed(b, u) : b, b = u.plunkerEmbed ? v.plunkerEmbed(b, u) : b, b = u.githubgistEmbed ? v.githubgistEmbed(b, u) : b, b = u.ideoneEmbed ? v.ideoneEmbed(b, u) : b, i.neText = t.trustAsHtml(b)
40810 }]).directive("neGist", function() {
40814 template: "<div></div>",
40815 link: function(e, t, n) {
40817 i = document.createElement("iframe");
40818 i.setAttribute("width", "100%"), i.setAttribute("frameborder", "0"), i.id = "gist-" + r, t[0].appendChild(i);
40819 var o = '<html><head><base target="_parent"><style>table{font-size:12px;}</style></head><body onload="parent.document.getElementById(\'' + i.id + '\').style.height=document.body.scrollHeight + \'px\'" style="margin:10px 0;"><script type="text/javascript">!function(){"use strict";window.retargetLinks=function(){ var gists=document.getElementsByClassName("gist");for(var i=0,links;i<gists.length;i++){links=gists[i].getElementsByTagName("a");for(var j=0;j<links.length;j++){ links[j].setAttribute("target","_blank");}}}}();<\/script><script type="text/javascript" src="https://gist.github.com/' + r + '.js" onload="retargetLinks()"><\/script></body></html>',
40821 i.contentDocument ? a = i.contentDocument : i.contentWindow && (a = i.contentWindow.document), a.open(), a.writeln(o), a.close()