vendor: 4,491 bytes, lines 1-2
1/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ 2!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*ne
vendor: 3,069 bytes, line 2
2w Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}
vendor: 9,959 bytes, line 2
2function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)}
vendor: 79,644 bytes, lines 2-5
2,input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; 3}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{ 4marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.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(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({ 5padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n});
6;/*})'"*/;/*})'"*/ 7/** 8 * For jQuery versions less than 3.4.0, this replaces the jQuery.extend 9 * function with the one from jQuery 3.4.0, slightly modified (documented 10 * below) to be compatible with older jQuery versions and browsers. 11 * 12 * This provides the Object.prototype pollution vulnerability fix to Drupal 13 * installations running older jQuery versions, including the versions shipped 14 * with Drupal core and https://www.drupal.org/project/jquery_update. 15 * 16 * @see https://github.com/jquery/jquery/pull/4333 17 */ 18 19(function (jQuery) { 20 21// Do not override jQuery.extend() if the jQuery version is already >=3.4.0. 22var versionParts = jQuery.fn.jquery.split('.'); 23var majorVersion = parseInt(versionParts[0]); 24var minorVersion = parseInt(versionParts[1]); 25var patchVersion = parseInt(versionParts[2]); 26var isPreReleaseVersion = (patchVersion.toString() !== versionParts[2]); 27if ( 28 (majorVersion > 3) || 29 (majorVersion === 3 && minorVersion > 4) || 30 (majorVersion === 3 && minorVersion === 4 && patchVersion > 0) || 31 (majorVersion === 3 && minorVersion === 4 && patchVersion === 0 && !isPreReleaseVersion) 32) { 33 return; 34} 35 36/** 37 * This is almost verbatim copied from jQuery 3.4.0. 38 * 39 * Only two minor changes have been made: 40 * - The call to isFunction() is changed to jQuery.isFunction(). 41 * - The two calls to Array.isArray() is changed to jQuery.isArray(). 42 * 43 * The above two changes ensure compatibility with all older jQuery versions 44 * (1.4.4 - 3.3.1) and older browser versions (e.g., IE8). 45 */ 46jQuery.extend = jQuery.fn.extend = function() { 47 var options, name, src, copy, copyIsArray, clone, 48 target = arguments[ 0 ] || {}, 49 i = 1, 50 length = arguments.length, 51 deep = false; 52 53 // Handle a deep copy situation 54 if ( typeof target === "boolean" ) { 55 deep = target; 56 57 // Skip the boolean and the target 58 target = arguments[ i ] || {}; 59 i++; 60 } 61 62 // Handle case when target is a string or something (possible in deep copy) 63 if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { 64 target = {}; 65 } 66 67 // Extend jQuery itself if only one argument is passed 68 if ( i === length ) { 69 target = this; 70 i--; 71 } 72 73 for ( ; i < length; i++ ) { 74 75 // Only deal with non-null/undefined values 76 if ( ( options = arguments[ i ] ) != null ) { 77 78 // Extend the base object 79 for ( name in options ) { 80 copy = options[ name ]; 81 82 // Prevent Object.prototype pollution 83 // Prevent never-ending loop 84 if ( name === "__proto__" || target === copy ) { 85 continue; 86 } 87 88 // Recurse if we're merging plain objects or arrays 89 if ( deep && copy && ( jQuery.isPlainObject( copy ) || 90 ( copyIsArray = jQuery.isArray( copy ) ) ) ) { 91 src = target[ name ]; 92 93 // Ensure proper type for the source value 94 if ( copyIsArray && !jQuery.isArray( src ) ) { 95 clone = []; 96 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { 97 clone = {}; 98 } else { 99 clone = src; 100 } 101 copyIsArray = false; 102 103 // Never move original objects, clone them 104 target[ name ] = jQuery.extend( deep, clone, copy ); 105 106 // Don't bring in undefined values 107 } else if ( copy !== undefined ) { 108 target[ name ] = copy; 109 } 110 } 111 } 112 } 113 114 // Return the modified object 115 return target; 116}; 117 118})(jQuery); 119;/*})'"*/;/*})'"*/ 120/** 121 * For jQuery versions less than 3.5.0, this replaces the jQuery.htmlPrefilter() 122 * function with one that fixes these security vulnerabilities while also 123 * retaining the pre-3.5.0 behavior where it's safe to do so. 124 * - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11022 125 * - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11023 126 * 127 * Additionally, for jQuery versions that do not have a jQuery.htmlPrefilter() 128 * function (1.x prior to 1.12 and 2.x prior to 2.2), this adds it, and 129 * extends the functions that need to call it to do so. 130 * 131 * Drupal core's jQuery version is 1.4.4, but jQuery Update can provide a 132 * different version, so this covers all versions between 1.4.4 and 3.4.1. 133 * The GitHub links in the code comments below link to jQuery 1.5 code, be
133cause 134 * 1.4.4 isn't on GitHub, but the referenced code didn't change from 1.4.4 to 135 * 1.5. 136 */ 137 138(function (jQuery) { 139 140 // Parts of this backport differ by jQuery version. 141 var versionParts = jQuery.fn.jquery.split('.'); 142 var majorVersion = parseInt(versionParts[0]); 143 var minorVersion = parseInt(versionParts[1]); 144 145 // No backport is needed if we're already on jQuery 3.5 or higher. 146 if ( (majorVersion > 3) || (majorVersion === 3 && minorVersion >= 5) ) { 147 return; 148 } 149 150 // Prior to jQuery 3.5, jQuery converted XHTML-style self-closing tags to 151 // their XML equivalent: e.g., "<div />" to "<div></div>". This is 152 // problematic for several reasons, including that it's vulnerable to XSS 153 // attacks. However, since this was jQuery's behavior for many years, many 154 // Drupal modules and jQuery plugins may be relying on it. Therefore, we 155 // preserve that behavior, but for a limited set of tags only, that we believe 156 // to not be vulnerable. This is the set of HTML tags that satisfy all of the 157 // following conditions: 158 // - In DOMPurify's list of HTML tags. If an HTML tag isn't safe enough to 159 // appear in that list, then we don't want to mess with it here either. 160 // @see https://github.com/cure53/DOMPurify/blob/2.0.11/dist/purify.js#L128 161 // - A normal element (not a void, template, text, or foreign element). 162 // @see https://html.spec.whatwg.org/multipage/syntax.html#elements-2 163 // - An element that is still defined by the current HTML specification 164 // (not a deprecated element), because we do not want to rely on how 165 // browsers parse deprecated elements. 166 // @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element 167 // - Not 'html', 'head', or 'body', because this pseudo-XHTML expansion is 168 // designed for fragments, not entire documents. 169 // - Not 'colgroup', because due to an idiosyncrasy of jQuery's original 170 // regular expression, it didn't match on colgroup, and we don't want to 171 // introduce a behavior change for that. 172 var selfClosingTagsToReplace = [ 173 'a', 'abbr', 'address', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 174 'blockquote', 'button', 'canvas', 'caption', 'cite', 'code', 'data', 175 'datalist', 'dd', 'del', 'details', 'dfn', 'div', 'dl', 'dt', 'em', 176 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 177 'h4', 'h5', 'h6', 'header', 'hgroup', 'i', 'ins', 'kbd', 'label', 'legend', 178 'li', 'main', 'map', 'mark', 'menu', 'meter', 'nav', 'ol', 'optgroup', 179 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 180 'ruby', 's', 'samp', 'section', 'select', 'small', 'source', 'span', 181 'strong', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'tfoot', 'th', 182 'thead', 'time', 'tr', 'u', 'ul', 'var', 'video' 183 ]; 184 185 // Define regular expressions for <TAG/> and <TAG ATTRIBUTES/>. Doing this as 186 // two expressions makes it easier to target <a/> without also targeting 187 // every tag that starts with "a". 188 var xhtmlRegExpGroup = '(' + selfClosingTagsToReplace.join('|') + ')'; 189 var whitespace = '[\\x20\\t\\r\\n\\f]'; 190 var rxhtmlTagWithoutSpaceOrAttributes = new RegExp('<' + xhtmlRegExpGroup + '\\/>', 'gi'); 191 var rxhtmlTagWithSpaceAndMaybeAttributes = new RegExp('<' + xhtmlRegExpGroup + '(' + whitespace + '[^>]*)\\/>', 'gi'); 192 193 // jQuery 3.5 also fixed a vulnerability for when </select> appears within 194 // an <option> or <optgroup>, but it did that in local code that we can't 195 // backport directly. Instead, we filter such cases out. To do so, we need to 196 // determine when jQuery would otherwise invoke the vulnerable code, which it 197 // uses this regular expression to determine. The regular expression changed 198 // for version 3.0.0 and changed again for 3.4.0. 199 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L4958 200 // @see https://github.com/jquery/jquery/blob/3.0.0/dist/jquery.js#L4584 201 // @see https://github.com/jquery/jquery/blob/3.4.0/dist/jquery.js#L4712 202 var rtagName; 203 if (majorVersion < 3) { 204 rtagName = /<([\w:]+)/; 205 } 206 else if (minorVersion < 4) { 207 rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]+)/i; 208 } 209 else { 210 rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; 211 } 212 213 // The regular expression that jQuery uses to determine which self-closing 214 // tags to expand to open and close tags. This is vulnerable, because it 215 // matches all tag names except the few excluded ones. We only use this 216 // expression for determining vulnerability. The expression changed for 217 // version 3, but we only need to check for vulnerability in versions 1 and 2, 218 // so we use the expression from those versions. 219 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L4957 220 var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi; 221 222 jQuery.extend({ 223 htmlPrefilter: function (html) { 224 // This is how jQuery determines the first tag in the HTML. 225 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5521 226 var tag = ( rtagName.exec( html ) || [ "", "" ] )[ 1 ].toLowerCase(); 227
228 // It is not valid HTML for <option> or <optgroup> to have <select> as 229 // either a descendant or sibling, and attempts to inject one can cause 230 // XSS on jQuery versions before 3.5. Since this is invalid HTML and a 231 // possible XSS attack, reject the entire string. 232 // @see https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11023 233 if ((tag === 'option' || tag === 'optgroup') && html.match(/<\/?select/i)) { 234 html = ''; 235 } 236 237 // Retain jQuery's prior to 3.5 conversion of pseudo-XHTML, but for only 238 // the tags in the `selfClosingTagsToReplace` list defined above. 239 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5518 240 // @see https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11022 241 html = html.replace(rxhtmlTagWithoutSpaceOrAttributes, "<$1></$1>"); 242 html = html.replace(rxhtmlTagWithSpaceAndMaybeAttributes, "<$1$2></$1>"); 243 244 // Prior to jQuery 1.12 and 2.2, this function gets called (via code later 245 // in this file) in addition to, rather than instead of, the unsafe 246 // expansion of self-closing tags (including ones not in the list above). 247 // We can't prevent that unsafe expansion from running, so instead we 248 // check to make sure that it doesn't affect the DOM returned by the 249 // browser's parsing logic. If it does affect it, then it's vulnerable to 250 // XSS, so we reject the entire string. 251 if ( (majorVersion === 1 && minorVersion < 12) || (majorVersion === 2 && minorVersion < 2) ) { 252 var htmlRisky = html.replace(rxhtmlTag, "<$1></$2>"); 253 if (htmlRisky !== html) { 254 // Even though htmlRisky and html are different strings, they might 255 // represent the same HTML structure once parsed, in which case, 256 // htmlRisky is actually safe. We can ask the browser to parse both 257 // to find out, but the browser can't parse table fragments (e.g., a 258 // root-level "<td>"), so we need to wrap them. We just need this 259 // technique to work on all supported browsers; we don't need to 260 // copy from the specific jQuery version we're using. 261 // @see https://github.com/jquery/jquery/blob/3.5.1/dist/jquery.js#L4939 262 var wrapMap = { 263 thead: [ 1, "<table>", "</table>" ], 264 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 265 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 266 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 267 }; 268 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 269 wrapMap.th = wrapMap.td; 270 271 // Function to wrap HTML into something that a browser can parse. 272 // @see https://github.com/jquery/jquery/blob/3.5.1/dist/jquery.js#L5032 273 var getWrappedHtml = function (html) { 274 var wrap = wrapMap[tag]; 275 if (wrap) { 276 html = wrap[1] + html + wrap[2]; 277 } 278 return html; 279 }; 280 281 // Function to return canonical HTML after parsing it. This parses 282 // only; it doesn't execute scripts. 283 // @see https://github.com/jquery/jquery-migrate/blob/3.3.0/src/jquery/manipulation.js#L5 284 var getParsedHtml = function (html) { 285 var doc = window.document.implementation.createHTMLDocument( "" ); 286 doc.body.innerHTML = html; 287 return doc.body ? doc.body.innerHTML : ''; 288 }; 289 290 // If the browser couldn't parse either one successfully, or if 291 // htmlRisky parses differently than html, then html is vulnerable, 292 // so reject it. 293 var htmlParsed = getParsedHtml(getWrappedHtml(html)); 294 var htmlRiskyParsed = getParsedHtml(getWrappedHtml(htmlRisky)); 295 if (htmlRiskyParsed === '' || htmlParsed === '' || (htmlRiskyParsed !== htmlParsed)) { 296 html = ''; 297 } 298 } 299 } 300 301 return html; 302 } 303 }); 304 305 // Prior to jQuery 1.12 and 2.2, jQuery.clean(), jQuery.buildFragment(), and 306 // jQuery.fn.html() did not call jQuery.htmlPrefilter(), so we add that. 307 if ( (majorVersion === 1 && minorVersion < 12) || (majorVersion === 2 && minorVersion < 2) ) { 308 // Filter the HTML coming into jQuery.fn.html(). 309 var fnOriginalHtml = jQuery.fn.html; 310 jQuery.fn.extend({ 311 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5147 312 html: function (value) { 313 if (typeof value === "string") { 314 value = jQuery.htmlPrefilter(value); 315 } 316 // .html() can be called as a setter (with an argument) or as a getter 317 // (without an argument), so invoke fnOriginalHtml() the same way that 318 // we were invoked. 319 return fnOriginalHtml.apply(this, arguments.length ? [value] : []); 320 } 321 }); 322 323 // The regular expression that jQuery uses to determine if a string is HTML. 324 // Used by both clean() and buildFragment(). 325 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L4960
326 var rhtml = /<|&#?\w+;/; 327 328 // Filter HTML coming into: 329 // - jQuery.clean() for versions prior to 1.9. 330 // - jQuery.buildFragment() for 1.9 and above. 331 // 332 // The looping constructs in the two functions might be essentially 333 // identical, but they're each expressed here in the way that most closely 334 // matches their original expression in jQuery, so that we filter all of 335 // the items and only the items that jQuery will treat as HTML strings. 336 if (majorVersion === 1 && minorVersion < 9) { 337 var originalClean = jQuery.clean; 338 jQuery.extend({ 339 // @see https://github.com/jquery/jquery/blob/1.5/jquery.js#L5493 340 'clean': function (elems, context, fragment, scripts) { 341 for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { 342 if ( typeof elem === "string" && rhtml.test( elem ) ) { 343 elems[i] = elem = jQuery.htmlPrefilter(elem); 344 } 345 } 346 return originalClean.call(this, elems, context, fragment, scripts); 347 } 348 }); 349 } 350 else { 351 var originalBuildFragment = jQuery.buildFragment; 352 jQuery.extend({ 353 // @see https://github.com/jquery/jquery/blob/1.9.0/jquery.js#L6419 354 'buildFragment': function (elems, context, scripts, selection) { 355 var l = elems.length; 356 for ( var i = 0; i < l; i++ ) { 357 var elem = elems[i]; 358 if (elem || elem === 0) { 359 if ( jQuery.type( elem ) !== "object" && rhtml.test( elem ) ) { 360 elems[i] = elem = jQuery.htmlPrefilter(elem); 361 } 362 } 363 } 364 return originalBuildFragment.call(this, elems, context, scripts, selection); 365 } 366 }); 367 } 368 } 369 370})(jQuery); 371;/*})'"*/;/*})'"*/ 372/** 373 * jQuery Once Plugin v1.2 374 * http://plugins.jquery.com/project/once 375 * 376 * Dual licensed under the MIT and GPL licenses: 377 * http://www.opensource.org/licenses/mit-license.php 378 * http://www.gnu.org/licenses/gpl.html 379 */ 380 381(function ($) { 382 var cache = {}, uuid = 0; 383 384 /** 385 * Filters elements by whether they have not yet been processed. 386 * 387 * @param id 388 * (Optional) If this is a string, then it will be used as the CSS class 389 * name that is applied to the elements for determining whether it has 390 * already been processed. The elements will get a class in the form of 391 * "id-processed". 392 * 393 * If the id parameter is a function, it will be passed off to the fn 394 * parameter and the id will become a unique identifier, represented as a 395 * number. 396 * 397 * When the id is neither a string or a function, it becomes a unique 398 * identifier, depicted as a number. The element's class will then be 399 * represented in the form of "jquery-once-#-processed". 400 * 401 * Take note that the id must be valid for usage as an element's class name. 402 * @param fn 403 * (Optional) If given, this function will be called for each element that 404 * has not yet been processed. The function's return value follows the same 405 * logic as $.each(). Returning true will continue to the next matched 406 * element in the set, while returning false will entirely break the 407 * iteration. 408 */ 409 $.fn.once = function (id, fn) { 410 if (typeof id != 'string') { 411 // Generate a numeric ID if the id passed can't be used as a CSS class. 412 if (!(id in cache)) { 413 cache[id] = ++uuid; 414 } 415 // When the fn parameter is not passed, we interpret it from the id. 416 if (!fn) { 417 fn = id; 418 } 419 id = 'jquery-once-' + cache[id]; 420 } 421 // Remove elements from the set that have already been processed. 422 var name = id + '-processed'; 423 var elements = this.not('.' + name).addClass(name); 424 425 return $.isFunction(fn) ? elements.each(fn) : elements; 426 }; 427 428 /** 429 * Filters elements that have been processed once already. 430 * 431 * @param id 432 * A required string representing the name of the class which should be used 433 * when filtering the elements. This only filters elements that have already 434 * been processed by the once function. The id should be the same id that 435 * was originally passed to the once() function. 436 * @param fn 437 * (Optional) If given, this function will be called for each element that 438 * has not yet been processed. The function's return value follows the same 439 * logic as $.each(). Returning true will continue to the next matched 440 * element in the set, while returning false will entirely break the 441 * iteration. 442 */ 443 $.fn.removeOnce = function (id, fn) { 444 var name = id + '-processed'; 445 var elements = this.filter('.' + name).removeClass(name); 446 447 return $.isFunction(fn) ? elements.each(fn) : elements; 448 }; 449})(jQuery); 450;/*})'"*/;/*})'"*/ 451var Drupal = Drupal || { 'settings': {}, 'behaviors': {}, 'locale': {} }; 452 453// Allow other JavaScript libraries to use $. 454jQuery.noConflict(); 455 456(function ($) { 457 458/** 459 * Override jQuery.fn.init to guard against XSS attacks. 460 * 461 * See http://bugs.jquery.com/ticket/9521 462 */ 463var jquery_init = $.fn.init; 464$.fn.init = function (selector, context, rootjQuery) { 465 // If the string contains a "#" before a "<", treat it as invali
465d HTML. 466 if (selector && typeof selector === 'string') { 467 var hash_position = selector.indexOf('#'); 468 if (hash_position >= 0) { 469 var bracket_position = selector.indexOf('<'); 470 if (bracket_position > hash_position) { 471 throw 'Syntax error, unrecognized expression: ' + selector; 472 } 473 } 474 } 475 return jquery_init.call(this, selector, context, rootjQuery); 476}; 477$.fn.init.prototype = jquery_init.prototype; 478 479/** 480 * Pre-filter Ajax requests to guard against XSS attacks. 481 * 482 * See https://github.com/jquery/jquery/issues/2432 483 */ 484if ($.ajaxPrefilter) { 485 // For newer versions of jQuery, use an Ajax prefilter to prevent 486 // auto-executing script tags from untrusted domains. This is similar to the 487 // fix that is built in to jQuery 3.0 and higher. 488 $.ajaxPrefilter(function (s) { 489 if (s.crossDomain) { 490 s.contents.script = false; 491 } 492 }); 493} 494else if ($.httpData) { 495 // For the version of jQuery that ships with Drupal core, override 496 // jQuery.httpData to prevent auto-detecting "script" data types from 497 // untrusted domains. 498 var jquery_httpData = $.httpData; 499 $.httpData = function (xhr, type, s) { 500 // @todo Consider backporting code from newer jQuery versions to check for 501 // a cross-domain request here, rather than using Drupal.urlIsLocal() to 502 // block scripts from all URLs that are not on the same site. 503 if (!type && !Drupal.urlIsLocal(s.url)) { 504 var content_type = xhr.getResponseHeader('content-type') || ''; 505 if (content_type.indexOf('javascript') >= 0) { 506 // Default to a safe data type. 507 type = 'text'; 508 } 509 } 510 return jquery_httpData.call(this, xhr, type, s); 511 }; 512 $.httpData.prototype = jquery_httpData.prototype; 513} 514 515/** 516 * Attach all registered behaviors to a page element. 517 * 518 * Behaviors are event-triggered actions that attach to page elements, enhancing 519 * default non-JavaScript UIs. Behaviors are registered in the Drupal.behaviors 520 * object using the method 'attach' and optionally also 'detach' as follows: 521 * @code 522 * Drupal.behaviors.behaviorName = { 523 * attach: function (context, settings) { 524 * ... 525 * }, 526 * detach: function (context, settings, trigger) { 527 * ... 528 * } 529 * }; 530 * @endcode 531 * 532 * Drupal.attachBehaviors is added below to the jQuery ready event and so 533 * runs on initial page load. Developers implementing AHAH/Ajax in their 534 * solutions should also call this function after new page content has been 535 * loaded, feeding in an element to be processed, in order to attach all 536 * behaviors to the new content. 537 * 538 * Behaviors should use 539 * @code 540 * $(selector).once('behavior-name', function () { 541 * ... 542 * }); 543 * @endcode 544 * to ensure the behavior is attached only once to a given element. (Doing so 545 * enables the reprocessing of given elements, which may be needed on occasion 546 * despite the ability to limit behavior attachment to a particular element.) 547 * 548 * @param context 549 * An element to attach behaviors to. If none is given, the document element 550 * is used. 551 * @param settings 552 * An object containing settings for the current context. If none given, the 553 * global Drupal.settings object is used. 554 */ 555Drupal.attachBehaviors = function (context, settings) { 556 context = context || document; 557 settings = settings || Drupal.settings; 558 // Execute all of them. 559 $.each(Drupal.behaviors, function () { 560 if ($.isFunction(this.attach)) { 561 this.attach(context, settings); 562 } 563 }); 564}; 565 566/** 567 * Detach registered behaviors from a page element. 568 * 569 * Developers implementing AHAH/Ajax in their solutions should call this 570 * function before page content is about to be removed, feeding in an element 571 * to be processed, in order to allow special behaviors to detach from the 572 * content. 573 * 574 * Such implementations should look for the class name that was added in their 575 * corresponding Drupal.behaviors.behaviorName.attach implementation, i.e. 576 * behaviorName-processed, to ensure the behavior is detached only from 577 * previously processed elements. 578 * 579 * @param context 580 * An element to detach behaviors from. If none is given, the document element 581 * is used. 582 * @param settings
583 * An object containing settings for the current context. If none given, the 584 * global Drupal.settings object is used. 585 * @param trigger 586 * A string containing what's causing the behaviors to be detached. The 587 * possible triggers are: 588 * - unload: (default) The context element is being removed from the DOM. 589 * - move: The element is about to be moved within the DOM (for example, 590 * during a tabledrag row swap). After the move is completed, 591 * Drupal.attachBehaviors() is called, so that the behavior can undo 592 * whatever it did in response to the move. Many behaviors won't need to 593 * do anything simply in response to the element being moved, but because 594 * IFRAME elements reload their "src" when being moved within the DOM, 595 * behaviors bound to IFRAME elements (like WYSIWYG editors) may need to 596 * take some action. 597 * - serialize: When an Ajax form is submitted, this is called with the 598 * form as the context. This provides every behavior within the form an 599 * opportunity to ensure that the field elements have correct content 600 * in them before the form is serialized. The canonical use-case is so 601 * that WYSIWYG editors can update the hidden textarea to which they are 602 * bound. 603 * 604 * @see Drupal.attachBehaviors 605 */ 606Drupal.detachBehaviors = function (context, settings, trigger) { 607 context = context || document; 608 settings = settings || Drupal.settings; 609 trigger = trigger || 'unload'; 610 // Execute all of them. 611 $.each(Drupal.behaviors, function () { 612 if ($.isFunction(this.detach)) { 613 this.detach(context, settings, trigger); 614 } 615 }); 616}; 617 618/** 619 * Encode special characters in a plain-text string for display as HTML. 620 * 621 * @ingroup sanitization 622 */ 623Drupal.checkPlain = function (str) { 624 var character, regex, 625 replace = { '&': '&', "'": ''', '"': '"', '<': '<', '>': '>' }; 626 str = String(str); 627 for (character in replace) { 628 if (replace.hasOwnProperty(character)) { 629 regex = new RegExp(character, 'g'); 630 str = str.replace(regex, replace[character]); 631 } 632 } 633 return str; 634}; 635 636/** 637 * Replace placeholders with sanitized values in a string. 638 * 639 * @param str 640 * A string with placeholders. 641 * @param args 642 * An object of replacements pairs to make. Incidences of any key in this 643 * array are replaced with the corresponding value. Based on the first 644 * character of the key, the value is escaped and/or themed: 645 * - !variable: inserted as is 646 * - @variable: escape plain text to HTML (Drupal.checkPlain) 647 * - %variable: escape text and theme as a placeholder for user-submitted 648 * content (checkPlain + Drupal.theme('placeholder')) 649 * 650 * @see Drupal.t() 651 * @ingroup sanitization 652 */ 653Drupal.formatString = function(str, args) { 654 // Transform arguments before inserting them. 655 for (var key in args) { 656 if (args.hasOwnProperty(key)) { 657 switch (key.charAt(0)) { 658 // Escaped only. 659 case '@': 660 args[key] = Drupal.checkPlain(args[key]); 661 break; 662 // Pass-through. 663 case '!': 664 break; 665 // Escaped and placeholder. 666 default: 667 args[key] = Drupal.theme('placeholder', args[key]); 668 break; 669 } 670 } 671 } 672 673 return Drupal.stringReplace(str, args, null); 674}; 675 676/** 677 * Replace substring. 678 * 679 * The longest keys will be tried first. Once a substring has been replaced, 680 * its new value will not be searched again. 681 * 682 * @param {String} str 683 * A string with placeholders. 684 * @param {Object} args 685 * Key-value pairs. 686 * @param {Array|null} keys 687 * Array of keys from the "args". Internal use only. 688 * 689 * @return {String} 690 * Returns the replaced string. 691 */ 692Drupal.stringReplace = function (str, args, keys) { 693 if (str.length === 0) { 694 return str; 695 } 696 697 // If the array of keys is not passed then collect the keys from the args. 698 if (!$.isArray(keys)) { 699 keys = []; 700 for (var k in args) { 701 if (args.hasOwnProperty(k)) { 702 keys.push(k); 703 } 704 } 705 706 // Order the keys by the character length. The shortest one is the first. 707 keys.sort(function (a, b) { return a.length - b.length; }); 708 } 709 710 if (keys.length === 0) { 711 return str; 712 } 713 714 // Take next longest one from the end. 715 var key = keys.pop(); 716 var fragments = str.split(key); 717 718 if (keys.length) { 719 for (var i = 0; i < fragments.length; i++) { 720 // Process each fragment with a copy of remaining keys. 721 fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0)); 722 } 723 } 724 725 return fragments.join(args[key]); 726}; 727 728/** 729 * Translate strings to the page language or a given language. 730 * 731 * See the documentation of the server-side t() function for further details. 732 * 733 * @param str 734 * A string containing the English string to translate. 735 * @param args 736 * An object of replacements pairs to make after translation. Incidences 737 * of any key in this array are replaced with the corresponding value. 738 * See Drupal.formatString(). 739 * 740 * @param options 741 * - 'context' (defaults to the empty context): The context the source string 742 * belongs to. 743 * 744 * @return 745 * The translated string. 746 */ 747Drupal.t = function (str, args, options) { 748 options = options || {}; 749 options.context = options.context || ''; 750 751 // Fetch the localized version of the string. 752 if (Drupal.locale.strings && Drupal.locale.strings[options.context] && Drupal.locale.strings[options.context][str]) { 753 str = Drupal.locale.strings[options.context][str]; 754 } 755 756 if (args) { 757 str = Drupal.formatString(str, args); 758 } 759 return str; 760}; 761 762/** 763 * Format a string containing a count of items. 764 * 765 * This function ensures that the string is pluralized correctly. Since Drupal.t() is 766 * called by this function, make sure not to pass already-localized strings to it. 767 * 768 * See the documentation of the server-side format_plural() function for further details. 769 * 770 * @param count 771 * The item count to display. 772 * @param singular 773 * The string for the singular case. Please make sure it is clear this is 774 * singular, to ease translation (e.g. use "1 new comment" instead of "1 new"). 775 * Do not use @count in the singular string. 776 * @param plural 777 * The string for the plural case. Please make sure it is clear this is plural, 778 * to ease translation. Use @count in place of the item count, as in "@count 779 * new comments". 780 * @param args 781 * An object of replacements pairs to make after translation. Incidences 782 * of any key in this array are replaced with the corresponding value. 783 * See Drupal.formatString(). 784 * Note that you do not need to include @count in this array.
785 * This replacement is done automatically for the plural case. 786 * @param options 787 * The options to pass to the Drupal.t() function. 788 * @return 789 * A translated string. 790 */ 791Drupal.formatPlural = function (count, singular, plural, args, options) { 792 args = args || {}; 793 args['@count'] = count; 794 // Determine the index of the plural form. 795 var index = Drupal.locale.pluralFormula ? Drupal.locale.pluralFormula(args['@count']) : ((args['@count'] == 1) ? 0 : 1); 796 797 if (index == 0) { 798 return Drupal.t(singular, args, options); 799 } 800 else if (index == 1) { 801 return Drupal.t(plural, args, options); 802 } 803 else { 804 args['@count[' + index + ']'] = args['@count']; 805 delete args['@count']; 806 return Drupal.t(plural.replace('@count', '@count[' + index + ']'), args, options); 807 } 808}; 809 810/** 811 * Returns the passed in URL as an absolute URL. 812 * 813 * @param url 814 * The URL string to be normalized to an absolute URL. 815 * 816 * @return 817 * The normalized, absolute URL. 818 * 819 * @see https://github.com/angular/angular.js/blob/v1.4.4/src/ng/urlUtils.js 820 * @see https://grack.com/blog/2009/11/17/absolutizing-url-in-javascript 821 * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L53 822 */ 823Drupal.absoluteUrl = function (url) { 824 var urlParsingNode = document.createElement('a'); 825 826 // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8 827 // strings may throw an exception. 828 try { 829 url = decodeURIComponent(url); 830 } catch (e) {} 831 832 urlParsingNode.setAttribute('href', url); 833 834 // IE <= 7 normalizes the URL when assigned to the anchor node similar to 835 // the other browsers. 836 return urlParsingNode.cloneNode(false).href; 837}; 838 839/** 840 * Returns true if the URL is within Drupal's base path. 841 * 842 * @param url 843 * The URL string to be tested. 844 * 845 * @return 846 * Boolean true if local. 847 * 848 * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L58 849 */ 850Drupal.urlIsLocal = function (url) { 851 // Always use browser-derived absolute URLs in the comparison, to avoid 852 // attempts to break out of the base path using directory traversal. 853 var absoluteUrl = Drupal.absoluteUrl(url); 854 var protocol = location.protocol; 855 856 // Consider URLs that match this site's base URL but use HTTPS instead of HTTP 857 // as local as well. 858 if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) { 859 protocol = 'https:'; 860 } 861 var baseUrl = protocol + '//' + location.host + Drupal.settings.basePath.slice(0, -1); 862 863 // Decoding non-UTF-8 strings may throw an exception. 864 try { 865 absoluteUrl = decodeURIComponent(absoluteUrl); 866 } catch (e) {} 867 try { 868 baseUrl = decodeURIComponent(baseUrl); 869 } catch (e) {} 870 871 // The given URL matches the site's base URL, or has a path under the site's 872 // base URL. 873 return absoluteUrl === baseUrl || absoluteUrl.indexOf(baseUrl + '/') === 0; 874}; 875 876/** 877 * Sanitizes a URL for use with jQuery.ajax(). 878 * 879 * @param url 880 * The URL string to be sanitized. 881 * 882 * @return 883 * The sanitized URL. 884 */ 885Drupal.sanitizeAjaxUrl = function (url) { 886 var regex = /\=\?(&|$)/; 887 while (url.match(regex)) { 888 url = url.replace(regex, ''); 889 } 890 return url; 891} 892 893/** 894 * Generate the themed representation of a Drupal object. 895 * 896 * All requests for themed output must go through this function. It examines 897 * the request and routes it to the appropriate theme function. If the current 898 * theme does not provide an override function, the generic theme function is 899 * called. 900 * 901 * For example, to retrieve the HTML for text that should be emphasized and 902 * displayed as a placeholder inside a sentence, call 903 * Drupal.theme('placeholder', text). 904 * 905 * @param func 906 * The name of the theme function to call. 907 * @param ... 908 * Additional arguments to pass along to the theme function. 909 * @return 910 * Any data the theme function returns. This could be a plain HTML string, 911 * but also a complex object. 912 */ 913Drupal.theme = function (func) { 914 var args = Array.prototype.slice.apply(arguments, [1]); 915 916 return (Drupal.theme[func] || Drupal.theme.prototype[func]).apply(this, args); 917}; 918 919/** 920 * Freeze the current body height (as minimum height). Used to prevent 921 * unnecessary upwards scrolling when doing DOM manipulations. 922 */ 923Drupal.freezeHeight = function () { 924 Drupal.unfreezeHeight(); 925 $('<div id="freeze-height"></div>').css({ 926 position: 'absolute', 927 top: '0px', 928 left: '0px', 929 width: '1px', 930 height: $('body').css('height') 931 }).appendTo('body'); 932}; 933 934/** 935 * Unfreeze the body height. 936 */ 937Drupal.unfreezeHeight = function () { 938 $('#freeze-height').remove(); 939}; 940 941/** 942 * Encodes a Drupal path for use in a URL. 943 * 944 * For aesthetic reasons slashes are not escaped. 945 */ 946Drupal.encodePath = function (item, uri) { 947 uri = uri || location.href; 948 return encodeURIComponent(item).replace(/%2F/g, '/'); 949}; 950 951/** 952 * Get the text selection in a textarea. 953 */ 954Drupal.getSelection = function (element) { 955 if (typeof element.selectionStart != 'number' && document.selection) { 956 // The current selection. 957 var range1 = document.selection.createRange(); 958 var range2 = range1.duplicate(); 959 // Select all text. 960 range2.moveToElementText(element); 961 // Now move 'dummy' end point to end point of original range.
962 range2.setEndPoint('EndToEnd', range1); 963 // Now we can calculate start and end points. 964 var start = range2.text.length - range1.text.length; 965 var end = start + range1.text.length; 966 return { 'start': start, 'end': end }; 967 } 968 return { 'start': element.selectionStart, 'end': element.selectionEnd }; 969}; 970 971/** 972 * Add a global variable which determines if the window is being unloaded. 973 * 974 * This is primarily used by Drupal.displayAjaxError(). 975 */ 976Drupal.beforeUnloadCalled = false; 977$(window).bind('beforeunload pagehide', function () { 978 Drupal.beforeUnloadCalled = true; 979}); 980 981/** 982 * Displays a JavaScript error from an Ajax response when appropriate to do so. 983 */ 984Drupal.displayAjaxError = function (message) { 985 // Skip displaying the message if the user deliberately aborted (for example, 986 // by reloading the page or navigating to a different page) while the Ajax 987 // request was still ongoing. See, for example, the discussion at 988 // http://stackoverflow.com/questions/699941/handle-ajax-error-when-a-user-clicks-refresh. 989 if (!Drupal.beforeUnloadCalled) { 990 alert(message); 991 } 992}; 993 994/** 995 * Build an error message from an Ajax response. 996 */ 997Drupal.ajaxError = function (xmlhttp, uri, customMessage) { 998 var statusCode, statusText, pathText, responseText, readyStateText, message; 999 if (xmlhttp.status) { 1000 statusCode = "\n" + Drupal.t("An AJAX HTTP error occurred.") + "\n" + Drupal.t("HTTP Result Code: !status", {'!status': xmlhttp.status}); 1001 } 1002 else { 1003 statusCode = "\n" + Drupal.t("An AJAX HTTP request terminated abnormally."); 1004 } 1005 statusCode += "\n" + Drupal.t("Debugging information follows."); 1006 pathText = "\n" + Drupal.t("Path: !uri", {'!uri': uri} ); 1007 statusText = ''; 1008 // In some cases, when statusCode == 0, xmlhttp.statusText may not be defined. 1009 // Unfortunately, testing for it with typeof, etc, doesn't seem to catch that 1010 // and the test causes an exception. So we need to catch the exception here. 1011 try { 1012 statusText = "\n" + Drupal.t("StatusText: !statusText", {'!statusText': $.trim(xmlhttp.statusText)}); 1013 } 1014 catch (e) {} 1015 1016 responseText = ''; 1017 // Again, we don't have a way to know for sure whether accessing 1018 // xmlhttp.responseText is going to throw an exception. So we'll catch it. 1019 try { 1020 responseText = "\n" + Drupal.t("ResponseText: !responseText", {'!responseText': $.trim(xmlhttp.responseText) } ); 1021 } catch (e) {} 1022 1023 // Make the responseText more readable by stripping HTML tags and newlines. 1024 responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi,""); 1025 responseText = responseText.replace(/[\n]+\s+/g,"\n"); 1026 1027 // We don't need readyState except for status == 0. 1028 readyStateText = xmlhttp.status == 0 ? ("\n" + Drupal.t("ReadyState: !readyState", {'!readyState': xmlhttp.readyState})) : ""; 1029 1030 // Additional message beyond what the xmlhttp object provides. 1031 customMessage = customMessage ? ("\n" + Drupal.t("CustomMessage: !customMessage", {'!customMessage': customMessage})) : ""; 1032 1033 message = statusCode + pathText + statusText + customMessage + responseText + readyStateText; 1034 return message; 1035}; 1036 1037// Class indicating that JS is enabled; used for styling purpose. 1038$('html').addClass('js'); 1039 1040$(function () { 1041 if (Drupal.settings.setHasJsCookie === 1) { 1042 // 'js enabled' cookie. 1043 document.cookie = 'has_js=1; path=/; SameSite=Lax'; 1044 } 1045}); 1046 1047/** 1048 * Additions to jQuery.support. 1049 */ 1050$(function () { 1051 /** 1052 * Boolean indicating whether or not position:fixed is supported. 1053 */ 1054 if (jQuery.support.positionFixed === undefined) { 1055 var el = $('<div style="position:fixed; top:10px" />').appendTo(document.body); 1056 jQuery.support.positionFixed = el[0].offsetTop === 10; 1057 el.remove(); 1058 } 1059}); 1060 1061//Attach all behaviors. 1062$(function () { 1063 Drupal.attachBehaviors(document, Drupal.settings); 1064}); 1065 1066/** 1067 * The default themes. 1068 */ 1069Drupal.theme.prototype = { 1070 1071 /** 1072 * Formats text for emphasized display in a placeholder inside a sentence. 1073 * 1074 * @param str 1075 * The text to format (plain-text). 1076 * @return 1077 * The formatted text (html). 1078 */ 1079 placeholder: function (str) { 1080 return '<em class="placeholder">' + Drupal.checkPlain(str) + '</em>'; 1081 } 1082}; 1083 1084})(jQuery); 1085;/*})'"*/;/*})'"*/ 1086/** 1087 * Workaround for deprecated $.browser which was removed in jQuery 1.9 1088 * @see https://api.jquery.com/jquery.browser/ 1089 */ 1090(function ($) { 1091 if ($.browser===undefined) { 1092 $.browser={}; 1093 $.browser.msie=false; 1094 $.browser.version=0; 1095 if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) { 1096 $.browser.msie=true; 1097 $.browser.version=RegExp.$1; 1098 } 1099 } 1100})(jQuery); 1101;/*})'"*/;/*})'"*/ 1102/*! jQuery UI - v1.10.2 - 2013-03-14 1103* http://jqueryui.com 1104* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ 1105(function(e,t){function i(t,i){var a,n,r,o=t.nodeName.toLowerCase();return"area"===o?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(r=e("img[usemap=#"+n+"]")[0],!!r&&s(r)):!1):(/input|select|textarea|button|object/.test(o)?!t.disabled:"a"===o?t.href||i:i)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}var a=0,n=/^ui-id-\d+$/;e.ui=e.ui||{},e.extend(e.ui,{version:"1.10.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),scrollParent:function(){var t;return t=e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(i){if(i!==t)return this.css("zIndex",i);if(this.length)for(var s,a,n=e(this[0]);n.length&&n[0]!==document;){if(s=n.css("position"),("absolute"===s||"relative"===s||"fixed"===s)&&(a=parseInt(n.css("zIndex"),10),!isNaN(a)&&0!==a))return a;n=n.parent()}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++a)})},removeUniqueId:function(){return this.each(function(){n.test(this.id
vendor: 4,128 bytes, lines 1105-1110
1105)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var s=e.attr(t,"tabindex"),a=isNaN(s);return(a||s>=0)&&i(t,!a)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(i,s){function a(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===s?["Left","Right"]:["Top","Bottom"],r=s.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+s]=function(i){return i===t?o["inner"+s].call(this):this.each(function(){e(this).css(r,a(this,i)+"px")})},e.fn["outer"+s]=function(t,i){return"number"!=typeof t?o["outer"+s].call(this,t):this.each(function(){e(this).css(r,a(this,t,!0,i)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i){var s,a=e.plugins[t];if(a&&e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType)for(s=0;a.length>s;s++)e.options[a[s][0]]&&a[s][1].apply(e.element,i)}},hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)}})})(jQuery); 1106;/*})'"*/;/*})'"*/ 1107/*! jQuery UI - v1.10.2 - 2013-03-14 1108* http://jqueryui.com 1109* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ 1110(function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[c[l].cache]=o[c[l].cache],n=s._rgba=o._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,a.transparent),s):a[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"}
vendor: 4,446 bytes, line 1110
1110,saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,o,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=e);var u=this,d=t.type(n),p=this._rgba=[];return o!==e&&(n=[n,o,r,h],d="array"),"string"===d?this.parse(s(n)||a._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var a=s.cache;f(s.props,function(t,e){if(!u[a]&&s.to){if("alpha"===t||null==n[t])return;u[a]=s.to(u._rgba)}u[a][e.idx]=i(n[t],e,!0)}),u[a]&&0>t.inArray(null,u[a].slice(0,3))&&(u[a][3]=1,s.from&&(u._rgba=s.from(u[a])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),a=c[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(t,n){var a=n.idx,o=r[a],l=s[a],c=u[n.type]||{};null!==l&&(null===o?h[a]=l:(c.mod&&(l-o>c.mod/2?o+=c.mod:o-l>c.mod/2&&(o-=c.mod)),h[a]=i((l-o)*e+o,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,a=t[2]/255,o=t[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==o?1:o]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],a=t[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,e+1/3)),Math.round(255*n(r,o,e)),Math.round(255*n(r,o,e-1/3)),a]},f(c,function(s,n){var a=n.props,o=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===e)return this[o].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[o].slice();return f(a,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[o]=d,n):l(d)},f(a,function(e,i){l.fn[e]||(l.fn[e]=function(n){var a,o=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===o?c:("function"===o&&(n=n.call(this,c),o=t.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=c+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var a,o,r="";if("transparent"!==n&&("string"!==t.type(n)||(a=s(n)))){if(n=l(a||n),!d.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&o&&o.style;)try{r=t.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(o),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}}
vendor: 5,814 bytes, line 1110
1110,a=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function s(e,i){var s,n,o={};for(s in i)n=i[s],e[s]!==n&&(a[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(o[s]=n));return o}var n=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,a,o,r){var h=t.speed(a,o,r);return this.queue(function(){var a,o=t(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var e=t(this);return{el:e,start:i(this)}}),a=function(){t.each(n,function(t,i){e[i]&&o[i+"Class"](e[i])})},a(),l=l.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){a(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(o[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,a){return s?t.effects.animateClass.call(this,{add:i},s,n,a):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,a){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,a):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,a,o,r){return"boolean"==typeof n||n===e?a?t.effects.animateClass.call(this,n?{add:s}:{remove:s},a,o,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,a,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,a){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,a)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.2",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,a;for(a=0;s.length>a;a++)null!==s[a]&&(n=t.data(i+s[a]),n===e&&(n=""),t.css(s[a],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return e.wrap(s),(e[0]===a||t.contains(e[0],a))&&t(a).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var a=e.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(a)&&a.call(n[0]),t.isFunction(e)&&e()}var n=t(this),a=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):o.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,a=i.queue,o=t.effects.effect[i.effect];return t.fx.off||!o?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):a===!1?this.each(e):this.queue(a||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}
1110(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()})(jQuery); 1111;/*})'"*/;/*})'"*/ 1112/*jslint browser: true */ /*global jQuery: true */ 1113 1114/** 1115 * jQuery Cookie plugin 1116 * 1117 * Copyright (c) 2010 Klaus Hartl (stilbuero.de) 1118 * Dual licensed under the MIT and GPL licenses: 1119 * http://www.opensource.org/licenses/mit-license.php 1120 * http://www.gnu.org/licenses/gpl.html 1121 * 1122 */ 1123 1124// TODO JsDoc 1125 1126/** 1127 * Create a cookie with the given key and value and other optional parameters. 1128 * 1129 * @example $.cookie('the_cookie', 'the_value'); 1130 * @desc Set the value of a cookie. 1131 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); 1132 * @desc Create a cookie with all available options. 1133 * @example $.cookie('the_cookie', 'the_value'); 1134 * @desc Create a session cookie. 1135 * @example $.cookie('the_cookie', null); 1136 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain 1137 * used when the cookie was set. 1138 * 1139 * @param String key The key of the cookie. 1140 * @param String value The value of the cookie. 1141 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. 1142 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. 1143 * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. 1144 * If set to null or omitted, the cookie will be a session cookie and will not be retained 1145 * when the the browser exits. 1146 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). 1147 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). 1148 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will 1149 * require a secure protocol (like HTTPS). 1150 * @type undefined 1151 * 1152 * @name $.cookie 1153 * @cat Plugins/Cookie 1154 * @author Klaus Hartl/[email protected] 1155 */ 1156 1157/** 1158 * Get the value of a cookie with the given key. 1159 * 1160 * @example $.cookie('the_cookie'); 1161 * @desc Get the value of a cookie. 1162 * 1163 * @param String key The key of the cookie. 1164 * @return The value of the cookie. 1165 * @type String 1166 * 1167 * @name $.cookie 1168 * @cat Plugins/Cookie 1169 * @author Klaus Hartl/[email protected] 1170 */ 1171jQuery.cookie = function (key, value, options) { 1172 1173 // key and value given, set cookie... 1174 if (arguments.length > 1 && (value === null || typeof value !== "object")) { 1175 options = jQuery.extend({}, options); 1176 1177 if (value === null) { 1178 options.expires = -1; 1179 } 1180 1181 if (typeof options.expires === 'number') { 1182 var days = options.expires, t = options.expires = new Date(); 1183 t.setDate(t.getDate() + days); 1184 } 1185 1186 return (document.cookie = [ 1187 encodeURIComponent(key), '=', 1188 options.raw ? String(value) : encodeURIComponent(String(value)), 1189 options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 1190 options.path ? '; path=' + options.path : '', 1191 options.domain ? '; domain=' + options.domain : '', 1192 options.secure ? '; secure' : '' 1193 ].join('')); 1194 } 1195 1196 // key and possibly options given, get cookie... 1197 options = value || {}; 1198 var result, decode = options.raw ? function (s) { return s; }
1198 : decodeURIComponent; 1199 return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; 1200}; 1201;/*})'"*/;/*})'"*/ 1202/*! 1203 * jQuery Form Plugin 1204 * version: 4.2.1 1205 * Requires jQuery v1.7 or later 1206 * Copyright 2017 Kevin Morris 1207 * Copyright 2006 M. Alsup 1208 * Project repository: https://github.com/jquery-form/form 1209 * Dual licensed under the MIT and LGPLv3 licenses. 1210 * https://github.com/jquery-form/form#license 1211 */ 1212!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){"use strict";function b(b){var c=b.data;b.isDefaultPrevented()||(b.preventDefault(),a(b.target).closest("form").ajaxSubmit(c))}function c(b){var c=b.target,d=a(c);if(!d.is("[type=submit],[type=image]")){var e=d.closest("[type=submit]");if(0===e.length)return;c=e[0]}var f=c.form;if(f.clk=c,"image"===c.type)if(void 0!==b.offsetX)f.clk_x=b.offsetX,f.clk_y=b.offsetY;else if("function"==typeof a.fn.offset){var g=d.offset();f.clk_x=b.pageX-g.left,f.clk_y=b.pageY-g.top}else f.clk_x=b.pageX-c.offsetLeft,f.clk_y=b.pageY-c.offsetTop;setTimeout(function(){f.clk=f.clk_x=f.clk_y=null},100)}function d(){if(a.fn.ajaxSubmit.debug){var b="[jquery.form] "+Array.prototype.join.call(arguments,"");window.console&&window.console.log?window.console.log(b):window.opera&&window.opera.postError&&window.opera.postError(b)}}var e={};e.fileapi=void 0!==a('<input type="file">').get(0).files,e.formdata=void 0!==window.FormData;var f=!!a.fn.prop;a.fn.attr2=function(){if(!f)return this.attr.apply(this,arguments);var a=this.prop.apply(this,arguments);return a&&a.jquery||"string"==typeof a?a:this.attr.apply(this,arguments)},a.fn.ajaxSubmit=function(b,c,g,h){function i(c){var d,e,f=a.param(c,b.traditional).split("&"),g=f.length,h=[];for(d=0;d<g;d++)f[d]=f[d].replace(/\+/g," "),e=f[d].split("="),h.push([decodeURIComponent(e[0]),decodeURIComponent(e[1])]);return h}function j(c){for(var d=new FormData,e=0;e<c.length;e++)d.append(c[e].name,c[e].value);if(b.extraData){var f=i(b.extraData);for(e=0;e<f.length;e++)f[e]&&d.append(f[e][0],f[e][1])}b.data=null;var g=a.extend(!0,{},a.ajaxSettings,b,{contentType:!1,processData:!1,cache:!1,type:l||"POST"});b.uploadProgress&&(g.xhr=function(){var c=a.ajaxSettings.xhr();return c.upload&&c.upload.addEventListener("progress",function(a){var c=0,d=a.loaded||a.position,e=a.total;a.lengthComputable&&(c=Math.ceil(d/e*100)),b.uploadProgress(a,d,e,c)},!1),c}),g.data=null;var h=g.beforeSend;return g.beforeSend=function(a,c){b.formData?c.data=b.formData:c.data=d,h&&h.call(this,a,c)},a.ajax(g)}function k(c){function e(a){var b=null;try{a.contentWindow&&(b=a.contentWindow.document)}catch(a){d("cannot get iframe.contentWindow document: "+a)}if(b)return b;try{b=a.contentDocument?a.contentDocument:a.document}catch(c){d("cannot get iframe.contentDocument: "+c),b=a.document}return b}function g(){function b(){try{var a=e(q).readyState;d("state = "+a),a&&"uninitialized"===a.toLowerCase()&&setTimeout(b,50)}catch(a){d("Server abort: ",a," (",a.name,")"),h(2),w&&clearTimeout(w),w=void 0}}var c=o.attr2("target"),f=o.attr2("action"),g=o.attr("enctype")||o.attr("encoding")||"multipart/form-data";x.setAttribute("target",n),l&&!/post/i.test(l)||x.setAttribute("method","POST"),f!==k.url&&x.setAttribute("action",k.url),k.skipEncodingOverride||l&&!/post/i.test(l)||o.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),k.timeout&&(w=setTimeout(function(){v=!0,h(1)},k.timeout));var i=[];try{if(k.extraData)for(var j in k.extraData)k.extraData.hasOwnProperty(j)&&(a.isPlainObject(k.extraData[j])&&k.extraData[j].hasOwnProperty("name")&&k.extraData[j].hasOwnProperty("value")?i.push(a('<input type="hidden" name="'+k.extraData[j].name+'">',z).val(k.extraData[j].value).appendTo(x)[0]):i.push(a('<input type="hidden" name="'+j+'">',z).val(k.extraData[j]).appendTo(x)[0]));k.iframeTarget||p.appendTo(A),q.attachEvent?q.attachEvent("onload",h):q.addEventListener("load",h,!1),setTimeout(b,15);try{x.submit()}catch(a){var m=document.createElement("form").submit;m.apply(x)}}finally{x.setAttribute("action",f),x.setAttribute("enctype",g),c?x.setAttribute("target",c):o.removeAttr("target"),a(i).remove()}}function h(b){if(!r.aborted&&!F){if(E=e(q),E||(d("cannot access response document"),b=2),1===b&&r)return r.abort("timeout"),void y.reject(r,"timeout");if(2===b&&r)return r.abort("server abort"),void y.reject(r,"error","server abort");if(E&&E.location.href!==k.iframeSrc||v){q.detachEvent?q.detachEvent("onload",h):q.removeEventListener("load",h,!1);var c,f="success";try{if(v)throw"timeout";var g="xml"===k.dataType||E.XMLDocument||a.isXMLDoc(E);if(d("isXml="+g),!g&&window.opera&&(null===E.body||!E.body.innerHTML)&&--G)return d("requeing onLoad callback, DOM not available"),void setTimeout(h,250);var i=E.body?E.body:E.documentElement;r.responseText=i?i.innerHTML:null,r.responseXML=E.XMLDocument?E.XMLDocument:E,g&&(k.dataType="xml"),r.getResponseHeader=function(a){return{"content-type":k.dataType}[a.toLowerCase()]},i&&(r.status=Number(i.getAttribute("status"))||r.status,r.statusText=i.getAttribute("statusText")||r.statusText);var j=(k.dataType||"").toLowerCase(),l=/(json|script|text)/.test(j);if(l||k.textarea){var n=E.getElementsByTagName("textarea")[0];if(n)r.responseText=n.value,r.status=Number(n.getAttribute("status"))||r.status,r.statusText=n.getAttribute("statusText")||r.statusText;else if(l){var o=E.getElementsByTagName("pre")[0],s=E.getElementsByTagName("body")[0];o?r.responseText=o.textContent?o.textContent:o.innerText:s&&(r.responseText=s.textContent?s.textContent:s.innerText)}}else"xml"===j&&!r.responseXML&&r.responseText&&(r.responseXML=H(r.responseText));try{D=J(r,j,k)}catch(a){f="parsererror",r.error=c=a||f}}catch(a){d("error caught: ",a),f="error",r.error=c=a||f}r.aborted&&(d("upload aborted"),f=null),r.status&&(f=r.status>=200&&r.status<300||304===r.status?"success":"error"),"success"===f?(k.success&&k.success.call(k.
1212context,D,"success",r),y.resolve(r.responseText,"success",r),m&&a.event.trigger("ajaxSuccess",[r,k])):f&&(void 0===c&&(c=r.statusText),k.error&&k.error.call(k.context,r,f,c),y.reject(r,"error",c),m&&a.event.trigger("ajaxError",[r,k,c])),m&&a.event.trigger("ajaxComplete",[r,k]),m&&!--a.active&&a.event.trigger("ajaxStop"),k.complete&&k.complete.call(k.context,r,f),F=!0,k.timeout&&clearTimeout(w),setTimeout(function(){k.iframeTarget?p.attr("src",k.iframeSrc):p.remove(),r.responseXML=null},100)}}}var i,j,k,m,n,p,q,r,t,u,v,w,x=o[0],y=a.Deferred();if(y.abort=function(a){r.abort(a)},c)for(j=0;j<s.length;j++)i=a(s[j]),f?i.prop("disabled",!1):i.removeAttr("disabled");k=a.extend(!0,{},a.ajaxSettings,b),k.context=k.context||k,n="jqFormIO"+(new Date).getTime();var z=x.ownerDocument,A=o.closest("body");if(k.iframeTarget?(p=a(k.iframeTarget,z),u=p.attr2("name"),u?n=u:p.attr2("name",n)):(p=a('<iframe name="'+n+'" src="'+k.iframeSrc+'" />',z),p.css({position:"absolute",top:"-1000px",left:"-1000px"})),q=p[0],r={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(b){var c="timeout"===b?"timeout":"aborted";d("aborting upload... "+c),this.aborted=1;try{q.contentWindow.document.execCommand&&q.contentWindow.document.execCommand("Stop")}catch(a){}p.attr("src",k.iframeSrc),r.error=c,k.error&&k.error.call(k.context,r,c,b),m&&a.event.trigger("ajaxError",[r,k,c]),k.complete&&k.complete.call(k.context,r,c)}},m=k.global,m&&0==a.active++&&a.event.trigger("ajaxStart"),m&&a.event.trigger("ajaxSend",[r,k]),k.beforeSend&&k.beforeSend.call(k.context,r,k)===!1)return k.global&&a.active--,y.reject(),y;if(r.aborted)return y.reject(),y;(t=x.clk)&&(u=t.name)&&!t.disabled&&(k.extraData=k.extraData||{},k.extraData[u]=t.value,"image"===t.type&&(k.extraData[u+".x"]=x.clk_x,k.extraData[u+".y"]=x.clk_y));var B=a("meta[name=csrf-token]").attr("content"),C=a("meta[name=csrf-param]").attr("content");C&&B&&(k.extraData=k.extraData||{},k.extraData[C]=B),k.forceSync?g():setTimeout(g,10);var D,E,F,G=50,H=a.parseXML||function(a,b){return window.ActiveXObject?(b=new ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a)):b=(new DOMParser).parseFromString(a,"text/xml"),b&&b.documentElement&&"parsererror"!==b.documentElement.nodeName?b:null},I=a.parseJSON||function(a){return window.eval("("+a+")")},J=function(b,c,d){var e=b.getResponseHeader("content-type")||"",f=("xml"===c||!c)&&e.indexOf("xml")>=0,g=f?b.responseXML:b.responseText;return f&&"parsererror"===g.documentElement.nodeName&&a.error&&a.error("parsererror"),d&&d.dataFilter&&(g=d.dataFilter(g,c)),"string"==typeof g&&(("json"===c||!c)&&e.indexOf("json")>=0?g=I(g):("script"===c||!c)&&e.indexOf("javascript")>=0&&a.globalEval(g)),g};return y}if(!this.length)return d("ajaxSubmit: skipping submit process - no element selected"),this;var l,m,n,o=this;"function"==typeof b?b={success:b}:"string"==typeof b||b===!1&&arguments.length>0?(b={url:b,data:c,dataType:g},"function"==typeof h&&(b.success=h)):void 0===b&&(b={}),l=b.method||b.type||this.attr2("method"),m=b.url||this.attr2("action"),n="string"==typeof m?a.trim(m):"",n=n||window.location.href||"",n&&(n=(n.match(/^([^#]+)/)||[])[1]),b=a.extend(!0,{url:n,success:a.ajaxSettings.success,type:l||a.ajaxSettings.type,iframeSrc:/^https/i.test(window.location.href||"")?"javascript:false":"about:blank"},b);var p={};if(this.trigger("form-pre-serialize",[this,b,p]),p.veto)return d("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(b.beforeSerialize&&b.beforeSerialize(this,b)===!1)return d("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var q=b.traditional;void 0===q&&(q=a.ajaxSettings.traditional);var r,s=[],t=this.formToArray(b.semantic,s,b.filtering);if(b.data){var u=a.isFunction(b.data)?b.data(t):b.data;b.extraData=u,r=a.param(u,q)}if(b.beforeSubmit&&b.beforeSubmit(t,this,b)===!1)return d("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[t,this,b,p]),p.veto)return d("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var v=a.param(t,q);r&&(v=v?v+"&"+r:r),"GET"===b.type.toUpperCase()?(b.url+=(b.url.indexOf("?")>=0?"&":"?")+v,b.data=null):b.data=v;var w=[];if(b.resetForm&&w.push(function(){o.resetForm()}),b.clearForm&&w.push(function(){o.clearForm(b.includeHidden)}),!b.dataType&&b.target){var x=b.success||function(){};w.push(function(c,d,e){var f=arguments,g=b.replaceTarget?"replaceWith":"html";a(b.target)[g](c).each(function(){x.apply(this,f)})})}
1212else b.success&&(a.isArray(b.success)?a.merge(w,b.success):w.push(b.success));if(b.success=function(a,c,d){for(var e=b.context||this,f=0,g=w.length;f<g;f++)w[f].apply(e,[a,c,d||o,o])},b.error){var y=b.error;b.error=function(a,c,d){var e=b.context||this;y.apply(e,[a,c,d,o])}}if(b.complete){var z=b.complete;b.complete=function(a,c){var d=b.context||this;z.apply(d,[a,c,o])}}var A=a("input[type=file]:enabled",this).filter(function(){return""!==a(this).val()}),B=A.length>0,C="multipart/form-data",D=o.attr("enctype")===C||o.attr("encoding")===C,E=e.fileapi&&e.formdata;d("fileAPI :"+E);var F,G=(B||D)&&!E;b.iframe!==!1&&(b.iframe||G)?b.closeKeepAlive?a.get(b.closeKeepAlive,function(){F=k(t)}):F=k(t):F=(B||D)&&E?j(t):a.ajax(b),o.removeData("jqxhr").data("jqxhr",F);for(var H=0;H<s.length;H++)s[H]=null;return this.trigger("form-submit-notify",[this,b]),this},a.fn.ajaxForm=function(e,f,g,h){if(("string"==typeof e||e===!1&&arguments.length>0)&&(e={url:e,data:f,dataType:g},"function"==typeof h&&(e.success=h)),e=e||{},e.delegation=e.delegation&&a.isFunction(a.fn.on),!e.delegation&&0===this.length){var i={s:this.selector,c:this.context};return!a.isReady&&i.s?(d("DOM not ready, queuing ajaxForm"),a(function(){a(i.s,i.c).ajaxForm(e)}),this):(d("terminating; zero elements found by selector"+(a.isReady?"":" (DOM not ready)")),this)}return e.delegation?(a(document).off("submit.form-plugin",this.selector,b).off("click.form-plugin",this.selector,c).on("submit.form-plugin",this.selector,e,b).on("click.form-plugin",this.selector,e,c),this):this.ajaxFormUnbind().on("submit.form-plugin",e,b).on("click.form-plugin",e,c)},a.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},a.fn.formToArray=function(b,c,d){var f=[];if(0===this.length)return f;var g,h=this[0],i=this.attr("id"),j=b||void 0===h.elements?h.getElementsByTagName("*"):h.elements;if(j&&(j=a.makeArray(j)),i&&(b||/(Edge|Trident)\//.test(navigator.userAgent))&&(g=a(':input[form="'+i+'"]').get(),g.length&&(j=(j||[]).concat(g))),!j||!j.length)return f;a.isFunction(d)&&(j=a.map(j,d));var k,l,m,n,o,p,q;for(k=0,p=j.length;k<p;k++)if(o=j[k],(m=o.name)&&!o.disabled)if(b&&h.clk&&"image"===o.type)h.clk===o&&(f.push({name:m,value:a(o).val(),type:o.type}),f.push({name:m+".x",value:h.clk_x},{name:m+".y",value:h.clk_y}));else if((n=a.fieldValue(o,!0))&&n.constructor===Array)for(c&&c.push(o),l=0,q=n.length;l<q;l++)f.push({name:m,value:n[l]});else if(e.fileapi&&"file"===o.type){c&&c.push(o);var r=o.files;if(r.length)for(l=0;l<r.length;l++)f.push({name:m,value:r[l],type:o.type});else f.push({name:m,value:"",type:o.type})}else null!==n&&void 0!==n&&(c&&c.push(o),f.push({name:m,value:n,type:o.type,required:o.required}));if(!b&&h.clk){var s=a(h.clk),t=s[0];m=t.name,m&&!t.disabled&&"image"===t.type&&(f.push({name:m,value:s.val()}),f.push({name:m+".x",value:h.clk_x},{name:m+".y",value:h.clk_y}))}return f},a.fn.formSerialize=function(b){return a.param(this.formToArray(b))},a.fn.fieldSerialize=function(b){var c=[];return this.each(function(){var d=this.name;if(d){var e=a.fieldValue(this,b);if(e&&e.constructor===Array)for(var f=0,g=e.length;f<g;f++)c.push({name:d,value:e[f]});else null!==e&&void 0!==e&&c.push({name:this.name,value:e})}}),a.param(c)},a.fn.fieldValue=function(b){for(var c=[],d=0,e=this.length;d<e;d++){var f=this[d],g=a.fieldValue(f,b);null===g||void 0===g||g.constructor===Array&&!g.length||(g.constructor===Array?a.merge
1212(c,g):c.push(g))}return c},a.fieldValue=function(b,c){var d=b.name,e=b.type,f=b.tagName.toLowerCase();if(void 0===c&&(c=!0),c&&(!d||b.disabled||"reset"===e||"button"===e||("checkbox"===e||"radio"===e)&&!b.checked||("submit"===e||"image"===e)&&b.form&&b.form.clk!==b||"select"===f&&b.selectedIndex===-1))return null;if("select"===f){var g=b.selectedIndex;if(g<0)return null;for(var h=[],i=b.options,j="select-one"===e,k=j?g+1:i.length,l=j?g:0;l<k;l++){var m=i[l];if(m.selected&&!m.disabled){var n=m.value;if(n||(n=m.attributes&&m.attributes.value&&!m.attributes.value.specified?m.text:m.value),j)return n;h.push(n)}}return h}return a(b).val().replace(/\r?\n/g,"\r\n")},a.fn.clearForm=function(b){return this.each(function(){a("input,select,textarea",this).clearFields(b)})},a.fn.clearFields=a.fn.clearInputs=function(b){var c=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var d=this.type,e=this.tagName.toLowerCase();c.test(d)||"textarea"===e?this.value="":"checkbox"===d||"radio"===d?this.checked=!1:"select"===e?this.selectedIndex=-1:"file"===d?/MSIE/.test(navigator.userAgent)?a(this).replaceWith(a(this).clone(!0)):a(this).val(""):b&&(b===!0&&/hidden/.test(d)||"string"==typeof b&&a(this).is(b))&&(this.value="")})},a.fn.resetForm=function(){return this.each(function(){var b=a(this),c=this.tagName.toLowerCase();switch(c){case"input":this.checked=this.defaultChecked;case"textarea":return this.value=this.defaultValue,!0;case"option":case"optgroup":var d=b.parents("select");return d.length&&d[0].multiple?"option"===c?this.selected=this.defaultSelected:b.find("option").resetForm():d.resetForm(),!0;case"select":return b.find("option").each(function(a){if(this.selected=this.defaultSelected,this.defaultSelected&&!b[0].multiple)return b[0].selectedIndex=a,!1}),!0;case"label":var e=a(b.attr("for")),f=b.find("input,select,textarea");return e[0]&&f.unshift(e[0]),f.resetForm(),!0;case"form":return("function"==typeof this.reset||"object"==typeof this.reset&&!this.reset.nodeType)&&this.reset(),!0;default:return b.find("form,input,label,select,textarea").resetForm(),!0}})},a.fn.enable=function(a){return void 0===a&&(a=!0),this.each(function(){this.disabled=!a})},a.fn.selected=function(b){return void 0===b&&(b=!0),this.each(function(){var c=this.type;if("checkbox"===c||"radio"===c)this.checked=b;else if("option"===this.tagName.toLowerCase()){var d=a(this).parent("select");b&&d[0]&&"select-one"===d[0].type&&d.find("option").selected(!1),this.selected=b}})},a.fn.ajaxSubmit.debug=!1}); 1213;/*})'"*/;/*})'"*/ 1214/** 1215 * Override jquery.form's behavior of setting iframeSrc to javascript:false for 1216 * https requests, because that no longer works with new versions of Chrome. 1217 * - https://www.drupal.org/project/drupal/issues/3138421 1218 */ 1219 1220(function (jQuery) { 1221 1222 var fnOriginalAjaxSubmit = jQuery.fn.ajaxSubmit; 1223 jQuery.fn.extend({ 1224 ajaxSubmit: function (options) { 1225 if (typeof options == 'function') { 1226 options = { success: options }; 1227 } 1228 options = jQuery.extend(true, { 1229 iframeSrc: 'about:blank' 1230 }, options); 1231 return fnOriginalAjaxSubmit.call(this, options); 1232 } 1233 }); 1234 1235})(jQuery); 1236;/*})'"*/;/*})'"*/ 1237(function ($) { 1238 1239/** 1240 * Prevents consecutive form submissions of identical form values. 1241 * 1242 * Repetitive form submissions that would submit the identical form values are 1243 * prevented, unless the form values are different from the previously 1244 * submitted values. 1245 * 1246 * This is a simplified re-implementation of a user-agent behavior that should 1247 * be natively supported by major web browsers, but at this time, only Firefox 1248 * has a built-in protection. 1249 * 1250 * A form value-based approach ensures that the constraint is triggered for 1251 * consecutive, identical form submissions only. Compared to that, a form 1252 * button-based approach would (1) rely on [visible] buttons to exist where 1253 * technically not required and (2) require more complex state management if 1254 * there are multiple buttons in a form. 1255 * 1256 * This implementation is based on form-level submit events only and relies on 1257 * jQuery's serialize() method to determine submitted form values. As such, the 1258 * following limitations exist: 1259 * 1260 * - Event handlers on form buttons that preventDefault() do not receive a 1261 * double-submit protection. That is deemed to be fine, since such button 1262 * events typically trigger reversible client-side or server-side operations 1263 * that are local to the context of a form only. 1264 * - Changed values in advanced form controls, such as file inputs, are not part 1265 * of the form values being compared between consecutive form submits (due to 1266 * limitations of jQuery.serialize()). That is deemed to be acceptable, 1267 * because if the user forgot to attach a file, then the size of HTTP payload 1268 * will most likely be small enough to be fully passed to the server endpoint 1269 * within (milli)seconds. If a user mistakenly attached a wrong file and is
1270 * technically versed enough to cancel the form submission (and HTTP payload) 1271 * in order to attach a different file, then that edge-case is not supported 1272 * here. 1273 * 1274 * Lastly, all forms submitted via HTTP GET are idempotent by definition of HTTP 1275 * standards, so excluded in this implementation. 1276 */ 1277Drupal.behaviors.formSingleSubmit = { 1278 attach: function () { 1279 function onFormSubmit (e) { 1280 var $form = $(e.currentTarget); 1281 var formValues = $form.serialize(); 1282 var previousValues = $form.attr('data-drupal-form-submit-last'); 1283 if (previousValues === formValues) { 1284 e.preventDefault(); 1285 } 1286 else { 1287 $form.attr('data-drupal-form-submit-last', formValues); 1288 } 1289 } 1290 1291 $('body').once('form-single-submit') 1292 .delegate('form:not([method~="GET"])', 'submit.singleSubmit', onFormSubmit); 1293 } 1294}; 1295 1296})(jQuery); 1297;/*})'"*/;/*})'"*/ 1298(function ($) { 1299 1300/** 1301 * Provides Ajax page updating via jQuery $.ajax (Asynchronous JavaScript and XML). 1302 * 1303 * Ajax is a method of making a request via JavaScript while viewing an HTML 1304 * page. The request returns an array of commands encoded in JSON, which is 1305 * then executed to make any changes that are necessary to the page. 1306 * 1307 * Drupal uses this file to enhance form elements with #ajax['path'] and 1308 * #ajax['wrapper'] properties. If set, this file will automatically be included 1309 * to provide Ajax capabilities. 1310 */ 1311 1312Drupal.ajax = Drupal.ajax || {}; 1313 1314Drupal.settings.urlIsAjaxTrusted = Drupal.settings.urlIsAjaxTrusted || {}; 1315 1316/** 1317 * Attaches the Ajax behavior to each Ajax form element. 1318 */ 1319Drupal.behaviors.AJAX = { 1320 attach: function (context, settings) { 1321 // Load all Ajax behaviors specified in the settings. 1322 for (var base in settings.ajax) { 1323 if (!$('#' + base + '.ajax-processed').length) { 1324 var element_settings = settings.ajax[base]; 1325 1326 if (typeof element_settings.selector == 'undefined') { 1327 element_settings.selector = '#' + base; 1328 } 1329 $(element_settings.selector).each(function () { 1330 element_settings.element = this; 1331 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 1332 }); 1333 1334 $('#' + base).addClass('ajax-processed'); 1335 } 1336 } 1337 1338 // Bind Ajax behaviors to all items showing the class. 1339 $('.use-ajax:not(.ajax-processed)').addClass('ajax-processed').each(function () { 1340 var element_settings = {}; 1341 // Clicked links look better with the throbber than the progress bar. 1342 element_settings.progress = { 'type': 'throbber' }; 1343 1344 // For anchor tags, these will go to the target of the anchor rather 1345 // than the usual location. 1346 if ($(this).attr('href')) { 1347 element_settings.url = $(this).attr('href'); 1348 element_settings.event = 'click'; 1349 } 1350 var base = $(this).attr('id'); 1351 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 1352 }); 1353 1354 // This class means to submit the form to the action using Ajax. 1355 $('.use-ajax-submit:not(.ajax-processed)').addClass('ajax-processed').each(function () { 1356 var element_settings = {}; 1357 1358 // Ajax submits specified in this manner automatically submit to the 1359 // normal form action. 1360 element_settings.url = $(this.form).attr('action'); 1361 // Form submit button clicks need to tell the form what was clicked so 1362 // it gets passed in the POST request. 1363 element_settings.setClick = true; 1364 // Form buttons use the 'click' event rather than mousedown. 1365 element_settings.event = 'click'; 1366 // Clicked form buttons look better with the throbber than the progress bar. 1367 element_settings.progress = { 'type': 'throbber' }; 1368 1369 var base = $(this).attr('id'); 1370 Drupal.ajax[base] = new Drupal.ajax(base, this, element_settings); 1371 }); 1372 } 1373}; 1374 1375/** 1376 * Ajax object. 1377 * 1378 * All Ajax objects on a page are accessible through the global Drupal.ajax 1379 * object and are keyed by the submit button's ID. You can access them from 1380 * your module's JavaScript file to override properties or functions. 1381 * 1382 * For example, if your Ajax enabled button has the ID 'edit-submit', you can 1383 * redefine the function that is called to insert the new content like this 1384 * (inside a Drupal.behaviors attach block): 1385 * @code 1386 * Drupal.behaviors.myCustomAJAXStuff = { 1387 * attach: function (context, settings) { 1388 * Drupal.ajax['edit-submit'].commands.insert = function (ajax, response, status) { 1389 * new_content = $(response.data); 1390 * $('#my-wrapper').append(new_content); 1391 * alert('New content was appended to #my-wrapper'); 1392 * } 1393 * } 1394 * }; 1395 * @endcode 1396 */ 1397Drupal.ajax = function (base, element, element_settings) { 1398 var defaults = { 1399 url: 'system/ajax', 1400 event: 'mousedown', 1401 keypress: true, 1402 selector: '#' + base, 1403 effect: 'none', 1404 speed: 'none', 1405 method: 'replaceWith', 1406 progress: { 1407 type: 'throbber', 1408 message: Drupal.t('Please wait...') 1409 }, 1410 submit: { 1411 'js': true 1412 } 1413 }; 1414 1415 $.extend(this, defaults, element_settings); 1416 1417 this.element = element; 1418 this.element_settings = element_settings; 1419 1420 // Replacing 'nojs' with 'ajax' in the URL allows for an easy method to let 1421 // the server detect when it needs to degrade gracefully. 1422 // There are five scenarios to check for: 1423 // 1. /nojs/ 1424 // 2. /nojs$ - The end of a URL string. 1425 // 3. /nojs? - Followed by a query (with clean URLs enabled). 1426 // E.g.: path/nojs?destination=foobar 1427 // 4. /nojs& - Followed by a query (without clean URLs enabled). 1428 // E.g.: ?q=path/nojs&destination=foobar 1429 // 5. /nojs# - Followed by a fragment. 1430 // E.g.: path/nojs#myfragment 1431 this.url = element_settings.url.replace(/\/nojs(\/|$|\?|&|#)/g, '/ajax$1'); 1432 // If the 'nojs' version of the URL is trusted, also trust the 'ajax' version. 1433 if (Drupal.settings.urlIsAjaxTrusted[element_settings.url]) { 1434 Drupal.settings.urlIsAjaxTrusted[this.url] = true; 1435 } 1436 1437 this.wrapper = '#' + element_settings.wrapper; 1438 1439 // If there isn't a form, jQuery.ajax() will be used instead, allowing us to 1440 // bind Ajax to links as well. 1441 if (this.element.form) { 1442 this.form = $(this.element.form); 1443 } 1444 1445 // Set the options for the ajaxSubmit function. 1446 // The 'this' variable will not persist inside of the options object. 1447 var ajax = this; 1448 ajax.options = { 1449 url: Drupal.sanitizeAjaxUrl(ajax.url), 1450 data: ajax.submit, 1451 beforeSerialize: function (element_settings, options) { 1452 return ajax.beforeSerialize(element_settings, options); 1453 }, 1454 beforeSubmit: function (form_values, element_settings, options) { 1455 ajax.ajaxing = true; 1456 return ajax.beforeSubmit(form_values, element_settings, options); 1457 }, 1458 beforeSend: function (xmlhttprequest, options) { 1459 ajax.ajaxing = true; 1460 return ajax.beforeSend(xmlhttprequest, options); 1461 }, 1462 success: function (response, status, xmlhttprequest) { 1463 // Sanity check for browser support (object expected). 1464 // When using iFrame uploads, responses must be returned as a string. 1465 if (typeof response == 'string') { 1466 response = $.parseJSON(response); 1467 } 1468 1469 // Prior to invoking the response's commands, verify that they can be 1470 // trusted by checking for a response header. See 1471 // ajax_set_verification_header() for details. 1472 // - Empty responses are harmless so can bypass verification. This avoids 1473 // an alert message for server-generated no-op responses that skip Ajax 1474 // rendering. 1475 // - Ajax objects with trusted URLs (e.g., ones defined server-side via 1476 // #ajax) can bypass header verification. This is especially useful for 1477 // Ajax with multipart forms. Because IFRAME transport is used, the 1478 // response headers cannot be accessed for verification. 1479 if (response !== null && !Drupal.settings.urlIsAjaxTrusted[ajax.url]) { 1480 if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') { 1481 var customMessage = Drupal.t("The response failed verification so will not be processed."); 1482 return ajax.error(xmlhttprequest, ajax.url, customMessage); 1483 } 1484 } 1485 1486 return ajax.success(response, status); 1487 }, 1488 complete: function (xmlhttprequest, status) { 1489 ajax.ajaxing = false;
1490 if (status == 'error' || status == 'parsererror') { 1491 return ajax.error(xmlhttprequest, ajax.url); 1492 } 1493 }, 1494 dataType: 'json', 1495 jsonp: false, 1496 type: 'POST' 1497 }; 1498 1499 // For multipart forms (e.g., file uploads), jQuery Form targets the form 1500 // submission to an iframe instead of using an XHR object. The initial "src" 1501 // of the iframe, prior to the form submission, is set to options.iframeSrc. 1502 // "about:blank" is the semantically correct, standards-compliant, way to 1503 // initialize a blank iframe; however, some old IE versions (possibly only 6) 1504 // incorrectly report a mixed content warning when iframes with an 1505 // "about:blank" src are added to a parent document with an https:// origin. 1506 // jQuery Form works around this by defaulting to "javascript:false" instead, 1507 // but that breaks on Chrome 83, so here we force the semantically correct 1508 // behavior for all browsers except old IE. 1509 // @see https://www.drupal.org/project/drupal/issues/3143016 1510 // @see https://github.com/jquery-form/form/blob/df9cb101b9c9c085c8d75ad980c7ff1cf62063a1/jquery.form.js#L68 1511 // @see https://bugs.chromium.org/p/chromium/issues/detail?id=1084874 1512 // @see https://html.spec.whatwg.org/multipage/browsers.html#creating-browsing-contexts 1513 // @see https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy 1514 if (navigator.userAgent.indexOf("MSIE") === -1) { 1515 ajax.options.iframeSrc = 'about:blank'; 1516 } 1517 1518 // Bind the ajaxSubmit function to the element event. 1519 $(ajax.element).bind(element_settings.event, function (event) { 1520 if (!Drupal.settings.urlIsAjaxTrusted[ajax.url] && !Drupal.urlIsLocal(ajax.url)) { 1521 throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', {'!url': ajax.url})); 1522 } 1523 return ajax.eventResponse(this, event); 1524 }); 1525 1526 // If necessary, enable keyboard submission so that Ajax behaviors 1527 // can be triggered through keyboard input as well as e.g. a mousedown 1528 // action. 1529 if (element_settings.keypress) { 1530 $(ajax.element).keypress(function (event) { 1531 return ajax.keypressResponse(this, event); 1532 }); 1533 } 1534 1535 // If necessary, prevent the browser default action of an additional event. 1536 // For example, prevent the browser default action of a click, even if the 1537 // AJAX behavior binds to mousedown. 1538 if (element_settings.prevent) { 1539 $(ajax.element).bind(element_settings.prevent, false); 1540 } 1541}; 1542 1543/** 1544 * Handle a key press. 1545 * 1546 * The Ajax object will, if instructed, bind to a key press response. This 1547 * will test to see if the key press is valid to trigger this event and 1548 * if it is, trigger it for us and prevent other keypresses from triggering. 1549 * In this case we're handling RETURN and SPACEBAR keypresses (event codes 13 1550 * and 32. RETURN is often used to submit a form when in a textfield, and 1551 * SPACE is often used to activate an element without submitting. 1552 */ 1553Drupal.ajax.prototype.keypressResponse = function (element, event) { 1554 // Create a synonym for this to reduce code confusion. 1555 var ajax = this; 1556 1557 // Detect enter key and space bar and allow the standard response for them, 1558 // except for form elements of type 'text' and 'textarea', where the 1559 // spacebar activation causes inappropriate activation if #ajax['keypress'] is 1560 // TRUE. On a text-type widget a space should always be a space. 1561 if (event.which == 13 || (event.which == 32 && element.type != 'text' && element.type != 'textarea')) { 1562 $(ajax.element_settings.element).trigger(ajax.element_settings.event); 1563 return false; 1564 } 1565}; 1566 1567/** 1568 * Handle an event that triggers an Ajax response. 1569 * 1570 * When an event that triggers an Ajax response happens, this method will 1571 * perform the actual Ajax call. It is bound to the event using 1572 * bind() in the constructor, and it uses the options specified on the 1573 * ajax object. 1574 */ 1575Drupal.ajax.prototype.eventResponse = function (element, event) { 1576 // Create a synonym for this to reduce code confusion. 1577 var ajax = this; 1578 1579 // Do not perform another ajax command if one is already in progress. 1580 if (ajax.ajaxing) { 1581 return false; 1582 } 1583 1584 try { 1585 if (ajax.form) { 1586 // If setClick is set, we must set this to ensure that the button's 1587 // value is passed. 1588 if (ajax.setClick) { 1589 // Mark the clicked button. 'form.clk' is a special variable for 1590 // ajaxSubmit that tells the system which element got clicked to 1591 // trigger the submit. Without it there would be no 'op' or
1592 // equivalent. 1593 element.form.clk = element; 1594 } 1595 1596 ajax.form.ajaxSubmit(ajax.options); 1597 } 1598 else { 1599 ajax.beforeSerialize(ajax.element, ajax.options); 1600 $.ajax(ajax.options); 1601 } 1602 } 1603 catch (e) { 1604 // Unset the ajax.ajaxing flag here because it won't be unset during 1605 // the complete response. 1606 ajax.ajaxing = false; 1607 alert("An error occurred while attempting to process " + ajax.options.url + ": " + e.message); 1608 } 1609 1610 // For radio/checkbox, allow the default event. On IE, this means letting 1611 // it actually check the box. 1612 if (typeof element.type != 'undefined' && (element.type == 'checkbox' || element.type == 'radio')) { 1613 return true; 1614 } 1615 else { 1616 return false; 1617 } 1618 1619}; 1620 1621/** 1622 * Handler for the form serialization. 1623 * 1624 * Runs before the beforeSend() handler (see below), and unlike that one, runs 1625 * before field data is collected. 1626 */ 1627Drupal.ajax.prototype.beforeSerialize = function (element, options) { 1628 // Allow detaching behaviors to update field values before collecting them. 1629 // This is only needed when field values are added to the POST data, so only 1630 // when there is a form such that this.form.ajaxSubmit() is used instead of 1631 // $.ajax(). When there is no form and $.ajax() is used, beforeSerialize() 1632 // isn't called, but don't rely on that: explicitly check this.form. 1633 if (this.form) { 1634 var settings = this.settings || Drupal.settings; 1635 Drupal.detachBehaviors(this.form, settings, 'serialize'); 1636 } 1637 1638 // Prevent duplicate HTML ids in the returned markup. 1639 // @see drupal_html_id() 1640 options.data['ajax_html_ids[]'] = []; 1641 $('[id]').each(function () { 1642 options.data['ajax_html_ids[]'].push(this.id); 1643 }); 1644 1645 // Allow Drupal to return new JavaScript and CSS files to load without 1646 // returning the ones already loaded. 1647 // @see ajax_base_page_theme() 1648 // @see drupal_get_css() 1649 // @see drupal_get_js() 1650 options.data['ajax_page_state[theme]'] = Drupal.settings.ajaxPageState.theme; 1651 options.data['ajax_page_state[theme_token]'] = Drupal.settings.ajaxPageState.theme_token; 1652 for (var key in Drupal.settings.ajaxPageState.css) { 1653 options.data['ajax_page_state[css][' + key + ']'] = 1; 1654 } 1655 for (var key in Drupal.settings.ajaxPageState.js) { 1656 options.data['ajax_page_state[js][' + key + ']'] = 1; 1657 } 1658}; 1659 1660/** 1661 * Modify form values prior to form submission. 1662 */ 1663Drupal.ajax.prototype.beforeSubmit = function (form_values, element, options) { 1664 // This function is left empty to make it simple to override for modules 1665 // that wish to add functionality here. 1666}; 1667 1668/** 1669 * Prepare the Ajax request before it is sent. 1670 */ 1671Drupal.ajax.prototype.beforeSend = function (xmlhttprequest, options) { 1672 // For forms without file inputs, the jQuery Form plugin serializes the form 1673 // values, and then calls jQuery's $.ajax() function, which invokes this 1674 // handler. In this circumstance, options.extraData is never used. For forms 1675 // with file inputs, the jQuery Form plugin uses the browser's normal form 1676 // submission mechanism, but captures the response in a hidden IFRAME. In this 1677 // circumstance, it calls this handler first, and then appends hidden fields 1678 // to the form to submit the values in options.extraData. There is no simple 1679 // way to know which submission mechanism will be used, so we add to extraData 1680 // regardless, and allow it to be ignored in the former case. 1681 if (this.form) { 1682 options.extraData = options.extraData || {}; 1683 1684 // Let the server know when the IFRAME submission mechanism is used. The 1685 // server can use this information to wrap the JSON response in a TEXTAREA, 1686 // as per http://jquery.malsup.com/form/#file-upload. 1687 options.extraData.ajax_iframe_upload = '1'; 1688 1689 // The triggering element is about to be disabled (see below), but if it 1690 // contains a value (e.g., a checkbox, textfield, select, etc.), ensure that 1691 // value is included in the submission. As per above, submissions that use 1692 // $.ajax() are already serialized prior to the element being disabled, so 1693 // this is only needed for IFRAME submissions. 1694 var v = $.fieldValue(this.element); 1695 if (v !== null) { 1696 options.extraData[this.element.name] = Drupal.checkPlain(v); 1697 } 1698 } 1699 1700 // Disable the element that received the change to prevent user interface 1701 // interaction while the Ajax request is in progress. ajax.ajaxing prevents 1702 // the element from triggering a new request, but does not prevent the user 1703 // from changing its value. 1704 $(this.element).addClass('progress-disabled').attr('disabled', true); 1705 1706 // Insert progressbar or throbber. 1707 if (this.progress.type == 'bar') { 1708 var progressBar = new Drupal.progressBar('ajax-progress-' + this.element.i
1708d, $.noop, this.progress.method, $.noop); 1709 if (this.progress.message) { 1710 progressBar.setProgress(-1, this.progress.message); 1711 } 1712 if (this.progress.url) { 1713 progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500); 1714 } 1715 this.progress.element = $(progressBar.element).addClass('ajax-progress ajax-progress-bar'); 1716 this.progress.object = progressBar; 1717 $(this.element).after(this.progress.element); 1718 } 1719 else if (this.progress.type == 'throbber') { 1720 this.progress.element = $('<div class="ajax-progress ajax-progress-throbber"><div class="throbber"> </div></div>'); 1721 if (this.progress.message) { 1722 $('.throbber', this.progress.element).after('<div class="message">' + this.progress.message + '</div>'); 1723 } 1724 $(this.element).after(this.progress.element); 1725 } 1726}; 1727 1728/** 1729 * Handler for the form redirection completion. 1730 */ 1731Drupal.ajax.prototype.success = function (response, status) { 1732 // Remove the progress element. 1733 if (this.progress.element) { 1734 $(this.progress.element).remove(); 1735 } 1736 if (this.progress.object) { 1737 this.progress.object.stopMonitoring(); 1738 } 1739 $(this.element).removeClass('progress-disabled').removeAttr('disabled'); 1740 1741 Drupal.freezeHeight(); 1742 1743 for (var i in response) { 1744 if (response.hasOwnProperty(i) && response[i]['command'] && this.commands[response[i]['command']]) { 1745 this.commands[response[i]['command']](this, response[i], status); 1746 } 1747 } 1748 1749 // Reattach behaviors, if they were detached in beforeSerialize(). The 1750 // attachBehaviors() called on the new content from processing the response 1751 // commands is not sufficient, because behaviors from the entire form need 1752 // to be reattached. 1753 if (this.form) { 1754 var settings = this.settings || Drupal.settings; 1755 Drupal.attachBehaviors(this.form, settings); 1756 } 1757 1758 Drupal.unfreezeHeight(); 1759 1760 // Remove any response-specific settings so they don't get used on the next 1761 // call by mistake. 1762 this.settings = null; 1763}; 1764 1765/** 1766 * Build an effect object which tells us how to apply the effect when adding new HTML. 1767 */ 1768Drupal.ajax.prototype.getEffect = function (response) { 1769 var type = response.effect || this.effect; 1770 var speed = response.speed || this.speed; 1771 1772 var effect = {}; 1773 if (type == 'none') { 1774 effect.showEffect = 'show'; 1775 effect.hideEffect = 'hide'; 1776 effect.showSpeed = ''; 1777 } 1778 else if (type == 'fade') { 1779 effect.showEffect = 'fadeIn'; 1780 effect.hideEffect = 'fadeOut'; 1781 effect.showSpeed = speed; 1782 } 1783 else { 1784 effect.showEffect = type + 'Toggle'; 1785 effect.hideEffect = type + 'Toggle'; 1786 effect.showSpeed = speed; 1787 } 1788 1789 return effect; 1790}; 1791 1792/** 1793 * Handler for the form redirection error. 1794 */ 1795Drupal.ajax.prototype.error = function (xmlhttprequest, uri, customMessage) { 1796 Drupal.displayAjaxError(Drupal.ajaxError(xmlhttprequest, uri, customMessage)); 1797 // Remove the progress element. 1798 if (this.progress.element) { 1799 $(this.progress.element).remove(); 1800 } 1801 if (this.progress.object) { 1802 this.progress.object.stopMonitoring(); 1803 } 1804 // Undo hide. 1805 $(this.wrapper).show(); 1806 // Re-enable the element. 1807 $(this.element).removeClass('progress-disabled').removeAttr('disabled'); 1808 // Reattach behaviors, if they were detached in beforeSerialize(). 1809 if (this.form) { 1810 var settings = this.settings || Drupal.settings; 1811 Drupal.attachBehaviors(this.form, settings); 1812 } 1813}; 1814 1815/** 1816 * Provide a series of commands that the server can request the client perform. 1817 */ 1818Drupal.ajax.prototype.commands = { 1819 /** 1820 * Command to insert new content into the DOM. 1821 */ 1822 insert: function (ajax, response, status) { 1823 // Get information from the response. If it is not there, default to 1824 // our presets. 1825 var wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 1826 var method = response.method || ajax.method; 1827 var effect = ajax.getEffect(response); 1828 1829 // We don't know what response.data contains: it might be a string of text 1830 // without HTML, so don't rely on jQuery correctly iterpreting 1831 // $(response.data) as new HTML rather than a CSS selector. Also, if 1832 // response.data contains top-level text nodes, they get lost with either 1833 // $(response.data) or $('<div></div>').replaceWith(response.data). 1834 var new_content_wrapped = $('<div></div>').html(response.data); 1835 var new_content = new_content_wrapped.contents(); 1836 1837 // For legacy reasons, the effects processing code assumes that new_content 1838 // consists of a single top-level element. Also, it has not been 1839 // sufficiently tested whether attachBehaviors() can be successfully called 1840 // with a context object that includes top-level text nodes. However, to 1841 // give developers full control of the HTML appearing in the page, and to 1842 // enable Ajax content to be inserted in places where DIV elements are not 1843 // allowed (e.g., within TABLE, TR, and SPAN parents), we check if the new 1844 // content satisfies the requirement of a single top-level element, and 1845 // only use the container DIV created above when it doesn't. For more 1846 // information, please see http://drupal.org/node/736066. 1847 if (new_content.length != 1 || new_content.get(0).nodeType != 1) { 1848 new_content = new_content_wrapped; 1849 } 1850 1851 // If removing content from the wrapper, detach behaviors first. 1852 switch (method) { 1853 case 'html': 1854 case 'replaceWith': 1855 case 'replaceAll': 1856 case 'empty': 1857 case 'remove': 1858 var settings = response.settings || ajax.settings || Drupal.settings; 1859 Drupal.detachBehaviors(wrapper, settings); 1860 } 1861 1862 // Add the new content to the page. 1863 wrapper[method](new_content); 1864 1865 // Immediately hide the new content if we're using any effects. 1866 if (effect.showEffect != 'show') { 1867 new_content.hide(); 1868 } 1869 1870 // Determine which effect to use and what content will receive the 1871 // effect, then show the new content. 1872 if ($('.ajax-new-content', new_content).length > 0) { 1873 $('.ajax-new-content', new_content).hide(); 1874 new_content.show(); 1875 $('.ajax-new-content', new_content)[effect.showEffect](effect.showSpeed); 1876 } 1877 else if (effect.showEffect != 'show') { 1878 new_content[effect.showEffect](effect.showSpeed); 1879 } 1880 1881 // Attach all JavaScript behaviors to the new content, if it was successfully 1882 // added to the page, this if statement allows #ajax['wrapper'] to be 1883 // optional. 1884 if (new_content.parents('html').length > 0) { 1885 // Apply any settings from the returned JSON if available. 1886 var settings = response.settings || ajax.settings || Drupal.settings; 1887 Drupal.attachBehaviors(new_content, settings); 1888 } 1889 }, 1890 1891 /** 1892 * Command to remove a chunk from the page. 1893 */ 1894 remove: function (ajax, response, status) { 1895 var settings = response.settings || ajax.settings || Drupal.settings; 1896 Drupal.detachBehaviors($(response.selector), settings); 1897 $(response.selector).remove(); 1898 }, 1899 1900 /** 1901 * Command to mark a chunk changed. 1902 */ 1903 changed: function (ajax, response, status) { 1904 if (!$(response.selector).hasClass('ajax-changed')) { 1905 $(response.selector).addClass('ajax-changed'); 1906 if (response.asterisk) { 1907 $(response.selector).find(response.asterisk).append(' <span class="ajax-changed">*</span> '); 1908 } 1909 } 1910 }, 1911 1912 /** 1913 * Command to provide an alert. 1914 */ 1915 alert: function (ajax, response, status) { 1916 alert(response.text, response.title); 1917 }, 1918 1919 /** 1920 * Command to provide the jQuery css() function. 1921 */ 1922 css: function (ajax, response, status) { 1923 $(response.selector).css(response.argument); 1924 }, 1925 1926 /** 1927 * Command to set the settings that will be used for other commands in this response. 1928 */ 1929 settings: function (ajax, response, status) { 1930 if (response.merge) { 1931 $.extend(true, Drupal.settings, response.settings); 1932 } 1933 else { 1934 ajax.settings = response.settings; 1935 } 1936 }, 1937 1938 /** 1939 * Command to attach data using jQuery's data API. 1940 */ 1941 data: function (ajax, response, status) { 1942 $(response.selector).data(response.name, response.value); 1943 }, 1944 1945 /** 1946 * Command to apply a jQuery method. 1947 */ 1948 invoke: function (ajax, response, status) { 1949 var $element = $(response.selector); 1950 $element[response.method].apply($element, response.arguments); 1951 }, 1952 1953 /** 1954 * Command to restripe a table. 1955 */ 1956 restripe: function (ajax, response, status) { 1957 // :even and :odd are reversed because jQuery counts from 0 and 1958 // we count from 1, so we're out of sync. 1959 // Match immediate children of the parent element to allow nesting. 1960 $('> tbody > tr:visible, > tr:visible', $(response.selector)) 1961 .removeClass('odd even') 1962 .filter(':even').addClass('odd').end() 1963 .filter(':odd').addClass('even'); 1964 }, 1965 1966 /** 1967 * Command to add css. 1968 * 1969 * Uses the proprietary addImport method if available as browsers which 1970 * support that method ignore @import statements in dynamically added 1971 * stylesheets. 1972 */ 1973 add_css: function (ajax, response, status) { 1974 // Add the styles in the normal way. 1975 $('head').prepend(response.data); 1976 // Add imports in the styles using the addImport method if available. 1977 var match, importMatch = /^@import url\("(.*)"\);$/igm; 1978 if (document.styleSheets[0].addImport && importMatch.test(response.data)) { 1979 importMatch.lastIndex = 0; 1980 while (match = importMatch.exec(response.data)) { 1981 document.styleSheets[0].addImport(match[1]); 1982 } 1983 } 1984 }, 1985 1986 /** 1987 * Command to update a form's build ID. 1988 */ 1989 updateBuildId: function(ajax, response, status) { 1990 $('input[name="form_build_id"][value="' + response['old'] + '"]').val(response['new']); 1991 } 1992}; 1993 1994})(jQuery); 1995;/*})'"*/;/*})'"*/ 1996(function (D) { 1997 var beforeSerialize = D.ajax.prototype.beforeSerialize;
1998 D.ajax.prototype.beforeSerialize = function (element, options) { 1999 beforeSerialize.call(this, element, options); 2000 options.data['ajax_page_state[jquery_version]'] = D.settings.ajaxPageState.jquery_version; 2001 options.data['ajax_page_state[jquery_version_token]'] = D.settings.ajaxPageState.jquery_version_token; 2002 } 2003})(Drupal); 2004;/*})'"*/;/*})'"*/ 2005/** 2006 * @file 2007 * Ajax Command Invoke Chain js. 2008 * 2009 * Processing code for the new command, used like 'invoke' but with the chance 2010 * to chain calls to several methods. 2011 */ 2012 2013(function ($) { 2014 'use strict'; 2015 2016 /** 2017 * Provides processing for the new ajax command. 2018 * 2019 * @param {Object} ajax - Drupal Ajax object. 2020 * @param {Object} response - Response from server with data retrieved. 2021 * @param {string} status - Value returned by response processed. 2022 */ 2023 Drupal.ajax.prototype.commands.invoke_chain = function (ajax, response, status) { 2024 // Get selector information from the response. If it's not there, default to presets. 2025 var wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 2026 2027 // Get the element. 2028 var $element = $(wrapper); 2029 2030 // Loop through all chain to work with data. 2031 for (var i = 0; i < response.chain.length; i++) { 2032 // Get the method and arguments. 2033 var method = response.chain[i].shift(); 2034 2035 // Call the function, and store the obtained object to perform the 2036 // chainning. 2037 $element = $element[method].apply($element, response.chain[i]); 2038 } 2039 }; 2040 2041})(jQuery); 2042;/*})'"*/;/*})'"*/ 2043(function ($) { 2044 'use strict'; 2045 Drupal.behaviors.ACChangeEnterBehavior = { 2046 attach: function (context, settings) { 2047 $('input.form-autocomplete', context).once('ac-change-enter-behavior', function() { 2048 $(this).keypress(function(e) { 2049 var ac = $('#autocomplete'); 2050 if (e.keyCode == 13 && typeof ac[0] != 'undefined') { 2051 e.preventDefault(); 2052 ac.each(function () { 2053 if(this.owner.selected == false){ 2054 this.owner.selectDown(); 2055 } 2056 this.owner.hidePopup(); 2057 }); 2058 $(this).trigger('change'); 2059 } 2060 }); 2061 }); 2062 } 2063 }; 2064}(jQuery)); 2065;/*})'"*/;/*})'"*/ 2066/** 2067 * @file 2068 * Lazyloader JQuery plugin 2069 * 2070 * @author: Daniel Honrade http://drupal.org/user/351112 2071 * 2072 * Settings: 2073 * - distance = distance of the image to the viewable browser screen before it gets loaded 2074 * - icon = animating image that appears before the actual image is loaded 2075 * 2076 */ 2077 2078(function($){ 2079 2080 // Window jQuery object global reference. 2081 var $window; 2082 2083 // Process lazyloader 2084 $.fn.lazyloader = function(options){ 2085 var settings = $.extend($.fn.lazyloader.defaults, options); 2086 var images = this; 2087 2088 if (typeof($window) == 'undefined') { 2089 $window = $(window); 2090 } 2091 2092 // add the loader icon 2093 if(settings['icon'] != '') $('img[data-src]').parent().css({ position: 'relative', display: 'block'}).prepend('<img class="lazyloader-icon" src="' + settings['icon'] + '" />'); 2094 2095 // Load on refresh 2096 loadActualImages(images, settings); 2097 2098 // Load on scroll 2099 $window.bind('scroll', function(e) { 2100 loadActualImages(images, settings); 2101 }); 2102 2103 // Load on resize 2104 $window.resize(function(e) { 2105 loadActualImages(images, settings); 2106 }); 2107 2108 return this; 2109 }; 2110 2111 // Defaults 2112 $.fn.lazyloader.defaults = { 2113 distance: 0, // the distance (in pixels) of image when loading of the actual image will happen 2114 icon: '' // display animating icon 2115 }; 2116 2117 2118 // Loading actual images 2119 function loadActualImages(images, settings){ 2120 clearTimeout($.fn.lazyloader.timeout); 2121 2122 $.fn.lazyloader.timeout = setTimeout(function(){ 2123 images.each(function(){ 2124 var $image = $(this); 2125 var imageHeight = $image.height(), imageWidth = $image.width(); 2126 var iconTop = Math.round(imageHeight/2), iconLeft = Math.round(imageWidth/2), iconFactor = Math.round($image.siblings('img.lazyloader-icon').height()/2); 2127 $image.siblings('img.lazyloader-icon').css({ top: iconTop - iconFactor, left: iconLeft - iconFactor }); 2128 2129 if (windowView(this, settings) && ($image.attr('data-src'))) { 2130 loadImage(this); 2131 $image.fadeIn('slow'); 2132 } 2133 }); 2134 }, 50); 2135 }; 2136 2137 2138 // Check if the images are within the window view (top, bottom, left and right) 2139 function windowView(image, settings){ 2140 var $image = $(image); 2141 // window variables 2142 var windowHeight = $window.height(), 2143 windowWidth = $window.width(), 2144 2145 windowBottom = windowHeight + $window.scrollTop(), 2146 windowTop = windowBottom - windowHeight, 2147 windowRight = windowWidth + $window.scrollLeft(), 2148 windowLeft = windowRight - windowWidth, 2149 2150 // image variables 2151 imageHeight = $image.height(), 2152 imageWidth = $image.width(), 2153 2154 imageTop = $image.offset().top - settings['distance'], 2155 imageBottom = imageTop + imageHeight + settings['distance'], 2156 imageLeft = $image.offset().left - settings['distance'], 2157 imageRight = imageLeft + imageWidth + settings['distance']; 2158 2159 // This will return true if any corner of the image is within the screen 2160 return (((windowBottom >= imageTop) && (windowTop <= imageTop)) || ((windowBottom >= imageBottom) && (windowTop <= imageBottom))) && 2161 (((windowRight >= imageLeft) && (windowLeft <= imageLeft)) || ((windowRight >= imageRight) && (windowLeft <= imageRight))); 2162 }; 2163 2164 2165 // Load the image 2166 function loadImage(image){ 2167 var $image = $(image); 2168 $image.hide().attr('src', $image.data('src')).removeAttr('data-src'); 2169 $image.load(function() { 2170 $image.siblings('img.lazyloader-icon').remove(); 2171 }); 2172 }; 2173 2174 Drupal.behaviors.lazyloader = { 2175 attach: function (context, settings) { 2176 if (Drupal.settings.lazyloaderSettings) { 2177 var distance = Drupal.settings.lazyloaderSettings.distance 2178 var icon = Drupal.settings.lazyloaderSettings.icon 2179 $("img[data-src]").lazyloader({distance: distance, icon: icon}); 2180 } 2181 } 2182 }; 2183 2184})(jQuery); 2185;/*})'"*/;/*})'"*/ 2186(function($) { 2187 /** 2188 * Initialization 2189 */ 2190 Drupal.behaviors.prevent_js_alerts = { 2191 /** 2192 * Run Drupal module JS initialization. 2193 * 2194 * @param context 2195 * @param settings 2196 */ 2197 attach: function(context, settings) { 2198 // Override the alert() function. 2199 window.alert = function(text) { 2200 // Check if the console exists (required e.g. for older IE versions). 2201 if (typeof console != "undefined") { 2202 // Log error to console instead. 2203 console.error("Module 'prevent_js_alerts' prevented the following alert: " + text); 2204 } 2205 return true; 2206 }; 2207 } 2208 }; 2209})(jQuery); 2210;/*})'"*/;/*})'"*/ 2211(function ($) { 2212 2213/** 2214 * A progressbar object. Initialized with the given id. Must be inserted into 2215 * the DOM afterwards through progressBar.element. 2216 * 2217 * method is the function which will perform the HTTP request to get the 2218 * progress bar state. Either "GET" or "POST". 2219 * 2220 * e.g. pb = new progressBar('myProgressBar'); 2221 * some_element.appendChild(pb.element); 2222 */ 2223Drupal.progressBar = function (id, updateCallback, method, errorCallback) { 2224 var pb = this; 2225 this.id = id; 2226 this.method = method || 'GET'; 2227 this.updateCallback = updateCallback; 2228 this.errorCallback = errorCallback; 2229
2230 // The WAI-ARIA setting aria-live="polite" will announce changes after users 2231 // have completed their current activity and not interrupt the screen reader. 2232 this.element = $('<div class="progress-wrapper" aria-live="polite"></div>'); 2233 this.element.html('<div id ="' + id + '" class="progress progress-striped active">' + 2234 '<div class="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0">' + 2235 '<div class="percentage sr-only"></div>' + 2236 '</div></div>' + 2237 '</div><div class="percentage pull-right"></div>' + 2238 '<div class="message"> </div>'); 2239}; 2240 2241/** 2242 * Set the percentage and status message for the progressbar. 2243 */ 2244Drupal.progressBar.prototype.setProgress = function (percentage, message) { 2245 if (percentage >= 0 && percentage <= 100) { 2246 $('div.progress-bar', this.element).css('width', percentage + '%'); 2247 $('div.progress-bar', this.element).attr('aria-valuenow', percentage); 2248 $('div.percentage', this.element).html(percentage + '%'); 2249 } 2250 $('div.message', this.element).html(message); 2251 if (this.updateCallback) { 2252 this.updateCallback(percentage, message, this); 2253 } 2254}; 2255 2256/** 2257 * Start monitoring progress via Ajax. 2258 */ 2259Drupal.progressBar.prototype.startMonitoring = function (uri, delay) { 2260 this.delay = delay; 2261 this.uri = uri; 2262 this.sendPing(); 2263}; 2264 2265/** 2266 * Stop monitoring progress via Ajax. 2267 */ 2268Drupal.progressBar.prototype.stopMonitoring = function () { 2269 clearTimeout(this.timer); 2270 // This allows monitoring to be stopped from within the callback. 2271 this.uri = null; 2272}; 2273 2274/** 2275 * Request progress data from server. 2276 */ 2277Drupal.progressBar.prototype.sendPing = function () { 2278 if (this.timer) { 2279 clearTimeout(this.timer); 2280 } 2281 if (this.uri) { 2282 var pb = this; 2283 // When doing a post request, you need non-null data. Otherwise a 2284 // HTTP 411 or HTTP 406 (with Apache mod_security) error may result. 2285 $.ajax({ 2286 type: this.method, 2287 url: this.uri, 2288 data: '', 2289 dataType: 'json', 2290 success: function (progress) { 2291 // Display errors. 2292 if (progress.status == 0) { 2293 pb.displayError(progress.data); 2294 return; 2295 } 2296 // Update display. 2297 pb.setProgress(progress.percentage, progress.message); 2298 // Schedule next timer. 2299 pb.timer = setTimeout(function () { pb.sendPing(); }, pb.delay); 2300 }, 2301 error: function (xmlhttp) { 2302 pb.displayError(Drupal.ajaxError(xmlhttp, pb.uri)); 2303 } 2304 }); 2305 } 2306}; 2307 2308/** 2309 * Display errors on the page. 2310 */ 2311Drupal.progressBar.prototype.displayError = function (string) { 2312 var error = $('<div class="alert alert-block alert-error"><a class="close" data-dismiss="alert" href="#">×</a><h4>Error message</h4></div>').append(string); 2313 $(this.element).before(error).hide(); 2314 2315 if (this.errorCallback) { 2316 this.errorCallback(this); 2317 } 2318}; 2319 2320})(jQuery); 2321;/*})'"*/;/*})'"*/ 2322/** 2323 * @file 2324 * JavaScript for Rela custom dropdowns. 2325 */ 2326(function ($, Drupal) { 2327 'use strict'; 2328 2329 /** 2330 * Rela Dropdown behavior. 2331 */ 2332 Drupal.behaviors.relaDropdown = { 2333 attach: function (context, settings) { 2334 // Handle main dropdown toggle. 2335 $(context).find('[data-toggle="rela-dropdown"]').once('rela-dropdown', function () { 2336 var $toggle = $(this); 2337 2338 // Skip AJAX links - they should not be handled by dropdown toggle. 2339 // Only skip if it's actually a link element with href and use-ajax class. 2340 if ($toggle.is('a') && $toggle.attr('href') && $toggle.hasClass('use-ajax')) { 2341 return; 2342 } 2343 2344 var $dropdown = $toggle.closest('.rela-dropdown'); 2345 2346 $toggle.on('click.rela-dropdown', function (e) { 2347 // Double-check: don't interfere with AJAX links. 2348 if ($(this).is('a') && $(this).attr('href') && $(this).hasClass('use-ajax')) { 2349 return; 2350 } 2351 2352 e.preventDefault(); 2353 e.stopPropagation(); 2354 2355 var isActive = $dropdown.hasClass('open'); 2356 2357 // Close all other dropdowns. 2358 $('.rela-dropdown.open').not($dropdown).removeClass('open'); 2359 2360 // Toggle this dropdown. 2361 if (isActive) { 2362 $dropdown.removeClass('open'); 2363 } 2364 else { 2365 $dropdown.addClass('open'); 2366 } 2367 }); 2368 }); 2369 2370 // Handle nested submenu toggles. 2371 $(context).find('.rela-dropdown-item-has-submenu > .rela-dropdown-toggle').once('rela-dropdown-submenu', function () { 2372 var $toggle = $(this); 2373 2374 // Skip AJAX links - they should not be handled by dropdown toggle. 2375 // Only skip if it's actually a link element with href and use-ajax class. 2376 if ($toggle.is('a') && $toggle.attr('href') && $toggle.hasClass('use-ajax')) { 2377 return; 2378 } 2379 2380 var $item = $toggle.closest('.rela-dropdown-item-has-submenu'); 2381 2382 $toggle.on('click.rela-dropdown-submenu', function (e) { 2383 // Double-check: don't interfere with AJAX links. 2384 if ($(this).is('a') && $(this).attr('href') && $(this).hasClass('use-ajax')) { 2385 return; 2386 } 2387 2388 e.preventDefault(); 2389 e.stopPropagation(); 2390 2391 var isActive = $item.hasClass('open'); 2392 2393 // Close all other submenus in the same menu. 2394 $item.siblings('.rela-dropdown-item-has-submenu.open').removeClass('open'); 2395 2396 // Toggle this submenu. 2397 if (isActive) { 2398 $item.removeClass('open'); 2399 } 2400 else { 2401 $item.addClass('open'); 2402 } 2403 }); 2404 }); 2405 2406 // Close dropdowns when clicking outside. 2407 // Use a small delay to allow AJAX handlers to process first. 2408 $(document).on('click.rela-dropdown', function (e) { 2409 var $target = $(e.target); 2410 var $link = $target.closest('a'); 2411 var $clickedElement = $target.closest('[data-keep-dropdown-open]'); 2412 2413 // Don't close if clicking inside dropdown. 2414 if ($target.closest('.rela-dropdown').length) { 2415 // If clicking on an AJAX link, don't interfere - let AJAX handle it. 2416 // Verify it's actually a link with an href attribute. 2417 if ($link.length && $link.attr('href') && ($link.hasClass('use-ajax') || $link.closest('.use-ajax').length)) { 2418 return; 2419 } 2420 // Don't close if element has data-keep-dropdown-open attribute 2421 if ($clickedElement.length && $clickedElement.attr('data-keep-dropdown-open') !== 'false') { 2422 return; 2423 } 2424 // For other clicks inside dropdown, don't close. 2425 return; 2426 } 2427 2428 // Clicking outside - close all dropdowns with a small delay. 2429 // This allows AJAX handlers to process if they're attached to elements outside. 2430 setTimeout(function() { 2431 $('.rela-dropdown.open').removeClass('open'); 2432 $('.rela-dropdown-item-has-submenu.open').removeClass('open'); 2433 }, 10); 2434 }); 2435 2436 // Handle keyboard navigation (Escape key). 2437 $(document).on('keydown.rela-dropdown', function (e) { 2438 if (e.keyCode === 27) { // Escape key 2439 $('.rela-dropdown.open').removeClass('open'); 2440 $('.rela-dropdown-item-has-submenu.open').removeClass('open'); 2441 } 2442 }); 2443 } 2444 }; 2445 2446})(jQuery, Drupal); 2447;/*})'"*/;/*})'"*/ 2448/** 2449 * @file 2450 * 2451 * CTools flexible AJAX responder object. 2452 */ 2453 2454(function ($) { 2455 Drupal.CTools = Drupal.CTools || {}; 2456 Drupal.CTools.AJAX = Drupal.CTools.AJAX || {}; 2457 /** 2458 * Grab the response from the server and store it. 2459 * 2460 * @todo restore the warm cache functionality 2461 */ 2462 Drupal.CTools.AJAX.warmCache = function () { 2463 // Store this expression for a minor speed improvement. 2464 $this = $(this); 2465 var old_url = $this.attr('href'); 2466 // If we are currently fetching, or if we have fetched this already which is 2467 // ideal for things like pagers, where the previous page might already have 2468 // been seen in the cache. 2469 if ($this.hasClass('ctools-fetching') || Drupal.CTools.AJAX.commandCache[old_url]) { 2470 return false;
2471 } 2472 2473 // Grab all the links that match this url and add the fetching class. 2474 // This allows the caching system to grab each url once and only once 2475 // instead of grabbing the url once per <a>. 2476 var $objects = $('a[href="' + old_url + '"]'); 2477 $objects.addClass('ctools-fetching'); 2478 try { 2479 url = old_url.replace(/\/nojs(\/|$)/g, '/ajax$1'); 2480 $.ajax({ 2481 type: "POST", 2482 url: url, 2483 data: { 'js': 1, 'ctools_ajax': 1}, 2484 global: true, 2485 success: function (data) { 2486 Drupal.CTools.AJAX.commandCache[old_url] = data; 2487 $objects.addClass('ctools-cache-warmed').trigger('ctools-cache-warm', [data]); 2488 }, 2489 complete: function() { 2490 $objects.removeClass('ctools-fetching'); 2491 }, 2492 dataType: 'json' 2493 }); 2494 } 2495 catch (err) { 2496 $objects.removeClass('ctools-fetching'); 2497 return false; 2498 } 2499 2500 return false; 2501 }; 2502 2503 /** 2504 * Cachable click handler to fetch the commands out of the cache or from url. 2505 */ 2506 Drupal.CTools.AJAX.clickAJAXCacheLink = function () { 2507 $this = $(this); 2508 if ($this.hasClass('ctools-fetching')) { 2509 $this.bind('ctools-cache-warm', function (event, data) { 2510 Drupal.CTools.AJAX.respond(data); 2511 }); 2512 return false; 2513 } 2514 else { 2515 if ($this.hasClass('ctools-cache-warmed') && Drupal.CTools.AJAX.commandCache[$this.attr('href')]) { 2516 Drupal.CTools.AJAX.respond(Drupal.CTools.AJAX.commandCache[$this.attr('href')]); 2517 return false; 2518 } 2519 else { 2520 return Drupal.CTools.AJAX.clickAJAXLink.apply(this); 2521 } 2522 } 2523 }; 2524 2525 /** 2526 * Find a URL for an AJAX button. 2527 * 2528 * The URL for this gadget will be composed of the values of items by 2529 * taking the ID of this item and adding -url and looking for that 2530 * class. They need to be in the form in order since we will 2531 * concat them all together using '/'. 2532 */ 2533 Drupal.CTools.AJAX.findURL = function(item) { 2534 var url = ''; 2535 var url_class = '.' + $(item).attr('id') + '-url'; 2536 $(url_class).each( 2537 function() { 2538 var $this = $(this); 2539 if (url && $this.val()) { 2540 url += '/'; 2541 } 2542 url += $this.val(); 2543 }); 2544 return url; 2545 }; 2546 2547 // Hide these in a ready to ensure that Drupal.ajax is set up first. 2548 Drupal.behaviors.ctools_add_ajax_responder_commands = { 2549 attach: function () { 2550 Drupal.ajax.prototype.commands.attr = function (ajax, data, status) { 2551 $(data.selector).attr(data.name, data.value); 2552 }; 2553 2554 Drupal.ajax.prototype.commands.redirect = function (ajax, data, status) { 2555 if (data.delay > 0) { 2556 setTimeout(function () { 2557 if (data.new_window) { 2558 window.open(data.url, '_blank'); 2559 } 2560 else { 2561 location.href = data.url; 2562 } 2563 }, data.delay); 2564 } 2565 else { 2566 if (data.new_window) { 2567 window.open(data.url, '_blank'); 2568 } 2569 else { 2570 location.href = data.url; 2571 } 2572 } 2573 }; 2574 2575 Drupal.ajax.prototype.commands.reload = function (ajax, data, status) { 2576 location.reload(); 2577 }; 2578 2579 Drupal.ajax.prototype.commands.submit = function (ajax, data, status) { 2580 $(data.selector).submit(); 2581 } 2582 } 2583 }; 2584})(jQuery); 2585;/*})'"*/;/*})'"*/ 2586(function ($) { 2587 2588 Drupal.behaviors.captcha = { 2589 attach: function (context) { 2590 2591 // Turn off autocompletion for the CAPTCHA response field. 2592 // We do it here with JavaScript (instead of directly in the markup) 2593 // because this autocomplete attribute is not standard and 2594 // it would break (X)HTML compliance. 2595 $("#edit-captcha-response").attr("autocomplete", "off"); 2596 2597 } 2598 }; 2599 2600 Drupal.behaviors.captchaAdmin = { 2601 attach: function (context) { 2602 // Add onclick handler to checkbox for adding a CAPTCHA description 2603 // so that the textfields for the CAPTCHA description are hidden 2604 // when no description should be added. 2605 // @todo: div.form-item-captcha-description depends on theming, maybe
2606 // it's better to add our own wrapper with id (instead of a class). 2607 $("#edit-captcha-add-captcha-description").click(function() { 2608 if ($("#edit-captcha-add-captcha-description").is(":checked")) { 2609 // Show the CAPTCHA description textfield(s). 2610 $("div.form-item-captcha-description").show('slow'); 2611 } 2612 else { 2613 // Hide the CAPTCHA description textfield(s). 2614 $("div.form-item-captcha-description").hide('slow'); 2615 } 2616 }); 2617 // Hide the CAPTCHA description textfields if option is disabled on page load. 2618 if (!$("#edit-captcha-add-captcha-description").is(":checked")) { 2619 $("div.form-item-captcha-description").hide(); 2620 } 2621 } 2622 2623 }; 2624 2625})(jQuery); 2626;/*})'"*/;/*})'"*/
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.