Advertisement
Guest User

Untitled

a guest
Jun 12th, 2016
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function dropFunction(n) {
  2.     n.stopPropagation();
  3.     n.preventDefault();
  4.     var i = n.dataTransfer.getData("text/html"),
  5.         t;
  6.     t = $(i).children().length > 0 ? $(i).attr("href") : $(i).attr("href");
  7.     t != null ? window.location.replace("/submit?linkpost=true&url=" + t) : (t = $(i).attr("src"), t != null && window.location.replace("/submit?linkpost=true&url=" + t));
  8.     $("#share-a-link-overlay").hide()
  9. }
  10.  
  11. function click_voting() {
  12.     $(this).toggleClass("arrow upmod login-required")
  13. }
  14.  
  15. function mustLogin() {
  16.     $("#mustbeloggedinModal").modal()
  17. }
  18.  
  19. function notEnoughCCP() {
  20.     $("#notenoughccp").modal()
  21. }
  22.  
  23. function notEnoughCCPUpVote() {
  24.     $("#notenoughccpupvote").modal()
  25. }
  26.  
  27. function firstTimeVisitorWelcome() {
  28.     $("#firsttimevisitorwelcomemessage").toggle()
  29. }
  30.  
  31. function voteSubmission(n, t) {
  32.     submissionVoteLock == null && (submissionVoteLock = {}, t = t == -1 ? -1 : 1, $.ajax({
  33.         type: "POST",
  34.         url: "/vote/" + n + "/" + t.toString(),
  35.         complete: function() {
  36.             submissionVoteLock = null
  37.         },
  38.         error: function() {
  39.             var i = $(".submission.id-" + n),
  40.                 t = i.children(".entry");
  41.             t.children("span").remove();
  42.             t.prepend('<span class="vote-error">An Error Occured :(<\/span>')
  43.         },
  44.         success: function(i) {
  45.             var u = $(".submission.id-" + n),
  46.                 o;
  47.             if (u.children(".entry").children("span").remove(), !i.successfull) {
  48.                 i.message.indexOf("2.2", 0) > 0 ? notEnoughCCP() : (i.message.indexOf("4.0", 0) > 0 || i.message.indexOf("2.1", 0) > 0) && notEnoughCCPUpVote();
  49.                 o = u.children(".entry");
  50.                 o.children("span").remove();
  51.                 o.prepend('<span class="vote-error">' + i.message + "<\/span>");
  52.                 return
  53.             }
  54.             var r = u.children(".midcol"),
  55.                 f = +u.find(".score.likes").html(),
  56.                 e = +u.find(".score.dislikes").html();
  57.             t == 1 ? r.is(".unvoted") ? (r.toggleClass("likes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-upvote").toggleClass("arrow-upvoted", !0), r.children(".arrow-upvote").toggleClass("arrow-upvote", !1), f++, u.find(".score.likes").html(f)) : r.is(".likes") ? (r.toggleClass("unvoted", !0), r.toggleClass("likes", !1), r.children(".arrow-upvoted").toggleClass("arrow-upvote", !0), r.children(".arrow-upvoted").toggleClass("arrow-upvoted", !1), f--, u.find(".score.likes").html(f), u.find(".score.unvoted").html(f)) : r.is(".dislikes") && (r.toggleClass("dislikes", !1), r.toggleClass("likes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-downvoted").toggleClass("arrow-downvote", !0), r.children(".arrow-downvoted").toggleClass("arrow-downvoted", !1), r.children(".arrow-upvote").toggleClass("arrow-upvoted", !0), e--, f++, u.find(".score.dislikes").html(e), u.find(".score.likes").html(f)) : r.is(".unvoted") ? (r.toggleClass("dislikes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-downvote").toggleClass("arrow-downvoted", !0), r.children(".arrow-downvote").toggleClass("arrow-downvote", !1), e++, u.find(".score.dislikes").html(e)) : r.is(".dislikes") ? (r.toggleClass("unvoted", !0), r.toggleClass("dislikes", !1), r.children(".arrow-downvoted").toggleClass("arrow-downvote", !0), r.children(".arrow-downvoted").toggleClass("arrow-downvoted", !1), e--, u.find(".score.dislikes").html(e), u.find(".score.unvoted").html(f)) : r.is(".likes") && (r.toggleClass("likes", !1), r.toggleClass("dislikes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-upvoted").toggleClass("arrow-upvote", !0), r.children(".arrow-upvoted").toggleClass("arrow-upvoted", !1), r.children(".arrow-downvote").toggleClass("arrow-downvoted", !0), e++, f--, u.find(".score.dislikes").html(e), u.find(".score.likes").html(f))
  58.         }
  59.     }))
  60. }
  61.  
  62. function voteComment(n, t) {
  63.     commentVoteLock == null && (commentVoteLock = {}, t = t == -1 ? -1 : 1, $.ajax({
  64.         type: "POST",
  65.         url: "/votecomment/" + n + "/" + t.toString(),
  66.         complete: function() {
  67.             commentVoteLock = null
  68.         },
  69.         error: function() {
  70.             var i = $(".comment.id-" + n),
  71.                 t = i.children(".entry");
  72.             t.children("span").remove();
  73.             t.prepend('<span class="vote-error">An Error Occured :(<\/span>')
  74.         },
  75.         success: function(i) {
  76.             var u = $(".comment.id-" + n),
  77.                 o;
  78.             if (u.children(".entry").children("span").remove(), !i.successfull) {
  79.                 i.message.indexOf("2.2", 0) > 0 ? notEnoughCCP() : (i.message.indexOf("4.0", 0) > 0 || i.message.indexOf("2.1", 0) > 0) && notEnoughCCPUpVote();
  80.                 o = u.children(".entry");
  81.                 o.children("span").remove();
  82.                 o.prepend('<span class="vote-error">' + i.message + "<\/span>");
  83.                 return
  84.             }
  85.             var r = u.children(".midcol"),
  86.                 f = +u.find(".post_upvotes").filter(":first").html(),
  87.                 e = -u.find(".post_downvotes").filter(":first").html();
  88.             t == 1 ? (r.is(".unvoted") ? (r.toggleClass("likes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-upvote").toggleClass("arrow-upvoted", !0), r.children(".arrow-upvote").toggleClass("arrow-upvote", !1), f++) : r.is(".likes") ? (r.toggleClass("likes", !1), r.toggleClass("unvoted", !0), r.children(".arrow-upvoted").toggleClass("arrow-upvote", !0), r.children(".arrow-upvoted").toggleClass("arrow-upvoted", !1), f--) : r.is(".dislikes") && (r.toggleClass("dislikes", !1), r.toggleClass("likes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-downvoted").toggleClass("arrow-downvote", !0), r.children(".arrow-downvoted").toggleClass("arrow-downvoted", !1), r.children(".arrow-upvote").toggleClass("arrow-upvoted", !0), f++, e--, u.find(".post_downvotes").filter(":first").html("-" + e)), u.find(".post_upvotes").filter(":first").html("+" + f), u.find(".score.unvoted").filter(":first").html(f - e + " points"), u.find(".score.onlycollapsed").filter(":first").html(f - e + " points")) : (r.is(".unvoted") ? (r.toggleClass("dislikes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-downvote").toggleClass("arrow-downvoted", !0), r.children(".arrow-downvote").toggleClass("arrow-downvote", !1), e++) : r.is(".dislikes") ? (r.toggleClass("unvoted", !0), r.toggleClass("dislikes", !1), r.children(".arrow-downvoted").toggleClass("arrow-downvote", !0), r.children(".arrow-downvoted").toggleClass("arrow-downvoted", !1), e--) : r.is(".likes") && (r.toggleClass("likes", !1), r.toggleClass("dislikes", !0), r.toggleClass("unvoted", !1), r.children(".arrow-upvoted").toggleClass("arrow-upvote", !0), r.children(".arrow-upvoted").toggleClass("arrow-upvoted", !1), r.children(".arrow-downvote").toggleClass("arrow-downvoted", !0), f--, e++, u.find(".post_upvotes").filter(":first").html("+" + f)), u.find(".post_downvotes").filter(":first").html("-" + e), u.find(".score.unvoted").filter(":first").html(f - e + " points"), u.find(".score.onlycollapsed").filter(":first").html(f - e + " points"))
  89.         }
  90.     }))
  91. }
  92.  
  93. function reply(n, t) {
  94.     var r, i;
  95.     $("#commentreplyform-" + n).exists() || replyCommentFormRequest || (r = $("input[name='__RequestVerificationToken']").val(), replyCommentFormRequest = $.ajax({
  96.         url: "/ajaxhelpers/commentreplyform/" + n + "/" + t,
  97.         success: function(t) {
  98.             $("#" + n).append(t);
  99.             $("#commentreplyform-" + n).find("#Content").focus()
  100.         },
  101.         complete: function() {
  102.             replyCommentFormRequest = null
  103.         }
  104.     }), i = $("#commentreplyform-" + n).removeData("validator").removeData("unobtrusiveValidation"), $.validator.unobtrusive.parse(i))
  105. }
  106.  
  107. function replyprivatemessage(n, t, i) {
  108.     var u, r;
  109.     $("#privatemessagereplyform-" + n).exists() || replyFormPMRequest || (u = $("input[name='__RequestVerificationToken']").val(), replyFormPMRequest = $.ajax({
  110.         url: "/ajaxhelpers/privatemessagereplyform/" + n + "?recipient=" + t + "&subject=" + i,
  111.         success: function(t) {
  112.             $("#messageContainer-" + n).append(t);
  113.             $("#privatemessagereplyform-" + n).find("#Body").focus()
  114.         },
  115.         complete: function() {
  116.             replyFormPMRequest = null
  117.         }
  118.     }), r = $("#privatemessagereplyform-" + n).removeData("validator").removeData("unobtrusiveValidation"), $.validator.unobtrusive.parse(r))
  119. }
  120.  
  121. function replyToCommentNotification(n, t) {
  122.     var r, i;
  123.     $("#commentreplyform-" + n).exists() || replyToCommentFormRequest || (r = $("input[name='__RequestVerificationToken']").val(), replyToCommentFormRequest = $.ajax({
  124.         url: "/ajaxhelpers/commentreplyform/" + n + "/" + t,
  125.         success: function(t) {
  126.             $("#commentContainer-" + n).append(t);
  127.             $("#commentreplyform-" + n).find("#Content").focus()
  128.         },
  129.         complete: function() {
  130.             replyToCommentFormRequest = null
  131.         }
  132.     }), i = $("#commentreplyform-" + n).removeData("validator").removeData("unobtrusiveValidation"), $.validator.unobtrusive.parse(i))
  133. }
  134.  
  135. function postCommentReplyAjax(n, t, i, r) {
  136.     var u = $(n).parents("form");
  137.     if (u.find("#errorMessage").toggle(!1), u.find("#Content").val().length > 0) return u.find("#submitbutton").val("Please wait..."), u.find("#submitbutton").prop("disabled", !0), $.ajax({
  138.         type: "POST",
  139.         url: u.attr("action"),
  140.         data: u.serialize(),
  141.         error: function() {
  142.             u.find("#submitbutton").val("Submit reply");
  143.             u.find("#submitbutton").prop("disabled", !1);
  144.             u.find("#errorMessage").html("You are doing that too fast. Please wait 30 seconds before trying again.");
  145.             u.find("#errorMessage").toggle(!0)
  146.         },
  147.         success: function(n) {
  148.             removereplyform(r);
  149.             $(".id-" + r).append(n);
  150.             window.setTimeout(function() {
  151.                 UI.Notifications.raise("DOM", $(".id-" + r).last("div"))
  152.             })
  153.         }
  154.     }), !1;
  155.     u.find("#errorMessage").toggle(!0)
  156. }
  157.  
  158. function postCommentAjax(n) {
  159.     var t = $(n).parents("form");
  160.     if (t.find("#errorMessage").toggle(!1), t.find("#Content").val().length > 0) return t.find("#submitbutton").val("Doing the magic..."), t.find("#submitbutton").prop("disabled", !0), $.ajax({
  161.         type: "POST",
  162.         url: t.attr("action"),
  163.         data: t.serialize(),
  164.         error: function(n, i, r) {
  165.             t.find("#submitbutton").val("Submit comment");
  166.             t.find("#submitbutton").prop("disabled", !1);
  167.             t.find("#errorMessage").html(r.length > 0 && r != "Bad Request" && r != "Internal Server Error" ? r : "You are doing that too fast. Please wait 30 seconds before trying again.");
  168.             t.find("#errorMessage").toggle(!0)
  169.         },
  170.         success: function(n) {
  171.             $(".sitetable.nestedlisting").prepend(n);
  172.             t.find("#submitbutton").val("Submit comment");
  173.             t.find("#submitbutton").prop("disabled", !1);
  174.             t.find("#Content").val("");
  175.             window.setTimeout(function() {
  176.                 UI.Notifications.raise("DOM", $(".sitetable.nestedlisting").first())
  177.             })
  178.         }
  179.     }), !1;
  180.     t.find("#errorMessage").toggle(!0)
  181. }
  182.  
  183. function postPrivateMessageReplyAjax(n, t) {
  184.     var i = $(n).parents("form");
  185.     if (i.find("#errorMessage").toggle(!1), i.find("#Body").val().length > 0) return i.find("#submitbutton").val("Please wait..."), i.find("#submitbutton").prop("disabled", !0), $.ajax({
  186.         type: "POST",
  187.         url: i.attr("action"),
  188.         data: i.serialize(),
  189.         error: function() {
  190.             i.find("#submitbutton").val("Submit reply");
  191.             i.find("#submitbutton").prop("disabled", !1);
  192.             i.find("#errorMessage").html("You are doing that too fast. Please wait 30 seconds before trying again.");
  193.             i.find("#errorMessage").toggle(!0)
  194.         },
  195.         success: function() {
  196.             removereplyform(t);
  197.             $("#messageContainer-" + t).find("#replyPrivateMessage").html("Reply sent.");
  198.             $("#messageContainer-" + t).find("#replyPrivateMessage").addClass("disabled")
  199.         }
  200.     }), !1;
  201.     i.find("#errorMessage").toggle(!0)
  202. }
  203.  
  204. function edit(n) {
  205.     $("#commentContent-" + n).toggle(1);
  206.     $("#" + n).find(".usertext-edit").toggle(1);
  207.     $("#commenteditform-" + n).find("#Content").focus();
  208.     var t = $("#commenteditform-" + n).removeData("validator").removeData("unobtrusiveValidation");
  209.     $.validator.unobtrusive.parse(t)
  210. }
  211.  
  212. function editsubmission(n) {
  213.     $("#submissionid-" + n).find(".original").toggle(1);
  214.     $("#submissionid-" + n).find(".usertext-edit").toggle(1);
  215.     var t = $("#submissioneditform-" + n).removeData("validator").removeData("unobtrusiveValidation");
  216.     $.validator.unobtrusive.parse(t)
  217. }
  218.  
  219. function removesubmissioneditform(n) {
  220.     $("#submissionid-" + n).find(".usertext-body").toggle(1);
  221.     $("#submissionid-" + n).find(".usertext-edit").toggle(1)
  222. }
  223.  
  224. function editmessagesubmit(n) {
  225.     var t = $("#submissionid-" + n).find(".form-control").val(),
  226.         i = {
  227.             SubmissionId: n,
  228.             SubmissionContent: t
  229.         };
  230.     return $.ajax({
  231.         type: "POST",
  232.         contentType: "application/json; charset=utf-8",
  233.         data: JSON.stringify(i),
  234.         url: "/editsubmission",
  235.         datatype: "json",
  236.         success: function(t) {
  237.             $("#submissionid-" + n).find(".md").html(t.response);
  238.             window.setTimeout(function() {
  239.                 UI.Notifications.raise("DOM", $("#submissionid-" + n))
  240.             })
  241.         }
  242.     }), removesubmissioneditform(n), !1
  243. }
  244.  
  245. function removereplyform(n) {
  246.     $("#replyform-" + n).remove()
  247. }
  248.  
  249. function removeeditform(n) {
  250.     $("#" + n).find(".usertext-body").show();
  251.     $("#" + n).find(".usertext-edit").hide()
  252. }
  253.  
  254. function showcomment(n) {
  255.     return $("#" + n).closest(".noncollapsed").toggle(1), $("#" + n).prev().toggle(1), $("#" + n).parent().parent().find(".midcol").filter(":first").toggle(1), $("#" + n).parent().parent().find("> .child").toggle(1), !1
  256. }
  257.  
  258. function hidecomment(n) {
  259.     return $("#" + n).closest(".noncollapsed").toggle(1), $("#" + n).prev().toggle(1), $("#" + n).parent().parent().find(".midcol").filter(":first").toggle(1), $("#" + n).parent().parent().find("> .child").toggle(1), !1
  260. }
  261.  
  262. function editcommentsubmit(n) {
  263.     var t = $("#" + n).find(".form-control").val(),
  264.         i = {
  265.             ID: n,
  266.             Content: t
  267.         };
  268.     return $.ajax({
  269.         type: "POST",
  270.         contentType: "application/json; charset=utf-8",
  271.         data: JSON.stringify(i),
  272.         url: "/editcomment",
  273.         datatype: "json",
  274.         error: function(t, i, r) {
  275.             var u = r.length > 0 && r != "Bad Request" && r != "Internal Server Error" ? r : "You are doing that too fast. Please wait 30 seconds before trying again.";
  276.             $("#commenteditform-" + n + " span.field-validation-error").html(u)
  277.         },
  278.         success: function(t) {
  279.             $("#" + n).find(".md").html(t.response);
  280.             removeeditform(n);
  281.             window.setTimeout(function() {
  282.                 UI.Notifications.raise("DOM", $("#" + n))
  283.             })
  284.         }
  285.     }), !1
  286. }
  287.  
  288. function deletecomment(n) {
  289.     $("#" + n).find(".flat-list").html("");
  290.     $("#" + n).find(".md").html("[deleted]");
  291.     $("#" + n).find(".md").css("color", "gray");
  292.     $("#" + n).find(".author").replaceWith(function() {
  293.         return $("<em>[deleted]<\/em>")
  294.     });
  295.     $("#" + n).find(".userattrs").html("");
  296.     toggleback(n);
  297.     removeeditform(n);
  298.     deletecommentsubmit(n)
  299. }
  300.  
  301. function deletecommentsubmit(n) {
  302.     var t = {
  303.         commentid: n
  304.     };
  305.     return $.ajax({
  306.         type: "POST",
  307.         contentType: "application/json; charset=utf-8",
  308.         data: JSON.stringify(t),
  309.         url: "/deletecomment",
  310.         datatype: "json"
  311.     }), removeeditform(n), !1
  312. }
  313.  
  314. function deletesubmission(n, t) {
  315.     var r = $(n).parents("form"),
  316.         i;
  317.     r.find("#deletestatusmesssage").html("please wait...");
  318.     i = {
  319.         submissionid: t
  320.     };
  321.     $.ajax({
  322.         type: "POST",
  323.         contentType: "application/json; charset=utf-8",
  324.         data: JSON.stringify(i),
  325.         url: "/deletesubmission",
  326.         datatype: "json"
  327.     });
  328.     $("body").load($(location).attr("href"))
  329. }
  330.  
  331. function toggle(n) {
  332.     return $(n).parent().parent().find(".option, .main").toggleClass("active"), !1
  333. }
  334.  
  335. function toggleblocksubverse(n) {
  336.     return $(n).parent().parent().find(".option, .error").toggleClass("active"), !1
  337. }
  338.  
  339. function togglereport(n) {
  340.     return $("#" + n).find(".report").toggleClass("active"), !1
  341. }
  342.  
  343. function reportcomment(n, t) {
  344.     return $(n).parent().parent().find(".togglebutton").attr("onclick", "javascript:void(0)"), $(n).parent().parent().find(".option, .main").toggleClass("active"), $(n).parent().parent().find(".togglebutton").html("please wait..."), $.ajax({
  345.         type: "POST",
  346.         url: "/reportcomment/" + t,
  347.         success: function() {
  348.             $(n).parent().parent().find(".togglebutton").html("thank you!")
  349.         },
  350.         error: function() {
  351.             $(n).parent().parent().find(".togglebutton").html("report failed")
  352.         }
  353.     }), !1
  354. }
  355.  
  356. function toggleback(n) {
  357.     return $(n).parent().parent().find(".option, .error").toggleClass("active"), !1
  358. }
  359.  
  360. function togglesubmission(n) {
  361.     return $(n).parent().parent().find(".option, .main").toggleClass("active"), !1
  362. }
  363.  
  364. function togglesubmissionback(n) {
  365.     return $(n).parent().parent().find(".option, .error").toggleClass("active"), !1
  366. }
  367.  
  368. function subscribe(n, t) {
  369.     $(n).attr("onclick", "unsubscribe(this)");
  370.     $(n).html("unsubscribe");
  371.     $(n).toggleClass("btn-sub btn-unsub");
  372.     $.ajax({
  373.         type: "POST",
  374.         url: "/subscribe/" + t,
  375.         success: function() {
  376.             var n = +$("#subscriberCount").html();
  377.             n++;
  378.             $("#subscriberCount").html(n)
  379.         },
  380.         error: function() {
  381.             alert("Something went wrong while sending a subscription request.")
  382.         }
  383.     })
  384. }
  385.  
  386. function unsubscribe(n, t) {
  387.     $(n).attr("onclick", "subscribe(this)");
  388.     $(n).html("subscribe");
  389.     $(n).toggleClass("btn-sub btn-unsub");
  390.     $.ajax({
  391.         type: "POST",
  392.         url: "/unsubscribe/" + t,
  393.         success: function() {
  394.             var n = +$("#subscriberCount").html();
  395.             n--;
  396.             $("#subscriberCount").html(n)
  397.         },
  398.         error: function() {
  399.             alert("Something went wrong while sending unsubscription request.")
  400.         }
  401.     })
  402. }
  403.  
  404. function subscribeToSet(n, t) {
  405.     $(n).attr("onclick", "unsubscribe(this)");
  406.     $(n).html("unsubscribe");
  407.     $.ajax({
  408.         type: "POST",
  409.         url: "/subscribetoset/" + t,
  410.         success: function() {
  411.             var n = +$("#subscribercount").html();
  412.             n++;
  413.             $("#subscribercount").html(n)
  414.         },
  415.         error: function() {
  416.             alert("Something went wrong while sending a set subscription request.")
  417.         }
  418.     })
  419. }
  420.  
  421. function unsubscribeFromSet(n, t) {
  422.     $(n).attr("onclick", "subscribe(this)");
  423.     $(n).html("subscribe");
  424.     $.ajax({
  425.         type: "POST",
  426.         url: "/unsubscribefromset/" + t,
  427.         success: function() {
  428.             var n = +$("#subscriberCount").html();
  429.             n--;
  430.             $("#subscriberCount").html(n)
  431.         },
  432.         error: function() {
  433.             alert("Something went wrong while sending unsubscription request.")
  434.         }
  435.     })
  436. }
  437.  
  438. function removeSubFromSet(n, t, i) {
  439.     $(n).html("Hold on...");
  440.     $.ajax({
  441.         type: "POST",
  442.         url: "/sets/removesubverse/" + t + "/" + i,
  443.         success: function() {
  444.             $("#subverse-" + i).remove()
  445.         },
  446.         error: function() {
  447.             $(n).html("Something went wrong.")
  448.         }
  449.     })
  450. }
  451.  
  452. function addSubToSet(n, t) {
  453.     $(n).html("Hold on...");
  454.     var i = $("#Subverse").val();
  455.     if (!i) {
  456.         $(n).html("Add this subverse to set");
  457.         $("#status").html("please enter a subverse name to add");
  458.         $("#status").show();
  459.         return
  460.     }
  461.     $.ajax({
  462.         type: "POST",
  463.         url: "/sets/addsubverse/" + t + "/" + i,
  464.         success: function() {
  465.             var r = $.get("/ajaxhelpers/setsubverseinfo/" + t + "/" + i, null, function(t) {
  466.                 $("#subverselisting").append(t);
  467.                 $("#status").hide();
  468.                 $(n).html("Add this subverse to set")
  469.             })
  470.         },
  471.         error: function() {
  472.             $("#status").html("Subverse probably does not exist.");
  473.             $("#status").show();
  474.             $(n).html("Add this subverse to set")
  475.         }
  476.     })
  477. }
  478.  
  479. function loadSelfText(n, t) {
  480.     var i;
  481.     $(n).hasClass("collapsed") && (i = $.get("/ajaxhelpers/messagecontent/" + t, null, function(t) {
  482.         $(n).parent().find(".expando").find(".md").html(t);
  483.         window.setTimeout(function() {
  484.             UI.Notifications.raise("DOM", $(n).parent().find(".expando"))
  485.         })
  486.     }));
  487.     $(n).toggleClass("collapsed");
  488.     $(n).toggleClass("expanded");
  489.     $(n).parent().find(".expando").toggle()
  490. }
  491.  
  492. function loadVideoPlayer(n, t) {
  493.     $(n).toggleClass("collapsed");
  494.     $(n).toggleClass("expanded");
  495.     var i = $.get("/ajaxhelpers/videoplayer/" + t, null, function(t) {
  496.         $(n).parent().find(".expando").nextAll().find(".videoplayer").html(t);
  497.         window.setTimeout(function() {
  498.             UI.Notifications.raise("iFrameLoaded", $(n).parent().find(".expando").nextAll().find(".videoplayer"))
  499.         })
  500.     });
  501.     $(n).parent().find(".expando").next().next().next().toggle()
  502. }
  503.  
  504. function deletePrivateMessage(n, t) {
  505.     var i = {
  506.         privateMessageId: t
  507.     };
  508.     return $(n).html("please wait..."), $.ajax({
  509.         type: "POST",
  510.         contentType: "application/json; charset=utf-8",
  511.         data: JSON.stringify(i),
  512.         success: function() {
  513.             $("#messageContainer-" + t).remove()
  514.         },
  515.         url: "/messaging/delete",
  516.         datatype: "json"
  517.     }), !1
  518. }
  519.  
  520. function deletePrivateMessageFromSent(n, t) {
  521.     var i = {
  522.         privateMessageId: t
  523.     };
  524.     return $(n).html("please wait..."), $.ajax({
  525.         type: "POST",
  526.         contentType: "application/json; charset=utf-8",
  527.         data: JSON.stringify(i),
  528.         success: function() {
  529.             $("#messageContainer-" + t).remove()
  530.         },
  531.         url: "/messaging/deletesent",
  532.         datatype: "json"
  533.     }), !1
  534. }
  535.  
  536. function selectflair(n, t) {
  537.     var i = $.get("/ajaxhelpers/linkflairselectdialog/" + t + "/" + n, null, function(n) {
  538.         $("#linkFlairSelectModal").html(n);
  539.         $("#linkFlairSelectModal").modal()
  540.     })
  541. }
  542.  
  543. function applyflair(n, t, i, r) {
  544.     $.ajax({
  545.         type: "POST",
  546.         url: "/submissions/applylinkflair/" + n + "/" + t,
  547.         success: function() {
  548.             $("#linkFlairSelectModal").modal("hide");
  549.             $("#linkflair").attr("class", "flair " + r);
  550.             $("#linkflair").attr("title", i);
  551.             $("#linkflair").html(i)
  552.         },
  553.         error: function() {
  554.             alert("Unable to apply link flair.")
  555.         }
  556.     })
  557. }
  558.  
  559. function clearflair(n) {
  560.     $.ajax({
  561.         type: "POST",
  562.         url: "/submissions/clearlinkflair/" + n,
  563.         success: function() {
  564.             $("#linkFlairSelectModal").modal("hide");
  565.             $("#linkflair").attr("class", "");
  566.             $("#linkflair").attr("title", "");
  567.             $("#linkflair").html("")
  568.         },
  569.         error: function() {
  570.             alert("Unable to clear link flair.")
  571.         }
  572.     })
  573. }
  574.  
  575. function distinguish(n, t) {
  576.     $(t).html("please wait...");
  577.     $.ajax({
  578.         type: "POST",
  579.         url: "/comments/distinguish/" + n,
  580.         success: function() {
  581.             $(t).html("done")
  582.         },
  583.         error: function() {
  584.             $(t).html("unable to comply")
  585.         }
  586.     })
  587. }
  588.  
  589. function suggestTitle() {
  590.     $("#suggest-title").off("click", suggestTitle);
  591.     $("#suggest-title").text("Please wait...");
  592.     var n = $("#Content").val(),
  593.         t = $.get("/ajaxhelpers/titlefromuri?uri=" + n, null, function(n) {
  594.             $("#LinkDescription").val(n);
  595.             $("#suggest-title").text("Enter the URL above, then click here to suggest a title");
  596.             $("#suggest-title").on("click", suggestTitle)
  597.         }).fail(function() {
  598.             $("#LinkDescription").val("We were unable to suggest a title.");
  599.             $("#suggest-title").text("Enter the URL above, then click here to suggest a title");
  600.             $("#suggest-title").on("click", suggestTitle)
  601.         })
  602. }
  603.  
  604. function toggleSticky(n) {
  605.     $.ajax({
  606.         type: "POST",
  607.         url: "/submissions/togglesticky/" + n,
  608.         success: function() {
  609.             $("#togglesticky").html("toggled")
  610.         },
  611.         error: function() {
  612.             alert("Something went wrong while sending a sticky toggle request.")
  613.         }
  614.     })
  615. }
  616.  
  617. function showMessagePreview(n, t, i) {
  618.     var u = $(t).val(),
  619.         r;
  620.     return !u.length > 0 ? ($(i).find("#submission-preview-area-container").html("Please enter some text in order to get a preview."), $(i).show(), !1) : ($(n).val("Please wait"), r = {
  621.         MessageContent: $(t).val()
  622.     }, $.ajax({
  623.         url: "/ajaxhelpers/rendersubmission/",
  624.         type: "post",
  625.         dataType: "html",
  626.         success: function(n) {
  627.             $(i).find("#submission-preview-area-container").html(n);
  628.             UI.ExpandoManager.execute()
  629.         },
  630.         data: r
  631.     }), $(i).show(), $(n).val("Preview"), !1)
  632. }
  633.  
  634. function loadMoreSetItems(n, t) {
  635.     if (!loadMoreSetRequest) {
  636.         $(n).html("Sit tight...");
  637.         var i = $("#set-" + t + "-page").html();
  638.         i == null ? i = 1 : i++;
  639.         loadMoreSetRequest = $.ajax({
  640.             url: "/set/" + t + "/" + i + "/",
  641.             success: function(i) {
  642.                 $("#set-" + t + "-page").remove();
  643.                 $("#set-" + t + "-container").append(i);
  644.                 $(n).html("load more &#9660;")
  645.             },
  646.             error: function() {
  647.                 $(n).html("That's it. There was nothing else to show.")
  648.             },
  649.             complete: function() {
  650.                 loadMoreSetRequest = null
  651.             }
  652.         })
  653.     }
  654. }
  655.  
  656. function toggleSource(n) {
  657.     $(n.parentElement.parentElement.parentElement).find("#sourceDisplay").toggle();
  658.     n.text = n.text == "source" ? "hide source" : "source"
  659. }
  660.  
  661. function changeSetName() {
  662.     $("#setName").removeAttr("onclick");
  663.     $("#setName").hide();
  664.     $("#newSetName").show();
  665.     $("#newSetNameEditBox").focus();
  666.     $("#newSetNameEditBox").on("keypress", function(n) {
  667.         n.keyCode === 13 && ($("#setName").html($("#newSetNameEditBox").val()), $("#setName").bind("click", changeSetName), $("#newSetName").hide(), $("#setName").show())
  668.     })
  669. }
  670.  
  671. function cancelSetTitleChange() {
  672.     $("#setName").bind("click", changeSetName);
  673.     $("#newSetName").hide();
  674.     $("#setName").show()
  675. }
  676.  
  677. function saveSetTitle(n, t) {
  678.     $(n).html("Please wait...");
  679.     $.ajax({
  680.         type: "POST",
  681.         url: "/sets/modify/" + t + "/" + $("#newSetNameEditBox").val(),
  682.         success: function() {
  683.             $("#setName").html($("#newSetNameEditBox").val());
  684.             $("#setName").bind("click", changeSetName);
  685.             $("#newSetName").hide();
  686.             $("#setName").show();
  687.             $(n).html("Save")
  688.         },
  689.         error: function() {
  690.             $(n).html("Max 20 characters")
  691.         }
  692.     })
  693. }
  694.  
  695. function deleteSet(n, t) {
  696.     return $(n).html("Are you sure?"), $(n).bind({
  697.         click: function() {
  698.             deleteSetExecute(n, t)
  699.         }
  700.     }), !1
  701. }
  702.  
  703. function deleteSetExecute(n, t) {
  704.     $(n).html("Please wait...");
  705.     $.ajax({
  706.         type: "POST",
  707.         url: "/sets/delete/" + t,
  708.         success: function() {
  709.             $("#set-" + t).remove()
  710.         },
  711.         error: function() {
  712.             $(n).html("Nope.")
  713.         }
  714.     })
  715. }
  716.  
  717. function loadMoreComments2(n, t, i, r, u, f, e) {
  718.     var o, s, h;
  719.     loadCommentsRequest2 || (n.html("Sit tight..."), o = $("#comments-" + i + "-page").html(), o == null ? o = 1 : o++, s = "xxxx".replace(/[xy]/g, function() {
  720.         var n = Math.random() * 16 | 0;
  721.         return n.toString(16)
  722.     }), h = "/comments/" + i + "/" + (r == null ? "null" : r) + "/" + u + "/" + f + "/" + e + "?nocache=" + s, loadCommentsRequest2 = $.ajax({
  723.         url: h,
  724.         success: function(i) {
  725.             t.append(i);
  726.             window.setTimeout(function() {
  727.                 UI.Notifications.raise("DOM", t)
  728.             });
  729.             n.parent().remove()
  730.         },
  731.         error: function() {
  732.             n.html("A problem happened.")
  733.         },
  734.         complete: function() {
  735.             loadCommentsRequest2 = null
  736.         }
  737.     }))
  738. }
  739.  
  740. function loadMoreComments(n, t) {
  741.     if (!loadCommentsRequest) {
  742.         $(n).html("Sit tight...");
  743.         var i = $("#comments-" + t + "-page").html();
  744.         i == null ? i = 1 : i++;
  745.         loadCommentsRequest = $.ajax({
  746.             url: "/comments/" + t + "/" + i + "/",
  747.             success: function(i) {
  748.                 $("#comments-" + t + "-page").remove();
  749.                 $(n).before(i);
  750.                 window.setTimeout(function() {
  751.                     UI.Notifications.raise("DOM", $(n).parent())
  752.                 });
  753.                 $(n).html("load more &#9660;")
  754.             },
  755.             error: function() {
  756.                 $(n).html("That's it. There was nothing else to show. Phew. This was hard.")
  757.             },
  758.             complete: function() {
  759.                 loadCommentsRequest = null
  760.             }
  761.         })
  762.     }
  763. }
  764.  
  765. function goToParent(n, t) {
  766.     $("#" + t).exists() && (n.preventDefault(), window.location.hash = "#" + t)
  767. }
  768.  
  769. function scrollChatToBottom() {
  770.     var n = document.getElementById("subverseChatRoom");
  771.     n.scrollTop = n.scrollHeight
  772. }
  773.  
  774. function sendChatMessage(n, t) {
  775.     if ($.connection != null) {
  776.         var i = $("#chatInputBox").val(),
  777.             r = $.connection.messagingHub;
  778.         r.server.sendChatMessage(n, i, t);
  779.         scrollChatToBottom();
  780.         $("#chatInputBox").val("")
  781.     }
  782. }
  783.  
  784. function joinSubverseChatRoom(n) {
  785.     $.connection != null && $.connection.hub.start().done(function() {
  786.         var t = $.connection.messagingHub;
  787.         t.server.joinSubverseChatRoom(n)
  788.     })
  789. }
  790.  
  791. function toggleNightMode() {
  792.     $.ajax({
  793.         type: "POST",
  794.         url: "/account/togglenightmode/",
  795.         complete: function() {
  796.             window.location.reload()
  797.         }
  798.     })
  799. }
  800.  
  801. function toggleSaveSubmission(n) {
  802.     var t = $(".submission.id-" + n + " .savelink");
  803.     t.exists() && (t.text() === "save" ? t.text("unsave") : t.text("save"), $.ajax({
  804.         type: "POST",
  805.         url: "/save/" + n
  806.     }))
  807. }
  808.  
  809. function toggleSaveComment(n) {
  810.     var t = $(".comment.id-" + n + " .savelink").first();
  811.     t.exists() && (t.text() === "save" ? t.text("unsave") : t.text("save"), $.ajax({
  812.         type: "POST",
  813.         url: "/savecomment/" + n
  814.     }))
  815. }
  816.  
  817. function toggleBlockSubverse(n, t) {
  818.     $(n).toggleClass("btn-blocksubverse btn-unblocksubverse");
  819.     var i = $(n);
  820.     i.exists() && (i.text() === "block" ? i.text("unblock") : i.text("block"), postBlockSubverse(t))
  821. }
  822.  
  823. function toggleBlockSubverseFLButton(n, t) {
  824.     var i = $(n);
  825.     i.exists() && (i.text() === "block subverse" ? i.text("undo") : i.text("block subverse"), postBlockSubverse(t))
  826. }
  827.  
  828. function postBlockSubverse(n) {
  829.     $.ajax({
  830.         type: "POST",
  831.         url: "/subverses/block/" + n
  832.     })
  833. }
  834.  
  835. function checkUsernameAvailability(n) {
  836.     if ($(n).val().length > 1 && !/\s/g.test($(n).val())) var t = $.ajax({
  837.         type: "POST",
  838.         url: "/account/CheckUsernameAvailability",
  839.         data: {
  840.             userName: $(n).val()
  841.         },
  842.         success: function(n) {
  843.             n.available ? $("#usernameAvailabilityStatus").hide() : $("#usernameAvailabilityStatus").show()
  844.         }
  845.     })
  846. }
  847.  
  848. function markAsRead(n, t, i, r) {
  849.     var u, f;
  850.     $(n).attr("onclick", "");
  851.     i != null && r === !1 ? u = $.ajax({
  852.         type: "GET",
  853.         url: "/messaging/markasread",
  854.         data: {
  855.             itemType: t,
  856.             itemId: i,
  857.             markAll: r
  858.         },
  859.         success: function() {
  860.             $(n).text("marked.")
  861.         },
  862.         error: function() {
  863.             $(n).text("something went wrong.")
  864.         }
  865.     }) : f = $.ajax({
  866.         type: "GET",
  867.         url: "/messaging/markasread",
  868.         data: {
  869.             itemType: t,
  870.             markAll: r
  871.         },
  872.         success: function() {
  873.             $(n).text("marked.")
  874.         },
  875.         error: function() {
  876.             $(n).text("something went wrong.")
  877.         }
  878.     })
  879. }
  880.  
  881. function previewStylesheet(n, t) {
  882.     var i = $(n);
  883.     i.html("Hold on...");
  884.     i.prop("disabled", !0);
  885.     $.ajax({
  886.         type: "GET",
  887.         url: "/ajaxhelpers/previewstylesheet?subversetoshow=" + t + "&previewMode=true",
  888.         dataType: "html",
  889.         success: function(n) {
  890.             var t, u, r;
  891.             $("#stylesheetpreviewarea").html(n);
  892.             i.html("Preview");
  893.             i.prop("disabled", !1);
  894.             t = document.getElementById("custom_css");
  895.             u = t.parentNode;
  896.             u.removeChild(t);
  897.             r = document.createElement("style");
  898.             r.innerHTML = $("#Stylesheet").val();
  899.             document.body.appendChild(r)
  900.         }
  901.     })
  902. }
  903.  
  904. function addTagsToEachSelectedTextLine(n, t, r) {
  905.     var u = getSelectionArray(n),
  906.         e = u[1].split("\n"),
  907.         f;
  908.     for (n.value = u[0], i = 0; i < e.length; i++) n.value += addTagsToText(e[i], t, r) + "\n";
  909.     n.value += u[2];
  910.     f = n.value.length - r.length - u[2].length;
  911.     setSelectionRange(n, f, f)
  912. }
  913.  
  914. function addTagsToSelectedText(n, t, i) {
  915.     var r = getSelectionArray(n),
  916.         u;
  917.     n.value = r[0];
  918.     n.value += addTagsToText(r[1], t, i);
  919.     n.value += r[2];
  920.     u = n.value.length - i.length - r[2].length;
  921.     setSelectionRange(n, u, u)
  922. }
  923.  
  924. function addTagsToText(n, t, i) {
  925.     return t + n + i
  926. }
  927.  
  928. function getSelectionArray(n) {
  929.     var t = [n.value, "", ""],
  930.         i, r;
  931.     return n.selectionStart != undefined && (i = n.selectionStart, r = n.selectionEnd, t[0] = n.value.substring(0, i), t[1] = n.value.substring(i, r), t[2] = n.value.substring(r, n.value.length)), t
  932. }
  933.  
  934. function setSelectionRange(n, t, i) {
  935.     if (n.setSelectionRange) n.focus(), n.setSelectionRange(t, i);
  936.     else if (n.createTextRange) {
  937.         var r = n.createTextRange();
  938.         r.collapse(!0);
  939.         r.moveEnd("character", i);
  940.         r.moveStart("character", t);
  941.         r.select()
  942.     }
  943. }
  944.  
  945. function incColumns(n, t) {
  946.     n.value++;
  947.     updateNumColumnsDisplay(n, t)
  948. }
  949.  
  950. function decColumns(n, t) {
  951.     n.value > 1 && n.value--;
  952.     updateNumColumnsDisplay(n, t)
  953. }
  954.  
  955. function updateNumColumnsDisplay(n, t) {
  956.     t.innerHTML = n.value
  957. }
  958.  
  959. function incRows(n, t) {
  960.     n.value++;
  961.     updateNumRowsDisplay(n, t)
  962. }
  963.  
  964. function decRows(n, t) {
  965.     n.value > 1 && n.value--;
  966.     updateNumRowsDisplay(n, t)
  967. }
  968.  
  969. function updateNumRowsDisplay(n, t) {
  970.     t.innerHTML = n.value
  971. }
  972.  
  973. function createTable(n, t, i) {
  974.     var u = getSelectionArray(n),
  975.         f;
  976.     if (t >= 1 && i >= 1) {
  977.         for (n.value = u[0], c = 0; c < t; c++) n.value += "Title |";
  978.         for (n.value += "\n", c = 0; c < t; c++) n.value += "--- |";
  979.         for (n.value += "\n", r = 0; r < i; r++) {
  980.             for (c = 0; c < t; c++) n.value += "Text |";
  981.             n.value += "\n"
  982.         }
  983.         n.value += u[2];
  984.         f = n.value.length - u[2].length;
  985.         setSelectionRange(n, f, f)
  986.     } else alert("Error: Unable to create table! Invalid number of columns/rows.")
  987. }
  988.  
  989. function addHyperlink(n, t) {
  990.     t != "" && t !== null && (getSelectionArray(n)[1] == "" ? addTagsToSelectedText(n, "[Title Here", "](" + t + ")") : addTagsToSelectedText(n, "[", "](" + t + ")"));
  991.     n.focus()
  992. }
  993.  
  994. function addCode(n) {
  995.     var t = getSelectionArray(n),
  996.         r, i;
  997.     n.value = t[0];
  998.     r = /\r|\n/.exec(t[1]) || t[1].length == 0;
  999.     n.value += r ? addTagsToText(t[1], "~~~\n", "\n~~~") : addTagsToText(t[1], "`", "`");
  1000.     n.value += t[2];
  1001.     i = n.value.length - rightTag.length - t[2].length;
  1002.     setSelectionRange(n, i, i)
  1003. }
  1004. var UI, LinkExpando, ImageLinkExpando, VideoLinkExpando, GfycatExpando, ImgurGifvExpando, WebMExpando, MP4Expando, IFrameEmbedderExpando, YouTubeExpando, ImgurAlbumExpando, VimeoExpando, CoubExpando, SoundCloudExpando, submissionVoteLock, commentVoteLock, replyCommentFormRequest, replyFormPMRequest, replyToCommentFormRequest, loadMoreSetRequest, loadCommentsRequest2, loadCommentsRequest;
  1005. ! function(n, t) {
  1006.     "object" == typeof module && "object" == typeof module.exports ? module.exports = n.document ? t(n, !0) : function(n) {
  1007.         if (!n.document) throw new Error("jQuery requires a window with a document");
  1008.         return t(n)
  1009.     } : t(n)
  1010. }("undefined" != typeof window ? window : this, function(n, t) {
  1011.     function ri(n) {
  1012.         var t = "length" in n && n.length,
  1013.             r = i.type(n);
  1014.         return "function" === r || i.isWindow(n) ? !1 : 1 === n.nodeType && t ? !0 : "array" === r || 0 === t || "number" == typeof t && t > 0 && t - 1 in n
  1015.     }
  1016.  
  1017.     function ui(n, t, r) {
  1018.         if (i.isFunction(t)) return i.grep(n, function(n, i) {
  1019.             return !!t.call(n, i, n) !== r
  1020.         });
  1021.         if (t.nodeType) return i.grep(n, function(n) {
  1022.             return n === t !== r
  1023.         });
  1024.         if ("string" == typeof t) {
  1025.             if (ef.test(t)) return i.filter(t, n, r);
  1026.             t = i.filter(t, n)
  1027.         }
  1028.         return i.grep(n, function(n) {
  1029.             return ft.call(t, n) >= 0 !== r
  1030.         })
  1031.     }
  1032.  
  1033.     function ur(n, t) {
  1034.         while ((n = n[t]) && 1 !== n.nodeType);
  1035.         return n
  1036.     }
  1037.  
  1038.     function of(n) {
  1039.         var t = fi[n] = {};
  1040.         return i.each(n.match(c) || [], function(n, i) {
  1041.             t[i] = !0
  1042.         }), t
  1043.     }
  1044.  
  1045.     function ht() {
  1046.         u.removeEventListener("DOMContentLoaded", ht, !1);
  1047.         n.removeEventListener("load", ht, !1);
  1048.         i.ready()
  1049.     }
  1050.  
  1051.     function v() {
  1052.         Object.defineProperty(this.cache = {}, 0, {
  1053.             get: function() {
  1054.                 return {}
  1055.             }
  1056.         });
  1057.         this.expando = i.expando + v.uid++
  1058.     }
  1059.  
  1060.     function fr(n, t, r) {
  1061.         var u;
  1062.         if (void 0 === r && 1 === n.nodeType)
  1063.             if (u = "data-" + t.replace(hf, "-$1").toLowerCase(), r = n.getAttribute(u), "string" == typeof r) {
  1064.                 try {
  1065.                     r = "true" === r ? !0 : "false" === r ? !1 : "null" === r ? null : +r + "" === r ? +r : sf.test(r) ? i.parseJSON(r) : r
  1066.                 } catch (f) {}
  1067.                 e.set(n, t, r)
  1068.             } else r = void 0;
  1069.         return r
  1070.     }
  1071.  
  1072.     function lt() {
  1073.         return !0
  1074.     }
  1075.  
  1076.     function k() {
  1077.         return !1
  1078.     }
  1079.  
  1080.     function hr() {
  1081.         try {
  1082.             return u.activeElement
  1083.         } catch (n) {}
  1084.     }
  1085.  
  1086.     function vr(n, t) {
  1087.         return i.nodeName(n, "table") && i.nodeName(11 !== t.nodeType ? t : t.firstChild, "tr") ? n.getElementsByTagName("tbody")[0] || n.appendChild(n.ownerDocument.createElement("tbody")) : n
  1088.     }
  1089.  
  1090.     function bf(n) {
  1091.         return n.type = (null !== n.getAttribute("type")) + "/" + n.type, n
  1092.     }
  1093.  
  1094.     function kf(n) {
  1095.         var t = pf.exec(n.type);
  1096.         return t ? n.type = t[1] : n.removeAttribute("type"), n
  1097.     }
  1098.  
  1099.     function ei(n, t) {
  1100.         for (var i = 0, u = n.length; u > i; i++) r.set(n[i], "globalEval", !t || r.get(t[i], "globalEval"))
  1101.     }
  1102.  
  1103.     function yr(n, t) {
  1104.         var u, c, f, s, h, l, a, o;
  1105.         if (1 === t.nodeType) {
  1106.             if (r.hasData(n) && (s = r.access(n), h = r.set(t, s), o = s.events)) {
  1107.                 delete h.handle;
  1108.                 h.events = {};
  1109.                 for (f in o)
  1110.                     for (u = 0, c = o[f].length; c > u; u++) i.event.add(t, f, o[f][u])
  1111.             }
  1112.             e.hasData(n) && (l = e.access(n), a = i.extend({}, l), e.set(t, a))
  1113.         }
  1114.     }
  1115.  
  1116.     function o(n, t) {
  1117.         var r = n.getElementsByTagName ? n.getElementsByTagName(t || "*") : n.querySelectorAll ? n.querySelectorAll(t || "*") : [];
  1118.         return void 0 === t || t && i.nodeName(n, t) ? i.merge([n], r) : r
  1119.     }
  1120.  
  1121.     function df(n, t) {
  1122.         var i = t.nodeName.toLowerCase();
  1123.         "input" === i && er.test(n.type) ? t.checked = n.checked : ("input" === i || "textarea" === i) && (t.defaultValue = n.defaultValue)
  1124.     }
  1125.  
  1126.     function pr(t, r) {
  1127.         var f, u = i(r.createElement(t)).appendTo(r.body),
  1128.             e = n.getDefaultComputedStyle && (f = n.getDefaultComputedStyle(u[0])) ? f.display : i.css(u[0], "display");
  1129.         return u.detach(), e
  1130.     }
  1131.  
  1132.     function si(n) {
  1133.         var r = u,
  1134.             t = oi[n];
  1135.         return t || (t = pr(n, r), "none" !== t && t || (at = (at || i("<iframe frameborder='0' width='0' height='0'/>")).appendTo(r.documentElement), r = at[0].contentDocument, r.write(), r.close(), t = pr(n, r), at.detach()), oi[n] = t), t
  1136.     }
  1137.  
  1138.     function it(n, t, r) {
  1139.         var e, o, s, u, f = n.style;
  1140.         return r = r || vt(n), r && (u = r.getPropertyValue(t) || r[t]), r && ("" !== u || i.contains(n.ownerDocument, n) || (u = i.style(n, t)), hi.test(u) && wr.test(t) && (e = f.width, o = f.minWidth, s = f.maxWidth, f.minWidth = f.maxWidth = f.width = u, u = r.width, f.width = e, f.minWidth = o, f.maxWidth = s)), void 0 !== u ? u + "" : u
  1141.     }
  1142.  
  1143.     function br(n, t) {
  1144.         return {
  1145.             get: function() {
  1146.                 return n() ? void delete this.get : (this.get = t).apply(this, arguments)
  1147.             }
  1148.         }
  1149.     }
  1150.  
  1151.     function gr(n, t) {
  1152.         if (t in n) return t;
  1153.         for (var r = t[0].toUpperCase() + t.slice(1), u = t, i = dr.length; i--;)
  1154.             if (t = dr[i] + r, t in n) return t;
  1155.         return u
  1156.     }
  1157.  
  1158.     function nu(n, t, i) {
  1159.         var r = ne.exec(t);
  1160.         return r ? Math.max(0, r[1] - (i || 0)) + (r[2] || "px") : t
  1161.     }
  1162.  
  1163.     function tu(n, t, r, u, f) {
  1164.         for (var e = r === (u ? "border" : "content") ? 4 : "width" === t ? 1 : 0, o = 0; 4 > e; e += 2) "margin" === r && (o += i.css(n, r + p[e], !0, f)), u ? ("content" === r && (o -= i.css(n, "padding" + p[e], !0, f)), "margin" !== r && (o -= i.css(n, "border" + p[e] + "Width", !0, f))) : (o += i.css(n, "padding" + p[e], !0, f), "padding" !== r && (o += i.css(n, "border" + p[e] + "Width", !0, f)));
  1165.         return o
  1166.     }
  1167.  
  1168.     function iu(n, t, r) {
  1169.         var o = !0,
  1170.             u = "width" === t ? n.offsetWidth : n.offsetHeight,
  1171.             e = vt(n),
  1172.             s = "border-box" === i.css(n, "boxSizing", !1, e);
  1173.         if (0 >= u || null == u) {
  1174.             if (u = it(n, t, e), (0 > u || null == u) && (u = n.style[t]), hi.test(u)) return u;
  1175.             o = s && (f.boxSizingReliable() || u === n.style[t]);
  1176.             u = parseFloat(u) || 0
  1177.         }
  1178.         return u + tu(n, t, r || (s ? "border" : "content"), o, e) + "px"
  1179.     }
  1180.  
  1181.     function ru(n, t) {
  1182.         for (var e, u, s, o = [], f = 0, h = n.length; h > f; f++) u = n[f], u.style && (o[f] = r.get(u, "olddisplay"), e = u.style.display, t ? (o[f] || "none" !== e || (u.style.display = ""), "" === u.style.display && tt(u) && (o[f] = r.access(u, "olddisplay", si(u.nodeName)))) : (s = tt(u), "none" === e && s || r.set(u, "olddisplay", s ? e : i.css(u, "display"))));
  1183.         for (f = 0; h > f; f++) u = n[f], u.style && (t && "none" !== u.style.display && "" !== u.style.display || (u.style.display = t ? o[f] || "" : "none"));
  1184.         return n
  1185.     }
  1186.  
  1187.     function s(n, t, i, r, u) {
  1188.         return new s.prototype.init(n, t, i, r, u)
  1189.     }
  1190.  
  1191.     function fu() {
  1192.         return setTimeout(function() {
  1193.             d = void 0
  1194.         }), d = i.now()
  1195.     }
  1196.  
  1197.     function wt(n, t) {
  1198.         var r, u = 0,
  1199.             i = {
  1200.                 height: n
  1201.             };
  1202.         for (t = t ? 1 : 0; 4 > u; u += 2 - t) r = p[u], i["margin" + r] = i["padding" + r] = n;
  1203.         return t && (i.opacity = i.width = n), i
  1204.     }
  1205.  
  1206.     function eu(n, t, i) {
  1207.         for (var u, f = (rt[t] || []).concat(rt["*"]), r = 0, e = f.length; e > r; r++)
  1208.             if (u = f[r].call(i, t, n)) return u
  1209.     }
  1210.  
  1211.     function fe(n, t, u) {
  1212.         var f, a, p, v, o, w, h, b, l = this,
  1213.             y = {},
  1214.             s = n.style,
  1215.             c = n.nodeType && tt(n),
  1216.             e = r.get(n, "fxshow");
  1217.         u.queue || (o = i._queueHooks(n, "fx"), null == o.unqueued && (o.unqueued = 0, w = o.empty.fire, o.empty.fire = function() {
  1218.             o.unqueued || w()
  1219.         }), o.unqueued++, l.always(function() {
  1220.             l.always(function() {
  1221.                 o.unqueued--;
  1222.                 i.queue(n, "fx").length || o.empty.fire()
  1223.             })
  1224.         }));
  1225.         1 === n.nodeType && ("height" in t || "width" in t) && (u.overflow = [s.overflow, s.overflowX, s.overflowY], h = i.css(n, "display"), b = "none" === h ? r.get(n, "olddisplay") || si(n.nodeName) : h, "inline" === b && "none" === i.css(n, "float") && (s.display = "inline-block"));
  1226.         u.overflow && (s.overflow = "hidden", l.always(function() {
  1227.             s.overflow = u.overflow[0];
  1228.             s.overflowX = u.overflow[1];
  1229.             s.overflowY = u.overflow[2]
  1230.         }));
  1231.         for (f in t)
  1232.             if (a = t[f], re.exec(a)) {
  1233.                 if (delete t[f], p = p || "toggle" === a, a === (c ? "hide" : "show")) {
  1234.                     if ("show" !== a || !e || void 0 === e[f]) continue;
  1235.                     c = !0
  1236.                 }
  1237.                 y[f] = e && e[f] || i.style(n, f)
  1238.             } else h = void 0;
  1239.         if (i.isEmptyObject(y)) "inline" === ("none" === h ? si(n.nodeName) : h) && (s.display = h);
  1240.         else {
  1241.             e ? "hidden" in e && (c = e.hidden) : e = r.access(n, "fxshow", {});
  1242.             p && (e.hidden = !c);
  1243.             c ? i(n).show() : l.done(function() {
  1244.                 i(n).hide()
  1245.             });
  1246.             l.done(function() {
  1247.                 var t;
  1248.                 r.remove(n, "fxshow");
  1249.                 for (t in y) i.style(n, t, y[t])
  1250.             });
  1251.             for (f in y) v = eu(c ? e[f] : 0, f, l), f in e || (e[f] = v.start, c && (v.end = v.start, v.start = "width" === f || "height" === f ? 1 : 0))
  1252.         }
  1253.     }
  1254.  
  1255.     function ee(n, t) {
  1256.         var r, f, e, u, o;
  1257.         for (r in n)
  1258.             if (f = i.camelCase(r), e = t[f], u = n[r], i.isArray(u) && (e = u[1], u = n[r] = u[0]), r !== f && (n[f] = u, delete n[r]), o = i.cssHooks[f], o && "expand" in o) {
  1259.                 u = o.expand(u);
  1260.                 delete n[f];
  1261.                 for (r in u) r in n || (n[r] = u[r], t[r] = e)
  1262.             } else t[f] = e
  1263.     }
  1264.  
  1265.     function ou(n, t, r) {
  1266.         var h, e, o = 0,
  1267.             l = pt.length,
  1268.             f = i.Deferred().always(function() {
  1269.                 delete c.elem
  1270.             }),
  1271.             c = function() {
  1272.                 if (e) return !1;
  1273.                 for (var s = d || fu(), t = Math.max(0, u.startTime + u.duration - s), h = t / u.duration || 0, i = 1 - h, r = 0, o = u.tweens.length; o > r; r++) u.tweens[r].run(i);
  1274.                 return f.notifyWith(n, [u, i, t]), 1 > i && o ? t : (f.resolveWith(n, [u]), !1)
  1275.             },
  1276.             u = f.promise({
  1277.                 elem: n,
  1278.                 props: i.extend({}, t),
  1279.                 opts: i.extend(!0, {
  1280.                     specialEasing: {}
  1281.                 }, r),
  1282.                 originalProperties: t,
  1283.                 originalOptions: r,
  1284.                 startTime: d || fu(),
  1285.                 duration: r.duration,
  1286.                 tweens: [],
  1287.                 createTween: function(t, r) {
  1288.                     var f = i.Tween(n, u.opts, t, r, u.opts.specialEasing[t] || u.opts.easing);
  1289.                     return u.tweens.push(f), f
  1290.                 },
  1291.                 stop: function(t) {
  1292.                     var i = 0,
  1293.                         r = t ? u.tweens.length : 0;
  1294.                     if (e) return this;
  1295.                     for (e = !0; r > i; i++) u.tweens[i].run(1);
  1296.                     return t ? f.resolveWith(n, [u, t]) : f.rejectWith(n, [u, t]), this
  1297.                 }
  1298.             }),
  1299.             s = u.props;
  1300.         for (ee(s, u.opts.specialEasing); l > o; o++)
  1301.             if (h = pt[o].call(u, n, s, u.opts)) return h;
  1302.         return i.map(s, eu, u), i.isFunction(u.opts.start) && u.opts.start.call(n, u), i.fx.timer(i.extend(c, {
  1303.             elem: n,
  1304.             anim: u,
  1305.             queue: u.opts.queue
  1306.         })), u.progress(u.opts.progress).done(u.opts.done, u.opts.complete).fail(u.opts.fail).always(u.opts.always)
  1307.     }
  1308.  
  1309.     function pu(n) {
  1310.         return function(t, r) {
  1311.             "string" != typeof t && (r = t, t = "*");
  1312.             var u, f = 0,
  1313.                 e = t.toLowerCase().match(c) || [];
  1314.             if (i.isFunction(r))
  1315.                 while (u = e[f++]) "+" === u[0] ? (u = u.slice(1) || "*", (n[u] = n[u] || []).unshift(r)) : (n[u] = n[u] || []).push(r)
  1316.         }
  1317.     }
  1318.  
  1319.     function wu(n, t, r, u) {
  1320.         function e(s) {
  1321.             var h;
  1322.             return f[s] = !0, i.each(n[s] || [], function(n, i) {
  1323.                 var s = i(t, r, u);
  1324.                 return "string" != typeof s || o || f[s] ? o ? !(h = s) : void 0 : (t.dataTypes.unshift(s), e(s), !1)
  1325.             }), h
  1326.         }
  1327.         var f = {},
  1328.             o = n === ci;
  1329.         return e(t.dataTypes[0]) || !f["*"] && e("*")
  1330.     }
  1331.  
  1332.     function ai(n, t) {
  1333.         var r, u, f = i.ajaxSettings.flatOptions || {};
  1334.         for (r in t) void 0 !== t[r] && ((f[r] ? n : u || (u = {}))[r] = t[r]);
  1335.         return u && i.extend(!0, n, u), n
  1336.     }
  1337.  
  1338.     function ae(n, t, i) {
  1339.         for (var e, u, f, o, s = n.contents, r = n.dataTypes;
  1340.             "*" === r[0];) r.shift(), void 0 === e && (e = n.mimeType || t.getResponseHeader("Content-Type"));
  1341.         if (e)
  1342.             for (u in s)
  1343.                 if (s[u] && s[u].test(e)) {
  1344.                     r.unshift(u);
  1345.                     break
  1346.                 }
  1347.         if (r[0] in i) f = r[0];
  1348.         else {
  1349.             for (u in i) {
  1350.                 if (!r[0] || n.converters[u + " " + r[0]]) {
  1351.                     f = u;
  1352.                     break
  1353.                 }
  1354.                 o || (o = u)
  1355.             }
  1356.             f = f || o
  1357.         }
  1358.         if (f) return (f !== r[0] && r.unshift(f), i[f])
  1359.     }
  1360.  
  1361.     function ve(n, t, i, r) {
  1362.         var h, u, f, s, e, o = {},
  1363.             c = n.dataTypes.slice();
  1364.         if (c[1])
  1365.             for (f in n.converters) o[f.toLowerCase()] = n.converters[f];
  1366.         for (u = c.shift(); u;)
  1367.             if (n.responseFields[u] && (i[n.responseFields[u]] = t), !e && r && n.dataFilter && (t = n.dataFilter(t, n.dataType)), e = u, u = c.shift())
  1368.                 if ("*" === u) u = e;
  1369.                 else if ("*" !== e && e !== u) {
  1370.             if (f = o[e + " " + u] || o["* " + u], !f)
  1371.                 for (h in o)
  1372.                     if (s = h.split(" "), s[1] === u && (f = o[e + " " + s[0]] || o["* " + s[0]])) {
  1373.                         f === !0 ? f = o[h] : o[h] !== !0 && (u = s[0], c.unshift(s[1]));
  1374.                         break
  1375.                     }
  1376.             if (f !== !0)
  1377.                 if (f && n.throws) t = f(t);
  1378.                 else try {
  1379.                     t = f(t)
  1380.                 } catch (l) {
  1381.                     return {
  1382.                         state: "parsererror",
  1383.                         error: f ? l : "No conversion from " + e + " to " + u
  1384.                     }
  1385.                 }
  1386.         }
  1387.         return {
  1388.             state: "success",
  1389.             data: t
  1390.         }
  1391.     }
  1392.  
  1393.     function vi(n, t, r, u) {
  1394.         var f;
  1395.         if (i.isArray(t)) i.each(t, function(t, i) {
  1396.             r || pe.test(n) ? u(n, i) : vi(n + "[" + ("object" == typeof i ? t : "") + "]", i, r, u)
  1397.         });
  1398.         else if (r || "object" !== i.type(t)) u(n, t);
  1399.         else
  1400.             for (f in t) vi(n + "[" + f + "]", t[f], r, u)
  1401.     }
  1402.  
  1403.     function ku(n) {
  1404.         return i.isWindow(n) ? n : 9 === n.nodeType && n.defaultView
  1405.     }
  1406.     var w = [],
  1407.         a = w.slice,
  1408.         bi = w.concat,
  1409.         ti = w.push,
  1410.         ft = w.indexOf,
  1411.         et = {},
  1412.         nf = et.toString,
  1413.         ii = et.hasOwnProperty,
  1414.         f = {},
  1415.         u = n.document,
  1416.         ki = "2.1.4",
  1417.         i = function(n, t) {
  1418.             return new i.fn.init(n, t)
  1419.         },
  1420.         tf = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
  1421.         rf = /^-ms-/,
  1422.         uf = /-([\da-z])/gi,
  1423.         ff = function(n, t) {
  1424.             return t.toUpperCase()
  1425.         },
  1426.         y, ot, nr, tr, ir, rr, c, fi, st, l, b, at, oi, oe, su, g, hu, bt, cu, kt, dt, yi, ni, pi, wi, du, gu;
  1427.     i.fn = i.prototype = {
  1428.         jquery: ki,
  1429.         constructor: i,
  1430.         selector: "",
  1431.         length: 0,
  1432.         toArray: function() {
  1433.             return a.call(this)
  1434.         },
  1435.         get: function(n) {
  1436.             return null != n ? 0 > n ? this[n + this.length] : this[n] : a.call(this)
  1437.         },
  1438.         pushStack: function(n) {
  1439.             var t = i.merge(this.constructor(), n);
  1440.             return t.prevObject = this, t.context = this.context, t
  1441.         },
  1442.         each: function(n, t) {
  1443.             return i.each(this, n, t)
  1444.         },
  1445.         map: function(n) {
  1446.             return this.pushStack(i.map(this, function(t, i) {
  1447.                 return n.call(t, i, t)
  1448.             }))
  1449.         },
  1450.         slice: function() {
  1451.             return this.pushStack(a.apply(this, arguments))
  1452.         },
  1453.         first: function() {
  1454.             return this.eq(0)
  1455.         },
  1456.         last: function() {
  1457.             return this.eq(-1)
  1458.         },
  1459.         eq: function(n) {
  1460.             var i = this.length,
  1461.                 t = +n + (0 > n ? i : 0);
  1462.             return this.pushStack(t >= 0 && i > t ? [this[t]] : [])
  1463.         },
  1464.         end: function() {
  1465.             return this.prevObject || this.constructor(null)
  1466.         },
  1467.         push: ti,
  1468.         sort: w.sort,
  1469.         splice: w.splice
  1470.     };
  1471.     i.extend = i.fn.extend = function() {
  1472.         var e, f, r, t, o, s, n = arguments[0] || {},
  1473.             u = 1,
  1474.             c = arguments.length,
  1475.             h = !1;
  1476.         for ("boolean" == typeof n && (h = n, n = arguments[u] || {}, u++), "object" == typeof n || i.isFunction(n) || (n = {}), u === c && (n = this, u--); c > u; u++)
  1477.             if (null != (e = arguments[u]))
  1478.                 for (f in e) r = n[f], t = e[f], n !== t && (h && t && (i.isPlainObject(t) || (o = i.isArray(t))) ? (o ? (o = !1, s = r && i.isArray(r) ? r : []) : s = r && i.isPlainObject(r) ? r : {}, n[f] = i.extend(h, s, t)) : void 0 !== t && (n[f] = t));
  1479.         return n
  1480.     };
  1481.     i.extend({
  1482.         expando: "jQuery" + (ki + Math.random()).replace(/\D/g, ""),
  1483.         isReady: !0,
  1484.         error: function(n) {
  1485.             throw new Error(n);
  1486.         },
  1487.         noop: function() {},
  1488.         isFunction: function(n) {
  1489.             return "function" === i.type(n)
  1490.         },
  1491.         isArray: Array.isArray,
  1492.         isWindow: function(n) {
  1493.             return null != n && n === n.window
  1494.         },
  1495.         isNumeric: function(n) {
  1496.             return !i.isArray(n) && n - parseFloat(n) + 1 >= 0
  1497.         },
  1498.         isPlainObject: function(n) {
  1499.             return "object" !== i.type(n) || n.nodeType || i.isWindow(n) ? !1 : n.constructor && !ii.call(n.constructor.prototype, "isPrototypeOf") ? !1 : !0
  1500.         },
  1501.         isEmptyObject: function(n) {
  1502.             for (var t in n) return !1;
  1503.             return !0
  1504.         },
  1505.         type: function(n) {
  1506.             return null == n ? n + "" : "object" == typeof n || "function" == typeof n ? et[nf.call(n)] || "object" : typeof n
  1507.         },
  1508.         globalEval: function(n) {
  1509.             var t, r = eval;
  1510.             n = i.trim(n);
  1511.             n && (1 === n.indexOf("use strict") ? (t = u.createElement("script"), t.text = n, u.head.appendChild(t).parentNode.removeChild(t)) : r(n))
  1512.         },
  1513.         camelCase: function(n) {
  1514.             return n.replace(rf, "ms-").replace(uf, ff)
  1515.         },
  1516.         nodeName: function(n, t) {
  1517.             return n.nodeName && n.nodeName.toLowerCase() === t.toLowerCase()
  1518.         },
  1519.         each: function(n, t, i) {
  1520.             var u, r = 0,
  1521.                 f = n.length,
  1522.                 e = ri(n);
  1523.             if (i) {
  1524.                 if (e) {
  1525.                     for (; f > r; r++)
  1526.                         if (u = t.apply(n[r], i), u === !1) break
  1527.                 } else
  1528.                     for (r in n)
  1529.                         if (u = t.apply(n[r], i), u === !1) break
  1530.             } else if (e) {
  1531.                 for (; f > r; r++)
  1532.                     if (u = t.call(n[r], r, n[r]), u === !1) break
  1533.             } else
  1534.                 for (r in n)
  1535.                     if (u = t.call(n[r], r, n[r]), u === !1) break; return n
  1536.         },
  1537.         trim: function(n) {
  1538.             return null == n ? "" : (n + "").replace(tf, "")
  1539.         },
  1540.         makeArray: function(n, t) {
  1541.             var r = t || [];
  1542.             return null != n && (ri(Object(n)) ? i.merge(r, "string" == typeof n ? [n] : n) : ti.call(r, n)), r
  1543.         },
  1544.         inArray: function(n, t, i) {
  1545.             return null == t ? -1 : ft.call(t, n, i)
  1546.         },
  1547.         merge: function(n, t) {
  1548.             for (var u = +t.length, i = 0, r = n.length; u > i; i++) n[r++] = t[i];
  1549.             return n.length = r, n
  1550.         },
  1551.         grep: function(n, t, i) {
  1552.             for (var u, f = [], r = 0, e = n.length, o = !i; e > r; r++) u = !t(n[r], r), u !== o && f.push(n[r]);
  1553.             return f
  1554.         },
  1555.         map: function(n, t, i) {
  1556.             var u, r = 0,
  1557.                 e = n.length,
  1558.                 o = ri(n),
  1559.                 f = [];
  1560.             if (o)
  1561.                 for (; e > r; r++) u = t(n[r], r, i), null != u && f.push(u);
  1562.             else
  1563.                 for (r in n) u = t(n[r], r, i), null != u && f.push(u);
  1564.             return bi.apply([], f)
  1565.         },
  1566.         guid: 1,
  1567.         proxy: function(n, t) {
  1568.             var u, f, r;
  1569.             return "string" == typeof t && (u = n[t], t = n, n = u), i.isFunction(n) ? (f = a.call(arguments, 2), r = function() {
  1570.                 return n.apply(t || this, f.concat(a.call(arguments)))
  1571.             }, r.guid = n.guid = n.guid || i.guid++, r) : void 0
  1572.         },
  1573.         now: Date.now,
  1574.         support: f
  1575.     });
  1576.     i.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(n, t) {
  1577.         et["[object " + t + "]"] = t.toLowerCase()
  1578.     });
  1579.     y = function(n) {
  1580.         function r(n, t, i, r) {
  1581.             var p, s, a, c, w, y, d, v, nt, g;
  1582.             if ((t ? t.ownerDocument || t : h) !== o && k(t), t = t || o, i = i || [], c = t.nodeType, "string" != typeof n || !n || 1 !== c && 9 !== c && 11 !== c) return i;
  1583.             if (!r && l) {
  1584.                 if (11 !== c && (p = hr.exec(n)))
  1585.                     if (a = p[1]) {
  1586.                         if (9 === c) {
  1587.                             if (s = t.getElementById(a), !s || !s.parentNode) return i;
  1588.                             if (s.id === a) return i.push(s), i
  1589.                         } else if (t.ownerDocument && (s = t.ownerDocument.getElementById(a)) && et(t, s) && s.id === a) return i.push(s), i
  1590.                     } else {
  1591.                         if (p[2]) return b.apply(i, t.getElementsByTagName(n)), i;
  1592.                         if ((a = p[3]) && u.getElementsByClassName) return b.apply(i, t.getElementsByClassName(a)), i
  1593.                     }
  1594.                 if (u.qsa && (!e || !e.test(n))) {
  1595.                     if (v = d = f, nt = t, g = 1 !== c && n, 1 === c && "object" !== t.nodeName.toLowerCase()) {
  1596.                         for (y = ft(n), (d = t.getAttribute("id")) ? v = d.replace(cr, "\\$&") : t.setAttribute("id", v), v = "[id='" + v + "'] ", w = y.length; w--;) y[w] = v + vt(y[w]);
  1597.                         nt = dt.test(n) && ti(t.parentNode) || t;
  1598.                         g = y.join(",")
  1599.                     }
  1600.                     if (g) try {
  1601.                         return b.apply(i, nt.querySelectorAll(g)), i
  1602.                     } catch (tt) {} finally {
  1603.                         d || t.removeAttribute("id")
  1604.                     }
  1605.                 }
  1606.             }
  1607.             return oi(n.replace(lt, "$1"), t, i, r)
  1608.         }
  1609.  
  1610.         function gt() {
  1611.             function n(r, u) {
  1612.                 return i.push(r + " ") > t.cacheLength && delete n[i.shift()], n[r + " "] = u
  1613.             }
  1614.             var i = [];
  1615.             return n
  1616.         }
  1617.  
  1618.         function c(n) {
  1619.             return n[f] = !0, n
  1620.         }
  1621.  
  1622.         function v(n) {
  1623.             var t = o.createElement("div");
  1624.             try {
  1625.                 return !!n(t)
  1626.             } catch (i) {
  1627.                 return !1
  1628.             } finally {
  1629.                 t.parentNode && t.parentNode.removeChild(t);
  1630.                 t = null
  1631.             }
  1632.         }
  1633.  
  1634.         function ni(n, i) {
  1635.             for (var u = n.split("|"), r = n.length; r--;) t.attrHandle[u[r]] = i
  1636.         }
  1637.  
  1638.         function wi(n, t) {
  1639.             var i = t && n,
  1640.                 r = i && 1 === n.nodeType && 1 === t.nodeType && (~t.sourceIndex || li) - (~n.sourceIndex || li);
  1641.             if (r) return r;
  1642.             if (i)
  1643.                 while (i = i.nextSibling)
  1644.                     if (i === t) return -1;
  1645.             return n ? 1 : -1
  1646.         }
  1647.  
  1648.         function lr(n) {
  1649.             return function(t) {
  1650.                 var i = t.nodeName.toLowerCase();
  1651.                 return "input" === i && t.type === n
  1652.             }
  1653.         }
  1654.  
  1655.         function ar(n) {
  1656.             return function(t) {
  1657.                 var i = t.nodeName.toLowerCase();
  1658.                 return ("input" === i || "button" === i) && t.type === n
  1659.             }
  1660.         }
  1661.  
  1662.         function tt(n) {
  1663.             return c(function(t) {
  1664.                 return t = +t, c(function(i, r) {
  1665.                     for (var u, f = n([], i.length, t), e = f.length; e--;) i[u = f[e]] && (i[u] = !(r[u] = i[u]))
  1666.                 })
  1667.             })
  1668.         }
  1669.  
  1670.         function ti(n) {
  1671.             return n && "undefined" != typeof n.getElementsByTagName && n
  1672.         }
  1673.  
  1674.         function bi() {}
  1675.  
  1676.         function vt(n) {
  1677.             for (var t = 0, r = n.length, i = ""; r > t; t++) i += n[t].value;
  1678.             return i
  1679.         }
  1680.  
  1681.         function ii(n, t, i) {
  1682.             var r = t.dir,
  1683.                 u = i && "parentNode" === r,
  1684.                 e = ki++;
  1685.             return t.first ? function(t, i, f) {
  1686.                 while (t = t[r])
  1687.                     if (1 === t.nodeType || u) return n(t, i, f)
  1688.             } : function(t, i, o) {
  1689.                 var s, h, c = [a, e];
  1690.                 if (o) {
  1691.                     while (t = t[r])
  1692.                         if ((1 === t.nodeType || u) && n(t, i, o)) return !0
  1693.                 } else
  1694.                     while (t = t[r])
  1695.                         if (1 === t.nodeType || u) {
  1696.                             if (h = t[f] || (t[f] = {}), (s = h[r]) && s[0] === a && s[1] === e) return c[2] = s[2];
  1697.                             if (h[r] = c, c[2] = n(t, i, o)) return !0
  1698.                         }
  1699.             }
  1700.         }
  1701.  
  1702.         function ri(n) {
  1703.             return n.length > 1 ? function(t, i, r) {
  1704.                 for (var u = n.length; u--;)
  1705.                     if (!n[u](t, i, r)) return !1;
  1706.                 return !0
  1707.             } : n[0]
  1708.         }
  1709.  
  1710.         function vr(n, t, i) {
  1711.             for (var u = 0, f = t.length; f > u; u++) r(n, t[u], i);
  1712.             return i
  1713.         }
  1714.  
  1715.         function yt(n, t, i, r, u) {
  1716.             for (var e, o = [], f = 0, s = n.length, h = null != t; s > f; f++)(e = n[f]) && (!i || i(e, r, u)) && (o.push(e), h && t.push(f));
  1717.             return o
  1718.         }
  1719.  
  1720.         function ui(n, t, i, r, u, e) {
  1721.             return r && !r[f] && (r = ui(r)), u && !u[f] && (u = ui(u, e)), c(function(f, e, o, s) {
  1722.                 var l, c, a, p = [],
  1723.                     y = [],
  1724.                     w = e.length,
  1725.                     k = f || vr(t || "*", o.nodeType ? [o] : o, []),
  1726.                     v = !n || !f && t ? k : yt(k, p, n, o, s),
  1727.                     h = i ? u || (f ? n : w || r) ? [] : e : v;
  1728.                 if (i && i(v, h, o, s), r)
  1729.                     for (l = yt(h, y), r(l, [], o, s), c = l.length; c--;)(a = l[c]) && (h[y[c]] = !(v[y[c]] = a));
  1730.                 if (f) {
  1731.                     if (u || n) {
  1732.                         if (u) {
  1733.                             for (l = [], c = h.length; c--;)(a = h[c]) && l.push(v[c] = a);
  1734.                             u(null, h = [], l, s)
  1735.                         }
  1736.                         for (c = h.length; c--;)(a = h[c]) && (l = u ? nt(f, a) : p[c]) > -1 && (f[l] = !(e[l] = a))
  1737.                     }
  1738.                 } else h = yt(h === e ? h.splice(w, h.length) : h), u ? u(null, e, h, s) : b.apply(e, h)
  1739.             })
  1740.         }
  1741.  
  1742.         function fi(n) {
  1743.             for (var o, u, r, s = n.length, h = t.relative[n[0].type], c = h || t.relative[" "], i = h ? 1 : 0, l = ii(function(n) {
  1744.                     return n === o
  1745.                 }, c, !0), a = ii(function(n) {
  1746.                     return nt(o, n) > -1
  1747.                 }, c, !0), e = [function(n, t, i) {
  1748.                     var r = !h && (i || t !== ht) || ((o = t).nodeType ? l(n, t, i) : a(n, t, i));
  1749.                     return o = null, r
  1750.                 }]; s > i; i++)
  1751.                 if (u = t.relative[n[i].type]) e = [ii(ri(e), u)];
  1752.                 else {
  1753.                     if (u = t.filter[n[i].type].apply(null, n[i].matches), u[f]) {
  1754.                         for (r = ++i; s > r; r++)
  1755.                             if (t.relative[n[r].type]) break;
  1756.                         return ui(i > 1 && ri(e), i > 1 && vt(n.slice(0, i - 1).concat({
  1757.                             value: " " === n[i - 2].type ? "*" : ""
  1758.                         })).replace(lt, "$1"), u, r > i && fi(n.slice(i, r)), s > r && fi(n = n.slice(r)), s > r && vt(n))
  1759.                     }
  1760.                     e.push(u)
  1761.                 }
  1762.             return ri(e)
  1763.         }
  1764.  
  1765.         function yr(n, i) {
  1766.             var u = i.length > 0,
  1767.                 f = n.length > 0,
  1768.                 e = function(e, s, h, c, l) {
  1769.                     var y, d, w, k = 0,
  1770.                         v = "0",
  1771.                         g = e && [],
  1772.                         p = [],
  1773.                         nt = ht,
  1774.                         tt = e || f && t.find.TAG("*", l),
  1775.                         it = a += null == nt ? 1 : Math.random() || .1,
  1776.                         rt = tt.length;
  1777.                     for (l && (ht = s !== o && s); v !== rt && null != (y = tt[v]); v++) {
  1778.                         if (f && y) {
  1779.                             for (d = 0; w = n[d++];)
  1780.                                 if (w(y, s, h)) {
  1781.                                     c.push(y);
  1782.                                     break
  1783.                                 }
  1784.                             l && (a = it)
  1785.                         }
  1786.                         u && ((y = !w && y) && k--, e && g.push(y))
  1787.                     }
  1788.                     if (k += v, u && v !== k) {
  1789.                         for (d = 0; w = i[d++];) w(g, p, s, h);
  1790.                         if (e) {
  1791.                             if (k > 0)
  1792.                                 while (v--) g[v] || p[v] || (p[v] = gi.call(c));
  1793.                             p = yt(p)
  1794.                         }
  1795.                         b.apply(c, p);
  1796.                         l && !e && p.length > 0 && k + i.length > 1 && r.uniqueSort(c)
  1797.                     }
  1798.                     return l && (a = it, ht = nt), g
  1799.                 };
  1800.             return u ? c(e) : e
  1801.         }
  1802.         var it, u, t, st, ei, ft, pt, oi, ht, w, rt, k, o, s, l, e, d, ct, et, f = "sizzle" + 1 * new Date,
  1803.             h = n.document,
  1804.             a = 0,
  1805.             ki = 0,
  1806.             si = gt(),
  1807.             hi = gt(),
  1808.             ci = gt(),
  1809.             wt = function(n, t) {
  1810.                 return n === t && (rt = !0), 0
  1811.             },
  1812.             li = -2147483648,
  1813.             di = {}.hasOwnProperty,
  1814.             g = [],
  1815.             gi = g.pop,
  1816.             nr = g.push,
  1817.             b = g.push,
  1818.             ai = g.slice,
  1819.             nt = function(n, t) {
  1820.                 for (var i = 0, r = n.length; r > i; i++)
  1821.                     if (n[i] === t) return i;
  1822.                 return -1
  1823.             },
  1824.             bt = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
  1825.             i = "[\\x20\\t\\r\\n\\f]",
  1826.             ut = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
  1827.             vi = ut.replace("w", "w#"),
  1828.             yi = "\\[" + i + "*(" + ut + ")(?:" + i + "*([*^$|!~]?=)" + i + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + vi + "))|)" + i + "*\\]",
  1829.             kt = ":(" + ut + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + yi + ")*)|.*)\\)|)",
  1830.             tr = new RegExp(i + "+", "g"),
  1831.             lt = new RegExp("^" + i + "+|((?:^|[^\\\\])(?:\\\\.)*)" + i + "+$", "g"),
  1832.             ir = new RegExp("^" + i + "*," + i + "*"),
  1833.             rr = new RegExp("^" + i + "*([>+~]|" + i + ")" + i + "*"),
  1834.             ur = new RegExp("=" + i + "*([^\\]'\"]*?)" + i + "*\\]", "g"),
  1835.             fr = new RegExp(kt),
  1836.             er = new RegExp("^" + vi + "$"),
  1837.             at = {
  1838.                 ID: new RegExp("^#(" + ut + ")"),
  1839.                 CLASS: new RegExp("^\\.(" + ut + ")"),
  1840.                 TAG: new RegExp("^(" + ut.replace("w", "w*") + ")"),
  1841.                 ATTR: new RegExp("^" + yi),
  1842.                 PSEUDO: new RegExp("^" + kt),
  1843.                 CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + i + "*(even|odd|(([+-]|)(\\d*)n|)" + i + "*(?:([+-]|)" + i + "*(\\d+)|))" + i + "*\\)|)", "i"),
  1844.                 bool: new RegExp("^(?:" + bt + ")$", "i"),
  1845.                 needsContext: new RegExp("^" + i + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + i + "*((?:-\\d)?\\d*)" + i + "*\\)|)(?=[^-]|$)", "i")
  1846.             },
  1847.             or = /^(?:input|select|textarea|button)$/i,
  1848.             sr = /^h\d$/i,
  1849.             ot = /^[^{]+\{\s*\[native \w/,
  1850.             hr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
  1851.             dt = /[+~]/,
  1852.             cr = /'|\\/g,
  1853.             y = new RegExp("\\\\([\\da-f]{1,6}" + i + "?|(" + i + ")|.)", "ig"),
  1854.             p = function(n, t, i) {
  1855.                 var r = "0x" + t - 65536;
  1856.                 return r !== r || i ? t : 0 > r ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
  1857.             },
  1858.             pi = function() {
  1859.                 k()
  1860.             };
  1861.         try {
  1862.             b.apply(g = ai.call(h.childNodes), h.childNodes);
  1863.             g[h.childNodes.length].nodeType
  1864.         } catch (pr) {
  1865.             b = {
  1866.                 apply: g.length ? function(n, t) {
  1867.                     nr.apply(n, ai.call(t))
  1868.                 } : function(n, t) {
  1869.                     for (var i = n.length, r = 0; n[i++] = t[r++];);
  1870.                     n.length = i - 1
  1871.                 }
  1872.             }
  1873.         }
  1874.         u = r.support = {};
  1875.         ei = r.isXML = function(n) {
  1876.             var t = n && (n.ownerDocument || n).documentElement;
  1877.             return t ? "HTML" !== t.nodeName : !1
  1878.         };
  1879.         k = r.setDocument = function(n) {
  1880.             var a, c, r = n ? n.ownerDocument || n : h;
  1881.             return r !== o && 9 === r.nodeType && r.documentElement ? (o = r, s = r.documentElement, c = r.defaultView, c && c !== c.top && (c.addEventListener ? c.addEventListener("unload", pi, !1) : c.attachEvent && c.attachEvent("onunload", pi)), l = !ei(r), u.attributes = v(function(n) {
  1882.                 return n.className = "i", !n.getAttribute("className")
  1883.             }), u.getElementsByTagName = v(function(n) {
  1884.                 return n.appendChild(r.createComment("")), !n.getElementsByTagName("*").length
  1885.             }), u.getElementsByClassName = ot.test(r.getElementsByClassName), u.getById = v(function(n) {
  1886.                 return s.appendChild(n).id = f, !r.getElementsByName || !r.getElementsByName(f).length
  1887.             }), u.getById ? (t.find.ID = function(n, t) {
  1888.                 if ("undefined" != typeof t.getElementById && l) {
  1889.                     var i = t.getElementById(n);
  1890.                     return i && i.parentNode ? [i] : []
  1891.                 }
  1892.             }, t.filter.ID = function(n) {
  1893.                 var t = n.replace(y, p);
  1894.                 return function(n) {
  1895.                     return n.getAttribute("id") === t
  1896.                 }
  1897.             }) : (delete t.find.ID, t.filter.ID = function(n) {
  1898.                 var t = n.replace(y, p);
  1899.                 return function(n) {
  1900.                     var i = "undefined" != typeof n.getAttributeNode && n.getAttributeNode("id");
  1901.                     return i && i.value === t
  1902.                 }
  1903.             }), t.find.TAG = u.getElementsByTagName ? function(n, t) {
  1904.                 return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(n) : u.qsa ? t.querySelectorAll(n) : void 0
  1905.             } : function(n, t) {
  1906.                 var i, r = [],
  1907.                     f = 0,
  1908.                     u = t.getElementsByTagName(n);
  1909.                 if ("*" === n) {
  1910.                     while (i = u[f++]) 1 === i.nodeType && r.push(i);
  1911.                     return r
  1912.                 }
  1913.                 return u
  1914.             }, t.find.CLASS = u.getElementsByClassName && function(n, t) {
  1915.                 if (l) return t.getElementsByClassName(n)
  1916.             }, d = [], e = [], (u.qsa = ot.test(r.querySelectorAll)) && (v(function(n) {
  1917.                 s.appendChild(n).innerHTML = "<a id='" + f + "'><\/a><select id='" + f + "-\f]' msallowcapture=''><option selected=''><\/option><\/select>";
  1918.                 n.querySelectorAll("[msallowcapture^='']").length && e.push("[*^$]=" + i + "*(?:''|\"\")");
  1919.                 n.querySelectorAll("[selected]").length || e.push("\\[" + i + "*(?:value|" + bt + ")");
  1920.                 n.querySelectorAll("[id~=" + f + "-]").length || e.push("~=");
  1921.                 n.querySelectorAll(":checked").length || e.push(":checked");
  1922.                 n.querySelectorAll("a#" + f + "+*").length || e.push(".#.+[+~]")
  1923.             }), v(function(n) {
  1924.                 var t = r.createElement("input");
  1925.                 t.setAttribute("type", "hidden");
  1926.                 n.appendChild(t).setAttribute("name", "D");
  1927.                 n.querySelectorAll("[name=d]").length && e.push("name" + i + "*[*^$|!~]?=");
  1928.                 n.querySelectorAll(":enabled").length || e.push(":enabled", ":disabled");
  1929.                 n.querySelectorAll("*,:x");
  1930.                 e.push(",.*:")
  1931.             })), (u.matchesSelector = ot.test(ct = s.matches || s.webkitMatchesSelector || s.mozMatchesSelector || s.oMatchesSelector || s.msMatchesSelector)) && v(function(n) {
  1932.                 u.disconnectedMatch = ct.call(n, "div");
  1933.                 ct.call(n, "[s!='']:x");
  1934.                 d.push("!=", kt)
  1935.             }), e = e.length && new RegExp(e.join("|")), d = d.length && new RegExp(d.join("|")), a = ot.test(s.compareDocumentPosition), et = a || ot.test(s.contains) ? function(n, t) {
  1936.                 var r = 9 === n.nodeType ? n.documentElement : n,
  1937.                     i = t && t.parentNode;
  1938.                 return n === i || !(!i || 1 !== i.nodeType || !(r.contains ? r.contains(i) : n.compareDocumentPosition && 16 & n.compareDocumentPosition(i)))
  1939.             } : function(n, t) {
  1940.                 if (t)
  1941.                     while (t = t.parentNode)
  1942.                         if (t === n) return !0;
  1943.                 return !1
  1944.             }, wt = a ? function(n, t) {
  1945.                 if (n === t) return rt = !0, 0;
  1946.                 var i = !n.compareDocumentPosition - !t.compareDocumentPosition;
  1947.                 return i ? i : (i = (n.ownerDocument || n) === (t.ownerDocument || t) ? n.compareDocumentPosition(t) : 1, 1 & i || !u.sortDetached && t.compareDocumentPosition(n) === i ? n === r || n.ownerDocument === h && et(h, n) ? -1 : t === r || t.ownerDocument === h && et(h, t) ? 1 : w ? nt(w, n) - nt(w, t) : 0 : 4 & i ? -1 : 1)
  1948.             } : function(n, t) {
  1949.                 if (n === t) return rt = !0, 0;
  1950.                 var i, u = 0,
  1951.                     o = n.parentNode,
  1952.                     s = t.parentNode,
  1953.                     f = [n],
  1954.                     e = [t];
  1955.                 if (!o || !s) return n === r ? -1 : t === r ? 1 : o ? -1 : s ? 1 : w ? nt(w, n) - nt(w, t) : 0;
  1956.                 if (o === s) return wi(n, t);
  1957.                 for (i = n; i = i.parentNode;) f.unshift(i);
  1958.                 for (i = t; i = i.parentNode;) e.unshift(i);
  1959.                 while (f[u] === e[u]) u++;
  1960.                 return u ? wi(f[u], e[u]) : f[u] === h ? -1 : e[u] === h ? 1 : 0
  1961.             }, r) : o
  1962.         };
  1963.         r.matches = function(n, t) {
  1964.             return r(n, null, null, t)
  1965.         };
  1966.         r.matchesSelector = function(n, t) {
  1967.             if ((n.ownerDocument || n) !== o && k(n), t = t.replace(ur, "='$1']"), !(!u.matchesSelector || !l || d && d.test(t) || e && e.test(t))) try {
  1968.                 var i = ct.call(n, t);
  1969.                 if (i || u.disconnectedMatch || n.document && 11 !== n.document.nodeType) return i
  1970.             } catch (f) {}
  1971.             return r(t, o, null, [n]).length > 0
  1972.         };
  1973.         r.contains = function(n, t) {
  1974.             return (n.ownerDocument || n) !== o && k(n), et(n, t)
  1975.         };
  1976.         r.attr = function(n, i) {
  1977.             (n.ownerDocument || n) !== o && k(n);
  1978.             var f = t.attrHandle[i.toLowerCase()],
  1979.                 r = f && di.call(t.attrHandle, i.toLowerCase()) ? f(n, i, !l) : void 0;
  1980.             return void 0 !== r ? r : u.attributes || !l ? n.getAttribute(i) : (r = n.getAttributeNode(i)) && r.specified ? r.value : null
  1981.         };
  1982.         r.error = function(n) {
  1983.             throw new Error("Syntax error, unrecognized expression: " + n);
  1984.         };
  1985.         r.uniqueSort = function(n) {
  1986.             var r, f = [],
  1987.                 t = 0,
  1988.                 i = 0;
  1989.             if (rt = !u.detectDuplicates, w = !u.sortStable && n.slice(0), n.sort(wt), rt) {
  1990.                 while (r = n[i++]) r === n[i] && (t = f.push(i));
  1991.                 while (t--) n.splice(f[t], 1)
  1992.             }
  1993.             return w = null, n
  1994.         };
  1995.         st = r.getText = function(n) {
  1996.             var r, i = "",
  1997.                 u = 0,
  1998.                 t = n.nodeType;
  1999.             if (t) {
  2000.                 if (1 === t || 9 === t || 11 === t) {
  2001.                     if ("string" == typeof n.textContent) return n.textContent;
  2002.                     for (n = n.firstChild; n; n = n.nextSibling) i += st(n)
  2003.                 } else if (3 === t || 4 === t) return n.nodeValue
  2004.             } else
  2005.                 while (r = n[u++]) i += st(r);
  2006.             return i
  2007.         };
  2008.         t = r.selectors = {
  2009.             cacheLength: 50,
  2010.             createPseudo: c,
  2011.             match: at,
  2012.             attrHandle: {},
  2013.             find: {},
  2014.             relative: {
  2015.                 ">": {
  2016.                     dir: "parentNode",
  2017.                     first: !0
  2018.                 },
  2019.                 " ": {
  2020.                     dir: "parentNode"
  2021.                 },
  2022.                 "+": {
  2023.                     dir: "previousSibling",
  2024.                     first: !0
  2025.                 },
  2026.                 "~": {
  2027.                     dir: "previousSibling"
  2028.                 }
  2029.             },
  2030.             preFilter: {
  2031.                 ATTR: function(n) {
  2032.                     return n[1] = n[1].replace(y, p), n[3] = (n[3] || n[4] || n[5] || "").replace(y, p), "~=" === n[2] && (n[3] = " " + n[3] + " "), n.slice(0, 4)
  2033.                 },
  2034.                 CHILD: function(n) {
  2035.                     return n[1] = n[1].toLowerCase(), "nth" === n[1].slice(0, 3) ? (n[3] || r.error(n[0]), n[4] = +(n[4] ? n[5] + (n[6] || 1) : 2 * ("even" === n[3] || "odd" === n[3])), n[5] = +(n[7] + n[8] || "odd" === n[3])) : n[3] && r.error(n[0]), n
  2036.                 },
  2037.                 PSEUDO: function(n) {
  2038.                     var i, t = !n[6] && n[2];
  2039.                     return at.CHILD.test(n[0]) ? null : (n[3] ? n[2] = n[4] || n[5] || "" : t && fr.test(t) && (i = ft(t, !0)) && (i = t.indexOf(")", t.length - i) - t.length) && (n[0] = n[0].slice(0, i), n[2] = t.slice(0, i)), n.slice(0, 3))
  2040.                 }
  2041.             },
  2042.             filter: {
  2043.                 TAG: function(n) {
  2044.                     var t = n.replace(y, p).toLowerCase();
  2045.                     return "*" === n ? function() {
  2046.                         return !0
  2047.                     } : function(n) {
  2048.                         return n.nodeName && n.nodeName.toLowerCase() === t
  2049.                     }
  2050.                 },
  2051.                 CLASS: function(n) {
  2052.                     var t = si[n + " "];
  2053.                     return t || (t = new RegExp("(^|" + i + ")" + n + "(" + i + "|$)")) && si(n, function(n) {
  2054.                         return t.test("string" == typeof n.className && n.className || "undefined" != typeof n.getAttribute && n.getAttribute("class") || "")
  2055.                     })
  2056.                 },
  2057.                 ATTR: function(n, t, i) {
  2058.                     return function(u) {
  2059.                         var f = r.attr(u, n);
  2060.                         return null == f ? "!=" === t : t ? (f += "", "=" === t ? f === i : "!=" === t ? f !== i : "^=" === t ? i && 0 === f.indexOf(i) : "*=" === t ? i && f.indexOf(i) > -1 : "$=" === t ? i && f.slice(-i.length) === i : "~=" === t ? (" " + f.replace(tr, " ") + " ").indexOf(i) > -1 : "|=" === t ? f === i || f.slice(0, i.length + 1) === i + "-" : !1) : !0
  2061.                     }
  2062.                 },
  2063.                 CHILD: function(n, t, i, r, u) {
  2064.                     var s = "nth" !== n.slice(0, 3),
  2065.                         o = "last" !== n.slice(-4),
  2066.                         e = "of-type" === t;
  2067.                     return 1 === r && 0 === u ? function(n) {
  2068.                         return !!n.parentNode
  2069.                     } : function(t, i, h) {
  2070.                         var v, k, c, l, y, w, b = s !== o ? "nextSibling" : "previousSibling",
  2071.                             p = t.parentNode,
  2072.                             g = e && t.nodeName.toLowerCase(),
  2073.                             d = !h && !e;
  2074.                         if (p) {
  2075.                             if (s) {
  2076.                                 while (b) {
  2077.                                     for (c = t; c = c[b];)
  2078.                                         if (e ? c.nodeName.toLowerCase() === g : 1 === c.nodeType) return !1;
  2079.                                     w = b = "only" === n && !w && "nextSibling"
  2080.                                 }
  2081.                                 return !0
  2082.                             }
  2083.                             if (w = [o ? p.firstChild : p.lastChild], o && d) {
  2084.                                 for (k = p[f] || (p[f] = {}), v = k[n] || [], y = v[0] === a && v[1], l = v[0] === a && v[2], c = y && p.childNodes[y]; c = ++y && c && c[b] || (l = y = 0) || w.pop();)
  2085.                                     if (1 === c.nodeType && ++l && c === t) {
  2086.                                         k[n] = [a, y, l];
  2087.                                         break
  2088.                                     }
  2089.                             } else if (d && (v = (t[f] || (t[f] = {}))[n]) && v[0] === a) l = v[1];
  2090.                             else
  2091.                                 while (c = ++y && c && c[b] || (l = y = 0) || w.pop())
  2092.                                     if ((e ? c.nodeName.toLowerCase() === g : 1 === c.nodeType) && ++l && (d && ((c[f] || (c[f] = {}))[n] = [a, l]), c === t)) break; return l -= u, l === r || l % r == 0 && l / r >= 0
  2093.                         }
  2094.                     }
  2095.                 },
  2096.                 PSEUDO: function(n, i) {
  2097.                     var e, u = t.pseudos[n] || t.setFilters[n.toLowerCase()] || r.error("unsupported pseudo: " + n);
  2098.                     return u[f] ? u(i) : u.length > 1 ? (e = [n, n, "", i], t.setFilters.hasOwnProperty(n.toLowerCase()) ? c(function(n, t) {
  2099.                         for (var r, f = u(n, i), e = f.length; e--;) r = nt(n, f[e]), n[r] = !(t[r] = f[e])
  2100.                     }) : function(n) {
  2101.                         return u(n, 0, e)
  2102.                     }) : u
  2103.                 }
  2104.             },
  2105.             pseudos: {
  2106.                 not: c(function(n) {
  2107.                     var t = [],
  2108.                         r = [],
  2109.                         i = pt(n.replace(lt, "$1"));
  2110.                     return i[f] ? c(function(n, t, r, u) {
  2111.                         for (var e, o = i(n, null, u, []), f = n.length; f--;)(e = o[f]) && (n[f] = !(t[f] = e))
  2112.                     }) : function(n, u, f) {
  2113.                         return t[0] = n, i(t, null, f, r), t[0] = null, !r.pop()
  2114.                     }
  2115.                 }),
  2116.                 has: c(function(n) {
  2117.                     return function(t) {
  2118.                         return r(n, t).length > 0
  2119.                     }
  2120.                 }),
  2121.                 contains: c(function(n) {
  2122.                     return n = n.replace(y, p),
  2123.                         function(t) {
  2124.                             return (t.textContent || t.innerText || st(t)).indexOf(n) > -1
  2125.                         }
  2126.                 }),
  2127.                 lang: c(function(n) {
  2128.                     return er.test(n || "") || r.error("unsupported lang: " + n), n = n.replace(y, p).toLowerCase(),
  2129.                         function(t) {
  2130.                             var i;
  2131.                             do
  2132.                                 if (i = l ? t.lang : t.getAttribute("xml:lang") || t.getAttribute("lang")) return i = i.toLowerCase(), i === n || 0 === i.indexOf(n + "-");
  2133.                             while ((t = t.parentNode) && 1 === t.nodeType);
  2134.                             return !1
  2135.                         }
  2136.                 }),
  2137.                 target: function(t) {
  2138.                     var i = n.location && n.location.hash;
  2139.                     return i && i.slice(1) === t.id
  2140.                 },
  2141.                 root: function(n) {
  2142.                     return n === s
  2143.                 },
  2144.                 focus: function(n) {
  2145.                     return n === o.activeElement && (!o.hasFocus || o.hasFocus()) && !!(n.type || n.href || ~n.tabIndex)
  2146.                 },
  2147.                 enabled: function(n) {
  2148.                     return n.disabled === !1
  2149.                 },
  2150.                 disabled: function(n) {
  2151.                     return n.disabled === !0
  2152.                 },
  2153.                 checked: function(n) {
  2154.                     var t = n.nodeName.toLowerCase();
  2155.                     return "input" === t && !!n.checked || "option" === t && !!n.selected
  2156.                 },
  2157.                 selected: function(n) {
  2158.                     return n.parentNode && n.parentNode.selectedIndex, n.selected === !0
  2159.                 },
  2160.                 empty: function(n) {
  2161.                     for (n = n.firstChild; n; n = n.nextSibling)
  2162.                         if (n.nodeType < 6) return !1;
  2163.                     return !0
  2164.                 },
  2165.                 parent: function(n) {
  2166.                     return !t.pseudos.empty(n)
  2167.                 },
  2168.                 header: function(n) {
  2169.                     return sr.test(n.nodeName)
  2170.                 },
  2171.                 input: function(n) {
  2172.                     return or.test(n.nodeName)
  2173.                 },
  2174.                 button: function(n) {
  2175.                     var t = n.nodeName.toLowerCase();
  2176.                     return "input" === t && "button" === n.type || "button" === t
  2177.                 },
  2178.                 text: function(n) {
  2179.                     var t;
  2180.                     return "input" === n.nodeName.toLowerCase() && "text" === n.type && (null == (t = n.getAttribute("type")) || "text" === t.toLowerCase())
  2181.                 },
  2182.                 first: tt(function() {
  2183.                     return [0]
  2184.                 }),
  2185.                 last: tt(function(n, t) {
  2186.                     return [t - 1]
  2187.                 }),
  2188.                 eq: tt(function(n, t, i) {
  2189.                     return [0 > i ? i + t : i]
  2190.                 }),
  2191.                 even: tt(function(n, t) {
  2192.                     for (var i = 0; t > i; i += 2) n.push(i);
  2193.                     return n
  2194.                 }),
  2195.                 odd: tt(function(n, t) {
  2196.                     for (var i = 1; t > i; i += 2) n.push(i);
  2197.                     return n
  2198.                 }),
  2199.                 lt: tt(function(n, t, i) {
  2200.                     for (var r = 0 > i ? i + t : i; --r >= 0;) n.push(r);
  2201.                     return n
  2202.                 }),
  2203.                 gt: tt(function(n, t, i) {
  2204.                     for (var r = 0 > i ? i + t : i; ++r < t;) n.push(r);
  2205.                     return n
  2206.                 })
  2207.             }
  2208.         };
  2209.         t.pseudos.nth = t.pseudos.eq;
  2210.         for (it in {
  2211.                 radio: !0,
  2212.                 checkbox: !0,
  2213.                 file: !0,
  2214.                 password: !0,
  2215.                 image: !0
  2216.             }) t.pseudos[it] = lr(it);
  2217.         for (it in {
  2218.                 submit: !0,
  2219.                 reset: !0
  2220.             }) t.pseudos[it] = ar(it);
  2221.         return bi.prototype = t.filters = t.pseudos, t.setFilters = new bi, ft = r.tokenize = function(n, i) {
  2222.             var e, f, s, o, u, h, c, l = hi[n + " "];
  2223.             if (l) return i ? 0 : l.slice(0);
  2224.             for (u = n, h = [], c = t.preFilter; u;) {
  2225.                 (!e || (f = ir.exec(u))) && (f && (u = u.slice(f[0].length) || u), h.push(s = []));
  2226.                 e = !1;
  2227.                 (f = rr.exec(u)) && (e = f.shift(), s.push({
  2228.                     value: e,
  2229.                     type: f[0].replace(lt, " ")
  2230.                 }), u = u.slice(e.length));
  2231.                 for (o in t.filter)(f = at[o].exec(u)) && (!c[o] || (f = c[o](f))) && (e = f.shift(), s.push({
  2232.                     value: e,
  2233.                     type: o,
  2234.                     matches: f
  2235.                 }), u = u.slice(e.length));
  2236.                 if (!e) break
  2237.             }
  2238.             return i ? u.length : u ? r.error(n) : hi(n, h).slice(0)
  2239.         }, pt = r.compile = function(n, t) {
  2240.             var r, u = [],
  2241.                 e = [],
  2242.                 i = ci[n + " "];
  2243.             if (!i) {
  2244.                 for (t || (t = ft(n)), r = t.length; r--;) i = fi(t[r]), i[f] ? u.push(i) : e.push(i);
  2245.                 i = ci(n, yr(e, u));
  2246.                 i.selector = n
  2247.             }
  2248.             return i
  2249.         }, oi = r.select = function(n, i, r, f) {
  2250.             var s, e, o, a, v, c = "function" == typeof n && n,
  2251.                 h = !f && ft(n = c.selector || n);
  2252.             if (r = r || [], 1 === h.length) {
  2253.                 if (e = h[0] = h[0].slice(0), e.length > 2 && "ID" === (o = e[0]).type && u.getById && 9 === i.nodeType && l && t.relative[e[1].type]) {
  2254.                     if (i = (t.find.ID(o.matches[0].replace(y, p), i) || [])[0], !i) return r;
  2255.                     c && (i = i.parentNode);
  2256.                     n = n.slice(e.shift().value.length)
  2257.                 }
  2258.                 for (s = at.needsContext.test(n) ? 0 : e.length; s--;) {
  2259.                     if (o = e[s], t.relative[a = o.type]) break;
  2260.                     if ((v = t.find[a]) && (f = v(o.matches[0].replace(y, p), dt.test(e[0].type) && ti(i.parentNode) || i))) {
  2261.                         if (e.splice(s, 1), n = f.length && vt(e), !n) return b.apply(r, f), r;
  2262.                         break
  2263.                     }
  2264.                 }
  2265.             }
  2266.             return (c || pt(n, h))(f, i, !l, r, dt.test(n) && ti(i.parentNode) || i), r
  2267.         }, u.sortStable = f.split("").sort(wt).join("") === f, u.detectDuplicates = !!rt, k(), u.sortDetached = v(function(n) {
  2268.             return 1 & n.compareDocumentPosition(o.createElement("div"))
  2269.         }), v(function(n) {
  2270.             return n.innerHTML = "<a href='#'><\/a>", "#" === n.firstChild.getAttribute("href")
  2271.         }) || ni("type|href|height|width", function(n, t, i) {
  2272.             if (!i) return n.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2)
  2273.         }), u.attributes && v(function(n) {
  2274.             return n.innerHTML = "<input/>", n.firstChild.setAttribute("value", ""), "" === n.firstChild.getAttribute("value")
  2275.         }) || ni("value", function(n, t, i) {
  2276.             if (!i && "input" === n.nodeName.toLowerCase()) return n.defaultValue
  2277.         }), v(function(n) {
  2278.             return null == n.getAttribute("disabled")
  2279.         }) || ni(bt, function(n, t, i) {
  2280.             var r;
  2281.             if (!i) return n[t] === !0 ? t.toLowerCase() : (r = n.getAttributeNode(t)) && r.specified ? r.value : null
  2282.         }), r
  2283.     }(n);
  2284.     i.find = y;
  2285.     i.expr = y.selectors;
  2286.     i.expr[":"] = i.expr.pseudos;
  2287.     i.unique = y.uniqueSort;
  2288.     i.text = y.getText;
  2289.     i.isXMLDoc = y.isXML;
  2290.     i.contains = y.contains;
  2291.     var di = i.expr.match.needsContext,
  2292.         gi = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
  2293.         ef = /^.[^:#\[\.,]*$/;
  2294.     i.filter = function(n, t, r) {
  2295.         var u = t[0];
  2296.         return r && (n = ":not(" + n + ")"), 1 === t.length && 1 === u.nodeType ? i.find.matchesSelector(u, n) ? [u] : [] : i.find.matches(n, i.grep(t, function(n) {
  2297.             return 1 === n.nodeType
  2298.         }))
  2299.     };
  2300.     i.fn.extend({
  2301.         find: function(n) {
  2302.             var t, u = this.length,
  2303.                 r = [],
  2304.                 f = this;
  2305.             if ("string" != typeof n) return this.pushStack(i(n).filter(function() {
  2306.                 for (t = 0; u > t; t++)
  2307.                     if (i.contains(f[t], this)) return !0
  2308.             }));
  2309.             for (t = 0; u > t; t++) i.find(n, f[t], r);
  2310.             return r = this.pushStack(u > 1 ? i.unique(r) : r), r.selector = this.selector ? this.selector + " " + n : n, r
  2311.         },
  2312.         filter: function(n) {
  2313.             return this.pushStack(ui(this, n || [], !1))
  2314.         },
  2315.         not: function(n) {
  2316.             return this.pushStack(ui(this, n || [], !0))
  2317.         },
  2318.         is: function(n) {
  2319.             return !!ui(this, "string" == typeof n && di.test(n) ? i(n) : n || [], !1).length
  2320.         }
  2321.     });
  2322.     nr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
  2323.     tr = i.fn.init = function(n, t) {
  2324.         var r, f;
  2325.         if (!n) return this;
  2326.         if ("string" == typeof n) {
  2327.             if (r = "<" === n[0] && ">" === n[n.length - 1] && n.length >= 3 ? [null, n, null] : nr.exec(n), !r || !r[1] && t) return !t || t.jquery ? (t || ot).find(n) : this.constructor(t).find(n);
  2328.             if (r[1]) {
  2329.                 if (t = t instanceof i ? t[0] : t, i.merge(this, i.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : u, !0)), gi.test(r[1]) && i.isPlainObject(t))
  2330.                     for (r in t) i.isFunction(this[r]) ? this[r](t[r]) : this.attr(r, t[r]);
  2331.                 return this
  2332.             }
  2333.             return f = u.getElementById(r[2]), f && f.parentNode && (this.length = 1, this[0] = f), this.context = u, this.selector = n, this
  2334.         }
  2335.         return n.nodeType ? (this.context = this[0] = n, this.length = 1, this) : i.isFunction(n) ? "undefined" != typeof ot.ready ? ot.ready(n) : n(i) : (void 0 !== n.selector && (this.selector = n.selector, this.context = n.context), i.makeArray(n, this))
  2336.     };
  2337.     tr.prototype = i.fn;
  2338.     ot = i(u);
  2339.     ir = /^(?:parents|prev(?:Until|All))/;
  2340.     rr = {
  2341.         children: !0,
  2342.         contents: !0,
  2343.         next: !0,
  2344.         prev: !0
  2345.     };
  2346.     i.extend({
  2347.         dir: function(n, t, r) {
  2348.             for (var u = [], f = void 0 !== r;
  2349.                 (n = n[t]) && 9 !== n.nodeType;)
  2350.                 if (1 === n.nodeType) {
  2351.                     if (f && i(n).is(r)) break;
  2352.                     u.push(n)
  2353.                 }
  2354.             return u
  2355.         },
  2356.         sibling: function(n, t) {
  2357.             for (var i = []; n; n = n.nextSibling) 1 === n.nodeType && n !== t && i.push(n);
  2358.             return i
  2359.         }
  2360.     });
  2361.     i.fn.extend({
  2362.         has: function(n) {
  2363.             var t = i(n, this),
  2364.                 r = t.length;
  2365.             return this.filter(function() {
  2366.                 for (var n = 0; r > n; n++)
  2367.                     if (i.contains(this, t[n])) return !0
  2368.             })
  2369.         },
  2370.         closest: function(n, t) {
  2371.             for (var r, f = 0, o = this.length, u = [], e = di.test(n) || "string" != typeof n ? i(n, t || this.context) : 0; o > f; f++)
  2372.                 for (r = this[f]; r && r !== t; r = r.parentNode)
  2373.                     if (r.nodeType < 11 && (e ? e.index(r) > -1 : 1 === r.nodeType && i.find.matchesSelector(r, n))) {
  2374.                         u.push(r);
  2375.                         break
  2376.                     }
  2377.             return this.pushStack(u.length > 1 ? i.unique(u) : u)
  2378.         },
  2379.         index: function(n) {
  2380.             return n ? "string" == typeof n ? ft.call(i(n), this[0]) : ft.call(this, n.jquery ? n[0] : n) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
  2381.         },
  2382.         add: function(n, t) {
  2383.             return this.pushStack(i.unique(i.merge(this.get(), i(n, t))))
  2384.         },
  2385.         addBack: function(n) {
  2386.             return this.add(null == n ? this.prevObject : this.prevObject.filter(n))
  2387.         }
  2388.     });
  2389.     i.each({
  2390.         parent: function(n) {
  2391.             var t = n.parentNode;
  2392.             return t && 11 !== t.nodeType ? t : null
  2393.         },
  2394.         parents: function(n) {
  2395.             return i.dir(n, "parentNode")
  2396.         },
  2397.         parentsUntil: function(n, t, r) {
  2398.             return i.dir(n, "parentNode", r)
  2399.         },
  2400.         next: function(n) {
  2401.             return ur(n, "nextSibling")
  2402.         },
  2403.         prev: function(n) {
  2404.             return ur(n, "previousSibling")
  2405.         },
  2406.         nextAll: function(n) {
  2407.             return i.dir(n, "nextSibling")
  2408.         },
  2409.         prevAll: function(n) {
  2410.             return i.dir(n, "previousSibling")
  2411.         },
  2412.         nextUntil: function(n, t, r) {
  2413.             return i.dir(n, "nextSibling", r)
  2414.         },
  2415.         prevUntil: function(n, t, r) {
  2416.             return i.dir(n, "previousSibling", r)
  2417.         },
  2418.         siblings: function(n) {
  2419.             return i.sibling((n.parentNode || {}).firstChild, n)
  2420.         },
  2421.         children: function(n) {
  2422.             return i.sibling(n.firstChild)
  2423.         },
  2424.         contents: function(n) {
  2425.             return n.contentDocument || i.merge([], n.childNodes)
  2426.         }
  2427.     }, function(n, t) {
  2428.         i.fn[n] = function(r, u) {
  2429.             var f = i.map(this, t, r);
  2430.             return "Until" !== n.slice(-5) && (u = r), u && "string" == typeof u && (f = i.filter(u, f)), this.length > 1 && (rr[n] || i.unique(f), ir.test(n) && f.reverse()), this.pushStack(f)
  2431.         }
  2432.     });
  2433.     c = /\S+/g;
  2434.     fi = {};
  2435.     i.Callbacks = function(n) {
  2436.         n = "string" == typeof n ? fi[n] || of(n) : i.extend({}, n);
  2437.         var u, h, o, c, f, e, t = [],
  2438.             r = !n.once && [],
  2439.             l = function(i) {
  2440.                 for (u = n.memory && i, h = !0, e = c || 0, c = 0, f = t.length, o = !0; t && f > e; e++)
  2441.                     if (t[e].apply(i[0], i[1]) === !1 && n.stopOnFalse) {
  2442.                         u = !1;
  2443.                         break
  2444.                     }
  2445.                 o = !1;
  2446.                 t && (r ? r.length && l(r.shift()) : u ? t = [] : s.disable())
  2447.             },
  2448.             s = {
  2449.                 add: function() {
  2450.                     if (t) {
  2451.                         var r = t.length;
  2452.                         ! function e(r) {
  2453.                             i.each(r, function(r, u) {
  2454.                                 var f = i.type(u);
  2455.                                 "function" === f ? n.unique && s.has(u) || t.push(u) : u && u.length && "string" !== f && e(u)
  2456.                             })
  2457.                         }(arguments);
  2458.                         o ? f = t.length : u && (c = r, l(u))
  2459.                     }
  2460.                     return this
  2461.                 },
  2462.                 remove: function() {
  2463.                     return t && i.each(arguments, function(n, r) {
  2464.                         for (var u;
  2465.                             (u = i.inArray(r, t, u)) > -1;) t.splice(u, 1), o && (f >= u && f--, e >= u && e--)
  2466.                     }), this
  2467.                 },
  2468.                 has: function(n) {
  2469.                     return n ? i.inArray(n, t) > -1 : !(!t || !t.length)
  2470.                 },
  2471.                 empty: function() {
  2472.                     return t = [], f = 0, this
  2473.                 },
  2474.                 disable: function() {
  2475.                     return t = r = u = void 0, this
  2476.                 },
  2477.                 disabled: function() {
  2478.                     return !t
  2479.                 },
  2480.                 lock: function() {
  2481.                     return r = void 0, u || s.disable(), this
  2482.                 },
  2483.                 locked: function() {
  2484.                     return !r
  2485.                 },
  2486.                 fireWith: function(n, i) {
  2487.                     return !t || h && !r || (i = i || [], i = [n, i.slice ? i.slice() : i], o ? r.push(i) : l(i)), this
  2488.                 },
  2489.                 fire: function() {
  2490.                     return s.fireWith(this, arguments), this
  2491.                 },
  2492.                 fired: function() {
  2493.                     return !!h
  2494.                 }
  2495.             };
  2496.         return s
  2497.     };
  2498.     i.extend({
  2499.         Deferred: function(n) {
  2500.             var u = [
  2501.                     ["resolve", "done", i.Callbacks("once memory"), "resolved"],
  2502.                     ["reject", "fail", i.Callbacks("once memory"), "rejected"],
  2503.                     ["notify", "progress", i.Callbacks("memory")]
  2504.                 ],
  2505.                 f = "pending",
  2506.                 r = {
  2507.                     state: function() {
  2508.                         return f
  2509.                     },
  2510.                     always: function() {
  2511.                         return t.done(arguments).fail(arguments), this
  2512.                     },
  2513.                     then: function() {
  2514.                         var n = arguments;
  2515.                         return i.Deferred(function(f) {
  2516.                             i.each(u, function(u, e) {
  2517.                                 var o = i.isFunction(n[u]) && n[u];
  2518.                                 t[e[1]](function() {
  2519.                                     var n = o && o.apply(this, arguments);
  2520.                                     n && i.isFunction(n.promise) ? n.promise().done(f.resolve).fail(f.reject).progress(f.notify) : f[e[0] + "With"](this === r ? f.promise() : this, o ? [n] : arguments)
  2521.                                 })
  2522.                             });
  2523.                             n = null
  2524.                         }).promise()
  2525.                     },
  2526.                     promise: function(n) {
  2527.                         return null != n ? i.extend(n, r) : r
  2528.                     }
  2529.                 },
  2530.                 t = {};
  2531.             return r.pipe = r.then, i.each(u, function(n, i) {
  2532.                 var e = i[2],
  2533.                     o = i[3];
  2534.                 r[i[1]] = e.add;
  2535.                 o && e.add(function() {
  2536.                     f = o
  2537.                 }, u[1 ^ n][2].disable, u[2][2].lock);
  2538.                 t[i[0]] = function() {
  2539.                     return t[i[0] + "With"](this === t ? r : this, arguments), this
  2540.                 };
  2541.                 t[i[0] + "With"] = e.fireWith
  2542.             }), r.promise(t), n && n.call(t, t), t
  2543.         },
  2544.         when: function(n) {
  2545.             var t = 0,
  2546.                 u = a.call(arguments),
  2547.                 r = u.length,
  2548.                 e = 1 !== r || n && i.isFunction(n.promise) ? r : 0,
  2549.                 f = 1 === e ? n : i.Deferred(),
  2550.                 h = function(n, t, i) {
  2551.                     return function(r) {
  2552.                         t[n] = this;
  2553.                         i[n] = arguments.length > 1 ? a.call(arguments) : r;
  2554.                         i === o ? f.notifyWith(t, i) : --e || f.resolveWith(t, i)
  2555.                     }
  2556.                 },
  2557.                 o, c, s;
  2558.             if (r > 1)
  2559.                 for (o = new Array(r), c = new Array(r), s = new Array(r); r > t; t++) u[t] && i.isFunction(u[t].promise) ? u[t].promise().done(h(t, s, u)).fail(f.reject).progress(h(t, c, o)) : --e;
  2560.             return e || f.resolveWith(s, u), f.promise()
  2561.         }
  2562.     });
  2563.     i.fn.ready = function(n) {
  2564.         return i.ready.promise().done(n), this
  2565.     };
  2566.     i.extend({
  2567.         isReady: !1,
  2568.         readyWait: 1,
  2569.         holdReady: function(n) {
  2570.             n ? i.readyWait++ : i.ready(!0)
  2571.         },
  2572.         ready: function(n) {
  2573.             (n === !0 ? --i.readyWait : i.isReady) || (i.isReady = !0, n !== !0 && --i.readyWait > 0 || (st.resolveWith(u, [i]), i.fn.triggerHandler && (i(u).triggerHandler("ready"), i(u).off("ready"))))
  2574.         }
  2575.     });
  2576.     i.ready.promise = function(t) {
  2577.         return st || (st = i.Deferred(), "complete" === u.readyState ? setTimeout(i.ready) : (u.addEventListener("DOMContentLoaded", ht, !1), n.addEventListener("load", ht, !1))), st.promise(t)
  2578.     };
  2579.     i.ready.promise();
  2580.     l = i.access = function(n, t, r, u, f, e, o) {
  2581.         var s = 0,
  2582.             c = n.length,
  2583.             h = null == r;
  2584.         if ("object" === i.type(r)) {
  2585.             f = !0;
  2586.             for (s in r) i.access(n, t, s, r[s], !0, e, o)
  2587.         } else if (void 0 !== u && (f = !0, i.isFunction(u) || (o = !0), h && (o ? (t.call(n, u), t = null) : (h = t, t = function(n, t, r) {
  2588.                 return h.call(i(n), r)
  2589.             })), t))
  2590.             for (; c > s; s++) t(n[s], r, o ? u : u.call(n[s], s, t(n[s], r)));
  2591.         return f ? n : h ? t.call(n) : c ? t(n[0], r) : e
  2592.     };
  2593.     i.acceptData = function(n) {
  2594.         return 1 === n.nodeType || 9 === n.nodeType || !+n.nodeType
  2595.     };
  2596.     v.uid = 1;
  2597.     v.accepts = i.acceptData;
  2598.     v.prototype = {
  2599.         key: function(n) {
  2600.             if (!v.accepts(n)) return 0;
  2601.             var r = {},
  2602.                 t = n[this.expando];
  2603.             if (!t) {
  2604.                 t = v.uid++;
  2605.                 try {
  2606.                     r[this.expando] = {
  2607.                         value: t
  2608.                     };
  2609.                     Object.defineProperties(n, r)
  2610.                 } catch (u) {
  2611.                     r[this.expando] = t;
  2612.                     i.extend(n, r)
  2613.                 }
  2614.             }
  2615.             return this.cache[t] || (this.cache[t] = {}), t
  2616.         },
  2617.         set: function(n, t, r) {
  2618.             var f, e = this.key(n),
  2619.                 u = this.cache[e];
  2620.             if ("string" == typeof t) u[t] = r;
  2621.             else if (i.isEmptyObject(u)) i.extend(this.cache[e], t);
  2622.             else
  2623.                 for (f in t) u[f] = t[f];
  2624.             return u
  2625.         },
  2626.         get: function(n, t) {
  2627.             var i = this.cache[this.key(n)];
  2628.             return void 0 === t ? i : i[t]
  2629.         },
  2630.         access: function(n, t, r) {
  2631.             var u;
  2632.             return void 0 === t || t && "string" == typeof t && void 0 === r ? (u = this.get(n, t), void 0 !== u ? u : this.get(n, i.camelCase(t))) : (this.set(n, t, r), void 0 !== r ? r : t)
  2633.         },
  2634.         remove: function(n, t) {
  2635.             var u, r, f, o = this.key(n),
  2636.                 e = this.cache[o];
  2637.             if (void 0 === t) this.cache[o] = {};
  2638.             else
  2639.                 for (i.isArray(t) ? r = t.concat(t.map(i.camelCase)) : (f = i.camelCase(t), (t in e) ? r = [t, f] : (r = f, r = (r in e) ? [r] : r.match(c) || [])), u = r.length; u--;) delete e[r[u]]
  2640.         },
  2641.         hasData: function(n) {
  2642.             return !i.isEmptyObject(this.cache[n[this.expando]] || {})
  2643.         },
  2644.         discard: function(n) {
  2645.             n[this.expando] && delete this.cache[n[this.expando]]
  2646.         }
  2647.     };
  2648.     var r = new v,
  2649.         e = new v,
  2650.         sf = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
  2651.         hf = /([A-Z])/g;
  2652.     i.extend({
  2653.         hasData: function(n) {
  2654.             return e.hasData(n) || r.hasData(n)
  2655.         },
  2656.         data: function(n, t, i) {
  2657.             return e.access(n, t, i)
  2658.         },
  2659.         removeData: function(n, t) {
  2660.             e.remove(n, t)
  2661.         },
  2662.         _data: function(n, t, i) {
  2663.             return r.access(n, t, i)
  2664.         },
  2665.         _removeData: function(n, t) {
  2666.             r.remove(n, t)
  2667.         }
  2668.     });
  2669.     i.fn.extend({
  2670.         data: function(n, t) {
  2671.             var o, f, s, u = this[0],
  2672.                 h = u && u.attributes;
  2673.             if (void 0 === n) {
  2674.                 if (this.length && (s = e.get(u), 1 === u.nodeType && !r.get(u, "hasDataAttrs"))) {
  2675.                     for (o = h.length; o--;) h[o] && (f = h[o].name, 0 === f.indexOf("data-") && (f = i.camelCase(f.slice(5)), fr(u, f, s[f])));
  2676.                     r.set(u, "hasDataAttrs", !0)
  2677.                 }
  2678.                 return s
  2679.             }
  2680.             return "object" == typeof n ? this.each(function() {
  2681.                 e.set(this, n)
  2682.             }) : l(this, function(t) {
  2683.                 var r, f = i.camelCase(n);
  2684.                 if (u && void 0 === t) {
  2685.                     if ((r = e.get(u, n), void 0 !== r) || (r = e.get(u, f), void 0 !== r) || (r = fr(u, f, void 0), void 0 !== r)) return r
  2686.                 } else this.each(function() {
  2687.                     var i = e.get(this, f);
  2688.                     e.set(this, f, t); - 1 !== n.indexOf("-") && void 0 !== i && e.set(this, n, t)
  2689.                 })
  2690.             }, null, t, arguments.length > 1, null, !0)
  2691.         },
  2692.         removeData: function(n) {
  2693.             return this.each(function() {
  2694.                 e.remove(this, n)
  2695.             })
  2696.         }
  2697.     });
  2698.     i.extend({
  2699.         queue: function(n, t, u) {
  2700.             var f;
  2701.             if (n) return (t = (t || "fx") + "queue", f = r.get(n, t), u && (!f || i.isArray(u) ? f = r.access(n, t, i.makeArray(u)) : f.push(u)), f || [])
  2702.         },
  2703.         dequeue: function(n, t) {
  2704.             t = t || "fx";
  2705.             var r = i.queue(n, t),
  2706.                 e = r.length,
  2707.                 u = r.shift(),
  2708.                 f = i._queueHooks(n, t),
  2709.                 o = function() {
  2710.                     i.dequeue(n, t)
  2711.                 };
  2712.             "inprogress" === u && (u = r.shift(), e--);
  2713.             u && ("fx" === t && r.unshift("inprogress"), delete f.stop, u.call(n, o, f));
  2714.             !e && f && f.empty.fire()
  2715.         },
  2716.         _queueHooks: function(n, t) {
  2717.             var u = t + "queueHooks";
  2718.             return r.get(n, u) || r.access(n, u, {
  2719.                 empty: i.Callbacks("once memory").add(function() {
  2720.                     r.remove(n, [t + "queue", u])
  2721.                 })
  2722.             })
  2723.         }
  2724.     });
  2725.     i.fn.extend({
  2726.         queue: function(n, t) {
  2727.             var r = 2;
  2728.             return "string" != typeof n && (t = n, n = "fx", r--), arguments.length < r ? i.queue(this[0], n) : void 0 === t ? this : this.each(function() {
  2729.                 var r = i.queue(this, n, t);
  2730.                 i._queueHooks(this, n);
  2731.                 "fx" === n && "inprogress" !== r[0] && i.dequeue(this, n)
  2732.             })
  2733.         },
  2734.         dequeue: function(n) {
  2735.             return this.each(function() {
  2736.                 i.dequeue(this, n)
  2737.             })
  2738.         },
  2739.         clearQueue: function(n) {
  2740.             return this.queue(n || "fx", [])
  2741.         },
  2742.         promise: function(n, t) {
  2743.             var u, e = 1,
  2744.                 o = i.Deferred(),
  2745.                 f = this,
  2746.                 s = this.length,
  2747.                 h = function() {
  2748.                     --e || o.resolveWith(f, [f])
  2749.                 };
  2750.             for ("string" != typeof n && (t = n, n = void 0), n = n || "fx"; s--;) u = r.get(f[s], n + "queueHooks"), u && u.empty && (e++, u.empty.add(h));
  2751.             return h(), o.promise(t)
  2752.         }
  2753.     });
  2754.     var ct = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
  2755.         p = ["Top", "Right", "Bottom", "Left"],
  2756.         tt = function(n, t) {
  2757.             return n = t || n, "none" === i.css(n, "display") || !i.contains(n.ownerDocument, n)
  2758.         },
  2759.         er = /^(?:checkbox|radio)$/i;
  2760.     ! function() {
  2761.         var i = u.createDocumentFragment(),
  2762.             n = i.appendChild(u.createElement("div")),
  2763.             t = u.createElement("input");
  2764.         t.setAttribute("type", "radio");
  2765.         t.setAttribute("checked", "checked");
  2766.         t.setAttribute("name", "t");
  2767.         n.appendChild(t);
  2768.         f.checkClone = n.cloneNode(!0).cloneNode(!0).lastChild.checked;
  2769.         n.innerHTML = "<textarea>x<\/textarea>";
  2770.         f.noCloneChecked = !!n.cloneNode(!0).lastChild.defaultValue
  2771.     }();
  2772.     b = "undefined";
  2773.     f.focusinBubbles = "onfocusin" in n;
  2774.     var cf = /^key/,
  2775.         lf = /^(?:mouse|pointer|contextmenu)|click/,
  2776.         or = /^(?:focusinfocus|focusoutblur)$/,
  2777.         sr = /^([^.]*)(?:\.(.+)|)$/;
  2778.     i.event = {
  2779.         global: {},
  2780.         add: function(n, t, u, f, e) {
  2781.             var v, y, w, p, k, h, s, l, o, d, g, a = r.get(n);
  2782.             if (a)
  2783.                 for (u.handler && (v = u, u = v.handler, e = v.selector), u.guid || (u.guid = i.guid++), (p = a.events) || (p = a.events = {}), (y = a.handle) || (y = a.handle = function(t) {
  2784.                         if (typeof i !== b && i.event.triggered !== t.type) return i.event.dispatch.apply(n, arguments)
  2785.                     }), t = (t || "").match(c) || [""], k = t.length; k--;) w = sr.exec(t[k]) || [], o = g = w[1], d = (w[2] || "").split(".").sort(), o && (s = i.event.special[o] || {}, o = (e ? s.delegateType : s.bindType) || o, s = i.event.special[o] || {}, h = i.extend({
  2786.                     type: o,
  2787.                     origType: g,
  2788.                     data: f,
  2789.                     handler: u,
  2790.                     guid: u.guid,
  2791.                     selector: e,
  2792.                     needsContext: e && i.expr.match.needsContext.test(e),
  2793.                     namespace: d.join(".")
  2794.                 }, v), (l = p[o]) || (l = p[o] = [], l.delegateCount = 0, s.setup && s.setup.call(n, f, d, y) !== !1 || n.addEventListener && n.addEventListener(o, y, !1)), s.add && (s.add.call(n, h), h.handler.guid || (h.handler.guid = u.guid)), e ? l.splice(l.delegateCount++, 0, h) : l.push(h), i.event.global[o] = !0)
  2795.         },
  2796.         remove: function(n, t, u, f, e) {
  2797.             var p, k, h, v, w, s, l, a, o, b, d, y = r.hasData(n) && r.get(n);
  2798.             if (y && (v = y.events)) {
  2799.                 for (t = (t || "").match(c) || [""], w = t.length; w--;)
  2800.                     if (h = sr.exec(t[w]) || [], o = d = h[1], b = (h[2] || "").split(".").sort(), o) {
  2801.                         for (l = i.event.special[o] || {}, o = (f ? l.delegateType : l.bindType) || o, a = v[o] || [], h = h[2] && new RegExp("(^|\\.)" + b.join("\\.(?:.*\\.|)") + "(\\.|$)"), k = p = a.length; p--;) s = a[p], !e && d !== s.origType || u && u.guid !== s.guid || h && !h.test(s.namespace) || f && f !== s.selector && ("**" !== f || !s.selector) || (a.splice(p, 1), s.selector && a.delegateCount--, l.remove && l.remove.call(n, s));
  2802.                         k && !a.length && (l.teardown && l.teardown.call(n, b, y.handle) !== !1 || i.removeEvent(n, o, y.handle), delete v[o])
  2803.                     } else
  2804.                         for (o in v) i.event.remove(n, o + t[w], u, f, !0);
  2805.                 i.isEmptyObject(v) && (delete y.handle, r.remove(n, "events"))
  2806.             }
  2807.         },
  2808.         trigger: function(t, f, e, o) {
  2809.             var w, s, c, b, a, v, l, p = [e || u],
  2810.                 h = ii.call(t, "type") ? t.type : t,
  2811.                 y = ii.call(t, "namespace") ? t.namespace.split(".") : [];
  2812.             if (s = c = e = e || u, 3 !== e.nodeType && 8 !== e.nodeType && !or.test(h + i.event.triggered) && (h.indexOf(".") >= 0 && (y = h.split("."), h = y.shift(), y.sort()), a = h.indexOf(":") < 0 && "on" + h, t = t[i.expando] ? t : new i.Event(h, "object" == typeof t && t), t.isTrigger = o ? 2 : 3, t.namespace = y.join("."), t.namespace_re = t.namespace ? new RegExp("(^|\\.)" + y.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result = void 0, t.target || (t.target = e), f = null == f ? [t] : i.makeArray(f, [t]), l = i.event.special[h] || {}, o || !l.trigger || l.trigger.apply(e, f) !== !1)) {
  2813.                 if (!o && !l.noBubble && !i.isWindow(e)) {
  2814.                     for (b = l.delegateType || h, or.test(b + h) || (s = s.parentNode); s; s = s.parentNode) p.push(s), c = s;
  2815.                     c === (e.ownerDocument || u) && p.push(c.defaultView || c.parentWindow || n)
  2816.                 }
  2817.                 for (w = 0;
  2818.                     (s = p[w++]) && !t.isPropagationStopped();) t.type = w > 1 ? b : l.bindType || h, v = (r.get(s, "events") || {})[t.type] && r.get(s, "handle"), v && v.apply(s, f), v = a && s[a], v && v.apply && i.acceptData(s) && (t.result = v.apply(s, f), t.result === !1 && t.preventDefault());
  2819.                 return t.type = h, o || t.isDefaultPrevented() || l._default && l._default.apply(p.pop(), f) !== !1 || !i.acceptData(e) || a && i.isFunction(e[h]) && !i.isWindow(e) && (c = e[a], c && (e[a] = null), i.event.triggered = h, e[h](), i.event.triggered = void 0, c && (e[a] = c)), t.result
  2820.             }
  2821.         },
  2822.         dispatch: function(n) {
  2823.             n = i.event.fix(n);
  2824.             var o, s, e, u, t, h = [],
  2825.                 c = a.call(arguments),
  2826.                 l = (r.get(this, "events") || {})[n.type] || [],
  2827.                 f = i.event.special[n.type] || {};
  2828.             if (c[0] = n, n.delegateTarget = this, !f.preDispatch || f.preDispatch.call(this, n) !== !1) {
  2829.                 for (h = i.event.handlers.call(this, n, l), o = 0;
  2830.                     (u = h[o++]) && !n.isPropagationStopped();)
  2831.                     for (n.currentTarget = u.elem, s = 0;
  2832.                         (t = u.handlers[s++]) && !n.isImmediatePropagationStopped();)(!n.namespace_re || n.namespace_re.test(t.namespace)) && (n.handleObj = t, n.data = t.data, e = ((i.event.special[t.origType] || {}).handle || t.handler).apply(u.elem, c), void 0 !== e && (n.result = e) === !1 && (n.preventDefault(), n.stopPropagation()));
  2833.                 return f.postDispatch && f.postDispatch.call(this, n), n.result
  2834.             }
  2835.         },
  2836.         handlers: function(n, t) {
  2837.             var e, u, f, o, h = [],
  2838.                 s = t.delegateCount,
  2839.                 r = n.target;
  2840.             if (s && r.nodeType && (!n.button || "click" !== n.type))
  2841.                 for (; r !== this; r = r.parentNode || this)
  2842.                     if (r.disabled !== !0 || "click" !== n.type) {
  2843.                         for (u = [], e = 0; s > e; e++) o = t[e], f = o.selector + " ", void 0 === u[f] && (u[f] = o.needsContext ? i(f, this).index(r) >= 0 : i.find(f, this, null, [r]).length), u[f] && u.push(o);
  2844.                         u.length && h.push({
  2845.                             elem: r,
  2846.                             handlers: u
  2847.                         })
  2848.                     }
  2849.             return s < t.length && h.push({
  2850.                 elem: this,
  2851.                 handlers: t.slice(s)
  2852.             }), h
  2853.         },
  2854.         props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
  2855.         fixHooks: {},
  2856.         keyHooks: {
  2857.             props: "char charCode key keyCode".split(" "),
  2858.             filter: function(n, t) {
  2859.                 return null == n.which && (n.which = null != t.charCode ? t.charCode : t.keyCode), n
  2860.             }
  2861.         },
  2862.         mouseHooks: {
  2863.             props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
  2864.             filter: function(n, t) {
  2865.                 var e, i, r, f = t.button;
  2866.                 return null == n.pageX && null != t.clientX && (e = n.target.ownerDocument || u, i = e.documentElement, r = e.body, n.pageX = t.clientX + (i && i.scrollLeft || r && r.scrollLeft || 0) - (i && i.clientLeft || r && r.clientLeft || 0), n.pageY = t.clientY + (i && i.scrollTop || r && r.scrollTop || 0) - (i && i.clientTop || r && r.clientTop || 0)), n.which || void 0 === f || (n.which = 1 & f ? 1 : 2 & f ? 3 : 4 & f ? 2 : 0), n
  2867.             }
  2868.         },
  2869.         fix: function(n) {
  2870.             if (n[i.expando]) return n;
  2871.             var f, e, o, r = n.type,
  2872.                 s = n,
  2873.                 t = this.fixHooks[r];
  2874.             for (t || (this.fixHooks[r] = t = lf.test(r) ? this.mouseHooks : cf.test(r) ? this.keyHooks : {}), o = t.props ? this.props.concat(t.props) : this.props, n = new i.Event(s), f = o.length; f--;) e = o[f], n[e] = s[e];
  2875.             return n.target || (n.target = u), 3 === n.target.nodeType && (n.target = n.target.parentNode), t.filter ? t.filter(n, s) : n
  2876.         },
  2877.         special: {
  2878.             load: {
  2879.                 noBubble: !0
  2880.             },
  2881.             focus: {
  2882.                 trigger: function() {
  2883.                     if (this !== hr() && this.focus) return (this.focus(), !1)
  2884.                 },
  2885.                 delegateType: "focusin"
  2886.             },
  2887.             blur: {
  2888.                 trigger: function() {
  2889.                     if (this === hr() && this.blur) return (this.blur(), !1)
  2890.                 },
  2891.                 delegateType: "focusout"
  2892.             },
  2893.             click: {
  2894.                 trigger: function() {
  2895.                     if ("checkbox" === this.type && this.click && i.nodeName(this, "input")) return (this.click(), !1)
  2896.                 },
  2897.                 _default: function(n) {
  2898.                     return i.nodeName(n.target, "a")
  2899.                 }
  2900.             },
  2901.             beforeunload: {
  2902.                 postDispatch: function(n) {
  2903.                     void 0 !== n.result && n.originalEvent && (n.originalEvent.returnValue = n.result)
  2904.                 }
  2905.             }
  2906.         },
  2907.         simulate: function(n, t, r, u) {
  2908.             var f = i.extend(new i.Event, r, {
  2909.                 type: n,
  2910.                 isSimulated: !0,
  2911.                 originalEvent: {}
  2912.             });
  2913.             u ? i.event.trigger(f, null, t) : i.event.dispatch.call(t, f);
  2914.             f.isDefaultPrevented() && r.preventDefault()
  2915.         }
  2916.     };
  2917.     i.removeEvent = function(n, t, i) {
  2918.         n.removeEventListener && n.removeEventListener(t, i, !1)
  2919.     };
  2920.     i.Event = function(n, t) {
  2921.         return this instanceof i.Event ? (n && n.type ? (this.originalEvent = n, this.type = n.type, this.isDefaultPrevented = n.defaultPrevented || void 0 === n.defaultPrevented && n.returnValue === !1 ? lt : k) : this.type = n, t && i.extend(this, t), this.timeStamp = n && n.timeStamp || i.now(), void(this[i.expando] = !0)) : new i.Event(n, t)
  2922.     };
  2923.     i.Event.prototype = {
  2924.         isDefaultPrevented: k,
  2925.         isPropagationStopped: k,
  2926.         isImmediatePropagationStopped: k,
  2927.         preventDefault: function() {
  2928.             var n = this.originalEvent;
  2929.             this.isDefaultPrevented = lt;
  2930.             n && n.preventDefault && n.preventDefault()
  2931.         },
  2932.         stopPropagation: function() {
  2933.             var n = this.originalEvent;
  2934.             this.isPropagationStopped = lt;
  2935.             n && n.stopPropagation && n.stopPropagation()
  2936.         },
  2937.         stopImmediatePropagation: function() {
  2938.             var n = this.originalEvent;
  2939.             this.isImmediatePropagationStopped = lt;
  2940.             n && n.stopImmediatePropagation && n.stopImmediatePropagation();
  2941.             this.stopPropagation()
  2942.         }
  2943.     };
  2944.     i.each({
  2945.         mouseenter: "mouseover",
  2946.         mouseleave: "mouseout",
  2947.         pointerenter: "pointerover",
  2948.         pointerleave: "pointerout"
  2949.     }, function(n, t) {
  2950.         i.event.special[n] = {
  2951.             delegateType: t,
  2952.             bindType: t,
  2953.             handle: function(n) {
  2954.                 var u, f = this,
  2955.                     r = n.relatedTarget,
  2956.                     e = n.handleObj;
  2957.                 return (!r || r !== f && !i.contains(f, r)) && (n.type = e.origType, u = e.handler.apply(this, arguments), n.type = t), u
  2958.             }
  2959.         }
  2960.     });
  2961.     f.focusinBubbles || i.each({
  2962.         focus: "focusin",
  2963.         blur: "focusout"
  2964.     }, function(n, t) {
  2965.         var u = function(n) {
  2966.             i.event.simulate(t, n.target, i.event.fix(n), !0)
  2967.         };
  2968.         i.event.special[t] = {
  2969.             setup: function() {
  2970.                 var i = this.ownerDocument || this,
  2971.                     f = r.access(i, t);
  2972.                 f || i.addEventListener(n, u, !0);
  2973.                 r.access(i, t, (f || 0) + 1)
  2974.             },
  2975.             teardown: function() {
  2976.                 var i = this.ownerDocument || this,
  2977.                     f = r.access(i, t) - 1;
  2978.                 f ? r.access(i, t, f) : (i.removeEventListener(n, u, !0), r.remove(i, t))
  2979.             }
  2980.         }
  2981.     });
  2982.     i.fn.extend({
  2983.         on: function(n, t, r, u, f) {
  2984.             var e, o;
  2985.             if ("object" == typeof n) {
  2986.                 "string" != typeof t && (r = r || t, t = void 0);
  2987.                 for (o in n) this.on(o, t, r, n[o], f);
  2988.                 return this
  2989.             }
  2990.             if (null == r && null == u ? (u = t, r = t = void 0) : null == u && ("string" == typeof t ? (u = r, r = void 0) : (u = r, r = t, t = void 0)), u === !1) u = k;
  2991.             else if (!u) return this;
  2992.             return 1 === f && (e = u, u = function(n) {
  2993.                 return i().off(n), e.apply(this, arguments)
  2994.             }, u.guid = e.guid || (e.guid = i.guid++)), this.each(function() {
  2995.                 i.event.add(this, n, u, r, t)
  2996.             })
  2997.         },
  2998.         one: function(n, t, i, r) {
  2999.             return this.on(n, t, i, r, 1)
  3000.         },
  3001.         off: function(n, t, r) {
  3002.             var u, f;
  3003.             if (n && n.preventDefault && n.handleObj) return u = n.handleObj, i(n.delegateTarget).off(u.namespace ? u.origType + "." + u.namespace : u.origType, u.selector, u.handler), this;
  3004.             if ("object" == typeof n) {
  3005.                 for (f in n) this.off(f, t, n[f]);
  3006.                 return this
  3007.             }
  3008.             return (t === !1 || "function" == typeof t) && (r = t, t = void 0), r === !1 && (r = k), this.each(function() {
  3009.                 i.event.remove(this, n, r, t)
  3010.             })
  3011.         },
  3012.         trigger: function(n, t) {
  3013.             return this.each(function() {
  3014.                 i.event.trigger(n, t, this)
  3015.             })
  3016.         },
  3017.         triggerHandler: function(n, t) {
  3018.             var r = this[0];
  3019.             if (r) return i.event.trigger(n, t, r, !0)
  3020.         }
  3021.     });
  3022.     var cr = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
  3023.         lr = /<([\w:]+)/,
  3024.         af = /<|&#?\w+;/,
  3025.         vf = /<(?:script|style|link)/i,
  3026.         yf = /checked\s*(?:[^=]|=\s*.checked.)/i,
  3027.         ar = /^$|\/(?:java|ecma)script/i,
  3028.         pf = /^true\/(.*)/,
  3029.         wf = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
  3030.         h = {
  3031.             option: [1, "<select multiple='multiple'>", "<\/select>"],
  3032.             thead: [1, "<table>", "<\/table>"],
  3033.             col: [2, "<table><colgroup>", "<\/colgroup><\/table>"],
  3034.             tr: [2, "<table><tbody>", "<\/tbody><\/table>"],
  3035.             td: [3, "<table><tbody><tr>", "<\/tr><\/tbody><\/table>"],
  3036.             _default: [0, "", ""]
  3037.         };
  3038.     h.optgroup = h.option;
  3039.     h.tbody = h.tfoot = h.colgroup = h.caption = h.thead;
  3040.     h.th = h.td;
  3041.     i.extend({
  3042.         clone: function(n, t, r) {
  3043.             var u, c, s, e, h = n.cloneNode(!0),
  3044.                 l = i.contains(n.ownerDocument, n);
  3045.             if (!(f.noCloneChecked || 1 !== n.nodeType && 11 !== n.nodeType || i.isXMLDoc(n)))
  3046.                 for (e = o(h), s = o(n), u = 0, c = s.length; c > u; u++) df(s[u], e[u]);
  3047.             if (t)
  3048.                 if (r)
  3049.                     for (s = s || o(n), e = e || o(h), u = 0, c = s.length; c > u; u++) yr(s[u], e[u]);
  3050.                 else yr(n, h);
  3051.             return e = o(h, "script"), e.length > 0 && ei(e, !l && o(n, "script")), h
  3052.         },
  3053.         buildFragment: function(n, t, r, u) {
  3054.             for (var f, e, y, l, p, a, s = t.createDocumentFragment(), v = [], c = 0, w = n.length; w > c; c++)
  3055.                 if (f = n[c], f || 0 === f)
  3056.                     if ("object" === i.type(f)) i.merge(v, f.nodeType ? [f] : f);
  3057.                     else if (af.test(f)) {
  3058.                 for (e = e || s.appendChild(t.createElement("div")), y = (lr.exec(f) || ["", ""])[1].toLowerCase(), l = h[y] || h._default, e.innerHTML = l[1] + f.replace(cr, "<$1><\/$2>") + l[2], a = l[0]; a--;) e = e.lastChild;
  3059.                 i.merge(v, e.childNodes);
  3060.                 e = s.firstChild;
  3061.                 e.textContent = ""
  3062.             } else v.push(t.createTextNode(f));
  3063.             for (s.textContent = "", c = 0; f = v[c++];)
  3064.                 if ((!u || -1 === i.inArray(f, u)) && (p = i.contains(f.ownerDocument, f), e = o(s.appendChild(f), "script"), p && ei(e), r))
  3065.                     for (a = 0; f = e[a++];) ar.test(f.type || "") && r.push(f);
  3066.             return s
  3067.         },
  3068.         cleanData: function(n) {
  3069.             for (var f, t, o, u, h = i.event.special, s = 0; void 0 !== (t = n[s]); s++) {
  3070.                 if (i.acceptData(t) && (u = t[r.expando], u && (f = r.cache[u]))) {
  3071.                     if (f.events)
  3072.                         for (o in f.events) h[o] ? i.event.remove(t, o) : i.removeEvent(t, o, f.handle);
  3073.                     r.cache[u] && delete r.cache[u]
  3074.                 }
  3075.                 delete e.cache[t[e.expando]]
  3076.             }
  3077.         }
  3078.     });
  3079.     i.fn.extend({
  3080.         text: function(n) {
  3081.             return l(this, function(n) {
  3082.                 return void 0 === n ? i.text(this) : this.empty().each(function() {
  3083.                     (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) && (this.textContent = n)
  3084.                 })
  3085.             }, null, n, arguments.length)
  3086.         },
  3087.         append: function() {
  3088.             return this.domManip(arguments, function(n) {
  3089.                 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
  3090.                     var t = vr(this, n);
  3091.                     t.appendChild(n)
  3092.                 }
  3093.             })
  3094.         },
  3095.         prepend: function() {
  3096.             return this.domManip(arguments, function(n) {
  3097.                 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
  3098.                     var t = vr(this, n);
  3099.                     t.insertBefore(n, t.firstChild)
  3100.                 }
  3101.             })
  3102.         },
  3103.         before: function() {
  3104.             return this.domManip(arguments, function(n) {
  3105.                 this.parentNode && this.parentNode.insertBefore(n, this)
  3106.             })
  3107.         },
  3108.         after: function() {
  3109.             return this.domManip(arguments, function(n) {
  3110.                 this.parentNode && this.parentNode.insertBefore(n, this.nextSibling)
  3111.             })
  3112.         },
  3113.         remove: function(n, t) {
  3114.             for (var r, f = n ? i.filter(n, this) : this, u = 0; null != (r = f[u]); u++) t || 1 !== r.nodeType || i.cleanData(o(r)), r.parentNode && (t && i.contains(r.ownerDocument, r) && ei(o(r, "script")), r.parentNode.removeChild(r));
  3115.             return this
  3116.         },
  3117.         empty: function() {
  3118.             for (var n, t = 0; null != (n = this[t]); t++) 1 === n.nodeType && (i.cleanData(o(n, !1)), n.textContent = "");
  3119.             return this
  3120.         },
  3121.         clone: function(n, t) {
  3122.             return n = null == n ? !1 : n, t = null == t ? n : t, this.map(function() {
  3123.                 return i.clone(this, n, t)
  3124.             })
  3125.         },
  3126.         html: function(n) {
  3127.             return l(this, function(n) {
  3128.                 var t = this[0] || {},
  3129.                     r = 0,
  3130.                     u = this.length;
  3131.                 if (void 0 === n && 1 === t.nodeType) return t.innerHTML;
  3132.                 if ("string" == typeof n && !vf.test(n) && !h[(lr.exec(n) || ["", ""])[1].toLowerCase()]) {
  3133.                     n = n.replace(cr, "<$1><\/$2>");
  3134.                     try {
  3135.                         for (; u > r; r++) t = this[r] || {}, 1 === t.nodeType && (i.cleanData(o(t, !1)), t.innerHTML = n);
  3136.                         t = 0
  3137.                     } catch (f) {}
  3138.                 }
  3139.                 t && this.empty().append(n)
  3140.             }, null, n, arguments.length)
  3141.         },
  3142.         replaceWith: function() {
  3143.             var n = arguments[0];
  3144.             return this.domManip(arguments, function(t) {
  3145.                 n = this.parentNode;
  3146.                 i.cleanData(o(this));
  3147.                 n && n.replaceChild(t, this)
  3148.             }), n && (n.length || n.nodeType) ? this : this.remove()
  3149.         },
  3150.         detach: function(n) {
  3151.             return this.remove(n, !0)
  3152.         },
  3153.         domManip: function(n, t) {
  3154.             n = bi.apply([], n);
  3155.             var h, v, s, c, u, y, e = 0,
  3156.                 l = this.length,
  3157.                 w = this,
  3158.                 b = l - 1,
  3159.                 a = n[0],
  3160.                 p = i.isFunction(a);
  3161.             if (p || l > 1 && "string" == typeof a && !f.checkClone && yf.test(a)) return this.each(function(i) {
  3162.                 var r = w.eq(i);
  3163.                 p && (n[0] = a.call(this, i, r.html()));
  3164.                 r.domManip(n, t)
  3165.             });
  3166.             if (l && (h = i.buildFragment(n, this[0].ownerDocument, !1, this), v = h.firstChild, 1 === h.childNodes.length && (h = v), v)) {
  3167.                 for (s = i.map(o(h, "script"), bf), c = s.length; l > e; e++) u = h, e !== b && (u = i.clone(u, !0, !0), c && i.merge(s, o(u, "script"))), t.call(this[e], u, e);
  3168.                 if (c)
  3169.                     for (y = s[s.length - 1].ownerDocument, i.map(s, kf), e = 0; c > e; e++) u = s[e], ar.test(u.type || "") && !r.access(u, "globalEval") && i.contains(y, u) && (u.src ? i._evalUrl && i._evalUrl(u.src) : i.globalEval(u.textContent.replace(wf, "")))
  3170.             }
  3171.             return this
  3172.         }
  3173.     });
  3174.     i.each({
  3175.         appendTo: "append",
  3176.         prependTo: "prepend",
  3177.         insertBefore: "before",
  3178.         insertAfter: "after",
  3179.         replaceAll: "replaceWith"
  3180.     }, function(n, t) {
  3181.         i.fn[n] = function(n) {
  3182.             for (var u, f = [], e = i(n), o = e.length - 1, r = 0; o >= r; r++) u = r === o ? this : this.clone(!0), i(e[r])[t](u), ti.apply(f, u.get());
  3183.             return this.pushStack(f)
  3184.         }
  3185.     });
  3186.     oi = {};
  3187.     var wr = /^margin/,
  3188.         hi = new RegExp("^(" + ct + ")(?!px)[a-z%]+$", "i"),
  3189.         vt = function(t) {
  3190.             return t.ownerDocument.defaultView.opener ? t.ownerDocument.defaultView.getComputedStyle(t, null) : n.getComputedStyle(t, null)
  3191.         };
  3192.     ! function() {
  3193.         var s, o, e = u.documentElement,
  3194.             r = u.createElement("div"),
  3195.             t = u.createElement("div");
  3196.         if (t.style) {
  3197.             t.style.backgroundClip = "content-box";
  3198.             t.cloneNode(!0).style.backgroundClip = "";
  3199.             f.clearCloneStyle = "content-box" === t.style.backgroundClip;
  3200.             r.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute";
  3201.             r.appendChild(t);
  3202.  
  3203.             function h() {
  3204.                 t.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute";
  3205.                 t.innerHTML = "";
  3206.                 e.appendChild(r);
  3207.                 var i = n.getComputedStyle(t, null);
  3208.                 s = "1%" !== i.top;
  3209.                 o = "4px" === i.width;
  3210.                 e.removeChild(r)
  3211.             }
  3212.             n.getComputedStyle && i.extend(f, {
  3213.                 pixelPosition: function() {
  3214.                     return h(), s
  3215.                 },
  3216.                 boxSizingReliable: function() {
  3217.                     return null == o && h(), o
  3218.                 },
  3219.                 reliableMarginRight: function() {
  3220.                     var f, i = t.appendChild(u.createElement("div"));
  3221.                     return i.style.cssText = t.style.cssText = "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0", i.style.marginRight = i.style.width = "0", t.style.width = "1px", e.appendChild(r), f = !parseFloat(n.getComputedStyle(i, null).marginRight), e.removeChild(r), t.removeChild(i), f
  3222.                 }
  3223.             })
  3224.         }
  3225.     }();
  3226.     i.swap = function(n, t, i, r) {
  3227.         var f, u, e = {};
  3228.         for (u in t) e[u] = n.style[u], n.style[u] = t[u];
  3229.         f = i.apply(n, r || []);
  3230.         for (u in t) n.style[u] = e[u];
  3231.         return f
  3232.     };
  3233.     var gf = /^(none|table(?!-c[ea]).+)/,
  3234.         ne = new RegExp("^(" + ct + ")(.*)$", "i"),
  3235.         te = new RegExp("^([+-])=(" + ct + ")", "i"),
  3236.         ie = {
  3237.             position: "absolute",
  3238.             visibility: "hidden",
  3239.             display: "block"
  3240.         },
  3241.         kr = {
  3242.             letterSpacing: "0",
  3243.             fontWeight: "400"
  3244.         },
  3245.         dr = ["Webkit", "O", "Moz", "ms"];
  3246.     i.extend({
  3247.         cssHooks: {
  3248.             opacity: {
  3249.                 get: function(n, t) {
  3250.                     if (t) {
  3251.                         var i = it(n, "opacity");
  3252.                         return "" === i ? "1" : i
  3253.                     }
  3254.                 }
  3255.             }
  3256.         },
  3257.         cssNumber: {
  3258.             columnCount: !0,
  3259.             fillOpacity: !0,
  3260.             flexGrow: !0,
  3261.             flexShrink: !0,
  3262.             fontWeight: !0,
  3263.             lineHeight: !0,
  3264.             opacity: !0,
  3265.             order: !0,
  3266.             orphans: !0,
  3267.             widows: !0,
  3268.             zIndex: !0,
  3269.             zoom: !0
  3270.         },
  3271.         cssProps: {
  3272.             float: "cssFloat"
  3273.         },
  3274.         style: function(n, t, r, u) {
  3275.             if (n && 3 !== n.nodeType && 8 !== n.nodeType && n.style) {
  3276.                 var o, h, e, s = i.camelCase(t),
  3277.                     c = n.style;
  3278.                 return t = i.cssProps[s] || (i.cssProps[s] = gr(c, s)), e = i.cssHooks[t] || i.cssHooks[s], void 0 === r ? e && "get" in e && void 0 !== (o = e.get(n, !1, u)) ? o : c[t] : (h = typeof r, "string" === h && (o = te.exec(r)) && (r = (o[1] + 1) * o[2] + parseFloat(i.css(n, t)), h = "number"), null != r && r === r && ("number" !== h || i.cssNumber[s] || (r += "px"), f.clearCloneStyle || "" !== r || 0 !== t.indexOf("background") || (c[t] = "inherit"), e && "set" in e && void 0 === (r = e.set(n, r, u)) || (c[t] = r)), void 0)
  3279.             }
  3280.         },
  3281.         css: function(n, t, r, u) {
  3282.             var f, s, e, o = i.camelCase(t);
  3283.             return t = i.cssProps[o] || (i.cssProps[o] = gr(n.style, o)), e = i.cssHooks[t] || i.cssHooks[o], e && "get" in e && (f = e.get(n, !0, r)), void 0 === f && (f = it(n, t, u)), "normal" === f && t in kr && (f = kr[t]), "" === r || r ? (s = parseFloat(f), r === !0 || i.isNumeric(s) ? s || 0 : f) : f
  3284.         }
  3285.     });
  3286.     i.each(["height", "width"], function(n, t) {
  3287.         i.cssHooks[t] = {
  3288.             get: function(n, r, u) {
  3289.                 if (r) return gf.test(i.css(n, "display")) && 0 === n.offsetWidth ? i.swap(n, ie, function() {
  3290.                     return iu(n, t, u)
  3291.                 }) : iu(n, t, u)
  3292.             },
  3293.             set: function(n, r, u) {
  3294.                 var f = u && vt(n);
  3295.                 return nu(n, r, u ? tu(n, t, u, "border-box" === i.css(n, "boxSizing", !1, f), f) : 0)
  3296.             }
  3297.         }
  3298.     });
  3299.     i.cssHooks.marginRight = br(f.reliableMarginRight, function(n, t) {
  3300.         if (t) return i.swap(n, {
  3301.             display: "inline-block"
  3302.         }, it, [n, "marginRight"])
  3303.     });
  3304.     i.each({
  3305.         margin: "",
  3306.         padding: "",
  3307.         border: "Width"
  3308.     }, function(n, t) {
  3309.         i.cssHooks[n + t] = {
  3310.             expand: function(i) {
  3311.                 for (var r = 0, f = {}, u = "string" == typeof i ? i.split(" ") : [i]; 4 > r; r++) f[n + p[r] + t] = u[r] || u[r - 2] || u[0];
  3312.                 return f
  3313.             }
  3314.         };
  3315.         wr.test(n) || (i.cssHooks[n + t].set = nu)
  3316.     });
  3317.     i.fn.extend({
  3318.         css: function(n, t) {
  3319.             return l(this, function(n, t, r) {
  3320.                 var f, e, o = {},
  3321.                     u = 0;
  3322.                 if (i.isArray(t)) {
  3323.                     for (f = vt(n), e = t.length; e > u; u++) o[t[u]] = i.css(n, t[u], !1, f);
  3324.                     return o
  3325.                 }
  3326.                 return void 0 !== r ? i.style(n, t, r) : i.css(n, t)
  3327.             }, n, t, arguments.length > 1)
  3328.         },
  3329.         show: function() {
  3330.             return ru(this, !0)
  3331.         },
  3332.         hide: function() {
  3333.             return ru(this)
  3334.         },
  3335.         toggle: function(n) {
  3336.             return "boolean" == typeof n ? n ? this.show() : this.hide() : this.each(function() {
  3337.                 tt(this) ? i(this).show() : i(this).hide()
  3338.             })
  3339.         }
  3340.     });
  3341.     i.Tween = s;
  3342.     s.prototype = {
  3343.         constructor: s,
  3344.         init: function(n, t, r, u, f, e) {
  3345.             this.elem = n;
  3346.             this.prop = r;
  3347.             this.easing = f || "swing";
  3348.             this.options = t;
  3349.             this.start = this.now = this.cur();
  3350.             this.end = u;
  3351.             this.unit = e || (i.cssNumber[r] ? "" : "px")
  3352.         },
  3353.         cur: function() {
  3354.             var n = s.propHooks[this.prop];
  3355.             return n && n.get ? n.get(this) : s.propHooks._default.get(this)
  3356.         },
  3357.         run: function(n) {
  3358.             var t, r = s.propHooks[this.prop];
  3359.             return this.pos = this.options.duration ? t = i.easing[this.easing](n, this.options.duration * n, 0, 1, this.options.duration) : t = n, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), r && r.set ? r.set(this) : s.propHooks._default.set(this), this
  3360.         }
  3361.     };
  3362.     s.prototype.init.prototype = s.prototype;
  3363.     s.propHooks = {
  3364.         _default: {
  3365.             get: function(n) {
  3366.                 var t;
  3367.                 return null == n.elem[n.prop] || n.elem.style && null != n.elem.style[n.prop] ? (t = i.css(n.elem, n.prop, ""), t && "auto" !== t ? t : 0) : n.elem[n.prop]
  3368.             },
  3369.             set: function(n) {
  3370.                 i.fx.step[n.prop] ? i.fx.step[n.prop](n) : n.elem.style && (null != n.elem.style[i.cssProps[n.prop]] || i.cssHooks[n.prop]) ? i.style(n.elem, n.prop, n.now + n.unit) : n.elem[n.prop] = n.now
  3371.             }
  3372.         }
  3373.     };
  3374.     s.propHooks.scrollTop = s.propHooks.scrollLeft = {
  3375.         set: function(n) {
  3376.             n.elem.nodeType && n.elem.parentNode && (n.elem[n.prop] = n.now)
  3377.         }
  3378.     };
  3379.     i.easing = {
  3380.         linear: function(n) {
  3381.             return n
  3382.         },
  3383.         swing: function(n) {
  3384.             return .5 - Math.cos(n * Math.PI) / 2
  3385.         }
  3386.     };
  3387.     i.fx = s.prototype.init;
  3388.     i.fx.step = {};
  3389.     var d, yt, re = /^(?:toggle|show|hide)$/,
  3390.         uu = new RegExp("^(?:([+-])=|)(" + ct + ")([a-z%]*)$", "i"),
  3391.         ue = /queueHooks$/,
  3392.         pt = [fe],
  3393.         rt = {
  3394.             "*": [function(n, t) {
  3395.                 var f = this.createTween(n, t),
  3396.                     s = f.cur(),
  3397.                     r = uu.exec(t),
  3398.                     e = r && r[3] || (i.cssNumber[n] ? "" : "px"),
  3399.                     u = (i.cssNumber[n] || "px" !== e && +s) && uu.exec(i.css(f.elem, n)),
  3400.                     o = 1,
  3401.                     h = 20;
  3402.                 if (u && u[3] !== e) {
  3403.                     e = e || u[3];
  3404.                     r = r || [];
  3405.                     u = +s || 1;
  3406.                     do o = o || ".5", u /= o, i.style(f.elem, n, u + e); while (o !== (o = f.cur() / s) && 1 !== o && --h)
  3407.                 }
  3408.                 return r && (u = f.start = +u || +s || 0, f.unit = e, f.end = r[1] ? u + (r[1] + 1) * r[2] : +r[2]), f
  3409.             }]
  3410.         };
  3411.     i.Animation = i.extend(ou, {
  3412.         tweener: function(n, t) {
  3413.             i.isFunction(n) ? (t = n, n = ["*"]) : n = n.split(" ");
  3414.             for (var r, u = 0, f = n.length; f > u; u++) r = n[u], rt[r] = rt[r] || [], rt[r].unshift(t)
  3415.         },
  3416.         prefilter: function(n, t) {
  3417.             t ? pt.unshift(n) : pt.push(n)
  3418.         }
  3419.     });
  3420.     i.speed = function(n, t, r) {
  3421.         var u = n && "object" == typeof n ? i.extend({}, n) : {
  3422.             complete: r || !r && t || i.isFunction(n) && n,
  3423.             duration: n,
  3424.             easing: r && t || t && !i.isFunction(t) && t
  3425.         };
  3426.         return u.duration = i.fx.off ? 0 : "number" == typeof u.duration ? u.duration : u.duration in i.fx.speeds ? i.fx.speeds[u.duration] : i.fx.speeds._default, (null == u.queue || u.queue === !0) && (u.queue = "fx"), u.old = u.complete, u.complete = function() {
  3427.             i.isFunction(u.old) && u.old.call(this);
  3428.             u.queue && i.dequeue(this, u.queue)
  3429.         }, u
  3430.     };
  3431.     i.fn.extend({
  3432.         fadeTo: function(n, t, i, r) {
  3433.             return this.filter(tt).css("opacity", 0).show().end().animate({
  3434.                 opacity: t
  3435.             }, n, i, r)
  3436.         },
  3437.         animate: function(n, t, u, f) {
  3438.             var s = i.isEmptyObject(n),
  3439.                 o = i.speed(t, u, f),
  3440.                 e = function() {
  3441.                     var t = ou(this, i.extend({}, n), o);
  3442.                     (s || r.get(this, "finish")) && t.stop(!0)
  3443.                 };
  3444.             return e.finish = e, s || o.queue === !1 ? this.each(e) : this.queue(o.queue, e)
  3445.         },
  3446.         stop: function(n, t, u) {
  3447.             var f = function(n) {
  3448.                 var t = n.stop;
  3449.                 delete n.stop;
  3450.                 t(u)
  3451.             };
  3452.             return "string" != typeof n && (u = t, t = n, n = void 0), t && n !== !1 && this.queue(n || "fx", []), this.each(function() {
  3453.                 var s = !0,
  3454.                     t = null != n && n + "queueHooks",
  3455.                     o = i.timers,
  3456.                     e = r.get(this);
  3457.                 if (t) e[t] && e[t].stop && f(e[t]);
  3458.                 else
  3459.                     for (t in e) e[t] && e[t].stop && ue.test(t) && f(e[t]);
  3460.                 for (t = o.length; t--;) o[t].elem !== this || null != n && o[t].queue !== n || (o[t].anim.stop(u), s = !1, o.splice(t, 1));
  3461.                 (s || !u) && i.dequeue(this, n)
  3462.             })
  3463.         },
  3464.         finish: function(n) {
  3465.             return n !== !1 && (n = n || "fx"), this.each(function() {
  3466.                 var t, e = r.get(this),
  3467.                     u = e[n + "queue"],
  3468.                     o = e[n + "queueHooks"],
  3469.                     f = i.timers,
  3470.                     s = u ? u.length : 0;
  3471.                 for (e.finish = !0, i.queue(this, n, []), o && o.stop && o.stop.call(this, !0), t = f.length; t--;) f[t].elem === this && f[t].queue === n && (f[t].anim.stop(!0), f.splice(t, 1));
  3472.                 for (t = 0; s > t; t++) u[t] && u[t].finish && u[t].finish.call(this);
  3473.                 delete e.finish
  3474.             })
  3475.         }
  3476.     });
  3477.     i.each(["toggle", "show", "hide"], function(n, t) {
  3478.         var r = i.fn[t];
  3479.         i.fn[t] = function(n, i, u) {
  3480.             return null == n || "boolean" == typeof n ? r.apply(this, arguments) : this.animate(wt(t, !0), n, i, u)
  3481.         }
  3482.     });
  3483.     i.each({
  3484.         slideDown: wt("show"),
  3485.         slideUp: wt("hide"),
  3486.         slideToggle: wt("toggle"),
  3487.         fadeIn: {
  3488.             opacity: "show"
  3489.         },
  3490.         fadeOut: {
  3491.             opacity: "hide"
  3492.         },
  3493.         fadeToggle: {
  3494.             opacity: "toggle"
  3495.         }
  3496.     }, function(n, t) {
  3497.         i.fn[n] = function(n, i, r) {
  3498.             return this.animate(t, n, i, r)
  3499.         }
  3500.     });
  3501.     i.timers = [];
  3502.     i.fx.tick = function() {
  3503.         var r, n = 0,
  3504.             t = i.timers;
  3505.         for (d = i.now(); n < t.length; n++) r = t[n], r() || t[n] !== r || t.splice(n--, 1);
  3506.         t.length || i.fx.stop();
  3507.         d = void 0
  3508.     };
  3509.     i.fx.timer = function(n) {
  3510.         i.timers.push(n);
  3511.         n() ? i.fx.start() : i.timers.pop()
  3512.     };
  3513.     i.fx.interval = 13;
  3514.     i.fx.start = function() {
  3515.         yt || (yt = setInterval(i.fx.tick, i.fx.interval))
  3516.     };
  3517.     i.fx.stop = function() {
  3518.         clearInterval(yt);
  3519.         yt = null
  3520.     };
  3521.     i.fx.speeds = {
  3522.         slow: 600,
  3523.         fast: 200,
  3524.         _default: 400
  3525.     };
  3526.     i.fn.delay = function(n, t) {
  3527.             return n = i.fx ? i.fx.speeds[n] || n : n, t = t || "fx", this.queue(t, function(t, i) {
  3528.                 var r = setTimeout(t, n);
  3529.                 i.stop = function() {
  3530.                     clearTimeout(r)
  3531.                 }
  3532.             })
  3533.         },
  3534.         function() {
  3535.             var n = u.createElement("input"),
  3536.                 t = u.createElement("select"),
  3537.                 i = t.appendChild(u.createElement("option"));
  3538.             n.type = "checkbox";
  3539.             f.checkOn = "" !== n.value;
  3540.             f.optSelected = i.selected;
  3541.             t.disabled = !0;
  3542.             f.optDisabled = !i.disabled;
  3543.             n = u.createElement("input");
  3544.             n.value = "t";
  3545.             n.type = "radio";
  3546.             f.radioValue = "t" === n.value
  3547.         }();
  3548.     g = i.expr.attrHandle;
  3549.     i.fn.extend({
  3550.         attr: function(n, t) {
  3551.             return l(this, i.attr, n, t, arguments.length > 1)
  3552.         },
  3553.         removeAttr: function(n) {
  3554.             return this.each(function() {
  3555.                 i.removeAttr(this, n)
  3556.             })
  3557.         }
  3558.     });
  3559.     i.extend({
  3560.         attr: function(n, t, r) {
  3561.             var u, f, e = n.nodeType;
  3562.             if (n && 3 !== e && 8 !== e && 2 !== e) return typeof n.getAttribute === b ? i.prop(n, t, r) : (1 === e && i.isXMLDoc(n) || (t = t.toLowerCase(), u = i.attrHooks[t] || (i.expr.match.bool.test(t) ? su : oe)), void 0 === r ? u && "get" in u && null !== (f = u.get(n, t)) ? f : (f = i.find.attr(n, t), null == f ? void 0 : f) : null !== r ? u && "set" in u && void 0 !== (f = u.set(n, r, t)) ? f : (n.setAttribute(t, r + ""), r) : void i.removeAttr(n, t))
  3563.         },
  3564.         removeAttr: function(n, t) {
  3565.             var r, u, e = 0,
  3566.                 f = t && t.match(c);
  3567.             if (f && 1 === n.nodeType)
  3568.                 while (r = f[e++]) u = i.propFix[r] || r, i.expr.match.bool.test(r) && (n[u] = !1), n.removeAttribute(r)
  3569.         },
  3570.         attrHooks: {
  3571.             type: {
  3572.                 set: function(n, t) {
  3573.                     if (!f.radioValue && "radio" === t && i.nodeName(n, "input")) {
  3574.                         var r = n.value;
  3575.                         return n.setAttribute("type", t), r && (n.value = r), t
  3576.                     }
  3577.                 }
  3578.             }
  3579.         }
  3580.     });
  3581.     su = {
  3582.         set: function(n, t, r) {
  3583.             return t === !1 ? i.removeAttr(n, r) : n.setAttribute(r, r), r
  3584.         }
  3585.     };
  3586.     i.each(i.expr.match.bool.source.match(/\w+/g), function(n, t) {
  3587.         var r = g[t] || i.find.attr;
  3588.         g[t] = function(n, t, i) {
  3589.             var u, f;
  3590.             return i || (f = g[t], g[t] = u, u = null != r(n, t, i) ? t.toLowerCase() : null, g[t] = f), u
  3591.         }
  3592.     });
  3593.     hu = /^(?:input|select|textarea|button)$/i;
  3594.     i.fn.extend({
  3595.         prop: function(n, t) {
  3596.             return l(this, i.prop, n, t, arguments.length > 1)
  3597.         },
  3598.         removeProp: function(n) {
  3599.             return this.each(function() {
  3600.                 delete this[i.propFix[n] || n]
  3601.             })
  3602.         }
  3603.     });
  3604.     i.extend({
  3605.         propFix: {
  3606.             "for": "htmlFor",
  3607.             "class": "className"
  3608.         },
  3609.         prop: function(n, t, r) {
  3610.             var f, u, o, e = n.nodeType;
  3611.             if (n && 3 !== e && 8 !== e && 2 !== e) return o = 1 !== e || !i.isXMLDoc(n), o && (t = i.propFix[t] || t, u = i.propHooks[t]), void 0 !== r ? u && "set" in u && void 0 !== (f = u.set(n, r, t)) ? f : n[t] = r : u && "get" in u && null !== (f = u.get(n, t)) ? f : n[t]
  3612.         },
  3613.         propHooks: {
  3614.             tabIndex: {
  3615.                 get: function(n) {
  3616.                     return n.hasAttribute("tabindex") || hu.test(n.nodeName) || n.href ? n.tabIndex : -1
  3617.                 }
  3618.             }
  3619.         }
  3620.     });
  3621.     f.optSelected || (i.propHooks.selected = {
  3622.         get: function(n) {
  3623.             var t = n.parentNode;
  3624.             return t && t.parentNode && t.parentNode.selectedIndex, null
  3625.         }
  3626.     });
  3627.     i.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
  3628.         i.propFix[this.toLowerCase()] = this
  3629.     });
  3630.     bt = /[\t\r\n\f]/g;
  3631.     i.fn.extend({
  3632.         addClass: function(n) {
  3633.             var o, t, r, u, s, f, h = "string" == typeof n && n,
  3634.                 e = 0,
  3635.                 l = this.length;
  3636.             if (i.isFunction(n)) return this.each(function(t) {
  3637.                 i(this).addClass(n.call(this, t, this.className))
  3638.             });
  3639.             if (h)
  3640.                 for (o = (n || "").match(c) || []; l > e; e++)
  3641.                     if (t = this[e], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(bt, " ") : " ")) {
  3642.                         for (s = 0; u = o[s++];) r.indexOf(" " + u + " ") < 0 && (r += u + " ");
  3643.                         f = i.trim(r);
  3644.                         t.className !== f && (t.className = f)
  3645.                     }
  3646.             return this
  3647.         },
  3648.         removeClass: function(n) {
  3649.             var o, t, r, u, s, f, h = 0 === arguments.length || "string" == typeof n && n,
  3650.                 e = 0,
  3651.                 l = this.length;
  3652.             if (i.isFunction(n)) return this.each(function(t) {
  3653.                 i(this).removeClass(n.call(this, t, this.className))
  3654.             });
  3655.             if (h)
  3656.                 for (o = (n || "").match(c) || []; l > e; e++)
  3657.                     if (t = this[e], r = 1 === t.nodeType && (t.className ? (" " + t.className + " ").replace(bt, " ") : "")) {
  3658.                         for (s = 0; u = o[s++];)
  3659.                             while (r.indexOf(" " + u + " ") >= 0) r = r.replace(" " + u + " ", " ");
  3660.                         f = n ? i.trim(r) : "";
  3661.                         t.className !== f && (t.className = f)
  3662.                     }
  3663.             return this
  3664.         },
  3665.         toggleClass: function(n, t) {
  3666.             var u = typeof n;
  3667.             return "boolean" == typeof t && "string" === u ? t ? this.addClass(n) : this.removeClass(n) : this.each(i.isFunction(n) ? function(r) {
  3668.                 i(this).toggleClass(n.call(this, r, this.className, t), t)
  3669.             } : function() {
  3670.                 if ("string" === u)
  3671.                     for (var t, e = 0, f = i(this), o = n.match(c) || []; t = o[e++];) f.hasClass(t) ? f.removeClass(t) : f.addClass(t);
  3672.                 else(u === b || "boolean" === u) && (this.className && r.set(this, "__className__", this.className), this.className = this.className || n === !1 ? "" : r.get(this, "__className__") || "")
  3673.             })
  3674.         },
  3675.         hasClass: function(n) {
  3676.             for (var i = " " + n + " ", t = 0, r = this.length; r > t; t++)
  3677.                 if (1 === this[t].nodeType && (" " + this[t].className + " ").replace(bt, " ").indexOf(i) >= 0) return !0;
  3678.             return !1
  3679.         }
  3680.     });
  3681.     cu = /\r/g;
  3682.     i.fn.extend({
  3683.         val: function(n) {
  3684.             var t, r, f, u = this[0];
  3685.             return arguments.length ? (f = i.isFunction(n), this.each(function(r) {
  3686.                 var u;
  3687.                 1 === this.nodeType && (u = f ? n.call(this, r, i(this).val()) : n, null == u ? u = "" : "number" == typeof u ? u += "" : i.isArray(u) && (u = i.map(u, function(n) {
  3688.                     return null == n ? "" : n + ""
  3689.                 })), t = i.valHooks[this.type] || i.valHooks[this.nodeName.toLowerCase()], t && "set" in t && void 0 !== t.set(this, u, "value") || (this.value = u))
  3690.             })) : u ? (t = i.valHooks[u.type] || i.valHooks[u.nodeName.toLowerCase()], t && "get" in t && void 0 !== (r = t.get(u, "value")) ? r : (r = u.value, "string" == typeof r ? r.replace(cu, "") : null == r ? "" : r)) : void 0
  3691.         }
  3692.     });
  3693.     i.extend({
  3694.         valHooks: {
  3695.             option: {
  3696.                 get: function(n) {
  3697.                     var t = i.find.attr(n, "value");
  3698.                     return null != t ? t : i.trim(i.text(n))
  3699.                 }
  3700.             },
  3701.             select: {
  3702.                 get: function(n) {
  3703.                     for (var o, t, s = n.options, r = n.selectedIndex, u = "select-one" === n.type || 0 > r, h = u ? null : [], c = u ? r + 1 : s.length, e = 0 > r ? c : u ? r : 0; c > e; e++)
  3704.                         if (t = s[e], !(!t.selected && e !== r || (f.optDisabled ? t.disabled : null !== t.getAttribute("disabled")) || t.parentNode.disabled && i.nodeName(t.parentNode, "optgroup"))) {
  3705.                             if (o = i(t).val(), u) return o;
  3706.                             h.push(o)
  3707.                         }
  3708.                     return h
  3709.                 },
  3710.                 set: function(n, t) {
  3711.                     for (var u, r, f = n.options, e = i.makeArray(t), o = f.length; o--;) r = f[o], (r.selected = i.inArray(r.value, e) >= 0) && (u = !0);
  3712.                     return u || (n.selectedIndex = -1), e
  3713.                 }
  3714.             }
  3715.         }
  3716.     });
  3717.     i.each(["radio", "checkbox"], function() {
  3718.         i.valHooks[this] = {
  3719.             set: function(n, t) {
  3720.                 if (i.isArray(t)) return n.checked = i.inArray(i(n).val(), t) >= 0
  3721.             }
  3722.         };
  3723.         f.checkOn || (i.valHooks[this].get = function(n) {
  3724.             return null === n.getAttribute("value") ? "on" : n.value
  3725.         })
  3726.     });
  3727.     i.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(n, t) {
  3728.         i.fn[t] = function(n, i) {
  3729.             return arguments.length > 0 ? this.on(t, null, n, i) : this.trigger(t)
  3730.         }
  3731.     });
  3732.     i.fn.extend({
  3733.         hover: function(n, t) {
  3734.             return this.mouseenter(n).mouseleave(t || n)
  3735.         },
  3736.         bind: function(n, t, i) {
  3737.             return this.on(n, null, t, i)
  3738.         },
  3739.         unbind: function(n, t) {
  3740.             return this.off(n, null, t)
  3741.         },
  3742.         delegate: function(n, t, i, r) {
  3743.             return this.on(t, n, i, r)
  3744.         },
  3745.         undelegate: function(n, t, i) {
  3746.             return 1 === arguments.length ? this.off(n, "**") : this.off(t, n || "**", i)
  3747.         }
  3748.     });
  3749.     kt = i.now();
  3750.     dt = /\?/;
  3751.     i.parseJSON = function(n) {
  3752.         return JSON.parse(n + "")
  3753.     };
  3754.     i.parseXML = function(n) {
  3755.         var t, r;
  3756.         if (!n || "string" != typeof n) return null;
  3757.         try {
  3758.             r = new DOMParser;
  3759.             t = r.parseFromString(n, "text/xml")
  3760.         } catch (u) {
  3761.             t = void 0
  3762.         }
  3763.         return (!t || t.getElementsByTagName("parsererror").length) && i.error("Invalid XML: " + n), t
  3764.     };
  3765.     var se = /#.*$/,
  3766.         lu = /([?&])_=[^&]*/,
  3767.         he = /^(.*?):[ \t]*([^\r\n]*)$/gm,
  3768.         ce = /^(?:GET|HEAD)$/,
  3769.         le = /^\/\//,
  3770.         au = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
  3771.         vu = {},
  3772.         ci = {},
  3773.         yu = "*/".concat("*"),
  3774.         li = n.location.href,
  3775.         nt = au.exec(li.toLowerCase()) || [];
  3776.     i.extend({
  3777.         active: 0,
  3778.         lastModified: {},
  3779.         etag: {},
  3780.         ajaxSettings: {
  3781.             url: li,
  3782.             type: "GET",
  3783.             isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(nt[1]),
  3784.             global: !0,
  3785.             processData: !0,
  3786.             async: !0,
  3787.             contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  3788.             accepts: {
  3789.                 "*": yu,
  3790.                 text: "text/plain",
  3791.                 html: "text/html",
  3792.                 xml: "application/xml, text/xml",
  3793.                 json: "application/json, text/javascript"
  3794.             },
  3795.             contents: {
  3796.                 xml: /xml/,
  3797.                 html: /html/,
  3798.                 json: /json/
  3799.             },
  3800.             responseFields: {
  3801.                 xml: "responseXML",
  3802.                 text: "responseText",
  3803.                 json: "responseJSON"
  3804.             },
  3805.             converters: {
  3806.                 "* text": String,
  3807.                 "text html": !0,
  3808.                 "text json": i.parseJSON,
  3809.                 "text xml": i.parseXML
  3810.             },
  3811.             flatOptions: {
  3812.                 url: !0,
  3813.                 context: !0
  3814.             }
  3815.         },
  3816.         ajaxSetup: function(n, t) {
  3817.             return t ? ai(ai(n, i.ajaxSettings), t) : ai(i.ajaxSettings, n)
  3818.         },
  3819.         ajaxPrefilter: pu(vu),
  3820.         ajaxTransport: pu(ci),
  3821.         ajax: function(n, t) {
  3822.             function p(n, t, s, h) {
  3823.                 var v, it, tt, p, nt, c = t;
  3824.                 2 !== e && (e = 2, b && clearTimeout(b), l = void 0, w = h || "", u.readyState = n > 0 ? 4 : 0, v = n >= 200 && 300 > n || 304 === n, s && (p = ae(r, u, s)), p = ve(r, p, u, v), v ? (r.ifModified && (nt = u.getResponseHeader("Last-Modified"), nt && (i.lastModified[f] = nt), nt = u.getResponseHeader("etag"), nt && (i.etag[f] = nt)), 204 === n || "HEAD" === r.type ? c = "nocontent" : 304 === n ? c = "notmodified" : (c = p.state, it = p.data, tt = p.error, v = !tt)) : (tt = c, (n || !c) && (c = "error", 0 > n && (n = 0))), u.status = n, u.statusText = (t || c) + "", v ? d.resolveWith(o, [it, c, u]) : d.rejectWith(o, [u, c, tt]), u.statusCode(y), y = void 0, a && k.trigger(v ? "ajaxSuccess" : "ajaxError", [u, r, v ? it : tt]), g.fireWith(o, [u, c]), a && (k.trigger("ajaxComplete", [u, r]), --i.active || i.event.trigger("ajaxStop")))
  3825.             }
  3826.             "object" == typeof n && (t = n, n = void 0);
  3827.             t = t || {};
  3828.             var l, f, w, v, b, s, a, h, r = i.ajaxSetup({}, t),
  3829.                 o = r.context || r,
  3830.                 k = r.context && (o.nodeType || o.jquery) ? i(o) : i.event,
  3831.                 d = i.Deferred(),
  3832.                 g = i.Callbacks("once memory"),
  3833.                 y = r.statusCode || {},
  3834.                 tt = {},
  3835.                 it = {},
  3836.                 e = 0,
  3837.                 rt = "canceled",
  3838.                 u = {
  3839.                     readyState: 0,
  3840.                     getResponseHeader: function(n) {
  3841.                         var t;
  3842.                         if (2 === e) {
  3843.                             if (!v)
  3844.                                 for (v = {}; t = he.exec(w);) v[t[1].toLowerCase()] = t[2];
  3845.                             t = v[n.toLowerCase()]
  3846.                         }
  3847.                         return null == t ? null : t
  3848.                     },
  3849.                     getAllResponseHeaders: function() {
  3850.                         return 2 === e ? w : null
  3851.                     },
  3852.                     setRequestHeader: function(n, t) {
  3853.                         var i = n.toLowerCase();
  3854.                         return e || (n = it[i] = it[i] || n, tt[n] = t), this
  3855.                     },
  3856.                     overrideMimeType: function(n) {
  3857.                         return e || (r.mimeType = n), this
  3858.                     },
  3859.                     statusCode: function(n) {
  3860.                         var t;
  3861.                         if (n)
  3862.                             if (2 > e)
  3863.                                 for (t in n) y[t] = [y[t], n[t]];
  3864.                             else u.always(n[u.status]);
  3865.                         return this
  3866.                     },
  3867.                     abort: function(n) {
  3868.                         var t = n || rt;
  3869.                         return l && l.abort(t), p(0, t), this
  3870.                     }
  3871.                 };
  3872.             if (d.promise(u).complete = g.add, u.success = u.done, u.error = u.fail, r.url = ((n || r.url || li) + "").replace(se, "").replace(le, nt[1] + "//"), r.type = t.method || t.type || r.method || r.type, r.dataTypes = i.trim(r.dataType || "*").toLowerCase().match(c) || [""], null == r.crossDomain && (s = au.exec(r.url.toLowerCase()), r.crossDomain = !(!s || s[1] === nt[1] && s[2] === nt[2] && (s[3] || ("http:" === s[1] ? "80" : "443")) === (nt[3] || ("http:" === nt[1] ? "80" : "443")))), r.data && r.processData && "string" != typeof r.data && (r.data = i.param(r.data, r.traditional)), wu(vu, r, t, u), 2 === e) return u;
  3873.             a = i.event && r.global;
  3874.             a && 0 == i.active++ && i.event.trigger("ajaxStart");
  3875.             r.type = r.type.toUpperCase();
  3876.             r.hasContent = !ce.test(r.type);
  3877.             f = r.url;
  3878.             r.hasContent || (r.data && (f = r.url += (dt.test(f) ? "&" : "?") + r.data, delete r.data), r.cache === !1 && (r.url = lu.test(f) ? f.replace(lu, "$1_=" + kt++) : f + (dt.test(f) ? "&" : "?") + "_=" + kt++));
  3879.             r.ifModified && (i.lastModified[f] && u.setRequestHeader("If-Modified-Since", i.lastModified[f]), i.etag[f] && u.setRequestHeader("If-None-Match", i.etag[f]));
  3880.             (r.data && r.hasContent && r.contentType !== !1 || t.contentType) && u.setRequestHeader("Content-Type", r.contentType);
  3881.             u.setRequestHeader("Accept", r.dataTypes[0] && r.accepts[r.dataTypes[0]] ? r.accepts[r.dataTypes[0]] + ("*" !== r.dataTypes[0] ? ", " + yu + "; q=0.01" : "") : r.accepts["*"]);
  3882.             for (h in r.headers) u.setRequestHeader(h, r.headers[h]);
  3883.             if (r.beforeSend && (r.beforeSend.call(o, u, r) === !1 || 2 === e)) return u.abort();
  3884.             rt = "abort";
  3885.             for (h in {
  3886.                     success: 1,
  3887.                     error: 1,
  3888.                     complete: 1
  3889.                 }) u[h](r[h]);
  3890.             if (l = wu(ci, r, t, u)) {
  3891.                 u.readyState = 1;
  3892.                 a && k.trigger("ajaxSend", [u, r]);
  3893.                 r.async && r.timeout > 0 && (b = setTimeout(function() {
  3894.                     u.abort("timeout")
  3895.                 }, r.timeout));
  3896.                 try {
  3897.                     e = 1;
  3898.                     l.send(tt, p)
  3899.                 } catch (ut) {
  3900.                     if (!(2 > e)) throw ut;
  3901.                     p(-1, ut)
  3902.                 }
  3903.             } else p(-1, "No Transport");
  3904.             return u
  3905.         },
  3906.         getJSON: function(n, t, r) {
  3907.             return i.get(n, t, r, "json")
  3908.         },
  3909.         getScript: function(n, t) {
  3910.             return i.get(n, void 0, t, "script")
  3911.         }
  3912.     });
  3913.     i.each(["get", "post"], function(n, t) {
  3914.         i[t] = function(n, r, u, f) {
  3915.             return i.isFunction(r) && (f = f || u, u = r, r = void 0), i.ajax({
  3916.                 url: n,
  3917.                 type: t,
  3918.                 dataType: f,
  3919.                 data: r,
  3920.                 success: u
  3921.             })
  3922.         }
  3923.     });
  3924.     i._evalUrl = function(n) {
  3925.         return i.ajax({
  3926.             url: n,
  3927.             type: "GET",
  3928.             dataType: "script",
  3929.             async: !1,
  3930.             global: !1,
  3931.             throws: !0
  3932.         })
  3933.     };
  3934.     i.fn.extend({
  3935.         wrapAll: function(n) {
  3936.             var t;
  3937.             return i.isFunction(n) ? this.each(function(t) {
  3938.                 i(this).wrapAll(n.call(this, t))
  3939.             }) : (this[0] && (t = i(n, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
  3940.                 for (var n = this; n.firstElementChild;) n = n.firstElementChild;
  3941.                 return n
  3942.             }).append(this)), this)
  3943.         },
  3944.         wrapInner: function(n) {
  3945.             return this.each(i.isFunction(n) ? function(t) {
  3946.                 i(this).wrapInner(n.call(this, t))
  3947.             } : function() {
  3948.                 var t = i(this),
  3949.                     r = t.contents();
  3950.                 r.length ? r.wrapAll(n) : t.append(n)
  3951.             })
  3952.         },
  3953.         wrap: function(n) {
  3954.             var t = i.isFunction(n);
  3955.             return this.each(function(r) {
  3956.                 i(this).wrapAll(t ? n.call(this, r) : n)
  3957.             })
  3958.         },
  3959.         unwrap: function() {
  3960.             return this.parent().each(function() {
  3961.                 i.nodeName(this, "body") || i(this).replaceWith(this.childNodes)
  3962.             }).end()
  3963.         }
  3964.     });
  3965.     i.expr.filters.hidden = function(n) {
  3966.         return n.offsetWidth <= 0 && n.offsetHeight <= 0
  3967.     };
  3968.     i.expr.filters.visible = function(n) {
  3969.         return !i.expr.filters.hidden(n)
  3970.     };
  3971.     var ye = /%20/g,
  3972.         pe = /\[\]$/,
  3973.         bu = /\r?\n/g,
  3974.         we = /^(?:submit|button|image|reset|file)$/i,
  3975.         be = /^(?:input|select|textarea|keygen)/i;
  3976.     i.param = function(n, t) {
  3977.         var r, u = [],
  3978.             f = function(n, t) {
  3979.                 t = i.isFunction(t) ? t() : null == t ? "" : t;
  3980.                 u[u.length] = encodeURIComponent(n) + "=" + encodeURIComponent(t)
  3981.             };
  3982.         if (void 0 === t && (t = i.ajaxSettings && i.ajaxSettings.traditional), i.isArray(n) || n.jquery && !i.isPlainObject(n)) i.each(n, function() {
  3983.             f(this.name, this.value)
  3984.         });
  3985.         else
  3986.             for (r in n) vi(r, n[r], t, f);
  3987.         return u.join("&").replace(ye, "+")
  3988.     };
  3989.     i.fn.extend({
  3990.         serialize: function() {
  3991.             return i.param(this.serializeArray())
  3992.         },
  3993.         serializeArray: function() {
  3994.             return this.map(function() {
  3995.                 var n = i.prop(this, "elements");
  3996.                 return n ? i.makeArray(n) : this
  3997.             }).filter(function() {
  3998.                 var n = this.type;
  3999.                 return this.name && !i(this).is(":disabled") && be.test(this.nodeName) && !we.test(n) && (this.checked || !er.test(n))
  4000.             }).map(function(n, t) {
  4001.                 var r = i(this).val();
  4002.                 return null == r ? null : i.isArray(r) ? i.map(r, function(n) {
  4003.                     return {
  4004.                         name: t.name,
  4005.                         value: n.replace(bu, "\r\n")
  4006.                     }
  4007.                 }) : {
  4008.                     name: t.name,
  4009.                     value: r.replace(bu, "\r\n")
  4010.                 }
  4011.             }).get()
  4012.         }
  4013.     });
  4014.     i.ajaxSettings.xhr = function() {
  4015.         try {
  4016.             return new XMLHttpRequest
  4017.         } catch (n) {}
  4018.     };
  4019.     var ke = 0,
  4020.         gt = {},
  4021.         de = {
  4022.             0: 200,
  4023.             1223: 204
  4024.         },
  4025.         ut = i.ajaxSettings.xhr();
  4026.     return n.attachEvent && n.attachEvent("onunload", function() {
  4027.         for (var n in gt) gt[n]()
  4028.     }), f.cors = !!ut && "withCredentials" in ut, f.ajax = ut = !!ut, i.ajaxTransport(function(n) {
  4029.         var t;
  4030.         if (f.cors || ut && !n.crossDomain) return {
  4031.             send: function(i, r) {
  4032.                 var f, u = n.xhr(),
  4033.                     e = ++ke;
  4034.                 if (u.open(n.type, n.url, n.async, n.username, n.password), n.xhrFields)
  4035.                     for (f in n.xhrFields) u[f] = n.xhrFields[f];
  4036.                 n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType);
  4037.                 n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest");
  4038.                 for (f in i) u.setRequestHeader(f, i[f]);
  4039.                 t = function(n) {
  4040.                     return function() {
  4041.                         t && (delete gt[e], t = u.onload = u.onerror = null, "abort" === n ? u.abort() : "error" === n ? r(u.status, u.statusText) : r(de[u.status] || u.status, u.statusText, "string" == typeof u.responseText ? {
  4042.                             text: u.responseText
  4043.                         } : void 0, u.getAllResponseHeaders()))
  4044.                     }
  4045.                 };
  4046.                 u.onload = t();
  4047.                 u.onerror = t("error");
  4048.                 t = gt[e] = t("abort");
  4049.                 try {
  4050.                     u.send(n.hasContent && n.data || null)
  4051.                 } catch (o) {
  4052.                     if (t) throw o;
  4053.                 }
  4054.             },
  4055.             abort: function() {
  4056.                 t && t()
  4057.             }
  4058.         }
  4059.     }), i.ajaxSetup({
  4060.         accepts: {
  4061.             script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
  4062.         },
  4063.         contents: {
  4064.             script: /(?:java|ecma)script/
  4065.         },
  4066.         converters: {
  4067.             "text script": function(n) {
  4068.                 return i.globalEval(n), n
  4069.             }
  4070.         }
  4071.     }), i.ajaxPrefilter("script", function(n) {
  4072.         void 0 === n.cache && (n.cache = !1);
  4073.         n.crossDomain && (n.type = "GET")
  4074.     }), i.ajaxTransport("script", function(n) {
  4075.         if (n.crossDomain) {
  4076.             var r, t;
  4077.             return {
  4078.                 send: function(f, e) {
  4079.                     r = i("<script>").prop({
  4080.                         async: !0,
  4081.                         charset: n.scriptCharset,
  4082.                         src: n.url
  4083.                     }).on("load error", t = function(n) {
  4084.                         r.remove();
  4085.                         t = null;
  4086.                         n && e("error" === n.type ? 404 : 200, n.type)
  4087.                     });
  4088.                     u.head.appendChild(r[0])
  4089.                 },
  4090.                 abort: function() {
  4091.                     t && t()
  4092.                 }
  4093.             }
  4094.         }
  4095.     }), yi = [], ni = /(=)\?(?=&|$)|\?\?/, i.ajaxSetup({
  4096.         jsonp: "callback",
  4097.         jsonpCallback: function() {
  4098.             var n = yi.pop() || i.expando + "_" + kt++;
  4099.             return this[n] = !0, n
  4100.         }
  4101.     }), i.ajaxPrefilter("json jsonp", function(t, r, u) {
  4102.         var f, o, e, s = t.jsonp !== !1 && (ni.test(t.url) ? "url" : "string" == typeof t.data && !(t.contentType || "").indexOf("application/x-www-form-urlencoded") && ni.test(t.data) && "data");
  4103.         if (s || "jsonp" === t.dataTypes[0]) return (f = t.jsonpCallback = i.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(ni, "$1" + f) : t.jsonp !== !1 && (t.url += (dt.test(t.url) ? "&" : "?") + t.jsonp + "=" + f), t.converters["script json"] = function() {
  4104.             return e || i.error(f + " was not called"), e[0]
  4105.         }, t.dataTypes[0] = "json", o = n[f], n[f] = function() {
  4106.             e = arguments
  4107.         }, u.always(function() {
  4108.             n[f] = o;
  4109.             t[f] && (t.jsonpCallback = r.jsonpCallback, yi.push(f));
  4110.             e && i.isFunction(o) && o(e[0]);
  4111.             e = o = void 0
  4112.         }), "script")
  4113.     }), i.parseHTML = function(n, t, r) {
  4114.         if (!n || "string" != typeof n) return null;
  4115.         "boolean" == typeof t && (r = t, t = !1);
  4116.         t = t || u;
  4117.         var f = gi.exec(n),
  4118.             e = !r && [];
  4119.         return f ? [t.createElement(f[1])] : (f = i.buildFragment([n], t, e), e && e.length && i(e).remove(), i.merge([], f.childNodes))
  4120.     }, pi = i.fn.load, i.fn.load = function(n, t, r) {
  4121.         if ("string" != typeof n && pi) return pi.apply(this, arguments);
  4122.         var u, o, s, f = this,
  4123.             e = n.indexOf(" ");
  4124.         return e >= 0 && (u = i.trim(n.slice(e)), n = n.slice(0, e)), i.isFunction(t) ? (r = t, t = void 0) : t && "object" == typeof t && (o = "POST"), f.length > 0 && i.ajax({
  4125.             url: n,
  4126.             type: o,
  4127.             dataType: "html",
  4128.             data: t
  4129.         }).done(function(n) {
  4130.             s = arguments;
  4131.             f.html(u ? i("<div>").append(i.parseHTML(n)).find(u) : n)
  4132.         }).complete(r && function(n, t) {
  4133.             f.each(r, s || [n.responseText, t, n])
  4134.         }), this
  4135.     }, i.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(n, t) {
  4136.         i.fn[t] = function(n) {
  4137.             return this.on(t, n)
  4138.         }
  4139.     }), i.expr.filters.animated = function(n) {
  4140.         return i.grep(i.timers, function(t) {
  4141.             return n === t.elem
  4142.         }).length
  4143.     }, wi = n.document.documentElement, i.offset = {
  4144.         setOffset: function(n, t, r) {
  4145.             var e, o, s, h, u, c, v, l = i.css(n, "position"),
  4146.                 a = i(n),
  4147.                 f = {};
  4148.             "static" === l && (n.style.position = "relative");
  4149.             u = a.offset();
  4150.             s = i.css(n, "top");
  4151.             c = i.css(n, "left");
  4152.             v = ("absolute" === l || "fixed" === l) && (s + c).indexOf("auto") > -1;
  4153.             v ? (e = a.position(), h = e.top, o = e.left) : (h = parseFloat(s) || 0, o = parseFloat(c) || 0);
  4154.             i.isFunction(t) && (t = t.call(n, r, u));
  4155.             null != t.top && (f.top = t.top - u.top + h);
  4156.             null != t.left && (f.left = t.left - u.left + o);
  4157.             "using" in t ? t.using.call(n, f) : a.css(f)
  4158.         }
  4159.     }, i.fn.extend({
  4160.         offset: function(n) {
  4161.             if (arguments.length) return void 0 === n ? this : this.each(function(t) {
  4162.                 i.offset.setOffset(this, n, t)
  4163.             });
  4164.             var r, f, t = this[0],
  4165.                 u = {
  4166.                     top: 0,
  4167.                     left: 0
  4168.                 },
  4169.                 e = t && t.ownerDocument;
  4170.             if (e) return r = e.documentElement, i.contains(r, t) ? (typeof t.getBoundingClientRect !== b && (u = t.getBoundingClientRect()), f = ku(e), {
  4171.                 top: u.top + f.pageYOffset - r.clientTop,
  4172.                 left: u.left + f.pageXOffset - r.clientLeft
  4173.             }) : u
  4174.         },
  4175.         position: function() {
  4176.             if (this[0]) {
  4177.                 var n, r, u = this[0],
  4178.                     t = {
  4179.                         top: 0,
  4180.                         left: 0
  4181.                     };
  4182.                 return "fixed" === i.css(u, "position") ? r = u.getBoundingClientRect() : (n = this.offsetParent(), r = this.offset(), i.nodeName(n[0], "html") || (t = n.offset()), t.top += i.css(n[0], "borderTopWidth", !0), t.left += i.css(n[0], "borderLeftWidth", !0)), {
  4183.                     top: r.top - t.top - i.css(u, "marginTop", !0),
  4184.                     left: r.left - t.left - i.css(u, "marginLeft", !0)
  4185.                 }
  4186.             }
  4187.         },
  4188.         offsetParent: function() {
  4189.             return this.map(function() {
  4190.                 for (var n = this.offsetParent || wi; n && !i.nodeName(n, "html") && "static" === i.css(n, "position");) n = n.offsetParent;
  4191.                 return n || wi
  4192.             })
  4193.         }
  4194.     }), i.each({
  4195.         scrollLeft: "pageXOffset",
  4196.         scrollTop: "pageYOffset"
  4197.     }, function(t, r) {
  4198.         var u = "pageYOffset" === r;
  4199.         i.fn[t] = function(i) {
  4200.             return l(this, function(t, i, f) {
  4201.                 var e = ku(t);
  4202.                 return void 0 === f ? e ? e[r] : t[i] : void(e ? e.scrollTo(u ? n.pageXOffset : f, u ? f : n.pageYOffset) : t[i] = f)
  4203.             }, t, i, arguments.length, null)
  4204.         }
  4205.     }), i.each(["top", "left"], function(n, t) {
  4206.         i.cssHooks[t] = br(f.pixelPosition, function(n, r) {
  4207.             if (r) return (r = it(n, t), hi.test(r) ? i(n).position()[t] + "px" : r)
  4208.         })
  4209.     }), i.each({
  4210.         Height: "height",
  4211.         Width: "width"
  4212.     }, function(n, t) {
  4213.         i.each({
  4214.             padding: "inner" + n,
  4215.             content: t,
  4216.             "": "outer" + n
  4217.         }, function(r, u) {
  4218.             i.fn[u] = function(u, f) {
  4219.                 var e = arguments.length && (r || "boolean" != typeof u),
  4220.                     o = r || (u === !0 || f === !0 ? "margin" : "border");
  4221.                 return l(this, function(t, r, u) {
  4222.                     var f;
  4223.                     return i.isWindow(t) ? t.document.documentElement["client" + n] : 9 === t.nodeType ? (f = t.documentElement, Math.max(t.body["scroll" + n], f["scroll" + n], t.body["offset" + n], f["offset" + n], f["client" + n])) : void 0 === u ? i.css(t, r, o) : i.style(t, r, u, o)
  4224.                 }, t, e ? u : void 0, e, null)
  4225.             }
  4226.         })
  4227.     }), i.fn.size = function() {
  4228.         return this.length
  4229.     }, i.fn.andSelf = i.fn.addBack, "function" == typeof define && define.amd && define("jquery", [], function() {
  4230.         return i
  4231.     }), du = n.jQuery, gu = n.$, i.noConflict = function(t) {
  4232.         return n.$ === i && (n.$ = gu), t && n.jQuery === i && (n.jQuery = du), i
  4233.     }, typeof t === b && (n.jQuery = n.$ = i), i
  4234. }),
  4235. function(n) {
  4236.     "function" == typeof define && define.amd ? define(["jquery"], n) : n(jQuery)
  4237. }(function(n) {
  4238.     function t(t, r) {
  4239.         var u, f, e, o = t.nodeName.toLowerCase();
  4240.         return "area" === o ? (u = t.parentNode, f = u.name, t.href && f && "map" === u.nodeName.toLowerCase() ? (e = n("img[usemap='#" + f + "']")[0], !!e && i(e)) : !1) : (/^(input|select|textarea|button|object)$/.test(o) ? !t.disabled : "a" === o ? t.href || r : r) && i(t)
  4241.     }
  4242.  
  4243.     function i(t) {
  4244.         return n.expr.filters.visible(t) && !n(t).parents().addBack().filter(function() {
  4245.             return "hidden" === n.css(this, "visibility")
  4246.         }).length
  4247.     }
  4248.     n.ui = n.ui || {};
  4249.     n.extend(n.ui, {
  4250.         version: "1.11.4",
  4251.         keyCode: {
  4252.             BACKSPACE: 8,
  4253.             COMMA: 188,
  4254.             DELETE: 46,
  4255.             DOWN: 40,
  4256.             END: 35,
  4257.             ENTER: 13,
  4258.             ESCAPE: 27,
  4259.             HOME: 36,
  4260.             LEFT: 37,
  4261.             PAGE_DOWN: 34,
  4262.             PAGE_UP: 33,
  4263.             PERIOD: 190,
  4264.             RIGHT: 39,
  4265.             SPACE: 32,
  4266.             TAB: 9,
  4267.             UP: 38
  4268.         }
  4269.     });
  4270.     n.fn.extend({
  4271.         scrollParent: function(t) {
  4272.             var i = this.css("position"),
  4273.                 u = "absolute" === i,
  4274.                 f = t ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
  4275.                 r = this.parents().filter(function() {
  4276.                     var t = n(this);
  4277.                     return u && "static" === t.css("position") ? !1 : f.test(t.css("overflow") + t.css("overflow-y") + t.css("overflow-x"))
  4278.                 }).eq(0);
  4279.             return "fixed" !== i && r.length ? r : n(this[0].ownerDocument || document)
  4280.         },
  4281.         uniqueId: function() {
  4282.             var n = 0;
  4283.             return function() {
  4284.                 return this.each(function() {
  4285.                     this.id || (this.id = "ui-id-" + ++n)
  4286.                 })
  4287.             }
  4288.         }(),
  4289.         removeUniqueId: function() {
  4290.             return this.each(function() {
  4291.                 /^ui-id-\d+$/.test(this.id) && n(this).removeAttr("id")
  4292.             })
  4293.         }
  4294.     });
  4295.     n.extend(n.expr[":"], {
  4296.         data: n.expr.createPseudo ? n.expr.createPseudo(function(t) {
  4297.             return function(i) {
  4298.                 return !!n.data(i, t)
  4299.             }
  4300.         }) : function(t, i, r) {
  4301.             return !!n.data(t, r[3])
  4302.         },
  4303.         focusable: function(i) {
  4304.             return t(i, !isNaN(n.attr(i, "tabindex")))
  4305.         },
  4306.         tabbable: function(i) {
  4307.             var r = n.attr(i, "tabindex"),
  4308.                 u = isNaN(r);
  4309.             return (u || r >= 0) && t(i, !u)
  4310.         }
  4311.     });
  4312.     n("<a>").outerWidth(1).jquery || n.each(["Width", "Height"], function(t, i) {
  4313.         function r(t, i, r, u) {
  4314.             return n.each(e, function() {
  4315.                 i -= parseFloat(n.css(t, "padding" + this)) || 0;
  4316.                 r && (i -= parseFloat(n.css(t, "border" + this + "Width")) || 0);
  4317.                 u && (i -= parseFloat(n.css(t, "margin" + this)) || 0)
  4318.             }), i
  4319.         }
  4320.         var e = "Width" === i ? ["Left", "Right"] : ["Top", "Bottom"],
  4321.             u = i.toLowerCase(),
  4322.             f = {
  4323.                 innerWidth: n.fn.innerWidth,
  4324.                 innerHeight: n.fn.innerHeight,
  4325.                 outerWidth: n.fn.outerWidth,
  4326.                 outerHeight: n.fn.outerHeight
  4327.             };
  4328.         n.fn["inner" + i] = function(t) {
  4329.             return void 0 === t ? f["inner" + i].call(this) : this.each(function() {
  4330.                 n(this).css(u, r(this, t) + "px")
  4331.             })
  4332.         };
  4333.         n.fn["outer" + i] = function(t, e) {
  4334.             return "number" != typeof t ? f["outer" + i].call(this, t) : this.each(function() {
  4335.                 n(this).css(u, r(this, t, !0, e) + "px")
  4336.             })
  4337.         }
  4338.     });
  4339.     n.fn.addBack || (n.fn.addBack = function(n) {
  4340.         return this.add(null == n ? this.prevObject : this.prevObject.filter(n))
  4341.     });
  4342.     n("<a>").data("a-b", "a").removeData("a-b").data("a-b") && (n.fn.removeData = function(t) {
  4343.         return function(i) {
  4344.             return arguments.length ? t.call(this, n.camelCase(i)) : t.call(this)
  4345.         }
  4346.     }(n.fn.removeData));
  4347.     n.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());
  4348.     n.fn.extend({
  4349.         focus: function(t) {
  4350.             return function(i, r) {
  4351.                 return "number" == typeof i ? this.each(function() {
  4352.                     var t = this;
  4353.                     setTimeout(function() {
  4354.                         n(t).focus();
  4355.                         r && r.call(t)
  4356.                     }, i)
  4357.                 }) : t.apply(this, arguments)
  4358.             }
  4359.         }(n.fn.focus),
  4360.         disableSelection: function() {
  4361.             var n = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown";
  4362.             return function() {
  4363.                 return this.bind(n + ".ui-disableSelection", function(n) {
  4364.                     n.preventDefault()
  4365.                 })
  4366.             }
  4367.         }(),
  4368.         enableSelection: function() {
  4369.             return this.unbind(".ui-disableSelection")
  4370.         },
  4371.         zIndex: function(t) {
  4372.             if (void 0 !== t) return this.css("zIndex", t);
  4373.             if (this.length)
  4374.                 for (var r, u, i = n(this[0]); i.length && i[0] !== document;) {
  4375.                     if (r = i.css("position"), ("absolute" === r || "relative" === r || "fixed" === r) && (u = parseInt(i.css("zIndex"), 10), !isNaN(u) && 0 !== u)) return u;
  4376.                     i = i.parent()
  4377.                 }
  4378.             return 0
  4379.         }
  4380.     });
  4381.     n.ui.plugin = {
  4382.         add: function(t, i, r) {
  4383.             var u, f = n.ui[t].prototype;
  4384.             for (u in r) f.plugins[u] = f.plugins[u] || [], f.plugins[u].push([i, r[u]])
  4385.         },
  4386.         call: function(n, t, i, r) {
  4387.             var u, f = n.plugins[t];
  4388.             if (f && (r || n.element[0].parentNode && 11 !== n.element[0].parentNode.nodeType))
  4389.                 for (u = 0; f.length > u; u++) n.options[f[u][0]] && f[u][1].apply(n.element, i)
  4390.         }
  4391.     };
  4392.     var u = 0,
  4393.         r = Array.prototype.slice;
  4394.     n.cleanData = function(t) {
  4395.         return function(i) {
  4396.             for (var r, u, f = 0; null != (u = i[f]); f++) try {
  4397.                 r = n._data(u, "events");
  4398.                 r && r.remove && n(u).triggerHandler("remove")
  4399.             } catch (e) {}
  4400.             t(i)
  4401.         }
  4402.     }(n.cleanData);
  4403.     n.widget = function(t, i, r) {
  4404.         var s, f, u, o, h = {},
  4405.             e = t.split(".")[0];
  4406.         return t = t.split(".")[1], s = e + "-" + t, r || (r = i, i = n.Widget), n.expr[":"][s.toLowerCase()] = function(t) {
  4407.             return !!n.data(t, s)
  4408.         }, n[e] = n[e] || {}, f = n[e][t], u = n[e][t] = function(n, t) {
  4409.             return this._createWidget ? (arguments.length && this._createWidget(n, t), void 0) : new u(n, t)
  4410.         }, n.extend(u, f, {
  4411.             version: r.version,
  4412.             _proto: n.extend({}, r),
  4413.             _childConstructors: []
  4414.         }), o = new i, o.options = n.widget.extend({}, o.options), n.each(r, function(t, r) {
  4415.             return n.isFunction(r) ? (h[t] = function() {
  4416.                 var n = function() {
  4417.                         return i.prototype[t].apply(this, arguments)
  4418.                     },
  4419.                     u = function(n) {
  4420.                         return i.prototype[t].apply(this, n)
  4421.                     };
  4422.                 return function() {
  4423.                     var t, i = this._super,
  4424.                         f = this._superApply;
  4425.                     return this._super = n, this._superApply = u, t = r.apply(this, arguments), this._super = i, this._superApply = f, t
  4426.                 }
  4427.             }(), void 0) : (h[t] = r, void 0)
  4428.         }), u.prototype = n.widget.extend(o, {
  4429.             widgetEventPrefix: f ? o.widgetEventPrefix || t : t
  4430.         }, h, {
  4431.             constructor: u,
  4432.             namespace: e,
  4433.             widgetName: t,
  4434.             widgetFullName: s
  4435.         }), f ? (n.each(f._childConstructors, function(t, i) {
  4436.             var r = i.prototype;
  4437.             n.widget(r.namespace + "." + r.widgetName, u, i._proto)
  4438.         }), delete f._childConstructors) : i._childConstructors.push(u), n.widget.bridge(t, u), u
  4439.     };
  4440.     n.widget.extend = function(t) {
  4441.         for (var i, u, e = r.call(arguments, 1), f = 0, o = e.length; o > f; f++)
  4442.             for (i in e[f]) u = e[f][i], e[f].hasOwnProperty(i) && void 0 !== u && (t[i] = n.isPlainObject(u) ? n.isPlainObject(t[i]) ? n.widget.extend({}, t[i], u) : n.widget.extend({}, u) : u);
  4443.         return t
  4444.     };
  4445.     n.widget.bridge = function(t, i) {
  4446.         var u = i.prototype.widgetFullName || t;
  4447.         n.fn[t] = function(f) {
  4448.             var s = "string" == typeof f,
  4449.                 o = r.call(arguments, 1),
  4450.                 e = this;
  4451.             return s ? this.each(function() {
  4452.                 var i, r = n.data(this, u);
  4453.                 return "instance" === f ? (e = r, !1) : r ? n.isFunction(r[f]) && "_" !== f.charAt(0) ? (i = r[f].apply(r, o), i !== r && void 0 !== i ? (e = i && i.jquery ? e.pushStack(i.get()) : i, !1) : void 0) : n.error("no such method '" + f + "' for " + t + " widget instance") : n.error("cannot call methods on " + t + " prior to initialization; attempted to call method '" + f + "'")
  4454.             }) : (o.length && (f = n.widget.extend.apply(null, [f].concat(o))), this.each(function() {
  4455.                 var t = n.data(this, u);
  4456.                 t ? (t.option(f || {}), t._init && t._init()) : n.data(this, u, new i(f, this))
  4457.             })), e
  4458.         }
  4459.     };
  4460.     n.Widget = function() {};
  4461.     n.Widget._childConstructors = [];
  4462.     n.Widget.prototype = {
  4463.         widgetName: "widget",
  4464.         widgetEventPrefix: "",
  4465.         defaultElement: "<div>",
  4466.         options: {
  4467.             disabled: !1,
  4468.             create: null
  4469.         },
  4470.         _createWidget: function(t, i) {
  4471.             i = n(i || this.defaultElement || this)[0];
  4472.             this.element = n(i);
  4473.             this.uuid = u++;
  4474.             this.eventNamespace = "." + this.widgetName + this.uuid;
  4475.             this.bindings = n();
  4476.             this.hoverable = n();
  4477.             this.focusable = n();
  4478.             i !== this && (n.data(i, this.widgetFullName, this), this._on(!0, this.element, {
  4479.                 remove: function(n) {
  4480.                     n.target === i && this.destroy()
  4481.                 }
  4482.             }), this.document = n(i.style ? i.ownerDocument : i.document || i), this.window = n(this.document[0].defaultView || this.document[0].parentWindow));
  4483.             this.options = n.widget.extend({}, this.options, this._getCreateOptions(), t);
  4484.             this._create();
  4485.             this._trigger("create", null, this._getCreateEventData());
  4486.             this._init()
  4487.         },
  4488.         _getCreateOptions: n.noop,
  4489.         _getCreateEventData: n.noop,
  4490.         _create: n.noop,
  4491.         _init: n.noop,
  4492.         destroy: function() {
  4493.             this._destroy();
  4494.             this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(n.camelCase(this.widgetFullName));
  4495.             this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled ui-state-disabled");
  4496.             this.bindings.unbind(this.eventNamespace);
  4497.             this.hoverable.removeClass("ui-state-hover");
  4498.             this.focusable.removeClass("ui-state-focus")
  4499.         },
  4500.         _destroy: n.noop,
  4501.         widget: function() {
  4502.             return this.element
  4503.         },
  4504.         option: function(t, i) {
  4505.             var r, u, f, e = t;
  4506.             if (0 === arguments.length) return n.widget.extend({}, this.options);
  4507.             if ("string" == typeof t)
  4508.                 if (e = {}, r = t.split("."), t = r.shift(), r.length) {
  4509.                     for (u = e[t] = n.widget.extend({}, this.options[t]), f = 0; r.length - 1 > f; f++) u[r[f]] = u[r[f]] || {}, u = u[r[f]];
  4510.                     if (t = r.pop(), 1 === arguments.length) return void 0 === u[t] ? null : u[t];
  4511.                     u[t] = i
  4512.                 } else {
  4513.                     if (1 === arguments.length) return void 0 === this.options[t] ? null : this.options[t];
  4514.                     e[t] = i
  4515.                 }
  4516.             return this._setOptions(e), this
  4517.         },
  4518.         _setOptions: function(n) {
  4519.             for (var t in n) this._setOption(t, n[t]);
  4520.             return this
  4521.         },
  4522.         _setOption: function(n, t) {
  4523.             return this.options[n] = t, "disabled" === n && (this.widget().toggleClass(this.widgetFullName + "-disabled", !!t), t && (this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus"))), this
  4524.         },
  4525.         enable: function() {
  4526.             return this._setOptions({
  4527.                 disabled: !1
  4528.             })
  4529.         },
  4530.         disable: function() {
  4531.             return this._setOptions({
  4532.                 disabled: !0
  4533.             })
  4534.         },
  4535.         _on: function(t, i, r) {
  4536.             var f, u = this;
  4537.             "boolean" != typeof t && (r = i, i = t, t = !1);
  4538.             r ? (i = f = n(i), this.bindings = this.bindings.add(i)) : (r = i, i = this.element, f = this.widget());
  4539.             n.each(r, function(r, e) {
  4540.                 function o() {
  4541.                     if (t || u.options.disabled !== !0 && !n(this).hasClass("ui-state-disabled")) return ("string" == typeof e ? u[e] : e).apply(u, arguments)
  4542.                 }
  4543.                 "string" != typeof e && (o.guid = e.guid = e.guid || o.guid || n.guid++);
  4544.                 var s = r.match(/^([\w:-]*)\s*(.*)$/),
  4545.                     h = s[1] + u.eventNamespace,
  4546.                     c = s[2];
  4547.                 c ? f.delegate(c, h, o) : i.bind(h, o)
  4548.             })
  4549.         },
  4550.         _off: function(t, i) {
  4551.             i = (i || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace;
  4552.             t.unbind(i).undelegate(i);
  4553.             this.bindings = n(this.bindings.not(t).get());
  4554.             this.focusable = n(this.focusable.not(t).get());
  4555.             this.hoverable = n(this.hoverable.not(t).get())
  4556.         },
  4557.         _delay: function(n, t) {
  4558.             function r() {
  4559.                 return ("string" == typeof n ? i[n] : n).apply(i, arguments)
  4560.             }
  4561.             var i = this;
  4562.             return setTimeout(r, t || 0)
  4563.         },
  4564.         _hoverable: function(t) {
  4565.             this.hoverable = this.hoverable.add(t);
  4566.             this._on(t, {
  4567.                 mouseenter: function(t) {
  4568.                     n(t.currentTarget).addClass("ui-state-hover")
  4569.                 },
  4570.                 mouseleave: function(t) {
  4571.                     n(t.currentTarget).removeClass("ui-state-hover")
  4572.                 }
  4573.             })
  4574.         },
  4575.         _focusable: function(t) {
  4576.             this.focusable = this.focusable.add(t);
  4577.             this._on(t, {
  4578.                 focusin: function(t) {
  4579.                     n(t.currentTarget).addClass("ui-state-focus")
  4580.                 },
  4581.                 focusout: function(t) {
  4582.                     n(t.currentTarget).removeClass("ui-state-focus")
  4583.                 }
  4584.             })
  4585.         },
  4586.         _trigger: function(t, i, r) {
  4587.             var u, f, e = this.options[t];
  4588.             if (r = r || {}, i = n.Event(i), i.type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), i.target = this.element[0], f = i.originalEvent)
  4589.                 for (u in f) u in i || (i[u] = f[u]);
  4590.             return this.element.trigger(i, r), !(n.isFunction(e) && e.apply(this.element[0], [i].concat(r)) === !1 || i.isDefaultPrevented())
  4591.         }
  4592.     };
  4593.     n.each({
  4594.         show: "fadeIn",
  4595.         hide: "fadeOut"
  4596.     }, function(t, i) {
  4597.         n.Widget.prototype["_" + t] = function(r, u, f) {
  4598.             "string" == typeof u && (u = {
  4599.                 effect: u
  4600.             });
  4601.             var o, e = u ? u === !0 || "number" == typeof u ? i : u.effect || i : t;
  4602.             u = u || {};
  4603.             "number" == typeof u && (u = {
  4604.                 duration: u
  4605.             });
  4606.             o = !n.isEmptyObject(u);
  4607.             u.complete = f;
  4608.             u.delay && r.delay(u.delay);
  4609.             o && n.effects && n.effects.effect[e] ? r[t](u) : e !== t && r[e] ? r[e](u.duration, u.easing, f) : r.queue(function(i) {
  4610.                 n(this)[t]();
  4611.                 f && f.call(r[0]);
  4612.                 i()
  4613.             })
  4614.         }
  4615.     });
  4616.     n.widget,
  4617.         function() {
  4618.             function f(n, t, i) {
  4619.                 return [parseFloat(n[0]) * (a.test(n[0]) ? t / 100 : 1), parseFloat(n[1]) * (a.test(n[1]) ? i / 100 : 1)]
  4620.             }
  4621.  
  4622.             function i(t, i) {
  4623.                 return parseInt(n.css(t, i), 10) || 0
  4624.             }
  4625.  
  4626.             function v(t) {
  4627.                 var i = t[0];
  4628.                 return 9 === i.nodeType ? {
  4629.                     width: t.width(),
  4630.                     height: t.height(),
  4631.                     offset: {
  4632.                         top: 0,
  4633.                         left: 0
  4634.                     }
  4635.                 } : n.isWindow(i) ? {
  4636.                     width: t.width(),
  4637.                     height: t.height(),
  4638.                     offset: {
  4639.                         top: t.scrollTop(),
  4640.                         left: t.scrollLeft()
  4641.                     }
  4642.                 } : i.preventDefault ? {
  4643.                     width: 0,
  4644.                     height: 0,
  4645.                     offset: {
  4646.                         top: i.pageY,
  4647.                         left: i.pageX
  4648.                     }
  4649.                 } : {
  4650.                     width: t.outerWidth(),
  4651.                     height: t.outerHeight(),
  4652.                     offset: t.offset()
  4653.                 }
  4654.             }
  4655.             n.ui = n.ui || {};
  4656.             var u, e, r = Math.max,
  4657.                 t = Math.abs,
  4658.                 o = Math.round,
  4659.                 s = /left|center|right/,
  4660.                 h = /top|center|bottom/,
  4661.                 c = /[\+\-]\d+(\.[\d]+)?%?/,
  4662.                 l = /^\w+/,
  4663.                 a = /%$/,
  4664.                 y = n.fn.position;
  4665.             n.position = {
  4666.                 scrollbarWidth: function() {
  4667.                     if (void 0 !== u) return u;
  4668.                     var r, i, t = n("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'><\/div><\/div>"),
  4669.                         f = t.children()[0];
  4670.                     return n("body").append(t), r = f.offsetWidth, t.css("overflow", "scroll"), i = f.offsetWidth, r === i && (i = t[0].clientWidth), t.remove(), u = r - i
  4671.                 },
  4672.                 getScrollInfo: function(t) {
  4673.                     var i = t.isWindow || t.isDocument ? "" : t.element.css("overflow-x"),
  4674.                         r = t.isWindow || t.isDocument ? "" : t.element.css("overflow-y"),
  4675.                         u = "scroll" === i || "auto" === i && t.width < t.element[0].scrollWidth,
  4676.                         f = "scroll" === r || "auto" === r && t.height < t.element[0].scrollHeight;
  4677.                     return {
  4678.                         width: f ? n.position.scrollbarWidth() : 0,
  4679.                         height: u ? n.position.scrollbarWidth() : 0
  4680.                     }
  4681.                 },
  4682.                 getWithinInfo: function(t) {
  4683.                     var i = n(t || window),
  4684.                         r = n.isWindow(i[0]),
  4685.                         u = !!i[0] && 9 === i[0].nodeType;
  4686.                     return {
  4687.                         element: i,
  4688.                         isWindow: r,
  4689.                         isDocument: u,
  4690.                         offset: i.offset() || {
  4691.                             left: 0,
  4692.                             top: 0
  4693.                         },
  4694.                         scrollLeft: i.scrollLeft(),
  4695.                         scrollTop: i.scrollTop(),
  4696.                         width: r || u ? i.width() : i.outerWidth(),
  4697.                         height: r || u ? i.height() : i.outerHeight()
  4698.                     }
  4699.                 }
  4700.             };
  4701.             n.fn.position = function(u) {
  4702.                 if (!u || !u.of) return y.apply(this, arguments);
  4703.                 u = n.extend({}, u);
  4704.                 var k, a, p, b, w, g, nt = n(u.of),
  4705.                     it = n.position.getWithinInfo(u.within),
  4706.                     rt = n.position.getScrollInfo(it),
  4707.                     d = (u.collision || "flip").split(" "),
  4708.                     tt = {};
  4709.                 return g = v(nt), nt[0].preventDefault && (u.at = "left top"), a = g.width, p = g.height, b = g.offset, w = n.extend({}, b), n.each(["my", "at"], function() {
  4710.                     var t, i, n = (u[this] || "").split(" ");
  4711.                     1 === n.length && (n = s.test(n[0]) ? n.concat(["center"]) : h.test(n[0]) ? ["center"].concat(n) : ["center", "center"]);
  4712.                     n[0] = s.test(n[0]) ? n[0] : "center";
  4713.                     n[1] = h.test(n[1]) ? n[1] : "center";
  4714.                     t = c.exec(n[0]);
  4715.                     i = c.exec(n[1]);
  4716.                     tt[this] = [t ? t[0] : 0, i ? i[0] : 0];
  4717.                     u[this] = [l.exec(n[0])[0], l.exec(n[1])[0]]
  4718.                 }), 1 === d.length && (d[1] = d[0]), "right" === u.at[0] ? w.left += a : "center" === u.at[0] && (w.left += a / 2), "bottom" === u.at[1] ? w.top += p : "center" === u.at[1] && (w.top += p / 2), k = f(tt.at, a, p), w.left += k[0], w.top += k[1], this.each(function() {
  4719.                     var y, g, h = n(this),
  4720.                         c = h.outerWidth(),
  4721.                         l = h.outerHeight(),
  4722.                         ut = i(this, "marginLeft"),
  4723.                         ft = i(this, "marginTop"),
  4724.                         et = c + ut + i(this, "marginRight") + rt.width,
  4725.                         ot = l + ft + i(this, "marginBottom") + rt.height,
  4726.                         s = n.extend({}, w),
  4727.                         v = f(tt.my, h.outerWidth(), h.outerHeight());
  4728.                     "right" === u.my[0] ? s.left -= c : "center" === u.my[0] && (s.left -= c / 2);
  4729.                     "bottom" === u.my[1] ? s.top -= l : "center" === u.my[1] && (s.top -= l / 2);
  4730.                     s.left += v[0];
  4731.                     s.top += v[1];
  4732.                     e || (s.left = o(s.left), s.top = o(s.top));
  4733.                     y = {
  4734.                         marginLeft: ut,
  4735.                         marginTop: ft
  4736.                     };
  4737.                     n.each(["left", "top"], function(t, i) {
  4738.                         n.ui.position[d[t]] && n.ui.position[d[t]][i](s, {
  4739.                             targetWidth: a,
  4740.                             targetHeight: p,
  4741.                             elemWidth: c,
  4742.                             elemHeight: l,
  4743.                             collisionPosition: y,
  4744.                             collisionWidth: et,
  4745.                             collisionHeight: ot,
  4746.                             offset: [k[0] + v[0], k[1] + v[1]],
  4747.                             my: u.my,
  4748.                             at: u.at,
  4749.                             within: it,
  4750.                             elem: h
  4751.                         })
  4752.                     });
  4753.                     u.using && (g = function(n) {
  4754.                         var i = b.left - s.left,
  4755.                             o = i + a - c,
  4756.                             f = b.top - s.top,
  4757.                             v = f + p - l,
  4758.                             e = {
  4759.                                 target: {
  4760.                                     element: nt,
  4761.                                     left: b.left,
  4762.                                     top: b.top,
  4763.                                     width: a,
  4764.                                     height: p
  4765.                                 },
  4766.                                 element: {
  4767.                                     element: h,
  4768.                                     left: s.left,
  4769.                                     top: s.top,
  4770.                                     width: c,
  4771.                                     height: l
  4772.                                 },
  4773.                                 horizontal: 0 > o ? "left" : i > 0 ? "right" : "center",
  4774.                                 vertical: 0 > v ? "top" : f > 0 ? "bottom" : "middle"
  4775.                             };
  4776.                         c > a && a > t(i + o) && (e.horizontal = "center");
  4777.                         l > p && p > t(f + v) && (e.vertical = "middle");
  4778.                         e.important = r(t(i), t(o)) > r(t(f), t(v)) ? "horizontal" : "vertical";
  4779.                         u.using.call(this, n, e)
  4780.                     });
  4781.                     h.offset(n.extend(s, {
  4782.                         using: g
  4783.                     }))
  4784.                 })
  4785.             };
  4786.             n.ui.position = {
  4787.                     fit: {
  4788.                         left: function(n, t) {
  4789.                             var h, e = t.within,
  4790.                                 u = e.isWindow ? e.scrollLeft : e.offset.left,
  4791.                                 o = e.width,
  4792.                                 s = n.left - t.collisionPosition.marginLeft,
  4793.                                 i = u - s,
  4794.                                 f = s + t.collisionWidth - o - u;
  4795.                             t.collisionWidth > o ? i > 0 && 0 >= f ? (h = n.left + i + t.collisionWidth - o - u, n.left += i - h) : n.left = f > 0 && 0 >= i ? u : i > f ? u + o - t.collisionWidth : u : i > 0 ? n.left += i : f > 0 ? n.left -= f : n.left = r(n.left - s, n.left)
  4796.                         },
  4797.                         top: function(n, t) {
  4798.                             var h, o = t.within,
  4799.                                 u = o.isWindow ? o.scrollTop : o.offset.top,
  4800.                                 e = t.within.height,
  4801.                                 s = n.top - t.collisionPosition.marginTop,
  4802.                                 i = u - s,
  4803.                                 f = s + t.collisionHeight - e - u;
  4804.                             t.collisionHeight > e ? i > 0 && 0 >= f ? (h = n.top + i + t.collisionHeight - e - u, n.top += i - h) : n.top = f > 0 && 0 >= i ? u : i > f ? u + e - t.collisionHeight : u : i > 0 ? n.top += i : f > 0 ? n.top -= f : n.top = r(n.top - s, n.top)
  4805.                         }
  4806.                     },
  4807.                     flip: {
  4808.                         left: function(n, i) {
  4809.                             var o, s, r = i.within,
  4810.                                 y = r.offset.left + r.scrollLeft,
  4811.                                 c = r.width,
  4812.                                 h = r.isWindow ? r.scrollLeft : r.offset.left,
  4813.                                 l = n.left - i.collisionPosition.marginLeft,
  4814.                                 a = l - h,
  4815.                                 v = l + i.collisionWidth - c - h,
  4816.                                 u = "left" === i.my[0] ? -i.elemWidth : "right" === i.my[0] ? i.elemWidth : 0,
  4817.                                 f = "left" === i.at[0] ? i.targetWidth : "right" === i.at[0] ? -i.targetWidth : 0,
  4818.                                 e = -2 * i.offset[0];
  4819.                             0 > a ? (o = n.left + u + f + e + i.collisionWidth - c - y, (0 > o || t(a) > o) && (n.left += u + f + e)) : v > 0 && (s = n.left - i.collisionPosition.marginLeft + u + f + e - h, (s > 0 || v > t(s)) && (n.left += u + f + e))
  4820.                         },
  4821.                         top: function(n, i) {
  4822.                             var o, s, r = i.within,
  4823.                                 y = r.offset.top + r.scrollTop,
  4824.                                 c = r.height,
  4825.                                 h = r.isWindow ? r.scrollTop : r.offset.top,
  4826.                                 l = n.top - i.collisionPosition.marginTop,
  4827.                                 a = l - h,
  4828.                                 v = l + i.collisionHeight - c - h,
  4829.                                 p = "top" === i.my[1],
  4830.                                 u = p ? -i.elemHeight : "bottom" === i.my[1] ? i.elemHeight : 0,
  4831.                                 f = "top" === i.at[1] ? i.targetHeight : "bottom" === i.at[1] ? -i.targetHeight : 0,
  4832.                                 e = -2 * i.offset[1];
  4833.                             0 > a ? (s = n.top + u + f + e + i.collisionHeight - c - y, (0 > s || t(a) > s) && (n.top += u + f + e)) : v > 0 && (o = n.top - i.collisionPosition.marginTop + u + f + e - h, (o > 0 || v > t(o)) && (n.top += u + f + e))
  4834.                         }
  4835.                     },
  4836.                     flipfit: {
  4837.                         left: function() {
  4838.                             n.ui.position.flip.left.apply(this, arguments);
  4839.                             n.ui.position.fit.left.apply(this, arguments)
  4840.                         },
  4841.                         top: function() {
  4842.                             n.ui.position.flip.top.apply(this, arguments);
  4843.                             n.ui.position.fit.top.apply(this, arguments)
  4844.                         }
  4845.                     }
  4846.                 },
  4847.                 function() {
  4848.                     var t, i, r, u, f, o = document.getElementsByTagName("body")[0],
  4849.                         s = document.createElement("div");
  4850.                     t = document.createElement(o ? "div" : "body");
  4851.                     r = {
  4852.                         visibility: "hidden",
  4853.                         width: 0,
  4854.                         height: 0,
  4855.                         border: 0,
  4856.                         margin: 0,
  4857.                         background: "none"
  4858.                     };
  4859.                     o && n.extend(r, {
  4860.                         position: "absolute",
  4861.                         left: "-1000px",
  4862.                         top: "-1000px"
  4863.                     });
  4864.                     for (f in r) t.style[f] = r[f];
  4865.                     t.appendChild(s);
  4866.                     i = o || document.documentElement;
  4867.                     i.insertBefore(t, i.firstChild);
  4868.                     s.style.cssText = "position: absolute; left: 10.7432222px;";
  4869.                     u = n(s).offset().left;
  4870.                     e = u > 10 && 11 > u;
  4871.                     t.innerHTML = "";
  4872.                     i.removeChild(t)
  4873.                 }()
  4874.         }();
  4875.     n.ui.position;
  4876.     n.widget("ui.menu", {
  4877.         version: "1.11.4",
  4878.         defaultElement: "<ul>",
  4879.         delay: 300,
  4880.         options: {
  4881.             icons: {
  4882.                 submenu: "ui-icon-carat-1-e"
  4883.             },
  4884.             items: "> *",
  4885.             menus: "ul",
  4886.             position: {
  4887.                 my: "left-1 top",
  4888.                 at: "right top"
  4889.             },
  4890.             role: "menu",
  4891.             blur: null,
  4892.             focus: null,
  4893.             select: null
  4894.         },
  4895.         _create: function() {
  4896.             this.activeMenu = this.element;
  4897.             this.mouseHandled = !1;
  4898.             this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons", !!this.element.find(".ui-icon").length).attr({
  4899.                 role: this.options.role,
  4900.                 tabIndex: 0
  4901.             });
  4902.             this.options.disabled && this.element.addClass("ui-state-disabled").attr("aria-disabled", "true");
  4903.             this._on({
  4904.                 "mousedown .ui-menu-item": function(n) {
  4905.                     n.preventDefault()
  4906.                 },
  4907.                 "click .ui-menu-item": function(t) {
  4908.                     var i = n(t.target);
  4909.                     !this.mouseHandled && i.not(".ui-state-disabled").length && (this.select(t), t.isPropagationStopped() || (this.mouseHandled = !0), i.has(".ui-menu").length ? this.expand(t) : !this.element.is(":focus") && n(this.document[0].activeElement).closest(".ui-menu").length && (this.element.trigger("focus", [!0]), this.active && 1 === this.active.parents(".ui-menu").length && clearTimeout(this.timer)))
  4910.                 },
  4911.                 "mouseenter .ui-menu-item": function(t) {
  4912.                     if (!this.previousFilter) {
  4913.                         var i = n(t.currentTarget);
  4914.                         i.siblings(".ui-state-active").removeClass("ui-state-active");
  4915.                         this.focus(t, i)
  4916.                     }
  4917.                 },
  4918.                 mouseleave: "collapseAll",
  4919.                 "mouseleave .ui-menu": "collapseAll",
  4920.                 focus: function(n, t) {
  4921.                     var i = this.active || this.element.find(this.options.items).eq(0);
  4922.                     t || this.focus(n, i)
  4923.                 },
  4924.                 blur: function(t) {
  4925.                     this._delay(function() {
  4926.                         n.contains(this.element[0], this.document[0].activeElement) || this.collapseAll(t)
  4927.                     })
  4928.                 },
  4929.                 keydown: "_keydown"
  4930.             });
  4931.             this.refresh();
  4932.             this._on(this.document, {
  4933.                 click: function(n) {
  4934.                     this._closeOnDocumentClick(n) && this.collapseAll(n);
  4935.                     this.mouseHandled = !1
  4936.                 }
  4937.             })
  4938.         },
  4939.         _destroy: function() {
  4940.             this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show();
  4941.             this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function() {
  4942.                 var t = n(this);
  4943.                 t.data("ui-menu-submenu-carat") && t.remove()
  4944.             });
  4945.             this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")
  4946.         },
  4947.         _keydown: function(t) {
  4948.             var i, u, r, f, e = !0;
  4949.             switch (t.keyCode) {
  4950.                 case n.ui.keyCode.PAGE_UP:
  4951.                     this.previousPage(t);
  4952.                     break;
  4953.                 case n.ui.keyCode.PAGE_DOWN:
  4954.                     this.nextPage(t);
  4955.                     break;
  4956.                 case n.ui.keyCode.HOME:
  4957.                     this._move("first", "first", t);
  4958.                     break;
  4959.                 case n.ui.keyCode.END:
  4960.                     this._move("last", "last", t);
  4961.                     break;
  4962.                 case n.ui.keyCode.UP:
  4963.                     this.previous(t);
  4964.                     break;
  4965.                 case n.ui.keyCode.DOWN:
  4966.                     this.next(t);
  4967.                     break;
  4968.                 case n.ui.keyCode.LEFT:
  4969.                     this.collapse(t);
  4970.                     break;
  4971.                 case n.ui.keyCode.RIGHT:
  4972.                     this.active && !this.active.is(".ui-state-disabled") && this.expand(t);
  4973.                     break;
  4974.                 case n.ui.keyCode.ENTER:
  4975.                 case n.ui.keyCode.SPACE:
  4976.                     this._activate(t);
  4977.                     break;
  4978.                 case n.ui.keyCode.ESCAPE:
  4979.                     this.collapse(t);
  4980.                     break;
  4981.                 default:
  4982.                     e = !1;
  4983.                     u = this.previousFilter || "";
  4984.                     r = String.fromCharCode(t.keyCode);
  4985.                     f = !1;
  4986.                     clearTimeout(this.filterTimer);
  4987.                     r === u ? f = !0 : r = u + r;
  4988.                     i = this._filterMenuItems(r);
  4989.                     i = f && -1 !== i.index(this.active.next()) ? this.active.nextAll(".ui-menu-item") : i;
  4990.                     i.length || (r = String.fromCharCode(t.keyCode), i = this._filterMenuItems(r));
  4991.                     i.length ? (this.focus(t, i), this.previousFilter = r, this.filterTimer = this._delay(function() {
  4992.                         delete this.previousFilter
  4993.                     }, 1e3)) : delete this.previousFilter
  4994.             }
  4995.             e && t.preventDefault()
  4996.         },
  4997.         _activate: function(n) {
  4998.             this.active.is(".ui-state-disabled") || (this.active.is("[aria-haspopup='true']") ? this.expand(n) : this.select(n))
  4999.         },
  5000.         refresh: function() {
  5001.             var i, t, u = this,
  5002.                 f = this.options.icons.submenu,
  5003.                 r = this.element.find(this.options.menus);
  5004.             this.element.toggleClass("ui-menu-icons", !!this.element.find(".ui-icon").length);
  5005.             r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({
  5006.                 role: this.options.role,
  5007.                 "aria-hidden": "true",
  5008.                 "aria-expanded": "false"
  5009.             }).each(function() {
  5010.                 var t = n(this),
  5011.                     i = t.parent(),
  5012.                     r = n("<span>").addClass("ui-menu-icon ui-icon " + f).data("ui-menu-submenu-carat", !0);
  5013.                 i.attr("aria-haspopup", "true").prepend(r);
  5014.                 t.attr("aria-labelledby", i.attr("id"))
  5015.             });
  5016.             i = r.add(this.element);
  5017.             t = i.find(this.options.items);
  5018.             t.not(".ui-menu-item").each(function() {
  5019.                 var t = n(this);
  5020.                 u._isDivider(t) && t.addClass("ui-widget-content ui-menu-divider")
  5021.             });
  5022.             t.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({
  5023.                 tabIndex: -1,
  5024.                 role: this._itemRole()
  5025.             });
  5026.             t.filter(".ui-state-disabled").attr("aria-disabled", "true");
  5027.             this.active && !n.contains(this.element[0], this.active[0]) && this.blur()
  5028.         },
  5029.         _itemRole: function() {
  5030.             return {
  5031.                 menu: "menuitem",
  5032.                 listbox: "option"
  5033.             }[this.options.role]
  5034.         },
  5035.         _setOption: function(n, t) {
  5036.             "icons" === n && this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu);
  5037.             "disabled" === n && this.element.toggleClass("ui-state-disabled", !!t).attr("aria-disabled", t);
  5038.             this._super(n, t)
  5039.         },
  5040.         focus: function(n, t) {
  5041.             var i, r;
  5042.             this.blur(n, n && "focus" === n.type);
  5043.             this._scrollIntoView(t);
  5044.             this.active = t.first();
  5045.             r = this.active.addClass("ui-state-focus").removeClass("ui-state-active");
  5046.             this.options.role && this.element.attr("aria-activedescendant", r.attr("id"));
  5047.             this.active.parent().closest(".ui-menu-item").addClass("ui-state-active");
  5048.             n && "keydown" === n.type ? this._close() : this.timer = this._delay(function() {
  5049.                 this._close()
  5050.             }, this.delay);
  5051.             i = t.children(".ui-menu");
  5052.             i.length && n && /^mouse/.test(n.type) && this._startOpening(i);
  5053.             this.activeMenu = t.parent();
  5054.             this._trigger("focus", n, {
  5055.                 item: t
  5056.             })
  5057.         },
  5058.         _scrollIntoView: function(t) {
  5059.             var e, o, i, r, u, f;
  5060.             this._hasScroll() && (e = parseFloat(n.css(this.activeMenu[0], "borderTopWidth")) || 0, o = parseFloat(n.css(this.activeMenu[0], "paddingTop")) || 0, i = t.offset().top - this.activeMenu.offset().top - e - o, r = this.activeMenu.scrollTop(), u = this.activeMenu.height(), f = t.outerHeight(), 0 > i ? this.activeMenu.scrollTop(r + i) : i + f > u && this.activeMenu.scrollTop(r + i - u + f))
  5061.         },
  5062.         blur: function(n, t) {
  5063.             t || clearTimeout(this.timer);
  5064.             this.active && (this.active.removeClass("ui-state-focus"), this.active = null, this._trigger("blur", n, {
  5065.                 item: this.active
  5066.             }))
  5067.         },
  5068.         _startOpening: function(n) {
  5069.             clearTimeout(this.timer);
  5070.             "true" === n.attr("aria-hidden") && (this.timer = this._delay(function() {
  5071.                 this._close();
  5072.                 this._open(n)
  5073.             }, this.delay))
  5074.         },
  5075.         _open: function(t) {
  5076.             var i = n.extend({
  5077.                 of: this.active
  5078.             }, this.options.position);
  5079.             clearTimeout(this.timer);
  5080.             this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden", "true");
  5081.             t.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(i)
  5082.         },
  5083.         collapseAll: function(t, i) {
  5084.             clearTimeout(this.timer);
  5085.             this.timer = this._delay(function() {
  5086.                 var r = i ? this.element : n(t && t.target).closest(this.element.find(".ui-menu"));
  5087.                 r.length || (r = this.element);
  5088.                 this._close(r);
  5089.                 this.blur(t);
  5090.                 this.activeMenu = r
  5091.             }, this.delay)
  5092.         },
  5093.         _close: function(n) {
  5094.             n || (n = this.active ? this.active.parent() : this.element);
  5095.             n.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")
  5096.         },
  5097.         _closeOnDocumentClick: function(t) {
  5098.             return !n(t.target).closest(".ui-menu").length
  5099.         },
  5100.         _isDivider: function(n) {
  5101.             return !/[^\-\u2014\u2013\s]/.test(n.text())
  5102.         },
  5103.         collapse: function(n) {
  5104.             var t = this.active && this.active.parent().closest(".ui-menu-item", this.element);
  5105.             t && t.length && (this._close(), this.focus(n, t))
  5106.         },
  5107.         expand: function(n) {
  5108.             var t = this.active && this.active.children(".ui-menu ").find(this.options.items).first();
  5109.             t && t.length && (this._open(t.parent()), this._delay(function() {
  5110.                 this.focus(n, t)
  5111.             }))
  5112.         },
  5113.         next: function(n) {
  5114.             this._move("next", "first", n)
  5115.         },
  5116.         previous: function(n) {
  5117.             this._move("prev", "last", n)
  5118.         },
  5119.         isFirstItem: function() {
  5120.             return this.active && !this.active.prevAll(".ui-menu-item").length
  5121.         },
  5122.         isLastItem: function() {
  5123.             return this.active && !this.active.nextAll(".ui-menu-item").length
  5124.         },
  5125.         _move: function(n, t, i) {
  5126.             var r;
  5127.             this.active && (r = "first" === n || "last" === n ? this.active["first" === n ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1) : this.active[n + "All"](".ui-menu-item").eq(0));
  5128.             r && r.length && this.active || (r = this.activeMenu.find(this.options.items)[t]());
  5129.             this.focus(i, r)
  5130.         },
  5131.         nextPage: function(t) {
  5132.             var i, r, u;
  5133.             return this.active ? (this.isLastItem() || (this._hasScroll() ? (r = this.active.offset().top, u = this.element.height(), this.active.nextAll(".ui-menu-item").each(function() {
  5134.                 return i = n(this), 0 > i.offset().top - r - u
  5135.             }), this.focus(t, i)) : this.focus(t, this.activeMenu.find(this.options.items)[this.active ? "last" : "first"]())), void 0) : (this.next(t), void 0)
  5136.         },
  5137.         previousPage: function(t) {
  5138.             var i, r, u;
  5139.             return this.active ? (this.isFirstItem() || (this._hasScroll() ? (r = this.active.offset().top, u = this.element.height(), this.active.prevAll(".ui-menu-item").each(function() {
  5140.                 return i = n(this), i.offset().top - r + u > 0
  5141.             }), this.focus(t, i)) : this.focus(t, this.activeMenu.find(this.options.items).first())), void 0) : (this.next(t), void 0)
  5142.         },
  5143.         _hasScroll: function() {
  5144.             return this.element.outerHeight() < this.element.prop("scrollHeight")
  5145.         },
  5146.         select: function(t) {
  5147.             this.active = this.active || n(t.target).closest(".ui-menu-item");
  5148.             var i = {
  5149.                 item: this.active
  5150.             };
  5151.             this.active.has(".ui-menu").length || this.collapseAll(t, !0);
  5152.             this._trigger("select", t, i)
  5153.         },
  5154.         _filterMenuItems: function(t) {
  5155.             var i = t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"),
  5156.                 r = RegExp("^" + i, "i");
  5157.             return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function() {
  5158.                 return r.test(n.trim(n(this).text()))
  5159.             })
  5160.         }
  5161.     });
  5162.     n.widget("ui.autocomplete", {
  5163.         version: "1.11.4",
  5164.         defaultElement: "<input>",
  5165.         options: {
  5166.             appendTo: null,
  5167.             autoFocus: !1,
  5168.             delay: 300,
  5169.             minLength: 1,
  5170.             position: {
  5171.                 my: "left top",
  5172.                 at: "left bottom",
  5173.                 collision: "none"
  5174.             },
  5175.             source: null,
  5176.             change: null,
  5177.             close: null,
  5178.             focus: null,
  5179.             open: null,
  5180.             response: null,
  5181.             search: null,
  5182.             select: null
  5183.         },
  5184.         requestIndex: 0,
  5185.         pending: 0,
  5186.         _create: function() {
  5187.             var t, i, r, u = this.element[0].nodeName.toLowerCase(),
  5188.                 f = "textarea" === u,
  5189.                 e = "input" === u;
  5190.             this.isMultiLine = f ? !0 : e ? !1 : this.element.prop("isContentEditable");
  5191.             this.valueMethod = this.element[f || e ? "val" : "text"];
  5192.             this.isNewMenu = !0;
  5193.             this.element.addClass("ui-autocomplete-input").attr("autocomplete", "off");
  5194.             this._on(this.element, {
  5195.                 keydown: function(u) {
  5196.                     if (this.element.prop("readOnly")) return t = !0, r = !0, i = !0, void 0;
  5197.                     t = !1;
  5198.                     r = !1;
  5199.                     i = !1;
  5200.                     var f = n.ui.keyCode;
  5201.                     switch (u.keyCode) {
  5202.                         case f.PAGE_UP:
  5203.                             t = !0;
  5204.                             this._move("previousPage", u);
  5205.                             break;
  5206.                         case f.PAGE_DOWN:
  5207.                             t = !0;
  5208.                             this._move("nextPage", u);
  5209.                             break;
  5210.                         case f.UP:
  5211.                             t = !0;
  5212.                             this._keyEvent("previous", u);
  5213.                             break;
  5214.                         case f.DOWN:
  5215.                             t = !0;
  5216.                             this._keyEvent("next", u);
  5217.                             break;
  5218.                         case f.ENTER:
  5219.                             this.menu.active && (t = !0, u.preventDefault(), this.menu.select(u));
  5220.                             break;
  5221.                         case f.TAB:
  5222.                             this.menu.active && this.menu.select(u);
  5223.                             break;
  5224.                         case f.ESCAPE:
  5225.                             this.menu.element.is(":visible") && (this.isMultiLine || this._value(this.term), this.close(u), u.preventDefault());
  5226.                             break;
  5227.                         default:
  5228.                             i = !0;
  5229.                             this._searchTimeout(u)
  5230.                     }
  5231.                 },
  5232.                 keypress: function(r) {
  5233.                     if (t) return t = !1, (!this.isMultiLine || this.menu.element.is(":visible")) && r.preventDefault(), void 0;
  5234.                     if (!i) {
  5235.                         var u = n.ui.keyCode;
  5236.                         switch (r.keyCode) {
  5237.                             case u.PAGE_UP:
  5238.                                 this._move("previousPage", r);
  5239.                                 break;
  5240.                             case u.PAGE_DOWN:
  5241.                                 this._move("nextPage", r);
  5242.                                 break;
  5243.                             case u.UP:
  5244.                                 this._keyEvent("previous", r);
  5245.                                 break;
  5246.                             case u.DOWN:
  5247.                                 this._keyEvent("next", r)
  5248.                         }
  5249.                     }
  5250.                 },
  5251.                 input: function(n) {
  5252.                     return r ? (r = !1, n.preventDefault(), void 0) : (this._searchTimeout(n), void 0)
  5253.                 },
  5254.                 focus: function() {
  5255.                     this.selectedItem = null;
  5256.                     this.previous = this._value()
  5257.                 },
  5258.                 blur: function(n) {
  5259.                     return this.cancelBlur ? (delete this.cancelBlur, void 0) : (clearTimeout(this.searching), this.close(n), this._change(n), void 0)
  5260.                 }
  5261.             });
  5262.             this._initSource();
  5263.             this.menu = n("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({
  5264.                 role: null
  5265.             }).hide().menu("instance");
  5266.             this._on(this.menu.element, {
  5267.                 mousedown: function(t) {
  5268.                     t.preventDefault();
  5269.                     this.cancelBlur = !0;
  5270.                     this._delay(function() {
  5271.                         delete this.cancelBlur
  5272.                     });
  5273.                     var i = this.menu.element[0];
  5274.                     n(t.target).closest(".ui-menu-item").length || this._delay(function() {
  5275.                         var t = this;
  5276.                         this.document.one("mousedown", function(r) {
  5277.                             r.target === t.element[0] || r.target === i || n.contains(i, r.target) || t.close()
  5278.                         })
  5279.                     })
  5280.                 },
  5281.                 menufocus: function(t, i) {
  5282.                     var r, u;
  5283.                     return this.isNewMenu && (this.isNewMenu = !1, t.originalEvent && /^mouse/.test(t.originalEvent.type)) ? (this.menu.blur(), this.document.one("mousemove", function() {
  5284.                         n(t.target).trigger(t.originalEvent)
  5285.                     }), void 0) : (u = i.item.data("ui-autocomplete-item"), !1 !== this._trigger("focus", t, {
  5286.                         item: u
  5287.                     }) && t.originalEvent && /^key/.test(t.originalEvent.type) && this._value(u.value), r = i.item.attr("aria-label") || u.value, r && n.trim(r).length && (this.liveRegion.children().hide(), n("<div>").text(r).appendTo(this.liveRegion)), void 0)
  5288.                 },
  5289.                 menuselect: function(n, t) {
  5290.                     var i = t.item.data("ui-autocomplete-item"),
  5291.                         r = this.previous;
  5292.                     this.element[0] !== this.document[0].activeElement && (this.element.focus(), this.previous = r, this._delay(function() {
  5293.                         this.previous = r;
  5294.                         this.selectedItem = i
  5295.                     }));
  5296.                     !1 !== this._trigger("select", n, {
  5297.                         item: i
  5298.                     }) && this._value(i.value);
  5299.                     this.term = this._value();
  5300.                     this.close(n);
  5301.                     this.selectedItem = i
  5302.                 }
  5303.             });
  5304.             this.liveRegion = n("<span>", {
  5305.                 role: "status",
  5306.                 "aria-live": "assertive",
  5307.                 "aria-relevant": "additions"
  5308.             }).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body);
  5309.             this._on(this.window, {
  5310.                 beforeunload: function() {
  5311.                     this.element.removeAttr("autocomplete")
  5312.                 }
  5313.             })
  5314.         },
  5315.         _destroy: function() {
  5316.             clearTimeout(this.searching);
  5317.             this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete");
  5318.             this.menu.element.remove();
  5319.             this.liveRegion.remove()
  5320.         },
  5321.         _setOption: function(n, t) {
  5322.             this._super(n, t);
  5323.             "source" === n && this._initSource();
  5324.             "appendTo" === n && this.menu.element.appendTo(this._appendTo());
  5325.             "disabled" === n && t && this.xhr && this.xhr.abort()
  5326.         },
  5327.         _appendTo: function() {
  5328.             var t = this.options.appendTo;
  5329.             return t && (t = t.jquery || t.nodeType ? n(t) : this.document.find(t).eq(0)), t && t[0] || (t = this.element.closest(".ui-front")), t.length || (t = this.document[0].body), t
  5330.         },
  5331.         _initSource: function() {
  5332.             var i, r, t = this;
  5333.             n.isArray(this.options.source) ? (i = this.options.source, this.source = function(t, r) {
  5334.                 r(n.ui.autocomplete.filter(i, t.term))
  5335.             }) : "string" == typeof this.options.source ? (r = this.options.source, this.source = function(i, u) {
  5336.                 t.xhr && t.xhr.abort();
  5337.                 t.xhr = n.ajax({
  5338.                     url: r,
  5339.                     data: i,
  5340.                     dataType: "json",
  5341.                     success: function(n) {
  5342.                         u(n)
  5343.                     },
  5344.                     error: function() {
  5345.                         u([])
  5346.                     }
  5347.                 })
  5348.             }) : this.source = this.options.source
  5349.         },
  5350.         _searchTimeout: function(n) {
  5351.             clearTimeout(this.searching);
  5352.             this.searching = this._delay(function() {
  5353.                 var t = this.term === this._value(),
  5354.                     i = this.menu.element.is(":visible"),
  5355.                     r = n.altKey || n.ctrlKey || n.metaKey || n.shiftKey;
  5356.                 t && (!t || i || r) || (this.selectedItem = null, this.search(null, n))
  5357.             }, this.options.delay)
  5358.         },
  5359.         search: function(n, t) {
  5360.             return n = null != n ? n : this._value(), this.term = this._value(), n.length < this.options.minLength ? this.close(t) : this._trigger("search", t) !== !1 ? this._search(n) : void 0
  5361.         },
  5362.         _search: function(n) {
  5363.             this.pending++;
  5364.             this.element.addClass("ui-autocomplete-loading");
  5365.             this.cancelSearch = !1;
  5366.             this.source({
  5367.                 term: n
  5368.             }, this._response())
  5369.         },
  5370.         _response: function() {
  5371.             var t = ++this.requestIndex;
  5372.             return n.proxy(function(n) {
  5373.                 t === this.requestIndex && this.__response(n);
  5374.                 this.pending--;
  5375.                 this.pending || this.element.removeClass("ui-autocomplete-loading")
  5376.             }, this)
  5377.         },
  5378.         __response: function(n) {
  5379.             n && (n = this._normalize(n));
  5380.             this._trigger("response", null, {
  5381.                 content: n
  5382.             });
  5383.             !this.options.disabled && n && n.length && !this.cancelSearch ? (this._suggest(n), this._trigger("open")) : this._close()
  5384.         },
  5385.         close: function(n) {
  5386.             this.cancelSearch = !0;
  5387.             this._close(n)
  5388.         },
  5389.         _close: function(n) {
  5390.             this.menu.element.is(":visible") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger("close", n))
  5391.         },
  5392.         _change: function(n) {
  5393.             this.previous !== this._value() && this._trigger("change", n, {
  5394.                 item: this.selectedItem
  5395.             })
  5396.         },
  5397.         _normalize: function(t) {
  5398.             return t.length && t[0].label && t[0].value ? t : n.map(t, function(t) {
  5399.                 return "string" == typeof t ? {
  5400.                     label: t,
  5401.                     value: t
  5402.                 } : n.extend({}, t, {
  5403.                     label: t.label || t.value,
  5404.                     value: t.value || t.label
  5405.                 })
  5406.             })
  5407.         },
  5408.         _suggest: function(t) {
  5409.             var i = this.menu.element.empty();
  5410.             this._renderMenu(i, t);
  5411.             this.isNewMenu = !0;
  5412.             this.menu.refresh();
  5413.             i.show();
  5414.             this._resizeMenu();
  5415.             i.position(n.extend({
  5416.                 of: this.element
  5417.             }, this.options.position));
  5418.             this.options.autoFocus && this.menu.next()
  5419.         },
  5420.         _resizeMenu: function() {
  5421.             var n = this.menu.element;
  5422.             n.outerWidth(Math.max(n.width("").outerWidth() + 1, this.element.outerWidth()))
  5423.         },
  5424.         _renderMenu: function(t, i) {
  5425.             var r = this;
  5426.             n.each(i, function(n, i) {
  5427.                 r._renderItemData(t, i)
  5428.             })
  5429.         },
  5430.         _renderItemData: function(n, t) {
  5431.             return this._renderItem(n, t).data("ui-autocomplete-item", t)
  5432.         },
  5433.         _renderItem: function(t, i) {
  5434.             return n("<li>").text(i.label).appendTo(t)
  5435.         },
  5436.         _move: function(n, t) {
  5437.             return this.menu.element.is(":visible") ? this.menu.isFirstItem() && /^previous/.test(n) || this.menu.isLastItem() && /^next/.test(n) ? (this.isMultiLine || this._value(this.term), this.menu.blur(), void 0) : (this.menu[n](t), void 0) : (this.search(null, t), void 0)
  5438.         },
  5439.         widget: function() {
  5440.             return this.menu.element
  5441.         },
  5442.         _value: function() {
  5443.             return this.valueMethod.apply(this.element, arguments)
  5444.         },
  5445.         _keyEvent: function(n, t) {
  5446.             (!this.isMultiLine || this.menu.element.is(":visible")) && (this._move(n, t), t.preventDefault())
  5447.         }
  5448.     });
  5449.     n.extend(n.ui.autocomplete, {
  5450.         escapeRegex: function(n) {
  5451.             return n.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
  5452.         },
  5453.         filter: function(t, i) {
  5454.             var r = RegExp(n.ui.autocomplete.escapeRegex(i), "i");
  5455.             return n.grep(t, function(n) {
  5456.                 return r.test(n.label || n.value || n)
  5457.             })
  5458.         }
  5459.     });
  5460.     n.widget("ui.autocomplete", n.ui.autocomplete, {
  5461.         options: {
  5462.             messages: {
  5463.                 noResults: "No search results.",
  5464.                 results: function(n) {
  5465.                     return n + (n > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate."
  5466.                 }
  5467.             }
  5468.         },
  5469.         __response: function(t) {
  5470.             var i;
  5471.             this._superApply(arguments);
  5472.             this.options.disabled || this.cancelSearch || (i = t && t.length ? this.options.messages.results(t.length) : this.options.messages.noResults, this.liveRegion.children().hide(), n("<div>").text(i).appendTo(this.liveRegion))
  5473.         }
  5474.     });
  5475.     n.ui.autocomplete
  5476. }),
  5477. function(n) {
  5478.     function i(n, t) {
  5479.         for (var i = window, r = (n || "").split("."); i && r.length;) i = i[r.shift()];
  5480.         return typeof i == "function" ? i : (t.push(n), Function.constructor.apply(null, t))
  5481.     }
  5482.  
  5483.     function u(n) {
  5484.         return n === "GET" || n === "POST"
  5485.     }
  5486.  
  5487.     function o(n, t) {
  5488.         u(t) || n.setRequestHeader("X-HTTP-Method-Override", t)
  5489.     }
  5490.  
  5491.     function s(t, i, r) {
  5492.         var u;
  5493.         r.indexOf("application/x-javascript") === -1 && (u = (t.getAttribute("data-ajax-mode") || "").toUpperCase(), n(t.getAttribute("data-ajax-update")).each(function(t, r) {
  5494.             var f;
  5495.             switch (u) {
  5496.                 case "BEFORE":
  5497.                     f = r.firstChild;
  5498.                     n("<div />").html(i).contents().each(function() {
  5499.                         r.insertBefore(this, f)
  5500.                     });
  5501.                     break;
  5502.                 case "AFTER":
  5503.                     n("<div />").html(i).contents().each(function() {
  5504.                         r.appendChild(this)
  5505.                     });
  5506.                     break;
  5507.                 case "REPLACE-WITH":
  5508.                     n(r).replaceWith(i);
  5509.                     break;
  5510.                 default:
  5511.                     n(r).html(i)
  5512.             }
  5513.         }))
  5514.     }
  5515.  
  5516.     function f(t, r) {
  5517.         var e, h, f, c;
  5518.         (e = t.getAttribute("data-ajax-confirm"), !e || window.confirm(e)) && (h = n(t.getAttribute("data-ajax-loading")), c = parseInt(t.getAttribute("data-ajax-loading-duration"), 10) || 0, n.extend(r, {
  5519.             type: t.getAttribute("data-ajax-method") || undefined,
  5520.             url: t.getAttribute("data-ajax-url") || undefined,
  5521.             cache: !!t.getAttribute("data-ajax-cache"),
  5522.             beforeSend: function(n) {
  5523.                 var r;
  5524.                 return o(n, f), r = i(t.getAttribute("data-ajax-begin"), ["xhr"]).apply(t, arguments), r !== !1 && h.show(c), r
  5525.             },
  5526.             complete: function() {
  5527.                 h.hide(c);
  5528.                 i(t.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(t, arguments)
  5529.             },
  5530.             success: function(n, r, u) {
  5531.                 s(t, n, u.getResponseHeader("Content-Type") || "text/html");
  5532.                 i(t.getAttribute("data-ajax-success"), ["data", "status", "xhr"]).apply(t, arguments)
  5533.             },
  5534.             error: function() {
  5535.                 i(t.getAttribute("data-ajax-failure"), ["xhr", "status", "error"]).apply(t, arguments)
  5536.             }
  5537.         }), r.data.push({
  5538.             name: "X-Requested-With",
  5539.             value: "XMLHttpRequest"
  5540.         }), f = r.type.toUpperCase(), u(f) || (r.type = "POST", r.data.push({
  5541.             name: "X-HTTP-Method-Override",
  5542.             value: f
  5543.         })), n.ajax(r))
  5544.     }
  5545.  
  5546.     function h(t) {
  5547.         var i = n(t).data(e);
  5548.         return !i || !i.validate || i.validate()
  5549.     }
  5550.     var t = "unobtrusiveAjaxClick",
  5551.         r = "unobtrusiveAjaxClickTarget",
  5552.         e = "unobtrusiveValidation";
  5553.     n(document).on("click", "a[data-ajax=true]", function(n) {
  5554.         n.preventDefault();
  5555.         f(this, {
  5556.             url: this.href,
  5557.             type: "GET",
  5558.             data: []
  5559.         })
  5560.     });
  5561.     n(document).on("click", "form[data-ajax=true] input[type=image]", function(i) {
  5562.         var r = i.target.name,
  5563.             u = n(i.target),
  5564.             f = n(u.parents("form")[0]),
  5565.             e = u.offset();
  5566.         f.data(t, [{
  5567.             name: r + ".x",
  5568.             value: Math.round(i.pageX - e.left)
  5569.         }, {
  5570.             name: r + ".y",
  5571.             value: Math.round(i.pageY - e.top)
  5572.         }]);
  5573.         setTimeout(function() {
  5574.             f.removeData(t)
  5575.         }, 0)
  5576.     });
  5577.     n(document).on("click", "form[data-ajax=true] :submit", function(i) {
  5578.         var f = i.currentTarget.name,
  5579.             e = n(i.target),
  5580.             u = n(e.parents("form")[0]);
  5581.         u.data(t, f ? [{
  5582.             name: f,
  5583.             value: i.currentTarget.value
  5584.         }] : []);
  5585.         u.data(r, e);
  5586.         setTimeout(function() {
  5587.             u.removeData(t);
  5588.             u.removeData(r)
  5589.         }, 0)
  5590.     });
  5591.     n(document).on("submit", "form[data-ajax=true]", function(i) {
  5592.         var e = n(this).data(t) || [],
  5593.             u = n(this).data(r),
  5594.             o = u && u.hasClass("cancel");
  5595.         (i.preventDefault(), o || h(this)) && f(this, {
  5596.             url: this.action,
  5597.             type: this.method || "GET",
  5598.             data: e.concat(n(this).serializeArray())
  5599.         })
  5600.     })
  5601. }(jQuery);
  5602. ! function(n) {
  5603.     "function" == typeof define && define.amd ? define(["jquery"], n) : n(jQuery)
  5604. }(function(n) {
  5605.     n.extend(n.fn, {
  5606.         validate: function(t) {
  5607.             if (!this.length) return void(t && t.debug && window.console && console.warn("Nothing selected, can't validate, returning nothing."));
  5608.             var i = n.data(this[0], "validator");
  5609.             return i ? i : (this.attr("novalidate", "novalidate"), i = new n.validator(t, this[0]), n.data(this[0], "validator", i), i.settings.onsubmit && (this.validateDelegate(":submit", "click", function(t) {
  5610.                 i.settings.submitHandler && (i.submitButton = t.target);
  5611.                 n(t.target).hasClass("cancel") && (i.cancelSubmit = !0);
  5612.                 void 0 !== n(t.target).attr("formnovalidate") && (i.cancelSubmit = !0)
  5613.             }), this.submit(function(t) {
  5614.                 function r() {
  5615.                     var u, r;
  5616.                     return i.settings.submitHandler ? (i.submitButton && (u = n("<input type='hidden'/>").attr("name", i.submitButton.name).val(n(i.submitButton).val()).appendTo(i.currentForm)), r = i.settings.submitHandler.call(i, i.currentForm, t), i.submitButton && u.remove(), void 0 !== r ? r : !1) : !0
  5617.                 }
  5618.                 return i.settings.debug && t.preventDefault(), i.cancelSubmit ? (i.cancelSubmit = !1, r()) : i.form() ? i.pendingRequest ? (i.formSubmitted = !0, !1) : r() : (i.focusInvalid(), !1)
  5619.             })), i)
  5620.         },
  5621.         valid: function() {
  5622.             var t, i;
  5623.             return n(this[0]).is("form") ? t = this.validate().form() : (t = !0, i = n(this[0].form).validate(), this.each(function() {
  5624.                 t = i.element(this) && t
  5625.             })), t
  5626.         },
  5627.         removeAttrs: function(t) {
  5628.             var i = {},
  5629.                 r = this;
  5630.             return n.each(t.split(/\s/), function(n, t) {
  5631.                 i[t] = r.attr(t);
  5632.                 r.removeAttr(t)
  5633.             }), i
  5634.         },
  5635.         rules: function(t, i) {
  5636.             var e, s, f, u, o, h, r = this[0];
  5637.             if (t) switch (e = n.data(r.form, "validator").settings, s = e.rules, f = n.validator.staticRules(r), t) {
  5638.                 case "add":
  5639.                     n.extend(f, n.validator.normalizeRule(i));
  5640.                     delete f.messages;
  5641.                     s[r.name] = f;
  5642.                     i.messages && (e.messages[r.name] = n.extend(e.messages[r.name], i.messages));
  5643.                     break;
  5644.                 case "remove":
  5645.                     return i ? (h = {}, n.each(i.split(/\s/), function(t, i) {
  5646.                         h[i] = f[i];
  5647.                         delete f[i];
  5648.                         "required" === i && n(r).removeAttr("aria-required")
  5649.                     }), h) : (delete s[r.name], f)
  5650.             }
  5651.             return u = n.validator.normalizeRules(n.extend({}, n.validator.classRules(r), n.validator.attributeRules(r), n.validator.dataRules(r), n.validator.staticRules(r)), r), u.required && (o = u.required, delete u.required, u = n.extend({
  5652.                 required: o
  5653.             }, u), n(r).attr("aria-required", "true")), u.remote && (o = u.remote, delete u.remote, u = n.extend(u, {
  5654.                 remote: o
  5655.             })), u
  5656.         }
  5657.     });
  5658.     n.extend(n.expr[":"], {
  5659.         blank: function(t) {
  5660.             return !n.trim("" + n(t).val())
  5661.         },
  5662.         filled: function(t) {
  5663.             return !!n.trim("" + n(t).val())
  5664.         },
  5665.         unchecked: function(t) {
  5666.             return !n(t).prop("checked")
  5667.         }
  5668.     });
  5669.     n.validator = function(t, i) {
  5670.         this.settings = n.extend(!0, {}, n.validator.defaults, t);
  5671.         this.currentForm = i;
  5672.         this.init()
  5673.     };
  5674.     n.validator.format = function(t, i) {
  5675.         return 1 === arguments.length ? function() {
  5676.             var i = n.makeArray(arguments);
  5677.             return i.unshift(t), n.validator.format.apply(this, i)
  5678.         } : (arguments.length > 2 && i.constructor !== Array && (i = n.makeArray(arguments).slice(1)), i.constructor !== Array && (i = [i]), n.each(i, function(n, i) {
  5679.             t = t.replace(new RegExp("\\{" + n + "\\}", "g"), function() {
  5680.                 return i
  5681.             })
  5682.         }), t)
  5683.     };
  5684.     n.extend(n.validator, {
  5685.         defaults: {
  5686.             messages: {},
  5687.             groups: {},
  5688.             rules: {},
  5689.             errorClass: "error",
  5690.             validClass: "valid",
  5691.             errorElement: "label",
  5692.             focusCleanup: !1,
  5693.             focusInvalid: !0,
  5694.             errorContainer: n([]),
  5695.             errorLabelContainer: n([]),
  5696.             onsubmit: !0,
  5697.             ignore: ":hidden",
  5698.             ignoreTitle: !1,
  5699.             onfocusin: function(n) {
  5700.                 this.lastActive = n;
  5701.                 this.settings.focusCleanup && (this.settings.unhighlight && this.settings.unhighlight.call(this, n, this.settings.errorClass, this.settings.validClass), this.hideThese(this.errorsFor(n)))
  5702.             },
  5703.             onfocusout: function(n) {
  5704.                 !this.checkable(n) && (n.name in this.submitted || !this.optional(n)) && this.element(n)
  5705.             },
  5706.             onkeyup: function(n, t) {
  5707.                 (9 !== t.which || "" !== this.elementValue(n)) && (n.name in this.submitted || n === this.lastElement) && this.element(n)
  5708.             },
  5709.             onclick: function(n) {
  5710.                 n.name in this.submitted ? this.element(n) : n.parentNode.name in this.submitted && this.element(n.parentNode)
  5711.             },
  5712.             highlight: function(t, i, r) {
  5713.                 "radio" === t.type ? this.findByName(t.name).addClass(i).removeClass(r) : n(t).addClass(i).removeClass(r)
  5714.             },
  5715.             unhighlight: function(t, i, r) {
  5716.                 "radio" === t.type ? this.findByName(t.name).removeClass(i).addClass(r) : n(t).removeClass(i).addClass(r)
  5717.             }
  5718.         },
  5719.         setDefaults: function(t) {
  5720.             n.extend(n.validator.defaults, t)
  5721.         },
  5722.         messages: {
  5723.             required: "This field is required.",
  5724.             remote: "Please fix this field.",
  5725.             email: "Please enter a valid email address.",
  5726.             url: "Please enter a valid URL.",
  5727.             date: "Please enter a valid date.",
  5728.             dateISO: "Please enter a valid date ( ISO ).",
  5729.             number: "Please enter a valid number.",
  5730.             digits: "Please enter only digits.",
  5731.             creditcard: "Please enter a valid credit card number.",
  5732.             equalTo: "Please enter the same value again.",
  5733.             maxlength: n.validator.format("Please enter no more than {0} characters."),
  5734.             minlength: n.validator.format("Please enter at least {0} characters."),
  5735.             rangelength: n.validator.format("Please enter a value between {0} and {1} characters long."),
  5736.             range: n.validator.format("Please enter a value between {0} and {1}."),
  5737.             max: n.validator.format("Please enter a value less than or equal to {0}."),
  5738.             min: n.validator.format("Please enter a value greater than or equal to {0}.")
  5739.         },
  5740.         autoCreateRanges: !1,
  5741.         prototype: {
  5742.             init: function() {
  5743.                 function i(t) {
  5744.                     var r = n.data(this[0].form, "validator"),
  5745.                         u = "on" + t.type.replace(/^validate/, ""),
  5746.                         i = r.settings;
  5747.                     i[u] && !this.is(i.ignore) && i[u].call(r, this[0], t)
  5748.                 }
  5749.                 this.labelContainer = n(this.settings.errorLabelContainer);
  5750.                 this.errorContext = this.labelContainer.length && this.labelContainer || n(this.currentForm);
  5751.                 this.containers = n(this.settings.errorContainer).add(this.settings.errorLabelContainer);
  5752.                 this.submitted = {};
  5753.                 this.valueCache = {};
  5754.                 this.pendingRequest = 0;
  5755.                 this.pending = {};
  5756.                 this.invalid = {};
  5757.                 this.reset();
  5758.                 var t, r = this.groups = {};
  5759.                 n.each(this.settings.groups, function(t, i) {
  5760.                     "string" == typeof i && (i = i.split(/\s/));
  5761.                     n.each(i, function(n, i) {
  5762.                         r[i] = t
  5763.                     })
  5764.                 });
  5765.                 t = this.settings.rules;
  5766.                 n.each(t, function(i, r) {
  5767.                     t[i] = n.validator.normalizeRule(r)
  5768.                 });
  5769.                 n(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox']", "focusin focusout keyup", i).validateDelegate("select, option, [type='radio'], [type='checkbox']", "click", i);
  5770.                 this.settings.invalidHandler && n(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
  5771.                 n(this.currentForm).find("[required], [data-rule-required], .required").attr("aria-required", "true")
  5772.             },
  5773.             form: function() {
  5774.                 return this.checkForm(), n.extend(this.submitted, this.errorMap), this.invalid = n.extend({}, this.errorMap), this.valid() || n(this.currentForm).triggerHandler("invalid-form", [this]), this.showErrors(), this.valid()
  5775.             },
  5776.             checkForm: function() {
  5777.                 this.prepareForm();
  5778.                 for (var n = 0, t = this.currentElements = this.elements(); t[n]; n++) this.check(t[n]);
  5779.                 return this.valid()
  5780.             },
  5781.             element: function(t) {
  5782.                 var u = this.clean(t),
  5783.                     i = this.validationTargetFor(u),
  5784.                     r = !0;
  5785.                 return this.lastElement = i, void 0 === i ? delete this.invalid[u.name] : (this.prepareElement(i), this.currentElements = n(i), r = this.check(i) !== !1, r ? delete this.invalid[i.name] : this.invalid[i.name] = !0), n(t).attr("aria-invalid", !r), this.numberOfInvalids() || (this.toHide = this.toHide.add(this.containers)), this.showErrors(), r
  5786.             },
  5787.             showErrors: function(t) {
  5788.                 if (t) {
  5789.                     n.extend(this.errorMap, t);
  5790.                     this.errorList = [];
  5791.                     for (var i in t) this.errorList.push({
  5792.                         message: t[i],
  5793.                         element: this.findByName(i)[0]
  5794.                     });
  5795.                     this.successList = n.grep(this.successList, function(n) {
  5796.                         return !(n.name in t)
  5797.                     })
  5798.                 }
  5799.                 this.settings.showErrors ? this.settings.showErrors.call(this, this.errorMap, this.errorList) : this.defaultShowErrors()
  5800.             },
  5801.             resetForm: function() {
  5802.                 n.fn.resetForm && n(this.currentForm).resetForm();
  5803.                 this.submitted = {};
  5804.                 this.lastElement = null;
  5805.                 this.prepareForm();
  5806.                 this.hideErrors();
  5807.                 this.elements().removeClass(this.settings.errorClass).removeData("previousValue").removeAttr("aria-invalid")
  5808.             },
  5809.             numberOfInvalids: function() {
  5810.                 return this.objectLength(this.invalid)
  5811.             },
  5812.             objectLength: function(n) {
  5813.                 var i, t = 0;
  5814.                 for (i in n) t++;
  5815.                 return t
  5816.             },
  5817.             hideErrors: function() {
  5818.                 this.hideThese(this.toHide)
  5819.             },
  5820.             hideThese: function(n) {
  5821.                 n.not(this.containers).text("");
  5822.                 this.addWrapper(n).hide()
  5823.             },
  5824.             valid: function() {
  5825.                 return 0 === this.size()
  5826.             },
  5827.             size: function() {
  5828.                 return this.errorList.length
  5829.             },
  5830.             focusInvalid: function() {
  5831.                 if (this.settings.focusInvalid) try {
  5832.                     n(this.findLastActive() || this.errorList.length && this.errorList[0].element || []).filter(":visible").focus().trigger("focusin")
  5833.                 } catch (t) {}
  5834.             },
  5835.             findLastActive: function() {
  5836.                 var t = this.lastActive;
  5837.                 return t && 1 === n.grep(this.errorList, function(n) {
  5838.                     return n.element.name === t.name
  5839.                 }).length && t
  5840.             },
  5841.             elements: function() {
  5842.                 var t = this,
  5843.                     i = {};
  5844.                 return n(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled], [readonly]").not(this.settings.ignore).filter(function() {
  5845.                     return !this.name && t.settings.debug && window.console && console.error("%o has no name assigned", this), this.name in i || !t.objectLength(n(this).rules()) ? !1 : (i[this.name] = !0, !0)
  5846.                 })
  5847.             },
  5848.             clean: function(t) {
  5849.                 return n(t)[0]
  5850.             },
  5851.             errors: function() {
  5852.                 var t = this.settings.errorClass.split(" ").join(".");
  5853.                 return n(this.settings.errorElement + "." + t, this.errorContext)
  5854.             },
  5855.             reset: function() {
  5856.                 this.successList = [];
  5857.                 this.errorList = [];
  5858.                 this.errorMap = {};
  5859.                 this.toShow = n([]);
  5860.                 this.toHide = n([]);
  5861.                 this.currentElements = n([])
  5862.             },
  5863.             prepareForm: function() {
  5864.                 this.reset();
  5865.                 this.toHide = this.errors().add(this.containers)
  5866.             },
  5867.             prepareElement: function(n) {
  5868.                 this.reset();
  5869.                 this.toHide = this.errorsFor(n)
  5870.             },
  5871.             elementValue: function(t) {
  5872.                 var i, u = n(t),
  5873.                     r = t.type;
  5874.                 return "radio" === r || "checkbox" === r ? n("input[name='" + t.name + "']:checked").val() : "number" === r && "undefined" != typeof t.validity ? t.validity.badInput ? !1 : u.val() : (i = u.val(), "string" == typeof i ? i.replace(/\r/g, "") : i)
  5875.             },
  5876.             check: function(t) {
  5877.                 t = this.validationTargetFor(this.clean(t));
  5878.                 var i, r, u, f = n(t).rules(),
  5879.                     s = n.map(f, function(n, t) {
  5880.                         return t
  5881.                     }).length,
  5882.                     e = !1,
  5883.                     h = this.elementValue(t);
  5884.                 for (r in f) {
  5885.                     u = {
  5886.                         method: r,
  5887.                         parameters: f[r]
  5888.                     };
  5889.                     try {
  5890.                         if (i = n.validator.methods[r].call(this, h, t, u.parameters), "dependency-mismatch" === i && 1 === s) {
  5891.                             e = !0;
  5892.                             continue
  5893.                         }
  5894.                         if (e = !1, "pending" === i) return void(this.toHide = this.toHide.not(this.errorsFor(t)));
  5895.                         if (!i) return this.formatAndAdd(t, u), !1
  5896.                     } catch (o) {
  5897.                         throw this.settings.debug && window.console && console.log("Exception occurred when checking element " + t.id + ", check the '" + u.method + "' method.", o), o;
  5898.                     }
  5899.                 }
  5900.                 if (!e) return this.objectLength(f) && this.successList.push(t), !0
  5901.             },
  5902.             customDataMessage: function(t, i) {
  5903.                 return n(t).data("msg" + i.charAt(0).toUpperCase() + i.substring(1).toLowerCase()) || n(t).data("msg")
  5904.             },
  5905.             customMessage: function(n, t) {
  5906.                 var i = this.settings.messages[n];
  5907.                 return i && (i.constructor === String ? i : i[t])
  5908.             },
  5909.             findDefined: function() {
  5910.                 for (var n = 0; n < arguments.length; n++)
  5911.                     if (void 0 !== arguments[n]) return arguments[n];
  5912.                 return void 0
  5913.             },
  5914.             defaultMessage: function(t, i) {
  5915.                 return this.findDefined(this.customMessage(t.name, i), this.customDataMessage(t, i), !this.settings.ignoreTitle && t.title || void 0, n.validator.messages[i], "<strong>Warning: No message defined for " + t.name + "<\/strong>")
  5916.             },
  5917.             formatAndAdd: function(t, i) {
  5918.                 var r = this.defaultMessage(t, i.method),
  5919.                     u = /\$?\{(\d+)\}/g;
  5920.                 "function" == typeof r ? r = r.call(this, i.parameters, t) : u.test(r) && (r = n.validator.format(r.replace(u, "{$1}"), i.parameters));
  5921.                 this.errorList.push({
  5922.                     message: r,
  5923.                     element: t,
  5924.                     method: i.method
  5925.                 });
  5926.                 this.errorMap[t.name] = r;
  5927.                 this.submitted[t.name] = r
  5928.             },
  5929.             addWrapper: function(n) {
  5930.                 return this.settings.wrapper && (n = n.add(n.parent(this.settings.wrapper))), n
  5931.             },
  5932.             defaultShowErrors: function() {
  5933.                 for (var i, t, n = 0; this.errorList[n]; n++) t = this.errorList[n], this.settings.highlight && this.settings.highlight.call(this, t.element, this.settings.errorClass, this.settings.validClass), this.showLabel(t.element, t.message);
  5934.                 if (this.errorList.length && (this.toShow = this.toShow.add(this.containers)), this.settings.success)
  5935.                     for (n = 0; this.successList[n]; n++) this.showLabel(this.successList[n]);
  5936.                 if (this.settings.unhighlight)
  5937.                     for (n = 0, i = this.validElements(); i[n]; n++) this.settings.unhighlight.call(this, i[n], this.settings.errorClass, this.settings.validClass);
  5938.                 this.toHide = this.toHide.not(this.toShow);
  5939.                 this.hideErrors();
  5940.                 this.addWrapper(this.toShow).show()
  5941.             },
  5942.             validElements: function() {
  5943.                 return this.currentElements.not(this.invalidElements())
  5944.             },
  5945.             invalidElements: function() {
  5946.                 return n(this.errorList).map(function() {
  5947.                     return this.element
  5948.                 })
  5949.             },
  5950.             showLabel: function(t, i) {
  5951.                 var u, o, e, r = this.errorsFor(t),
  5952.                     s = this.idOrName(t),
  5953.                     f = n(t).attr("aria-describedby");
  5954.                 r.length ? (r.removeClass(this.settings.validClass).addClass(this.settings.errorClass), r.html(i)) : (r = n("<" + this.settings.errorElement + ">").attr("id", s + "-error").addClass(this.settings.errorClass).html(i || ""), u = r, this.settings.wrapper && (u = r.hide().show().wrap("<" + this.settings.wrapper + "/>").parent()), this.labelContainer.length ? this.labelContainer.append(u) : this.settings.errorPlacement ? this.settings.errorPlacement(u, n(t)) : u.insertAfter(t), r.is("label") ? r.attr("for", s) : 0 === r.parents("label[for='" + s + "']").length && (e = r.attr("id").replace(/(:|\.|\[|\])/g, "\\$1"), f ? f.match(new RegExp("\\b" + e + "\\b")) || (f += " " + e) : f = e, n(t).attr("aria-describedby", f), o = this.groups[t.name], o && n.each(this.groups, function(t, i) {
  5955.                     i === o && n("[name='" + t + "']", this.currentForm).attr("aria-describedby", r.attr("id"))
  5956.                 })));
  5957.                 !i && this.settings.success && (r.text(""), "string" == typeof this.settings.success ? r.addClass(this.settings.success) : this.settings.success(r, t));
  5958.                 this.toShow = this.toShow.add(r)
  5959.             },
  5960.             errorsFor: function(t) {
  5961.                 var r = this.idOrName(t),
  5962.                     u = n(t).attr("aria-describedby"),
  5963.                     i = "label[for='" + r + "'], label[for='" + r + "'] *";
  5964.                 return u && (i = i + ", #" + u.replace(/\s+/g, ", #")), this.errors().filter(i)
  5965.             },
  5966.             idOrName: function(n) {
  5967.                 return this.groups[n.name] || (this.checkable(n) ? n.name : n.id || n.name)
  5968.             },
  5969.             validationTargetFor: function(t) {
  5970.                 return this.checkable(t) && (t = this.findByName(t.name)), n(t).not(this.settings.ignore)[0]
  5971.             },
  5972.             checkable: function(n) {
  5973.                 return /radio|checkbox/i.test(n.type)
  5974.             },
  5975.             findByName: function(t) {
  5976.                 return n(this.currentForm).find("[name='" + t + "']")
  5977.             },
  5978.             getLength: function(t, i) {
  5979.                 switch (i.nodeName.toLowerCase()) {
  5980.                     case "select":
  5981.                         return n("option:selected", i).length;
  5982.                     case "input":
  5983.                         if (this.checkable(i)) return this.findByName(i.name).filter(":checked").length
  5984.                 }
  5985.                 return t.length
  5986.             },
  5987.             depend: function(n, t) {
  5988.                 return this.dependTypes[typeof n] ? this.dependTypes[typeof n](n, t) : !0
  5989.             },
  5990.             dependTypes: {
  5991.                 boolean: function(n) {
  5992.                     return n
  5993.                 },
  5994.                 string: function(t, i) {
  5995.                     return !!n(t, i.form).length
  5996.                 },
  5997.                 "function": function(n, t) {
  5998.                     return n(t)
  5999.                 }
  6000.             },
  6001.             optional: function(t) {
  6002.                 var i = this.elementValue(t);
  6003.                 return !n.validator.methods.required.call(this, i, t) && "dependency-mismatch"
  6004.             },
  6005.             startRequest: function(n) {
  6006.                 this.pending[n.name] || (this.pendingRequest++, this.pending[n.name] = !0)
  6007.             },
  6008.             stopRequest: function(t, i) {
  6009.                 this.pendingRequest--;
  6010.                 this.pendingRequest < 0 && (this.pendingRequest = 0);
  6011.                 delete this.pending[t.name];
  6012.                 i && 0 === this.pendingRequest && this.formSubmitted && this.form() ? (n(this.currentForm).submit(), this.formSubmitted = !1) : !i && 0 === this.pendingRequest && this.formSubmitted && (n(this.currentForm).triggerHandler("invalid-form", [this]), this.formSubmitted = !1)
  6013.             },
  6014.             previousValue: function(t) {
  6015.                 return n.data(t, "previousValue") || n.data(t, "previousValue", {
  6016.                     old: null,
  6017.                     valid: !0,
  6018.                     message: this.defaultMessage(t, "remote")
  6019.                 })
  6020.             }
  6021.         },
  6022.         classRuleSettings: {
  6023.             required: {
  6024.                 required: !0
  6025.             },
  6026.             email: {
  6027.                 email: !0
  6028.             },
  6029.             url: {
  6030.                 url: !0
  6031.             },
  6032.             date: {
  6033.                 date: !0
  6034.             },
  6035.             dateISO: {
  6036.                 dateISO: !0
  6037.             },
  6038.             number: {
  6039.                 number: !0
  6040.             },
  6041.             digits: {
  6042.                 digits: !0
  6043.             },
  6044.             creditcard: {
  6045.                 creditcard: !0
  6046.             }
  6047.         },
  6048.         addClassRules: function(t, i) {
  6049.             t.constructor === String ? this.classRuleSettings[t] = i : n.extend(this.classRuleSettings, t)
  6050.         },
  6051.         classRules: function(t) {
  6052.             var i = {},
  6053.                 r = n(t).attr("class");
  6054.             return r && n.each(r.split(" "), function() {
  6055.                 this in n.validator.classRuleSettings && n.extend(i, n.validator.classRuleSettings[this])
  6056.             }), i
  6057.         },
  6058.         attributeRules: function(t) {
  6059.             var r, i, u = {},
  6060.                 e = n(t),
  6061.                 f = t.getAttribute("type");
  6062.             for (r in n.validator.methods) "required" === r ? (i = t.getAttribute(r), "" === i && (i = !0), i = !!i) : i = e.attr(r), /min|max/.test(r) && (null === f || /number|range|text/.test(f)) && (i = Number(i)), i || 0 === i ? u[r] = i : f === r && "range" !== f && (u[r] = !0);
  6063.             return u.maxlength && /-1|2147483647|524288/.test(u.maxlength) && delete u.maxlength, u
  6064.         },
  6065.         dataRules: function(t) {
  6066.             var i, r, u = {},
  6067.                 f = n(t);
  6068.             for (i in n.validator.methods) r = f.data("rule" + i.charAt(0).toUpperCase() + i.substring(1).toLowerCase()), void 0 !== r && (u[i] = r);
  6069.             return u
  6070.         },
  6071.         staticRules: function(t) {
  6072.             var i = {},
  6073.                 r = n.data(t.form, "validator");
  6074.             return r.settings.rules && (i = n.validator.normalizeRule(r.settings.rules[t.name]) || {}), i
  6075.         },
  6076.         normalizeRules: function(t, i) {
  6077.             return n.each(t, function(r, u) {
  6078.                 if (u === !1) return void delete t[r];
  6079.                 if (u.param || u.depends) {
  6080.                     var f = !0;
  6081.                     switch (typeof u.depends) {
  6082.                         case "string":
  6083.                             f = !!n(u.depends, i.form).length;
  6084.                             break;
  6085.                         case "function":
  6086.                             f = u.depends.call(i, i)
  6087.                     }
  6088.                     f ? t[r] = void 0 !== u.param ? u.param : !0 : delete t[r]
  6089.                 }
  6090.             }), n.each(t, function(r, u) {
  6091.                 t[r] = n.isFunction(u) ? u(i) : u
  6092.             }), n.each(["minlength", "maxlength"], function() {
  6093.                 t[this] && (t[this] = Number(t[this]))
  6094.             }), n.each(["rangelength", "range"], function() {
  6095.                 var i;
  6096.                 t[this] && (n.isArray(t[this]) ? t[this] = [Number(t[this][0]), Number(t[this][1])] : "string" == typeof t[this] && (i = t[this].replace(/[\[\]]/g, "").split(/[\s,]+/), t[this] = [Number(i[0]), Number(i[1])]))
  6097.             }), n.validator.autoCreateRanges && (null != t.min && null != t.max && (t.range = [t.min, t.max], delete t.min, delete t.max), null != t.minlength && null != t.maxlength && (t.rangelength = [t.minlength, t.maxlength], delete t.minlength, delete t.maxlength)), t
  6098.         },
  6099.         normalizeRule: function(t) {
  6100.             if ("string" == typeof t) {
  6101.                 var i = {};
  6102.                 n.each(t.split(/\s/), function() {
  6103.                     i[this] = !0
  6104.                 });
  6105.                 t = i
  6106.             }
  6107.             return t
  6108.         },
  6109.         addMethod: function(t, i, r) {
  6110.             n.validator.methods[t] = i;
  6111.             n.validator.messages[t] = void 0 !== r ? r : n.validator.messages[t];
  6112.             i.length < 3 && n.validator.addClassRules(t, n.validator.normalizeRule(t))
  6113.         },
  6114.         methods: {
  6115.             required: function(t, i, r) {
  6116.                 if (!this.depend(r, i)) return "dependency-mismatch";
  6117.                 if ("select" === i.nodeName.toLowerCase()) {
  6118.                     var u = n(i).val();
  6119.                     return u && u.length > 0
  6120.                 }
  6121.                 return this.checkable(i) ? this.getLength(t, i) > 0 : n.trim(t).length > 0
  6122.             },
  6123.             email: function(n, t) {
  6124.                 return this.optional(t) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[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])?)*$/.test(n)
  6125.             },
  6126.             url: function(n, t) {
  6127.                 return this.optional(t) || /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(n)
  6128.             },
  6129.             date: function(n, t) {
  6130.                 return this.optional(t) || !/Invalid|NaN/.test(new Date(n).toString())
  6131.             },
  6132.             dateISO: function(n, t) {
  6133.                 return this.optional(t) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(n)
  6134.             },
  6135.             number: function(n, t) {
  6136.                 return this.optional(t) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(n)
  6137.             },
  6138.             digits: function(n, t) {
  6139.                 return this.optional(t) || /^\d+$/.test(n)
  6140.             },
  6141.             creditcard: function(n, t) {
  6142.                 if (this.optional(t)) return "dependency-mismatch";
  6143.                 if (/[^0-9 \-]+/.test(n)) return !1;
  6144.                 var i, f, e = 0,
  6145.                     r = 0,
  6146.                     u = !1;
  6147.                 if (n = n.replace(/\D/g, ""), n.length < 13 || n.length > 19) return !1;
  6148.                 for (i = n.length - 1; i >= 0; i--) f = n.charAt(i), r = parseInt(f, 10), u && (r *= 2) > 9 && (r -= 9), e += r, u = !u;
  6149.                 return e % 10 == 0
  6150.             },
  6151.             minlength: function(t, i, r) {
  6152.                 var u = n.isArray(t) ? t.length : this.getLength(t, i);
  6153.                 return this.optional(i) || u >= r
  6154.             },
  6155.             maxlength: function(t, i, r) {
  6156.                 var u = n.isArray(t) ? t.length : this.getLength(t, i);
  6157.                 return this.optional(i) || r >= u
  6158.             },
  6159.             rangelength: function(t, i, r) {
  6160.                 var u = n.isArray(t) ? t.length : this.getLength(t, i);
  6161.                 return this.optional(i) || u >= r[0] && u <= r[1]
  6162.             },
  6163.             min: function(n, t, i) {
  6164.                 return this.optional(t) || n >= i
  6165.             },
  6166.             max: function(n, t, i) {
  6167.                 return this.optional(t) || i >= n
  6168.             },
  6169.             range: function(n, t, i) {
  6170.                 return this.optional(t) || n >= i[0] && n <= i[1]
  6171.             },
  6172.             equalTo: function(t, i, r) {
  6173.                 var u = n(r);
  6174.                 return this.settings.onfocusout && u.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
  6175.                     n(i).valid()
  6176.                 }), t === u.val()
  6177.             },
  6178.             remote: function(t, i, r) {
  6179.                 if (this.optional(i)) return "dependency-mismatch";
  6180.                 var u, e, f = this.previousValue(i);
  6181.                 return this.settings.messages[i.name] || (this.settings.messages[i.name] = {}), f.originalMessage = this.settings.messages[i.name].remote, this.settings.messages[i.name].remote = f.message, r = "string" == typeof r && {
  6182.                     url: r
  6183.                 } || r, f.old === t ? f.valid : (f.old = t, u = this, this.startRequest(i), e = {}, e[i.name] = t, n.ajax(n.extend(!0, {
  6184.                     url: r,
  6185.                     mode: "abort",
  6186.                     port: "validate" + i.name,
  6187.                     dataType: "json",
  6188.                     data: e,
  6189.                     context: u.currentForm,
  6190.                     success: function(r) {
  6191.                         var o, e, h, s = r === !0 || "true" === r;
  6192.                         u.settings.messages[i.name].remote = f.originalMessage;
  6193.                         s ? (h = u.formSubmitted, u.prepareElement(i), u.formSubmitted = h, u.successList.push(i), delete u.invalid[i.name], u.showErrors()) : (o = {}, e = r || u.defaultMessage(i, "remote"), o[i.name] = f.message = n.isFunction(e) ? e(t) : e, u.invalid[i.name] = !0, u.showErrors(o));
  6194.                         f.valid = s;
  6195.                         u.stopRequest(i, s)
  6196.                     }
  6197.                 }, r)), "pending")
  6198.             }
  6199.         }
  6200.     });
  6201.     n.format = function() {
  6202.         throw "$.format has been deprecated. Please use $.validator.format instead.";
  6203.     };
  6204.     var i, t = {};
  6205.     n.ajaxPrefilter ? n.ajaxPrefilter(function(n, i, r) {
  6206.         var u = n.port;
  6207.         "abort" === n.mode && (t[u] && t[u].abort(), t[u] = r)
  6208.     }) : (i = n.ajax, n.ajax = function(r) {
  6209.         var f = ("mode" in r ? r : n.ajaxSettings).mode,
  6210.             u = ("port" in r ? r : n.ajaxSettings).port;
  6211.         return "abort" === f ? (t[u] && t[u].abort(), t[u] = i.apply(this, arguments), t[u]) : i.apply(this, arguments)
  6212.     });
  6213.     n.extend(n.fn, {
  6214.         validateDelegate: function(t, i, r) {
  6215.             return this.bind(i, function(i) {
  6216.                 var u = n(i.target);
  6217.                 if (u.is(t)) return r.apply(u, arguments)
  6218.             })
  6219.         }
  6220.     })
  6221. }),
  6222. function(n) {
  6223.     function i(n, t, i) {
  6224.         n.rules[t] = i;
  6225.         n.message && (n.messages[t] = n.message)
  6226.     }
  6227.  
  6228.     function h(n) {
  6229.         return n.replace(/^\s+|\s+$/g, "").split(/\s*,\s*/g)
  6230.     }
  6231.  
  6232.     function f(n) {
  6233.         return n.replace(/([!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~])/g, "\\$1")
  6234.    }
  6235.  
  6236.    function e(n) {
  6237.        return n.substr(0, n.lastIndexOf(".") + 1)
  6238.    }
  6239.  
  6240.    function o(n, t) {
  6241.        return n.indexOf("*.") === 0 && (n = n.replace("*.", t)), n
  6242.    }
  6243.  
  6244.    function c(t, i) {
  6245.        var r = n(this).find("[data-valmsg-for='" + f(i[0].name) + "']"),
  6246.            u = r.attr("data-valmsg-replace"),
  6247.            e = u ? n.parseJSON(u) !== !1 : null;
  6248.        r.removeClass("field-validation-valid").addClass("field-validation-error");
  6249.        t.data("unobtrusiveContainer", r);
  6250.        e ? (r.empty(), t.removeClass("input-validation-error").appendTo(r)) : t.hide()
  6251.    }
  6252.  
  6253.    function l(t, i) {
  6254.        var u = n(this).find("[data-valmsg-summary=true]"),
  6255.            r = u.find("ul");
  6256.        r && r.length && i.errorList.length && (r.empty(), u.addClass("validation-summary-errors").removeClass("validation-summary-valid"), n.each(i.errorList, function() {
  6257.            n("<li />").html(this.message).appendTo(r)
  6258.        }))
  6259.    }
  6260.  
  6261.    function a(t) {
  6262.        var i = t.data("unobtrusiveContainer"),
  6263.            r = i.attr("data-valmsg-replace"),
  6264.            u = r ? n.parseJSON(r) : null;
  6265.        i && (i.addClass("field-validation-valid").removeClass("field-validation-error"), t.removeData("unobtrusiveContainer"), u && i.empty())
  6266.    }
  6267.  
  6268.    function v() {
  6269.        var t = n(this),
  6270.            i = "__jquery_unobtrusive_validation_form_reset";
  6271.        if (!t.data(i)) {
  6272.            t.data(i, !0);
  6273.            try {
  6274.                t.data("validator").resetForm()
  6275.            } finally {
  6276.                t.removeData(i)
  6277.            }
  6278.            t.find(".validation-summary-errors").addClass("validation-summary-valid").removeClass("validation-summary-errors");
  6279.            t.find(".field-validation-error").addClass("field-validation-valid").removeClass("field-validation-error").removeData("unobtrusiveContainer").find(">*").removeData("unobtrusiveContainer")
  6280.        }
  6281.    }
  6282.  
  6283.    function s(t) {
  6284.        var i = n(t),
  6285.            f = i.data(u),
  6286.            s = n.proxy(v, t),
  6287.            e = r.unobtrusive.options || {},
  6288.            o = function(i, r) {
  6289.                var u = e[i];
  6290.                u && n.isFunction(u) && u.apply(t, r)
  6291.            };
  6292.        return f || (f = {
  6293.            options: {
  6294.                errorClass: e.errorClass || "input-validation-error",
  6295.                errorElement: e.errorElement || "span",
  6296.                errorPlacement: function() {
  6297.                    c.apply(t, arguments);
  6298.                    o("errorPlacement", arguments)
  6299.                },
  6300.                invalidHandler: function() {
  6301.                    l.apply(t, arguments);
  6302.                    o("invalidHandler", arguments)
  6303.                },
  6304.                messages: {},
  6305.                rules: {},
  6306.                success: function() {
  6307.                    a.apply(t, arguments);
  6308.                    o("success", arguments)
  6309.                }
  6310.            },
  6311.            attachValidation: function() {
  6312.                i.off("reset." + u, s).on("reset." + u, s).validate(this.options)
  6313.            },
  6314.            validate: function() {
  6315.                return i.validate(), i.valid()
  6316.            }
  6317.        }, i.data(u, f)), f
  6318.    }
  6319.    var r = n.validator,
  6320.        t, u = "unobtrusiveValidation";
  6321.    r.unobtrusive = {
  6322.        adapters: [],
  6323.        parseElement: function(t, i) {
  6324.            var u = n(t),
  6325.                f = u.parents("form")[0],
  6326.                r, e, o;
  6327.            f && (r = s(f), r.options.rules[t.name] = e = {}, r.options.messages[t.name] = o = {}, n.each(this.adapters, function() {
  6328.                var i = "data-val-" + this.name,
  6329.                    r = u.attr(i),
  6330.                    s = {};
  6331.                r !== undefined && (i += "-", n.each(this.params, function() {
  6332.                    s[this] = u.attr(i + this)
  6333.                }), this.adapt({
  6334.                    element: t,
  6335.                    form: f,
  6336.                    message: r,
  6337.                    params: s,
  6338.                    rules: e,
  6339.                    messages: o
  6340.                }))
  6341.            }), n.extend(e, {
  6342.                __dummy__: !0
  6343.            }), i || r.attachValidation())
  6344.        },
  6345.        parse: function(t) {
  6346.            var i = n(t),
  6347.                u = i.parents().addBack().filter("form").add(i.find("form")).has("[data-val=true]");
  6348.            i.find("[data-val=true]").each(function() {
  6349.                r.unobtrusive.parseElement(this, !0)
  6350.            });
  6351.            u.each(function() {
  6352.                var n = s(this);
  6353.                n && n.attachValidation()
  6354.            })
  6355.        }
  6356.    };
  6357.    t = r.unobtrusive.adapters;
  6358.    t.add = function(n, t, i) {
  6359.        return i || (i = t, t = []), this.push({
  6360.            name: n,
  6361.            params: t,
  6362.            adapt: i
  6363.        }), this
  6364.    };
  6365.    t.addBool = function(n, t) {
  6366.        return this.add(n, function(r) {
  6367.            i(r, t || n, !0)
  6368.        })
  6369.    };
  6370.    t.addMinMax = function(n, t, r, u, f, e) {
  6371.        return this.add(n, [f || "min", e || "max"], function(n) {
  6372.            var f = n.params.min,
  6373.                e = n.params.max;
  6374.            f && e ? i(n, u, [f, e]) : f ? i(n, t, f) : e && i(n, r, e)
  6375.        })
  6376.    };
  6377.    t.addSingleVal = function(n, t, r) {
  6378.        return this.add(n, [t || "val"], function(u) {
  6379.            i(u, r || n, u.params[t])
  6380.        })
  6381.    };
  6382.    r.addMethod("__dummy__", function() {
  6383.        return !0
  6384.    });
  6385.    r.addMethod("regex", function(n, t, i) {
  6386.        var r;
  6387.        return this.optional(t) ? !0 : (r = new RegExp(i).exec(n), r && r.index === 0 && r[0].length === n.length)
  6388.    });
  6389.    r.addMethod("nonalphamin", function(n, t, i) {
  6390.        var r;
  6391.        return i && (r = n.match(/\W/g), r = r && r.length >= i), r
  6392.    });
  6393.    r.methods.extension ? (t.addSingleVal("accept", "mimtype"), t.addSingleVal("extension", "extension")) : t.addSingleVal("extension", "extension", "accept");
  6394.    t.addSingleVal("regex", "pattern");
  6395.    t.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");
  6396.    t.addMinMax("length", "minlength", "maxlength", "rangelength").addMinMax("range", "min", "max", "range");
  6397.    t.addMinMax("minlength", "minlength").addMinMax("maxlength", "minlength", "maxlength");
  6398.    t.add("equalto", ["other"], function(t) {
  6399.        var r = e(t.element.name),
  6400.            u = t.params.other,
  6401.            s = o(u, r),
  6402.            h = n(t.form).find(":input").filter("[name='" + f(s) + "']")[0];
  6403.        i(t, "equalTo", h)
  6404.    });
  6405.    t.add("required", function(n) {
  6406.        (n.element.tagName.toUpperCase() !== "INPUT" || n.element.type.toUpperCase() !== "CHECKBOX") && i(n, "required", !0)
  6407.    });
  6408.    t.add("remote", ["url", "type", "additionalfields"], function(t) {
  6409.        var r = {
  6410.                url: t.params.url,
  6411.                type: t.params.type || "GET",
  6412.                data: {}
  6413.            },
  6414.            u = e(t.element.name);
  6415.        n.each(h(t.params.additionalfields || t.element.name), function(i, e) {
  6416.            var s = o(e, u);
  6417.            r.data[s] = function() {
  6418.                var i = n(t.form).find(":input").filter("[name='" + f(s) + "']");
  6419.                return i.is(":checkbox") ? i.filter(":checked").val() || i.filter(":hidden").val() || "" : i.is(":radio") ? i.filter(":checked").val() || "" : i.val()
  6420.            }
  6421.        });
  6422.        i(t, "remote", r)
  6423.    });
  6424.    t.add("password", ["min", "nonalphamin", "regex"], function(n) {
  6425.        n.params.min && i(n, "minlength", n.params.min);
  6426.        n.params.nonalphamin && i(n, "nonalphamin", n.params.nonalphamin);
  6427.        n.params.regex && i(n, "regex", n.params.regex)
  6428.    });
  6429.    n(function() {
  6430.        r.unobtrusive.parse(document)
  6431.    })
  6432. }(jQuery);
  6433. window.Modernizr = function(n, t, i) {
  6434.        function a(n) {
  6435.            c.cssText = n
  6436.        }
  6437.  
  6438.        function vt(n, t) {
  6439.            return a(y.join(n + ";") + (t || ""))
  6440.        }
  6441.  
  6442.        function h(n, t) {
  6443.            return typeof n === t
  6444.        }
  6445.  
  6446.        function v(n, t) {
  6447.            return !!~("" + n).indexOf(t)
  6448.        }
  6449.  
  6450.        function lt(n, t) {
  6451.            var u, r;
  6452.            for (u in n)
  6453.                if (r = n[u], !v(r, "-") && c[r] !== i) return t == "pfx" ? r : !0;
  6454.            return !1
  6455.        }
  6456.  
  6457.        function yt(n, t, r) {
  6458.            var f, u;
  6459.            for (f in n)
  6460.                if (u = t[n[f]], u !== i) return r === !1 ? n[f] : h(u, "function") ? u.bind(r || t) : u;
  6461.            return !1
  6462.        }
  6463.  
  6464.        function f(n, t, i) {
  6465.            var r = n.charAt(0).toUpperCase() + n.slice(1),
  6466.                u = (n + " " + ot.join(r + " ") + r).split(" ");
  6467.            return h(t, "string") || h(t, "undefined") ? lt(u, t) : (u = (n + " " + st.join(r + " ") + r).split(" "), yt(u, t, i))
  6468.        }
  6469.  
  6470.        function pt() {
  6471.            u.input = function(i) {
  6472.                for (var r = 0, u = i.length; r < u; r++) w[i[r]] = !!(i[r] in o);
  6473.                return w.list && (w.list = !!(t.createElement("datalist") && n.HTMLDataListElement)), w
  6474.            }("autocomplete autofocus list placeholder max min multiple pattern required step".split(" "));
  6475.            u.inputtypes = function(n) {
  6476.                for (var u = 0, r, f, e, h = n.length; u < h; u++) o.setAttribute("type", f = n[u]), r = o.type !== "text", r && (o.value = g, o.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(f) && o.style.WebkitAppearance !== i ? (s.appendChild(o), e = t.defaultView, r = e.getComputedStyle && e.getComputedStyle(o, null).WebkitAppearance !== "textfield" && o.offsetHeight !== 0, s.removeChild(o)) : /^(search|tel)$/.test(f) || (r = /^(url|email)$/.test(f) ? o.checkValidity && o.checkValidity() === !1 : o.value != g)), ht[n[u]] = !!r;
  6477.                return ht
  6478.            }("search tel url email datetime date month week time datetime-local number range color".split(" "))
  6479.        }
  6480.        var u = {},
  6481.            d = !0,
  6482.            s = t.documentElement,
  6483.            e = "modernizr",
  6484.            ut = t.createElement(e),
  6485.            c = ut.style,
  6486.            o = t.createElement("input"),
  6487.            g = ":)",
  6488.            ft = {}.toString,
  6489.            y = " -webkit- -moz- -o- -ms- ".split(" "),
  6490.            et = "Webkit Moz O ms",
  6491.            ot = et.split(" "),
  6492.            st = et.toLowerCase().split(" "),
  6493.            p = {
  6494.                svg: "http://www.w3.org/2000/svg"
  6495.             },
  6496.             r = {},
  6497.             ht = {},
  6498.             w = {},
  6499.             nt = [],
  6500.             tt = nt.slice,
  6501.             b, l = function(n, i, r, u) {
  6502.                 var l, a, c, v, f = t.createElement("div"),
  6503.                     h = t.body,
  6504.                     o = h || t.createElement("body");
  6505.                 if (parseInt(r, 10))
  6506.                     while (r--) c = t.createElement("div"), c.id = u ? u[r] : e + (r + 1), f.appendChild(c);
  6507.                 return l = ["&#173;", '<style id="s', e, '">', n, "<\/style>"].join(""), f.id = e, (h ? f : o).innerHTML += l, o.appendChild(f), h || (o.style.background = "", o.style.overflow = "hidden", v = s.style.overflow, s.style.overflow = "hidden", s.appendChild(o)), a = i(f, n), h ? f.parentNode.removeChild(f) : (o.parentNode.removeChild(o), s.style.overflow = v), !!a
  6508.             },
  6509.             at = function(t) {
  6510.                 var i = n.matchMedia || n.msMatchMedia,
  6511.                     r;
  6512.                 return i ? i(t) && i(t).matches || !1 : (l("@media " + t + " { #" + e + " { position: absolute; } }", function(t) {
  6513.                     r = (n.getComputedStyle ? getComputedStyle(t, null) : t.currentStyle).position == "absolute"
  6514.                 }), r)
  6515.             },
  6516.             ct = function() {
  6517.                 function r(r, u) {
  6518.                     u = u || t.createElement(n[r] || "div");
  6519.                     r = "on" + r;
  6520.                     var f = r in u;
  6521.                     return f || (u.setAttribute || (u = t.createElement("div")), u.setAttribute && u.removeAttribute && (u.setAttribute(r, ""), f = h(u[r], "function"), h(u[r], "undefined") || (u[r] = i), u.removeAttribute(r))), u = null, f
  6522.                 }
  6523.                 var n = {
  6524.                     select: "input",
  6525.                     change: "input",
  6526.                     submit: "form",
  6527.                     reset: "form",
  6528.                     error: "img",
  6529.                     load: "img",
  6530.                     abort: "img"
  6531.                 };
  6532.                 return r
  6533.             }(),
  6534.             it = {}.hasOwnProperty,
  6535.             rt, k;
  6536.         rt = h(it, "undefined") || h(it.call, "undefined") ? function(n, t) {
  6537.             return t in n && h(n.constructor.prototype[t], "undefined")
  6538.         } : function(n, t) {
  6539.             return it.call(n, t)
  6540.         };
  6541.         Function.prototype.bind || (Function.prototype.bind = function(n) {
  6542.             var t = this,
  6543.                 i, r;
  6544.             if (typeof t != "function") throw new TypeError;
  6545.             return i = tt.call(arguments, 1), r = function() {
  6546.                 var f, e, u;
  6547.                 return this instanceof r ? (f = function() {}, f.prototype = t.prototype, e = new f, u = t.apply(e, i.concat(tt.call(arguments))), Object(u) === u) ? u : e : t.apply(n, i.concat(tt.call(arguments)))
  6548.             }, r
  6549.         });
  6550.         r.flexbox = function() {
  6551.             return f("flexWrap")
  6552.         };
  6553.         r.flexboxlegacy = function() {
  6554.             return f("boxDirection")
  6555.         };
  6556.         r.canvas = function() {
  6557.             var n = t.createElement("canvas");
  6558.             return !!(n.getContext && n.getContext("2d"))
  6559.         };
  6560.         r.canvastext = function() {
  6561.             return !!(u.canvas && h(t.createElement("canvas").getContext("2d").fillText, "function"))
  6562.         };
  6563.         r.webgl = function() {
  6564.             return !!n.WebGLRenderingContext
  6565.         };
  6566.         r.touch = function() {
  6567.             var i;
  6568.             return "ontouchstart" in n || n.DocumentTouch && t instanceof DocumentTouch ? i = !0 : l(["@media (", y.join("touch-enabled),("), e, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(n) {
  6569.                 i = n.offsetTop === 9
  6570.             }), i
  6571.         };
  6572.         r.geolocation = function() {
  6573.             return "geolocation" in navigator
  6574.         };
  6575.         r.postmessage = function() {
  6576.             return !!n.postMessage
  6577.         };
  6578.         r.websqldatabase = function() {
  6579.             return !!n.openDatabase
  6580.         };
  6581.         r.indexedDB = function() {
  6582.             return !!f("indexedDB", n)
  6583.         };
  6584.         r.hashchange = function() {
  6585.             return ct("hashchange", n) && (t.documentMode === i || t.documentMode > 7)
  6586.         };
  6587.         r.history = function() {
  6588.             return !!(n.history && history.pushState)
  6589.         };
  6590.         r.draganddrop = function() {
  6591.             var n = t.createElement("div");
  6592.             return "draggable" in n || "ondragstart" in n && "ondrop" in n
  6593.         };
  6594.         r.websockets = function() {
  6595.             return "WebSocket" in n || "MozWebSocket" in n
  6596.         };
  6597.         r.rgba = function() {
  6598.             return a("background-color:rgba(150,255,150,.5)"), v(c.backgroundColor, "rgba")
  6599.         };
  6600.         r.hsla = function() {
  6601.             return a("background-color:hsla(120,40%,100%,.5)"), v(c.backgroundColor, "rgba") || v(c.backgroundColor, "hsla")
  6602.         };
  6603.         r.multiplebgs = function() {
  6604.             return a("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(c.background)
  6605.         };
  6606.         r.backgroundsize = function() {
  6607.             return f("backgroundSize")
  6608.         };
  6609.         r.borderimage = function() {
  6610.             return f("borderImage")
  6611.         };
  6612.         r.borderradius = function() {
  6613.             return f("borderRadius")
  6614.         };
  6615.         r.boxshadow = function() {
  6616.             return f("boxShadow")
  6617.         };
  6618.         r.textshadow = function() {
  6619.             return t.createElement("div").style.textShadow === ""
  6620.         };
  6621.         r.opacity = function() {
  6622.             return vt("opacity:.55"), /^0.55$/.test(c.opacity)
  6623.         };
  6624.         r.cssanimations = function() {
  6625.             return f("animationName")
  6626.         };
  6627.         r.csscolumns = function() {
  6628.             return f("columnCount")
  6629.         };
  6630.         r.cssgradients = function() {
  6631.             var n = "background-image:";
  6632.             return a((n + "-webkit- ".split(" ").join("gradient(linear,left top,right bottom,from(#9f9),to(white));" + n) + y.join("linear-gradient(left top,#9f9, white);" + n)).slice(0, -n.length)), v(c.backgroundImage, "gradient")
  6633.         };
  6634.         r.cssreflections = function() {
  6635.             return f("boxReflect")
  6636.         };
  6637.         r.csstransforms = function() {
  6638.             return !!f("transform")
  6639.         };
  6640.         r.csstransforms3d = function() {
  6641.             var n = !!f("perspective");
  6642.             return n && "webkitPerspective" in s.style && l("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function(t) {
  6643.                 n = t.offsetLeft === 9 && t.offsetHeight === 3
  6644.             }), n
  6645.         };
  6646.         r.csstransitions = function() {
  6647.             return f("transition")
  6648.         };
  6649.         r.fontface = function() {
  6650.             var n;
  6651.             return l('@font-face {font-family:"font";src:url("https://")}', function(i, r) {
  6652.                 var f = t.getElementById("smodernizr"),
  6653.                     u = f.sheet || f.styleSheet,
  6654.                     e = u ? u.cssRules && u.cssRules[0] ? u.cssRules[0].cssText : u.cssText || "" : "";
  6655.                 n = /src/i.test(e) && e.indexOf(r.split(" ")[0]) === 0
  6656.             }), n
  6657.         };
  6658.         r.generatedcontent = function() {
  6659.             var n;
  6660.             return l(["#", e, "{font:0/0 a}#", e, ':after{content:"', g, '";visibility:hidden;font:3px/1 a}'].join(""), function(t) {
  6661.                 n = t.offsetHeight >= 3
  6662.             }), n
  6663.         };
  6664.         r.video = function() {
  6665.             var i = t.createElement("video"),
  6666.                 n = !1;
  6667.             try {
  6668.                 (n = !!i.canPlayType) && (n = new Boolean(n), n.ogg = i.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), n.h264 = i.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), n.webm = i.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""))
  6669.             } catch (r) {}
  6670.             return n
  6671.         };
  6672.         r.audio = function() {
  6673.             var i = t.createElement("audio"),
  6674.                 n = !1;
  6675.             try {
  6676.                 (n = !!i.canPlayType) && (n = new Boolean(n), n.ogg = i.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), n.mp3 = i.canPlayType("audio/mpeg;").replace(/^no$/, ""), n.wav = i.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), n.m4a = (i.canPlayType("audio/x-m4a;") || i.canPlayType("audio/aac;")).replace(/^no$/, ""))
  6677.             } catch (r) {}
  6678.             return n
  6679.         };
  6680.         r.localstorage = function() {
  6681.             try {
  6682.                 return localStorage.setItem(e, e), localStorage.removeItem(e), !0
  6683.             } catch (n) {
  6684.                 return !1
  6685.             }
  6686.         };
  6687.         r.sessionstorage = function() {
  6688.             try {
  6689.                 return sessionStorage.setItem(e, e), sessionStorage.removeItem(e), !0
  6690.             } catch (n) {
  6691.                 return !1
  6692.             }
  6693.         };
  6694.         r.webworkers = function() {
  6695.             return !!n.Worker
  6696.         };
  6697.         r.applicationcache = function() {
  6698.             return !!n.applicationCache
  6699.         };
  6700.         r.svg = function() {
  6701.             return !!t.createElementNS && !!t.createElementNS(p.svg, "svg").createSVGRect
  6702.         };
  6703.         r.inlinesvg = function() {
  6704.             var n = t.createElement("div");
  6705.             return n.innerHTML = "<svg/>", (n.firstChild && n.firstChild.namespaceURI) == p.svg
  6706.         };
  6707.         r.smil = function() {
  6708.             return !!t.createElementNS && /SVGAnimate/.test(ft.call(t.createElementNS(p.svg, "animate")))
  6709.         };
  6710.         r.svgclippaths = function() {
  6711.             return !!t.createElementNS && /SVGClipPath/.test(ft.call(t.createElementNS(p.svg, "clipPath")))
  6712.         };
  6713.         for (k in r) rt(r, k) && (b = k.toLowerCase(), u[b] = r[k](), nt.push((u[b] ? "" : "no-") + b));
  6714.         return u.input || pt(), u.addTest = function(n, t) {
  6715.                 if (typeof n == "object")
  6716.                     for (var r in n) rt(n, r) && u.addTest(r, n[r]);
  6717.                 else {
  6718.                     if (n = n.toLowerCase(), u[n] !== i) return u;
  6719.                     t = typeof t == "function" ? t() : t;
  6720.                     typeof d != "undefined" && d && (s.className += " " + (t ? "" : "no-") + n);
  6721.                     u[n] = t
  6722.                 }
  6723.                 return u
  6724.             }, a(""), ut = o = null,
  6725.             function(n, t) {
  6726.                 function p(n, t) {
  6727.                     var i = n.createElement("p"),
  6728.                         r = n.getElementsByTagName("head")[0] || n.documentElement;
  6729.                     return i.innerHTML = "x<style>" + t + "<\/style>", r.insertBefore(i.lastChild, r.firstChild)
  6730.                 }
  6731.  
  6732.                 function c() {
  6733.                     var n = r.elements;
  6734.                     return typeof n == "string" ? n.split(" ") : n
  6735.                 }
  6736.  
  6737.                 function o(n) {
  6738.                     var t = h[n[s]];
  6739.                     return t || (t = {}, e++, n[s] = e, h[e] = t), t
  6740.                 }
  6741.  
  6742.                 function l(n, r, u) {
  6743.                     if (r || (r = t), i) return r.createElement(n);
  6744.                     u || (u = o(r));
  6745.                     var f;
  6746.                     return f = u.cache[n] ? u.cache[n].cloneNode() : y.test(n) ? (u.cache[n] = u.createElem(n)).cloneNode() : u.createElem(n), f.canHaveChildren && !v.test(n) && !f.tagUrn ? u.frag.appendChild(f) : f
  6747.                 }
  6748.  
  6749.                 function w(n, r) {
  6750.                     if (n || (n = t), i) return n.createDocumentFragment();
  6751.                     r = r || o(n);
  6752.                     for (var f = r.frag.cloneNode(), u = 0, e = c(), s = e.length; u < s; u++) f.createElement(e[u]);
  6753.                     return f
  6754.                 }
  6755.  
  6756.                 function b(n, t) {
  6757.                     t.cache || (t.cache = {}, t.createElem = n.createElement, t.createFrag = n.createDocumentFragment, t.frag = t.createFrag());
  6758.                     n.createElement = function(i) {
  6759.                         return r.shivMethods ? l(i, n, t) : t.createElem(i)
  6760.                     };
  6761.                     n.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + c().join().replace(/[\w\-]+/g, function(n) {
  6762.                         return t.createElem(n), t.frag.createElement(n), 'c("' + n + '")'
  6763.                     }) + ");return n}")(r, t.frag)
  6764.                 }
  6765.  
  6766.                 function a(n) {
  6767.                     n || (n = t);
  6768.                     var u = o(n);
  6769.                     return !r.shivCSS || f || u.hasCSS || (u.hasCSS = !!p(n, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), i || b(n, u), n
  6770.                 }
  6771.                 var u = n.html5 || {},
  6772.                     v = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
  6773.                     y = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
  6774.                     f, s = "_html5shiv",
  6775.                     e = 0,
  6776.                     h = {},
  6777.                     i, r;
  6778.                 (function() {
  6779.                     try {
  6780.                         var n = t.createElement("a");
  6781.                         n.innerHTML = "<xyz><\/xyz>";
  6782.                         f = "hidden" in n;
  6783.                         i = n.childNodes.length == 1 || function() {
  6784.                             t.createElement("a");
  6785.                             var n = t.createDocumentFragment();
  6786.                             return typeof n.cloneNode == "undefined" || typeof n.createDocumentFragment == "undefined" || typeof n.createElement == "undefined"
  6787.                         }()
  6788.                     } catch (r) {
  6789.                         f = !0;
  6790.                         i = !0
  6791.                     }
  6792.                 })();
  6793.                 r = {
  6794.                     elements: u.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
  6795.                     version: "3.7.0",
  6796.                     shivCSS: u.shivCSS !== !1,
  6797.                     supportsUnknownElements: i,
  6798.                     shivMethods: u.shivMethods !== !1,
  6799.                     type: "default",
  6800.                     shivDocument: a,
  6801.                     createElement: l,
  6802.                     createDocumentFragment: w
  6803.                 };
  6804.                 n.html5 = r;
  6805.                 a(t)
  6806.             }(this, t), u._version = "2.8.3", u._prefixes = y, u._domPrefixes = st, u._cssomPrefixes = ot, u.mq = at, u.hasEvent = ct, u.testProp = function(n) {
  6807.                 return lt([n])
  6808.             }, u.testAllProps = f, u.testStyles = l, u.prefixed = function(n, t, i) {
  6809.                 return t ? f(n, t, i) : f(n, "pfx")
  6810.             }, s.className = s.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (d ? " js " + nt.join(" ") : ""), u
  6811.     }(this, this.document),
  6812.     function(n, t, i) {
  6813.         function h(t, i) {
  6814.             this.bodyOverflowX;
  6815.             this.callbacks = {
  6816.                 hide: [],
  6817.                 show: []
  6818.             };
  6819.             this.checkInterval = null;
  6820.             this.Content;
  6821.             this.$el = n(t);
  6822.             this.$elProxy;
  6823.             this.elProxyPosition;
  6824.             this.enabled = !0;
  6825.             this.options = n.extend({}, f, i);
  6826.             this.mouseIsOverProxy = !1;
  6827.             this.namespace = "tooltipster-" + Math.round(Math.random() * 1e5);
  6828.             this.Status = "hidden";
  6829.             this.timerHide = null;
  6830.             this.timerShow = null;
  6831.             this.$tooltip;
  6832.             this.options.iconTheme = this.options.iconTheme.replace(".", "");
  6833.             this.options.theme = this.options.theme.replace(".", "");
  6834.             this._init()
  6835.         }
  6836.  
  6837.         function e(t, i) {
  6838.             var r = !0;
  6839.             return n.each(t, function(n) {
  6840.                 if (typeof i[n] == "undefined" || t[n] !== i[n]) return r = !1, !1
  6841.             }), r
  6842.         }
  6843.  
  6844.         function o() {
  6845.             return !s && r
  6846.         }
  6847.  
  6848.         function u() {
  6849.             var u = i.body || i.documentElement,
  6850.                 r = u.style,
  6851.                 n = "transition",
  6852.                 t;
  6853.             if (typeof r[n] == "string") return !0;
  6854.             for (v = ["Moz", "Webkit", "Khtml", "O", "ms"], n = n.charAt(0).toUpperCase() + n.substr(1), t = 0; t < v.length; t++)
  6855.                 if (typeof r[v[t] + n] == "string") return !0;
  6856.             return !1
  6857.         }
  6858.         var f = {
  6859.                 animation: "fade",
  6860.                 arrow: !0,
  6861.                 arrowColor: "",
  6862.                 autoClose: !0,
  6863.                 content: null,
  6864.                 contentAsHTML: !1,
  6865.                 contentCloning: !0,
  6866.                 debug: !0,
  6867.                 delay: 200,
  6868.                 minWidth: 0,
  6869.                 maxWidth: null,
  6870.                 functionInit: function() {},
  6871.                 functionBefore: function(n, t) {
  6872.                     t()
  6873.                 },
  6874.                 functionReady: function() {},
  6875.                 functionAfter: function() {},
  6876.                 hideOnClick: !1,
  6877.                 icon: "(?)",
  6878.                 iconCloning: !0,
  6879.                 iconDesktop: !1,
  6880.                 iconTouch: !1,
  6881.                 iconTheme: "tooltipster-icon",
  6882.                 interactive: !1,
  6883.                 interactiveTolerance: 350,
  6884.                 multiple: !1,
  6885.                 offsetX: 0,
  6886.                 offsetY: 0,
  6887.                 onlyOne: !1,
  6888.                 position: "top",
  6889.                 positionTracker: !1,
  6890.                 positionTrackerCallback: function() {
  6891.                     this.option("trigger") == "hover" && this.option("autoClose") && this.hide()
  6892.                 },
  6893.                 restoration: "current",
  6894.                 speed: 350,
  6895.                 timer: 0,
  6896.                 theme: "tooltipster-default",
  6897.                 touchDevices: !0,
  6898.                 trigger: "hover",
  6899.                 updateAnimation: !0
  6900.             },
  6901.             r, s;
  6902.         h.prototype = {
  6903.             _init: function() {
  6904.                 var t = this,
  6905.                     u, f;
  6906.                 if (i.querySelector)
  6907.                     if (u = null, t.$el.data("tooltipster-initialTitle") === undefined && (u = t.$el.attr("title"), u === undefined && (u = null), t.$el.data("tooltipster-initialTitle", u)), t.options.content !== null ? t._content_set(t.options.content) : t._content_set(u), f = t.options.functionInit.call(t.$el, t.$el, t.Content), typeof f != "undefined" && t._content_set(f), t.$el.removeAttr("title").addClass("tooltipstered"), !r && t.options.iconDesktop || r && t.options.iconTouch ? (typeof t.options.icon == "string" ? (t.$elProxy = n('<span class="' + t.options.iconTheme + '"><\/span>'), t.$elProxy.text(t.options.icon)) : t.$elProxy = t.options.iconCloning ? t.options.icon.clone(!0) : t.options.icon, t.$elProxy.insertAfter(t.$el)) : t.$elProxy = t.$el, t.options.trigger == "hover") {
  6908.                         t.$elProxy.on("mouseenter." + t.namespace, function() {
  6909.                             (!o() || t.options.touchDevices) && (t.mouseIsOverProxy = !0, t._show())
  6910.                         }).on("mouseleave." + t.namespace, function() {
  6911.                             (!o() || t.options.touchDevices) && (t.mouseIsOverProxy = !1)
  6912.                         });
  6913.                         if (r && t.options.touchDevices) t.$elProxy.on("touchstart." + t.namespace, function() {
  6914.                             t._showNow()
  6915.                         })
  6916.                     } else if (t.options.trigger == "click") t.$elProxy.on("click." + t.namespace, function() {
  6917.                     (!o() || t.options.touchDevices) && t._show()
  6918.                 })
  6919.             },
  6920.             _show: function() {
  6921.                 var n = this;
  6922.                 n.Status != "shown" && n.Status != "appearing" && (n.options.delay ? n.timerShow = setTimeout(function() {
  6923.                     (n.options.trigger == "click" || n.options.trigger == "hover" && n.mouseIsOverProxy) && n._showNow()
  6924.                 }, n.options.delay) : n._showNow())
  6925.             },
  6926.             _showNow: function(i) {
  6927.                 var f = this;
  6928.                 f.options.functionBefore.call(f.$el, f.$el, function() {
  6929.                     var e, s, o;
  6930.                     if (f.enabled && f.Content !== null) {
  6931.                         if (i && f.callbacks.show.push(i), f.callbacks.hide = [], clearTimeout(f.timerShow), f.timerShow = null, clearTimeout(f.timerHide), f.timerHide = null, f.options.onlyOne && n(".tooltipstered").not(f.$el).each(function(t, i) {
  6932.                                 var r = n(i),
  6933.                                     u = r.data("tooltipster-ns");
  6934.                                 n.each(u, function(n, t) {
  6935.                                     var i = r.data(t),
  6936.                                         u = i.status(),
  6937.                                         f = i.option("autoClose");
  6938.                                     u !== "hidden" && u !== "disappearing" && f && i.hide()
  6939.                                 })
  6940.                             }), e = function() {
  6941.                                 f.Status = "shown";
  6942.                                 n.each(f.callbacks.show, function(n, t) {
  6943.                                     t.call(f.$el)
  6944.                                 });
  6945.                                 f.callbacks.show = []
  6946.                             }, f.Status !== "hidden") s = 0, f.Status === "disappearing" ? (f.Status = "appearing", u() ? (f.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-" + f.options.animation + "-show"), f.options.speed > 0 && f.$tooltip.delay(f.options.speed), f.$tooltip.queue(e)) : f.$tooltip.stop().fadeIn(e)) : f.Status === "shown" && e();
  6947.                         else {
  6948.                             f.Status = "appearing";
  6949.                             s = f.options.speed;
  6950.                             f.bodyOverflowX = n("body").css("overflow-x");
  6951.                             n("body").css("overflow-x", "hidden");
  6952.                             var h = "tooltipster-" + f.options.animation,
  6953.                                 c = "-webkit-transition-duration: " + f.options.speed + "ms; -webkit-animation-duration: " + f.options.speed + "ms; -moz-transition-duration: " + f.options.speed + "ms; -moz-animation-duration: " + f.options.speed + "ms; -o-transition-duration: " + f.options.speed + "ms; -o-animation-duration: " + f.options.speed + "ms; -ms-transition-duration: " + f.options.speed + "ms; -ms-animation-duration: " + f.options.speed + "ms; transition-duration: " + f.options.speed + "ms; animation-duration: " + f.options.speed + "ms;",
  6954.                                 l = f.options.minWidth ? "min-width:" + Math.round(f.options.minWidth) + "px;" : "",
  6955.                                 a = f.options.maxWidth ? "max-width:" + Math.round(f.options.maxWidth) + "px;" : "",
  6956.                                 v = f.options.interactive ? "pointer-events: auto;" : "";
  6957.                             f.$tooltip = n('<div class="tooltipster-base ' + f.options.theme + '" style="' + l + " " + a + " " + v + " " + c + '"><div class="tooltipster-content"><\/div><\/div>');
  6958.                             u() && f.$tooltip.addClass(h);
  6959.                             f._content_insert();
  6960.                             f.$tooltip.appendTo("body");
  6961.                             f.reposition();
  6962.                             f.options.functionReady.call(f.$el, f.$el, f.$tooltip);
  6963.                             u() ? (f.$tooltip.addClass(h + "-show"), f.options.speed > 0 && f.$tooltip.delay(f.options.speed), f.$tooltip.queue(e)) : f.$tooltip.css("display", "none").fadeIn(f.options.speed, e);
  6964.                             f._interval_set();
  6965.                             n(t).on("scroll." + f.namespace + " resize." + f.namespace, function() {
  6966.                                 f.reposition()
  6967.                             });
  6968.                             if (f.options.autoClose)
  6969.                                 if (n("body").off("." + f.namespace), f.options.trigger == "hover") {
  6970.                                     if (r && setTimeout(function() {
  6971.                                             n("body").on("touchstart." + f.namespace, function() {
  6972.                                                 f.hide()
  6973.                                             })
  6974.                                         }, 0), f.options.interactive) {
  6975.                                         if (r) f.$tooltip.on("touchstart." + f.namespace, function(n) {
  6976.                                             n.stopPropagation()
  6977.                                         });
  6978.                                         o = null;
  6979.                                         f.$elProxy.add(f.$tooltip).on("mouseleave." + f.namespace + "-autoClose", function() {
  6980.                                             clearTimeout(o);
  6981.                                             o = setTimeout(function() {
  6982.                                                 f.hide()
  6983.                                             }, f.options.interactiveTolerance)
  6984.                                         }).on("mouseenter." + f.namespace + "-autoClose", function() {
  6985.                                             clearTimeout(o)
  6986.                                         })
  6987.                                     } else f.$elProxy.on("mouseleave." + f.namespace + "-autoClose", function() {
  6988.                                         f.hide()
  6989.                                     });
  6990.                                     if (f.options.hideOnClick) f.$elProxy.on("click." + f.namespace + "-autoClose", function() {
  6991.                                         f.hide()
  6992.                                     })
  6993.                                 } else if (f.options.trigger == "click" && (setTimeout(function() {
  6994.                                     n("body").on("click." + f.namespace + " touchstart." + f.namespace, function() {
  6995.                                         f.hide()
  6996.                                     })
  6997.                                 }, 0), f.options.interactive)) f.$tooltip.on("click." + f.namespace + " touchstart." + f.namespace, function(n) {
  6998.                                 n.stopPropagation()
  6999.                             })
  7000.                         }
  7001.                         f.options.timer > 0 && (f.timerHide = setTimeout(function() {
  7002.                             f.timerHide = null;
  7003.                             f.hide()
  7004.                         }, f.options.timer + s))
  7005.                     }
  7006.                 })
  7007.             },
  7008.             _interval_set: function() {
  7009.                 var t = this;
  7010.                 t.checkInterval = setInterval(function() {
  7011.                     if (n("body").find(t.$el).length === 0 || n("body").find(t.$elProxy).length === 0 || t.Status == "hidden" || n("body").find(t.$tooltip).length === 0)(t.Status == "shown" || t.Status == "appearing") && t.hide(), t._interval_cancel();
  7012.                     else if (t.options.positionTracker) {
  7013.                         var i = t._repositionInfo(t.$elProxy),
  7014.                             r = !1;
  7015.                         e(i.dimension, t.elProxyPosition.dimension) && (t.$elProxy.css("position") === "fixed" ? e(i.position, t.elProxyPosition.position) && (r = !0) : e(i.offset, t.elProxyPosition.offset) && (r = !0));
  7016.                         r || (t.reposition(), t.options.positionTrackerCallback.call(t, t.$el))
  7017.                     }
  7018.                 }, 200)
  7019.             },
  7020.             _interval_cancel: function() {
  7021.                 clearInterval(this.checkInterval);
  7022.                 this.checkInterval = null
  7023.             },
  7024.             _content_set: function(n) {
  7025.                 typeof n == "object" && n !== null && this.options.contentCloning && (n = n.clone(!0));
  7026.                 this.Content = n
  7027.             },
  7028.             _content_insert: function() {
  7029.                 var n = this,
  7030.                     t = this.$tooltip.find(".tooltipster-content");
  7031.                 typeof n.Content != "string" || n.options.contentAsHTML ? t.empty().append(n.Content) : t.text(n.Content)
  7032.             },
  7033.             _update: function(n) {
  7034.                 var t = this;
  7035.                 t._content_set(n);
  7036.                 t.Content !== null ? t.Status !== "hidden" && (t._content_insert(), t.reposition(), t.options.updateAnimation && (u() ? (t.$tooltip.css({
  7037.                     width: "",
  7038.                     "-webkit-transition": "all " + t.options.speed + "ms, width 0ms, height 0ms, left 0ms, top 0ms",
  7039.                     "-moz-transition": "all " + t.options.speed + "ms, width 0ms, height 0ms, left 0ms, top 0ms",
  7040.                     "-o-transition": "all " + t.options.speed + "ms, width 0ms, height 0ms, left 0ms, top 0ms",
  7041.                     "-ms-transition": "all " + t.options.speed + "ms, width 0ms, height 0ms, left 0ms, top 0ms",
  7042.                     transition: "all " + t.options.speed + "ms, width 0ms, height 0ms, left 0ms, top 0ms"
  7043.                 }).addClass("tooltipster-content-changing"), setTimeout(function() {
  7044.                     t.Status != "hidden" && (t.$tooltip.removeClass("tooltipster-content-changing"), setTimeout(function() {
  7045.                         t.Status !== "hidden" && t.$tooltip.css({
  7046.                             "-webkit-transition": t.options.speed + "ms",
  7047.                             "-moz-transition": t.options.speed + "ms",
  7048.                             "-o-transition": t.options.speed + "ms",
  7049.                             "-ms-transition": t.options.speed + "ms",
  7050.                             transition: t.options.speed + "ms"
  7051.                         })
  7052.                     }, t.options.speed))
  7053.                 }, t.options.speed)) : t.$tooltip.fadeTo(t.options.speed, .5, function() {
  7054.                     t.Status != "hidden" && t.$tooltip.fadeTo(t.options.speed, 1)
  7055.                 }))) : t.hide()
  7056.             },
  7057.             _repositionInfo: function(n) {
  7058.                 return {
  7059.                     dimension: {
  7060.                         height: n.outerHeight(!1),
  7061.                         width: n.outerWidth(!1)
  7062.                     },
  7063.                     offset: n.offset(),
  7064.                     position: {
  7065.                         left: parseInt(n.css("left")),
  7066.                         top: parseInt(n.css("top"))
  7067.                     }
  7068.                 }
  7069.             },
  7070.             hide: function(i) {
  7071.                 var r = this,
  7072.                     f, e;
  7073.                 return i && r.callbacks.hide.push(i), r.callbacks.show = [], clearTimeout(r.timerShow), r.timerShow = null, clearTimeout(r.timerHide), r.timerHide = null, f = function() {
  7074.                     n.each(r.callbacks.hide, function(n, t) {
  7075.                         t.call(r.$el)
  7076.                     });
  7077.                     r.callbacks.hide = []
  7078.                 }, r.Status == "shown" || r.Status == "appearing" ? (r.Status = "disappearing", e = function() {
  7079.                     r.Status = "hidden";
  7080.                     typeof r.Content == "object" && r.Content !== null && r.Content.detach();
  7081.                     r.$tooltip.remove();
  7082.                     r.$tooltip = null;
  7083.                     n(t).off("." + r.namespace);
  7084.                     n("body").off("." + r.namespace).css("overflow-x", r.bodyOverflowX);
  7085.                     n("body").off("." + r.namespace);
  7086.                     r.$elProxy.off("." + r.namespace + "-autoClose");
  7087.                     r.options.functionAfter.call(r.$el, r.$el);
  7088.                     f()
  7089.                 }, u() ? (r.$tooltip.clearQueue().removeClass("tooltipster-" + r.options.animation + "-show").addClass("tooltipster-dying"), r.options.speed > 0 && r.$tooltip.delay(r.options.speed), r.$tooltip.queue(e)) : r.$tooltip.stop().fadeOut(r.options.speed, e)) : r.Status == "hidden" && f(), r
  7090.             },
  7091.             show: function(n) {
  7092.                 return this._showNow(n), this
  7093.             },
  7094.             update: function(n) {
  7095.                 return this.content(n)
  7096.             },
  7097.             content: function(n) {
  7098.                 return typeof n == "undefined" ? this.Content : (this._update(n), this)
  7099.             },
  7100.             reposition: function() {
  7101.                 var r = this,
  7102.                     k, y, vt, p, ut, ft, w, dt, a, nt, kt, tt, gt, ni;
  7103.                 if (n("body").find(r.$tooltip).length !== 0) {
  7104.                     r.$tooltip.css("width", "");
  7105.                     r.elProxyPosition = r._repositionInfo(r.$elProxy);
  7106.                     var o = null,
  7107.                         b = n(t).width(),
  7108.                         i = r.elProxyPosition,
  7109.                         e = r.$tooltip.outerWidth(!1),
  7110.                         ui = r.$tooltip.innerWidth() + 1,
  7111.                         c = r.$tooltip.outerHeight(!1);
  7112.                     if (r.$elProxy.is("area")) {
  7113.                         var yt = r.$elProxy.attr("shape"),
  7114.                             ti = r.$elProxy.parent().attr("name"),
  7115.                             et = n('img[usemap="#' + ti + '"]'),
  7116.                             ot = et.offset().left,
  7117.                             st = et.offset().top,
  7118.                             v = r.$elProxy.attr("coords") !== undefined ? r.$elProxy.attr("coords").split(",") : undefined;
  7119.                         if (yt == "circle") {
  7120.                             var pt = parseInt(v[0]),
  7121.                                 wt = parseInt(v[1]),
  7122.                                 ht = parseInt(v[2]);
  7123.                             i.dimension.height = ht * 2;
  7124.                             i.dimension.width = ht * 2;
  7125.                             i.offset.top = st + wt - ht;
  7126.                             i.offset.left = ot + pt - ht
  7127.                         } else if (yt == "rect") {
  7128.                             var pt = parseInt(v[0]),
  7129.                                 wt = parseInt(v[1]),
  7130.                                 ii = parseInt(v[2]),
  7131.                                 ri = parseInt(v[3]);
  7132.                             i.dimension.height = ri - wt;
  7133.                             i.dimension.width = ii - pt;
  7134.                             i.offset.top = st + wt;
  7135.                             i.offset.left = ot + pt
  7136.                         } else if (yt == "poly") {
  7137.                             var it = 0,
  7138.                                 rt = 0,
  7139.                                 ct = 0,
  7140.                                 lt = 0,
  7141.                                 bt = "even";
  7142.                             for (k = 0; k < v.length; k++) y = parseInt(v[k]), bt == "even" ? (y > ct && (ct = y, k === 0 && (it = ct)), y < it && (it = y), bt = "odd") : (y > lt && (lt = y, k == 1 && (rt = lt)), y < rt && (rt = y), bt = "even");
  7143.                             i.dimension.height = lt - rt;
  7144.                             i.dimension.width = ct - it;
  7145.                             i.offset.top = st + rt;
  7146.                             i.offset.left = ot + it
  7147.                         } else i.dimension.height = et.outerHeight(!1), i.dimension.width = et.outerWidth(!1), i.offset.top = st, i.offset.left = ot
  7148.                     }
  7149.                     var u = 0,
  7150.                         at = 0,
  7151.                         l = 0,
  7152.                         s = parseInt(r.options.offsetY),
  7153.                         h = parseInt(r.options.offsetX),
  7154.                         f = r.options.position;
  7155.  
  7156.                     function d() {
  7157.                         var i = n(t).scrollLeft();
  7158.                         u - i < 0 && (o = u - i, u = i);
  7159.                         u + e - i > b && (o = u - (b + i - e), u = b + i - e)
  7160.                     }
  7161.  
  7162.                     function g(r, u) {
  7163.                         i.offset.top - n(t).scrollTop() - c - s - 12 < 0 && u.indexOf("top") > -1 && (f = r);
  7164.                         i.offset.top + i.dimension.height + c + 12 + s > n(t).scrollTop() + n(t).height() && u.indexOf("bottom") > -1 && (f = r, l = i.offset.top - c - s - 12)
  7165.                     }
  7166.                     f == "top" && (vt = i.offset.left + e - (i.offset.left + i.dimension.width), u = i.offset.left + h - vt / 2, l = i.offset.top - c - s - 12, d(), g("bottom", "top"));
  7167.                     f == "top-left" && (u = i.offset.left + h, l = i.offset.top - c - s - 12, d(), g("bottom-left", "top-left"));
  7168.                     f == "top-right" && (u = i.offset.left + i.dimension.width + h - e, l = i.offset.top - c - s - 12, d(), g("bottom-right", "top-right"));
  7169.                     f == "bottom" && (vt = i.offset.left + e - (i.offset.left + i.dimension.width), u = i.offset.left - vt / 2 + h, l = i.offset.top + i.dimension.height + s + 12, d(), g("top", "bottom"));
  7170.                     f == "bottom-left" && (u = i.offset.left + h, l = i.offset.top + i.dimension.height + s + 12, d(), g("top-left", "bottom-left"));
  7171.                     f == "bottom-right" && (u = i.offset.left + i.dimension.width + h - e, l = i.offset.top + i.dimension.height + s + 12, d(), g("top-right", "bottom-right"));
  7172.                     f == "left" && (u = i.offset.left - h - e - 12, at = i.offset.left + h + i.dimension.width + 12, p = i.offset.top + c - (i.offset.top + i.dimension.height), l = i.offset.top - p / 2 - s, u < 0 && at + e > b ? (ut = parseFloat(r.$tooltip.css("border-width")) * 2, ft = e + u - ut, r.$tooltip.css("width", ft + "px"), c = r.$tooltip.outerHeight(!1), u = i.offset.left - h - ft - 12 - ut, p = i.offset.top + c - (i.offset.top + i.dimension.height), l = i.offset.top - p / 2 - s) : u < 0 && (u = i.offset.left + h + i.dimension.width + 12, o = "left"));
  7173.                     f == "right" && (u = i.offset.left + h + i.dimension.width + 12, at = i.offset.left - h - e - 12, p = i.offset.top + c - (i.offset.top + i.dimension.height), l = i.offset.top - p / 2 - s, u + e > b && at < 0 ? (ut = parseFloat(r.$tooltip.css("border-width")) * 2, ft = b - u - ut, r.$tooltip.css("width", ft + "px"), c = r.$tooltip.outerHeight(!1), p = i.offset.top + c - (i.offset.top + i.dimension.height), l = i.offset.top - p / 2 - s) : u + e > b && (u = i.offset.left - h - e - 12, o = "right"));
  7174.                     r.options.arrow && (w = "tooltipster-arrow-" + f, dt = r.options.arrowColor.length < 1 ? r.$tooltip.css("background-color") : r.options.arrowColor, o ? o == "left" ? (w = "tooltipster-arrow-right", o = "") : o == "right" ? (w = "tooltipster-arrow-left", o = "") : o = "left:" + Math.round(o) + "px;" : o = "", f == "top" || f == "top-left" || f == "top-right" ? (a = parseFloat(r.$tooltip.css("border-bottom-width")), nt = r.$tooltip.css("border-bottom-color")) : f == "bottom" || f == "bottom-left" || f == "bottom-right" ? (a = parseFloat(r.$tooltip.css("border-top-width")), nt = r.$tooltip.css("border-top-color")) : f == "left" ? (a = parseFloat(r.$tooltip.css("border-right-width")), nt = r.$tooltip.css("border-right-color")) : f == "right" ? (a = parseFloat(r.$tooltip.css("border-left-width")), nt = r.$tooltip.css("border-left-color")) : (a = parseFloat(r.$tooltip.css("border-bottom-width")), nt = r.$tooltip.css("border-bottom-color")), a > 1 && a++, kt = "", a !== 0 && (tt = "", gt = "border-color: " + nt + ";", w.indexOf("bottom") !== -1 ? tt = "margin-top: -" + Math.round(a) + "px;" : w.indexOf("top") !== -1 ? tt = "margin-bottom: -" + Math.round(a) + "px;" : w.indexOf("left") !== -1 ? tt = "margin-right: -" + Math.round(a) + "px;" : w.indexOf("right") !== -1 && (tt = "margin-left: -" + Math.round(a) + "px;"), kt = '<span class="tooltipster-arrow-border" style="' + tt + " " + gt + ';"><\/span>'), r.$tooltip.find(".tooltipster-arrow").remove(), ni = '<div class="' + w + ' tooltipster-arrow" style="' + o + '">' + kt + '<span style="border-color:' + dt + ';"><\/span><\/div>', r.$tooltip.append(ni));
  7175.                     r.$tooltip.css({
  7176.                         top: Math.round(l) + "px",
  7177.                         left: Math.round(u) + "px"
  7178.                     })
  7179.                 }
  7180.                 return r
  7181.             },
  7182.             enable: function() {
  7183.                 return this.enabled = !0, this
  7184.             },
  7185.             disable: function() {
  7186.                 return this.hide(), this.enabled = !1, this
  7187.             },
  7188.             destroy: function() {
  7189.                 var t = this,
  7190.                     i, r;
  7191.                 return t.hide(), t.$el[0] !== t.$elProxy[0] && t.$elProxy.remove(), t.$el.removeData(t.namespace).off("." + t.namespace), i = t.$el.data("tooltipster-ns"), i.length === 1 ? (r = null, t.options.restoration === "previous" ? r = t.$el.data("tooltipster-initialTitle") : t.options.restoration === "current" && (r = typeof t.Content == "string" ? t.Content : n("<div><\/div>").append(t.Content).html()), r && t.$el.attr("title", r), t.$el.removeClass("tooltipstered").removeData("tooltipster-ns").removeData("tooltipster-initialTitle")) : (i = n.grep(i, function(n) {
  7192.                     return n !== t.namespace
  7193.                 }), t.$el.data("tooltipster-ns", i)), t
  7194.             },
  7195.             elementIcon: function() {
  7196.                 return this.$el[0] !== this.$elProxy[0] ? this.$elProxy[0] : undefined
  7197.             },
  7198.             elementTooltip: function() {
  7199.                 return this.$tooltip ? this.$tooltip[0] : undefined
  7200.             },
  7201.             option: function(n, t) {
  7202.                 return typeof t == "undefined" ? this.options[n] : (this.options[n] = t, this)
  7203.             },
  7204.             status: function() {
  7205.                 return this.Status
  7206.             }
  7207.         };
  7208.         n.fn["tooltipster"] = function() {
  7209.             var t = arguments,
  7210.                 r, i;
  7211.             if (this.length === 0) {
  7212.                 if (typeof t[0] == "string") {
  7213.                     r = !0;
  7214.                     switch (t[0]) {
  7215.                         case "setDefaults":
  7216.                             n.extend(f, t[1]);
  7217.                             break;
  7218.                         default:
  7219.                             r = !1
  7220.                     }
  7221.                     return r ? !0 : this
  7222.                 }
  7223.                 return this
  7224.             }
  7225.             if (typeof t[0] == "string") return i = "#*$~&", this.each(function() {
  7226.                 var f = n(this).data("tooltipster-ns"),
  7227.                     r = f ? n(this).data(f[0]) : null,
  7228.                     u;
  7229.                 if (r) {
  7230.                     if (typeof r[t[0]] == "function") u = r[t[0]](t[1], t[2]);
  7231.                     else throw new Error('Unknown method .tooltipster("' + t[0] + '")');
  7232.                     if (u !== r) return i = u, !1
  7233.                 } else throw new Error("You called Tooltipster's \"" + t[0] + '" method on an uninitialized element');
  7234.             }), i !== "#*$~&" ? i : this;
  7235.             var u = [],
  7236.                 e = t[0] && typeof t[0].multiple != "undefined",
  7237.                 o = e && t[0].multiple || !e && f.multiple,
  7238.                 s = t[0] && typeof t[0].debug != "undefined",
  7239.                 c = s && t[0].debug || !s && f.debug;
  7240.             return this.each(function() {
  7241.                 var f = !1,
  7242.                     i = n(this).data("tooltipster-ns"),
  7243.                     r = null;
  7244.                 i ? o ? f = !0 : c && console.log('Tooltipster: one or more tooltips are already attached to this element: ignoring. Use the "multiple" option to attach more tooltips.') : f = !0;
  7245.                 f && (r = new h(this, t[0]), i || (i = []), i.push(r.namespace), n(this).data("tooltipster-ns", i), n(this).data(r.namespace, r));
  7246.                 u.push(r)
  7247.             }), o ? u : this
  7248.         };
  7249.         r = !!("ontouchstart" in t);
  7250.         s = !1;
  7251.         n("body").one("mousemove", function() {
  7252.             s = !0
  7253.         })
  7254.     }(jQuery, window, document);
  7255. UI = window.UI || {};
  7256. UI.Notifications = function() {
  7257.     function t(t, i) {
  7258.         n.forEach(function(n) {
  7259.             n.event == t && n.callback(i)
  7260.         })
  7261.     }
  7262.     var n = [];
  7263.     return {
  7264.         subscribe: function(t, i) {
  7265.             n.push({
  7266.                 event: t,
  7267.                 callback: i
  7268.             })
  7269.         },
  7270.         unSubscribe: function(t, i) {
  7271.             n = n.filter(function(n) {
  7272.                 if (n.event != t || n.callback != i) return n
  7273.             })
  7274.         },
  7275.         clear: function(t) {
  7276.             n = n.filter(function(n) {
  7277.                 if (n.event !== t) return n
  7278.             })
  7279.         },
  7280.         raise: function(n, i) {
  7281.             t(n, i)
  7282.         }
  7283.     }
  7284. }();
  7285. UI.Common = {
  7286.     debug: !1,
  7287.     availableWidth: function(n) {
  7288.         return $(n).innerWidth()
  7289.     },
  7290.     htmlEscape: function(n) {
  7291.         return String(n).replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;")
  7292.     },
  7293.     isMobile: function() {
  7294.         return !1
  7295.     },
  7296.     isCommentPage: function() {
  7297.         return /\/comments\//i.test(window.location.href)
  7298.     },
  7299.     isMessagePage: function() {
  7300.         return /\/messaging\//i.test(window.location.href)
  7301.     },
  7302.     fileExtension: function(n, t) {
  7303.         if (n) try {
  7304.             var i = /\.+\w+$/i.exec(n);
  7305.             if (i && i.length > 0) return t ? i[0] : i[0].replace(".", "")
  7306.         } catch (r) {
  7307.             return ""
  7308.         }
  7309.         return ""
  7310.     },
  7311.     getDomainName: function() {
  7312.         return "notdone.com"
  7313.     },
  7314.     currentDomainRoot: function() {
  7315.         return location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "")
  7316.     },
  7317.     currentProtocol: function() {
  7318.         return location.protocol
  7319.     },
  7320.     resolveUrl: function(n) {
  7321.         return n ? n.indexOf("http") == 0 || n.indexOf("ftp") == 0 ? n : n.indexOf("~/") == 0 ? UI.Common.currentDomainRoot().concat("/", n.replace("~/", "")) : n.indexOf("/") == 0 ? UI.Common.currentDomainRoot().concat(n) : UI.Common.currentDomainRoot().concat("/", n) : n
  7322.     },
  7323.     queryString: function(n, t) {
  7324.         var r, e, i, u;
  7325.         if (t && t.length != 0 || (t = location.href), t.indexOf("?") > 0) {
  7326.             for (var o = t.split("?")[1], s = o.split("&"), f = []; i < s.length; i++) r = kv.split("="), e = r[1], f.push({
  7327.                 key: r[0],
  7328.                 value: unescape(e)
  7329.             });
  7330.             for (i = 0; i < keypairs.length; i++)
  7331.                 if (u = f[i], u.key == n) return u.value
  7332.         }
  7333.         return null
  7334.     },
  7335.     resizeTarget: function(n, t, i) {
  7336.         try {
  7337.             var e = !1,
  7338.                 u = n.prop("width"),
  7339.                 f = n.prop("height");
  7340.             (u == 0 || f == 0) && (u = parseInt(n.css("width")), f = parseInt(n.css("height")), e = !0);
  7341.             var o = u / f,
  7342.                 s = typeof i == "object" ? i : n.parent(),
  7343.                 r = UI.Common.availableWidth(s);
  7344.             (r < u || t && r > u) && (e ? (n.css("width", r), n.css("height", r / o)) : (n.prop("width", r), n.prop("height", r / o)))
  7345.         } catch (h) {
  7346.             if (UI.Common.debug) throw h;
  7347.         }
  7348.     }
  7349. };
  7350. UI.ExpandoManager = function() {
  7351.     UI.Notifications.subscribe("DOM", function(n) {
  7352.         UI.ExpandoManager.execute(n)
  7353.     });
  7354.     var n = [];
  7355.     return {
  7356.         addExpando: function(t, i) {
  7357.             var r = n.filter(function(n) {
  7358.                 if (n.selector == t) return n
  7359.             });
  7360.             r.length > 0 ? i instanceof Array ? r[0].group = r[0].group.concat(i) : r[0].group.push(i) : i instanceof Array ? n.push({
  7361.                 selector: t,
  7362.                 group: i
  7363.             }) : n.push({
  7364.                 selector: t,
  7365.                 group: [i]
  7366.             })
  7367.         },
  7368.         reset: function() {
  7369.             n = []
  7370.         },
  7371.         execute: function(t) {
  7372.             n && n.length > 0 && n.forEach(function(n) {
  7373.                 var i = t == undefined ? $(n.selector) : $(n.selector, t);
  7374.                 i.length > 0 && n.group.forEach(function(n) {
  7375.                     i.filter(function() {
  7376.                         if (!n.preConditionMet || n.preConditionMet && n.preConditionMet()) try {
  7377.                             return n.getFilter().test(this.href)
  7378.                         } catch (t) {}
  7379.                         return !1
  7380.                     }).each(function(t, i) {
  7381.                         n.process(i)
  7382.                     })
  7383.                 })
  7384.             })
  7385.         }
  7386.     }
  7387. }();
  7388. LinkExpando = function(n, t) {
  7389.     var i = n;
  7390.     this.options = t;
  7391.     this.getFilter = function() {
  7392.         return i
  7393.     };
  7394.     this.getId = function(n) {
  7395.         var t = undefined;
  7396.         try {
  7397.             t = this.getFilter().exec(n)[1]
  7398.         } catch (i) {}
  7399.         return t
  7400.     }
  7401. };
  7402. LinkExpando.prototype = {
  7403.     process: function() {
  7404.         UI.Common.debug && alert("Class LinkExpando.process(target) method must be overridden in derived class.")
  7405.     }
  7406. };
  7407. LinkExpando.setDirectLink = function(n, t, i) {
  7408.     var r = $("<span/>", {
  7409.         "class": "tagline"
  7410.     }).html(t + " ").append($("<a/>", {
  7411.         "class": "link-expando-direct",
  7412.         target: "_blank",
  7413.         href: i
  7414.     }).text("Open"));
  7415.     n.append(r)
  7416. };
  7417. LinkExpando.setTag = function(n, t) {
  7418.     n.data("text") === undefined && n.data("text", n.text());
  7419.     t ? n.html(UI.Common.htmlEscape(n.data("text")).concat("<span class='link-expando-type'>", t, "<\/span>")) : n.text(UI.Common.htmlEscape(n.data("text")))
  7420. };
  7421. LinkExpando.dataProp = function(n, t, i) {
  7422.     return i != null && $(n).data(t, i), $(n).data(t)
  7423. };
  7424. LinkExpando.isLoaded = function(n, t) {
  7425.     return LinkExpando.dataProp(n, "loaded", t)
  7426. };
  7427. LinkExpando.isVisible = function(n, t) {
  7428.     return LinkExpando.dataProp(n, "visible", t)
  7429. };
  7430. LinkExpando.isHooked = function(n, t) {
  7431.     return LinkExpando.dataProp(n, "hooked", t)
  7432. };
  7433. LinkExpando.toggle = function(n) {
  7434.     n.slideToggle()
  7435. };
  7436. ImageLinkExpando = function() {
  7437.     var n = 0;
  7438.     return function(t) {
  7439.         LinkExpando.call(this, /^([^\?]+(\.(jpg|jpeg|gif|giff|png)))$/i, t);
  7440.         this.autoLoadedCount = function() {
  7441.             return n
  7442.         };
  7443.         this.process = function(n) {
  7444.             var i = this.options.targetFunc ? this.options.targetFunc($(n)) : $(n),
  7445.                 n = $(n),
  7446.                 u, r;
  7447.             if (!LinkExpando.isHooked(i)) {
  7448.                 u = this;
  7449.                 i.on("click", function(n) {
  7450.                     u.onClick(n)
  7451.                 });
  7452.                 LinkExpando.isHooked(i, !0);
  7453.                 r = UI.Common.fileExtension(n.prop("href")).toUpperCase();
  7454.                 i.prop("title", r);
  7455.                 t.setTags && LinkExpando.setTag(i, r);
  7456.                 LinkExpando.dataProp(i, "src", n.prop("href"));
  7457.                 UI.ImageExpandoSettings.autoLoad ? this.loadImage(i, n.prop("href")) : UI.ImageExpandoSettings.autoShow && i.click()
  7458.             }
  7459.         };
  7460.         this.onClick = function(n) {
  7461.             n.preventDefault();
  7462.             var t = this.options.targetFunc($(n.target));
  7463.             LinkExpando.isVisible(t) ? (LinkExpando.toggle(this.options.destinationFunc(t), !1), this.options.toggle && this.options.toggle(t), LinkExpando.isVisible(t, !1)) : LinkExpando.isLoaded(t) ? (LinkExpando.isVisible(t, !0), LinkExpando.toggle(this.options.destinationFunc(t), !0), this.options.toggle && this.options.toggle(t)) : this.loadImage(t, LinkExpando.dataProp(t, "src"))
  7464.         };
  7465.         this.loadImage = function(n, t, i) {
  7466.             var u, r;
  7467.             this.options.loading && this.options.loading(n);
  7468.             this.options.setTags && LinkExpando.setTag(n, "loading");
  7469.             LinkExpando.dataProp(n, "src", t);
  7470.             n.off();
  7471.             n.on("click", function(n) {
  7472.                 n.preventDefault()
  7473.             });
  7474.             u = new Image;
  7475.             u.onerror = function() {
  7476.                 u.src = UI.Common.resolveUrl(UI.ImageExpandoSettings.errorImageUrl)
  7477.             };
  7478.             r = this;
  7479.             u.onload = function() {
  7480.                 var o, s, h, c;
  7481.                 if (this.complete) {
  7482.                     var v = n.parent(),
  7483.                         l = r.options.destinationFunc(n),
  7484.                         e = l,
  7485.                         u = $(this),
  7486.                         f = this.width,
  7487.                         a = this.height;
  7488.                     e.html(u);
  7489.                     o = UI.Common.fileExtension(t).toUpperCase().concat(" · ", f.toString(), " x ", a.toString());
  7490.                     LinkExpando.setDirectLink(e, o, t);
  7491.                     n.prop("title", o);
  7492.                     this.removeAttribute("width");
  7493.                     this.removeAttribute("height");
  7494.                     u.css("min-width", Math.min(f, 68));
  7495.                     u.css("max-width", f);
  7496.                     u.data("nwidth", f);
  7497.                     u.attr("draggable", !1);
  7498.                     u.attr("oncontextmenu", "return false");
  7499.                     u.on("mousedown", function(n) {
  7500.                         if (n.which === 3) {
  7501.                             u.css("width", f);
  7502.                             n.preventDefault();
  7503.                             return
  7504.                         }
  7505.                         s = {
  7506.                             x: n.pageX,
  7507.                             origWidth: u.width()
  7508.                         };
  7509.                         $("body").on("mousemove", h);
  7510.                         $("body").on("mouseup", c)
  7511.                     });
  7512.                     h = function(n) {
  7513.                         var t = n.pageX - s.x;
  7514.                         u.css("width", s.origWidth + t);
  7515.                         u.css("max-width", "")
  7516.                     };
  7517.                     c = function() {
  7518.                         $("body").off("mousemove", h);
  7519.                         $("body").off("mouseup", c)
  7520.                     };
  7521.                     LinkExpando.isLoaded(n, !0);
  7522.                     n.off();
  7523.                     n.on("click", function(t) {
  7524.                         LinkExpando.isVisible(n) || (u.css("max-width", f), u.css("width", ""));
  7525.                         r.onClick(t)
  7526.                     });
  7527.                     r.options.setTags && LinkExpando.setTag(n, UI.Common.fileExtension(t).toUpperCase());
  7528.                     i || (LinkExpando.isVisible(n, !0), r.options.toggle && r.options.toggle(n), LinkExpando.toggle(e, !0));
  7529.                     i && UI.ImageExpandoSettings.autoShow && n.click()
  7530.                 }
  7531.             };
  7532.             u.src = t
  7533.         }
  7534.     }
  7535. }();
  7536. ImageLinkExpando.prototype = new LinkExpando;
  7537. ImageLinkExpando.prototype.constructor = ImageLinkExpando;
  7538. VideoLinkExpando = function() {
  7539.     var n = document.createElement("video");
  7540.     return function(t) {
  7541.         LinkExpando.call(this, t);
  7542.         this.isMP4Supported = function() {
  7543.             return this.isSupported("video/mp4", "avc1.42E01E,mp4a.40.2")
  7544.         };
  7545.         this.isWEBMSupported = function() {
  7546.             return this.isSupported("video/webm", "vp8.0,vorbis")
  7547.         };
  7548.         this.isSupported = function(t, i) {
  7549.             if (n.canPlayType) {
  7550.                 var r = n.canPlayType(t + ";" + (i ? ' codecs="' + i + '"' : ""));
  7551.                 return ["probably", "maybe"].indexOf(r) >= 0
  7552.             }
  7553.             return !1
  7554.         };
  7555.         this.isVideoSupported = function() {
  7556.             return this.isMP4Supported() || this.isWEBMSupported()
  7557.         };
  7558.         this.embedVideo = function(n, t, i, r) {
  7559.             var f = $("<video/>", t),
  7560.                 e = this.options.targetFunc(n),
  7561.                 o, u;
  7562.             if (e.prop("title", r), i.length > 0)
  7563.                 for (o = 0; o < i.length; o++) f.append($("<source/>", i[o]));
  7564.             else return;
  7565.             return u = this.options.destinationFunc(e), UI.Common.resizeTarget(f, !1, u.parent()), t.muted && $(f).prop("muted", !0), u.empty().append(f), this.options.setTags && LinkExpando.setTag(e, r), LinkExpando.setDirectLink(u, r, n.prop("href")), LinkExpando.isLoaded(e, !0), u
  7566.         };
  7567.         this.PausePlayToggle = function(n) {
  7568.             this.options.toggle(n);
  7569.             var t = this;
  7570.             this.options.destinationFunc(n).slideToggle(400, function() {
  7571.                 var r = LinkExpando.isVisible(n),
  7572.                     u = LinkExpando.isLoaded(n),
  7573.                     i = t.options.destinationFunc(n).find("video").get(0);
  7574.                 i != null && (r && u ? i.play() : i.pause())
  7575.             })
  7576.         }
  7577.     }
  7578. }();
  7579. VideoLinkExpando.prototype = new LinkExpando;
  7580. VideoLinkExpando.prototype.constructor = VideoLinkExpando;
  7581. GfycatExpando = function(n) {
  7582.     LinkExpando.call(this, /gfycat\.com\/([A-Z]{1}[a-z]+[A-Z]{1}[a-z]+[A-Z]{1}[a-z]+)/, n);
  7583.     this.hook = function(n) {
  7584.         var t = this.options.targetFunc(n),
  7585.             i;
  7586.         if (t.prop("title", "Gfycat"), !LinkExpando.isHooked(t)) {
  7587.             LinkExpando.isHooked(t, !0);
  7588.             LinkExpando.dataProp(t, "id", this.getId(n.prop("href")));
  7589.             i = this;
  7590.             t.on("click", function(r) {
  7591.                 if (r.preventDefault(), LinkExpando.isLoaded(t)) LinkExpando.isVisible(t, !LinkExpando.isVisible(t));
  7592.                 else {
  7593.                     i.options.loading && i.options.loading(t);
  7594.                     i.options.setTags && LinkExpando.setTag(t, "loading");
  7595.  
  7596.                     function u() {
  7597.                         i.options.setTags && LinkExpando.setTag(t, "Error");
  7598.                         t.off("click")
  7599.                     }
  7600.                     i.getSourceInfo(LinkExpando.dataProp(t, "id"), function(r) {
  7601.                         if (!r.gfyItem) {
  7602.                             u();
  7603.                             return
  7604.                         }
  7605.                         if (i.isVideoSupported()) {
  7606.                             var f = i.embedVideo(n, {
  7607.                                 width: r.gfyItem.width,
  7608.                                 height: r.gfyItem.height,
  7609.                                 autoplay: 1,
  7610.                                 loop: 1,
  7611.                                 muted: 1
  7612.                             }, [{
  7613.                                 id: "mp4gfycat",
  7614.                                 src: r.gfyItem.mp4Url,
  7615.                                 type: "video/mp4"
  7616.                             }, {
  7617.                                 id: "webmgfycat",
  7618.                                 src: r.gfyItem.webm,
  7619.                                 type: "video/webm"
  7620.                             }], "Gfycat Video");
  7621.                             LinkExpando.isLoaded(t, !0);
  7622.                             LinkExpando.isVisible(t, !0)
  7623.                         } else ImageLinkExpando.loadImage(t, r.gfyItem.gifUrl)
  7624.                     }, u)
  7625.                 }
  7626.                 i.PausePlayToggle(t)
  7627.             });
  7628.             i.options.setTags && LinkExpando.setTag($(t), "Gfycat")
  7629.         }
  7630.     };
  7631.     this.getSourceInfo = function(n, t, i) {
  7632.         try {
  7633.             $.ajax({
  7634.                 url: UI.Common.currentProtocol() + "//gfycat.com/cajax/get/" + n,
  7635.                 type: "GET"
  7636.             }).done(t).fail(i)
  7637.         } catch (r) {
  7638.             i()
  7639.         }
  7640.     }
  7641. };
  7642. GfycatExpando.prototype = new VideoLinkExpando;
  7643. GfycatExpando.prototype.constructor = GfycatExpando;
  7644. GfycatExpando.prototype.process = function(n) {
  7645.     this.hook($(n))
  7646. };
  7647. ImgurGifvExpando = function(n) {
  7648.     LinkExpando.call(this, /i\.imgur\.com\/([^"&?\/\.]*)\.gifv/i, n);
  7649.     this.getSrcUrl = function(n, t) {
  7650.         return "http://i.imgur.com/".concat(n, t)
  7651.     };
  7652.     this.hook = function(n) {
  7653.         var t = this.options.targetFunc(n),
  7654.             i;
  7655.         if (t.prop("title", "Gifv"), !LinkExpando.isHooked(t)) {
  7656.             LinkExpando.isHooked(t, !0);
  7657.             LinkExpando.dataProp(t, "id", this.getId(n.prop("href")));
  7658.             i = this;
  7659.             t.on("click", function(r) {
  7660.                 var u, f;
  7661.                 r.preventDefault();
  7662.                 u = i.getId(n.prop("href"));
  7663.                 LinkExpando.isLoaded(t) ? LinkExpando.isVisible(t, !LinkExpando.isVisible(t)) : (i.options.setTags && LinkExpando.setTag(t, "loading"), i.isVideoSupported() ? (f = i.embedVideo(n, {
  7664.                     width: "100%",
  7665.                     height: "auto",
  7666.                     autoplay: 1,
  7667.                     loop: 1,
  7668.                     muted: 1
  7669.                 }, [{
  7670.                     id: "mp4source",
  7671.                     src: i.getSrcUrl(u, ".mp4"),
  7672.                     type: "video/mp4"
  7673.                 }, {
  7674.                     id: "webmsource",
  7675.                     src: i.getSrcUrl(u, ".webm"),
  7676.                     type: "video/webm"
  7677.                 }], "Gifv Video"), LinkExpando.isLoaded(t, !0), LinkExpando.isVisible(t, !0)) : (t.off("click"), LinkExpando.setTag(t)));
  7678.                 i.PausePlayToggle(t)
  7679.             });
  7680.             i.options.setTags && LinkExpando.setTag($(t), "Gifv")
  7681.         }
  7682.     }
  7683. };
  7684. ImgurGifvExpando.prototype = new VideoLinkExpando;
  7685. ImgurGifvExpando.prototype.constructor = ImgurGifvExpando;
  7686. ImgurGifvExpando.prototype.process = function(n) {
  7687.     this.hook($(n))
  7688. };
  7689. WebMExpando = function(n) {
  7690.     LinkExpando.call(this, /(.+\.webm)/i, n);
  7691.     this.preConditionMet = function() {
  7692.         return this.isWEBMSupported()
  7693.     };
  7694.     this.hook = function(n) {
  7695.         var t = this.options.targetFunc(n),
  7696.             i;
  7697.         if (t.prop("title", "WebM"), !LinkExpando.isHooked(t)) {
  7698.             LinkExpando.isHooked(t, !0);
  7699.             LinkExpando.dataProp(t, "id", this.getId(n.prop("href")));
  7700.             i = this;
  7701.             t.on("click", function(r) {
  7702.                 var u, f;
  7703.                 r.preventDefault();
  7704.                 u = n.prop("href");
  7705.                 LinkExpando.isLoaded(t) ? LinkExpando.isVisible(t, !LinkExpando.isVisible(t)) : (i.options.setTags && LinkExpando.setTag(t, "loading"), i.isWEBMSupported() ? (f = i.embedVideo(n, {
  7706.                     width: "100%",
  7707.                     height: "auto",
  7708.                     autoplay: 1,
  7709.                     loop: 1,
  7710.                     muted: 1
  7711.                 }, [{
  7712.                     id: "webmsource",
  7713.                     src: u,
  7714.                     type: "video/webm"
  7715.                 }], "WebM Video"), LinkExpando.isLoaded(t, !0), LinkExpando.isVisible(t, !0)) : (t.off("click"), LinkExpando.setTag(t)));
  7716.                 i.PausePlayToggle(t)
  7717.             });
  7718.             i.options.setTags && LinkExpando.setTag($(t), "WebM")
  7719.         }
  7720.     }
  7721. };
  7722. WebMExpando.prototype = new VideoLinkExpando;
  7723. WebMExpando.prototype.constructor = WebMExpando;
  7724. WebMExpando.prototype.process = function(n) {
  7725.     this.hook($(n))
  7726. };
  7727. MP4Expando = function(n) {
  7728.     LinkExpando.call(this, /(.+\.mp4)/i, n);
  7729.     this.preConditionMet = function() {
  7730.         return this.isMP4Supported()
  7731.     };
  7732.     this.hook = function(n) {
  7733.         var t = this.options.targetFunc(n),
  7734.             i;
  7735.         if (t.prop("title", "MP4"), !LinkExpando.isHooked(t)) {
  7736.             LinkExpando.isHooked(t, !0);
  7737.             LinkExpando.dataProp(t, "id", this.getId(n.prop("href")));
  7738.             i = this;
  7739.             t.on("click", function(r) {
  7740.                 var u, f;
  7741.                 r.preventDefault();
  7742.                 u = n.prop("href");
  7743.                 LinkExpando.isLoaded(t) ? LinkExpando.isVisible(t, !LinkExpando.isVisible(t)) : (i.options.setTags && LinkExpando.setTag(t, "loading"), i.isMP4Supported() ? (f = i.embedVideo(n, {
  7744.                     width: "100%",
  7745.                     height: "auto",
  7746.                     autoplay: 1,
  7747.                     loop: 1,
  7748.                     muted: 1
  7749.                 }, [{
  7750.                     id: "mp4source",
  7751.                     src: u,
  7752.                     type: "video/mp4"
  7753.                 }], "MP4 Video"), LinkExpando.isLoaded(t, !0), LinkExpando.isVisible(t, !0)) : (t.off("click"), LinkExpando.setTag(t)));
  7754.                 i.PausePlayToggle(t)
  7755.             });
  7756.             i.options.setTags && LinkExpando.setTag($(t), "MP4")
  7757.         }
  7758.     }
  7759. };
  7760. MP4Expando.prototype = new VideoLinkExpando;
  7761. MP4Expando.prototype.constructor = WebMExpando;
  7762. MP4Expando.prototype.process = function(n) {
  7763.     this.hook($(n))
  7764. };
  7765. IFrameEmbedderExpando = function(n, t) {
  7766.     LinkExpando.call(this, n, t);
  7767.     this.defaultRatio = .5625;
  7768.     this.hook = function(n, t, i) {
  7769.         var u = this.options.targetFunc(n),
  7770.             f, r;
  7771.         if (!LinkExpando.isHooked(u) && (LinkExpando.isHooked(u, !0), f = this.getId(n.prop("href")), f)) {
  7772.             u.prop("title", t);
  7773.             r = this;
  7774.             u.on("click", function(u) {
  7775.                 var e, o, s, h;
  7776.                 u.preventDefault();
  7777.                 e = r.options.targetFunc($(u.target));
  7778.                 o = r.options.destinationFunc(e);
  7779.                 LinkExpando.isLoaded(e) || (r.options.loading && r.options.loading(e), s = function() {
  7780.                     r.options.setTags && LinkExpando.setTag(e, "Error");
  7781.                     e.off("click")
  7782.                 }, h = function(r) {
  7783.                     LinkExpando.dataProp(e, "source", r);
  7784.                     i.src = LinkExpando.dataProp(e, "source");
  7785.                     var u = $("<iframe/>", i);
  7786.                     o.empty().html(u);
  7787.                     LinkExpando.setDirectLink(o, t, n.prop("href"));
  7788.                     LinkExpando.isLoaded(e, !0);
  7789.                     UI.Common.resizeTarget($("iframe", o), !1, e.parent())
  7790.                 }, r.getSrcUrl(f, h, s));
  7791.                 LinkExpando.isVisible(e, !LinkExpando.isVisible(e));
  7792.                 r.options.toggle(e);
  7793.                 r.options.destinationFunc(e).slideToggle(400, function() {
  7794.                     !LinkExpando.isVisible(e) && LinkExpando.isLoaded(e) && (o.empty(), LinkExpando.isLoaded(e, !1))
  7795.                 })
  7796.             });
  7797.             r.options.setTags && LinkExpando.setTag(u, t)
  7798.         }
  7799.     }
  7800. };
  7801. IFrameEmbedderExpando.prototype = new LinkExpando;
  7802. IFrameEmbedderExpando.prototype.constructor = IFrameEmbedderExpando;
  7803. YouTubeExpando = function(n) {
  7804.     IFrameEmbedderExpando.call(this, /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i, n);
  7805.     this.getSrcUrl = function(n, t) {
  7806.         t("//www.youtube.com/embed/" + n)
  7807.     }
  7808. };
  7809. YouTubeExpando.prototype = new IFrameEmbedderExpando;
  7810. YouTubeExpando.prototype.constructor = YouTubeExpando;
  7811. YouTubeExpando.prototype.process = function(n) {
  7812.     var i = this.options.targetFunc($(n)),
  7813.         t = Math.min(560, UI.Common.availableWidth(i.parent()));
  7814.     this.hook($(n), "YouTube", {
  7815.         width: t.toString(),
  7816.         height: (t * this.defaultRatio).toString(),
  7817.         frameborder: "0",
  7818.         allowfullscreen: !0
  7819.     })
  7820. };
  7821. ImgurAlbumExpando = function(n) {
  7822.     IFrameEmbedderExpando.call(this, /imgur\.com\/a\/(\w+)\/?/i, n);
  7823.     this.getSrcUrl = function(n, t) {
  7824.         t("//imgur.com/a/" + n + "/embed")
  7825.     }
  7826. };
  7827. ImgurAlbumExpando.prototype = new IFrameEmbedderExpando;
  7828. ImgurAlbumExpando.prototype.constructor = ImgurAlbumExpando;
  7829. ImgurAlbumExpando.prototype.process = function(n) {
  7830.     var t = Math.min(560, UI.Common.availableWidth($(n).parent()));
  7831.     this.hook($(n), "Imgur Album", {
  7832.         width: t.toString(),
  7833.         height: (t * .8).toString(),
  7834.         frameborder: "0"
  7835.     })
  7836. };
  7837. VimeoExpando = function(n) {
  7838.     IFrameEmbedderExpando.call(this, /vimeo\.com\/(?:.\*|.*\/)?([\d]+)\/?/i, n);
  7839.     this.getSrcUrl = function(n, t) {
  7840.         t("//player.vimeo.com/video/" + n)
  7841.     }
  7842. };
  7843. VimeoExpando.prototype = new IFrameEmbedderExpando;
  7844. VimeoExpando.prototype.constructor = VimeoExpando;
  7845. VimeoExpando.prototype.process = function(n) {
  7846.     var t = Math.min(560, UI.Common.availableWidth($(n).parent()));
  7847.     this.hook($(n), "Vimeo", {
  7848.         width: t.toString(),
  7849.         height: t * this.defaultRatio,
  7850.         frameborder: "0",
  7851.         webkitallowfullscreen: 1,
  7852.         mozallowfullscreen: 1,
  7853.         allowfullscreen: 1
  7854.     })
  7855. };
  7856. CoubExpando = function(n) {
  7857.     IFrameEmbedderExpando.call(this, /coub\.com\/(?:v|view|embed)\/(\w+)/i, n);
  7858.     this.getSrcUrl = function(n, t) {
  7859.         t("//coub.com/embed/" + n)
  7860.     }
  7861. };
  7862. CoubExpando.prototype = new IFrameEmbedderExpando;
  7863. CoubExpando.prototype.constructor = CoubExpando;
  7864. CoubExpando.prototype.process = function(n) {
  7865.     var t = Math.min(560, UI.Common.availableWidth($(n).parent()));
  7866.     this.hook($(n), "Coub", {
  7867.         width: t.toString(),
  7868.         height: t * this.defaultRatio,
  7869.         frameborder: "0",
  7870.         webkitallowfullscreen: 1,
  7871.         mozallowfullscreen: 1,
  7872.         allowfullscreen: 1
  7873.     })
  7874. };
  7875. SoundCloudExpando = function(n) {
  7876.     IFrameEmbedderExpando.call(this, /http(?:s{0,1}):\/\/(?:soundcloud\.com|snd\.sc)\/(.*)\/?/i, n);
  7877.     this.getSrcUrl = function(n, t, i) {
  7878.         this.getSourceInfo = function(n, r, u) {
  7879.             $.getJSON(UI.Common.currentProtocol() + "//soundcloud.com/oembed", {
  7880.                 format: "json",
  7881.                 url: "https://soundcloud.com/" + n,
  7882.                 iframe: "true"
  7883.             }).done(function(n) {
  7884.                 n.html || (u(), i());
  7885.                 var r = /<iframe.*?src="(.*?)"/.exec(n.html)[1];
  7886.                 t(r + "&auto_play=true")
  7887.             }).fail(function() {
  7888.                 i()
  7889.             })
  7890.         };
  7891.         this.getSourceInfo(n, t, i)
  7892.     }
  7893. };
  7894. SoundCloudExpando.prototype = new IFrameEmbedderExpando;
  7895. SoundCloudExpando.prototype.constructor = SoundCloudExpando;
  7896. SoundCloudExpando.prototype.process = function(n) {
  7897.     var t = Math.min(560, UI.Common.availableWidth($(n).parent()));
  7898.     this.hook($(n), "SoundCloud", {
  7899.         width: t.toString(),
  7900.         height: t * this.defaultRatio,
  7901.         frameborder: "0"
  7902.     })
  7903. };
  7904. UI.ImageExpandoSettings = function() {
  7905.     return {
  7906.         autoLoad: !1,
  7907.         autoShow: !1,
  7908.         initialSize: 0,
  7909.         errorImageUrl: "~/Graphics/missing_image.png"
  7910.     }
  7911. }();
  7912. UI.SidebarHandler = function() {
  7913.     function u() {
  7914.         t.toggleClass("show-mobile-sidebar", !1);
  7915.         n.toggleClass("show-mobile-sidebar", !1);
  7916.         i.toggleClass("show-mobile-sidebar", !1);
  7917.         r.toggleClass("show-mobile-sidebar", !1)
  7918.     }
  7919.  
  7920.     function e(n) {
  7921.         n.matches && u()
  7922.     }
  7923.     var f;
  7924.     if (!$(".side").exists()) {
  7925.         $("#show-menu-button").hide();
  7926.         return
  7927.     }
  7928.     var i = $(".side"),
  7929.         n = $("#show-menu-button"),
  7930.         t = $("#modal-background"),
  7931.         r = $("body");
  7932.     n.on("click", function() {
  7933.         t.toggleClass("show-mobile-sidebar");
  7934.         n.toggleClass("show-mobile-sidebar");
  7935.         i.toggleClass("show-mobile-sidebar");
  7936.         r.toggleClass("show-mobile-sidebar")
  7937.     });
  7938.     t.on("click", function() {
  7939.         u()
  7940.     });
  7941.     f = window.matchMedia("(min-width: 870px)");
  7942.     f.addListener(e)
  7943. };
  7944. $(document).ready(function() {
  7945.     var n, t;
  7946.     UI.Common.debug = !1;
  7947.     n = {
  7948.         targetFunc: function(n) {
  7949.             var t = n;
  7950.             return t.is("span") && (t = n.parent()), t
  7951.         },
  7952.         destinationFunc: function(n) {
  7953.             var r = this.targetFunc(n),
  7954.                 t = n.next(".link-expando"),
  7955.                 i;
  7956.             return t.length == 0 && (i = $("<div/>", {
  7957.                 "class": "link-expando",
  7958.                 style: "display:none;"
  7959.             }), i.insertAfter(n), t = n.next(".link-expando")), t
  7960.         },
  7961.         toggle: function() {},
  7962.         setTags: !0
  7963.     };
  7964.     UI.ExpandoManager.addExpando(".usertext-body > .md a:not(.link-expando-direct), .panel-message-body a:not(.link-expando-direct)", [new ImageLinkExpando(n), new YouTubeExpando(n), new VimeoExpando(n), new CoubExpando(n), new GfycatExpando(n), new SoundCloudExpando(n), new ImgurAlbumExpando(n), new ImgurGifvExpando(n), new WebMExpando(n), new MP4Expando(n)]);
  7965.     t = {
  7966.         targetFunc: function(n) {
  7967.             var t = n.parent().parent().find(".expando-button"),
  7968.                 i;
  7969.             return t.length == 0 && (i = $("<div/>", {
  7970.                 "class": "expando-button collapsed selftext"
  7971.             }), i.insertAfter(n.parent()), t = n.parent().parent().find(".expando-button")), t
  7972.         },
  7973.         destinationFunc: function(n) {
  7974.             var t = n.parent().find(".expando"),
  7975.                 i;
  7976.             return t.length == 0 && (i = $("<div/>", {
  7977.                 "class": "expando collapsed link-expando",
  7978.                 style: "display:none;"
  7979.             }), n.parent().append(i), t = n.parent().find(".expando")), t.hasClass("link-expando") || t.addClass("link-expando"), t
  7980.         },
  7981.         toggle: function(n) {
  7982.             n.hasClass("loading") ? (n.addClass("expanded"), n.removeClass("loading"), n.removeClass("collapsed")) : n.hasClass("collapsed") ? (n.removeClass("collapsed"), n.addClass("expanded")) : (n.removeClass("expanded"), n.addClass("collapsed"))
  7983.         },
  7984.         loading: function(n) {
  7985.             n.addClass("loading");
  7986.             n.removeClass("collapsed");
  7987.             n.removeClass("expanded")
  7988.         },
  7989.         setTags: !1
  7990.     };
  7991.     UI.ExpandoManager.addExpando(".submission .entry .title a:not(.link-expando-direct)", [new ImageLinkExpando(t), new YouTubeExpando(t), new VimeoExpando(t), new CoubExpando(t), new GfycatExpando(t), new SoundCloudExpando(t), new ImgurAlbumExpando(t), new ImgurGifvExpando(t), new WebMExpando(t), new MP4Expando(t)]);
  7992.     UI.ExpandoManager.execute();
  7993.     UI.Notifications.subscribe("iFrameLoaded", function(n) {
  7994.         var t = $("iframe", n);
  7995.         t && UI.Common.resizeTarget(t, !1, t.parent())
  7996.     });
  7997.     $(window).on("resize", function() {
  7998.         $(".link-expando img").each(function() {
  7999.             var n = $(this).data("nwidth");
  8000.             $(this).css({
  8001.                 width: "",
  8002.                 "max-width": n
  8003.             })
  8004.         })
  8005.     });
  8006.     UI.SidebarHandler()
  8007. });
  8008. $(document).ready(function() {
  8009.     function n() {
  8010.         $(this).find("ul").css("visibility", "visible")
  8011.     }
  8012.  
  8013.     function t() {
  8014.         $(this).find("ul").css("visibility", "hidden")
  8015.     }
  8016.     $('[data-toggle="popover"]').popover({
  8017.         trigger: "hover",
  8018.         placement: "top"
  8019.     });
  8020.     securityToken = $("[name=__RequestVerificationToken]").val();
  8021.     $("body").bind("ajaxSend", function(n, t, i) {
  8022.         i.type == "POST" && typeof securityToken != "undefined" && (i.data.length > 0 ? i.data += "&__RequestVerificationToken=" + encodeURIComponent(securityToken) : i.data = "__RequestVerificationToken=" + encodeURIComponent(securityToken))
  8023.     });
  8024.     $(".whoaSubscriptionMenu > li").bind("mouseover", n);
  8025.     $(".whoaSubscriptionMenu > li").bind("mouseout", t);
  8026.     $("#Subverse").autocomplete({
  8027.         source: "/ajaxhelpers/autocompletesubversename"
  8028.     });
  8029.     $(document).on("click", 'a[href="#s"]', function(n) {
  8030.         n.preventDefault()
  8031.     });
  8032.     $("#share-a-link-overlay").on("dragleave", function(n) {
  8033.         (n.originalEvent.pageX < 10 || n.originalEvent.pageY < 10 || $(window).width() - n.originalEvent.pageX < 10 || $(window).height - n.originalEvent.pageY < 10) && $("#share-a-link-overlay").hide()
  8034.     });
  8035.     $("#share-a-link-overlay").on("dragover", function(n) {
  8036.         n.stopPropagation();
  8037.         n.preventDefault()
  8038.     });
  8039.     $(".userinfo").tooltipster({
  8040.         content: "Loading user info...",
  8041.         contentAsHTML: "true",
  8042.         functionBefore: function(n, t) {
  8043.             t();
  8044.             n.data("ajax") !== "cached" && $.ajax({
  8045.                 type: "GET",
  8046.                 url: "/ajaxhelpers/userinfo/" + n.attr("data-username"),
  8047.                 success: function(t) {
  8048.                     n.tooltipster("content", t).data("ajax", "cached")
  8049.                 }
  8050.             })
  8051.         }
  8052.     });
  8053.     $(function() {
  8054.         if ($.connection != null) {
  8055.             var n = $.connection.messagingHub;
  8056.             n != null && (n.client.setNotificationsPending = function(n) {
  8057.                 var t = $('meta[property="og:title"]').attr("content");
  8058.                 n > 0 ? ($("#mail").hasClass("nohavemail") && $("#mail").removeClass("nohavemail").addClass("havemail"), $("#mail").prop("title", "your have " + n + " unread notifications"), $("#mailcounter").show(), $("#mailcounter").html(n), document.title = "(" + n + ") " + t) : ($("#mail").hasClass("havemail") && $("#mail").removeClass("havemail").addClass("nohavemail"), $("#mail").prop("title", "no new messages"), $("#mailcounter").html(0), $("#mailcounter").hide(), document.title = t)
  8059.             }, n.client.voteChange = function(n, t) {
  8060.                 var i = 0;
  8061.                 n == 2 ? (i = $("#ccp").html(), i = i + t, $("#ccp").html(i)) : (i = $("#scp").html(), i = i + t, $("#scp").html(i))
  8062.             }, n.client.appendChatMessage = function(n, t) {
  8063.                 $("#subverseChatRoom").append("<p><b>" + n + "<\/b>: " + t + "<\/p>");
  8064.                 scrollChatToBottom()
  8065.             }, $.connection.hub.start({
  8066.                 transport: "webSockets"
  8067.             }).done(function() {}))
  8068.         }
  8069.     });
  8070.     $(function() {
  8071.         var n = $(window);
  8072.         n.scroll(function() {
  8073.             n.height() + n.scrollTop() == $(document).height() && $("#loadmorebutton").trigger("click")
  8074.         })
  8075.     })
  8076. });
  8077. submissionVoteLock = null;
  8078. commentVoteLock = null;
  8079. $.fn.exists = function() {
  8080.     return this.length !== 0
  8081. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement