!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){
return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)")
)&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[
],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",
e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]
).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{
noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),
u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},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:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand (o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),
nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;
return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,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":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})});
!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"undefined"!=typeof module&&module.exports?module.exports=e:e(jQuery,window,document)}(function(e){!function(t){var o="function"==typeof define&&define.amd,a="undefined"!=typeof module&&module.exports,n="https:"==document.location.protocol?"https:":"http:",i="cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.1.13/jquery.mousewheel.min.js";o||(a?require("jquery-mousewheel")(e):e.event.special.mousewheel||e("head").append(decodeURI("%3Cscript src="+n+"//"+i+"%3E%3C/script%3E"))),t()}(function(){var t,o="mCustomScrollbar",a="mCS",n=".mCustomScrollbar",i={setTop:0,setLeft:0,axis:"y",scrollbarPosition:"inside",scrollInertia:950,autoDraggerLength:!0,alwaysShowScrollbar:0,snapOffset:0,mouseWheel:{enable:!0,scrollAmount:"auto",axis:"y",deltaFactor:"auto",disableOver:["select","option","keygen","datalist","textarea"]},scrollButtons:{scrollType:"stepless",scrollAmount:"auto"},keyboard:{enable:!0,scrollType:"stepless",scrollAmount:"auto"},contentTouchScroll:25,documentTouchScroll:!0,advanced:{autoScrollOnFocus:"input,textarea,select,button,datalist,keygen,a[tabindex],area,object,[contenteditable='true']",updateOnContentResize:!0,updateOnImageLoad:"auto",autoUpdateTimeout:60},theme:"light",callbacks:{onTotalScrollOffset:0,onTotalScrollBackOffset:0,alwaysTriggerOffsets:!0}},r=0,l={},s=window.attachEvent&&!window.addEventListener?1:0,c=!1,d=["mCSB_dragger_onDrag","mCSB_scrollTools_onDrag","mCS_img_loaded","mCS_disabled","mCS_destroyed","mCS_no_scrollbar","mCS-autoHide","mCS-dir-rtl","mCS_no_scrollbar_y","mCS_no_scrollbar_x","mCS_y_hidden","mCS_x_hidden","mCSB_draggerContainer","mCSB_buttonUp","mCSB_buttonDown","mCSB_buttonLeft","mCSB_buttonRight"],u={init:function(t){var t=e.extend(!0,{},i,t),o=f.call(this);if(t.live){var s=t.liveSelector||this.selector||n,c=e(s);if("off"===t.live)return void m(s);l[s]=setTimeout(function(){c.mCustomScrollbar(t),"once"===t.live&&c.length&&m(s)},500)}else m(s);return t.setWidth=t.set_width?t.set_width:t.setWidth,t.setHeight=t.set_height?t.set_height:t.setHeight,t.axis=t.horizontalScroll?"x":p(t.axis),t.scrollInertia=t.scrollInertia>0&&t.scrollInertia<17?17:t.scrollInertia,"object"!=typeof t.mouseWheel&&1==t.mouseWheel&&(t.mouseWheel={enable:!0,scrollAmount:"auto",axis:"y",preventDefault:!1,deltaFactor:"auto",normalizeDelta:!1,invert:!1}),t.mouseWheel.scrollAmount=t.mouseWheelPixels?t.mouseWheelPixels:t.mouseWheel.scrollAmount,t.mouseWheel.normalizeDelta=t.advanced.normalizeMouseWheelDelta?t.advanced.normalizeMouseWheelDelta:t.mouseWheel.normalizeDelta,t.scrollButtons.scrollType=g(t.scrollButtons.scrollType),h(t),e(o).each(function(){var o=e(this);if(!o.data(a)){o.data(a,{idx:++r,opt:t,scrollRatio:{y:null,x:null},overflowed:null,contentReset:{y:null,x:null},bindEvents:!1,tweenRunning:!1,sequential:{},langDir:o.css("direction"),cbOffsets:null,trigger:null,poll:{size:{o:0,n:0},img:{o:0,n:0},change:{o:0,n:0}}});var n=o.data(a),i=n.opt,l=o.data("mcs-axis"),s=o.data("mcs-scrollbar-position"),c=o.data("mcs-theme");l&&(i.axis=l),s&&(i.scrollbarPosition=s),c&&(i.theme=c,h(i)),v.call(this),n&&i.callbacks.onCreate&&"function"==typeof i.callbacks.onCreate&&i.callbacks.onCreate.call(this),e("#mCSB_"+n.idx+"_container img:not(."+d[2]+")").addClass(d[2]),u.update.call(null,o)}})},update:function(t,o){var n=t||f.call(this);return e(n).each(function(){var t=e(this);if(t.data(a)){var n=t.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container"),l=e("#mCSB_"+n.idx),s=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];if(!r.length)return;n.tweenRunning&&Q(t),o&&n&&i.callbacks.onBeforeUpdate&&"function"==typeof i.callbacks.onBeforeUpdate&&i.callbacks.onBeforeUpdate.call(this),t.hasClass(d[3])&&t.removeClass(d[3]),t.hasClass(d[4])&&t.removeClass(d[4]),l.css("max-height","none"),l.height()!==t.height()&&l.css("max-height",t.height()),_.call(this),"y"===i.axis||i.advanced.autoExpandHorizontalScroll||r.css("width",x(r)),n.overflowed=y.call(this),M.call(this),i.autoDraggerLength&&S.call(this),b.call(this),T.call(this);var c=[Math.abs(r[0].offsetTop),Math.abs(r[0].offsetLeft)];"x"!==i.axis&&(n.overflowed[0]?s[0].height()>s[0].parent().height()?B.call(this):(G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}),n.contentReset.y=null):(B.call(this),"y"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[1]&&G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}))),"y"!==i.axis&&(n.overflowed[1]?s[1].width()>s[1].parent().width()?B.call(this):(G(t,c[1].toString(),{dir:"x",dur:0,overwrite:"none"}),n.contentReset.x=null):(B.call(this),"x"===i.axis?k.call(this):"yx"===i.axis&&n.overflowed[0]&&G(t,c[0].toString(),{dir:"y",dur:0,overwrite:"none"}))),o&&n&&(2===o&&i.callbacks.onImageLoad&&"function"==typeof i.callbacks.onImageLoad?i.callbacks.onImageLoad.call(this):3===o&&i.callbacks.onSelectorChange&&"function"==typeof i.callbacks.onSelectorChange?i.callbacks.onSelectorChange.call(this):i.callbacks.onUpdate&&"function"==typeof i.callbacks.onUpdate&&i.callbacks.onUpdate.call(this)),N.call(this)}})},scrollTo:function(t,o){if("undefined"!=typeof t&&null!=t){var n=f.call(this);return e(n).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l={trigger:"external",scrollInertia:r.scrollInertia,scrollEasing:"mcsEaseInOut",moveDragger:!1,timeout:60,callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},s=e.extend(!0,{},l,o),c=Y.call(this,t),d=s.scrollInertia>0&&s.scrollInertia<17?17:s.scrollInertia;c[0]=X.call(this,c[0],"y"),c[1]=X.call(this,c[1],"x"),s.moveDragger&&(c[0]*=i.scrollRatio.y,c[1]*=i.scrollRatio.x),s.dur=ne()?0:d,setTimeout(function(){null!==c[0]&&"undefined"!=typeof c[0]&&"x"!==r.axis&&i.overflowed[0]&&(s.dir="y",s.overwrite="all",G(n,c[0].toString(),s)),null!==c[1]&&"undefined"!=typeof c[1]&&"y"!==r.axis&&i.overflowed[1]&&(s.dir="x",s.overwrite="none",G(n,c[1].toString(),s))},s.timeout)}})}},stop:function(){var t=f.call(this);return e(t).each(function(){var t=e(this);t.data(a)&&Q(t)})},disable:function(t){var o=f.call(this);return e(o).each(function(){var o=e(this);if(o.data(a)){o.data(a);N.call(this,"remove"),k.call(this),t&&B.call(this),M.call(this,!0),o.addClass(d[3])}})},destroy:function(){var t=f.call(this);return e(t).each(function(){var n=e(this);if(n.data(a)){var i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx),s=e("#mCSB_"+i.idx+"_container"),c=e(".mCSB_"+i.idx+"_scrollbar");r.live&&m(r.liveSelector||e(t).selector),N.call(this,"remove"),k.call(this),B.call(this),n.removeData(a),$(this,"mcs"),c.remove(),s.find("img."+d[2]).removeClass(d[2]),l.replaceWith(s.contents()),n.removeClass(o+" _"+a+"_"+i.idx+" "+d[6]+" "+d[7]+" "+d[5]+" "+d[3]).addClass(d[4])}})}},f=function(){return"object"!=typeof e(this)||e(this).length<1?n:this},h=function(t){var o=["rounded","rounded-dark","rounded-dots","rounded-dots-dark"],a=["rounded-dots","rounded-dots-dark","3d","3d-dark","3d-thick","3d-thick-dark","inset","inset-dark","inset-2","inset-2-dark","inset-3","inset-3-dark"],n=["minimal","minimal-dark"],i=["minimal","minimal-dark"],r=["minimal","minimal-dark"];t.autoDraggerLength=e.inArray(t.theme,o)>-1?!1:t.autoDraggerLength,t.autoExpandScrollbar=e.inArray(t.theme,a)>-1?!1:t.autoExpandScrollbar,t.scrollButtons.enable=e.inArray(t.theme,n)>-1?!1:t.scrollButtons.enable,t.autoHideScrollbar=e.inArray(t.theme,i)>-1?!0:t.autoHideScrollbar,t.scrollbarPosition=e.inArray(t.theme,r)>-1?"outside":t.scrollbarPosition},m=function(e){l[e]&&(clearTimeout(l[e]),$(l,e))},p=function(e){return"yx"===e||"xy"===e||"auto"===e?"yx":"x"===e||"horizontal"===e?"x":"y"},g=function(e){return"stepped"===e||"pixels"===e||"step"===e||"click"===e?"stepped":"stepless"},v=function(){var t=e(this),n=t.data(a),i=n.opt,r=i.autoExpandScrollbar?" "+d[1]+"_expand":"",l=["<div id='mCSB_"+n.idx+"_scrollbar_vertical' class='mCSB_scrollTools mCSB_"+n.idx+"_scrollbar mCS-"+i.theme+" mCSB_scrollTools_vertical"+r+"'><div class='"+d[12]+"'><div id='mCSB_"+n.idx+"_dragger_vertical' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>","<div id='mCSB_"+n.idx+"_scrollbar_horizontal' class='mCSB_scrollTools mCSB_"+n.idx+"_scrollbar mCS-"+i.theme+" mCSB_scrollTools_horizontal"+r+"'><div class='"+d[12]+"'><div id='mCSB_"+n.idx+"_dragger_horizontal' class='mCSB_dragger' style='position:absolute;'><div class='mCSB_dragger_bar' /></div><div class='mCSB_draggerRail' /></div></div>"],s="yx"===i.axis?"mCSB_vertical_horizontal":"x"===i.axis?"mCSB_horizontal":"mCSB_vertical",c="yx"===i.axis?l[0]+l[1]:"x"===i.axis?l[1]:l[0],u="yx"===i.axis?"<div id='mCSB_"+n.idx+"_container_wrapper' class='mCSB_container_wrapper' />":"",f=i.autoHideScrollbar?" "+d[6]:"",h="x"!==i.axis&&"rtl"===n.langDir?" "+d[7]:"";i.setWidth&&t.css("width",i.setWidth),i.setHeight&&t.css("height",i.setHeight),i.setLeft="y"!==i.axis&&"rtl"===n.langDir?"989999px":i.setLeft,t.addClass(o+" _"+a+"_"+n.idx+f+h).wrapInner("<div id='mCSB_"+n.idx+"' class='mCustomScrollBox mCS-"+i.theme+" "+s+"'><div id='mCSB_"+n.idx+"_container' class='mCSB_container' style='position:relative; top:"+i.setTop+"; left:"+i.setLeft+";' dir='"+n.langDir+"' /></div>");var m=e("#mCSB_"+n.idx),p=e("#mCSB_"+n.idx+"_container");"y"===i.axis||i.advanced.autoExpandHorizontalScroll||p.css("width",x(p)),"outside"===i.scrollbarPosition?("static"===t.css("position")&&t.css("position","relative"),t.css("overflow","visible"),m.addClass("mCSB_outside").after(c)):(m.addClass("mCSB_inside").append(c),p.wrap(u)),w.call(this);var g=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")];g[0].css("min-height",g[0].height()),g[1].css("min-width",g[1].width())},x=function(t){var o=[t[0].scrollWidth,Math.max.apply(Math,t.children().map(function(){return e(this).outerWidth(!0)}).get())],a=t.parent().width();return o[0]>a?o[0]:o[1]>a?o[1]:"100%"},_=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx+"_container");if(n.advanced.autoExpandHorizontalScroll&&"y"!==n.axis){i.css({width:"auto","min-width":0,"overflow-x":"scroll"});var r=Math.ceil(i[0].scrollWidth);3===n.advanced.autoExpandHorizontalScroll||2!==n.advanced.autoExpandHorizontalScroll&&r>i.parent().width()?i.css({width:r,"min-width":"100%","overflow-x":"inherit"}):i.css({"overflow-x":"inherit",position:"absolute"}).wrap("<div class='mCSB_h_wrapper' style='position:relative; left:0; width:999999px;' />").css({width:Math.ceil(i[0].getBoundingClientRect().right+.4)-Math.floor(i[0].getBoundingClientRect().left),"min-width":"100%",position:"relative"}).unwrap()}},w=function(){var t=e(this),o=t.data(a),n=o.opt,i=e(".mCSB_"+o.idx+"_scrollbar:first"),r=oe(n.scrollButtons.tabindex)?"tabindex='"+n.scrollButtons.tabindex+"'":"",l=["<a href='#' class='"+d[13]+"' "+r+" />","<a href='#' class='"+d[14]+"' "+r+" />","<a href='#' class='"+d[15]+"' "+r+" />","<a href='#' class='"+d[16]+"' "+r+" />"],s=["x"===n.axis?l[2]:l[0],"x"===n.axis?l[3]:l[1],l[2],l[3]];n.scrollButtons.enable&&i.prepend(s[0]).append(s[1]).next(".mCSB_scrollTools").prepend(s[2]).append(s[3])},S=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[n.height()/i.outerHeight(!1),n.width()/i.outerWidth(!1)],c=[parseInt(r[0].css("min-height")),Math.round(l[0]*r[0].parent().height()),parseInt(r[1].css("min-width")),Math.round(l[1]*r[1].parent().width())],d=s&&c[1]<c[0]?c[0]:c[1],u=s&&c[3]<c[2]?c[2]:c[3];r[0].css({height:d,"max-height":r[0].parent().height()-10}).find(".mCSB_dragger_bar").css({"line-height":c[0]+"px"}),r[1].css({width:u,"max-width":r[1].parent().width()-10})},b=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")],l=[i.outerHeight(!1)-n.height(),i.outerWidth(!1)-n.width()],s=[l[0]/(r[0].parent().height()-r[0].height()),l[1]/(r[1].parent().width()-r[1].width())];o.scrollRatio={y:s[0],x:s[1]}},C=function(e,t,o){var a=o?d[0]+"_expanded":"",n=e.closest(".mCSB_scrollTools");"active"===t?(e.toggleClass(d[0]+" "+a),n.toggleClass(d[1]),e[0]._draggable=e[0]._draggable?0:1):e[0]._draggable||("hide"===t?(e.removeClass(d[0]),n.removeClass(d[1])):(e.addClass(d[0]),n.addClass(d[1])))},y=function(){var t=e(this),o=t.data(a),n=e("#mCSB_"+o.idx),i=e("#mCSB_"+o.idx+"_container"),r=null==o.overflowed?i.height():i.outerHeight(!1),l=null==o.overflowed?i.width():i.outerWidth(!1),s=i[0].scrollHeight,c=i[0].scrollWidth;return s>r&&(r=s),c>l&&(l=c),[r>n.height(),l>n.width()]},B=function(){var t=e(this),o=t.data(a),n=o.opt,i=e("#mCSB_"+o.idx),r=e("#mCSB_"+o.idx+"_container"),l=[e("#mCSB_"+o.idx+"_dragger_vertical"),e("#mCSB_"+o.idx+"_dragger_horizontal")];if(Q(t),("x"!==n.axis&&!o.overflowed[0]||"y"===n.axis&&o.overflowed[0])&&(l[0].add(r).css("top",0),G(t,"_resetY")),"y"!==n.axis&&!o.overflowed[1]||"x"===n.axis&&o.overflowed[1]){var s=dx=0;"rtl"===o.langDir&&(s=i.width()-r.outerWidth(!1),dx=Math.abs(s/o.scrollRatio.x)),r.css("left",s),l[1].css("left",dx),G(t,"_resetX")}},T=function(){function t(){r=setTimeout(function(){e.event.special.mousewheel?(clearTimeout(r),W.call(o[0])):t()},100)}var o=e(this),n=o.data(a),i=n.opt;if(!n.bindEvents){if(I.call(this),i.contentTouchScroll&&D.call(this),E.call(this),i.mouseWheel.enable){var r;t()}P.call(this),U.call(this),i.advanced.autoScrollOnFocus&&H.call(this),i.scrollButtons.enable&&F.call(this),i.keyboard.enable&&q.call(this),n.bindEvents=!0}},k=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=".mCSB_"+o.idx+"_scrollbar",l=e("#mCSB_"+o.idx+",#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,"+r+" ."+d[12]+",#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal,"+r+">a"),s=e("#mCSB_"+o.idx+"_container");n.advanced.releaseDraggableSelectors&&l.add(e(n.advanced.releaseDraggableSelectors)),n.advanced.extraDraggableSelectors&&l.add(e(n.advanced.extraDraggableSelectors)),o.bindEvents&&(e(document).add(e(!A()||top.document)).unbind("."+i),l.each(function(){e(this).unbind("."+i)}),clearTimeout(t[0]._focusTimeout),$(t[0],"_focusTimeout"),clearTimeout(o.sequential.step),$(o.sequential,"step"),clearTimeout(s[0].onCompleteTimeout),$(s[0],"onCompleteTimeout"),o.bindEvents=!1)},M=function(t){var o=e(this),n=o.data(a),i=n.opt,r=e("#mCSB_"+n.idx+"_container_wrapper"),l=r.length?r:e("#mCSB_"+n.idx+"_container"),s=[e("#mCSB_"+n.idx+"_scrollbar_vertical"),e("#mCSB_"+n.idx+"_scrollbar_horizontal")],c=[s[0].find(".mCSB_dragger"),s[1].find(".mCSB_dragger")];"x"!==i.axis&&(n.overflowed[0]&&!t?(s[0].add(c[0]).add(s[0].children("a")).css("display","block"),l.removeClass(d[8]+" "+d[10])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[0].css("display","none"),l.removeClass(d[10])):(s[0].css("display","none"),l.addClass(d[10])),l.addClass(d[8]))),"y"!==i.axis&&(n.overflowed[1]&&!t?(s[1].add(c[1]).add(s[1].children("a")).css("display","block"),l.removeClass(d[9]+" "+d[11])):(i.alwaysShowScrollbar?(2!==i.alwaysShowScrollbar&&c[1].css("display","none"),l.removeClass(d[11])):(s[1].css("display","none"),l.addClass(d[11])),l.addClass(d[9]))),n.overflowed[0]||n.overflowed[1]?o.removeClass(d[5]):o.addClass(d[5])},O=function(t){var o=t.type,a=t.target.ownerDocument!==document&&null!==frameElement?[e(frameElement).offset().top,e(frameElement).offset().left]:null,n=A()&&t.target.ownerDocument!==top.document&&null!==frameElement?[e(t.view.frameElement).offset().top,e(t.view.frameElement).offset().left]:[0,0];switch(o){case"pointerdown":case"MSPointerDown":case"pointermove":case"MSPointerMove":case"pointerup":case"MSPointerUp":return a?[t.originalEvent.pageY-a[0]+n[0],t.originalEvent.pageX-a[1]+n[1],!1]:[t.originalEvent.pageY,t.originalEvent.pageX,!1];case"touchstart":case"touchmove":case"touchend":var i=t.originalEvent.touches[0]||t.originalEvent.changedTouches[0],r=t.originalEvent.touches.length||t.originalEvent.changedTouches.length;return t.target.ownerDocument!==document?[i.screenY,i.screenX,r>1]:[i.pageY,i.pageX,r>1];default:return a?[t.pageY-a[0]+n[0],t.pageX-a[1]+n[1],!1]:[t.pageY,t.pageX,!1]}},I=function(){function t(e,t,a,n){if(h[0].idleTimer=d.scrollInertia<233?250:0,o.attr("id")===f[1])var i="x",s=(o[0].offsetLeft-t+n)*l.scrollRatio.x;else var i="y",s=(o[0].offsetTop-e+a)*l.scrollRatio.y;G(r,s.toString(),{dir:i,drag:!0})}var o,n,i,r=e(this),l=r.data(a),d=l.opt,u=a+"_"+l.idx,f=["mCSB_"+l.idx+"_dragger_vertical","mCSB_"+l.idx+"_dragger_horizontal"],h=e("#mCSB_"+l.idx+"_container"),m=e("#"+f[0]+",#"+f[1]),p=d.advanced.releaseDraggableSelectors?m.add(e(d.advanced.releaseDraggableSelectors)):m,g=d.advanced.extraDraggableSelectors?e(!A()||top.document).add(e(d.advanced.extraDraggableSelectors)):e(!A()||top.document);m.bind("contextmenu."+u,function(e){e.preventDefault()}).bind("mousedown."+u+" touchstart."+u+" pointerdown."+u+" MSPointerDown."+u,function(t){if(t.stopImmediatePropagation(),t.preventDefault(),ee(t)){c=!0,s&&(document.onselectstart=function(){return!1}),L.call(h,!1),Q(r),o=e(this);var a=o.offset(),l=O(t)[0]-a.top,u=O(t)[1]-a.left,f=o.height()+a.top,m=o.width()+a.left;f>l&&l>0&&m>u&&u>0&&(n=l,i=u),C(o,"active",d.autoExpandScrollbar)}}).bind("touchmove."+u,function(e){e.stopImmediatePropagation(),e.preventDefault();var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;t(n,i,r,l)}),e(document).add(g).bind("mousemove."+u+" pointermove."+u+" MSPointerMove."+u,function(e){if(o){var a=o.offset(),r=O(e)[0]-a.top,l=O(e)[1]-a.left;if(n===r&&i===l)return;t(n,i,r,l)}}).add(p).bind("mouseup."+u+" touchend."+u+" pointerup."+u+" MSPointerUp."+u,function(){o&&(C(o,"active",d.autoExpandScrollbar),o=null),c=!1,s&&(document.onselectstart=null),L.call(h,!0)})},D=function(){function o(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,b=0,C=0,d=1,y.removeClass("mCS_touch_action");var o=I.offset();u=O(e)[0]-o.top,f=O(e)[1]-o.left,z=[O(e)[0],O(e)[1]]}function n(e){if(te(e)&&!c&&!O(e)[2]&&(T.documentTouchScroll||e.preventDefault(),e.stopImmediatePropagation(),(!C||b)&&d)){g=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left,n="mcsLinearOut";if(E.push(o),W.push(a),z[2]=Math.abs(O(e)[0]-z[0]),z[3]=Math.abs(O(e)[1]-z[1]),B.overflowed[0])var i=D[0].parent().height()-D[0].height(),r=u-o>0&&o-u>-(i*B.scrollRatio.y)&&(2*z[3]<z[2]||"yx"===T.axis);if(B.overflowed[1])var l=D[1].parent().width()-D[1].width(),h=f-a>0&&a-f>-(l*B.scrollRatio.x)&&(2*z[2]<z[3]||"yx"===T.axis);r||h?(U||e.preventDefault(),b=1):(C=1,y.addClass("mCS_touch_action")),U&&e.preventDefault(),w="yx"===T.axis?[u-o,f-a]:"x"===T.axis?[null,f-a]:[u-o,null],I[0].idleTimer=250,B.overflowed[0]&&s(w[0],R,n,"y","all",!0),B.overflowed[1]&&s(w[1],R,n,"x",L,!0)}}function i(e){if(!te(e)||c||O(e)[2])return void(t=0);t=1,e.stopImmediatePropagation(),Q(y),p=K();var o=M.offset();h=O(e)[0]-o.top,m=O(e)[1]-o.left,E=[],W=[]}function r(e){if(te(e)&&!c&&!O(e)[2]){d=0,e.stopImmediatePropagation(),b=0,C=0,v=K();var t=M.offset(),o=O(e)[0]-t.top,a=O(e)[1]-t.left;if(!(v-g>30)){_=1e3/(v-p);var n="mcsEaseOut",i=2.5>_,r=i?[E[E.length-2],W[W.length-2]]:[0,0];x=i?[o-r[0],a-r[1]]:[o-h,a-m];var u=[Math.abs(x[0]),Math.abs(x[1])];_=i?[Math.abs(x[0]/4),Math.abs(x[1]/4)]:[_,_];var f=[Math.abs(I[0].offsetTop)-x[0]*l(u[0]/_[0],_[0]),Math.abs(I[0].offsetLeft)-x[1]*l(u[1]/_[1],_[1])];w="yx"===T.axis?[f[0],f[1]]:"x"===T.axis?[null,f[1]]:[f[0],null],S=[4*u[0]+T.scrollInertia,4*u[1]+T.scrollInertia];var y=parseInt(T.contentTouchScroll)||0;w[0]=u[0]>y?w[0]:0,w[1]=u[1]>y?w[1]:0,B.overflowed[0]&&s(w[0],S[0],n,"y",L,!1),B.overflowed[1]&&s(w[1],S[1],n,"x",L,!1)}}}function l(e,t){var o=[1.5*t,2*t,t/1.5,t/2];return e>90?t>4?o[0]:o[3]:e>60?t>3?o[3]:o[2]:e>30?t>8?o[1]:t>6?o[0]:t>4?t:o[2]:t>8?t:o[3]}function s(e,t,o,a,n,i){e&&G(y,e.toString(),{dur:t,scrollEasing:o,dir:a,overwrite:n,drag:i})}var d,u,f,h,m,p,g,v,x,_,w,S,b,C,y=e(this),B=y.data(a),T=B.opt,k=a+"_"+B.idx,M=e("#mCSB_"+B.idx),I=e("#mCSB_"+B.idx+"_container"),D=[e("#mCSB_"+B.idx+"_dragger_vertical"),e("#mCSB_"+B.idx+"_dragger_horizontal")],E=[],W=[],R=0,L="yx"===T.axis?"none":"all",z=[],P=I.find("iframe"),H=["touchstart."+k+" pointerdown."+k+" MSPointerDown."+k,"touchmove."+k+" pointermove."+k+" MSPointerMove."+k,"touchend."+k+" pointerup."+k+" MSPointerUp."+k],U=void 0!==document.body.style.touchAction&&""!==document.body.style.touchAction;I.bind(H[0],function(e){o(e)}).bind(H[1],function(e){n(e)}),M.bind(H[0],function(e){i(e)}).bind(H[2],function(e){r(e)}),P.length&&P.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(H[0],function(e){o(e),i(e)}).bind(H[1],function(e){n(e)}).bind(H[2],function(e){r(e)})})})},E=function(){function o(){return window.getSelection?window.getSelection().toString():document.selection&&"Control"!=document.selection.type?document.selection.createRange().text:0}function n(e,t,o){d.type=o&&i?"stepped":"stepless",d.scrollAmount=10,j(r,e,t,"mcsLinearOut",o?60:null)}var i,r=e(this),l=r.data(a),s=l.opt,d=l.sequential,u=a+"_"+l.idx,f=e("#mCSB_"+l.idx+"_container"),h=f.parent();f.bind("mousedown."+u,function(){t||i||(i=1,c=!0)}).add(document).bind("mousemove."+u,function(e){if(!t&&i&&o()){var a=f.offset(),r=O(e)[0]-a.top+f[0].offsetTop,c=O(e)[1]-a.left+f[0].offsetLeft;r>0&&r<h.height()&&c>0&&c<h.width()?d.step&&n("off",null,"stepped"):("x"!==s.axis&&l.overflowed[0]&&(0>r?n("on",38):r>h.height()&&n("on",40)),"y"!==s.axis&&l.overflowed[1]&&(0>c?n("on",37):c>h.width()&&n("on",39)))}}).bind("mouseup."+u+" dragend."+u,function(){t||(i&&(i=0,n("off",null)),c=!1)})},W=function(){function t(t,a){if(Q(o),!z(o,t.target)){var r="auto"!==i.mouseWheel.deltaFactor?parseInt(i.mouseWheel.deltaFactor):s&&t.deltaFactor<100?100:t.deltaFactor||100,d=i.scrollInertia;if("x"===i.axis||"x"===i.mouseWheel.axis)var u="x",f=[Math.round(r*n.scrollRatio.x),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.width()?.9*l.width():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetLeft),p=c[1][0].offsetLeft,g=c[1].parent().width()-c[1].width(),v="y"===i.mouseWheel.axis?t.deltaY||a:t.deltaX;else var u="y",f=[Math.round(r*n.scrollRatio.y),parseInt(i.mouseWheel.scrollAmount)],h="auto"!==i.mouseWheel.scrollAmount?f[1]:f[0]>=l.height()?.9*l.height():f[0],m=Math.abs(e("#mCSB_"+n.idx+"_container")[0].offsetTop),p=c[0][0].offsetTop,g=c[0].parent().height()-c[0].height(),v=t.deltaY||a;"y"===u&&!n.overflowed[0]||"x"===u&&!n.overflowed[1]||((i.mouseWheel.invert||t.webkitDirectionInvertedFromDevice)&&(v=-v),i.mouseWheel.normalizeDelta&&(v=0>v?-1:1),(v>0&&0!==p||0>v&&p!==g||i.mouseWheel.preventDefault)&&(t.stopImmediatePropagation(),t.preventDefault()),t.deltaFactor<5&&!i.mouseWheel.normalizeDelta&&(h=t.deltaFactor,d=17),G(o,(m-v*h).toString(),{dir:u,dur:d}))}}if(e(this).data(a)){var o=e(this),n=o.data(a),i=n.opt,r=a+"_"+n.idx,l=e("#mCSB_"+n.idx),c=[e("#mCSB_"+n.idx+"_dragger_vertical"),e("#mCSB_"+n.idx+"_dragger_horizontal")],d=e("#mCSB_"+n.idx+"_container").find("iframe");d.length&&d.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind("mousewheel."+r,function(e,o){t(e,o)})})}),l.bind("mousewheel."+r,function(e,o){t(e,o)})}},R=new Object,A=function(t){var o=!1,a=!1,n=null;if(void 0===t?a="#empty":void 0!==e(t).attr("id")&&(a=e(t).attr("id")),a!==!1&&void 0!==R[a])return R[a];if(t){try{var i=t.contentDocument||t.contentWindow.document;n=i.body.innerHTML}catch(r){}o=null!==n}else{try{var i=top.document;n=i.body.innerHTML}catch(r){}o=null!==n}return a!==!1&&(R[a]=o),o},L=function(e){var t=this.find("iframe");if(t.length){var o=e?"auto":"none";t.css("pointer-events",o)}},z=function(t,o){var n=o.nodeName.toLowerCase(),i=t.data(a).opt.mouseWheel.disableOver,r=["select","textarea"];return e.inArray(n,i)>-1&&!(e.inArray(n,r)>-1&&!e(o).is(":focus"))},P=function(){var t,o=e(this),n=o.data(a),i=a+"_"+n.idx,r=e("#mCSB_"+n.idx+"_container"),l=r.parent(),s=e(".mCSB_"+n.idx+"_scrollbar ."+d[12]);s.bind("mousedown."+i+" touchstart."+i+" pointerdown."+i+" MSPointerDown."+i,function(o){c=!0,e(o.target).hasClass("mCSB_dragger")||(t=1)}).bind("touchend."+i+" pointerup."+i+" MSPointerUp."+i,function(){c=!1}).bind("click."+i,function(a){if(t&&(t=0,e(a.target).hasClass(d[12])||e(a.target).hasClass("mCSB_draggerRail"))){Q(o);var i=e(this),s=i.find(".mCSB_dragger");if(i.parent(".mCSB_scrollTools_horizontal").length>0){if(!n.overflowed[1])return;var c="x",u=a.pageX>s.offset().left?-1:1,f=Math.abs(r[0].offsetLeft)-u*(.9*l.width())}else{if(!n.overflowed[0])return;var c="y",u=a.pageY>s.offset().top?-1:1,f=Math.abs(r[0].offsetTop)-u*(.9*l.height())}G(o,f.toString(),{dir:c,scrollEasing:"mcsEaseInOut"})}})},H=function(){var t=e(this),o=t.data(a),n=o.opt,i=a+"_"+o.idx,r=e("#mCSB_"+o.idx+"_container"),l=r.parent();r.bind("focusin."+i,function(){var o=e(document.activeElement),a=r.find(".mCustomScrollBox").length,i=0;o.is(n.advanced.autoScrollOnFocus)&&(Q(t),clearTimeout(t[0]._focusTimeout),t[0]._focusTimer=a?(i+17)*a:0,t[0]._focusTimeout=setTimeout(function(){var e=[ae(o)[0],ae(o)[1]],a=[r[0].offsetTop,r[0].offsetLeft],s=[a[0]+e[0]>=0&&a[0]+e[0]<l.height()-o.outerHeight(!1),a[1]+e[1]>=0&&a[0]+e[1]<l.width()-o.outerWidth(!1)],c="yx"!==n.axis||s[0]||s[1]?"all":"none";"x"===n.axis||s[0]||G(t,e[0].toString(),{dir:"y",scrollEasing:"mcsEaseInOut",overwrite:c,dur:i}),"y"===n.axis||s[1]||G(t,e[1].toString(),{dir:"x",scrollEasing:"mcsEaseInOut",overwrite:c,dur:i})},t[0]._focusTimer))})},U=function(){var t=e(this),o=t.data(a),n=a+"_"+o.idx,i=e("#mCSB_"+o.idx+"_container").parent();i.bind("scroll."+n,function(){0===i.scrollTop()&&0===i.scrollLeft()||e(".mCSB_"+o.idx+"_scrollbar").css("visibility","hidden")})},F=function(){var t=e(this),o=t.data(a),n=o.opt,i=o.sequential,r=a+"_"+o.idx,l=".mCSB_"+o.idx+"_scrollbar",s=e(l+">a");s.bind("contextmenu."+r,function(e){e.preventDefault()}).bind("mousedown."+r+" touchstart."+r+" pointerdown."+r+" MSPointerDown."+r+" mouseup."+r+" touchend."+r+" pointerup."+r+" MSPointerUp."+r+" mouseout."+r+" pointerout."+r+" MSPointerOut."+r+" click."+r,function(a){function r(e,o){i.scrollAmount=n.scrollButtons.scrollAmount,j(t,e,o)}if(a.preventDefault(),ee(a)){var l=e(this).attr("class");switch(i.type=n.scrollButtons.scrollType,a.type){case"mousedown":case"touchstart":case"pointerdown":case"MSPointerDown":if("stepped"===i.type)return;c=!0,o.tweenRunning=!1,r("on",l);break;case"mouseup":case"touchend":case"pointerup":case"MSPointerUp":case"mouseout":case"pointerout":case"MSPointerOut":if("stepped"===i.type)return;c=!1,i.dir&&r("off",l);break;case"click":if("stepped"!==i.type||o.tweenRunning)return;r("on",l)}}})},q=function(){function t(t){function a(e,t){r.type=i.keyboard.scrollType,r.scrollAmount=i.keyboard.scrollAmount,"stepped"===r.type&&n.tweenRunning||j(o,e,t)}switch(t.type){case"blur":n.tweenRunning&&r.dir&&a("off",null);break;case"keydown":case"keyup":var l=t.keyCode?t.keyCode:t.which,s="on";if("x"!==i.axis&&(38===l||40===l)||"y"!==i.axis&&(37===l||39===l)){if((38===l||40===l)&&!n.overflowed[0]||(37===l||39===l)&&!n.overflowed[1])return;"keyup"===t.type&&(s="off"),e(document.activeElement).is(u)||(t.preventDefault(),t.stopImmediatePropagation(),a(s,l))}else if(33===l||34===l){if((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type){Q(o);var f=34===l?-1:1;if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=Math.abs(c[0].offsetLeft)-f*(.9*d.width());else var h="y",m=Math.abs(c[0].offsetTop)-f*(.9*d.height());G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}else if((35===l||36===l)&&!e(document.activeElement).is(u)&&((n.overflowed[0]||n.overflowed[1])&&(t.preventDefault(),t.stopImmediatePropagation()),"keyup"===t.type)){if("x"===i.axis||"yx"===i.axis&&n.overflowed[1]&&!n.overflowed[0])var h="x",m=35===l?Math.abs(d.width()-c.outerWidth(!1)):0;else var h="y",m=35===l?Math.abs(d.height()-c.outerHeight(!1)):0;G(o,m.toString(),{dir:h,scrollEasing:"mcsEaseInOut"})}}}var o=e(this),n=o.data(a),i=n.opt,r=n.sequential,l=a+"_"+n.idx,s=e("#mCSB_"+n.idx),c=e("#mCSB_"+n.idx+"_container"),d=c.parent(),u="input,textarea,select,datalist,keygen,[contenteditable='true']",f=c.find("iframe"),h=["blur."+l+" keydown."+l+" keyup."+l];f.length&&f.each(function(){e(this).bind("load",function(){A(this)&&e(this.contentDocument||this.contentWindow.document).bind(h[0],function(e){t(e)})})}),s.attr("tabindex","0").bind(h[0],function(e){t(e)})},j=function(t,o,n,i,r){function l(e){u.snapAmount&&(f.scrollAmount=u.snapAmount instanceof Array?"x"===f.dir[0]?u.snapAmount[1]:u.snapAmount[0]:u.snapAmount);var o="stepped"!==f.type,a=r?r:e?o?p/1.5:g:1e3/60,n=e?o?7.5:40:2.5,s=[Math.abs(h[0].offsetTop),Math.abs(h[0].offsetLeft)],d=[c.scrollRatio.y>10?10:c.scrollRatio.y,c.scrollRatio.x>10?10:c.scrollRatio.x],m="x"===f.dir[0]?s[1]+f.dir[1]*(d[1]*n):s[0]+f.dir[1]*(d[0]*n),v="x"===f.dir[0]?s[1]+f.dir[1]*parseInt(f.scrollAmount):s[0]+f.dir[1]*parseInt(f.scrollAmount),x="auto"!==f.scrollAmount?v:m,_=i?i:e?o?"mcsLinearOut":"mcsEaseInOut":"mcsLinear",w=!!e;return e&&17>a&&(x="x"===f.dir[0]?s[1]:s[0]),G(t,x.toString(),{dir:f.dir[0],scrollEasing:_,dur:a,onComplete:w}),e?void(f.dir=!1):(clearTimeout(f.step),void(f.step=setTimeout(function(){l()},a)))}function s(){clearTimeout(f.step),$(f,"step"),Q(t)}var c=t.data(a),u=c.opt,f=c.sequential,h=e("#mCSB_"+c.idx+"_container"),m="stepped"===f.type,p=u.scrollInertia<26?26:u.scrollInertia,g=u.scrollInertia<1?17:u.scrollInertia;switch(o){case"on":if(f.dir=[n===d[16]||n===d[15]||39===n||37===n?"x":"y",n===d[13]||n===d[15]||38===n||37===n?-1:1],Q(t),oe(n)&&"stepped"===f.type)return;l(m);break;case"off":s(),(m||c.tweenRunning&&f.dir)&&l(!0)}},Y=function(t){var o=e(this).data(a).opt,n=[];return"function"==typeof t&&(t=t()),t instanceof Array?n=t.length>1?[t[0],t[1]]:"x"===o.axis?[null,t[0]]:[t[0],null]:(n[0]=t.y?t.y:t.x||"x"===o.axis?null:t,n[1]=t.x?t.x:t.y||"y"===o.axis?null:t),"function"==typeof n[0]&&(n[0]=n[0]()),"function"==typeof n[1]&&(n[1]=n[1]()),n},X=function(t,o){if(null!=t&&"undefined"!=typeof t){var n=e(this),i=n.data(a),r=i.opt,l=e("#mCSB_"+i.idx+"_container"),s=l.parent(),c=typeof t;o||(o="x"===r.axis?"x":"y");var d="x"===o?l.outerWidth(!1)-s.width():l.outerHeight(!1)-s.height(),f="x"===o?l[0].offsetLeft:l[0].offsetTop,h="x"===o?"left":"top";switch(c){case"function":return t();case"object":var m=t.jquery?t:e(t);if(!m.length)return;return"x"===o?ae(m)[1]:ae(m)[0];case"string":case"number":if(oe(t))return Math.abs(t);if(-1!==t.indexOf("%"))return Math.abs(d*parseInt(t)/100);if(-1!==t.indexOf("-="))return Math.abs(f-parseInt(t.split("-=")[1]));if(-1!==t.indexOf("+=")){var p=f+parseInt(t.split("+=")[1]);return p>=0?0:Math.abs(p)}if(-1!==t.indexOf("px")&&oe(t.split("px")[0]))return Math.abs(t.split("px")[0]);if("top"===t||"left"===t)return 0;if("bottom"===t)return Math.abs(s.height()-l.outerHeight(!1));if("right"===t)return Math.abs(s.width()-l.outerWidth(!1));if("first"===t||"last"===t){var m=l.find(":"+t);return"x"===o?ae(m)[1]:ae(m)[0]}return e(t).length?"x"===o?ae(e(t))[1]:ae(e(t))[0]:(l.css(h,t),void u.update.call(null,n[0]))}}},N=function(t){function o(){return clearTimeout(f[0].autoUpdate),0===l.parents("html").length?void(l=null):void(f[0].autoUpdate=setTimeout(function(){return c.advanced.updateOnSelectorChange&&(s.poll.change.n=i(),s.poll.change.n!==s.poll.change.o)?(s.poll.change.o=s.poll.change.n,void r(3)):c.advanced.updateOnContentResize&&(s.poll.size.n=l[0].scrollHeight+l[0].scrollWidth+f[0].offsetHeight+l[0].offsetHeight+l[0].offsetWidth,s.poll.size.n!==s.poll.size.o)?(s.poll.size.o=s.poll.size.n,void r(1)):!c.advanced.updateOnImageLoad||"auto"===c.advanced.updateOnImageLoad&&"y"===c.axis||(s.poll.img.n=f.find("img").length,s.poll.img.n===s.poll.img.o)?void((c.advanced.updateOnSelectorChange||c.advanced.updateOnContentResize||c.advanced.updateOnImageLoad)&&o()):(s.poll.img.o=s.poll.img.n,void f.find("img").each(function(){n(this)}))},c.advanced.autoUpdateTimeout))}function n(t){function o(e,t){return function(){
return t.apply(e,arguments)}}function a(){this.onload=null,e(t).addClass(d[2]),r(2)}if(e(t).hasClass(d[2]))return void r();var n=new Image;n.onload=o(n,a),n.src=t.src}function i(){c.advanced.updateOnSelectorChange===!0&&(c.advanced.updateOnSelectorChange="*");var e=0,t=f.find(c.advanced.updateOnSelectorChange);return c.advanced.updateOnSelectorChange&&t.length>0&&t.each(function(){e+=this.offsetHeight+this.offsetWidth}),e}function r(e){clearTimeout(f[0].autoUpdate),u.update.call(null,l[0],e)}var l=e(this),s=l.data(a),c=s.opt,f=e("#mCSB_"+s.idx+"_container");return t?(clearTimeout(f[0].autoUpdate),void $(f[0],"autoUpdate")):void o()},V=function(e,t,o){return Math.round(e/t)*t-o},Q=function(t){var o=t.data(a),n=e("#mCSB_"+o.idx+"_container,#mCSB_"+o.idx+"_container_wrapper,#mCSB_"+o.idx+"_dragger_vertical,#mCSB_"+o.idx+"_dragger_horizontal");n.each(function(){Z.call(this)})},G=function(t,o,n){function i(e){return s&&c.callbacks[e]&&"function"==typeof c.callbacks[e]}function r(){return[c.callbacks.alwaysTriggerOffsets||w>=S[0]+y,c.callbacks.alwaysTriggerOffsets||-B>=w]}function l(){var e=[h[0].offsetTop,h[0].offsetLeft],o=[x[0].offsetTop,x[0].offsetLeft],a=[h.outerHeight(!1),h.outerWidth(!1)],i=[f.height(),f.width()];t[0].mcs={content:h,top:e[0],left:e[1],draggerTop:o[0],draggerLeft:o[1],topPct:Math.round(100*Math.abs(e[0])/(Math.abs(a[0])-i[0])),leftPct:Math.round(100*Math.abs(e[1])/(Math.abs(a[1])-i[1])),direction:n.dir}}var s=t.data(a),c=s.opt,d={trigger:"internal",dir:"y",scrollEasing:"mcsEaseOut",drag:!1,dur:c.scrollInertia,overwrite:"all",callbacks:!0,onStart:!0,onUpdate:!0,onComplete:!0},n=e.extend(d,n),u=[n.dur,n.drag?0:n.dur],f=e("#mCSB_"+s.idx),h=e("#mCSB_"+s.idx+"_container"),m=h.parent(),p=c.callbacks.onTotalScrollOffset?Y.call(t,c.callbacks.onTotalScrollOffset):[0,0],g=c.callbacks.onTotalScrollBackOffset?Y.call(t,c.callbacks.onTotalScrollBackOffset):[0,0];if(s.trigger=n.trigger,0===m.scrollTop()&&0===m.scrollLeft()||(e(".mCSB_"+s.idx+"_scrollbar").css("visibility","visible"),m.scrollTop(0).scrollLeft(0)),"_resetY"!==o||s.contentReset.y||(i("onOverflowYNone")&&c.callbacks.onOverflowYNone.call(t[0]),s.contentReset.y=1),"_resetX"!==o||s.contentReset.x||(i("onOverflowXNone")&&c.callbacks.onOverflowXNone.call(t[0]),s.contentReset.x=1),"_resetY"!==o&&"_resetX"!==o){if(!s.contentReset.y&&t[0].mcs||!s.overflowed[0]||(i("onOverflowY")&&c.callbacks.onOverflowY.call(t[0]),s.contentReset.x=null),!s.contentReset.x&&t[0].mcs||!s.overflowed[1]||(i("onOverflowX")&&c.callbacks.onOverflowX.call(t[0]),s.contentReset.x=null),c.snapAmount){var v=c.snapAmount instanceof Array?"x"===n.dir?c.snapAmount[1]:c.snapAmount[0]:c.snapAmount;o=V(o,v,c.snapOffset)}switch(n.dir){case"x":var x=e("#mCSB_"+s.idx+"_dragger_horizontal"),_="left",w=h[0].offsetLeft,S=[f.width()-h.outerWidth(!1),x.parent().width()-x.width()],b=[o,0===o?0:o/s.scrollRatio.x],y=p[1],B=g[1],T=y>0?y/s.scrollRatio.x:0,k=B>0?B/s.scrollRatio.x:0;break;case"y":var x=e("#mCSB_"+s.idx+"_dragger_vertical"),_="top",w=h[0].offsetTop,S=[f.height()-h.outerHeight(!1),x.parent().height()-x.height()],b=[o,0===o?0:o/s.scrollRatio.y],y=p[0],B=g[0],T=y>0?y/s.scrollRatio.y:0,k=B>0?B/s.scrollRatio.y:0}b[1]<0||0===b[0]&&0===b[1]?b=[0,0]:b[1]>=S[1]?b=[S[0],S[1]]:b[0]=-b[0],t[0].mcs||(l(),i("onInit")&&c.callbacks.onInit.call(t[0])),clearTimeout(h[0].onCompleteTimeout),J(x[0],_,Math.round(b[1]),u[1],n.scrollEasing),!s.tweenRunning&&(0===w&&b[0]>=0||w===S[0]&&b[0]<=S[0])||J(h[0],_,Math.round(b[0]),u[0],n.scrollEasing,n.overwrite,{onStart:function(){n.callbacks&&n.onStart&&!s.tweenRunning&&(i("onScrollStart")&&(l(),c.callbacks.onScrollStart.call(t[0])),s.tweenRunning=!0,C(x),s.cbOffsets=r())},onUpdate:function(){n.callbacks&&n.onUpdate&&i("whileScrolling")&&(l(),c.callbacks.whileScrolling.call(t[0]))},onComplete:function(){if(n.callbacks&&n.onComplete){"yx"===c.axis&&clearTimeout(h[0].onCompleteTimeout);var e=h[0].idleTimer||0;h[0].onCompleteTimeout=setTimeout(function(){i("onScroll")&&(l(),c.callbacks.onScroll.call(t[0])),i("onTotalScroll")&&b[1]>=S[1]-T&&s.cbOffsets[0]&&(l(),c.callbacks.onTotalScroll.call(t[0])),i("onTotalScrollBack")&&b[1]<=k&&s.cbOffsets[1]&&(l(),c.callbacks.onTotalScrollBack.call(t[0])),s.tweenRunning=!1,h[0].idleTimer=0,C(x,"hide")},e)}}})}},J=function(e,t,o,a,n,i,r){function l(){S.stop||(x||m.call(),x=K()-v,s(),x>=S.time&&(S.time=x>S.time?x+f-(x-S.time):x+f-1,S.time<x+1&&(S.time=x+1)),S.time<a?S.id=h(l):g.call())}function s(){a>0?(S.currVal=u(S.time,_,b,a,n),w[t]=Math.round(S.currVal)+"px"):w[t]=o+"px",p.call()}function c(){f=1e3/60,S.time=x+f,h=window.requestAnimationFrame?window.requestAnimationFrame:function(e){return s(),setTimeout(e,.01)},S.id=h(l)}function d(){null!=S.id&&(window.requestAnimationFrame?window.cancelAnimationFrame(S.id):clearTimeout(S.id),S.id=null)}function u(e,t,o,a,n){switch(n){case"linear":case"mcsLinear":return o*e/a+t;case"mcsLinearOut":return e/=a,e--,o*Math.sqrt(1-e*e)+t;case"easeInOutSmooth":return e/=a/2,1>e?o/2*e*e+t:(e--,-o/2*(e*(e-2)-1)+t);case"easeInOutStrong":return e/=a/2,1>e?o/2*Math.pow(2,10*(e-1))+t:(e--,o/2*(-Math.pow(2,-10*e)+2)+t);case"easeInOut":case"mcsEaseInOut":return e/=a/2,1>e?o/2*e*e*e+t:(e-=2,o/2*(e*e*e+2)+t);case"easeOutSmooth":return e/=a,e--,-o*(e*e*e*e-1)+t;case"easeOutStrong":return o*(-Math.pow(2,-10*e/a)+1)+t;case"easeOut":case"mcsEaseOut":default:var i=(e/=a)*e,r=i*e;return t+o*(.499999999999997*r*i+-2.5*i*i+5.5*r+-6.5*i+4*e)}}e._mTween||(e._mTween={top:{},left:{}});var f,h,r=r||{},m=r.onStart||function(){},p=r.onUpdate||function(){},g=r.onComplete||function(){},v=K(),x=0,_=e.offsetTop,w=e.style,S=e._mTween[t];"left"===t&&(_=e.offsetLeft);var b=o-_;S.stop=0,"none"!==i&&d(),c()},K=function(){return window.performance&&window.performance.now?window.performance.now():window.performance&&window.performance.webkitNow?window.performance.webkitNow():Date.now?Date.now():(new Date).getTime()},Z=function(){var e=this;e._mTween||(e._mTween={top:{},left:{}});for(var t=["top","left"],o=0;o<t.length;o++){var a=t[o];e._mTween[a].id&&(window.requestAnimationFrame?window.cancelAnimationFrame(e._mTween[a].id):clearTimeout(e._mTween[a].id),e._mTween[a].id=null,e._mTween[a].stop=1)}},$=function(e,t){try{delete e[t]}catch(o){e[t]=null}},ee=function(e){return!(e.which&&1!==e.which)},te=function(e){var t=e.originalEvent.pointerType;return!(t&&"touch"!==t&&2!==t)},oe=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},ae=function(e){var t=e.parents(".mCSB_container");return[e.offset().top-t.offset().top,e.offset().left-t.offset().left]},ne=function(){function e(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}var t=e();return t?document[t]:!1};e.fn[o]=function(t){return u[t]?u[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):u.init.apply(this,arguments)},e[o]=function(t){return u[t]?u[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error("Method "+t+" does not exist"):u.init.apply(this,arguments)},e[o].defaults=i,window[o]=!0,e(window).bind("load",function(){e(n)[o](),e.extend(e.expr[":"],{mcsInView:e.expr[":"].mcsInView||function(t){var o,a,n=e(t),i=n.parents(".mCSB_container");if(i.length)return o=i.parent(),a=[i[0].offsetTop,i[0].offsetLeft],a[0]+ae(n)[0]>=0&&a[0]+ae(n)[0]<o.height()-n.outerHeight(!1)&&a[1]+ae(n)[1]>=0&&a[1]+ae(n)[1]<o.width()-n.outerWidth(!1)},mcsInSight:e.expr[":"].mcsInSight||function(t,o,a){var n,i,r,l,s=e(t),c=s.parents(".mCSB_container"),d="exact"===a[3]?[[1,0],[1,0]]:[[.9,.1],[.6,.4]];if(c.length)return n=[s.outerHeight(!1),s.outerWidth(!1)],r=[c[0].offsetTop+ae(s)[0],c[0].offsetLeft+ae(s)[1]],i=[c.parent()[0].offsetHeight,c.parent()[0].offsetWidth],l=[n[0]<i[0]?d[0]:d[1],n[1]<i[1]?d[0]:d[1]],r[0]-i[0]*l[0][0]<0&&r[0]+n[0]-i[0]*l[0][1]>=0&&r[1]-i[1]*l[1][0]<0&&r[1]+n[1]-i[1]*l[1][1]>=0},mcsOverflow:e.expr[":"].mcsOverflow||function(t){var o=e(t).data(a);if(o)return o.overflowed[0]||o.overflowed[1]}})})})});
var sagscroller_constants={
navpanel: {height:'30px', content:'▼', opacity:0.6, title:'Go to Next Content', background:'black'},
loadingimg: {src:'ajaxloading.gif', dimensions:[100,15]}}
function sagscroller(options){
this.setting={mode:'manual', inittype:'stunted', pause:3000, animatespeed:500, ajaxsource:null, rssdata:null, refreshsecs:0, navpanel:{show:true, cancelauto:false}}
jQuery.extend(this.setting, options)
options=null
this.curmsg=0
this.addloadingpanel(jQuery, 'preload')
if(this.setting.rssdata)
google.load("feeds", "1")
var slider=this
jQuery(function($){
slider.$slider=$('#'+slider.setting.id)
if(slider.setting.ajaxsource||slider.setting.rssdata)
slider.$slider.empty()
slider.addloadingpanel(jQuery, 'show')
if(slider.setting.ajaxsource)
slider.getajaxul(slider.setting.ajaxsource)
else if(slider.setting.rssdata){
slider.fetchfeeds()
}else{
if(slider.setting.inittype=="onload")
$(window).load(function(){slider.init($)})
else
slider.init($)
}})
}
sagscroller.prototype={
getajaxul:function(path){
var $=jQuery, slider=this
this.stopscroll()
this.$loadingpanel.show()
$.ajax({
url: path,
async: true,
error:function(ajaxrequest){
slider.$slider.html('Error fetching content.<br />Server Response: '+ajaxrequest.responseText)
},
success:function(content){
slider.reloadul(content)
if(slider.setting.refreshsecs>0)
setTimeout(function(){slider.getajaxul(path)}, slider.setting.refreshsecs*1000)
}})
},
addloadingpanel:function($, mode){
var loadingimgref=sagscroller_constants.loadingimg
if(mode=="preload"){
var loadingimg=new Image(loadingimgref.dimensions[0], loadingimgref.dimensions[1])
loadingimg.src=loadingimgref.src
this.$loadingimg=$(loadingimg).css({position:'absolute', zIndex:1003})
}else{
var sliderdimensions=[this.$slider.width(), this.$slider.height()]
var $loadingpanel=$('<div />').css({position:'absolute', left:0, top:0, background:'black', opacity:0.5, width:sliderdimensions[0], height:sliderdimensions[1], zIndex:1002}).appendTo(this.$slider)
this.$loadingimg.css({left:sliderdimensions[0]/2-loadingimgref.dimensions[0]/2, top:sliderdimensions[1]/2-loadingimgref.dimensions[1]/2}).appendTo(this.$slider)
this.$loadingpanel=$loadingpanel.add(this.$loadingimg)
}},
addnavpanel:function(){
var slider=this, setting=this.setting
var $navpanel=$('<div class="sliderdesc"><div class="sliderdescbg"></div><div class="sliderdescfg"><div class="sliderdesctext"></div></div></div>')
.appendTo(this.$slider)
var $descpanel=$navpanel.find('div.sliderdesctext').attr('title', sagscroller_constants.navpanel.title).click(function(){
slider.stopscroll()
slider.scrollmsg(setting.mode=="auto"&&!setting.navpanel.cancelauto? true:false)
})
$navpanel.css({top:this.$slider.height()-parseInt(sagscroller_constants.navpanel.height), height:sagscroller_constants.navpanel.height}).find('div').css({height:'100%'})
},
resetuls:function(){
var $tempul=this.$mainul
this.$mainul=this.$secul.css({zIndex:1000})
this.$secul=$tempul.css({zIndex:999})
this.$secul.css('top', this.ulheight)
},
reloadul:function(newhtml){
this.$slider.find('ul').remove()
this.ulheight=null
this.curmsg=0;
this.$slider.append(newhtml)
this.init($)
},
setgetoffset:function($li){
var recaldimensions=(this.setting.ajaxsource||this.setting.rssdata)&&this.setting.inittype=="onload"
if(this.curmsg==this.$lis.length)
return (!this.ulheight||recaldimensions)? this.ulheight=this.$mainul.height():this.ulheight
else{
if(!$li.data('toppos')||recaldimensions)
$li.data('toppos', $li.position().top)
return $li.data('toppos')
}},
scrollmsg:function(repeat){
var slider=this, setting=this.setting
var ulheight=this.ulheight||this.$mainul.height()
var endpoint=-this.setgetoffset(this.$lis.eq(this.curmsg))
this.$mainul.animate({top: endpoint}, setting.animatespeed, function(){
slider.curmsg=(slider.curmsg<slider.$lis.length+1)? slider.curmsg+1:0
if(slider.curmsg==slider.$lis.length+1){
slider.resetuls()
slider.curmsg=1
}
if(repeat)
slider.scrolltimer=setTimeout(function(){slider.scrollmsg(repeat)}, setting.pause)
})
var secendpoint=endpoint+ulheight
this.$secul.animate({top: secendpoint}, setting.animatespeed)
},
stopscroll:function(){
if(this.$mainul){
this.$mainul.add(this.$secul).stop(true, false)
clearTimeout(this.scrolltimer)
}},
init:function($){
var setting=this.setting
this.$loadingpanel.hide()
this.$mainul=this.$slider.find('ul:eq(0)').css({zIndex:1000})
this.$lis=this.$mainul.find('li')
if(setting.navpanel.show)
this.addnavpanel()
this.$secul=this.$mainul.clone().css({top:this.$mainul.height(), zIndex:999}).appendTo(this.$slider)
this.scrollmsg(setting.mode=="auto")
},
fetchfeeds:function(){
var slider=this, rssdata=this.setting.rssdata
this.stopscroll()
this.$loadingpanel.show()
this.entries=[]
this.feedsfetched=0
for (var i=0; i<rssdata.feeds.length; i++){
var feedpointer=new google.feeds.Feed(rssdata.feeds[i][1])
feedpointer.setNumEntries(rssdata.entries)
feedpointer.load(function(label){
return function(r){
slider.storefeeds(r, label)
}}(rssdata.feeds[i][0]))
}},
storefeeds:function(result, label){
var thisfeed=(!result.error)? result.feed.entries:""
if(thisfeed==""){
alert("Google Feed API Error: "+result.error.message)
}
for (var i=0; i<thisfeed.length; i++){
result.feed.entries[i].label=label
}
this.entries=this.entries.concat(thisfeed)
this.feedsfetched+=1
if(this.feedsfetched==this.setting.rssdata.feeds.length){
if(this.setting.rssdata.groupbylabel){
this.entries.sort(function(a,b){
var fielda=a.label.toLowerCase(), fieldb=b.label.toLowerCase()
return (fielda<fieldb)? -1:(fielda>fieldb)? 1:0
})
}else{
this.entries.sort(function(a,b){return new Date(b.publishedDate)-new Date(a.publishedDate)})
}
this.formatfeeds()
}},
formatfeeds:function(){
function formatdate(datestr, showoptions){
var itemdate=new Date(datestr)
var parseddate=(showoptions.indexOf("datetime")!=-1)? itemdate.toLocaleString():(showoptions.indexOf("date")!=-1)? itemdate.toLocaleDateString():""
return "<span class='datefield'>"+parseddate+"</span>"
}
var sagcontent='<ul>'
var slider=this, rssdata=this.setting.rssdata, entries=this.entries
for (var i=0; i<entries.length; i++){
sagcontent+='<li><a href="'+entries[i].link+'" target="'+rssdata.linktarget+'">'+entries[i].title+'</a>'
+'<div class="rsscontent">'
+(/description/.test(rssdata.displayoptions)? entries[i].content:entries[i].contentSnippet)
+'</div>'
+'<div class="rsslabel">'
+(/label/.test(rssdata.displayoptions)? "<b>Source("+(i+1)+"):</b> "+entries[i].label+" ":"")
+(/date/.test(rssdata.displayoptions)? formatdate(entries[i].publishedDate, rssdata.displayoptions): "")
+'</div>'
+'</li>\n\n'
}
sagcontent+='</ul>'
this.reloadul(sagcontent)
if(slider.setting.refreshsecs>0)
setTimeout(function(){slider.fetchfeeds()}, slider.setting.refreshsecs*1000)
}};
!function(){"use strict";function t(o){if(!o)throw new Error("No options passed to Waypoint constructor");if(!o.element)throw new Error("No element option passed to Waypoint constructor");if(!o.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=t.Adapter.extend({},t.defaults,o),this.element=this.options.element,this.adapter=new t.Adapter(this.element),this.callback=o.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=t.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=t.Context.findOrCreateByElement(this.options.context),t.offsetAliases[this.options.offset]&&(this.options.offset=t.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),i[this.key]=this,e+=1}var e=0,i={};t.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},t.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},t.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete i[this.key]},t.prototype.disable=function(){return this.enabled=!1,this},t.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},t.prototype.next=function(){return this.group.next(this)},t.prototype.previous=function(){return this.group.previous(this)},t.invokeAll=function(t){var e=[];for(var o in i)e.push(i[o]);for(var n=0,r=e.length;r>n;n++)e[n][t]()},t.destroyAll=function(){t.invokeAll("destroy")},t.disableAll=function(){t.invokeAll("disable")},t.enableAll=function(){t.invokeAll("enable")},t.refreshAll=function(){t.Context.refreshAll()},t.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},t.viewportWidth=function(){return document.documentElement.clientWidth},t.adapters=[],t.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},t.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=t}(),function(){"use strict";function t(t){window.setTimeout(t,1e3/60)}function e(t){this.element=t,this.Adapter=n.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,o[t.waypointContextKey]=this,i+=1,this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}var i=0,o={},n=window.Waypoint,r=window.onload;e.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},e.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical);t&&e&&(this.adapter.off(".waypoints"),delete o[this.key])},e.prototype.createThrottledResizeHandler=function(){function t(){e.handleResize(),e.didResize=!1}var e=this;this.adapter.on("resize.waypoints",function(){e.didResize||(e.didResize=!0,n.requestAnimationFrame(t))})},e.prototype.createThrottledScrollHandler=function(){function t(){e.handleScroll(),e.didScroll=!1}var e=this;this.adapter.on("scroll.waypoints",function(){(!e.didScroll||n.isTouch)&&(e.didScroll=!0,n.requestAnimationFrame(t))})},e.prototype.handleResize=function(){n.Context.refreshAll()},e.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var o=e[i],n=o.newScroll>o.oldScroll,r=n?o.forward:o.backward;for(var s in this.waypoints[i]){var a=this.waypoints[i][s],l=o.oldScroll<a.triggerPoint,h=o.newScroll>=a.triggerPoint,p=l&&h,u=!l&&!h;(p||u)&&(a.queueTrigger(r),t[a.group.id]=a.group)}}for(var c in t)t[c].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}},e.prototype.innerHeight=function(){return this.element==this.element.window?n.viewportHeight():this.adapter.innerHeight()},e.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},e.prototype.innerWidth=function(){return this.element==this.element.window?n.viewportWidth():this.adapter.innerWidth()},e.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var o=0,n=t.length;n>o;o++)t[o].destroy()},e.prototype.refresh=function(){var t,e=this.element==this.element.window,i=this.adapter.offset(),o={};this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}};for(var n in t){var r=t[n];for(var s in this.waypoints[n]){var a,l,h,p,u,c=this.waypoints[n][s],d=c.options.offset,f=c.triggerPoint,w=0,y=null==f;c.element!==c.element.window&&(w=c.adapter.offset()[r.offsetProp]),"function"==typeof d?d=d.apply(c):"string"==typeof d&&(d=parseFloat(d),c.options.offset.indexOf("%")>-1&&(d=Math.ceil(r.contextDimension*d/100))),a=r.contextScroll-r.contextOffset,c.triggerPoint=w+a-d,l=f<r.oldScroll,h=c.triggerPoint>=r.oldScroll,p=l&&h,u=!l&&!h,!y&&p?(c.queueTrigger(r.backward),o[c.group.id]=c.group):!y&&u?(c.queueTrigger(r.forward),o[c.group.id]=c.group):y&&r.oldScroll>=c.triggerPoint&&(c.queueTrigger(r.forward),o[c.group.id]=c.group)}}for(var g in o)o[g].flushTriggers();return this},e.findOrCreateByElement=function(t){return e.findByElement(t)||new e(t)},e.refreshAll=function(){for(var t in o)o[t].refresh()},e.findByElement=function(t){return o[t.waypointContextKey]},window.onload=function(){r&&r(),e.refreshAll()},n.requestAnimationFrame=function(e){var i=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||t;i.call(window,e)},n.Context=e}(),function(){"use strict";function t(t,e){return t.triggerPoint-e.triggerPoint}function e(t,e){return e.triggerPoint-t.triggerPoint}function i(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),o[this.axis][this.name]=this}var o={vertical:{},horizontal:{}},n=window.Waypoint;i.prototype.add=function(t){this.waypoints.push(t)},i.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},i.prototype.flushTriggers=function(){for(var i in this.triggerQueues){var o=this.triggerQueues[i],n="up"===i||"left"===i;o.sort(n?e:t);for(var r=0,s=o.length;s>r;r+=1){var a=o[r];(a.options.continuous||r===o.length-1)&&a.trigger([i])}}this.clearTriggerQueues()},i.prototype.next=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints),o=i===this.waypoints.length-1;return o?null:this.waypoints[i+1]},i.prototype.previous=function(e){this.waypoints.sort(t);var i=n.Adapter.inArray(e,this.waypoints);return i?this.waypoints[i-1]:null},i.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},i.prototype.remove=function(t){var e=n.Adapter.inArray(t,this.waypoints);e>-1&&this.waypoints.splice(e,1)},i.prototype.first=function(){return this.waypoints[0]},i.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},i.findOrCreate=function(t){return o[t.axis][t.name]||new i(t)},n.Group=i}(),function(){"use strict";function t(t){this.$element=e(t)}var e=window.jQuery,i=window.Waypoint;e.each(["innerHeight","innerWidth","off","offset","on","outerHeight","outerWidth","scrollLeft","scrollTop"],function(e,i){t.prototype[i]=function(){var t=Array.prototype.slice.call(arguments);return this.$element[i].apply(this.$element,t)}}),e.each(["extend","inArray","isEmptyObject"],function(i,o){t[o]=e[o]}),i.adapters.push({name:"jquery",Adapter:t}),i.Adapter=t}(),function(){"use strict";function t(t){return function(){var i=[],o=arguments[0];return t.isFunction(arguments[0])&&(o=t.extend({},arguments[1]),o.handler=arguments[0]),this.each(function(){var n=t.extend({},o,{element:this});"string"==typeof n.context&&(n.context=t(this).closest(n.context)[0]),i.push(new e(n))}),i}}var e=window.Waypoint;window.jQuery&&(window.jQuery.fn.waypoint=t(window.jQuery)),window.Zepto&&(window.Zepto.fn.waypoint=t(window.Zepto))}();
!function(f){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=f();else if("function"==typeof define&&define.amd)define([],f);else{var g;(g="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).ScrollHint=f()}}((function(){var define,module,exports;return function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){var n=t[o][1][e];return s(n||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){"use strict";function assign(target,firstSource){if(null==target)throw new TypeError("Cannot convert first argument to object");for(var to=Object(target),i=1;i<arguments.length;i++){var nextSource=arguments[i];if(null!=nextSource)for(var keysArray=Object.keys(Object(nextSource)),nextIndex=0,len=keysArray.length;nextIndex<len;nextIndex++){var nextKey=keysArray[nextIndex],desc=Object.getOwnPropertyDescriptor(nextSource,nextKey);void 0!==desc&&desc.enumerable&&(to[nextKey]=nextSource[nextKey])}}return to}function polyfill(){Object.assign||Object.defineProperty(Object,"assign",{enumerable:!1,configurable:!0,writable:!0,value:assign})}module.exports={assign:assign,polyfill:polyfill}},{}],2:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}(),_es6ObjectAssign=require("es6-object-assign"),_util=require("./util");function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var defaults={suggestClass:"is-active",scrollableClass:"is-scrollable",scrollableRightClass:"is-right-scrollable",scrollableLeftClass:"is-left-scrollable",scrollHintClass:"scroll-hint",scrollHintIconClass:"scroll-hint-icon",scrollHintIconAppendClass:"",scrollHintIconWrapClass:"scroll-hint-icon-wrap",scrollHintText:"scroll-hint-text",scrollHintBorderWidth:10,remainingTime:-1,enableOverflowScrolling:!0,applyToParents:!1,suggestiveShadow:!1,offset:0,i18n:{scrollable:"scrollable"}},ScrollHint=function(){function ScrollHint(ele,option){var _this=this;_classCallCheck(this,ScrollHint),this.opt=(0,_es6ObjectAssign.assign)({},defaults,option),this.items=[];var elements="string"==typeof ele?document.querySelectorAll(ele):ele,applyToParents=this.opt.applyToParents;[].forEach.call(elements,(function(element){applyToParents&&(element=element.parentElement),element.style.position="relative",element.style.overflow="auto",_this.opt.enableOverflowScrolling&&("overflowScrolling"in element.style?element.style.overflowScrolling="touch":"webkitOverflowScrolling"in element.style&&(element.style.webkitOverflowScrolling="touch"));var item={element:element,scrolledIn:!1,interacted:!1};document.addEventListener("scroll",(function(e){e.target===element&&(item.interacted=!0,_this.updateItem(item))}),!0),(0,_util.addClass)(element,_this.opt.scrollHintClass),(0,_util.append)(element,'<div class="'+_this.opt.scrollHintIconWrapClass+'" data-target="scrollable-icon">\n        <span class="'+_this.opt.scrollHintIconClass+(_this.opt.scrollHintIconAppendClass?" "+_this.opt.scrollHintIconAppendClass:"")+'">\n          <div class="'+_this.opt.scrollHintText+'">'+_this.opt.i18n.scrollable+"</div>\n        </span>\n      </div>"),_this.items.push(item)})),window.addEventListener("scroll",(function(){_this.updateItems()})),window.addEventListener("resize",(function(){_this.updateItems()})),this.updateItems()}return _createClass(ScrollHint,[{key:"isScrollable",value:function isScrollable(item){var offset=this.opt.offset,element=item.element,offsetWidth;return element.offsetWidth+offset<element.scrollWidth}},{key:"checkScrollableDir",value:function checkScrollableDir(item){var _opt=this.opt,scrollHintBorderWidth=_opt.scrollHintBorderWidth,scrollableRightClass=_opt.scrollableRightClass,scrollableLeftClass=_opt.scrollableLeftClass,element=item.element,child,width=element.children[0].scrollWidth,parentWidth=element.offsetWidth,scrollLeft=element.scrollLeft;parentWidth+scrollLeft<width-scrollHintBorderWidth?(0,_util.addClass)(element,scrollableRightClass):(0,_util.removeClass)(element,scrollableRightClass),parentWidth<width&&scrollLeft>scrollHintBorderWidth?(0,_util.addClass)(element,scrollableLeftClass):(0,_util.removeClass)(element,scrollableLeftClass)}},{key:"needSuggest",value:function needSuggest(item){var scrolledIn=item.scrolledIn,interacted;return!item.interacted&&scrolledIn&&this.isScrollable(item)}},{key:"updateItems",value:function updateItems(){var _this2=this;[].forEach.call(this.items,(function(item){_this2.updateItem(item)}))}},{key:"updateStatus",value:function updateStatus(item){var _this3=this,element=item.element,scrolledIn;item.scrolledIn||(0,_util.getOffset)(element).top+Math.min(element.offsetHeight,window.innerHeight)/2<(0,_util.getScrollTop)()+window.innerHeight&&(item.scrolledIn=!0,-1!==this.opt.remainingTime&&setTimeout((function(){item.interacted=!0,_this3.updateItem(item)}),this.opt.remainingTime))}},{key:"updateItem",value:function updateItem(item){var opt=this.opt,element=item.element,target=element.querySelector('[data-target="scrollable-icon"]');this.updateStatus(item),this.isScrollable(item)?(0,_util.addClass)(element,opt.scrollableClass):(0,_util.removeClass)(element,opt.scrollableClass),this.needSuggest(item)?(0,_util.addClass)(target,opt.suggestClass):(0,_util.removeClass)(target,opt.suggestClass),opt.suggestiveShadow&&this.checkScrollableDir(item)}}]),ScrollHint}();exports.default=ScrollHint,module.exports=exports.default},{"./util":3,"es6-object-assign":1}],3:[function(require,module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var append=exports.append=function append(element,string){var div=document.createElement("div");for(div.innerHTML=string;div.children.length>0;)element.appendChild(div.children[0])},addClass=exports.addClass=function addClass(element,className){element.classList?element.classList.add(className):element.className+=" "+className},removeClass=exports.removeClass=function removeClass(element,className){element.classList?element.classList.remove(className):element.className=element.className.replace(new RegExp("(^|\\b)"+className.split(" ").join("|")+"(\\b|$)","gi")," ")},getScrollTop=exports.getScrollTop=function getScrollTop(){return window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},getScrollLeft=exports.getScrollLeft=function getScrollLeft(){return window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0},getOffset=exports.getOffset=function getOffset(el){var rect=el.getBoundingClientRect();return{top:rect.top+getScrollTop(),left:rect.left+getScrollLeft()}}},{}]},{},[2])(2)}));
(function (global, factory){
typeof exports==='object'&&typeof module!=='undefined' ? module.exports=factory(function(){ try { return require('moment'); } catch(e){ }}()) :
typeof define==='function'&&define.amd ? define(['require'], function(require){ return factory(function(){ try { return require('moment'); } catch(e){ }}()); }) :
(global.Chart=factory(global.moment));
}(this, (function (moment){ 'use strict';
moment=moment&&moment.hasOwnProperty('default') ? moment['default']:moment;
var conversions={
rgb2hsl: rgb2hsl,
rgb2hsv: rgb2hsv,
rgb2hwb: rgb2hwb,
rgb2cmyk: rgb2cmyk,
rgb2keyword: rgb2keyword,
rgb2xyz: rgb2xyz,
rgb2lab: rgb2lab,
rgb2lch: rgb2lch,
hsl2rgb: hsl2rgb,
hsl2hsv: hsl2hsv,
hsl2hwb: hsl2hwb,
hsl2cmyk: hsl2cmyk,
hsl2keyword: hsl2keyword,
hsv2rgb: hsv2rgb,
hsv2hsl: hsv2hsl,
hsv2hwb: hsv2hwb,
hsv2cmyk: hsv2cmyk,
hsv2keyword: hsv2keyword,
hwb2rgb: hwb2rgb,
hwb2hsl: hwb2hsl,
hwb2hsv: hwb2hsv,
hwb2cmyk: hwb2cmyk,
hwb2keyword: hwb2keyword,
cmyk2rgb: cmyk2rgb,
cmyk2hsl: cmyk2hsl,
cmyk2hsv: cmyk2hsv,
cmyk2hwb: cmyk2hwb,
cmyk2keyword: cmyk2keyword,
keyword2rgb: keyword2rgb,
keyword2hsl: keyword2hsl,
keyword2hsv: keyword2hsv,
keyword2hwb: keyword2hwb,
keyword2cmyk: keyword2cmyk,
keyword2lab: keyword2lab,
keyword2xyz: keyword2xyz,
xyz2rgb: xyz2rgb,
xyz2lab: xyz2lab,
xyz2lch: xyz2lch,
lab2xyz: lab2xyz,
lab2rgb: lab2rgb,
lab2lch: lab2lch,
lch2lab: lch2lab,
lch2xyz: lch2xyz,
lch2rgb: lch2rgb
};
function rgb2hsl(rgb){
var r=rgb[0]/255,
g=rgb[1]/255,
b=rgb[2]/255,
min=Math.min(r, g, b),
max=Math.max(r, g, b),
delta=max - min,
h, s, l;
if(max==min)
h=0;
else if(r==max)
h=(g - b) / delta;
else if(g==max)
h=2 + (b - r) / delta;
else if(b==max)
h=4 + (r - g)/ delta;
h=Math.min(h * 60, 360);
if(h < 0)
h +=360;
l=(min + max) / 2;
if(max==min)
s=0;
else if(l <=0.5)
s=delta / (max + min);
else
s=delta / (2 - max - min);
return [h, s * 100, l * 100];
}
function rgb2hsv(rgb){
var r=rgb[0],
g=rgb[1],
b=rgb[2],
min=Math.min(r, g, b),
max=Math.max(r, g, b),
delta=max - min,
h, s, v;
if(max==0)
s=0;
else
s=(delta/max * 1000)/10;
if(max==min)
h=0;
else if(r==max)
h=(g - b) / delta;
else if(g==max)
h=2 + (b - r) / delta;
else if(b==max)
h=4 + (r - g) / delta;
h=Math.min(h * 60, 360);
if(h < 0)
h +=360;
v=((max / 255) * 1000) / 10;
return [h, s, v];
}
function rgb2hwb(rgb){
var r=rgb[0],
g=rgb[1],
b=rgb[2],
h=rgb2hsl(rgb)[0],
w=1/255 * Math.min(r, Math.min(g, b)),
b=1 - 1/255 * Math.max(r, Math.max(g, b));
return [h, w * 100, b * 100];
}
function rgb2cmyk(rgb){
var r=rgb[0] / 255,
g=rgb[1] / 255,
b=rgb[2] / 255,
c, m, y, k;
k=Math.min(1 - r, 1 - g, 1 - b);
c=(1 - r - k) / (1 - k)||0;
m=(1 - g - k) / (1 - k)||0;
y=(1 - b - k) / (1 - k)||0;
return [c * 100, m * 100, y * 100, k * 100];
}
function rgb2keyword(rgb){
return reverseKeywords[JSON.stringify(rgb)];
}
function rgb2xyz(rgb){
var r=rgb[0] / 255,
g=rgb[1] / 255,
b=rgb[2] / 255;
r=r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4):(r / 12.92);
g=g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4):(g / 12.92);
b=b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4):(b / 12.92);
var x=(r * 0.4124) + (g * 0.3576) + (b * 0.1805);
var y=(r * 0.2126) + (g * 0.7152) + (b * 0.0722);
var z=(r * 0.0193) + (g * 0.1192) + (b * 0.9505);
return [x * 100, y *100, z * 100];
}
function rgb2lab(rgb){
var xyz=rgb2xyz(rgb),
x=xyz[0],
y=xyz[1],
z=xyz[2],
l, a, b;
x /=95.047;
y /=100;
z /=108.883;
x=x > 0.008856 ? Math.pow(x, 1/3):(7.787 * x) + (16 / 116);
y=y > 0.008856 ? Math.pow(y, 1/3):(7.787 * y) + (16 / 116);
z=z > 0.008856 ? Math.pow(z, 1/3):(7.787 * z) + (16 / 116);
l=(116 * y) - 16;
a=500 * (x - y);
b=200 * (y - z);
return [l, a, b];
}
function rgb2lch(args){
return lab2lch(rgb2lab(args));
}
function hsl2rgb(hsl){
var h=hsl[0] / 360,
s=hsl[1] / 100,
l=hsl[2] / 100,
t1, t2, t3, rgb, val;
if(s==0){
val=l * 255;
return [val, val, val];
}
if(l < 0.5)
t2=l * (1 + s);
else
t2=l + s - l * s;
t1=2 * l - t2;
rgb=[0, 0, 0];
for (var i=0; i < 3; i++){
t3=h + 1 / 3 * - (i - 1);
t3 < 0&&t3++;
t3 > 1&&t3--;
if(6 * t3 < 1)
val=t1 + (t2 - t1) * 6 * t3;
else if(2 * t3 < 1)
val=t2;
else if(3 * t3 < 2)
val=t1 + (t2 - t1) * (2 / 3 - t3) * 6;
else
val=t1;
rgb[i]=val * 255;
}
return rgb;
}
function hsl2hsv(hsl){
var h=hsl[0],
s=hsl[1] / 100,
l=hsl[2] / 100,
sv, v;
if(l===0){
return [0, 0, 0];
}
l *=2;
s *=(l <=1) ? l:2 - l;
v=(l + s) / 2;
sv=(2 * s) / (l + s);
return [h, sv * 100, v * 100];
}
function hsl2hwb(args){
return rgb2hwb(hsl2rgb(args));
}
function hsl2cmyk(args){
return rgb2cmyk(hsl2rgb(args));
}
function hsl2keyword(args){
return rgb2keyword(hsl2rgb(args));
}
function hsv2rgb(hsv){
var h=hsv[0] / 60,
s=hsv[1] / 100,
v=hsv[2] / 100,
hi=Math.floor(h) % 6;
var f=h - Math.floor(h),
p=255 * v * (1 - s),
q=255 * v * (1 - (s * f)),
t=255 * v * (1 - (s * (1 - f))),
v=255 * v;
switch(hi){
case 0:
return [v, t, p];
case 1:
return [q, v, p];
case 2:
return [p, v, t];
case 3:
return [p, q, v];
case 4:
return [t, p, v];
case 5:
return [v, p, q];
}}
function hsv2hsl(hsv){
var h=hsv[0],
s=hsv[1] / 100,
v=hsv[2] / 100,
sl, l;
l=(2 - s) * v;
sl=s * v;
sl /=(l <=1) ? l:2 - l;
sl=sl||0;
l /=2;
return [h, sl * 100, l * 100];
}
function hsv2hwb(args){
return rgb2hwb(hsv2rgb(args))
}
function hsv2cmyk(args){
return rgb2cmyk(hsv2rgb(args));
}
function hsv2keyword(args){
return rgb2keyword(hsv2rgb(args));
}
function hwb2rgb(hwb){
var h=hwb[0] / 360,
wh=hwb[1] / 100,
bl=hwb[2] / 100,
ratio=wh + bl,
i, v, f, n;
if(ratio > 1){
wh /=ratio;
bl /=ratio;
}
i=Math.floor(6 * h);
v=1 - bl;
f=6 * h - i;
if((i & 0x01)!=0){
f=1 - f;
}
n=wh + f * (v - wh);
switch (i){
default:
case 6:
case 0: r=v; g=n; b=wh; break;
case 1: r=n; g=v; b=wh; break;
case 2: r=wh; g=v; b=n; break;
case 3: r=wh; g=n; b=v; break;
case 4: r=n; g=wh; b=v; break;
case 5: r=v; g=wh; b=n; break;
}
return [r * 255, g * 255, b * 255];
}
function hwb2hsl(args){
return rgb2hsl(hwb2rgb(args));
}
function hwb2hsv(args){
return rgb2hsv(hwb2rgb(args));
}
function hwb2cmyk(args){
return rgb2cmyk(hwb2rgb(args));
}
function hwb2keyword(args){
return rgb2keyword(hwb2rgb(args));
}
function cmyk2rgb(cmyk){
var c=cmyk[0] / 100,
m=cmyk[1] / 100,
y=cmyk[2] / 100,
k=cmyk[3] / 100,
r, g, b;
r=1 - Math.min(1, c * (1 - k) + k);
g=1 - Math.min(1, m * (1 - k) + k);
b=1 - Math.min(1, y * (1 - k) + k);
return [r * 255, g * 255, b * 255];
}
function cmyk2hsl(args){
return rgb2hsl(cmyk2rgb(args));
}
function cmyk2hsv(args){
return rgb2hsv(cmyk2rgb(args));
}
function cmyk2hwb(args){
return rgb2hwb(cmyk2rgb(args));
}
function cmyk2keyword(args){
return rgb2keyword(cmyk2rgb(args));
}
function xyz2rgb(xyz){
var x=xyz[0] / 100,
y=xyz[1] / 100,
z=xyz[2] / 100,
r, g, b;
r=(x * 3.2406) + (y * -1.5372) + (z * -0.4986);
g=(x * -0.9689) + (y * 1.8758) + (z * 0.0415);
b=(x * 0.0557) + (y * -0.2040) + (z * 1.0570);
r=r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
: r=(r * 12.92);
g=g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
: g=(g * 12.92);
b=b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
: b=(b * 12.92);
r=Math.min(Math.max(0, r), 1);
g=Math.min(Math.max(0, g), 1);
b=Math.min(Math.max(0, b), 1);
return [r * 255, g * 255, b * 255];
}
function xyz2lab(xyz){
var x=xyz[0],
y=xyz[1],
z=xyz[2],
l, a, b;
x /=95.047;
y /=100;
z /=108.883;
x=x > 0.008856 ? Math.pow(x, 1/3):(7.787 * x) + (16 / 116);
y=y > 0.008856 ? Math.pow(y, 1/3):(7.787 * y) + (16 / 116);
z=z > 0.008856 ? Math.pow(z, 1/3):(7.787 * z) + (16 / 116);
l=(116 * y) - 16;
a=500 * (x - y);
b=200 * (y - z);
return [l, a, b];
}
function xyz2lch(args){
return lab2lch(xyz2lab(args));
}
function lab2xyz(lab){
var l=lab[0],
a=lab[1],
b=lab[2],
x, y, z, y2;
if(l <=8){
y=(l * 100) / 903.3;
y2=(7.787 * (y / 100)) + (16 / 116);
}else{
y=100 * Math.pow((l + 16) / 116, 3);
y2=Math.pow(y / 100, 1/3);
}
x=x / 95.047 <=0.008856 ? x=(95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787:95.047 * Math.pow((a / 500) + y2, 3);
z=z / 108.883 <=0.008859 ? z=(108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787:108.883 * Math.pow(y2 - (b / 200), 3);
return [x, y, z];
}
function lab2lch(lab){
var l=lab[0],
a=lab[1],
b=lab[2],
hr, h, c;
hr=Math.atan2(b, a);
h=hr * 360 / 2 / Math.PI;
if(h < 0){
h +=360;
}
c=Math.sqrt(a * a + b * b);
return [l, c, h];
}
function lab2rgb(args){
return xyz2rgb(lab2xyz(args));
}
function lch2lab(lch){
var l=lch[0],
c=lch[1],
h=lch[2],
a, b, hr;
hr=h / 360 * 2 * Math.PI;
a=c * Math.cos(hr);
b=c * Math.sin(hr);
return [l, a, b];
}
function lch2xyz(args){
return lab2xyz(lch2lab(args));
}
function lch2rgb(args){
return lab2rgb(lch2lab(args));
}
function keyword2rgb(keyword){
return cssKeywords[keyword];
}
function keyword2hsl(args){
return rgb2hsl(keyword2rgb(args));
}
function keyword2hsv(args){
return rgb2hsv(keyword2rgb(args));
}
function keyword2hwb(args){
return rgb2hwb(keyword2rgb(args));
}
function keyword2cmyk(args){
return rgb2cmyk(keyword2rgb(args));
}
function keyword2lab(args){
return rgb2lab(keyword2rgb(args));
}
function keyword2xyz(args){
return rgb2xyz(keyword2rgb(args));
}
var cssKeywords={
aliceblue:  [240,248,255],
antiquewhite: [250,235,215],
aqua: [0,255,255],
aquamarine: [127,255,212],
azure:  [240,255,255],
beige:  [245,245,220],
bisque: [255,228,196],
black:  [0,0,0],
blanchedalmond: [255,235,205],
blue: [0,0,255],
blueviolet: [138,43,226],
brown:  [165,42,42],
burlywood:  [222,184,135],
cadetblue:  [95,158,160],
chartreuse: [127,255,0],
chocolate:  [210,105,30],
coral:  [255,127,80],
cornflowerblue: [100,149,237],
cornsilk: [255,248,220],
crimson:  [220,20,60],
cyan: [0,255,255],
darkblue: [0,0,139],
darkcyan: [0,139,139],
darkgoldenrod:  [184,134,11],
darkgray: [169,169,169],
darkgreen:  [0,100,0],
darkgrey: [169,169,169],
darkkhaki:  [189,183,107],
darkmagenta:  [139,0,139],
darkolivegreen: [85,107,47],
darkorange: [255,140,0],
darkorchid: [153,50,204],
darkred:  [139,0,0],
darksalmon: [233,150,122],
darkseagreen: [143,188,143],
darkslateblue:  [72,61,139],
darkslategray:  [47,79,79],
darkslategrey:  [47,79,79],
darkturquoise:  [0,206,209],
darkviolet: [148,0,211],
deeppink: [255,20,147],
deepskyblue:  [0,191,255],
dimgray:  [105,105,105],
dimgrey:  [105,105,105],
dodgerblue: [30,144,255],
firebrick:  [178,34,34],
floralwhite:  [255,250,240],
forestgreen:  [34,139,34],
fuchsia:  [255,0,255],
gainsboro:  [220,220,220],
ghostwhite: [248,248,255],
gold: [255,215,0],
goldenrod:  [218,165,32],
gray: [128,128,128],
green:  [0,128,0],
greenyellow:  [173,255,47],
grey: [128,128,128],
honeydew: [240,255,240],
hotpink:  [255,105,180],
indianred:  [205,92,92],
indigo: [75,0,130],
ivory:  [255,255,240],
khaki:  [240,230,140],
lavender: [230,230,250],
lavenderblush:  [255,240,245],
lawngreen:  [124,252,0],
lemonchiffon: [255,250,205],
lightblue:  [173,216,230],
lightcoral: [240,128,128],
lightcyan:  [224,255,255],
lightgoldenrodyellow: [250,250,210],
lightgray:  [211,211,211],
lightgreen: [144,238,144],
lightgrey:  [211,211,211],
lightpink:  [255,182,193],
lightsalmon:  [255,160,122],
lightseagreen:  [32,178,170],
lightskyblue: [135,206,250],
lightslategray: [119,136,153],
lightslategrey: [119,136,153],
lightsteelblue: [176,196,222],
lightyellow:  [255,255,224],
lime: [0,255,0],
limegreen:  [50,205,50],
linen:  [250,240,230],
magenta:  [255,0,255],
maroon: [128,0,0],
mediumaquamarine: [102,205,170],
mediumblue: [0,0,205],
mediumorchid: [186,85,211],
mediumpurple: [147,112,219],
mediumseagreen: [60,179,113],
mediumslateblue:  [123,104,238],
mediumspringgreen:  [0,250,154],
mediumturquoise:  [72,209,204],
mediumvioletred:  [199,21,133],
midnightblue: [25,25,112],
mintcream:  [245,255,250],
mistyrose:  [255,228,225],
moccasin: [255,228,181],
navajowhite:  [255,222,173],
navy: [0,0,128],
oldlace:  [253,245,230],
olive:  [128,128,0],
olivedrab:  [107,142,35],
orange: [255,165,0],
orangered:  [255,69,0],
orchid: [218,112,214],
palegoldenrod:  [238,232,170],
palegreen:  [152,251,152],
paleturquoise:  [175,238,238],
palevioletred:  [219,112,147],
papayawhip: [255,239,213],
peachpuff:  [255,218,185],
peru: [205,133,63],
pink: [255,192,203],
plum: [221,160,221],
powderblue: [176,224,230],
purple: [128,0,128],
rebeccapurple: [102, 51, 153],
red:  [255,0,0],
rosybrown:  [188,143,143],
royalblue:  [65,105,225],
saddlebrown:  [139,69,19],
salmon: [250,128,114],
sandybrown: [244,164,96],
seagreen: [46,139,87],
seashell: [255,245,238],
sienna: [160,82,45],
silver: [192,192,192],
skyblue:  [135,206,235],
slateblue:  [106,90,205],
slategray:  [112,128,144],
slategrey:  [112,128,144],
snow: [255,250,250],
springgreen:  [0,255,127],
steelblue:  [70,130,180],
tan:  [210,180,140],
teal: [0,128,128],
thistle:  [216,191,216],
tomato: [255,99,71],
turquoise:  [64,224,208],
violet: [238,130,238],
wheat:  [245,222,179],
white:  [255,255,255],
whitesmoke: [245,245,245],
yellow: [255,255,0],
yellowgreen:  [154,205,50]
};
var reverseKeywords={};
for (var key in cssKeywords){
reverseKeywords[JSON.stringify(cssKeywords[key])]=key;
}
var convert=function(){
return new Converter();
};
for (var func in conversions){
convert[func + "Raw"]=(function(func){
return function(arg){
if(typeof arg=="number")
arg=Array.prototype.slice.call(arguments);
return conversions[func](arg);
}})(func);
var pair=/(\w+)2(\w+)/.exec(func),
from=pair[1],
to=pair[2];
convert[from]=convert[from]||{};
convert[from][to]=convert[func]=(function(func){
return function(arg){
if(typeof arg=="number")
arg=Array.prototype.slice.call(arguments);
var val=conversions[func](arg);
if(typeof val=="string"||val===undefined)
return val;
for (var i=0; i < val.length; i++)
val[i]=Math.round(val[i]);
return val;
}})(func);
}
var Converter=function(){
this.convs={};};
Converter.prototype.routeSpace=function(space, args){
var values=args[0];
if(values===undefined){
return this.getValues(space);
}
if(typeof values=="number"){
values=Array.prototype.slice.call(args);
}
return this.setValues(space, values);
};
Converter.prototype.setValues=function(space, values){
this.space=space;
this.convs={};
this.convs[space]=values;
return this;
};
Converter.prototype.getValues=function(space){
var vals=this.convs[space];
if(!vals){
var fspace=this.space,
from=this.convs[fspace];
vals=convert[fspace][space](from);
this.convs[space]=vals;
}
return vals;
};
["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space){
Converter.prototype[space]=function(vals){
return this.routeSpace(space, arguments);
};});
var colorConvert=convert;
var colorName={
"aliceblue": [240, 248, 255],
"antiquewhite": [250, 235, 215],
"aqua": [0, 255, 255],
"aquamarine": [127, 255, 212],
"azure": [240, 255, 255],
"beige": [245, 245, 220],
"bisque": [255, 228, 196],
"black": [0, 0, 0],
"blanchedalmond": [255, 235, 205],
"blue": [0, 0, 255],
"blueviolet": [138, 43, 226],
"brown": [165, 42, 42],
"burlywood": [222, 184, 135],
"cadetblue": [95, 158, 160],
"chartreuse": [127, 255, 0],
"chocolate": [210, 105, 30],
"coral": [255, 127, 80],
"cornflowerblue": [100, 149, 237],
"cornsilk": [255, 248, 220],
"crimson": [220, 20, 60],
"cyan": [0, 255, 255],
"darkblue": [0, 0, 139],
"darkcyan": [0, 139, 139],
"darkgoldenrod": [184, 134, 11],
"darkgray": [169, 169, 169],
"darkgreen": [0, 100, 0],
"darkgrey": [169, 169, 169],
"darkkhaki": [189, 183, 107],
"darkmagenta": [139, 0, 139],
"darkolivegreen": [85, 107, 47],
"darkorange": [255, 140, 0],
"darkorchid": [153, 50, 204],
"darkred": [139, 0, 0],
"darksalmon": [233, 150, 122],
"darkseagreen": [143, 188, 143],
"darkslateblue": [72, 61, 139],
"darkslategray": [47, 79, 79],
"darkslategrey": [47, 79, 79],
"darkturquoise": [0, 206, 209],
"darkviolet": [148, 0, 211],
"deeppink": [255, 20, 147],
"deepskyblue": [0, 191, 255],
"dimgray": [105, 105, 105],
"dimgrey": [105, 105, 105],
"dodgerblue": [30, 144, 255],
"firebrick": [178, 34, 34],
"floralwhite": [255, 250, 240],
"forestgreen": [34, 139, 34],
"fuchsia": [255, 0, 255],
"gainsboro": [220, 220, 220],
"ghostwhite": [248, 248, 255],
"gold": [255, 215, 0],
"goldenrod": [218, 165, 32],
"gray": [128, 128, 128],
"green": [0, 128, 0],
"greenyellow": [173, 255, 47],
"grey": [128, 128, 128],
"honeydew": [240, 255, 240],
"hotpink": [255, 105, 180],
"indianred": [205, 92, 92],
"indigo": [75, 0, 130],
"ivory": [255, 255, 240],
"khaki": [240, 230, 140],
"lavender": [230, 230, 250],
"lavenderblush": [255, 240, 245],
"lawngreen": [124, 252, 0],
"lemonchiffon": [255, 250, 205],
"lightblue": [173, 216, 230],
"lightcoral": [240, 128, 128],
"lightcyan": [224, 255, 255],
"lightgoldenrodyellow": [250, 250, 210],
"lightgray": [211, 211, 211],
"lightgreen": [144, 238, 144],
"lightgrey": [211, 211, 211],
"lightpink": [255, 182, 193],
"lightsalmon": [255, 160, 122],
"lightseagreen": [32, 178, 170],
"lightskyblue": [135, 206, 250],
"lightslategray": [119, 136, 153],
"lightslategrey": [119, 136, 153],
"lightsteelblue": [176, 196, 222],
"lightyellow": [255, 255, 224],
"lime": [0, 255, 0],
"limegreen": [50, 205, 50],
"linen": [250, 240, 230],
"magenta": [255, 0, 255],
"maroon": [128, 0, 0],
"mediumaquamarine": [102, 205, 170],
"mediumblue": [0, 0, 205],
"mediumorchid": [186, 85, 211],
"mediumpurple": [147, 112, 219],
"mediumseagreen": [60, 179, 113],
"mediumslateblue": [123, 104, 238],
"mediumspringgreen": [0, 250, 154],
"mediumturquoise": [72, 209, 204],
"mediumvioletred": [199, 21, 133],
"midnightblue": [25, 25, 112],
"mintcream": [245, 255, 250],
"mistyrose": [255, 228, 225],
"moccasin": [255, 228, 181],
"navajowhite": [255, 222, 173],
"navy": [0, 0, 128],
"oldlace": [253, 245, 230],
"olive": [128, 128, 0],
"olivedrab": [107, 142, 35],
"orange": [255, 165, 0],
"orangered": [255, 69, 0],
"orchid": [218, 112, 214],
"palegoldenrod": [238, 232, 170],
"palegreen": [152, 251, 152],
"paleturquoise": [175, 238, 238],
"palevioletred": [219, 112, 147],
"papayawhip": [255, 239, 213],
"peachpuff": [255, 218, 185],
"peru": [205, 133, 63],
"pink": [255, 192, 203],
"plum": [221, 160, 221],
"powderblue": [176, 224, 230],
"purple": [128, 0, 128],
"rebeccapurple": [102, 51, 153],
"red": [255, 0, 0],
"rosybrown": [188, 143, 143],
"royalblue": [65, 105, 225],
"saddlebrown": [139, 69, 19],
"salmon": [250, 128, 114],
"sandybrown": [244, 164, 96],
"seagreen": [46, 139, 87],
"seashell": [255, 245, 238],
"sienna": [160, 82, 45],
"silver": [192, 192, 192],
"skyblue": [135, 206, 235],
"slateblue": [106, 90, 205],
"slategray": [112, 128, 144],
"slategrey": [112, 128, 144],
"snow": [255, 250, 250],
"springgreen": [0, 255, 127],
"steelblue": [70, 130, 180],
"tan": [210, 180, 140],
"teal": [0, 128, 128],
"thistle": [216, 191, 216],
"tomato": [255, 99, 71],
"turquoise": [64, 224, 208],
"violet": [238, 130, 238],
"wheat": [245, 222, 179],
"white": [255, 255, 255],
"whitesmoke": [245, 245, 245],
"yellow": [255, 255, 0],
"yellowgreen": [154, 205, 50]
};
var colorString={
getRgba: getRgba,
getHsla: getHsla,
getRgb: getRgb,
getHsl: getHsl,
getHwb: getHwb,
getAlpha: getAlpha,
hexString: hexString,
rgbString: rgbString,
rgbaString: rgbaString,
percentString: percentString,
percentaString: percentaString,
hslString: hslString,
hslaString: hslaString,
hwbString: hwbString,
keyword: keyword
};
function getRgba(string){
if(!string){
return;
}
var abbr=/^#([a-fA-F0-9]{3,4})$/i,
hex=/^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,
rgba=/^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i,
per=/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/i,
keyword=/(\w+)/;
var rgb=[0, 0, 0],
a=1,
match=string.match(abbr),
hexAlpha="";
if(match){
match=match[1];
hexAlpha=match[3];
for (var i=0; i < rgb.length; i++){
rgb[i]=parseInt(match[i] + match[i], 16);
}
if(hexAlpha){
a=Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;
}}
else if(match=string.match(hex)){
hexAlpha=match[2];
match=match[1];
for (var i=0; i < rgb.length; i++){
rgb[i]=parseInt(match.slice(i * 2, i * 2 + 2), 16);
}
if(hexAlpha){
a=Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;
}}
else if(match=string.match(rgba)){
for (var i=0; i < rgb.length; i++){
rgb[i]=parseInt(match[i + 1]);
}
a=parseFloat(match[4]);
}
else if(match=string.match(per)){
for (var i=0; i < rgb.length; i++){
rgb[i]=Math.round(parseFloat(match[i + 1]) * 2.55);
}
a=parseFloat(match[4]);
}
else if(match=string.match(keyword)){
if(match[1]=="transparent"){
return [0, 0, 0, 0];
}
rgb=colorName[match[1]];
if(!rgb){
return;
}}
for (var i=0; i < rgb.length; i++){
rgb[i]=scale(rgb[i], 0, 255);
}
if(!a&&a!=0){
a=1;
}else{
a=scale(a, 0, 1);
}
rgb[3]=a;
return rgb;
}
function getHsla(string){
if(!string){
return;
}
var hsl=/^hsla?\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;
var match=string.match(hsl);
if(match){
var alpha=parseFloat(match[4]);
var h=scale(parseInt(match[1]), 0, 360),
s=scale(parseFloat(match[2]), 0, 100),
l=scale(parseFloat(match[3]), 0, 100),
a=scale(isNaN(alpha) ? 1:alpha, 0, 1);
return [h, s, l, a];
}}
function getHwb(string){
if(!string){
return;
}
var hwb=/^hwb\(\s*([+-]?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)/;
var match=string.match(hwb);
if(match){
var alpha=parseFloat(match[4]);
var h=scale(parseInt(match[1]), 0, 360),
w=scale(parseFloat(match[2]), 0, 100),
b=scale(parseFloat(match[3]), 0, 100),
a=scale(isNaN(alpha) ? 1:alpha, 0, 1);
return [h, w, b, a];
}}
function getRgb(string){
var rgba=getRgba(string);
return rgba&&rgba.slice(0, 3);
}
function getHsl(string){
var hsla=getHsla(string);
return hsla&&hsla.slice(0, 3);
}
function getAlpha(string){
var vals=getRgba(string);
if(vals){
return vals[3];
}
else if(vals=getHsla(string)){
return vals[3];
}
else if(vals=getHwb(string)){
return vals[3];
}}
function hexString(rgba, a){
var a=(a!==undefined&&rgba.length===3) ? a:rgba[3];
return "#" + hexDouble(rgba[0])
+ hexDouble(rgba[1])
+ hexDouble(rgba[2])
+ (
(a >=0&&a < 1)
? hexDouble(Math.round(a * 255))
: ""
);
}
function rgbString(rgba, alpha){
if(alpha < 1||(rgba[3]&&rgba[3] < 1)){
return rgbaString(rgba, alpha);
}
return "rgb(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2] + ")";
}
function rgbaString(rgba, alpha){
if(alpha===undefined){
alpha=(rgba[3]!==undefined ? rgba[3]:1);
}
return "rgba(" + rgba[0] + ", " + rgba[1] + ", " + rgba[2]
+ ", " + alpha + ")";
}
function percentString(rgba, alpha){
if(alpha < 1||(rgba[3]&&rgba[3] < 1)){
return percentaString(rgba, alpha);
}
var r=Math.round(rgba[0]/255 * 100),
g=Math.round(rgba[1]/255 * 100),
b=Math.round(rgba[2]/255 * 100);
return "rgb(" + r + "%, " + g + "%, " + b + "%)";
}
function percentaString(rgba, alpha){
var r=Math.round(rgba[0]/255 * 100),
g=Math.round(rgba[1]/255 * 100),
b=Math.round(rgba[2]/255 * 100);
return "rgba(" + r + "%, " + g + "%, " + b + "%, " + (alpha||rgba[3]||1) + ")";
}
function hslString(hsla, alpha){
if(alpha < 1||(hsla[3]&&hsla[3] < 1)){
return hslaString(hsla, alpha);
}
return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)";
}
function hslaString(hsla, alpha){
if(alpha===undefined){
alpha=(hsla[3]!==undefined ? hsla[3]:1);
}
return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, "
+ alpha + ")";
}
function hwbString(hwb, alpha){
if(alpha===undefined){
alpha=(hwb[3]!==undefined ? hwb[3]:1);
}
return "hwb(" + hwb[0] + ", " + hwb[1] + "%, " + hwb[2] + "%"
+ (alpha!==undefined&&alpha!==1 ? ", " + alpha:"") + ")";
}
function keyword(rgb){
return reverseNames[rgb.slice(0, 3)];
}
function scale(num, min, max){
return Math.min(Math.max(min, num), max);
}
function hexDouble(num){
var str=num.toString(16).toUpperCase();
return (str.length < 2) ? "0" + str:str;
}
var reverseNames={};
for (var name in colorName){
reverseNames[colorName[name]]=name;
}
var Color=function (obj){
if(obj instanceof Color){
return obj;
}
if(!(this instanceof Color)){
return new Color(obj);
}
this.valid=false;
this.values={
rgb: [0, 0, 0],
hsl: [0, 0, 0],
hsv: [0, 0, 0],
hwb: [0, 0, 0],
cmyk: [0, 0, 0, 0],
alpha: 1
};
var vals;
if(typeof obj==='string'){
vals=colorString.getRgba(obj);
if(vals){
this.setValues('rgb', vals);
}else if(vals=colorString.getHsla(obj)){
this.setValues('hsl', vals);
}else if(vals=colorString.getHwb(obj)){
this.setValues('hwb', vals);
}}else if(typeof obj==='object'){
vals=obj;
if(vals.r!==undefined||vals.red!==undefined){
this.setValues('rgb', vals);
}else if(vals.l!==undefined||vals.lightness!==undefined){
this.setValues('hsl', vals);
}else if(vals.v!==undefined||vals.value!==undefined){
this.setValues('hsv', vals);
}else if(vals.w!==undefined||vals.whiteness!==undefined){
this.setValues('hwb', vals);
}else if(vals.c!==undefined||vals.cyan!==undefined){
this.setValues('cmyk', vals);
}}
};
Color.prototype={
isValid: function (){
return this.valid;
},
rgb: function (){
return this.setSpace('rgb', arguments);
},
hsl: function (){
return this.setSpace('hsl', arguments);
},
hsv: function (){
return this.setSpace('hsv', arguments);
},
hwb: function (){
return this.setSpace('hwb', arguments);
},
cmyk: function (){
return this.setSpace('cmyk', arguments);
},
rgbArray: function (){
return this.values.rgb;
},
hslArray: function (){
return this.values.hsl;
},
hsvArray: function (){
return this.values.hsv;
},
hwbArray: function (){
var values=this.values;
if(values.alpha!==1){
return values.hwb.concat([values.alpha]);
}
return values.hwb;
},
cmykArray: function (){
return this.values.cmyk;
},
rgbaArray: function (){
var values=this.values;
return values.rgb.concat([values.alpha]);
},
hslaArray: function (){
var values=this.values;
return values.hsl.concat([values.alpha]);
},
alpha: function (val){
if(val===undefined){
return this.values.alpha;
}
this.setValues('alpha', val);
return this;
},
red: function (val){
return this.setChannel('rgb', 0, val);
},
green: function (val){
return this.setChannel('rgb', 1, val);
},
blue: function (val){
return this.setChannel('rgb', 2, val);
},
hue: function (val){
if(val){
val %=360;
val=val < 0 ? 360 + val:val;
}
return this.setChannel('hsl', 0, val);
},
saturation: function (val){
return this.setChannel('hsl', 1, val);
},
lightness: function (val){
return this.setChannel('hsl', 2, val);
},
saturationv: function (val){
return this.setChannel('hsv', 1, val);
},
whiteness: function (val){
return this.setChannel('hwb', 1, val);
},
blackness: function (val){
return this.setChannel('hwb', 2, val);
},
value: function (val){
return this.setChannel('hsv', 2, val);
},
cyan: function (val){
return this.setChannel('cmyk', 0, val);
},
magenta: function (val){
return this.setChannel('cmyk', 1, val);
},
yellow: function (val){
return this.setChannel('cmyk', 2, val);
},
black: function (val){
return this.setChannel('cmyk', 3, val);
},
hexString: function (){
return colorString.hexString(this.values.rgb);
},
rgbString: function (){
return colorString.rgbString(this.values.rgb, this.values.alpha);
},
rgbaString: function (){
return colorString.rgbaString(this.values.rgb, this.values.alpha);
},
percentString: function (){
return colorString.percentString(this.values.rgb, this.values.alpha);
},
hslString: function (){
return colorString.hslString(this.values.hsl, this.values.alpha);
},
hslaString: function (){
return colorString.hslaString(this.values.hsl, this.values.alpha);
},
hwbString: function (){
return colorString.hwbString(this.values.hwb, this.values.alpha);
},
keyword: function (){
return colorString.keyword(this.values.rgb, this.values.alpha);
},
rgbNumber: function (){
var rgb=this.values.rgb;
return (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];
},
luminosity: function (){
var rgb=this.values.rgb;
var lum=[];
for (var i=0; i < rgb.length; i++){
var chan=rgb[i] / 255;
lum[i]=(chan <=0.03928) ? chan / 12.92:Math.pow(((chan + 0.055) / 1.055), 2.4);
}
return 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];
},
contrast: function (color2){
var lum1=this.luminosity();
var lum2=color2.luminosity();
if(lum1 > lum2){
return (lum1 + 0.05) / (lum2 + 0.05);
}
return (lum2 + 0.05) / (lum1 + 0.05);
},
level: function (color2){
var contrastRatio=this.contrast(color2);
if(contrastRatio >=7.1){
return 'AAA';
}
return (contrastRatio >=4.5) ? 'AA':'';
},
dark: function (){
var rgb=this.values.rgb;
var yiq=(rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
return yiq < 128;
},
light: function (){
return !this.dark();
},
negate: function (){
var rgb=[];
for (var i=0; i < 3; i++){
rgb[i]=255 - this.values.rgb[i];
}
this.setValues('rgb', rgb);
return this;
},
lighten: function (ratio){
var hsl=this.values.hsl;
hsl[2] +=hsl[2] * ratio;
this.setValues('hsl', hsl);
return this;
},
darken: function (ratio){
var hsl=this.values.hsl;
hsl[2] -=hsl[2] * ratio;
this.setValues('hsl', hsl);
return this;
},
saturate: function (ratio){
var hsl=this.values.hsl;
hsl[1] +=hsl[1] * ratio;
this.setValues('hsl', hsl);
return this;
},
desaturate: function (ratio){
var hsl=this.values.hsl;
hsl[1] -=hsl[1] * ratio;
this.setValues('hsl', hsl);
return this;
},
whiten: function (ratio){
var hwb=this.values.hwb;
hwb[1] +=hwb[1] * ratio;
this.setValues('hwb', hwb);
return this;
},
blacken: function (ratio){
var hwb=this.values.hwb;
hwb[2] +=hwb[2] * ratio;
this.setValues('hwb', hwb);
return this;
},
greyscale: function (){
var rgb=this.values.rgb;
var val=rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;
this.setValues('rgb', [val, val, val]);
return this;
},
clearer: function (ratio){
var alpha=this.values.alpha;
this.setValues('alpha', alpha - (alpha * ratio));
return this;
},
opaquer: function (ratio){
var alpha=this.values.alpha;
this.setValues('alpha', alpha + (alpha * ratio));
return this;
},
rotate: function (degrees){
var hsl=this.values.hsl;
var hue=(hsl[0] + degrees) % 360;
hsl[0]=hue < 0 ? 360 + hue:hue;
this.setValues('hsl', hsl);
return this;
},
mix: function (mixinColor, weight){
var color1=this;
var color2=mixinColor;
var p=weight===undefined ? 0.5:weight;
var w=2 * p - 1;
var a=color1.alpha() - color2.alpha();
var w1=(((w * a===-1) ? w:(w + a) / (1 + w * a)) + 1) / 2.0;
var w2=1 - w1;
return this
.rgb(w1 * color1.red() + w2 * color2.red(),
w1 * color1.green() + w2 * color2.green(),
w1 * color1.blue() + w2 * color2.blue()
)
.alpha(color1.alpha() * p + color2.alpha() * (1 - p));
},
toJSON: function (){
return this.rgb();
},
clone: function (){
var result=new Color();
var source=this.values;
var target=result.values;
var value, type;
for (var prop in source){
if(source.hasOwnProperty(prop)){
value=source[prop];
type=({}).toString.call(value);
if(type==='[object Array]'){
target[prop]=value.slice(0);
}else if(type==='[object Number]'){
target[prop]=value;
}else{
console.error('unexpected color value:', value);
}}
}
return result;
}};
Color.prototype.spaces={
rgb: ['red', 'green', 'blue'],
hsl: ['hue', 'saturation', 'lightness'],
hsv: ['hue', 'saturation', 'value'],
hwb: ['hue', 'whiteness', 'blackness'],
cmyk: ['cyan', 'magenta', 'yellow', 'black']
};
Color.prototype.maxes={
rgb: [255, 255, 255],
hsl: [360, 100, 100],
hsv: [360, 100, 100],
hwb: [360, 100, 100],
cmyk: [100, 100, 100, 100]
};
Color.prototype.getValues=function (space){
var values=this.values;
var vals={};
for (var i=0; i < space.length; i++){
vals[space.charAt(i)]=values[space][i];
}
if(values.alpha!==1){
vals.a=values.alpha;
}
return vals;
};
Color.prototype.setValues=function (space, vals){
var values=this.values;
var spaces=this.spaces;
var maxes=this.maxes;
var alpha=1;
var i;
this.valid=true;
if(space==='alpha'){
alpha=vals;
}else if(vals.length){
values[space]=vals.slice(0, space.length);
alpha=vals[space.length];
}else if(vals[space.charAt(0)]!==undefined){
for (i=0; i < space.length; i++){
values[space][i]=vals[space.charAt(i)];
}
alpha=vals.a;
}else if(vals[spaces[space][0]]!==undefined){
var chans=spaces[space];
for (i=0; i < space.length; i++){
values[space][i]=vals[chans[i]];
}
alpha=vals.alpha;
}
values.alpha=Math.max(0, Math.min(1, (alpha===undefined ? values.alpha:alpha)));
if(space==='alpha'){
return false;
}
var capped;
for (i=0; i < space.length; i++){
capped=Math.max(0, Math.min(maxes[space][i], values[space][i]));
values[space][i]=Math.round(capped);
}
for (var sname in spaces){
if(sname!==space){
values[sname]=colorConvert[space][sname](values[space]);
}}
return true;
};
Color.prototype.setSpace=function (space, args){
var vals=args[0];
if(vals===undefined){
return this.getValues(space);
}
if(typeof vals==='number'){
vals=Array.prototype.slice.call(args);
}
this.setValues(space, vals);
return this;
};
Color.prototype.setChannel=function (space, index, val){
var svalues=this.values[space];
if(val===undefined){
return svalues[index];
}else if(val===svalues[index]){
return this;
}
svalues[index]=val;
this.setValues(space, svalues);
return this;
};
if(typeof window!=='undefined'){
window.Color=Color;
}
var chartjsColor=Color;
var helpers={
noop: function(){},
uid: (function(){
var id=0;
return function(){
return id++;
};}()),
isNullOrUndef: function(value){
return value===null||typeof value==='undefined';
},
isArray: function(value){
if(Array.isArray&&Array.isArray(value)){
return true;
}
var type=Object.prototype.toString.call(value);
if(type.substr(0, 7)==='[object'&&type.substr(-6)==='Array]'){
return true;
}
return false;
},
isObject: function(value){
return value!==null&&Object.prototype.toString.call(value)==='[object Object]';
},
isFinite: function(value){
return (typeof value==='number'||value instanceof Number)&&isFinite(value);
},
valueOrDefault: function(value, defaultValue){
return typeof value==='undefined' ? defaultValue:value;
},
valueAtIndexOrDefault: function(value, index, defaultValue){
return helpers.valueOrDefault(helpers.isArray(value) ? value[index]:value, defaultValue);
},
callback: function(fn, args, thisArg){
if(fn&&typeof fn.call==='function'){
return fn.apply(thisArg, args);
}},
each: function(loopable, fn, thisArg, reverse){
var i, len, keys;
if(helpers.isArray(loopable)){
len=loopable.length;
if(reverse){
for (i=len - 1; i >=0; i--){
fn.call(thisArg, loopable[i], i);
}}else{
for (i=0; i < len; i++){
fn.call(thisArg, loopable[i], i);
}}
}else if(helpers.isObject(loopable)){
keys=Object.keys(loopable);
len=keys.length;
for (i=0; i < len; i++){
fn.call(thisArg, loopable[keys[i]], keys[i]);
}}
},
arrayEquals: function(a0, a1){
var i, ilen, v0, v1;
if(!a0||!a1||a0.length!==a1.length){
return false;
}
for (i=0, ilen=a0.length; i < ilen; ++i){
v0=a0[i];
v1=a1[i];
if(v0 instanceof Array&&v1 instanceof Array){
if(!helpers.arrayEquals(v0, v1)){
return false;
}}else if(v0!==v1){
return false;
}}
return true;
},
clone: function(source){
if(helpers.isArray(source)){
return source.map(helpers.clone);
}
if(helpers.isObject(source)){
var target={};
var keys=Object.keys(source);
var klen=keys.length;
var k=0;
for (; k < klen; ++k){
target[keys[k]]=helpers.clone(source[keys[k]]);
}
return target;
}
return source;
},
_merger: function(key, target, source, options){
var tval=target[key];
var sval=source[key];
if(helpers.isObject(tval)&&helpers.isObject(sval)){
helpers.merge(tval, sval, options);
}else{
target[key]=helpers.clone(sval);
}},
_mergerIf: function(key, target, source){
var tval=target[key];
var sval=source[key];
if(helpers.isObject(tval)&&helpers.isObject(sval)){
helpers.mergeIf(tval, sval);
}else if(!target.hasOwnProperty(key)){
target[key]=helpers.clone(sval);
}},
merge: function(target, source, options){
var sources=helpers.isArray(source) ? source:[source];
var ilen=sources.length;
var merge, i, keys, klen, k;
if(!helpers.isObject(target)){
return target;
}
options=options||{};
merge=options.merger||helpers._merger;
for (i=0; i < ilen; ++i){
source=sources[i];
if(!helpers.isObject(source)){
continue;
}
keys=Object.keys(source);
for (k=0, klen=keys.length; k < klen; ++k){
merge(keys[k], target, source, options);
}}
return target;
},
mergeIf: function(target, source){
return helpers.merge(target, source, {merger: helpers._mergerIf});
},
extend: function(target){
var setFn=function(value, key){
target[key]=value;
};
for (var i=1, ilen=arguments.length; i < ilen; ++i){
helpers.each(arguments[i], setFn);
}
return target;
},
inherits: function(extensions){
var me=this;
var ChartElement=(extensions&&extensions.hasOwnProperty('constructor')) ? extensions.constructor:function(){
return me.apply(this, arguments);
};
var Surrogate=function(){
this.constructor=ChartElement;
};
Surrogate.prototype=me.prototype;
ChartElement.prototype=new Surrogate();
ChartElement.extend=helpers.inherits;
if(extensions){
helpers.extend(ChartElement.prototype, extensions);
}
ChartElement.__super__=me.prototype;
return ChartElement;
}};
var helpers_core=helpers;
helpers.callCallback=helpers.callback;
helpers.indexOf=function(array, item, fromIndex){
return Array.prototype.indexOf.call(array, item, fromIndex);
};
helpers.getValueOrDefault=helpers.valueOrDefault;
helpers.getValueAtIndexOrDefault=helpers.valueAtIndexOrDefault;
var effects={
linear: function(t){
return t;
},
easeInQuad: function(t){
return t * t;
},
easeOutQuad: function(t){
return -t * (t - 2);
},
easeInOutQuad: function(t){
if((t /=0.5) < 1){
return 0.5 * t * t;
}
return -0.5 * ((--t) * (t - 2) - 1);
},
easeInCubic: function(t){
return t * t * t;
},
easeOutCubic: function(t){
return (t=t - 1) * t * t + 1;
},
easeInOutCubic: function(t){
if((t /=0.5) < 1){
return 0.5 * t * t * t;
}
return 0.5 * ((t -=2) * t * t + 2);
},
easeInQuart: function(t){
return t * t * t * t;
},
easeOutQuart: function(t){
return -((t=t - 1) * t * t * t - 1);
},
easeInOutQuart: function(t){
if((t /=0.5) < 1){
return 0.5 * t * t * t * t;
}
return -0.5 * ((t -=2) * t * t * t - 2);
},
easeInQuint: function(t){
return t * t * t * t * t;
},
easeOutQuint: function(t){
return (t=t - 1) * t * t * t * t + 1;
},
easeInOutQuint: function(t){
if((t /=0.5) < 1){
return 0.5 * t * t * t * t * t;
}
return 0.5 * ((t -=2) * t * t * t * t + 2);
},
easeInSine: function(t){
return -Math.cos(t * (Math.PI / 2)) + 1;
},
easeOutSine: function(t){
return Math.sin(t * (Math.PI / 2));
},
easeInOutSine: function(t){
return -0.5 * (Math.cos(Math.PI * t) - 1);
},
easeInExpo: function(t){
return (t===0) ? 0:Math.pow(2, 10 * (t - 1));
},
easeOutExpo: function(t){
return (t===1) ? 1:-Math.pow(2, -10 * t) + 1;
},
easeInOutExpo: function(t){
if(t===0){
return 0;
}
if(t===1){
return 1;
}
if((t /=0.5) < 1){
return 0.5 * Math.pow(2, 10 * (t - 1));
}
return 0.5 * (-Math.pow(2, -10 * --t) + 2);
},
easeInCirc: function(t){
if(t >=1){
return t;
}
return -(Math.sqrt(1 - t * t) - 1);
},
easeOutCirc: function(t){
return Math.sqrt(1 - (t=t - 1) * t);
},
easeInOutCirc: function(t){
if((t /=0.5) < 1){
return -0.5 * (Math.sqrt(1 - t * t) - 1);
}
return 0.5 * (Math.sqrt(1 - (t -=2) * t) + 1);
},
easeInElastic: function(t){
var s=1.70158;
var p=0;
var a=1;
if(t===0){
return 0;
}
if(t===1){
return 1;
}
if(!p){
p=0.3;
}
if(a < 1){
a=1;
s=p / 4;
}else{
s=p / (2 * Math.PI) * Math.asin(1 / a);
}
return -(a * Math.pow(2, 10 * (t -=1)) * Math.sin((t - s) * (2 * Math.PI) / p));
},
easeOutElastic: function(t){
var s=1.70158;
var p=0;
var a=1;
if(t===0){
return 0;
}
if(t===1){
return 1;
}
if(!p){
p=0.3;
}
if(a < 1){
a=1;
s=p / 4;
}else{
s=p / (2 * Math.PI) * Math.asin(1 / a);
}
return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;
},
easeInOutElastic: function(t){
var s=1.70158;
var p=0;
var a=1;
if(t===0){
return 0;
}
if((t /=0.5)===2){
return 1;
}
if(!p){
p=0.45;
}
if(a < 1){
a=1;
s=p / 4;
}else{
s=p / (2 * Math.PI) * Math.asin(1 / a);
}
if(t < 1){
return -0.5 * (a * Math.pow(2, 10 * (t -=1)) * Math.sin((t - s) * (2 * Math.PI) / p));
}
return a * Math.pow(2, -10 * (t -=1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;
},
easeInBack: function(t){
var s=1.70158;
return t * t * ((s + 1) * t - s);
},
easeOutBack: function(t){
var s=1.70158;
return (t=t - 1) * t * ((s + 1) * t + s) + 1;
},
easeInOutBack: function(t){
var s=1.70158;
if((t /=0.5) < 1){
return 0.5 * (t * t * (((s *=(1.525)) + 1) * t - s));
}
return 0.5 * ((t -=2) * t * (((s *=(1.525)) + 1) * t + s) + 2);
},
easeInBounce: function(t){
return 1 - effects.easeOutBounce(1 - t);
},
easeOutBounce: function(t){
if(t < (1 / 2.75)){
return 7.5625 * t * t;
}
if(t < (2 / 2.75)){
return 7.5625 * (t -=(1.5 / 2.75)) * t + 0.75;
}
if(t < (2.5 / 2.75)){
return 7.5625 * (t -=(2.25 / 2.75)) * t + 0.9375;
}
return 7.5625 * (t -=(2.625 / 2.75)) * t + 0.984375;
},
easeInOutBounce: function(t){
if(t < 0.5){
return effects.easeInBounce(t * 2) * 0.5;
}
return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;
}};
var helpers_easing={
effects: effects
};
helpers_core.easingEffects=effects;
var PI=Math.PI;
var RAD_PER_DEG=PI / 180;
var DOUBLE_PI=PI * 2;
var HALF_PI=PI / 2;
var QUARTER_PI=PI / 4;
var TWO_THIRDS_PI=PI * 2 / 3;
var exports$1={
clear: function(chart){
chart.ctx.clearRect(0, 0, chart.width, chart.height);
},
roundedRect: function(ctx, x, y, width, height, radius){
if(radius){
var r=Math.min(radius, height / 2, width / 2);
var left=x + r;
var top=y + r;
var right=x + width - r;
var bottom=y + height - r;
ctx.moveTo(x, top);
if(left < right&&top < bottom){
ctx.arc(left, top, r, -PI, -HALF_PI);
ctx.arc(right, top, r, -HALF_PI, 0);
ctx.arc(right, bottom, r, 0, HALF_PI);
ctx.arc(left, bottom, r, HALF_PI, PI);
}else if(left < right){
ctx.moveTo(left, y);
ctx.arc(right, top, r, -HALF_PI, HALF_PI);
ctx.arc(left, top, r, HALF_PI, PI + HALF_PI);
}else if(top < bottom){
ctx.arc(left, top, r, -PI, 0);
ctx.arc(left, bottom, r, 0, PI);
}else{
ctx.arc(left, top, r, -PI, PI);
}
ctx.closePath();
ctx.moveTo(x, y);
}else{
ctx.rect(x, y, width, height);
}},
drawPoint: function(ctx, style, radius, x, y, rotation){
var type, xOffset, yOffset, size, cornerRadius;
var rad=(rotation||0) * RAD_PER_DEG;
if(style&&typeof style==='object'){
type=style.toString();
if(type==='[object HTMLImageElement]'||type==='[object HTMLCanvasElement]'){
ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);
return;
}}
if(isNaN(radius)||radius <=0){
return;
}
ctx.beginPath();
switch (style){
default:
ctx.arc(x, y, radius, 0, DOUBLE_PI);
ctx.closePath();
break;
case 'triangle':
ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);
rad +=TWO_THIRDS_PI;
ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);
rad +=TWO_THIRDS_PI;
ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);
ctx.closePath();
break;
case 'rectRounded':
cornerRadius=radius * 0.516;
size=radius - cornerRadius;
xOffset=Math.cos(rad + QUARTER_PI) * size;
yOffset=Math.sin(rad + QUARTER_PI) * size;
ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);
ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);
ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);
ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);
ctx.closePath();
break;
case 'rect':
if(!rotation){
size=Math.SQRT1_2 * radius;
ctx.rect(x - size, y - size, 2 * size, 2 * size);
break;
}
rad +=QUARTER_PI;
case 'rectRot':
xOffset=Math.cos(rad) * radius;
yOffset=Math.sin(rad) * radius;
ctx.moveTo(x - xOffset, y - yOffset);
ctx.lineTo(x + yOffset, y - xOffset);
ctx.lineTo(x + xOffset, y + yOffset);
ctx.lineTo(x - yOffset, y + xOffset);
ctx.closePath();
break;
case 'crossRot':
rad +=QUARTER_PI;
case 'cross':
xOffset=Math.cos(rad) * radius;
yOffset=Math.sin(rad) * radius;
ctx.moveTo(x - xOffset, y - yOffset);
ctx.lineTo(x + xOffset, y + yOffset);
ctx.moveTo(x + yOffset, y - xOffset);
ctx.lineTo(x - yOffset, y + xOffset);
break;
case 'star':
xOffset=Math.cos(rad) * radius;
yOffset=Math.sin(rad) * radius;
ctx.moveTo(x - xOffset, y - yOffset);
ctx.lineTo(x + xOffset, y + yOffset);
ctx.moveTo(x + yOffset, y - xOffset);
ctx.lineTo(x - yOffset, y + xOffset);
rad +=QUARTER_PI;
xOffset=Math.cos(rad) * radius;
yOffset=Math.sin(rad) * radius;
ctx.moveTo(x - xOffset, y - yOffset);
ctx.lineTo(x + xOffset, y + yOffset);
ctx.moveTo(x + yOffset, y - xOffset);
ctx.lineTo(x - yOffset, y + xOffset);
break;
case 'line':
xOffset=Math.cos(rad) * radius;
yOffset=Math.sin(rad) * radius;
ctx.moveTo(x - xOffset, y - yOffset);
ctx.lineTo(x + xOffset, y + yOffset);
break;
case 'dash':
ctx.moveTo(x, y);
ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);
break;
}
ctx.fill();
ctx.stroke();
},
_isPointInArea: function(point, area){
var epsilon=1e-6;
return point.x > area.left - epsilon&&point.x < area.right + epsilon &&
point.y > area.top - epsilon&&point.y < area.bottom + epsilon;
},
clipArea: function(ctx, area){
ctx.save();
ctx.beginPath();
ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);
ctx.clip();
},
unclipArea: function(ctx){
ctx.restore();
},
lineTo: function(ctx, previous, target, flip){
var stepped=target.steppedLine;
if(stepped){
if(stepped==='middle'){
var midpoint=(previous.x + target.x) / 2.0;
ctx.lineTo(midpoint, flip ? target.y:previous.y);
ctx.lineTo(midpoint, flip ? previous.y:target.y);
}else if((stepped==='after'&&!flip)||(stepped!=='after'&&flip)){
ctx.lineTo(previous.x, target.y);
}else{
ctx.lineTo(target.x, previous.y);
}
ctx.lineTo(target.x, target.y);
return;
}
if(!target.tension){
ctx.lineTo(target.x, target.y);
return;
}
ctx.bezierCurveTo(flip ? previous.controlPointPreviousX:previous.controlPointNextX,
flip ? previous.controlPointPreviousY:previous.controlPointNextY,
flip ? target.controlPointNextX:target.controlPointPreviousX,
flip ? target.controlPointNextY:target.controlPointPreviousY,
target.x,
target.y);
}};
var helpers_canvas=exports$1;
helpers_core.clear=exports$1.clear;
helpers_core.drawRoundedRectangle=function(ctx){
ctx.beginPath();
exports$1.roundedRect.apply(exports$1, arguments);
};
var defaults={
_set: function(scope, values){
return helpers_core.merge(this[scope]||(this[scope]={}), values);
}};
defaults._set('global', {
defaultColor: 'rgba(0,0,0,0.1)',
defaultFontColor: '#666',
defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",
defaultFontSize: 12,
defaultFontStyle: 'normal',
defaultLineHeight: 1.2,
showLines: true
});
var core_defaults=defaults;
var valueOrDefault=helpers_core.valueOrDefault;
function toFontString(font){
if(!font||helpers_core.isNullOrUndef(font.size)||helpers_core.isNullOrUndef(font.family)){
return null;
}
return (font.style ? font.style + ' ':'')
+ (font.weight ? font.weight + ' ':'')
+ font.size + 'px '
+ font.family;
}
var helpers_options={
toLineHeight: function(value, size){
var matches=('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);
if(!matches||matches[1]==='normal'){
return size * 1.2;
}
value=+matches[2];
switch (matches[3]){
case 'px':
return value;
case '%':
value /=100;
break;
default:
break;
}
return size * value;
},
toPadding: function(value){
var t, r, b, l;
if(helpers_core.isObject(value)){
t=+value.top||0;
r=+value.right||0;
b=+value.bottom||0;
l=+value.left||0;
}else{
t=r = b=l = +value||0;
}
return {
top: t,
right: r,
bottom: b,
left: l,
height: t + b,
width: l + r
};},
_parseFont: function(options){
var globalDefaults=core_defaults.global;
var size=valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);
var font={
family: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),
lineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),
size: size,
style: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),
weight: null,
string: ''
};
font.string=toFontString(font);
return font;
},
resolve: function(inputs, context, index){
var i, ilen, value;
for (i=0, ilen=inputs.length; i < ilen; ++i){
value=inputs[i];
if(value===undefined){
continue;
}
if(context!==undefined&&typeof value==='function'){
value=value(context);
}
if(index!==undefined&&helpers_core.isArray(value)){
value=value[index];
}
if(value!==undefined){
return value;
}}
}};
var helpers$1=helpers_core;
var easing=helpers_easing;
var canvas=helpers_canvas;
var options=helpers_options;
helpers$1.easing=easing;
helpers$1.canvas=canvas;
helpers$1.options=options;
function interpolate(start, view, model, ease){
var keys=Object.keys(model);
var i, ilen, key, actual, origin, target, type, c0, c1;
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
target=model[key];
if(!view.hasOwnProperty(key)){
view[key]=target;
}
actual=view[key];
if(actual===target||key[0]==='_'){
continue;
}
if(!start.hasOwnProperty(key)){
start[key]=actual;
}
origin=start[key];
type=typeof target;
if(type===typeof origin){
if(type==='string'){
c0=chartjsColor(origin);
if(c0.valid){
c1=chartjsColor(target);
if(c1.valid){
view[key]=c1.mix(c0, ease).rgbString();
continue;
}}
}else if(helpers$1.isFinite(origin)&&helpers$1.isFinite(target)){
view[key]=origin + (target - origin) * ease;
continue;
}}
view[key]=target;
}}
var Element=function(configuration){
helpers$1.extend(this, configuration);
this.initialize.apply(this, arguments);
};
helpers$1.extend(Element.prototype, {
initialize: function(){
this.hidden=false;
},
pivot: function(){
var me=this;
if(!me._view){
me._view=helpers$1.clone(me._model);
}
me._start={};
return me;
},
transition: function(ease){
var me=this;
var model=me._model;
var start=me._start;
var view=me._view;
if(!model||ease===1){
me._view=model;
me._start=null;
return me;
}
if(!view){
view=me._view={};}
if(!start){
start=me._start={};}
interpolate(start, view, model, ease);
return me;
},
tooltipPosition: function(){
return {
x: this._model.x,
y: this._model.y
};},
hasValue: function(){
return helpers$1.isNumber(this._model.x)&&helpers$1.isNumber(this._model.y);
}});
Element.extend=helpers$1.inherits;
var core_element=Element;
var exports$2=core_element.extend({
chart: null,
currentStep: 0,
numSteps: 60,
easing: '',
render: null,
onAnimationProgress: null,
onAnimationComplete: null,
});
var core_animation=exports$2;
Object.defineProperty(exports$2.prototype, 'animationObject', {
get: function(){
return this;
}});
Object.defineProperty(exports$2.prototype, 'chartInstance', {
get: function(){
return this.chart;
},
set: function(value){
this.chart=value;
}});
core_defaults._set('global', {
animation: {
duration: 1000,
easing: 'easeOutQuart',
onProgress: helpers$1.noop,
onComplete: helpers$1.noop
}});
var core_animations={
animations: [],
request: null,
addAnimation: function(chart, animation, duration, lazy){
var animations=this.animations;
var i, ilen;
animation.chart=chart;
animation.startTime=Date.now();
animation.duration=duration;
if(!lazy){
chart.animating=true;
}
for (i=0, ilen=animations.length; i < ilen; ++i){
if(animations[i].chart===chart){
animations[i]=animation;
return;
}}
animations.push(animation);
if(animations.length===1){
this.requestAnimationFrame();
}},
cancelAnimation: function(chart){
var index=helpers$1.findIndex(this.animations, function(animation){
return animation.chart===chart;
});
if(index!==-1){
this.animations.splice(index, 1);
chart.animating=false;
}},
requestAnimationFrame: function(){
var me=this;
if(me.request===null){
me.request=helpers$1.requestAnimFrame.call(window, function(){
me.request=null;
me.startDigest();
});
}},
startDigest: function(){
var me=this;
me.advance();
if(me.animations.length > 0){
me.requestAnimationFrame();
}},
advance: function(){
var animations=this.animations;
var animation, chart, numSteps, nextStep;
var i=0;
while (i < animations.length){
animation=animations[i];
chart=animation.chart;
numSteps=animation.numSteps;
nextStep=Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;
animation.currentStep=Math.min(nextStep, numSteps);
helpers$1.callback(animation.render, [chart, animation], chart);
helpers$1.callback(animation.onAnimationProgress, [animation], chart);
if(animation.currentStep >=numSteps){
helpers$1.callback(animation.onAnimationComplete, [animation], chart);
chart.animating=false;
animations.splice(i, 1);
}else{
++i;
}}
}};
var resolve=helpers$1.options.resolve;
var arrayEvents=['push', 'pop', 'shift', 'splice', 'unshift'];
function listenArrayEvents(array, listener){
if(array._chartjs){
array._chartjs.listeners.push(listener);
return;
}
Object.defineProperty(array, '_chartjs', {
configurable: true,
enumerable: false,
value: {
listeners: [listener]
}});
arrayEvents.forEach(function(key){
var method='onData' + key.charAt(0).toUpperCase() + key.slice(1);
var base=array[key];
Object.defineProperty(array, key, {
configurable: true,
enumerable: false,
value: function(){
var args=Array.prototype.slice.call(arguments);
var res=base.apply(this, args);
helpers$1.each(array._chartjs.listeners, function(object){
if(typeof object[method]==='function'){
object[method].apply(object, args);
}});
return res;
}});
});
}
function unlistenArrayEvents(array, listener){
var stub=array._chartjs;
if(!stub){
return;
}
var listeners=stub.listeners;
var index=listeners.indexOf(listener);
if(index!==-1){
listeners.splice(index, 1);
}
if(listeners.length > 0){
return;
}
arrayEvents.forEach(function(key){
delete array[key];
});
delete array._chartjs;
}
var DatasetController=function(chart, datasetIndex){
this.initialize(chart, datasetIndex);
};
helpers$1.extend(DatasetController.prototype, {
datasetElementType: null,
dataElementType: null,
initialize: function(chart, datasetIndex){
var me=this;
me.chart=chart;
me.index=datasetIndex;
me.linkScales();
me.addElements();
},
updateIndex: function(datasetIndex){
this.index=datasetIndex;
},
linkScales: function(){
var me=this;
var meta=me.getMeta();
var dataset=me.getDataset();
if(meta.xAxisID===null||!(meta.xAxisID in me.chart.scales)){
meta.xAxisID=dataset.xAxisID||me.chart.options.scales.xAxes[0].id;
}
if(meta.yAxisID===null||!(meta.yAxisID in me.chart.scales)){
meta.yAxisID=dataset.yAxisID||me.chart.options.scales.yAxes[0].id;
}},
getDataset: function(){
return this.chart.data.datasets[this.index];
},
getMeta: function(){
return this.chart.getDatasetMeta(this.index);
},
getScaleForId: function(scaleID){
return this.chart.scales[scaleID];
},
_getValueScaleId: function(){
return this.getMeta().yAxisID;
},
_getIndexScaleId: function(){
return this.getMeta().xAxisID;
},
_getValueScale: function(){
return this.getScaleForId(this._getValueScaleId());
},
_getIndexScale: function(){
return this.getScaleForId(this._getIndexScaleId());
},
reset: function(){
this.update(true);
},
destroy: function(){
if(this._data){
unlistenArrayEvents(this._data, this);
}},
createMetaDataset: function(){
var me=this;
var type=me.datasetElementType;
return type&&new type({
_chart: me.chart,
_datasetIndex: me.index
});
},
createMetaData: function(index){
var me=this;
var type=me.dataElementType;
return type&&new type({
_chart: me.chart,
_datasetIndex: me.index,
_index: index
});
},
addElements: function(){
var me=this;
var meta=me.getMeta();
var data=me.getDataset().data||[];
var metaData=meta.data;
var i, ilen;
for (i=0, ilen=data.length; i < ilen; ++i){
metaData[i]=metaData[i]||me.createMetaData(i);
}
meta.dataset=meta.dataset||me.createMetaDataset();
},
addElementAndReset: function(index){
var element=this.createMetaData(index);
this.getMeta().data.splice(index, 0, element);
this.updateElement(element, index, true);
},
buildOrUpdateElements: function(){
var me=this;
var dataset=me.getDataset();
var data=dataset.data||(dataset.data=[]);
if(me._data!==data){
if(me._data){
unlistenArrayEvents(me._data, me);
}
if(data&&Object.isExtensible(data)){
listenArrayEvents(data, me);
}
me._data=data;
}
me.resyncElements();
},
update: helpers$1.noop,
transition: function(easingValue){
var meta=this.getMeta();
var elements=meta.data||[];
var ilen=elements.length;
var i=0;
for (; i < ilen; ++i){
elements[i].transition(easingValue);
}
if(meta.dataset){
meta.dataset.transition(easingValue);
}},
draw: function(){
var meta=this.getMeta();
var elements=meta.data||[];
var ilen=elements.length;
var i=0;
if(meta.dataset){
meta.dataset.draw();
}
for (; i < ilen; ++i){
elements[i].draw();
}},
removeHoverStyle: function(element){
helpers$1.merge(element._model, element.$previousStyle||{});
delete element.$previousStyle;
},
setHoverStyle: function(element){
var dataset=this.chart.data.datasets[element._datasetIndex];
var index=element._index;
var custom=element.custom||{};
var model=element._model;
var getHoverColor=helpers$1.getHoverColor;
element.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth
};
model.backgroundColor=resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);
model.borderColor=resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);
model.borderWidth=resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);
},
resyncElements: function(){
var me=this;
var meta=me.getMeta();
var data=me.getDataset().data;
var numMeta=meta.data.length;
var numData=data.length;
if(numData < numMeta){
meta.data.splice(numData, numMeta - numData);
}else if(numData > numMeta){
me.insertElements(numMeta, numData - numMeta);
}},
insertElements: function(start, count){
for (var i=0; i < count; ++i){
this.addElementAndReset(start + i);
}},
onDataPush: function(){
var count=arguments.length;
this.insertElements(this.getDataset().data.length - count, count);
},
onDataPop: function(){
this.getMeta().data.pop();
},
onDataShift: function(){
this.getMeta().data.shift();
},
onDataSplice: function(start, count){
this.getMeta().data.splice(start, count);
this.insertElements(start, arguments.length - 2);
},
onDataUnshift: function(){
this.insertElements(0, arguments.length);
}});
DatasetController.extend=helpers$1.inherits;
var core_datasetController=DatasetController;
core_defaults._set('global', {
elements: {
arc: {
backgroundColor: core_defaults.global.defaultColor,
borderColor: '#fff',
borderWidth: 2,
borderAlign: 'center'
}}
});
var element_arc=core_element.extend({
inLabelRange: function(mouseX){
var vm=this._view;
if(vm){
return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));
}
return false;
},
inRange: function(chartX, chartY){
var vm=this._view;
if(vm){
var pointRelativePosition=helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});
var	angle=pointRelativePosition.angle;
var distance=pointRelativePosition.distance;
var startAngle=vm.startAngle;
var endAngle=vm.endAngle;
while (endAngle < startAngle){
endAngle +=2.0 * Math.PI;
}
while (angle > endAngle){
angle -=2.0 * Math.PI;
}
while (angle < startAngle){
angle +=2.0 * Math.PI;
}
var betweenAngles=(angle >=startAngle&&angle <=endAngle);
var withinRadius=(distance >=vm.innerRadius&&distance <=vm.outerRadius);
return (betweenAngles&&withinRadius);
}
return false;
},
getCenterPoint: function(){
var vm=this._view;
var halfAngle=(vm.startAngle + vm.endAngle) / 2;
var halfRadius=(vm.innerRadius + vm.outerRadius) / 2;
return {
x: vm.x + Math.cos(halfAngle) * halfRadius,
y: vm.y + Math.sin(halfAngle) * halfRadius
};},
getArea: function(){
var vm=this._view;
return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));
},
tooltipPosition: function(){
var vm=this._view;
var centreAngle=vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);
var rangeFromCentre=(vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;
return {
x: vm.x + (Math.cos(centreAngle) * rangeFromCentre),
y: vm.y + (Math.sin(centreAngle) * rangeFromCentre)
};},
draw: function(){
var ctx=this._chart.ctx;
var vm=this._view;
var sA=vm.startAngle;
var eA=vm.endAngle;
var pixelMargin=(vm.borderAlign==='inner') ? 0.33:0;
var angleMargin;
ctx.save();
ctx.beginPath();
ctx.arc(vm.x, vm.y, Math.max(vm.outerRadius - pixelMargin, 0), sA, eA);
ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);
ctx.closePath();
ctx.fillStyle=vm.backgroundColor;
ctx.fill();
if(vm.borderWidth){
if(vm.borderAlign==='inner'){
ctx.beginPath();
angleMargin=pixelMargin / vm.outerRadius;
ctx.arc(vm.x, vm.y, vm.outerRadius, sA - angleMargin, eA + angleMargin);
if(vm.innerRadius > pixelMargin){
angleMargin=pixelMargin / vm.innerRadius;
ctx.arc(vm.x, vm.y, vm.innerRadius - pixelMargin, eA + angleMargin, sA - angleMargin, true);
}else{
ctx.arc(vm.x, vm.y, pixelMargin, eA + Math.PI / 2, sA - Math.PI / 2);
}
ctx.closePath();
ctx.clip();
ctx.beginPath();
ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);
ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);
ctx.closePath();
ctx.lineWidth=vm.borderWidth * 2;
ctx.lineJoin='round';
}else{
ctx.lineWidth=vm.borderWidth;
ctx.lineJoin='bevel';
}
ctx.strokeStyle=vm.borderColor;
ctx.stroke();
}
ctx.restore();
}});
var valueOrDefault$1=helpers$1.valueOrDefault;
var defaultColor=core_defaults.global.defaultColor;
core_defaults._set('global', {
elements: {
line: {
tension: 0.4,
backgroundColor: defaultColor,
borderWidth: 3,
borderColor: defaultColor,
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
capBezierPoints: true,
fill: true,
}}
});
var element_line=core_element.extend({
draw: function(){
var me=this;
var vm=me._view;
var ctx=me._chart.ctx;
var spanGaps=vm.spanGaps;
var points=me._children.slice();
var globalDefaults=core_defaults.global;
var globalOptionLineElements=globalDefaults.elements.line;
var lastDrawnIndex=-1;
var index, current, previous, currentVM;
if(me._loop&&points.length){
points.push(points[0]);
}
ctx.save();
ctx.lineCap=vm.borderCapStyle||globalOptionLineElements.borderCapStyle;
if(ctx.setLineDash){
ctx.setLineDash(vm.borderDash||globalOptionLineElements.borderDash);
}
ctx.lineDashOffset=valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);
ctx.lineJoin=vm.borderJoinStyle||globalOptionLineElements.borderJoinStyle;
ctx.lineWidth=valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);
ctx.strokeStyle=vm.borderColor||globalDefaults.defaultColor;
ctx.beginPath();
lastDrawnIndex=-1;
for (index=0; index < points.length; ++index){
current=points[index];
previous=helpers$1.previousItem(points, index);
currentVM=current._view;
if(index===0){
if(!currentVM.skip){
ctx.moveTo(currentVM.x, currentVM.y);
lastDrawnIndex=index;
}}else{
previous=lastDrawnIndex===-1 ? previous:points[lastDrawnIndex];
if(!currentVM.skip){
if((lastDrawnIndex!==(index - 1)&&!spanGaps)||lastDrawnIndex===-1){
ctx.moveTo(currentVM.x, currentVM.y);
}else{
helpers$1.canvas.lineTo(ctx, previous._view, current._view);
}
lastDrawnIndex=index;
}}
}
ctx.stroke();
ctx.restore();
}});
var valueOrDefault$2=helpers$1.valueOrDefault;
var defaultColor$1=core_defaults.global.defaultColor;
core_defaults._set('global', {
elements: {
point: {
radius: 3,
pointStyle: 'circle',
backgroundColor: defaultColor$1,
borderColor: defaultColor$1,
borderWidth: 1,
hitRadius: 1,
hoverRadius: 4,
hoverBorderWidth: 1
}}
});
function xRange(mouseX){
var vm=this._view;
return vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius):false;
}
function yRange(mouseY){
var vm=this._view;
return vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius):false;
}
var element_point=core_element.extend({
inRange: function(mouseX, mouseY){
var vm=this._view;
return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)):false;
},
inLabelRange: xRange,
inXRange: xRange,
inYRange: yRange,
getCenterPoint: function(){
var vm=this._view;
return {
x: vm.x,
y: vm.y
};},
getArea: function(){
return Math.PI * Math.pow(this._view.radius, 2);
},
tooltipPosition: function(){
var vm=this._view;
return {
x: vm.x,
y: vm.y,
padding: vm.radius + vm.borderWidth
};},
draw: function(chartArea){
var vm=this._view;
var ctx=this._chart.ctx;
var pointStyle=vm.pointStyle;
var rotation=vm.rotation;
var radius=vm.radius;
var x=vm.x;
var y=vm.y;
var globalDefaults=core_defaults.global;
var defaultColor=globalDefaults.defaultColor;
if(vm.skip){
return;
}
if(chartArea===undefined||helpers$1.canvas._isPointInArea(vm, chartArea)){
ctx.strokeStyle=vm.borderColor||defaultColor;
ctx.lineWidth=valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);
ctx.fillStyle=vm.backgroundColor||defaultColor;
helpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);
}}
});
var defaultColor$2=core_defaults.global.defaultColor;
core_defaults._set('global', {
elements: {
rectangle: {
backgroundColor: defaultColor$2,
borderColor: defaultColor$2,
borderSkipped: 'bottom',
borderWidth: 0
}}
});
function isVertical(vm){
return vm&&vm.width!==undefined;
}
function getBarBounds(vm){
var x1, x2, y1, y2, half;
if(isVertical(vm)){
half=vm.width / 2;
x1=vm.x - half;
x2=vm.x + half;
y1=Math.min(vm.y, vm.base);
y2=Math.max(vm.y, vm.base);
}else{
half=vm.height / 2;
x1=Math.min(vm.x, vm.base);
x2=Math.max(vm.x, vm.base);
y1=vm.y - half;
y2=vm.y + half;
}
return {
left: x1,
top: y1,
right: x2,
bottom: y2
};}
function swap(orig, v1, v2){
return orig===v1 ? v2:orig===v2 ? v1:orig;
}
function parseBorderSkipped(vm){
var edge=vm.borderSkipped;
var res={};
if(!edge){
return res;
}
if(vm.horizontal){
if(vm.base > vm.x){
edge=swap(edge, 'left', 'right');
}}else if(vm.base < vm.y){
edge=swap(edge, 'bottom', 'top');
}
res[edge]=true;
return res;
}
function parseBorderWidth(vm, maxW, maxH){
var value=vm.borderWidth;
var skip=parseBorderSkipped(vm);
var t, r, b, l;
if(helpers$1.isObject(value)){
t=+value.top||0;
r=+value.right||0;
b=+value.bottom||0;
l=+value.left||0;
}else{
t=r = b=l = +value||0;
}
return {
t: skip.top||(t < 0) ? 0:t > maxH ? maxH:t,
r: skip.right||(r < 0) ? 0:r > maxW ? maxW:r,
b: skip.bottom||(b < 0) ? 0:b > maxH ? maxH:b,
l: skip.left||(l < 0) ? 0:l > maxW ? maxW:l
};}
function boundingRects(vm){
var bounds=getBarBounds(vm);
var width=bounds.right - bounds.left;
var height=bounds.bottom - bounds.top;
var border=parseBorderWidth(vm, width / 2, height / 2);
return {
outer: {
x: bounds.left,
y: bounds.top,
w: width,
h: height
},
inner: {
x: bounds.left + border.l,
y: bounds.top + border.t,
w: width - border.l - border.r,
h: height - border.t - border.b
}};}
function inRange(vm, x, y){
var skipX=x===null;
var skipY=y===null;
var bounds = !vm||(skipX&&skipY) ? false:getBarBounds(vm);
return bounds
&& (skipX||x >=bounds.left&&x <=bounds.right)
&& (skipY||y >=bounds.top&&y <=bounds.bottom);
}
var element_rectangle=core_element.extend({
draw: function(){
var ctx=this._chart.ctx;
var vm=this._view;
var rects=boundingRects(vm);
var outer=rects.outer;
var inner=rects.inner;
ctx.fillStyle=vm.backgroundColor;
ctx.fillRect(outer.x, outer.y, outer.w, outer.h);
if(outer.w===inner.w&&outer.h===inner.h){
return;
}
ctx.save();
ctx.beginPath();
ctx.rect(outer.x, outer.y, outer.w, outer.h);
ctx.clip();
ctx.fillStyle=vm.borderColor;
ctx.rect(inner.x, inner.y, inner.w, inner.h);
ctx.fill('evenodd');
ctx.restore();
},
height: function(){
var vm=this._view;
return vm.base - vm.y;
},
inRange: function(mouseX, mouseY){
return inRange(this._view, mouseX, mouseY);
},
inLabelRange: function(mouseX, mouseY){
var vm=this._view;
return isVertical(vm)
? inRange(vm, mouseX, null)
: inRange(vm, null, mouseY);
},
inXRange: function(mouseX){
return inRange(this._view, mouseX, null);
},
inYRange: function(mouseY){
return inRange(this._view, null, mouseY);
},
getCenterPoint: function(){
var vm=this._view;
var x, y;
if(isVertical(vm)){
x=vm.x;
y=(vm.y + vm.base) / 2;
}else{
x=(vm.x + vm.base) / 2;
y=vm.y;
}
return {x: x, y: y};},
getArea: function(){
var vm=this._view;
return isVertical(vm)
? vm.width * Math.abs(vm.y - vm.base)
: vm.height * Math.abs(vm.x - vm.base);
},
tooltipPosition: function(){
var vm=this._view;
return {
x: vm.x,
y: vm.y
};}});
var elements={};
var Arc=element_arc;
var Line=element_line;
var Point=element_point;
var Rectangle=element_rectangle;
elements.Arc=Arc;
elements.Line=Line;
elements.Point=Point;
elements.Rectangle=Rectangle;
var resolve$1=helpers$1.options.resolve;
core_defaults._set('bar', {
hover: {
mode: 'label'
},
scales: {
xAxes: [{
type: 'category',
categoryPercentage: 0.8,
barPercentage: 0.9,
offset: true,
gridLines: {
offsetGridLines: true
}}],
yAxes: [{
type: 'linear'
}]
}});
function computeMinSampleSize(scale, pixels){
var min=scale.isHorizontal() ? scale.width:scale.height;
var ticks=scale.getTicks();
var prev, curr, i, ilen;
for (i=1, ilen=pixels.length; i < ilen; ++i){
min=Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));
}
for (i=0, ilen=ticks.length; i < ilen; ++i){
curr=scale.getPixelForTick(i);
min=i > 0 ? Math.min(min, curr - prev):min;
prev=curr;
}
return min;
}
function computeFitCategoryTraits(index, ruler, options){
var thickness=options.barThickness;
var count=ruler.stackCount;
var curr=ruler.pixels[index];
var size, ratio;
if(helpers$1.isNullOrUndef(thickness)){
size=ruler.min * options.categoryPercentage;
ratio=options.barPercentage;
}else{
size=thickness * count;
ratio=1;
}
return {
chunk: size / count,
ratio: ratio,
start: curr - (size / 2)
};}
function computeFlexCategoryTraits(index, ruler, options){
var pixels=ruler.pixels;
var curr=pixels[index];
var prev=index > 0 ? pixels[index - 1]:null;
var next=index < pixels.length - 1 ? pixels[index + 1]:null;
var percent=options.categoryPercentage;
var start, size;
if(prev===null){
prev=curr - (next===null ? ruler.end - ruler.start:next - curr);
}
if(next===null){
next=curr + curr - prev;
}
start=curr - (curr - Math.min(prev, next)) / 2 * percent;
size=Math.abs(next - prev) / 2 * percent;
return {
chunk: size / ruler.stackCount,
ratio: options.barPercentage,
start: start
};}
var controller_bar=core_datasetController.extend({
dataElementType: elements.Rectangle,
initialize: function(){
var me=this;
var meta;
core_datasetController.prototype.initialize.apply(me, arguments);
meta=me.getMeta();
meta.stack=me.getDataset().stack;
meta.bar=true;
},
update: function(reset){
var me=this;
var rects=me.getMeta().data;
var i, ilen;
me._ruler=me.getRuler();
for (i=0, ilen=rects.length; i < ilen; ++i){
me.updateElement(rects[i], i, reset);
}},
updateElement: function(rectangle, index, reset){
var me=this;
var meta=me.getMeta();
var dataset=me.getDataset();
var options=me._resolveElementOptions(rectangle, index);
rectangle._xScale=me.getScaleForId(meta.xAxisID);
rectangle._yScale=me.getScaleForId(meta.yAxisID);
rectangle._datasetIndex=me.index;
rectangle._index=index;
rectangle._model={
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderSkipped: options.borderSkipped,
borderWidth: options.borderWidth,
datasetLabel: dataset.label,
label: me.chart.data.labels[index]
};
me._updateElementGeometry(rectangle, index, reset);
rectangle.pivot();
},
_updateElementGeometry: function(rectangle, index, reset){
var me=this;
var model=rectangle._model;
var vscale=me._getValueScale();
var base=vscale.getBasePixel();
var horizontal=vscale.isHorizontal();
var ruler=me._ruler||me.getRuler();
var vpixels=me.calculateBarValuePixels(me.index, index);
var ipixels=me.calculateBarIndexPixels(me.index, index, ruler);
model.horizontal=horizontal;
model.base=reset ? base:vpixels.base;
model.x=horizontal ? reset ? base:vpixels.head:ipixels.center;
model.y=horizontal ? ipixels.center:reset ? base:vpixels.head;
model.height=horizontal ? ipixels.size:undefined;
model.width=horizontal ? undefined:ipixels.size;
},
_getStacks: function(last){
var me=this;
var chart=me.chart;
var scale=me._getIndexScale();
var stacked=scale.options.stacked;
var ilen=last===undefined ? chart.data.datasets.length:last + 1;
var stacks=[];
var i, meta;
for (i=0; i < ilen; ++i){
meta=chart.getDatasetMeta(i);
if(meta.bar&&chart.isDatasetVisible(i) &&
(stacked===false ||
(stacked===true&&stacks.indexOf(meta.stack)===-1) ||
(stacked===undefined&&(meta.stack===undefined||stacks.indexOf(meta.stack)===-1)))){
stacks.push(meta.stack);
}}
return stacks;
},
getStackCount: function(){
return this._getStacks().length;
},
getStackIndex: function(datasetIndex, name){
var stacks=this._getStacks(datasetIndex);
var index=(name!==undefined)
? stacks.indexOf(name)
: -1;
return (index===-1)
? stacks.length - 1
: index;
},
getRuler: function(){
var me=this;
var scale=me._getIndexScale();
var stackCount=me.getStackCount();
var datasetIndex=me.index;
var isHorizontal=scale.isHorizontal();
var start=isHorizontal ? scale.left:scale.top;
var end=start + (isHorizontal ? scale.width:scale.height);
var pixels=[];
var i, ilen, min;
for (i=0, ilen=me.getMeta().data.length; i < ilen; ++i){
pixels.push(scale.getPixelForValue(null, i, datasetIndex));
}
min=helpers$1.isNullOrUndef(scale.options.barThickness)
? computeMinSampleSize(scale, pixels)
: -1;
return {
min: min,
pixels: pixels,
start: start,
end: end,
stackCount: stackCount,
scale: scale
};},
calculateBarValuePixels: function(datasetIndex, index){
var me=this;
var chart=me.chart;
var meta=me.getMeta();
var scale=me._getValueScale();
var isHorizontal=scale.isHorizontal();
var datasets=chart.data.datasets;
var value=+scale.getRightValue(datasets[datasetIndex].data[index]);
var minBarLength=scale.options.minBarLength;
var stacked=scale.options.stacked;
var stack=meta.stack;
var start=0;
var i, imeta, ivalue, base, head, size;
if(stacked||(stacked===undefined&&stack!==undefined)){
for (i=0; i < datasetIndex; ++i){
imeta=chart.getDatasetMeta(i);
if(imeta.bar &&
imeta.stack===stack &&
imeta.controller._getValueScaleId()===scale.id &&
chart.isDatasetVisible(i)){
ivalue=+scale.getRightValue(datasets[i].data[index]);
if((value < 0&&ivalue < 0)||(value >=0&&ivalue > 0)){
start +=ivalue;
}}
}}
base=scale.getPixelForValue(start);
head=scale.getPixelForValue(start + value);
size=head - base;
if(minBarLength!==undefined&&Math.abs(size) < minBarLength){
size=minBarLength;
if(value >=0&&!isHorizontal||value < 0&&isHorizontal){
head=base - minBarLength;
}else{
head=base + minBarLength;
}}
return {
size: size,
base: base,
head: head,
center: head + size / 2
};},
calculateBarIndexPixels: function(datasetIndex, index, ruler){
var me=this;
var options=ruler.scale.options;
var range=options.barThickness==='flex'
? computeFlexCategoryTraits(index, ruler, options)
: computeFitCategoryTraits(index, ruler, options);
var stackIndex=me.getStackIndex(datasetIndex, me.getMeta().stack);
var center=range.start + (range.chunk * stackIndex) + (range.chunk / 2);
var size=Math.min(helpers$1.valueOrDefault(options.maxBarThickness, Infinity),
range.chunk * range.ratio);
return {
base: center - size / 2,
head: center + size / 2,
center: center,
size: size
};},
draw: function(){
var me=this;
var chart=me.chart;
var scale=me._getValueScale();
var rects=me.getMeta().data;
var dataset=me.getDataset();
var ilen=rects.length;
var i=0;
helpers$1.canvas.clipArea(chart.ctx, chart.chartArea);
for (; i < ilen; ++i){
if(!isNaN(scale.getRightValue(dataset.data[i]))){
rects[i].draw();
}}
helpers$1.canvas.unclipArea(chart.ctx);
},
_resolveElementOptions: function(rectangle, index){
var me=this;
var chart=me.chart;
var datasets=chart.data.datasets;
var dataset=datasets[me.index];
var custom=rectangle.custom||{};
var options=chart.options.elements.rectangle;
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var keys=[
'backgroundColor',
'borderColor',
'borderSkipped',
'borderWidth'
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$1([
custom[key],
dataset[key],
options[key]
], context, index);
}
return values;
}});
var valueOrDefault$3=helpers$1.valueOrDefault;
var resolve$2=helpers$1.options.resolve;
core_defaults._set('bubble', {
hover: {
mode: 'single'
},
scales: {
xAxes: [{
type: 'linear',
position: 'bottom',
id: 'x-axis-0'
}],
yAxes: [{
type: 'linear',
position: 'left',
id: 'y-axis-0'
}]
},
tooltips: {
callbacks: {
title: function(){
return '';
},
label: function(item, data){
var datasetLabel=data.datasets[item.datasetIndex].label||'';
var dataPoint=data.datasets[item.datasetIndex].data[item.index];
return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';
}}
}});
var controller_bubble=core_datasetController.extend({
dataElementType: elements.Point,
update: function(reset){
var me=this;
var meta=me.getMeta();
var points=meta.data;
helpers$1.each(points, function(point, index){
me.updateElement(point, index, reset);
});
},
updateElement: function(point, index, reset){
var me=this;
var meta=me.getMeta();
var custom=point.custom||{};
var xScale=me.getScaleForId(meta.xAxisID);
var yScale=me.getScaleForId(meta.yAxisID);
var options=me._resolveElementOptions(point, index);
var data=me.getDataset().data[index];
var dsIndex=me.index;
var x=reset ? xScale.getPixelForDecimal(0.5):xScale.getPixelForValue(typeof data==='object' ? data:NaN, index, dsIndex);
var y=reset ? yScale.getBasePixel():yScale.getPixelForValue(data, index, dsIndex);
point._xScale=xScale;
point._yScale=yScale;
point._options=options;
point._datasetIndex=dsIndex;
point._index=index;
point._model={
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderWidth: options.borderWidth,
hitRadius: options.hitRadius,
pointStyle: options.pointStyle,
rotation: options.rotation,
radius: reset ? 0:options.radius,
skip: custom.skip||isNaN(x)||isNaN(y),
x: x,
y: y,
};
point.pivot();
},
setHoverStyle: function(point){
var model=point._model;
var options=point._options;
var getHoverColor=helpers$1.getHoverColor;
point.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth,
radius: model.radius
};
model.backgroundColor=valueOrDefault$3(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
model.borderColor=valueOrDefault$3(options.hoverBorderColor, getHoverColor(options.borderColor));
model.borderWidth=valueOrDefault$3(options.hoverBorderWidth, options.borderWidth);
model.radius=options.radius + options.hoverRadius;
},
_resolveElementOptions: function(point, index){
var me=this;
var chart=me.chart;
var datasets=chart.data.datasets;
var dataset=datasets[me.index];
var custom=point.custom||{};
var options=chart.options.elements.point;
var data=dataset.data[index];
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var keys=[
'backgroundColor',
'borderColor',
'borderWidth',
'hoverBackgroundColor',
'hoverBorderColor',
'hoverBorderWidth',
'hoverRadius',
'hitRadius',
'pointStyle',
'rotation'
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$2([
custom[key],
dataset[key],
options[key]
], context, index);
}
values.radius=resolve$2([
custom.radius,
data ? data.r:undefined,
dataset.radius,
options.radius
], context, index);
return values;
}});
var resolve$3=helpers$1.options.resolve;
var valueOrDefault$4=helpers$1.valueOrDefault;
core_defaults._set('doughnut', {
animation: {
animateRotate: true,
animateScale: false
},
hover: {
mode: 'single'
},
legendCallback: function(chart){
var text=[];
text.push('<ul class="' + chart.id + '-legend">');
var data=chart.data;
var datasets=data.datasets;
var labels=data.labels;
if(datasets.length){
for (var i=0; i < datasets[0].data.length; ++i){
text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>');
if(labels[i]){
text.push(labels[i]);
}
text.push('</li>');
}}
text.push('</ul>');
return text.join('');
},
legend: {
labels: {
generateLabels: function(chart){
var data=chart.data;
if(data.labels.length&&data.datasets.length){
return data.labels.map(function(label, i){
var meta=chart.getDatasetMeta(0);
var ds=data.datasets[0];
var arc=meta.data[i];
var custom=arc&&arc.custom||{};
var arcOpts=chart.options.elements.arc;
var fill=resolve$3([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);
var stroke=resolve$3([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);
var bw=resolve$3([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);
return {
text: label,
fillStyle: fill,
strokeStyle: stroke,
lineWidth: bw,
hidden: isNaN(ds.data[i])||meta.data[i].hidden,
index: i
};});
}
return [];
}},
onClick: function(e, legendItem){
var index=legendItem.index;
var chart=this.chart;
var i, ilen, meta;
for (i=0, ilen=(chart.data.datasets||[]).length; i < ilen; ++i){
meta=chart.getDatasetMeta(i);
if(meta.data[index]){
meta.data[index].hidden = !meta.data[index].hidden;
}}
chart.update();
}},
cutoutPercentage: 50,
rotation: Math.PI * -0.5,
circumference: Math.PI * 2.0,
tooltips: {
callbacks: {
title: function(){
return '';
},
label: function(tooltipItem, data){
var dataLabel=data.labels[tooltipItem.index];
var value=': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
if(helpers$1.isArray(dataLabel)){
dataLabel=dataLabel.slice();
dataLabel[0] +=value;
}else{
dataLabel +=value;
}
return dataLabel;
}}
}});
var controller_doughnut=core_datasetController.extend({
dataElementType: elements.Arc,
linkScales: helpers$1.noop,
getRingIndex: function(datasetIndex){
var ringIndex=0;
for (var j=0; j < datasetIndex; ++j){
if(this.chart.isDatasetVisible(j)){
++ringIndex;
}}
return ringIndex;
},
update: function(reset){
var me=this;
var chart=me.chart;
var chartArea=chart.chartArea;
var opts=chart.options;
var availableWidth=chartArea.right - chartArea.left;
var availableHeight=chartArea.bottom - chartArea.top;
var minSize=Math.min(availableWidth, availableHeight);
var offset={x: 0, y: 0};
var meta=me.getMeta();
var arcs=meta.data;
var cutoutPercentage=opts.cutoutPercentage;
var circumference=opts.circumference;
var chartWeight=me._getRingWeight(me.index);
var i, ilen;
if(circumference < Math.PI * 2.0){
var startAngle=opts.rotation % (Math.PI * 2.0);
startAngle +=Math.PI * 2.0 * (startAngle >=Math.PI ? -1:startAngle < -Math.PI ? 1:0);
var endAngle=startAngle + circumference;
var start={x: Math.cos(startAngle), y: Math.sin(startAngle)};
var end={x: Math.cos(endAngle), y: Math.sin(endAngle)};
var contains0=(startAngle <=0&&endAngle >=0)||(startAngle <=Math.PI * 2.0&&Math.PI * 2.0 <=endAngle);
var contains90=(startAngle <=Math.PI * 0.5&&Math.PI * 0.5 <=endAngle)||(startAngle <=Math.PI * 2.5&&Math.PI * 2.5 <=endAngle);
var contains180=(startAngle <=-Math.PI&&-Math.PI <=endAngle)||(startAngle <=Math.PI&&Math.PI <=endAngle);
var contains270=(startAngle <=-Math.PI * 0.5&&-Math.PI * 0.5 <=endAngle)||(startAngle <=Math.PI * 1.5&&Math.PI * 1.5 <=endAngle);
var cutout=cutoutPercentage / 100.0;
var min={x: contains180 ? -1:Math.min(start.x * (start.x < 0 ? 1:cutout), end.x * (end.x < 0 ? 1:cutout)), y: contains270 ? -1:Math.min(start.y * (start.y < 0 ? 1:cutout), end.y * (end.y < 0 ? 1:cutout))};
var max={x: contains0 ? 1:Math.max(start.x * (start.x > 0 ? 1:cutout), end.x * (end.x > 0 ? 1:cutout)), y: contains90 ? 1:Math.max(start.y * (start.y > 0 ? 1:cutout), end.y * (end.y > 0 ? 1:cutout))};
var size={width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};
minSize=Math.min(availableWidth / size.width, availableHeight / size.height);
offset={x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};}
for (i=0, ilen=arcs.length; i < ilen; ++i){
arcs[i]._options=me._resolveElementOptions(arcs[i], i);
}
chart.borderWidth=me.getMaxBorderWidth();
chart.outerRadius=Math.max((minSize - chart.borderWidth) / 2, 0);
chart.innerRadius=Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage):0, 0);
chart.radiusLength=(chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal()||1);
chart.offsetX=offset.x * chart.outerRadius;
chart.offsetY=offset.y * chart.outerRadius;
meta.total=me.calculateTotal();
me.outerRadius=chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);
me.innerRadius=Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);
for (i=0, ilen=arcs.length; i < ilen; ++i){
me.updateElement(arcs[i], i, reset);
}},
updateElement: function(arc, index, reset){
var me=this;
var chart=me.chart;
var chartArea=chart.chartArea;
var opts=chart.options;
var animationOpts=opts.animation;
var centerX=(chartArea.left + chartArea.right) / 2;
var centerY=(chartArea.top + chartArea.bottom) / 2;
var startAngle=opts.rotation;
var endAngle=opts.rotation;
var dataset=me.getDataset();
var circumference=reset&&animationOpts.animateRotate ? 0:arc.hidden ? 0:me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));
var innerRadius=reset&&animationOpts.animateScale ? 0:me.innerRadius;
var outerRadius=reset&&animationOpts.animateScale ? 0:me.outerRadius;
var options=arc._options||{};
helpers$1.extend(arc, {
_datasetIndex: me.index,
_index: index,
_model: {
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderWidth: options.borderWidth,
borderAlign: options.borderAlign,
x: centerX + chart.offsetX,
y: centerY + chart.offsetY,
startAngle: startAngle,
endAngle: endAngle,
circumference: circumference,
outerRadius: outerRadius,
innerRadius: innerRadius,
label: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])
}});
var model=arc._model;
if(!reset||!animationOpts.animateRotate){
if(index===0){
model.startAngle=opts.rotation;
}else{
model.startAngle=me.getMeta().data[index - 1]._model.endAngle;
}
model.endAngle=model.startAngle + model.circumference;
}
arc.pivot();
},
calculateTotal: function(){
var dataset=this.getDataset();
var meta=this.getMeta();
var total=0;
var value;
helpers$1.each(meta.data, function(element, index){
value=dataset.data[index];
if(!isNaN(value)&&!element.hidden){
total +=Math.abs(value);
}});
return total;
},
calculateCircumference: function(value){
var total=this.getMeta().total;
if(total > 0&&!isNaN(value)){
return (Math.PI * 2.0) * (Math.abs(value) / total);
}
return 0;
},
getMaxBorderWidth: function(arcs){
var me=this;
var max=0;
var chart=me.chart;
var i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;
if(!arcs){
for (i=0, ilen=chart.data.datasets.length; i < ilen; ++i){
if(chart.isDatasetVisible(i)){
meta=chart.getDatasetMeta(i);
arcs=meta.data;
if(i!==me.index){
controller=meta.controller;
}
break;
}}
}
if(!arcs){
return 0;
}
for (i=0, ilen=arcs.length; i < ilen; ++i){
arc=arcs[i];
options=controller ? controller._resolveElementOptions(arc, i):arc._options;
if(options.borderAlign!=='inner'){
borderWidth=options.borderWidth;
hoverWidth=options.hoverBorderWidth;
max=borderWidth > max ? borderWidth:max;
max=hoverWidth > max ? hoverWidth:max;
}}
return max;
},
setHoverStyle: function(arc){
var model=arc._model;
var options=arc._options;
var getHoverColor=helpers$1.getHoverColor;
arc.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth,
};
model.backgroundColor=valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
model.borderColor=valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));
model.borderWidth=valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);
},
_resolveElementOptions: function(arc, index){
var me=this;
var chart=me.chart;
var dataset=me.getDataset();
var custom=arc.custom||{};
var options=chart.options.elements.arc;
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var keys=[
'backgroundColor',
'borderColor',
'borderWidth',
'borderAlign',
'hoverBackgroundColor',
'hoverBorderColor',
'hoverBorderWidth',
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$3([
custom[key],
dataset[key],
options[key]
], context, index);
}
return values;
},
_getRingWeightOffset: function(datasetIndex){
var ringWeightOffset=0;
for (var i=0; i < datasetIndex; ++i){
if(this.chart.isDatasetVisible(i)){
ringWeightOffset +=this._getRingWeight(i);
}}
return ringWeightOffset;
},
_getRingWeight: function(dataSetIndex){
return Math.max(valueOrDefault$4(this.chart.data.datasets[dataSetIndex].weight, 1), 0);
},
_getVisibleDatasetWeightTotal: function(){
return this._getRingWeightOffset(this.chart.data.datasets.length);
}});
core_defaults._set('horizontalBar', {
hover: {
mode: 'index',
axis: 'y'
},
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}],
yAxes: [{
type: 'category',
position: 'left',
categoryPercentage: 0.8,
barPercentage: 0.9,
offset: true,
gridLines: {
offsetGridLines: true
}}]
},
elements: {
rectangle: {
borderSkipped: 'left'
}},
tooltips: {
mode: 'index',
axis: 'y'
}});
var controller_horizontalBar=controller_bar.extend({
_getValueScaleId: function(){
return this.getMeta().xAxisID;
},
_getIndexScaleId: function(){
return this.getMeta().yAxisID;
}});
var valueOrDefault$5=helpers$1.valueOrDefault;
var resolve$4=helpers$1.options.resolve;
var isPointInArea=helpers$1.canvas._isPointInArea;
core_defaults._set('line', {
showLines: true,
spanGaps: false,
hover: {
mode: 'label'
},
scales: {
xAxes: [{
type: 'category',
id: 'x-axis-0'
}],
yAxes: [{
type: 'linear',
id: 'y-axis-0'
}]
}});
function lineEnabled(dataset, options){
return valueOrDefault$5(dataset.showLine, options.showLines);
}
var controller_line=core_datasetController.extend({
datasetElementType: elements.Line,
dataElementType: elements.Point,
update: function(reset){
var me=this;
var meta=me.getMeta();
var line=meta.dataset;
var points=meta.data||[];
var scale=me.getScaleForId(meta.yAxisID);
var dataset=me.getDataset();
var showLine=lineEnabled(dataset, me.chart.options);
var i, ilen;
if(showLine){
if((dataset.tension!==undefined)&&(dataset.lineTension===undefined)){
dataset.lineTension=dataset.tension;
}
line._scale=scale;
line._datasetIndex=me.index;
line._children=points;
line._model=me._resolveLineOptions(line);
line.pivot();
}
for (i=0, ilen=points.length; i < ilen; ++i){
me.updateElement(points[i], i, reset);
}
if(showLine&&line._model.tension!==0){
me.updateBezierControlPoints();
}
for (i=0, ilen=points.length; i < ilen; ++i){
points[i].pivot();
}},
updateElement: function(point, index, reset){
var me=this;
var meta=me.getMeta();
var custom=point.custom||{};
var dataset=me.getDataset();
var datasetIndex=me.index;
var value=dataset.data[index];
var yScale=me.getScaleForId(meta.yAxisID);
var xScale=me.getScaleForId(meta.xAxisID);
var lineModel=meta.dataset._model;
var x, y;
var options=me._resolvePointOptions(point, index);
x=xScale.getPixelForValue(typeof value==='object' ? value:NaN, index, datasetIndex);
y=reset ? yScale.getBasePixel():me.calculatePointY(value, index, datasetIndex);
point._xScale=xScale;
point._yScale=yScale;
point._options=options;
point._datasetIndex=datasetIndex;
point._index=index;
point._model={
x: x,
y: y,
skip: custom.skip||isNaN(x)||isNaN(y),
radius: options.radius,
pointStyle: options.pointStyle,
rotation: options.rotation,
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderWidth: options.borderWidth,
tension: valueOrDefault$5(custom.tension, lineModel ? lineModel.tension:0),
steppedLine: lineModel ? lineModel.steppedLine:false,
hitRadius: options.hitRadius
};},
_resolvePointOptions: function(element, index){
var me=this;
var chart=me.chart;
var dataset=chart.data.datasets[me.index];
var custom=element.custom||{};
var options=chart.options.elements.point;
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var ELEMENT_OPTIONS={
backgroundColor: 'pointBackgroundColor',
borderColor: 'pointBorderColor',
borderWidth: 'pointBorderWidth',
hitRadius: 'pointHitRadius',
hoverBackgroundColor: 'pointHoverBackgroundColor',
hoverBorderColor: 'pointHoverBorderColor',
hoverBorderWidth: 'pointHoverBorderWidth',
hoverRadius: 'pointHoverRadius',
pointStyle: 'pointStyle',
radius: 'pointRadius',
rotation: 'pointRotation'
};
var keys=Object.keys(ELEMENT_OPTIONS);
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$4([
custom[key],
dataset[ELEMENT_OPTIONS[key]],
dataset[key],
options[key]
], context, index);
}
return values;
},
_resolveLineOptions: function(element){
var me=this;
var chart=me.chart;
var dataset=chart.data.datasets[me.index];
var custom=element.custom||{};
var options=chart.options;
var elementOptions=options.elements.line;
var values={};
var i, ilen, key;
var keys=[
'backgroundColor',
'borderWidth',
'borderColor',
'borderCapStyle',
'borderDash',
'borderDashOffset',
'borderJoinStyle',
'fill',
'cubicInterpolationMode'
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$4([
custom[key],
dataset[key],
elementOptions[key]
]);
}
values.spanGaps=valueOrDefault$5(dataset.spanGaps, options.spanGaps);
values.tension=valueOrDefault$5(dataset.lineTension, elementOptions.tension);
values.steppedLine=resolve$4([custom.steppedLine, dataset.steppedLine, elementOptions.stepped]);
return values;
},
calculatePointY: function(value, index, datasetIndex){
var me=this;
var chart=me.chart;
var meta=me.getMeta();
var yScale=me.getScaleForId(meta.yAxisID);
var sumPos=0;
var sumNeg=0;
var i, ds, dsMeta;
if(yScale.options.stacked){
for (i=0; i < datasetIndex; i++){
ds=chart.data.datasets[i];
dsMeta=chart.getDatasetMeta(i);
if(dsMeta.type==='line'&&dsMeta.yAxisID===yScale.id&&chart.isDatasetVisible(i)){
var stackedRightValue=Number(yScale.getRightValue(ds.data[index]));
if(stackedRightValue < 0){
sumNeg +=stackedRightValue||0;
}else{
sumPos +=stackedRightValue||0;
}}
}
var rightValue=Number(yScale.getRightValue(value));
if(rightValue < 0){
return yScale.getPixelForValue(sumNeg + rightValue);
}
return yScale.getPixelForValue(sumPos + rightValue);
}
return yScale.getPixelForValue(value);
},
updateBezierControlPoints: function(){
var me=this;
var chart=me.chart;
var meta=me.getMeta();
var lineModel=meta.dataset._model;
var area=chart.chartArea;
var points=meta.data||[];
var i, ilen, model, controlPoints;
if(lineModel.spanGaps){
points=points.filter(function(pt){
return !pt._model.skip;
});
}
function capControlPoint(pt, min, max){
return Math.max(Math.min(pt, max), min);
}
if(lineModel.cubicInterpolationMode==='monotone'){
helpers$1.splineCurveMonotone(points);
}else{
for (i=0, ilen=points.length; i < ilen; ++i){
model=points[i]._model;
controlPoints=helpers$1.splineCurve(helpers$1.previousItem(points, i)._model,
model,
helpers$1.nextItem(points, i)._model,
lineModel.tension
);
model.controlPointPreviousX=controlPoints.previous.x;
model.controlPointPreviousY=controlPoints.previous.y;
model.controlPointNextX=controlPoints.next.x;
model.controlPointNextY=controlPoints.next.y;
}}
if(chart.options.elements.line.capBezierPoints){
for (i=0, ilen=points.length; i < ilen; ++i){
model=points[i]._model;
if(isPointInArea(model, area)){
if(i > 0&&isPointInArea(points[i - 1]._model, area)){
model.controlPointPreviousX=capControlPoint(model.controlPointPreviousX, area.left, area.right);
model.controlPointPreviousY=capControlPoint(model.controlPointPreviousY, area.top, area.bottom);
}
if(i < points.length - 1&&isPointInArea(points[i + 1]._model, area)){
model.controlPointNextX=capControlPoint(model.controlPointNextX, area.left, area.right);
model.controlPointNextY=capControlPoint(model.controlPointNextY, area.top, area.bottom);
}}
}}
},
draw: function(){
var me=this;
var chart=me.chart;
var meta=me.getMeta();
var points=meta.data||[];
var area=chart.chartArea;
var ilen=points.length;
var halfBorderWidth;
var i=0;
if(lineEnabled(me.getDataset(), chart.options)){
halfBorderWidth=(meta.dataset._model.borderWidth||0) / 2;
helpers$1.canvas.clipArea(chart.ctx, {
left: area.left,
right: area.right,
top: area.top - halfBorderWidth,
bottom: area.bottom + halfBorderWidth
});
meta.dataset.draw();
helpers$1.canvas.unclipArea(chart.ctx);
}
for (; i < ilen; ++i){
points[i].draw(area);
}},
setHoverStyle: function(point){
var model=point._model;
var options=point._options;
var getHoverColor=helpers$1.getHoverColor;
point.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth,
radius: model.radius
};
model.backgroundColor=valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
model.borderColor=valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));
model.borderWidth=valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);
model.radius=valueOrDefault$5(options.hoverRadius, options.radius);
},
});
var resolve$5=helpers$1.options.resolve;
core_defaults._set('polarArea', {
scale: {
type: 'radialLinear',
angleLines: {
display: false
},
gridLines: {
circular: true
},
pointLabels: {
display: false
},
ticks: {
beginAtZero: true
}},
animation: {
animateRotate: true,
animateScale: true
},
startAngle: -0.5 * Math.PI,
legendCallback: function(chart){
var text=[];
text.push('<ul class="' + chart.id + '-legend">');
var data=chart.data;
var datasets=data.datasets;
var labels=data.labels;
if(datasets.length){
for (var i=0; i < datasets[0].data.length; ++i){
text.push('<li><span style="background-color:' + datasets[0].backgroundColor[i] + '"></span>');
if(labels[i]){
text.push(labels[i]);
}
text.push('</li>');
}}
text.push('</ul>');
return text.join('');
},
legend: {
labels: {
generateLabels: function(chart){
var data=chart.data;
if(data.labels.length&&data.datasets.length){
return data.labels.map(function(label, i){
var meta=chart.getDatasetMeta(0);
var ds=data.datasets[0];
var arc=meta.data[i];
var custom=arc.custom||{};
var arcOpts=chart.options.elements.arc;
var fill=resolve$5([custom.backgroundColor, ds.backgroundColor, arcOpts.backgroundColor], undefined, i);
var stroke=resolve$5([custom.borderColor, ds.borderColor, arcOpts.borderColor], undefined, i);
var bw=resolve$5([custom.borderWidth, ds.borderWidth, arcOpts.borderWidth], undefined, i);
return {
text: label,
fillStyle: fill,
strokeStyle: stroke,
lineWidth: bw,
hidden: isNaN(ds.data[i])||meta.data[i].hidden,
index: i
};});
}
return [];
}},
onClick: function(e, legendItem){
var index=legendItem.index;
var chart=this.chart;
var i, ilen, meta;
for (i=0, ilen=(chart.data.datasets||[]).length; i < ilen; ++i){
meta=chart.getDatasetMeta(i);
meta.data[index].hidden = !meta.data[index].hidden;
}
chart.update();
}},
tooltips: {
callbacks: {
title: function(){
return '';
},
label: function(item, data){
return data.labels[item.index] + ': ' + item.yLabel;
}}
}});
var controller_polarArea=core_datasetController.extend({
dataElementType: elements.Arc,
linkScales: helpers$1.noop,
update: function(reset){
var me=this;
var dataset=me.getDataset();
var meta=me.getMeta();
var start=me.chart.options.startAngle||0;
var starts=me._starts=[];
var angles=me._angles=[];
var arcs=meta.data;
var i, ilen, angle;
me._updateRadius();
meta.count=me.countVisibleElements();
for (i=0, ilen=dataset.data.length; i < ilen; i++){
starts[i]=start;
angle=me._computeAngle(i);
angles[i]=angle;
start +=angle;
}
for (i=0, ilen=arcs.length; i < ilen; ++i){
arcs[i]._options=me._resolveElementOptions(arcs[i], i);
me.updateElement(arcs[i], i, reset);
}},
_updateRadius: function(){
var me=this;
var chart=me.chart;
var chartArea=chart.chartArea;
var opts=chart.options;
var minSize=Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
chart.outerRadius=Math.max(minSize / 2, 0);
chart.innerRadius=Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage):1, 0);
chart.radiusLength=(chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();
me.outerRadius=chart.outerRadius - (chart.radiusLength * me.index);
me.innerRadius=me.outerRadius - chart.radiusLength;
},
updateElement: function(arc, index, reset){
var me=this;
var chart=me.chart;
var dataset=me.getDataset();
var opts=chart.options;
var animationOpts=opts.animation;
var scale=chart.scale;
var labels=chart.data.labels;
var centerX=scale.xCenter;
var centerY=scale.yCenter;
var datasetStartAngle=opts.startAngle;
var distance=arc.hidden ? 0:scale.getDistanceFromCenterForValue(dataset.data[index]);
var startAngle=me._starts[index];
var endAngle=startAngle + (arc.hidden ? 0:me._angles[index]);
var resetRadius=animationOpts.animateScale ? 0:scale.getDistanceFromCenterForValue(dataset.data[index]);
var options=arc._options||{};
helpers$1.extend(arc, {
_datasetIndex: me.index,
_index: index,
_scale: scale,
_model: {
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderWidth: options.borderWidth,
borderAlign: options.borderAlign,
x: centerX,
y: centerY,
innerRadius: 0,
outerRadius: reset ? resetRadius:distance,
startAngle: reset&&animationOpts.animateRotate ? datasetStartAngle:startAngle,
endAngle: reset&&animationOpts.animateRotate ? datasetStartAngle:endAngle,
label: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])
}});
arc.pivot();
},
countVisibleElements: function(){
var dataset=this.getDataset();
var meta=this.getMeta();
var count=0;
helpers$1.each(meta.data, function(element, index){
if(!isNaN(dataset.data[index])&&!element.hidden){
count++;
}});
return count;
},
setHoverStyle: function(arc){
var model=arc._model;
var options=arc._options;
var getHoverColor=helpers$1.getHoverColor;
var valueOrDefault=helpers$1.valueOrDefault;
arc.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth,
};
model.backgroundColor=valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
model.borderColor=valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));
model.borderWidth=valueOrDefault(options.hoverBorderWidth, options.borderWidth);
},
_resolveElementOptions: function(arc, index){
var me=this;
var chart=me.chart;
var dataset=me.getDataset();
var custom=arc.custom||{};
var options=chart.options.elements.arc;
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var keys=[
'backgroundColor',
'borderColor',
'borderWidth',
'borderAlign',
'hoverBackgroundColor',
'hoverBorderColor',
'hoverBorderWidth',
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$5([
custom[key],
dataset[key],
options[key]
], context, index);
}
return values;
},
_computeAngle: function(index){
var me=this;
var count=this.getMeta().count;
var dataset=me.getDataset();
var meta=me.getMeta();
if(isNaN(dataset.data[index])||meta.data[index].hidden){
return 0;
}
var context={
chart: me.chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
return resolve$5([
me.chart.options.elements.arc.angle,
(2 * Math.PI) / count
], context, index);
}});
core_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));
core_defaults._set('pie', {
cutoutPercentage: 0
});
var controller_pie=controller_doughnut;
var valueOrDefault$6=helpers$1.valueOrDefault;
var resolve$6=helpers$1.options.resolve;
core_defaults._set('radar', {
scale: {
type: 'radialLinear'
},
elements: {
line: {
tension: 0 
}}
});
var controller_radar=core_datasetController.extend({
datasetElementType: elements.Line,
dataElementType: elements.Point,
linkScales: helpers$1.noop,
update: function(reset){
var me=this;
var meta=me.getMeta();
var line=meta.dataset;
var points=meta.data||[];
var scale=me.chart.scale;
var dataset=me.getDataset();
var i, ilen;
if((dataset.tension!==undefined)&&(dataset.lineTension===undefined)){
dataset.lineTension=dataset.tension;
}
line._scale=scale;
line._datasetIndex=me.index;
line._children=points;
line._loop=true;
line._model=me._resolveLineOptions(line);
line.pivot();
for (i=0, ilen=points.length; i < ilen; ++i){
me.updateElement(points[i], i, reset);
}
me.updateBezierControlPoints();
for (i=0, ilen=points.length; i < ilen; ++i){
points[i].pivot();
}},
updateElement: function(point, index, reset){
var me=this;
var custom=point.custom||{};
var dataset=me.getDataset();
var scale=me.chart.scale;
var pointPosition=scale.getPointPositionForValue(index, dataset.data[index]);
var options=me._resolvePointOptions(point, index);
var lineModel=me.getMeta().dataset._model;
var x=reset ? scale.xCenter:pointPosition.x;
var y=reset ? scale.yCenter:pointPosition.y;
point._scale=scale;
point._options=options;
point._datasetIndex=me.index;
point._index=index;
point._model={
x: x,
y: y,
skip: custom.skip||isNaN(x)||isNaN(y),
radius: options.radius,
pointStyle: options.pointStyle,
rotation: options.rotation,
backgroundColor: options.backgroundColor,
borderColor: options.borderColor,
borderWidth: options.borderWidth,
tension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension:0),
hitRadius: options.hitRadius
};},
_resolvePointOptions: function(element, index){
var me=this;
var chart=me.chart;
var dataset=chart.data.datasets[me.index];
var custom=element.custom||{};
var options=chart.options.elements.point;
var values={};
var i, ilen, key;
var context={
chart: chart,
dataIndex: index,
dataset: dataset,
datasetIndex: me.index
};
var ELEMENT_OPTIONS={
backgroundColor: 'pointBackgroundColor',
borderColor: 'pointBorderColor',
borderWidth: 'pointBorderWidth',
hitRadius: 'pointHitRadius',
hoverBackgroundColor: 'pointHoverBackgroundColor',
hoverBorderColor: 'pointHoverBorderColor',
hoverBorderWidth: 'pointHoverBorderWidth',
hoverRadius: 'pointHoverRadius',
pointStyle: 'pointStyle',
radius: 'pointRadius',
rotation: 'pointRotation'
};
var keys=Object.keys(ELEMENT_OPTIONS);
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$6([
custom[key],
dataset[ELEMENT_OPTIONS[key]],
dataset[key],
options[key]
], context, index);
}
return values;
},
_resolveLineOptions: function(element){
var me=this;
var chart=me.chart;
var dataset=chart.data.datasets[me.index];
var custom=element.custom||{};
var options=chart.options.elements.line;
var values={};
var i, ilen, key;
var keys=[
'backgroundColor',
'borderWidth',
'borderColor',
'borderCapStyle',
'borderDash',
'borderDashOffset',
'borderJoinStyle',
'fill'
];
for (i=0, ilen=keys.length; i < ilen; ++i){
key=keys[i];
values[key]=resolve$6([
custom[key],
dataset[key],
options[key]
]);
}
values.tension=valueOrDefault$6(dataset.lineTension, options.tension);
return values;
},
updateBezierControlPoints: function(){
var me=this;
var meta=me.getMeta();
var area=me.chart.chartArea;
var points=meta.data||[];
var i, ilen, model, controlPoints;
function capControlPoint(pt, min, max){
return Math.max(Math.min(pt, max), min);
}
for (i=0, ilen=points.length; i < ilen; ++i){
model=points[i]._model;
controlPoints=helpers$1.splineCurve(helpers$1.previousItem(points, i, true)._model,
model,
helpers$1.nextItem(points, i, true)._model,
model.tension
);
model.controlPointPreviousX=capControlPoint(controlPoints.previous.x, area.left, area.right);
model.controlPointPreviousY=capControlPoint(controlPoints.previous.y, area.top, area.bottom);
model.controlPointNextX=capControlPoint(controlPoints.next.x, area.left, area.right);
model.controlPointNextY=capControlPoint(controlPoints.next.y, area.top, area.bottom);
}},
setHoverStyle: function(point){
var model=point._model;
var options=point._options;
var getHoverColor=helpers$1.getHoverColor;
point.$previousStyle={
backgroundColor: model.backgroundColor,
borderColor: model.borderColor,
borderWidth: model.borderWidth,
radius: model.radius
};
model.backgroundColor=valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));
model.borderColor=valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));
model.borderWidth=valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);
model.radius=valueOrDefault$6(options.hoverRadius, options.radius);
}});
core_defaults._set('scatter', {
hover: {
mode: 'single'
},
scales: {
xAxes: [{
id: 'x-axis-1',
type: 'linear',
position: 'bottom'
}],
yAxes: [{
id: 'y-axis-1',
type: 'linear',
position: 'left'
}]
},
showLines: false,
tooltips: {
callbacks: {
title: function(){
return '';
},
label: function(item){
return '(' + item.xLabel + ', ' + item.yLabel + ')';
}}
}});
var controller_scatter=controller_line;
var controllers={
bar: controller_bar,
bubble: controller_bubble,
doughnut: controller_doughnut,
horizontalBar: controller_horizontalBar,
line: controller_line,
polarArea: controller_polarArea,
pie: controller_pie,
radar: controller_radar,
scatter: controller_scatter
};
function getRelativePosition(e, chart){
if(e.native){
return {
x: e.x,
y: e.y
};}
return helpers$1.getRelativePosition(e, chart);
}
function parseVisibleItems(chart, handler){
var datasets=chart.data.datasets;
var meta, i, j, ilen, jlen;
for (i=0, ilen=datasets.length; i < ilen; ++i){
if(!chart.isDatasetVisible(i)){
continue;
}
meta=chart.getDatasetMeta(i);
for (j=0, jlen=meta.data.length; j < jlen; ++j){
var element=meta.data[j];
if(!element._view.skip){
handler(element);
}}
}}
function getIntersectItems(chart, position){
var elements=[];
parseVisibleItems(chart, function(element){
if(element.inRange(position.x, position.y)){
elements.push(element);
}});
return elements;
}
function getNearestItems(chart, position, intersect, distanceMetric){
var minDistance=Number.POSITIVE_INFINITY;
var nearestItems=[];
parseVisibleItems(chart, function(element){
if(intersect&&!element.inRange(position.x, position.y)){
return;
}
var center=element.getCenterPoint();
var distance=distanceMetric(position, center);
if(distance < minDistance){
nearestItems=[element];
minDistance=distance;
}else if(distance===minDistance){
nearestItems.push(element);
}});
return nearestItems;
}
function getDistanceMetricForAxis(axis){
var useX=axis.indexOf('x')!==-1;
var useY=axis.indexOf('y')!==-1;
return function(pt1, pt2){
var deltaX=useX ? Math.abs(pt1.x - pt2.x):0;
var deltaY=useY ? Math.abs(pt1.y - pt2.y):0;
return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
};}
function indexMode(chart, e, options){
var position=getRelativePosition(e, chart);
options.axis=options.axis||'x';
var distanceMetric=getDistanceMetricForAxis(options.axis);
var items=options.intersect ? getIntersectItems(chart, position):getNearestItems(chart, position, false, distanceMetric);
var elements=[];
if(!items.length){
return [];
}
chart.data.datasets.forEach(function(dataset, datasetIndex){
if(chart.isDatasetVisible(datasetIndex)){
var meta=chart.getDatasetMeta(datasetIndex);
var element=meta.data[items[0]._index];
if(element&&!element._view.skip){
elements.push(element);
}}
});
return elements;
}
var core_interaction={
modes: {
single: function(chart, e){
var position=getRelativePosition(e, chart);
var elements=[];
parseVisibleItems(chart, function(element){
if(element.inRange(position.x, position.y)){
elements.push(element);
return elements;
}});
return elements.slice(0, 1);
},
label: indexMode,
index: indexMode,
dataset: function(chart, e, options){
var position=getRelativePosition(e, chart);
options.axis=options.axis||'xy';
var distanceMetric=getDistanceMetricForAxis(options.axis);
var items=options.intersect ? getIntersectItems(chart, position):getNearestItems(chart, position, false, distanceMetric);
if(items.length > 0){
items=chart.getDatasetMeta(items[0]._datasetIndex).data;
}
return items;
},
'x-axis': function(chart, e){
return indexMode(chart, e, {intersect: false});
},
point: function(chart, e){
var position=getRelativePosition(e, chart);
return getIntersectItems(chart, position);
},
nearest: function(chart, e, options){
var position=getRelativePosition(e, chart);
options.axis=options.axis||'xy';
var distanceMetric=getDistanceMetricForAxis(options.axis);
return getNearestItems(chart, position, options.intersect, distanceMetric);
},
x: function(chart, e, options){
var position=getRelativePosition(e, chart);
var items=[];
var intersectsItem=false;
parseVisibleItems(chart, function(element){
if(element.inXRange(position.x)){
items.push(element);
}
if(element.inRange(position.x, position.y)){
intersectsItem=true;
}});
if(options.intersect&&!intersectsItem){
items=[];
}
return items;
},
y: function(chart, e, options){
var position=getRelativePosition(e, chart);
var items=[];
var intersectsItem=false;
parseVisibleItems(chart, function(element){
if(element.inYRange(position.y)){
items.push(element);
}
if(element.inRange(position.x, position.y)){
intersectsItem=true;
}});
if(options.intersect&&!intersectsItem){
items=[];
}
return items;
}}
};
function filterByPosition(array, position){
return helpers$1.where(array, function(v){
return v.position===position;
});
}
function sortByWeight(array, reverse){
array.forEach(function(v, i){
v._tmpIndex_=i;
return v;
});
array.sort(function(a, b){
var v0=reverse ? b:a;
var v1=reverse ? a:b;
return v0.weight===v1.weight ?
v0._tmpIndex_ - v1._tmpIndex_ :
v0.weight - v1.weight;
});
array.forEach(function(v){
delete v._tmpIndex_;
});
}
function findMaxPadding(boxes){
var top=0;
var left=0;
var bottom=0;
var right=0;
helpers$1.each(boxes, function(box){
if(box.getPadding){
var boxPadding=box.getPadding();
top=Math.max(top, boxPadding.top);
left=Math.max(left, boxPadding.left);
bottom=Math.max(bottom, boxPadding.bottom);
right=Math.max(right, boxPadding.right);
}});
return {
top: top,
left: left,
bottom: bottom,
right: right
};}
function addSizeByPosition(boxes, size){
helpers$1.each(boxes, function(box){
size[box.position] +=box.isHorizontal() ? box.height:box.width;
});
}
core_defaults._set('global', {
layout: {
padding: {
top: 0,
right: 0,
bottom: 0,
left: 0
}}
});
var core_layouts={
defaults: {},
addBox: function(chart, item){
if(!chart.boxes){
chart.boxes=[];
}
item.fullWidth=item.fullWidth||false;
item.position=item.position||'top';
item.weight=item.weight||0;
chart.boxes.push(item);
},
removeBox: function(chart, layoutItem){
var index=chart.boxes ? chart.boxes.indexOf(layoutItem):-1;
if(index!==-1){
chart.boxes.splice(index, 1);
}},
configure: function(chart, item, options){
var props=['fullWidth', 'position', 'weight'];
var ilen=props.length;
var i=0;
var prop;
for (; i < ilen; ++i){
prop=props[i];
if(options.hasOwnProperty(prop)){
item[prop]=options[prop];
}}
},
update: function(chart, width, height){
if(!chart){
return;
}
var layoutOptions=chart.options.layout||{};
var padding=helpers$1.options.toPadding(layoutOptions.padding);
var leftPadding=padding.left;
var rightPadding=padding.right;
var topPadding=padding.top;
var bottomPadding=padding.bottom;
var leftBoxes=filterByPosition(chart.boxes, 'left');
var rightBoxes=filterByPosition(chart.boxes, 'right');
var topBoxes=filterByPosition(chart.boxes, 'top');
var bottomBoxes=filterByPosition(chart.boxes, 'bottom');
var chartAreaBoxes=filterByPosition(chart.boxes, 'chartArea');
sortByWeight(leftBoxes, true);
sortByWeight(rightBoxes, false);
sortByWeight(topBoxes, true);
sortByWeight(bottomBoxes, false);
var verticalBoxes=leftBoxes.concat(rightBoxes);
var horizontalBoxes=topBoxes.concat(bottomBoxes);
var outerBoxes=verticalBoxes.concat(horizontalBoxes);
var chartWidth=width - leftPadding - rightPadding;
var chartHeight=height - topPadding - bottomPadding;
var chartAreaWidth=chartWidth / 2;
var verticalBoxWidth=(width - chartAreaWidth) / verticalBoxes.length;
var maxChartAreaWidth=chartWidth;
var maxChartAreaHeight=chartHeight;
var outerBoxSizes={top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};
var minBoxSizes=[];
var maxPadding;
function getMinimumBoxSize(box){
var minSize;
var isHorizontal=box.isHorizontal();
if(isHorizontal){
minSize=box.update(box.fullWidth ? chartWidth:maxChartAreaWidth, chartHeight / 2);
maxChartAreaHeight -=minSize.height;
}else{
minSize=box.update(verticalBoxWidth, maxChartAreaHeight);
maxChartAreaWidth -=minSize.width;
}
minBoxSizes.push({
horizontal: isHorizontal,
width: minSize.width,
box: box,
});
}
helpers$1.each(outerBoxes, getMinimumBoxSize);
maxPadding=findMaxPadding(outerBoxes);
function fitBox(box){
var minBoxSize=helpers$1.findNextWhere(minBoxSizes, function(minBox){
return minBox.box===box;
});
if(minBoxSize){
if(minBoxSize.horizontal){
var scaleMargin={
left: Math.max(outerBoxSizes.left, maxPadding.left),
right: Math.max(outerBoxSizes.right, maxPadding.right),
top: 0,
bottom: 0
};
box.update(box.fullWidth ? chartWidth:maxChartAreaWidth, chartHeight / 2, scaleMargin);
}else{
box.update(minBoxSize.width, maxChartAreaHeight);
}}
}
helpers$1.each(verticalBoxes, fitBox);
addSizeByPosition(verticalBoxes, outerBoxSizes);
helpers$1.each(horizontalBoxes, fitBox);
addSizeByPosition(horizontalBoxes, outerBoxSizes);
function finalFitVerticalBox(box){
var minBoxSize=helpers$1.findNextWhere(minBoxSizes, function(minSize){
return minSize.box===box;
});
var scaleMargin={
left: 0,
right: 0,
top: outerBoxSizes.top,
bottom: outerBoxSizes.bottom
};
if(minBoxSize){
box.update(minBoxSize.width, maxChartAreaHeight, scaleMargin);
}}
helpers$1.each(verticalBoxes, finalFitVerticalBox);
outerBoxSizes={top: topPadding, left: leftPadding, bottom: bottomPadding, right: rightPadding};
addSizeByPosition(outerBoxes, outerBoxSizes);
var leftPaddingAddition=Math.max(maxPadding.left - outerBoxSizes.left, 0);
outerBoxSizes.left +=leftPaddingAddition;
outerBoxSizes.right +=Math.max(maxPadding.right - outerBoxSizes.right, 0);
var topPaddingAddition=Math.max(maxPadding.top - outerBoxSizes.top, 0);
outerBoxSizes.top +=topPaddingAddition;
outerBoxSizes.bottom +=Math.max(maxPadding.bottom - outerBoxSizes.bottom, 0);
var newMaxChartAreaHeight=height - outerBoxSizes.top - outerBoxSizes.bottom;
var newMaxChartAreaWidth=width - outerBoxSizes.left - outerBoxSizes.right;
if(newMaxChartAreaWidth!==maxChartAreaWidth||newMaxChartAreaHeight!==maxChartAreaHeight){
helpers$1.each(verticalBoxes, function(box){
box.height=newMaxChartAreaHeight;
});
helpers$1.each(horizontalBoxes, function(box){
if(!box.fullWidth){
box.width=newMaxChartAreaWidth;
}});
maxChartAreaHeight=newMaxChartAreaHeight;
maxChartAreaWidth=newMaxChartAreaWidth;
}
var left=leftPadding + leftPaddingAddition;
var top=topPadding + topPaddingAddition;
function placeBox(box){
if(box.isHorizontal()){
box.left=box.fullWidth ? leftPadding:outerBoxSizes.left;
box.right=box.fullWidth ? width - rightPadding:outerBoxSizes.left + maxChartAreaWidth;
box.top=top;
box.bottom=top + box.height;
top=box.bottom;
}else{
box.left=left;
box.right=left + box.width;
box.top=outerBoxSizes.top;
box.bottom=outerBoxSizes.top + maxChartAreaHeight;
left=box.right;
}}
helpers$1.each(leftBoxes.concat(topBoxes), placeBox);
left +=maxChartAreaWidth;
top +=maxChartAreaHeight;
helpers$1.each(rightBoxes, placeBox);
helpers$1.each(bottomBoxes, placeBox);
chart.chartArea={
left: outerBoxSizes.left,
top: outerBoxSizes.top,
right: outerBoxSizes.left + maxChartAreaWidth,
bottom: outerBoxSizes.top + maxChartAreaHeight
};
helpers$1.each(chartAreaBoxes, function(box){
box.left=chart.chartArea.left;
box.top=chart.chartArea.top;
box.right=chart.chartArea.right;
box.bottom=chart.chartArea.bottom;
box.update(maxChartAreaWidth, maxChartAreaHeight);
});
}};
var platform_basic={
acquireContext: function(item){
if(item&&item.canvas){
item=item.canvas;
}
return item&&item.getContext('2d')||null;
}};
var platform_dom="\n@keyframes chartjs-render-animation {\n\tfrom { opacity: 0.99; }\n\tto { opacity: 1; }\n}\n\n.chartjs-render-monitor {\n\tanimation: chartjs-render-animation 0.001s;\n}\n\n\n.chartjs-size-monitor,\n.chartjs-size-monitor-expand,\n.chartjs-size-monitor-shrink {\n\tposition: absolute;\n\tdirection: ltr;\n\tleft: 0;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n\tvisibility: hidden;\n\tz-index: -1;\n}\n\n.chartjs-size-monitor-expand > div {\n\tposition: absolute;\n\twidth: 1000000px;\n\theight: 1000000px;\n\tleft: 0;\n\ttop: 0;\n}\n\n.chartjs-size-monitor-shrink > div {\n\tposition: absolute;\n\twidth: 200%;\n\theight: 200%;\n\tleft: 0;\n\ttop: 0;\n}\n";
var platform_dom$1=Object.freeze({
default: platform_dom
});
function getCjsExportFromNamespace (n){
return n&&n.default||n;
}
var stylesheet=getCjsExportFromNamespace(platform_dom$1);
var EXPANDO_KEY='$chartjs';
var CSS_PREFIX='chartjs-';
var CSS_SIZE_MONITOR=CSS_PREFIX + 'size-monitor';
var CSS_RENDER_MONITOR=CSS_PREFIX + 'render-monitor';
var CSS_RENDER_ANIMATION=CSS_PREFIX + 'render-animation';
var ANIMATION_START_EVENTS=['animationstart', 'webkitAnimationStart'];
var EVENT_TYPES={
touchstart: 'mousedown',
touchmove: 'mousemove',
touchend: 'mouseup',
pointerenter: 'mouseenter',
pointerdown: 'mousedown',
pointermove: 'mousemove',
pointerup: 'mouseup',
pointerleave: 'mouseout',
pointerout: 'mouseout'
};
function readUsedSize(element, property){
var value=helpers$1.getStyle(element, property);
var matches=value&&value.match(/^(\d+)(\.\d+)?px$/);
return matches ? Number(matches[1]):undefined;
}
function initCanvas(canvas, config){
var style=canvas.style;
var renderHeight=canvas.getAttribute('height');
var renderWidth=canvas.getAttribute('width');
canvas[EXPANDO_KEY]={
initial: {
height: renderHeight,
width: renderWidth,
style: {
display: style.display,
height: style.height,
width: style.width
}}
};
style.display=style.display||'block';
if(renderWidth===null||renderWidth===''){
var displayWidth=readUsedSize(canvas, 'width');
if(displayWidth!==undefined){
canvas.width=displayWidth;
}}
if(renderHeight===null||renderHeight===''){
if(canvas.style.height===''){
canvas.height=canvas.width / (config.options.aspectRatio||2);
}else{
var displayHeight=readUsedSize(canvas, 'height');
if(displayWidth!==undefined){
canvas.height=displayHeight;
}}
}
return canvas;
}
var supportsEventListenerOptions=(function(){
var supports=false;
try {
var options=Object.defineProperty({}, 'passive', {
get: function(){
supports=true;
}});
window.addEventListener('e', null, options);
} catch (e){
}
return supports;
}());
var eventListenerOptions=supportsEventListenerOptions ? {passive: true}:false;
function addListener(node, type, listener){
node.addEventListener(type, listener, eventListenerOptions);
}
function removeListener(node, type, listener){
node.removeEventListener(type, listener, eventListenerOptions);
}
function createEvent(type, chart, x, y, nativeEvent){
return {
type: type,
chart: chart,
native: nativeEvent||null,
x: x!==undefined ? x:null,
y: y!==undefined ? y:null,
};}
function fromNativeEvent(event, chart){
var type=EVENT_TYPES[event.type]||event.type;
var pos=helpers$1.getRelativePosition(event, chart);
return createEvent(type, chart, pos.x, pos.y, event);
}
function throttled(fn, thisArg){
var ticking=false;
var args=[];
return function(){
args=Array.prototype.slice.call(arguments);
thisArg=thisArg||this;
if(!ticking){
ticking=true;
helpers$1.requestAnimFrame.call(window, function(){
ticking=false;
fn.apply(thisArg, args);
});
}};}
function createDiv(cls){
var el=document.createElement('div');
el.className=cls||'';
return el;
}
function createResizer(handler){
var maxSize=1000000;
var resizer=createDiv(CSS_SIZE_MONITOR);
var expand=createDiv(CSS_SIZE_MONITOR + '-expand');
var shrink=createDiv(CSS_SIZE_MONITOR + '-shrink');
expand.appendChild(createDiv());
shrink.appendChild(createDiv());
resizer.appendChild(expand);
resizer.appendChild(shrink);
resizer._reset=function(){
expand.scrollLeft=maxSize;
expand.scrollTop=maxSize;
shrink.scrollLeft=maxSize;
shrink.scrollTop=maxSize;
};
var onScroll=function(){
resizer._reset();
handler();
};
addListener(expand, 'scroll', onScroll.bind(expand, 'expand'));
addListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));
return resizer;
}
function watchForRender(node, handler){
var expando=node[EXPANDO_KEY]||(node[EXPANDO_KEY]={});
var proxy=expando.renderProxy=function(e){
if(e.animationName===CSS_RENDER_ANIMATION){
handler();
}};
helpers$1.each(ANIMATION_START_EVENTS, function(type){
addListener(node, type, proxy);
});
expando.reflow = !!node.offsetParent;
node.classList.add(CSS_RENDER_MONITOR);
}
function unwatchForRender(node){
var expando=node[EXPANDO_KEY]||{};
var proxy=expando.renderProxy;
if(proxy){
helpers$1.each(ANIMATION_START_EVENTS, function(type){
removeListener(node, type, proxy);
});
delete expando.renderProxy;
}
node.classList.remove(CSS_RENDER_MONITOR);
}
function addResizeListener(node, listener, chart){
var expando=node[EXPANDO_KEY]||(node[EXPANDO_KEY]={});
var resizer=expando.resizer=createResizer(throttled(function(){
if(expando.resizer){
var container=chart.options.maintainAspectRatio&&node.parentNode;
var w=container ? container.clientWidth:0;
listener(createEvent('resize', chart));
if(container&&container.clientWidth < w&&chart.canvas){
listener(createEvent('resize', chart));
}}
}));
watchForRender(node, function(){
if(expando.resizer){
var container=node.parentNode;
if(container&&container!==resizer.parentNode){
container.insertBefore(resizer, container.firstChild);
}
resizer._reset();
}});
}
function removeResizeListener(node){
var expando=node[EXPANDO_KEY]||{};
var resizer=expando.resizer;
delete expando.resizer;
unwatchForRender(node);
if(resizer&&resizer.parentNode){
resizer.parentNode.removeChild(resizer);
}}
function injectCSS(platform, css){
var style=platform._style||document.createElement('style');
if(!platform._style){
platform._style=style;
css='\n' + css;
style.setAttribute('type', 'text/css');
document.getElementsByTagName('head')[0].appendChild(style);
}
style.appendChild(document.createTextNode(css));
}
var platform_dom$2={
disableCSSInjection: false,
_enabled: typeof window!=='undefined'&&typeof document!=='undefined',
_ensureLoaded: function(){
if(this._loaded){
return;
}
this._loaded=true;
if(!this.disableCSSInjection){
injectCSS(this, stylesheet);
}},
acquireContext: function(item, config){
if(typeof item==='string'){
item=document.getElementById(item);
}else if(item.length){
item=item[0];
}
if(item&&item.canvas){
item=item.canvas;
}
var context=item&&item.getContext&&item.getContext('2d');
this._ensureLoaded();
if(context&&context.canvas===item){
initCanvas(item, config);
return context;
}
return null;
},
releaseContext: function(context){
var canvas=context.canvas;
if(!canvas[EXPANDO_KEY]){
return;
}
var initial=canvas[EXPANDO_KEY].initial;
['height', 'width'].forEach(function(prop){
var value=initial[prop];
if(helpers$1.isNullOrUndef(value)){
canvas.removeAttribute(prop);
}else{
canvas.setAttribute(prop, value);
}});
helpers$1.each(initial.style||{}, function(value, key){
canvas.style[key]=value;
});
canvas.width=canvas.width;
delete canvas[EXPANDO_KEY];
},
addEventListener: function(chart, type, listener){
var canvas=chart.canvas;
if(type==='resize'){
addResizeListener(canvas, listener, chart);
return;
}
var expando=listener[EXPANDO_KEY]||(listener[EXPANDO_KEY]={});
var proxies=expando.proxies||(expando.proxies={});
var proxy=proxies[chart.id + '_' + type]=function(event){
listener(fromNativeEvent(event, chart));
};
addListener(canvas, type, proxy);
},
removeEventListener: function(chart, type, listener){
var canvas=chart.canvas;
if(type==='resize'){
removeResizeListener(canvas);
return;
}
var expando=listener[EXPANDO_KEY]||{};
var proxies=expando.proxies||{};
var proxy=proxies[chart.id + '_' + type];
if(!proxy){
return;
}
removeListener(canvas, type, proxy);
}};
helpers$1.addEvent=addListener;
helpers$1.removeEvent=removeListener;
var implementation=platform_dom$2._enabled ? platform_dom$2:platform_basic;
var platform=helpers$1.extend({
initialize: function(){},
acquireContext: function(){},
releaseContext: function(){},
addEventListener: function(){},
removeEventListener: function(){}}, implementation);
core_defaults._set('global', {
plugins: {}});
var core_plugins={
_plugins: [],
_cacheId: 0,
register: function(plugins){
var p=this._plugins;
([]).concat(plugins).forEach(function(plugin){
if(p.indexOf(plugin)===-1){
p.push(plugin);
}});
this._cacheId++;
},
unregister: function(plugins){
var p=this._plugins;
([]).concat(plugins).forEach(function(plugin){
var idx=p.indexOf(plugin);
if(idx!==-1){
p.splice(idx, 1);
}});
this._cacheId++;
},
clear: function(){
this._plugins=[];
this._cacheId++;
},
count: function(){
return this._plugins.length;
},
getAll: function(){
return this._plugins;
},
notify: function(chart, hook, args){
var descriptors=this.descriptors(chart);
var ilen=descriptors.length;
var i, descriptor, plugin, params, method;
for (i=0; i < ilen; ++i){
descriptor=descriptors[i];
plugin=descriptor.plugin;
method=plugin[hook];
if(typeof method==='function'){
params=[chart].concat(args||[]);
params.push(descriptor.options);
if(method.apply(plugin, params)===false){
return false;
}}
}
return true;
},
descriptors: function(chart){
var cache=chart.$plugins||(chart.$plugins={});
if(cache.id===this._cacheId){
return cache.descriptors;
}
var plugins=[];
var descriptors=[];
var config=(chart&&chart.config)||{};
var options=(config.options&&config.options.plugins)||{};
this._plugins.concat(config.plugins||[]).forEach(function(plugin){
var idx=plugins.indexOf(plugin);
if(idx!==-1){
return;
}
var id=plugin.id;
var opts=options[id];
if(opts===false){
return;
}
if(opts===true){
opts=helpers$1.clone(core_defaults.global.plugins[id]);
}
plugins.push(plugin);
descriptors.push({
plugin: plugin,
options: opts||{}});
});
cache.descriptors=descriptors;
cache.id=this._cacheId;
return descriptors;
},
_invalidate: function(chart){
delete chart.$plugins;
}};
var core_scaleService={
constructors: {},
defaults: {},
registerScaleType: function(type, scaleConstructor, scaleDefaults){
this.constructors[type]=scaleConstructor;
this.defaults[type]=helpers$1.clone(scaleDefaults);
},
getScaleConstructor: function(type){
return this.constructors.hasOwnProperty(type) ? this.constructors[type]:undefined;
},
getScaleDefaults: function(type){
return this.defaults.hasOwnProperty(type) ? helpers$1.merge({}, [core_defaults.scale, this.defaults[type]]):{};},
updateScaleDefaults: function(type, additions){
var me=this;
if(me.defaults.hasOwnProperty(type)){
me.defaults[type]=helpers$1.extend(me.defaults[type], additions);
}},
addScalesToLayout: function(chart){
helpers$1.each(chart.scales, function(scale){
scale.fullWidth=scale.options.fullWidth;
scale.position=scale.options.position;
scale.weight=scale.options.weight;
core_layouts.addBox(chart, scale);
});
}};
var valueOrDefault$7=helpers$1.valueOrDefault;
core_defaults._set('global', {
tooltips: {
enabled: true,
custom: null,
mode: 'nearest',
position: 'average',
intersect: true,
backgroundColor: 'rgba(0,0,0,0.8)',
titleFontStyle: 'bold',
titleSpacing: 2,
titleMarginBottom: 6,
titleFontColor: '#fff',
titleAlign: 'left',
bodySpacing: 2,
bodyFontColor: '#fff',
bodyAlign: 'left',
footerFontStyle: 'bold',
footerSpacing: 2,
footerMarginTop: 6,
footerFontColor: '#fff',
footerAlign: 'left',
yPadding: 6,
xPadding: 6,
caretPadding: 2,
caretSize: 5,
cornerRadius: 6,
multiKeyBackground: '#fff',
displayColors: true,
borderColor: 'rgba(0,0,0,0)',
borderWidth: 0,
callbacks: {
beforeTitle: helpers$1.noop,
title: function(tooltipItems, data){
var title='';
var labels=data.labels;
var labelCount=labels ? labels.length:0;
if(tooltipItems.length > 0){
var item=tooltipItems[0];
if(item.label){
title=item.label;
}else if(item.xLabel){
title=item.xLabel;
}else if(labelCount > 0&&item.index < labelCount){
title=labels[item.index];
}}
return title;
},
afterTitle: helpers$1.noop,
beforeBody: helpers$1.noop,
beforeLabel: helpers$1.noop,
label: function(tooltipItem, data){
var label=data.datasets[tooltipItem.datasetIndex].label||'';
if(label){
label +=': ';
}
if(!helpers$1.isNullOrUndef(tooltipItem.value)){
label +=tooltipItem.value;
}else{
label +=tooltipItem.yLabel;
}
return label;
},
labelColor: function(tooltipItem, chart){
var meta=chart.getDatasetMeta(tooltipItem.datasetIndex);
var activeElement=meta.data[tooltipItem.index];
var view=activeElement._view;
return {
borderColor: view.borderColor,
backgroundColor: view.backgroundColor
};},
labelTextColor: function(){
return this._options.bodyFontColor;
},
afterLabel: helpers$1.noop,
afterBody: helpers$1.noop,
beforeFooter: helpers$1.noop,
footer: helpers$1.noop,
afterFooter: helpers$1.noop
}}
});
var positioners={
average: function(elements){
if(!elements.length){
return false;
}
var i, len;
var x=0;
var y=0;
var count=0;
for (i=0, len=elements.length; i < len; ++i){
var el=elements[i];
if(el&&el.hasValue()){
var pos=el.tooltipPosition();
x +=pos.x;
y +=pos.y;
++count;
}}
return {
x: x / count,
y: y / count
};},
nearest: function(elements, eventPosition){
var x=eventPosition.x;
var y=eventPosition.y;
var minDistance=Number.POSITIVE_INFINITY;
var i, len, nearestElement;
for (i=0, len=elements.length; i < len; ++i){
var el=elements[i];
if(el&&el.hasValue()){
var center=el.getCenterPoint();
var d=helpers$1.distanceBetweenPoints(eventPosition, center);
if(d < minDistance){
minDistance=d;
nearestElement=el;
}}
}
if(nearestElement){
var tp=nearestElement.tooltipPosition();
x=tp.x;
y=tp.y;
}
return {
x: x,
y: y
};}};
function pushOrConcat(base, toPush){
if(toPush){
if(helpers$1.isArray(toPush)){
Array.prototype.push.apply(base, toPush);
}else{
base.push(toPush);
}}
return base;
}
function splitNewlines(str){
if((typeof str==='string'||str instanceof String)&&str.indexOf('\n') > -1){
return str.split('\n');
}
return str;
}
function createTooltipItem(element){
var xScale=element._xScale;
var yScale=element._yScale||element._scale;
var index=element._index;
var datasetIndex=element._datasetIndex;
var controller=element._chart.getDatasetMeta(datasetIndex).controller;
var indexScale=controller._getIndexScale();
var valueScale=controller._getValueScale();
return {
xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex):'',
yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex):'',
label: indexScale ? '' + indexScale.getLabelForIndex(index, datasetIndex):'',
value: valueScale ? '' + valueScale.getLabelForIndex(index, datasetIndex):'',
index: index,
datasetIndex: datasetIndex,
x: element._model.x,
y: element._model.y
};}
function getBaseModel(tooltipOpts){
var globalDefaults=core_defaults.global;
return {
xPadding: tooltipOpts.xPadding,
yPadding: tooltipOpts.yPadding,
xAlign: tooltipOpts.xAlign,
yAlign: tooltipOpts.yAlign,
bodyFontColor: tooltipOpts.bodyFontColor,
_bodyFontFamily: valueOrDefault$7(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),
_bodyFontStyle: valueOrDefault$7(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),
_bodyAlign: tooltipOpts.bodyAlign,
bodyFontSize: valueOrDefault$7(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),
bodySpacing: tooltipOpts.bodySpacing,
titleFontColor: tooltipOpts.titleFontColor,
_titleFontFamily: valueOrDefault$7(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),
_titleFontStyle: valueOrDefault$7(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),
titleFontSize: valueOrDefault$7(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),
_titleAlign: tooltipOpts.titleAlign,
titleSpacing: tooltipOpts.titleSpacing,
titleMarginBottom: tooltipOpts.titleMarginBottom,
footerFontColor: tooltipOpts.footerFontColor,
_footerFontFamily: valueOrDefault$7(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),
_footerFontStyle: valueOrDefault$7(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),
footerFontSize: valueOrDefault$7(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),
_footerAlign: tooltipOpts.footerAlign,
footerSpacing: tooltipOpts.footerSpacing,
footerMarginTop: tooltipOpts.footerMarginTop,
caretSize: tooltipOpts.caretSize,
cornerRadius: tooltipOpts.cornerRadius,
backgroundColor: tooltipOpts.backgroundColor,
opacity: 0,
legendColorBackground: tooltipOpts.multiKeyBackground,
displayColors: tooltipOpts.displayColors,
borderColor: tooltipOpts.borderColor,
borderWidth: tooltipOpts.borderWidth
};}
function getTooltipSize(tooltip, model){
var ctx=tooltip._chart.ctx;
var height=model.yPadding * 2;
var width=0;
var body=model.body;
var combinedBodyLength=body.reduce(function(count, bodyItem){
return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;
}, 0);
combinedBodyLength +=model.beforeBody.length + model.afterBody.length;
var titleLineCount=model.title.length;
var footerLineCount=model.footer.length;
var titleFontSize=model.titleFontSize;
var bodyFontSize=model.bodyFontSize;
var footerFontSize=model.footerFontSize;
height +=titleLineCount * titleFontSize;
height +=titleLineCount ? (titleLineCount - 1) * model.titleSpacing:0;
height +=titleLineCount ? model.titleMarginBottom:0;
height +=combinedBodyLength * bodyFontSize;
height +=combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing:0;
height +=footerLineCount ? model.footerMarginTop:0;
height +=footerLineCount * (footerFontSize);
height +=footerLineCount ? (footerLineCount - 1) * model.footerSpacing:0;
var widthPadding=0;
var maxLineWidth=function(line){
width=Math.max(width, ctx.measureText(line).width + widthPadding);
};
ctx.font=helpers$1.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);
helpers$1.each(model.title, maxLineWidth);
ctx.font=helpers$1.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);
helpers$1.each(model.beforeBody.concat(model.afterBody), maxLineWidth);
widthPadding=model.displayColors ? (bodyFontSize + 2):0;
helpers$1.each(body, function(bodyItem){
helpers$1.each(bodyItem.before, maxLineWidth);
helpers$1.each(bodyItem.lines, maxLineWidth);
helpers$1.each(bodyItem.after, maxLineWidth);
});
widthPadding=0;
ctx.font=helpers$1.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);
helpers$1.each(model.footer, maxLineWidth);
width +=2 * model.xPadding;
return {
width: width,
height: height
};}
function determineAlignment(tooltip, size){
var model=tooltip._model;
var chart=tooltip._chart;
var chartArea=tooltip._chart.chartArea;
var xAlign='center';
var yAlign='center';
if(model.y < size.height){
yAlign='top';
}else if(model.y > (chart.height - size.height)){
yAlign='bottom';
}
var lf, rf;
var olf, orf;
var yf;
var midX=(chartArea.left + chartArea.right) / 2;
var midY=(chartArea.top + chartArea.bottom) / 2;
if(yAlign==='center'){
lf=function(x){
return x <=midX;
};
rf=function(x){
return x > midX;
};}else{
lf=function(x){
return x <=(size.width / 2);
};
rf=function(x){
return x >=(chart.width - (size.width / 2));
};}
olf=function(x){
return x + size.width + model.caretSize + model.caretPadding > chart.width;
};
orf=function(x){
return x - size.width - model.caretSize - model.caretPadding < 0;
};
yf=function(y){
return y <=midY ? 'top':'bottom';
};
if(lf(model.x)){
xAlign='left';
if(olf(model.x)){
xAlign='center';
yAlign=yf(model.y);
}}else if(rf(model.x)){
xAlign='right';
if(orf(model.x)){
xAlign='center';
yAlign=yf(model.y);
}}
var opts=tooltip._options;
return {
xAlign: opts.xAlign ? opts.xAlign:xAlign,
yAlign: opts.yAlign ? opts.yAlign:yAlign
};}
function getBackgroundPoint(vm, size, alignment, chart){
var x=vm.x;
var y=vm.y;
var caretSize=vm.caretSize;
var caretPadding=vm.caretPadding;
var cornerRadius=vm.cornerRadius;
var xAlign=alignment.xAlign;
var yAlign=alignment.yAlign;
var paddingAndSize=caretSize + caretPadding;
var radiusAndPadding=cornerRadius + caretPadding;
if(xAlign==='right'){
x -=size.width;
}else if(xAlign==='center'){
x -=(size.width / 2);
if(x + size.width > chart.width){
x=chart.width - size.width;
}
if(x < 0){
x=0;
}}
if(yAlign==='top'){
y +=paddingAndSize;
}else if(yAlign==='bottom'){
y -=size.height + paddingAndSize;
}else{
y -=(size.height / 2);
}
if(yAlign==='center'){
if(xAlign==='left'){
x +=paddingAndSize;
}else if(xAlign==='right'){
x -=paddingAndSize;
}}else if(xAlign==='left'){
x -=radiusAndPadding;
}else if(xAlign==='right'){
x +=radiusAndPadding;
}
return {
x: x,
y: y
};}
function getAlignedX(vm, align){
return align==='center'
? vm.x + vm.width / 2
: align==='right'
? vm.x + vm.width - vm.xPadding
: vm.x + vm.xPadding;
}
function getBeforeAfterBodyLines(callback){
return pushOrConcat([], splitNewlines(callback));
}
var exports$3=core_element.extend({
initialize: function(){
this._model=getBaseModel(this._options);
this._lastActive=[];
},
getTitle: function(){
var me=this;
var opts=me._options;
var callbacks=opts.callbacks;
var beforeTitle=callbacks.beforeTitle.apply(me, arguments);
var title=callbacks.title.apply(me, arguments);
var afterTitle=callbacks.afterTitle.apply(me, arguments);
var lines=[];
lines=pushOrConcat(lines, splitNewlines(beforeTitle));
lines=pushOrConcat(lines, splitNewlines(title));
lines=pushOrConcat(lines, splitNewlines(afterTitle));
return lines;
},
getBeforeBody: function(){
return getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));
},
getBody: function(tooltipItems, data){
var me=this;
var callbacks=me._options.callbacks;
var bodyItems=[];
helpers$1.each(tooltipItems, function(tooltipItem){
var bodyItem={
before: [],
lines: [],
after: []
};
pushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));
pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));
pushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));
bodyItems.push(bodyItem);
});
return bodyItems;
},
getAfterBody: function(){
return getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));
},
getFooter: function(){
var me=this;
var callbacks=me._options.callbacks;
var beforeFooter=callbacks.beforeFooter.apply(me, arguments);
var footer=callbacks.footer.apply(me, arguments);
var afterFooter=callbacks.afterFooter.apply(me, arguments);
var lines=[];
lines=pushOrConcat(lines, splitNewlines(beforeFooter));
lines=pushOrConcat(lines, splitNewlines(footer));
lines=pushOrConcat(lines, splitNewlines(afterFooter));
return lines;
},
update: function(changed){
var me=this;
var opts=me._options;
var existingModel=me._model;
var model=me._model=getBaseModel(opts);
var active=me._active;
var data=me._data;
var alignment={
xAlign: existingModel.xAlign,
yAlign: existingModel.yAlign
};
var backgroundPoint={
x: existingModel.x,
y: existingModel.y
};
var tooltipSize={
width: existingModel.width,
height: existingModel.height
};
var tooltipPosition={
x: existingModel.caretX,
y: existingModel.caretY
};
var i, len;
if(active.length){
model.opacity=1;
var labelColors=[];
var labelTextColors=[];
tooltipPosition=positioners[opts.position].call(me, active, me._eventPosition);
var tooltipItems=[];
for (i=0, len=active.length; i < len; ++i){
tooltipItems.push(createTooltipItem(active[i]));
}
if(opts.filter){
tooltipItems=tooltipItems.filter(function(a){
return opts.filter(a, data);
});
}
if(opts.itemSort){
tooltipItems=tooltipItems.sort(function(a, b){
return opts.itemSort(a, b, data);
});
}
helpers$1.each(tooltipItems, function(tooltipItem){
labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));
labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));
});
model.title=me.getTitle(tooltipItems, data);
model.beforeBody=me.getBeforeBody(tooltipItems, data);
model.body=me.getBody(tooltipItems, data);
model.afterBody=me.getAfterBody(tooltipItems, data);
model.footer=me.getFooter(tooltipItems, data);
model.x=tooltipPosition.x;
model.y=tooltipPosition.y;
model.caretPadding=opts.caretPadding;
model.labelColors=labelColors;
model.labelTextColors=labelTextColors;
model.dataPoints=tooltipItems;
tooltipSize=getTooltipSize(this, model);
alignment=determineAlignment(this, tooltipSize);
backgroundPoint=getBackgroundPoint(model, tooltipSize, alignment, me._chart);
}else{
model.opacity=0;
}
model.xAlign=alignment.xAlign;
model.yAlign=alignment.yAlign;
model.x=backgroundPoint.x;
model.y=backgroundPoint.y;
model.width=tooltipSize.width;
model.height=tooltipSize.height;
model.caretX=tooltipPosition.x;
model.caretY=tooltipPosition.y;
me._model=model;
if(changed&&opts.custom){
opts.custom.call(me, model);
}
return me;
},
drawCaret: function(tooltipPoint, size){
var ctx=this._chart.ctx;
var vm=this._view;
var caretPosition=this.getCaretPosition(tooltipPoint, size, vm);
ctx.lineTo(caretPosition.x1, caretPosition.y1);
ctx.lineTo(caretPosition.x2, caretPosition.y2);
ctx.lineTo(caretPosition.x3, caretPosition.y3);
},
getCaretPosition: function(tooltipPoint, size, vm){
var x1, x2, x3, y1, y2, y3;
var caretSize=vm.caretSize;
var cornerRadius=vm.cornerRadius;
var xAlign=vm.xAlign;
var yAlign=vm.yAlign;
var ptX=tooltipPoint.x;
var ptY=tooltipPoint.y;
var width=size.width;
var height=size.height;
if(yAlign==='center'){
y2=ptY + (height / 2);
if(xAlign==='left'){
x1=ptX;
x2=x1 - caretSize;
x3=x1;
y1=y2 + caretSize;
y3=y2 - caretSize;
}else{
x1=ptX + width;
x2=x1 + caretSize;
x3=x1;
y1=y2 - caretSize;
y3=y2 + caretSize;
}}else{
if(xAlign==='left'){
x2=ptX + cornerRadius + (caretSize);
x1=x2 - caretSize;
x3=x2 + caretSize;
}else if(xAlign==='right'){
x2=ptX + width - cornerRadius - caretSize;
x1=x2 - caretSize;
x3=x2 + caretSize;
}else{
x2=vm.caretX;
x1=x2 - caretSize;
x3=x2 + caretSize;
}
if(yAlign==='top'){
y1=ptY;
y2=y1 - caretSize;
y3=y1;
}else{
y1=ptY + height;
y2=y1 + caretSize;
y3=y1;
var tmp=x3;
x3=x1;
x1=tmp;
}}
return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};},
drawTitle: function(pt, vm, ctx){
var title=vm.title;
if(title.length){
pt.x=getAlignedX(vm, vm._titleAlign);
ctx.textAlign=vm._titleAlign;
ctx.textBaseline='top';
var titleFontSize=vm.titleFontSize;
var titleSpacing=vm.titleSpacing;
ctx.fillStyle=vm.titleFontColor;
ctx.font=helpers$1.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);
var i, len;
for (i=0, len=title.length; i < len; ++i){
ctx.fillText(title[i], pt.x, pt.y);
pt.y +=titleFontSize + titleSpacing;
if(i + 1===title.length){
pt.y +=vm.titleMarginBottom - titleSpacing;
}}
}},
drawBody: function(pt, vm, ctx){
var bodyFontSize=vm.bodyFontSize;
var bodySpacing=vm.bodySpacing;
var bodyAlign=vm._bodyAlign;
var body=vm.body;
var drawColorBoxes=vm.displayColors;
var labelColors=vm.labelColors;
var xLinePadding=0;
var colorX=drawColorBoxes ? getAlignedX(vm, 'left'):0;
var textColor;
ctx.textAlign=bodyAlign;
ctx.textBaseline='top';
ctx.font=helpers$1.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);
pt.x=getAlignedX(vm, bodyAlign);
var fillLineOfText=function(line){
ctx.fillText(line, pt.x + xLinePadding, pt.y);
pt.y +=bodyFontSize + bodySpacing;
};
ctx.fillStyle=vm.bodyFontColor;
helpers$1.each(vm.beforeBody, fillLineOfText);
xLinePadding=drawColorBoxes&&bodyAlign!=='right'
? bodyAlign==='center' ? (bodyFontSize / 2 + 1):(bodyFontSize + 2)
: 0;
helpers$1.each(body, function(bodyItem, i){
textColor=vm.labelTextColors[i];
ctx.fillStyle=textColor;
helpers$1.each(bodyItem.before, fillLineOfText);
helpers$1.each(bodyItem.lines, function(line){
if(drawColorBoxes){
ctx.fillStyle=vm.legendColorBackground;
ctx.fillRect(colorX, pt.y, bodyFontSize, bodyFontSize);
ctx.lineWidth=1;
ctx.strokeStyle=labelColors[i].borderColor;
ctx.strokeRect(colorX, pt.y, bodyFontSize, bodyFontSize);
ctx.fillStyle=labelColors[i].backgroundColor;
ctx.fillRect(colorX + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);
ctx.fillStyle=textColor;
}
fillLineOfText(line);
});
helpers$1.each(bodyItem.after, fillLineOfText);
});
xLinePadding=0;
helpers$1.each(vm.afterBody, fillLineOfText);
pt.y -=bodySpacing;
},
drawFooter: function(pt, vm, ctx){
var footer=vm.footer;
if(footer.length){
pt.x=getAlignedX(vm, vm._footerAlign);
pt.y +=vm.footerMarginTop;
ctx.textAlign=vm._footerAlign;
ctx.textBaseline='top';
ctx.fillStyle=vm.footerFontColor;
ctx.font=helpers$1.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);
helpers$1.each(footer, function(line){
ctx.fillText(line, pt.x, pt.y);
pt.y +=vm.footerFontSize + vm.footerSpacing;
});
}},
drawBackground: function(pt, vm, ctx, tooltipSize){
ctx.fillStyle=vm.backgroundColor;
ctx.strokeStyle=vm.borderColor;
ctx.lineWidth=vm.borderWidth;
var xAlign=vm.xAlign;
var yAlign=vm.yAlign;
var x=pt.x;
var y=pt.y;
var width=tooltipSize.width;
var height=tooltipSize.height;
var radius=vm.cornerRadius;
ctx.beginPath();
ctx.moveTo(x + radius, y);
if(yAlign==='top'){
this.drawCaret(pt, tooltipSize);
}
ctx.lineTo(x + width - radius, y);
ctx.quadraticCurveTo(x + width, y, x + width, y + radius);
if(yAlign==='center'&&xAlign==='right'){
this.drawCaret(pt, tooltipSize);
}
ctx.lineTo(x + width, y + height - radius);
ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
if(yAlign==='bottom'){
this.drawCaret(pt, tooltipSize);
}
ctx.lineTo(x + radius, y + height);
ctx.quadraticCurveTo(x, y + height, x, y + height - radius);
if(yAlign==='center'&&xAlign==='left'){
this.drawCaret(pt, tooltipSize);
}
ctx.lineTo(x, y + radius);
ctx.quadraticCurveTo(x, y, x + radius, y);
ctx.closePath();
ctx.fill();
if(vm.borderWidth > 0){
ctx.stroke();
}},
draw: function(){
var ctx=this._chart.ctx;
var vm=this._view;
if(vm.opacity===0){
return;
}
var tooltipSize={
width: vm.width,
height: vm.height
};
var pt={
x: vm.x,
y: vm.y
};
var opacity=Math.abs(vm.opacity < 1e-3) ? 0:vm.opacity;
var hasTooltipContent=vm.title.length||vm.beforeBody.length||vm.body.length||vm.afterBody.length||vm.footer.length;
if(this._options.enabled&&hasTooltipContent){
ctx.save();
ctx.globalAlpha=opacity;
this.drawBackground(pt, vm, ctx, tooltipSize);
pt.y +=vm.yPadding;
this.drawTitle(pt, vm, ctx);
this.drawBody(pt, vm, ctx);
this.drawFooter(pt, vm, ctx);
ctx.restore();
}},
handleEvent: function(e){
var me=this;
var options=me._options;
var changed=false;
me._lastActive=me._lastActive||[];
if(e.type==='mouseout'){
me._active=[];
}else{
me._active=me._chart.getElementsAtEventForMode(e, options.mode, options);
}
changed = !helpers$1.arrayEquals(me._active, me._lastActive);
if(changed){
me._lastActive=me._active;
if(options.enabled||options.custom){
me._eventPosition={
x: e.x,
y: e.y
};
me.update(true);
me.pivot();
}}
return changed;
}});
var positioners_1=positioners;
var core_tooltip=exports$3;
core_tooltip.positioners=positioners_1;
var valueOrDefault$8=helpers$1.valueOrDefault;
core_defaults._set('global', {
elements: {},
events: [
'mousemove',
'mouseout',
'click',
'touchstart',
'touchmove'
],
hover: {
onHover: null,
mode: 'nearest',
intersect: true,
animationDuration: 400
},
onClick: null,
maintainAspectRatio: true,
responsive: true,
responsiveAnimationDuration: 0
});
function mergeScaleConfig(){
return helpers$1.merge({}, [].slice.call(arguments), {
merger: function(key, target, source, options){
if(key==='xAxes'||key==='yAxes'){
var slen=source[key].length;
var i, type, scale;
if(!target[key]){
target[key]=[];
}
for (i=0; i < slen; ++i){
scale=source[key][i];
type=valueOrDefault$8(scale.type, key==='xAxes' ? 'category':'linear');
if(i >=target[key].length){
target[key].push({});
}
if(!target[key][i].type||(scale.type&&scale.type!==target[key][i].type)){
helpers$1.merge(target[key][i], [core_scaleService.getScaleDefaults(type), scale]);
}else{
helpers$1.merge(target[key][i], scale);
}}
}else{
helpers$1._merger(key, target, source, options);
}}
});
}
function mergeConfig(){
return helpers$1.merge({}, [].slice.call(arguments), {
merger: function(key, target, source, options){
var tval=target[key]||{};
var sval=source[key];
if(key==='scales'){
target[key]=mergeScaleConfig(tval, sval);
}else if(key==='scale'){
target[key]=helpers$1.merge(tval, [core_scaleService.getScaleDefaults(sval.type), sval]);
}else{
helpers$1._merger(key, target, source, options);
}}
});
}
function initConfig(config){
config=config||{};
var data=config.data=config.data||{};
data.datasets=data.datasets||[];
data.labels=data.labels||[];
config.options=mergeConfig(
core_defaults.global,
core_defaults[config.type],
config.options||{});
return config;
}
function updateConfig(chart){
var newOptions=chart.options;
helpers$1.each(chart.scales, function(scale){
core_layouts.removeBox(chart, scale);
});
newOptions=mergeConfig(
core_defaults.global,
core_defaults[chart.config.type],
newOptions);
chart.options=chart.config.options=newOptions;
chart.ensureScalesHaveIDs();
chart.buildOrUpdateScales();
chart.tooltip._options=newOptions.tooltips;
chart.tooltip.initialize();
}
function positionIsHorizontal(position){
return position==='top'||position==='bottom';
}
var Chart=function(item, config){
this.construct(item, config);
return this;
};
helpers$1.extend(Chart.prototype,  {
construct: function(item, config){
var me=this;
config=initConfig(config);
var context=platform.acquireContext(item, config);
var canvas=context&&context.canvas;
var height=canvas&&canvas.height;
var width=canvas&&canvas.width;
me.id=helpers$1.uid();
me.ctx=context;
me.canvas=canvas;
me.config=config;
me.width=width;
me.height=height;
me.aspectRatio=height ? width / height:null;
me.options=config.options;
me._bufferedRender=false;
me.chart=me;
me.controller=me;
Chart.instances[me.id]=me;
Object.defineProperty(me, 'data', {
get: function(){
return me.config.data;
},
set: function(value){
me.config.data=value;
}});
if(!context||!canvas){
console.error("Failed to create chart: can't acquire context from the given item");
return;
}
me.initialize();
me.update();
},
initialize: function(){
var me=this;
core_plugins.notify(me, 'beforeInit');
helpers$1.retinaScale(me, me.options.devicePixelRatio);
me.bindEvents();
if(me.options.responsive){
me.resize(true);
}
me.ensureScalesHaveIDs();
me.buildOrUpdateScales();
me.initToolTip();
core_plugins.notify(me, 'afterInit');
return me;
},
clear: function(){
helpers$1.canvas.clear(this);
return this;
},
stop: function(){
core_animations.cancelAnimation(this);
return this;
},
resize: function(silent){
var me=this;
var options=me.options;
var canvas=me.canvas;
var aspectRatio=(options.maintainAspectRatio&&me.aspectRatio)||null;
var newWidth=Math.max(0, Math.floor(helpers$1.getMaximumWidth(canvas)));
var newHeight=Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio:helpers$1.getMaximumHeight(canvas)));
if(me.width===newWidth&&me.height===newHeight){
return;
}
canvas.width=me.width=newWidth;
canvas.height=me.height=newHeight;
canvas.style.width=newWidth + 'px';
canvas.style.height=newHeight + 'px';
helpers$1.retinaScale(me, options.devicePixelRatio);
if(!silent){
var newSize={width: newWidth, height: newHeight};
core_plugins.notify(me, 'resize', [newSize]);
if(options.onResize){
options.onResize(me, newSize);
}
me.stop();
me.update({
duration: options.responsiveAnimationDuration
});
}},
ensureScalesHaveIDs: function(){
var options=this.options;
var scalesOptions=options.scales||{};
var scaleOptions=options.scale;
helpers$1.each(scalesOptions.xAxes, function(xAxisOptions, index){
xAxisOptions.id=xAxisOptions.id||('x-axis-' + index);
});
helpers$1.each(scalesOptions.yAxes, function(yAxisOptions, index){
yAxisOptions.id=yAxisOptions.id||('y-axis-' + index);
});
if(scaleOptions){
scaleOptions.id=scaleOptions.id||'scale';
}},
buildOrUpdateScales: function(){
var me=this;
var options=me.options;
var scales=me.scales||{};
var items=[];
var updated=Object.keys(scales).reduce(function(obj, id){
obj[id]=false;
return obj;
}, {});
if(options.scales){
items=items.concat((options.scales.xAxes||[]).map(function(xAxisOptions){
return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};}),
(options.scales.yAxes||[]).map(function(yAxisOptions){
return {options: yAxisOptions, dtype: 'linear', dposition: 'left'};})
);
}
if(options.scale){
items.push({
options: options.scale,
dtype: 'radialLinear',
isDefault: true,
dposition: 'chartArea'
});
}
helpers$1.each(items, function(item){
var scaleOptions=item.options;
var id=scaleOptions.id;
var scaleType=valueOrDefault$8(scaleOptions.type, item.dtype);
if(positionIsHorizontal(scaleOptions.position)!==positionIsHorizontal(item.dposition)){
scaleOptions.position=item.dposition;
}
updated[id]=true;
var scale=null;
if(id in scales&&scales[id].type===scaleType){
scale=scales[id];
scale.options=scaleOptions;
scale.ctx=me.ctx;
scale.chart=me;
}else{
var scaleClass=core_scaleService.getScaleConstructor(scaleType);
if(!scaleClass){
return;
}
scale=new scaleClass({
id: id,
type: scaleType,
options: scaleOptions,
ctx: me.ctx,
chart: me
});
scales[scale.id]=scale;
}
scale.mergeTicksOptions();
if(item.isDefault){
me.scale=scale;
}});
helpers$1.each(updated, function(hasUpdated, id){
if(!hasUpdated){
delete scales[id];
}});
me.scales=scales;
core_scaleService.addScalesToLayout(this);
},
buildOrUpdateControllers: function(){
var me=this;
var newControllers=[];
helpers$1.each(me.data.datasets, function(dataset, datasetIndex){
var meta=me.getDatasetMeta(datasetIndex);
var type=dataset.type||me.config.type;
if(meta.type&&meta.type!==type){
me.destroyDatasetMeta(datasetIndex);
meta=me.getDatasetMeta(datasetIndex);
}
meta.type=type;
if(meta.controller){
meta.controller.updateIndex(datasetIndex);
meta.controller.linkScales();
}else{
var ControllerClass=controllers[meta.type];
if(ControllerClass===undefined){
throw new Error('"' + meta.type + '" is not a chart type.');
}
meta.controller=new ControllerClass(me, datasetIndex);
newControllers.push(meta.controller);
}}, me);
return newControllers;
},
resetElements: function(){
var me=this;
helpers$1.each(me.data.datasets, function(dataset, datasetIndex){
me.getDatasetMeta(datasetIndex).controller.reset();
}, me);
},
reset: function(){
this.resetElements();
this.tooltip.initialize();
},
update: function(config){
var me=this;
if(!config||typeof config!=='object'){
config={
duration: config,
lazy: arguments[1]
};}
updateConfig(me);
core_plugins._invalidate(me);
if(core_plugins.notify(me, 'beforeUpdate')===false){
return;
}
me.tooltip._data=me.data;
var newControllers=me.buildOrUpdateControllers();
helpers$1.each(me.data.datasets, function(dataset, datasetIndex){
me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();
}, me);
me.updateLayout();
if(me.options.animation&&me.options.animation.duration){
helpers$1.each(newControllers, function(controller){
controller.reset();
});
}
me.updateDatasets();
me.tooltip.initialize();
me.lastActive=[];
core_plugins.notify(me, 'afterUpdate');
if(me._bufferedRender){
me._bufferedRequest={
duration: config.duration,
easing: config.easing,
lazy: config.lazy
};}else{
me.render(config);
}},
updateLayout: function(){
var me=this;
if(core_plugins.notify(me, 'beforeLayout')===false){
return;
}
core_layouts.update(this, this.width, this.height);
core_plugins.notify(me, 'afterScaleUpdate');
core_plugins.notify(me, 'afterLayout');
},
updateDatasets: function(){
var me=this;
if(core_plugins.notify(me, 'beforeDatasetsUpdate')===false){
return;
}
for (var i=0, ilen=me.data.datasets.length; i < ilen; ++i){
me.updateDataset(i);
}
core_plugins.notify(me, 'afterDatasetsUpdate');
},
updateDataset: function(index){
var me=this;
var meta=me.getDatasetMeta(index);
var args={
meta: meta,
index: index
};
if(core_plugins.notify(me, 'beforeDatasetUpdate', [args])===false){
return;
}
meta.controller.update();
core_plugins.notify(me, 'afterDatasetUpdate', [args]);
},
render: function(config){
var me=this;
if(!config||typeof config!=='object'){
config={
duration: config,
lazy: arguments[1]
};}
var animationOptions=me.options.animation;
var duration=valueOrDefault$8(config.duration, animationOptions&&animationOptions.duration);
var lazy=config.lazy;
if(core_plugins.notify(me, 'beforeRender')===false){
return;
}
var onComplete=function(animation){
core_plugins.notify(me, 'afterRender');
helpers$1.callback(animationOptions&&animationOptions.onComplete, [animation], me);
};
if(animationOptions&&duration){
var animation=new core_animation({
numSteps: duration / 16.66,
easing: config.easing||animationOptions.easing,
render: function(chart, animationObject){
var easingFunction=helpers$1.easing.effects[animationObject.easing];
var currentStep=animationObject.currentStep;
var stepDecimal=currentStep / animationObject.numSteps;
chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);
},
onAnimationProgress: animationOptions.onProgress,
onAnimationComplete: onComplete
});
core_animations.addAnimation(me, animation, duration, lazy);
}else{
me.draw();
onComplete(new core_animation({numSteps: 0, chart: me}));
}
return me;
},
draw: function(easingValue){
var me=this;
me.clear();
if(helpers$1.isNullOrUndef(easingValue)){
easingValue=1;
}
me.transition(easingValue);
if(me.width <=0||me.height <=0){
return;
}
if(core_plugins.notify(me, 'beforeDraw', [easingValue])===false){
return;
}
helpers$1.each(me.boxes, function(box){
box.draw(me.chartArea);
}, me);
me.drawDatasets(easingValue);
me._drawTooltip(easingValue);
core_plugins.notify(me, 'afterDraw', [easingValue]);
},
transition: function(easingValue){
var me=this;
for (var i=0, ilen=(me.data.datasets||[]).length; i < ilen; ++i){
if(me.isDatasetVisible(i)){
me.getDatasetMeta(i).controller.transition(easingValue);
}}
me.tooltip.transition(easingValue);
},
drawDatasets: function(easingValue){
var me=this;
if(core_plugins.notify(me, 'beforeDatasetsDraw', [easingValue])===false){
return;
}
for (var i=(me.data.datasets||[]).length - 1; i >=0; --i){
if(me.isDatasetVisible(i)){
me.drawDataset(i, easingValue);
}}
core_plugins.notify(me, 'afterDatasetsDraw', [easingValue]);
},
drawDataset: function(index, easingValue){
var me=this;
var meta=me.getDatasetMeta(index);
var args={
meta: meta,
index: index,
easingValue: easingValue
};
if(core_plugins.notify(me, 'beforeDatasetDraw', [args])===false){
return;
}
meta.controller.draw(easingValue);
core_plugins.notify(me, 'afterDatasetDraw', [args]);
},
_drawTooltip: function(easingValue){
var me=this;
var tooltip=me.tooltip;
var args={
tooltip: tooltip,
easingValue: easingValue
};
if(core_plugins.notify(me, 'beforeTooltipDraw', [args])===false){
return;
}
tooltip.draw();
core_plugins.notify(me, 'afterTooltipDraw', [args]);
},
getElementAtEvent: function(e){
return core_interaction.modes.single(this, e);
},
getElementsAtEvent: function(e){
return core_interaction.modes.label(this, e, {intersect: true});
},
getElementsAtXAxis: function(e){
return core_interaction.modes['x-axis'](this, e, {intersect: true});
},
getElementsAtEventForMode: function(e, mode, options){
var method=core_interaction.modes[mode];
if(typeof method==='function'){
return method(this, e, options);
}
return [];
},
getDatasetAtEvent: function(e){
return core_interaction.modes.dataset(this, e, {intersect: true});
},
getDatasetMeta: function(datasetIndex){
var me=this;
var dataset=me.data.datasets[datasetIndex];
if(!dataset._meta){
dataset._meta={};}
var meta=dataset._meta[me.id];
if(!meta){
meta=dataset._meta[me.id]={
type: null,
data: [],
dataset: null,
controller: null,
hidden: null,
xAxisID: null,
yAxisID: null
};}
return meta;
},
getVisibleDatasetCount: function(){
var count=0;
for (var i=0, ilen=this.data.datasets.length; i < ilen; ++i){
if(this.isDatasetVisible(i)){
count++;
}}
return count;
},
isDatasetVisible: function(datasetIndex){
var meta=this.getDatasetMeta(datasetIndex);
return typeof meta.hidden==='boolean' ? !meta.hidden:!this.data.datasets[datasetIndex].hidden;
},
generateLegend: function(){
return this.options.legendCallback(this);
},
destroyDatasetMeta: function(datasetIndex){
var id=this.id;
var dataset=this.data.datasets[datasetIndex];
var meta=dataset._meta&&dataset._meta[id];
if(meta){
meta.controller.destroy();
delete dataset._meta[id];
}},
destroy: function(){
var me=this;
var canvas=me.canvas;
var i, ilen;
me.stop();
for (i=0, ilen=me.data.datasets.length; i < ilen; ++i){
me.destroyDatasetMeta(i);
}
if(canvas){
me.unbindEvents();
helpers$1.canvas.clear(me);
platform.releaseContext(me.ctx);
me.canvas=null;
me.ctx=null;
}
core_plugins.notify(me, 'destroy');
delete Chart.instances[me.id];
},
toBase64Image: function(){
return this.canvas.toDataURL.apply(this.canvas, arguments);
},
initToolTip: function(){
var me=this;
me.tooltip=new core_tooltip({
_chart: me,
_chartInstance: me,
_data: me.data,
_options: me.options.tooltips
}, me);
},
bindEvents: function(){
var me=this;
var listeners=me._listeners={};
var listener=function(){
me.eventHandler.apply(me, arguments);
};
helpers$1.each(me.options.events, function(type){
platform.addEventListener(me, type, listener);
listeners[type]=listener;
});
if(me.options.responsive){
listener=function(){
me.resize();
};
platform.addEventListener(me, 'resize', listener);
listeners.resize=listener;
}},
unbindEvents: function(){
var me=this;
var listeners=me._listeners;
if(!listeners){
return;
}
delete me._listeners;
helpers$1.each(listeners, function(listener, type){
platform.removeEventListener(me, type, listener);
});
},
updateHoverStyle: function(elements, mode, enabled){
var method=enabled ? 'setHoverStyle':'removeHoverStyle';
var element, i, ilen;
for (i=0, ilen=elements.length; i < ilen; ++i){
element=elements[i];
if(element){
this.getDatasetMeta(element._datasetIndex).controller[method](element);
}}
},
eventHandler: function(e){
var me=this;
var tooltip=me.tooltip;
if(core_plugins.notify(me, 'beforeEvent', [e])===false){
return;
}
me._bufferedRender=true;
me._bufferedRequest=null;
var changed=me.handleEvent(e);
if(tooltip){
changed=tooltip._start
? tooltip.handleEvent(e)
: changed | tooltip.handleEvent(e);
}
core_plugins.notify(me, 'afterEvent', [e]);
var bufferedRequest=me._bufferedRequest;
if(bufferedRequest){
me.render(bufferedRequest);
}else if(changed&&!me.animating){
me.stop();
me.render({
duration: me.options.hover.animationDuration,
lazy: true
});
}
me._bufferedRender=false;
me._bufferedRequest=null;
return me;
},
handleEvent: function(e){
var me=this;
var options=me.options||{};
var hoverOptions=options.hover;
var changed=false;
me.lastActive=me.lastActive||[];
if(e.type==='mouseout'){
me.active=[];
}else{
me.active=me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);
}
helpers$1.callback(options.onHover||options.hover.onHover, [e.native, me.active], me);
if(e.type==='mouseup'||e.type==='click'){
if(options.onClick){
options.onClick.call(me, e.native, me.active);
}}
if(me.lastActive.length){
me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);
}
if(me.active.length&&hoverOptions.mode){
me.updateHoverStyle(me.active, hoverOptions.mode, true);
}
changed = !helpers$1.arrayEquals(me.active, me.lastActive);
me.lastActive=me.active;
return changed;
}});
Chart.instances={};
var core_controller=Chart;
Chart.Controller=Chart;
Chart.types={};
helpers$1.configMerge=mergeConfig;
helpers$1.scaleMerge=mergeScaleConfig;
var core_helpers=function(){
helpers$1.where=function(collection, filterCallback){
if(helpers$1.isArray(collection)&&Array.prototype.filter){
return collection.filter(filterCallback);
}
var filtered=[];
helpers$1.each(collection, function(item){
if(filterCallback(item)){
filtered.push(item);
}});
return filtered;
};
helpers$1.findIndex=Array.prototype.findIndex ?
function(array, callback, scope){
return array.findIndex(callback, scope);
} :
function(array, callback, scope){
scope=scope===undefined ? array:scope;
for (var i=0, ilen=array.length; i < ilen; ++i){
if(callback.call(scope, array[i], i, array)){
return i;
}}
return -1;
};
helpers$1.findNextWhere=function(arrayToSearch, filterCallback, startIndex){
if(helpers$1.isNullOrUndef(startIndex)){
startIndex=-1;
}
for (var i=startIndex + 1; i < arrayToSearch.length; i++){
var currentItem=arrayToSearch[i];
if(filterCallback(currentItem)){
return currentItem;
}}
};
helpers$1.findPreviousWhere=function(arrayToSearch, filterCallback, startIndex){
if(helpers$1.isNullOrUndef(startIndex)){
startIndex=arrayToSearch.length;
}
for (var i=startIndex - 1; i >=0; i--){
var currentItem=arrayToSearch[i];
if(filterCallback(currentItem)){
return currentItem;
}}
};
helpers$1.isNumber=function(n){
return !isNaN(parseFloat(n))&&isFinite(n);
};
helpers$1.almostEquals=function(x, y, epsilon){
return Math.abs(x - y) < epsilon;
};
helpers$1.almostWhole=function(x, epsilon){
var rounded=Math.round(x);
return (((rounded - epsilon) < x)&&((rounded + epsilon) > x));
};
helpers$1.max=function(array){
return array.reduce(function(max, value){
if(!isNaN(value)){
return Math.max(max, value);
}
return max;
}, Number.NEGATIVE_INFINITY);
};
helpers$1.min=function(array){
return array.reduce(function(min, value){
if(!isNaN(value)){
return Math.min(min, value);
}
return min;
}, Number.POSITIVE_INFINITY);
};
helpers$1.sign=Math.sign ?
function(x){
return Math.sign(x);
} :
function(x){
x=+x;
if(x===0||isNaN(x)){
return x;
}
return x > 0 ? 1:-1;
};
helpers$1.log10=Math.log10 ?
function(x){
return Math.log10(x);
} :
function(x){
var exponent=Math.log(x) * Math.LOG10E;
var powerOf10=Math.round(exponent);
var isPowerOf10=x===Math.pow(10, powerOf10);
return isPowerOf10 ? powerOf10:exponent;
};
helpers$1.toRadians=function(degrees){
return degrees * (Math.PI / 180);
};
helpers$1.toDegrees=function(radians){
return radians * (180 / Math.PI);
};
helpers$1._decimalPlaces=function(x){
if(!helpers$1.isFinite(x)){
return;
}
var e=1;
var p=0;
while (Math.round(x * e) / e!==x){
e *=10;
p++;
}
return p;
};
helpers$1.getAngleFromPoint=function(centrePoint, anglePoint){
var distanceFromXCenter=anglePoint.x - centrePoint.x;
var distanceFromYCenter=anglePoint.y - centrePoint.y;
var radialDistanceFromCenter=Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);
var angle=Math.atan2(distanceFromYCenter, distanceFromXCenter);
if(angle < (-0.5 * Math.PI)){
angle +=2.0 * Math.PI;
}
return {
angle: angle,
distance: radialDistanceFromCenter
};};
helpers$1.distanceBetweenPoints=function(pt1, pt2){
return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));
};
helpers$1.aliasPixel=function(pixelWidth){
return (pixelWidth % 2===0) ? 0:0.5;
};
helpers$1._alignPixel=function(chart, pixel, width){
var devicePixelRatio=chart.currentDevicePixelRatio;
var halfWidth=width / 2;
return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;
};
helpers$1.splineCurve=function(firstPoint, middlePoint, afterPoint, t){
var previous=firstPoint.skip ? middlePoint:firstPoint;
var current=middlePoint;
var next=afterPoint.skip ? middlePoint:afterPoint;
var d01=Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));
var d12=Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));
var s01=d01 / (d01 + d12);
var s12=d12 / (d01 + d12);
s01=isNaN(s01) ? 0:s01;
s12=isNaN(s12) ? 0:s12;
var fa=t * s01;
var fb=t * s12;
return {
previous: {
x: current.x - fa * (next.x - previous.x),
y: current.y - fa * (next.y - previous.y)
},
next: {
x: current.x + fb * (next.x - previous.x),
y: current.y + fb * (next.y - previous.y)
}};};
helpers$1.EPSILON=Number.EPSILON||1e-14;
helpers$1.splineCurveMonotone=function(points){
var pointsWithTangents=(points||[]).map(function(point){
return {
model: point._model,
deltaK: 0,
mK: 0
};});
var pointsLen=pointsWithTangents.length;
var i, pointBefore, pointCurrent, pointAfter;
for (i=0; i < pointsLen; ++i){
pointCurrent=pointsWithTangents[i];
if(pointCurrent.model.skip){
continue;
}
pointBefore=i > 0 ? pointsWithTangents[i - 1]:null;
pointAfter=i < pointsLen - 1 ? pointsWithTangents[i + 1]:null;
if(pointAfter&&!pointAfter.model.skip){
var slopeDeltaX=(pointAfter.model.x - pointCurrent.model.x);
pointCurrent.deltaK=slopeDeltaX!==0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX:0;
}
if(!pointBefore||pointBefore.model.skip){
pointCurrent.mK=pointCurrent.deltaK;
}else if(!pointAfter||pointAfter.model.skip){
pointCurrent.mK=pointBefore.deltaK;
}else if(this.sign(pointBefore.deltaK)!==this.sign(pointCurrent.deltaK)){
pointCurrent.mK=0;
}else{
pointCurrent.mK=(pointBefore.deltaK + pointCurrent.deltaK) / 2;
}}
var alphaK, betaK, tauK, squaredMagnitude;
for (i=0; i < pointsLen - 1; ++i){
pointCurrent=pointsWithTangents[i];
pointAfter=pointsWithTangents[i + 1];
if(pointCurrent.model.skip||pointAfter.model.skip){
continue;
}
if(helpers$1.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)){
pointCurrent.mK=pointAfter.mK=0;
continue;
}
alphaK=pointCurrent.mK / pointCurrent.deltaK;
betaK=pointAfter.mK / pointCurrent.deltaK;
squaredMagnitude=Math.pow(alphaK, 2) + Math.pow(betaK, 2);
if(squaredMagnitude <=9){
continue;
}
tauK=3 / Math.sqrt(squaredMagnitude);
pointCurrent.mK=alphaK * tauK * pointCurrent.deltaK;
pointAfter.mK=betaK * tauK * pointCurrent.deltaK;
}
var deltaX;
for (i=0; i < pointsLen; ++i){
pointCurrent=pointsWithTangents[i];
if(pointCurrent.model.skip){
continue;
}
pointBefore=i > 0 ? pointsWithTangents[i - 1]:null;
pointAfter=i < pointsLen - 1 ? pointsWithTangents[i + 1]:null;
if(pointBefore&&!pointBefore.model.skip){
deltaX=(pointCurrent.model.x - pointBefore.model.x) / 3;
pointCurrent.model.controlPointPreviousX=pointCurrent.model.x - deltaX;
pointCurrent.model.controlPointPreviousY=pointCurrent.model.y - deltaX * pointCurrent.mK;
}
if(pointAfter&&!pointAfter.model.skip){
deltaX=(pointAfter.model.x - pointCurrent.model.x) / 3;
pointCurrent.model.controlPointNextX=pointCurrent.model.x + deltaX;
pointCurrent.model.controlPointNextY=pointCurrent.model.y + deltaX * pointCurrent.mK;
}}
};
helpers$1.nextItem=function(collection, index, loop){
if(loop){
return index >=collection.length - 1 ? collection[0]:collection[index + 1];
}
return index >=collection.length - 1 ? collection[collection.length - 1]:collection[index + 1];
};
helpers$1.previousItem=function(collection, index, loop){
if(loop){
return index <=0 ? collection[collection.length - 1]:collection[index - 1];
}
return index <=0 ? collection[0]:collection[index - 1];
};
helpers$1.niceNum=function(range, round){
var exponent=Math.floor(helpers$1.log10(range));
var fraction=range / Math.pow(10, exponent);
var niceFraction;
if(round){
if(fraction < 1.5){
niceFraction=1;
}else if(fraction < 3){
niceFraction=2;
}else if(fraction < 7){
niceFraction=5;
}else{
niceFraction=10;
}}else if(fraction <=1.0){
niceFraction=1;
}else if(fraction <=2){
niceFraction=2;
}else if(fraction <=5){
niceFraction=5;
}else{
niceFraction=10;
}
return niceFraction * Math.pow(10, exponent);
};
helpers$1.requestAnimFrame=(function(){
if(typeof window==='undefined'){
return function(callback){
callback();
};}
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(callback){
return window.setTimeout(callback, 1000 / 60);
};}());
helpers$1.getRelativePosition=function(evt, chart){
var mouseX, mouseY;
var e=evt.originalEvent||evt;
var canvas=evt.target||evt.srcElement;
var boundingRect=canvas.getBoundingClientRect();
var touches=e.touches;
if(touches&&touches.length > 0){
mouseX=touches[0].clientX;
mouseY=touches[0].clientY;
}else{
mouseX=e.clientX;
mouseY=e.clientY;
}
var paddingLeft=parseFloat(helpers$1.getStyle(canvas, 'padding-left'));
var paddingTop=parseFloat(helpers$1.getStyle(canvas, 'padding-top'));
var paddingRight=parseFloat(helpers$1.getStyle(canvas, 'padding-right'));
var paddingBottom=parseFloat(helpers$1.getStyle(canvas, 'padding-bottom'));
var width=boundingRect.right - boundingRect.left - paddingLeft - paddingRight;
var height=boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;
mouseX=Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);
mouseY=Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);
return {
x: mouseX,
y: mouseY
};};
function parseMaxStyle(styleValue, node, parentProperty){
var valueInPixels;
if(typeof styleValue==='string'){
valueInPixels=parseInt(styleValue, 10);
if(styleValue.indexOf('%')!==-1){
valueInPixels=valueInPixels / 100 * node.parentNode[parentProperty];
}}else{
valueInPixels=styleValue;
}
return valueInPixels;
}
function isConstrainedValue(value){
return value!==undefined&&value!==null&&value!=='none';
}
function getConstraintDimension(domNode, maxStyle, percentageProperty){
var view=document.defaultView;
var parentNode=helpers$1._getParentNode(domNode);
var constrainedNode=view.getComputedStyle(domNode)[maxStyle];
var constrainedContainer=view.getComputedStyle(parentNode)[maxStyle];
var hasCNode=isConstrainedValue(constrainedNode);
var hasCContainer=isConstrainedValue(constrainedContainer);
var infinity=Number.POSITIVE_INFINITY;
if(hasCNode||hasCContainer){
return Math.min(hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty):infinity,
hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty):infinity);
}
return 'none';
}
helpers$1.getConstraintWidth=function(domNode){
return getConstraintDimension(domNode, 'max-width', 'clientWidth');
};
helpers$1.getConstraintHeight=function(domNode){
return getConstraintDimension(domNode, 'max-height', 'clientHeight');
};
helpers$1._calculatePadding=function(container, padding, parentDimension){
padding=helpers$1.getStyle(container, padding);
return padding.indexOf('%') > -1 ? parentDimension * parseInt(padding, 10) / 100:parseInt(padding, 10);
};
helpers$1._getParentNode=function(domNode){
var parent=domNode.parentNode;
if(parent&&parent.toString()==='[object ShadowRoot]'){
parent=parent.host;
}
return parent;
};
helpers$1.getMaximumWidth=function(domNode){
var container=helpers$1._getParentNode(domNode);
if(!container){
return domNode.clientWidth;
}
var clientWidth=container.clientWidth;
var paddingLeft=helpers$1._calculatePadding(container, 'padding-left', clientWidth);
var paddingRight=helpers$1._calculatePadding(container, 'padding-right', clientWidth);
var w=clientWidth - paddingLeft - paddingRight;
var cw=helpers$1.getConstraintWidth(domNode);
return isNaN(cw) ? w:Math.min(w, cw);
};
helpers$1.getMaximumHeight=function(domNode){
var container=helpers$1._getParentNode(domNode);
if(!container){
return domNode.clientHeight;
}
var clientHeight=container.clientHeight;
var paddingTop=helpers$1._calculatePadding(container, 'padding-top', clientHeight);
var paddingBottom=helpers$1._calculatePadding(container, 'padding-bottom', clientHeight);
var h=clientHeight - paddingTop - paddingBottom;
var ch=helpers$1.getConstraintHeight(domNode);
return isNaN(ch) ? h:Math.min(h, ch);
};
helpers$1.getStyle=function(el, property){
return el.currentStyle ?
el.currentStyle[property] :
document.defaultView.getComputedStyle(el, null).getPropertyValue(property);
};
helpers$1.retinaScale=function(chart, forceRatio){
var pixelRatio=chart.currentDevicePixelRatio=forceRatio||(typeof window!=='undefined'&&window.devicePixelRatio)||1;
if(pixelRatio===1){
return;
}
var canvas=chart.canvas;
var height=chart.height;
var width=chart.width;
canvas.height=height * pixelRatio;
canvas.width=width * pixelRatio;
chart.ctx.scale(pixelRatio, pixelRatio);
if(!canvas.style.height&&!canvas.style.width){
canvas.style.height=height + 'px';
canvas.style.width=width + 'px';
}};
helpers$1.fontString=function(pixelSize, fontStyle, fontFamily){
return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;
};
helpers$1.longestText=function(ctx, font, arrayOfThings, cache){
cache=cache||{};
var data=cache.data=cache.data||{};
var gc=cache.garbageCollect=cache.garbageCollect||[];
if(cache.font!==font){
data=cache.data={};
gc=cache.garbageCollect=[];
cache.font=font;
}
ctx.font=font;
var longest=0;
helpers$1.each(arrayOfThings, function(thing){
if(thing!==undefined&&thing!==null&&helpers$1.isArray(thing)!==true){
longest=helpers$1.measureText(ctx, data, gc, longest, thing);
}else if(helpers$1.isArray(thing)){
helpers$1.each(thing, function(nestedThing){
if(nestedThing!==undefined&&nestedThing!==null&&!helpers$1.isArray(nestedThing)){
longest=helpers$1.measureText(ctx, data, gc, longest, nestedThing);
}});
}});
var gcLen=gc.length / 2;
if(gcLen > arrayOfThings.length){
for (var i=0; i < gcLen; i++){
delete data[gc[i]];
}
gc.splice(0, gcLen);
}
return longest;
};
helpers$1.measureText=function(ctx, data, gc, longest, string){
var textWidth=data[string];
if(!textWidth){
textWidth=data[string]=ctx.measureText(string).width;
gc.push(string);
}
if(textWidth > longest){
longest=textWidth;
}
return longest;
};
helpers$1.numberOfLabelLines=function(arrayOfThings){
var numberOfLines=1;
helpers$1.each(arrayOfThings, function(thing){
if(helpers$1.isArray(thing)){
if(thing.length > numberOfLines){
numberOfLines=thing.length;
}}
});
return numberOfLines;
};
helpers$1.color = !chartjsColor ?
function(value){
console.error('Color.js not found!');
return value;
} :
function(value){
if(value instanceof CanvasGradient){
value=core_defaults.global.defaultColor;
}
return chartjsColor(value);
};
helpers$1.getHoverColor=function(colorValue){
return (colorValue instanceof CanvasPattern||colorValue instanceof CanvasGradient) ?
colorValue :
helpers$1.color(colorValue).saturate(0.5).darken(0.1).rgbString();
};};
function abstract(){
throw new Error(
'This method is not implemented: either no adapter can ' +
'be found or an incomplete integration was provided.'
);
}
function DateAdapter(options){
this.options=options||{};}
helpers$1.extend(DateAdapter.prototype,  {
formats: abstract,
parse: abstract,
format: abstract,
add: abstract,
diff: abstract,
startOf: abstract,
endOf: abstract,
_create: function(value){
return value;
}});
DateAdapter.override=function(members){
helpers$1.extend(DateAdapter.prototype, members);
};
var _date=DateAdapter;
var core_adapters={
_date: _date
};
var core_ticks={
formatters: {
values: function(value){
return helpers$1.isArray(value) ? value:'' + value;
},
linear: function(tickValue, index, ticks){
var delta=ticks.length > 3 ? ticks[2] - ticks[1]:ticks[1] - ticks[0];
if(Math.abs(delta) > 1){
if(tickValue!==Math.floor(tickValue)){
delta=tickValue - Math.floor(tickValue);
}}
var logDelta=helpers$1.log10(Math.abs(delta));
var tickString='';
if(tickValue!==0){
var maxTick=Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));
if(maxTick < 1e-4){
var logTick=helpers$1.log10(Math.abs(tickValue));
tickString=tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));
}else{
var numDecimal=-1 * Math.floor(logDelta);
numDecimal=Math.max(Math.min(numDecimal, 20), 0);
tickString=tickValue.toFixed(numDecimal);
}}else{
tickString='0';
}
return tickString;
},
logarithmic: function(tickValue, index, ticks){
var remain=tickValue / (Math.pow(10, Math.floor(helpers$1.log10(tickValue))));
if(tickValue===0){
return '0';
}else if(remain===1||remain===2||remain===5||index===0||index===ticks.length - 1){
return tickValue.toExponential();
}
return '';
}}
};
var valueOrDefault$9=helpers$1.valueOrDefault;
var valueAtIndexOrDefault=helpers$1.valueAtIndexOrDefault;
core_defaults._set('scale', {
display: true,
position: 'left',
offset: false,
gridLines: {
display: true,
color: 'rgba(0, 0, 0, 0.1)',
lineWidth: 1,
drawBorder: true,
drawOnChartArea: true,
drawTicks: true,
tickMarkLength: 10,
zeroLineWidth: 1,
zeroLineColor: 'rgba(0,0,0,0.25)',
zeroLineBorderDash: [],
zeroLineBorderDashOffset: 0.0,
offsetGridLines: false,
borderDash: [],
borderDashOffset: 0.0
},
scaleLabel: {
display: false,
labelString: '',
padding: {
top: 4,
bottom: 4
}},
ticks: {
beginAtZero: false,
minRotation: 0,
maxRotation: 50,
mirror: false,
padding: 0,
reverse: false,
display: true,
autoSkip: true,
autoSkipPadding: 0,
labelOffset: 0,
callback: core_ticks.formatters.values,
minor: {},
major: {}}
});
function labelsFromTicks(ticks){
var labels=[];
var i, ilen;
for (i=0, ilen=ticks.length; i < ilen; ++i){
labels.push(ticks[i].label);
}
return labels;
}
function getPixelForGridLine(scale, index, offsetGridLines){
var lineValue=scale.getPixelForTick(index);
if(offsetGridLines){
if(scale.getTicks().length===1){
lineValue -=scale.isHorizontal() ?
Math.max(lineValue - scale.left, scale.right - lineValue) :
Math.max(lineValue - scale.top, scale.bottom - lineValue);
}else if(index===0){
lineValue -=(scale.getPixelForTick(1) - lineValue) / 2;
}else{
lineValue -=(lineValue - scale.getPixelForTick(index - 1)) / 2;
}}
return lineValue;
}
function computeTextSize(context, tick, font){
return helpers$1.isArray(tick) ?
helpers$1.longestText(context, font, tick) :
context.measureText(tick).width;
}
var core_scale=core_element.extend({
getPadding: function(){
var me=this;
return {
left: me.paddingLeft||0,
top: me.paddingTop||0,
right: me.paddingRight||0,
bottom: me.paddingBottom||0
};},
getTicks: function(){
return this._ticks;
},
mergeTicksOptions: function(){
var ticks=this.options.ticks;
if(ticks.minor===false){
ticks.minor={
display: false
};}
if(ticks.major===false){
ticks.major={
display: false
};}
for (var key in ticks){
if(key!=='major'&&key!=='minor'){
if(typeof ticks.minor[key]==='undefined'){
ticks.minor[key]=ticks[key];
}
if(typeof ticks.major[key]==='undefined'){
ticks.major[key]=ticks[key];
}}
}},
beforeUpdate: function(){
helpers$1.callback(this.options.beforeUpdate, [this]);
},
update: function(maxWidth, maxHeight, margins){
var me=this;
var i, ilen, labels, label, ticks, tick;
me.beforeUpdate();
me.maxWidth=maxWidth;
me.maxHeight=maxHeight;
me.margins=helpers$1.extend({
left: 0,
right: 0,
top: 0,
bottom: 0
}, margins);
me._maxLabelLines=0;
me.longestLabelWidth=0;
me.longestTextCache=me.longestTextCache||{};
me.beforeSetDimensions();
me.setDimensions();
me.afterSetDimensions();
me.beforeDataLimits();
me.determineDataLimits();
me.afterDataLimits();
me.beforeBuildTicks();
ticks=me.buildTicks()||[];
ticks=me.afterBuildTicks(ticks)||ticks;
me.beforeTickToLabelConversion();
labels=me.convertTicksToLabels(ticks)||me.ticks;
me.afterTickToLabelConversion();
me.ticks=labels;
for (i=0, ilen=labels.length; i < ilen; ++i){
label=labels[i];
tick=ticks[i];
if(!tick){
ticks.push(tick={
label: label,
major: false
});
}else{
tick.label=label;
}}
me._ticks=ticks;
me.beforeCalculateTickRotation();
me.calculateTickRotation();
me.afterCalculateTickRotation();
me.beforeFit();
me.fit();
me.afterFit();
me.afterUpdate();
return me.minSize;
},
afterUpdate: function(){
helpers$1.callback(this.options.afterUpdate, [this]);
},
beforeSetDimensions: function(){
helpers$1.callback(this.options.beforeSetDimensions, [this]);
},
setDimensions: function(){
var me=this;
if(me.isHorizontal()){
me.width=me.maxWidth;
me.left=0;
me.right=me.width;
}else{
me.height=me.maxHeight;
me.top=0;
me.bottom=me.height;
}
me.paddingLeft=0;
me.paddingTop=0;
me.paddingRight=0;
me.paddingBottom=0;
},
afterSetDimensions: function(){
helpers$1.callback(this.options.afterSetDimensions, [this]);
},
beforeDataLimits: function(){
helpers$1.callback(this.options.beforeDataLimits, [this]);
},
determineDataLimits: helpers$1.noop,
afterDataLimits: function(){
helpers$1.callback(this.options.afterDataLimits, [this]);
},
beforeBuildTicks: function(){
helpers$1.callback(this.options.beforeBuildTicks, [this]);
},
buildTicks: helpers$1.noop,
afterBuildTicks: function(ticks){
var me=this;
if(helpers$1.isArray(ticks)&&ticks.length){
return helpers$1.callback(me.options.afterBuildTicks, [me, ticks]);
}
me.ticks=helpers$1.callback(me.options.afterBuildTicks, [me, me.ticks])||me.ticks;
return ticks;
},
beforeTickToLabelConversion: function(){
helpers$1.callback(this.options.beforeTickToLabelConversion, [this]);
},
convertTicksToLabels: function(){
var me=this;
var tickOpts=me.options.ticks;
me.ticks=me.ticks.map(tickOpts.userCallback||tickOpts.callback, this);
},
afterTickToLabelConversion: function(){
helpers$1.callback(this.options.afterTickToLabelConversion, [this]);
},
beforeCalculateTickRotation: function(){
helpers$1.callback(this.options.beforeCalculateTickRotation, [this]);
},
calculateTickRotation: function(){
var me=this;
var context=me.ctx;
var tickOpts=me.options.ticks;
var labels=labelsFromTicks(me._ticks);
var tickFont=helpers$1.options._parseFont(tickOpts);
context.font=tickFont.string;
var labelRotation=tickOpts.minRotation||0;
if(labels.length&&me.options.display&&me.isHorizontal()){
var originalLabelWidth=helpers$1.longestText(context, tickFont.string, labels, me.longestTextCache);
var labelWidth=originalLabelWidth;
var cosRotation, sinRotation;
var tickWidth=me.getPixelForTick(1) - me.getPixelForTick(0) - 6;
while (labelWidth > tickWidth&&labelRotation < tickOpts.maxRotation){
var angleRadians=helpers$1.toRadians(labelRotation);
cosRotation=Math.cos(angleRadians);
sinRotation=Math.sin(angleRadians);
if(sinRotation * originalLabelWidth > me.maxHeight){
labelRotation--;
break;
}
labelRotation++;
labelWidth=cosRotation * originalLabelWidth;
}}
me.labelRotation=labelRotation;
},
afterCalculateTickRotation: function(){
helpers$1.callback(this.options.afterCalculateTickRotation, [this]);
},
beforeFit: function(){
helpers$1.callback(this.options.beforeFit, [this]);
},
fit: function(){
var me=this;
var minSize=me.minSize={
width: 0,
height: 0
};
var labels=labelsFromTicks(me._ticks);
var opts=me.options;
var tickOpts=opts.ticks;
var scaleLabelOpts=opts.scaleLabel;
var gridLineOpts=opts.gridLines;
var display=me._isVisible();
var position=opts.position;
var isHorizontal=me.isHorizontal();
var parseFont=helpers$1.options._parseFont;
var tickFont=parseFont(tickOpts);
var tickMarkLength=opts.gridLines.tickMarkLength;
if(isHorizontal){
minSize.width=me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right:me.maxWidth;
}else{
minSize.width=display&&gridLineOpts.drawTicks ? tickMarkLength:0;
}
if(isHorizontal){
minSize.height=display&&gridLineOpts.drawTicks ? tickMarkLength:0;
}else{
minSize.height=me.maxHeight;
}
if(scaleLabelOpts.display&&display){
var scaleLabelFont=parseFont(scaleLabelOpts);
var scaleLabelPadding=helpers$1.options.toPadding(scaleLabelOpts.padding);
var deltaHeight=scaleLabelFont.lineHeight + scaleLabelPadding.height;
if(isHorizontal){
minSize.height +=deltaHeight;
}else{
minSize.width +=deltaHeight;
}}
if(tickOpts.display&&display){
var largestTextWidth=helpers$1.longestText(me.ctx, tickFont.string, labels, me.longestTextCache);
var tallestLabelHeightInLines=helpers$1.numberOfLabelLines(labels);
var lineSpace=tickFont.size * 0.5;
var tickPadding=me.options.ticks.padding;
me._maxLabelLines=tallestLabelHeightInLines;
me.longestLabelWidth=largestTextWidth;
if(isHorizontal){
var angleRadians=helpers$1.toRadians(me.labelRotation);
var cosRotation=Math.cos(angleRadians);
var sinRotation=Math.sin(angleRadians);
var labelHeight=(sinRotation * largestTextWidth)
+ (tickFont.lineHeight * tallestLabelHeightInLines)
+ lineSpace;
minSize.height=Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);
me.ctx.font=tickFont.string;
var firstLabelWidth=computeTextSize(me.ctx, labels[0], tickFont.string);
var lastLabelWidth=computeTextSize(me.ctx, labels[labels.length - 1], tickFont.string);
var offsetLeft=me.getPixelForTick(0) - me.left;
var offsetRight=me.right - me.getPixelForTick(labels.length - 1);
var paddingLeft, paddingRight;
if(me.labelRotation!==0){
paddingLeft=position==='bottom' ? (cosRotation * firstLabelWidth):(cosRotation * lineSpace);
paddingRight=position==='bottom' ? (cosRotation * lineSpace):(cosRotation * lastLabelWidth);
}else{
paddingLeft=firstLabelWidth / 2;
paddingRight=lastLabelWidth / 2;
}
me.paddingLeft=Math.max(paddingLeft - offsetLeft, 0) + 3;
me.paddingRight=Math.max(paddingRight - offsetRight, 0) + 3;
}else{
if(tickOpts.mirror){
largestTextWidth=0;
}else{
largestTextWidth +=tickPadding + lineSpace;
}
minSize.width=Math.min(me.maxWidth, minSize.width + largestTextWidth);
me.paddingTop=tickFont.size / 2;
me.paddingBottom=tickFont.size / 2;
}}
me.handleMargins();
me.width=minSize.width;
me.height=minSize.height;
},
handleMargins: function(){
var me=this;
if(me.margins){
me.paddingLeft=Math.max(me.paddingLeft - me.margins.left, 0);
me.paddingTop=Math.max(me.paddingTop - me.margins.top, 0);
me.paddingRight=Math.max(me.paddingRight - me.margins.right, 0);
me.paddingBottom=Math.max(me.paddingBottom - me.margins.bottom, 0);
}},
afterFit: function(){
helpers$1.callback(this.options.afterFit, [this]);
},
isHorizontal: function(){
return this.options.position==='top'||this.options.position==='bottom';
},
isFullWidth: function(){
return (this.options.fullWidth);
},
getRightValue: function(rawValue){
if(helpers$1.isNullOrUndef(rawValue)){
return NaN;
}
if((typeof rawValue==='number'||rawValue instanceof Number)&&!isFinite(rawValue)){
return NaN;
}
if(rawValue){
if(this.isHorizontal()){
if(rawValue.x!==undefined){
return this.getRightValue(rawValue.x);
}}else if(rawValue.y!==undefined){
return this.getRightValue(rawValue.y);
}}
return rawValue;
},
getLabelForIndex: helpers$1.noop,
getPixelForValue: helpers$1.noop,
getValueForPixel: helpers$1.noop,
getPixelForTick: function(index){
var me=this;
var offset=me.options.offset;
if(me.isHorizontal()){
var innerWidth=me.width - (me.paddingLeft + me.paddingRight);
var tickWidth=innerWidth / Math.max((me._ticks.length - (offset ? 0:1)), 1);
var pixel=(tickWidth * index) + me.paddingLeft;
if(offset){
pixel +=tickWidth / 2;
}
var finalVal=me.left + pixel;
finalVal +=me.isFullWidth() ? me.margins.left:0;
return finalVal;
}
var innerHeight=me.height - (me.paddingTop + me.paddingBottom);
return me.top + (index * (innerHeight / (me._ticks.length - 1)));
},
getPixelForDecimal: function(decimal){
var me=this;
if(me.isHorizontal()){
var innerWidth=me.width - (me.paddingLeft + me.paddingRight);
var valueOffset=(innerWidth * decimal) + me.paddingLeft;
var finalVal=me.left + valueOffset;
finalVal +=me.isFullWidth() ? me.margins.left:0;
return finalVal;
}
return me.top + (decimal * me.height);
},
getBasePixel: function(){
return this.getPixelForValue(this.getBaseValue());
},
getBaseValue: function(){
var me=this;
var min=me.min;
var max=me.max;
return me.beginAtZero ? 0 :
min < 0&&max < 0 ? max :
min > 0&&max > 0 ? min :
0;
},
_autoSkip: function(ticks){
var me=this;
var isHorizontal=me.isHorizontal();
var optionTicks=me.options.ticks.minor;
var tickCount=ticks.length;
var skipRatio=false;
var maxTicks=optionTicks.maxTicksLimit;
var ticksLength=me._tickSize() * (tickCount - 1);
var axisLength=isHorizontal
? me.width - (me.paddingLeft + me.paddingRight)
: me.height - (me.paddingTop + me.PaddingBottom);
var result=[];
var i, tick;
if(ticksLength > axisLength){
skipRatio=1 + Math.floor(ticksLength / axisLength);
}
if(tickCount > maxTicks){
skipRatio=Math.max(skipRatio, 1 + Math.floor(tickCount / maxTicks));
}
for (i=0; i < tickCount; i++){
tick=ticks[i];
if(skipRatio > 1&&i % skipRatio > 0){
delete tick.label;
}
result.push(tick);
}
return result;
},
_tickSize: function(){
var me=this;
var isHorizontal=me.isHorizontal();
var optionTicks=me.options.ticks.minor;
var rot=helpers$1.toRadians(me.labelRotation);
var cos=Math.abs(Math.cos(rot));
var sin=Math.abs(Math.sin(rot));
var padding=optionTicks.autoSkipPadding||0;
var w=(me.longestLabelWidth + padding)||0;
var tickFont=helpers$1.options._parseFont(optionTicks);
var h=(me._maxLabelLines * tickFont.lineHeight + padding)||0;
return isHorizontal
? h * cos > w * sin ? w / cos:h / sin
: h * sin < w * cos ? h / cos:w / sin;
},
_isVisible: function(){
var me=this;
var chart=me.chart;
var display=me.options.display;
var i, ilen, meta;
if(display!=='auto'){
return !!display;
}
for (i=0, ilen=chart.data.datasets.length; i < ilen; ++i){
if(chart.isDatasetVisible(i)){
meta=chart.getDatasetMeta(i);
if(meta.xAxisID===me.id||meta.yAxisID===me.id){
return true;
}}
}
return false;
},
draw: function(chartArea){
var me=this;
var options=me.options;
if(!me._isVisible()){
return;
}
var chart=me.chart;
var context=me.ctx;
var globalDefaults=core_defaults.global;
var defaultFontColor=globalDefaults.defaultFontColor;
var optionTicks=options.ticks.minor;
var optionMajorTicks=options.ticks.major||optionTicks;
var gridLines=options.gridLines;
var scaleLabel=options.scaleLabel;
var position=options.position;
var isRotated=me.labelRotation!==0;
var isMirrored=optionTicks.mirror;
var isHorizontal=me.isHorizontal();
var parseFont=helpers$1.options._parseFont;
var ticks=optionTicks.display&&optionTicks.autoSkip ? me._autoSkip(me.getTicks()):me.getTicks();
var tickFontColor=valueOrDefault$9(optionTicks.fontColor, defaultFontColor);
var tickFont=parseFont(optionTicks);
var lineHeight=tickFont.lineHeight;
var majorTickFontColor=valueOrDefault$9(optionMajorTicks.fontColor, defaultFontColor);
var majorTickFont=parseFont(optionMajorTicks);
var tickPadding=optionTicks.padding;
var labelOffset=optionTicks.labelOffset;
var tl=gridLines.drawTicks ? gridLines.tickMarkLength:0;
var scaleLabelFontColor=valueOrDefault$9(scaleLabel.fontColor, defaultFontColor);
var scaleLabelFont=parseFont(scaleLabel);
var scaleLabelPadding=helpers$1.options.toPadding(scaleLabel.padding);
var labelRotationRadians=helpers$1.toRadians(me.labelRotation);
var itemsToDraw=[];
var axisWidth=gridLines.drawBorder ? valueAtIndexOrDefault(gridLines.lineWidth, 0, 0):0;
var alignPixel=helpers$1._alignPixel;
var borderValue, tickStart, tickEnd;
if(position==='top'){
borderValue=alignPixel(chart, me.bottom, axisWidth);
tickStart=me.bottom - tl;
tickEnd=borderValue - axisWidth / 2;
}else if(position==='bottom'){
borderValue=alignPixel(chart, me.top, axisWidth);
tickStart=borderValue + axisWidth / 2;
tickEnd=me.top + tl;
}else if(position==='left'){
borderValue=alignPixel(chart, me.right, axisWidth);
tickStart=me.right - tl;
tickEnd=borderValue - axisWidth / 2;
}else{
borderValue=alignPixel(chart, me.left, axisWidth);
tickStart=borderValue + axisWidth / 2;
tickEnd=me.left + tl;
}
var epsilon=0.0000001;
helpers$1.each(ticks, function(tick, index){
if(helpers$1.isNullOrUndef(tick.label)){
return;
}
var label=tick.label;
var lineWidth, lineColor, borderDash, borderDashOffset;
if(index===me.zeroLineIndex&&options.offset===gridLines.offsetGridLines){
lineWidth=gridLines.zeroLineWidth;
lineColor=gridLines.zeroLineColor;
borderDash=gridLines.zeroLineBorderDash||[];
borderDashOffset=gridLines.zeroLineBorderDashOffset||0.0;
}else{
lineWidth=valueAtIndexOrDefault(gridLines.lineWidth, index);
lineColor=valueAtIndexOrDefault(gridLines.color, index);
borderDash=gridLines.borderDash||[];
borderDashOffset=gridLines.borderDashOffset||0.0;
}
var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY, textOffset, textAlign;
var labelCount=helpers$1.isArray(label) ? label.length:1;
var lineValue=getPixelForGridLine(me, index, gridLines.offsetGridLines);
if(isHorizontal){
var labelYOffset=tl + tickPadding;
if(lineValue < me.left - epsilon){
lineColor='rgba(0,0,0,0)';
}
tx1=tx2=x1=x2=alignPixel(chart, lineValue, lineWidth);
ty1=tickStart;
ty2=tickEnd;
labelX=me.getPixelForTick(index) + labelOffset;
if(position==='top'){
y1=alignPixel(chart, chartArea.top, axisWidth) + axisWidth / 2;
y2=chartArea.bottom;
textOffset=((!isRotated ? 0.5:1) - labelCount) * lineHeight;
textAlign = !isRotated ? 'center':'left';
labelY=me.bottom - labelYOffset;
}else{
y1=chartArea.top;
y2=alignPixel(chart, chartArea.bottom, axisWidth) - axisWidth / 2;
textOffset=(!isRotated ? 0.5:0) * lineHeight;
textAlign = !isRotated ? 'center':'right';
labelY=me.top + labelYOffset;
}}else{
var labelXOffset=(isMirrored ? 0:tl) + tickPadding;
if(lineValue < me.top - epsilon){
lineColor='rgba(0,0,0,0)';
}
tx1=tickStart;
tx2=tickEnd;
ty1=ty2=y1=y2=alignPixel(chart, lineValue, lineWidth);
labelY=me.getPixelForTick(index) + labelOffset;
textOffset=(1 - labelCount) * lineHeight / 2;
if(position==='left'){
x1=alignPixel(chart, chartArea.left, axisWidth) + axisWidth / 2;
x2=chartArea.right;
textAlign=isMirrored ? 'left':'right';
labelX=me.right - labelXOffset;
}else{
x1=chartArea.left;
x2=alignPixel(chart, chartArea.right, axisWidth) - axisWidth / 2;
textAlign=isMirrored ? 'right':'left';
labelX=me.left + labelXOffset;
}}
itemsToDraw.push({
tx1: tx1,
ty1: ty1,
tx2: tx2,
ty2: ty2,
x1: x1,
y1: y1,
x2: x2,
y2: y2,
labelX: labelX,
labelY: labelY,
glWidth: lineWidth,
glColor: lineColor,
glBorderDash: borderDash,
glBorderDashOffset: borderDashOffset,
rotation: -1 * labelRotationRadians,
label: label,
major: tick.major,
textOffset: textOffset,
textAlign: textAlign
});
});
helpers$1.each(itemsToDraw, function(itemToDraw){
var glWidth=itemToDraw.glWidth;
var glColor=itemToDraw.glColor;
if(gridLines.display&&glWidth&&glColor){
context.save();
context.lineWidth=glWidth;
context.strokeStyle=glColor;
if(context.setLineDash){
context.setLineDash(itemToDraw.glBorderDash);
context.lineDashOffset=itemToDraw.glBorderDashOffset;
}
context.beginPath();
if(gridLines.drawTicks){
context.moveTo(itemToDraw.tx1, itemToDraw.ty1);
context.lineTo(itemToDraw.tx2, itemToDraw.ty2);
}
if(gridLines.drawOnChartArea){
context.moveTo(itemToDraw.x1, itemToDraw.y1);
context.lineTo(itemToDraw.x2, itemToDraw.y2);
}
context.stroke();
context.restore();
}
if(optionTicks.display){
context.save();
context.translate(itemToDraw.labelX, itemToDraw.labelY);
context.rotate(itemToDraw.rotation);
context.font=itemToDraw.major ? majorTickFont.string:tickFont.string;
context.fillStyle=itemToDraw.major ? majorTickFontColor:tickFontColor;
context.textBaseline='middle';
context.textAlign=itemToDraw.textAlign;
var label=itemToDraw.label;
var y=itemToDraw.textOffset;
if(helpers$1.isArray(label)){
for (var i=0; i < label.length; ++i){
context.fillText('' + label[i], 0, y);
y +=lineHeight;
}}else{
context.fillText(label, 0, y);
}
context.restore();
}});
if(scaleLabel.display){
var scaleLabelX;
var scaleLabelY;
var rotation=0;
var halfLineHeight=scaleLabelFont.lineHeight / 2;
if(isHorizontal){
scaleLabelX=me.left + ((me.right - me.left) / 2);
scaleLabelY=position==='bottom'
? me.bottom - halfLineHeight - scaleLabelPadding.bottom
: me.top + halfLineHeight + scaleLabelPadding.top;
}else{
var isLeft=position==='left';
scaleLabelX=isLeft
? me.left + halfLineHeight + scaleLabelPadding.top
: me.right - halfLineHeight - scaleLabelPadding.top;
scaleLabelY=me.top + ((me.bottom - me.top) / 2);
rotation=isLeft ? -0.5 * Math.PI:0.5 * Math.PI;
}
context.save();
context.translate(scaleLabelX, scaleLabelY);
context.rotate(rotation);
context.textAlign='center';
context.textBaseline='middle';
context.fillStyle=scaleLabelFontColor;
context.font=scaleLabelFont.string;
context.fillText(scaleLabel.labelString, 0, 0);
context.restore();
}
if(axisWidth){
var firstLineWidth=axisWidth;
var lastLineWidth=valueAtIndexOrDefault(gridLines.lineWidth, ticks.length - 1, 0);
var x1, x2, y1, y2;
if(isHorizontal){
x1=alignPixel(chart, me.left, firstLineWidth) - firstLineWidth / 2;
x2=alignPixel(chart, me.right, lastLineWidth) + lastLineWidth / 2;
y1=y2=borderValue;
}else{
y1=alignPixel(chart, me.top, firstLineWidth) - firstLineWidth / 2;
y2=alignPixel(chart, me.bottom, lastLineWidth) + lastLineWidth / 2;
x1=x2=borderValue;
}
context.lineWidth=axisWidth;
context.strokeStyle=valueAtIndexOrDefault(gridLines.color, 0);
context.beginPath();
context.moveTo(x1, y1);
context.lineTo(x2, y2);
context.stroke();
}}
});
var defaultConfig={
position: 'bottom'
};
var scale_category=core_scale.extend({
getLabels: function(){
var data=this.chart.data;
return this.options.labels||(this.isHorizontal() ? data.xLabels:data.yLabels)||data.labels;
},
determineDataLimits: function(){
var me=this;
var labels=me.getLabels();
me.minIndex=0;
me.maxIndex=labels.length - 1;
var findIndex;
if(me.options.ticks.min!==undefined){
findIndex=labels.indexOf(me.options.ticks.min);
me.minIndex=findIndex!==-1 ? findIndex:me.minIndex;
}
if(me.options.ticks.max!==undefined){
findIndex=labels.indexOf(me.options.ticks.max);
me.maxIndex=findIndex!==-1 ? findIndex:me.maxIndex;
}
me.min=labels[me.minIndex];
me.max=labels[me.maxIndex];
},
buildTicks: function(){
var me=this;
var labels=me.getLabels();
me.ticks=(me.minIndex===0&&me.maxIndex===labels.length - 1) ? labels:labels.slice(me.minIndex, me.maxIndex + 1);
},
getLabelForIndex: function(index, datasetIndex){
var me=this;
var chart=me.chart;
if(chart.getDatasetMeta(datasetIndex).controller._getValueScaleId()===me.id){
return me.getRightValue(chart.data.datasets[datasetIndex].data[index]);
}
return me.ticks[index - me.minIndex];
},
getPixelForValue: function(value, index){
var me=this;
var offset=me.options.offset;
var offsetAmt=Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0:1)), 1);
var valueCategory;
if(value!==undefined&&value!==null){
valueCategory=me.isHorizontal() ? value.x:value.y;
}
if(valueCategory!==undefined||(value!==undefined&&isNaN(index))){
var labels=me.getLabels();
value=valueCategory||value;
var idx=labels.indexOf(value);
index=idx!==-1 ? idx:index;
}
if(me.isHorizontal()){
var valueWidth=me.width / offsetAmt;
var widthOffset=(valueWidth * (index - me.minIndex));
if(offset){
widthOffset +=(valueWidth / 2);
}
return me.left + widthOffset;
}
var valueHeight=me.height / offsetAmt;
var heightOffset=(valueHeight * (index - me.minIndex));
if(offset){
heightOffset +=(valueHeight / 2);
}
return me.top + heightOffset;
},
getPixelForTick: function(index){
return this.getPixelForValue(this.ticks[index], index + this.minIndex, null);
},
getValueForPixel: function(pixel){
var me=this;
var offset=me.options.offset;
var value;
var offsetAmt=Math.max((me._ticks.length - (offset ? 0:1)), 1);
var horz=me.isHorizontal();
var valueDimension=(horz ? me.width:me.height) / offsetAmt;
pixel -=horz ? me.left:me.top;
if(offset){
pixel -=(valueDimension / 2);
}
if(pixel <=0){
value=0;
}else{
value=Math.round(pixel / valueDimension);
}
return value + me.minIndex;
},
getBasePixel: function(){
return this.bottom;
}});
var _defaults=defaultConfig;
scale_category._defaults=_defaults;
var noop=helpers$1.noop;
var isNullOrUndef=helpers$1.isNullOrUndef;
function generateTicks(generationOptions, dataRange){
var ticks=[];
var MIN_SPACING=1e-14;
var stepSize=generationOptions.stepSize;
var unit=stepSize||1;
var maxNumSpaces=generationOptions.maxTicks - 1;
var min=generationOptions.min;
var max=generationOptions.max;
var precision=generationOptions.precision;
var rmin=dataRange.min;
var rmax=dataRange.max;
var spacing=helpers$1.niceNum((rmax - rmin) / maxNumSpaces / unit) * unit;
var factor, niceMin, niceMax, numSpaces;
if(spacing < MIN_SPACING&&isNullOrUndef(min)&&isNullOrUndef(max)){
return [rmin, rmax];
}
numSpaces=Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);
if(numSpaces > maxNumSpaces){
spacing=helpers$1.niceNum(numSpaces * spacing / maxNumSpaces / unit) * unit;
}
if(stepSize||isNullOrUndef(precision)){
factor=Math.pow(10, helpers$1._decimalPlaces(spacing));
}else{
factor=Math.pow(10, precision);
spacing=Math.ceil(spacing * factor) / factor;
}
niceMin=Math.floor(rmin / spacing) * spacing;
niceMax=Math.ceil(rmax / spacing) * spacing;
if(stepSize){
if(!isNullOrUndef(min)&&helpers$1.almostWhole(min / spacing, spacing / 1000)){
niceMin=min;
}
if(!isNullOrUndef(max)&&helpers$1.almostWhole(max / spacing, spacing / 1000)){
niceMax=max;
}}
numSpaces=(niceMax - niceMin) / spacing;
if(helpers$1.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)){
numSpaces=Math.round(numSpaces);
}else{
numSpaces=Math.ceil(numSpaces);
}
niceMin=Math.round(niceMin * factor) / factor;
niceMax=Math.round(niceMax * factor) / factor;
ticks.push(isNullOrUndef(min) ? niceMin:min);
for (var j=1; j < numSpaces; ++j){
ticks.push(Math.round((niceMin + j * spacing) * factor) / factor);
}
ticks.push(isNullOrUndef(max) ? niceMax:max);
return ticks;
}
var scale_linearbase=core_scale.extend({
getRightValue: function(value){
if(typeof value==='string'){
return +value;
}
return core_scale.prototype.getRightValue.call(this, value);
},
handleTickRangeOptions: function(){
var me=this;
var opts=me.options;
var tickOpts=opts.ticks;
if(tickOpts.beginAtZero){
var minSign=helpers$1.sign(me.min);
var maxSign=helpers$1.sign(me.max);
if(minSign < 0&&maxSign < 0){
me.max=0;
}else if(minSign > 0&&maxSign > 0){
me.min=0;
}}
var setMin=tickOpts.min!==undefined||tickOpts.suggestedMin!==undefined;
var setMax=tickOpts.max!==undefined||tickOpts.suggestedMax!==undefined;
if(tickOpts.min!==undefined){
me.min=tickOpts.min;
}else if(tickOpts.suggestedMin!==undefined){
if(me.min===null){
me.min=tickOpts.suggestedMin;
}else{
me.min=Math.min(me.min, tickOpts.suggestedMin);
}}
if(tickOpts.max!==undefined){
me.max=tickOpts.max;
}else if(tickOpts.suggestedMax!==undefined){
if(me.max===null){
me.max=tickOpts.suggestedMax;
}else{
me.max=Math.max(me.max, tickOpts.suggestedMax);
}}
if(setMin!==setMax){
if(me.min >=me.max){
if(setMin){
me.max=me.min + 1;
}else{
me.min=me.max - 1;
}}
}
if(me.min===me.max){
me.max++;
if(!tickOpts.beginAtZero){
me.min--;
}}
},
getTickLimit: function(){
var me=this;
var tickOpts=me.options.ticks;
var stepSize=tickOpts.stepSize;
var maxTicksLimit=tickOpts.maxTicksLimit;
var maxTicks;
if(stepSize){
maxTicks=Math.ceil(me.max / stepSize) - Math.floor(me.min / stepSize) + 1;
}else{
maxTicks=me._computeTickLimit();
maxTicksLimit=maxTicksLimit||11;
}
if(maxTicksLimit){
maxTicks=Math.min(maxTicksLimit, maxTicks);
}
return maxTicks;
},
_computeTickLimit: function(){
return Number.POSITIVE_INFINITY;
},
handleDirectionalChanges: noop,
buildTicks: function(){
var me=this;
var opts=me.options;
var tickOpts=opts.ticks;
var maxTicks=me.getTickLimit();
maxTicks=Math.max(2, maxTicks);
var numericGeneratorOptions={
maxTicks: maxTicks,
min: tickOpts.min,
max: tickOpts.max,
precision: tickOpts.precision,
stepSize: helpers$1.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)
};
var ticks=me.ticks=generateTicks(numericGeneratorOptions, me);
me.handleDirectionalChanges();
me.max=helpers$1.max(ticks);
me.min=helpers$1.min(ticks);
if(tickOpts.reverse){
ticks.reverse();
me.start=me.max;
me.end=me.min;
}else{
me.start=me.min;
me.end=me.max;
}},
convertTicksToLabels: function(){
var me=this;
me.ticksAsNumbers=me.ticks.slice();
me.zeroLineIndex=me.ticks.indexOf(0);
core_scale.prototype.convertTicksToLabels.call(me);
}});
var defaultConfig$1={
position: 'left',
ticks: {
callback: core_ticks.formatters.linear
}};
var scale_linear=scale_linearbase.extend({
determineDataLimits: function(){
var me=this;
var opts=me.options;
var chart=me.chart;
var data=chart.data;
var datasets=data.datasets;
var isHorizontal=me.isHorizontal();
var DEFAULT_MIN=0;
var DEFAULT_MAX=1;
function IDMatches(meta){
return isHorizontal ? meta.xAxisID===me.id:meta.yAxisID===me.id;
}
me.min=null;
me.max=null;
var hasStacks=opts.stacked;
if(hasStacks===undefined){
helpers$1.each(datasets, function(dataset, datasetIndex){
if(hasStacks){
return;
}
var meta=chart.getDatasetMeta(datasetIndex);
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta) &&
meta.stack!==undefined){
hasStacks=true;
}});
}
if(opts.stacked||hasStacks){
var valuesPerStack={};
helpers$1.each(datasets, function(dataset, datasetIndex){
var meta=chart.getDatasetMeta(datasetIndex);
var key=[
meta.type,
((opts.stacked===undefined&&meta.stack===undefined) ? datasetIndex:''),
meta.stack
].join('.');
if(valuesPerStack[key]===undefined){
valuesPerStack[key]={
positiveValues: [],
negativeValues: []
};}
var positiveValues=valuesPerStack[key].positiveValues;
var negativeValues=valuesPerStack[key].negativeValues;
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta)){
helpers$1.each(dataset.data, function(rawValue, index){
var value=+me.getRightValue(rawValue);
if(isNaN(value)||meta.data[index].hidden){
return;
}
positiveValues[index]=positiveValues[index]||0;
negativeValues[index]=negativeValues[index]||0;
if(opts.relativePoints){
positiveValues[index]=100;
}else if(value < 0){
negativeValues[index] +=value;
}else{
positiveValues[index] +=value;
}});
}});
helpers$1.each(valuesPerStack, function(valuesForType){
var values=valuesForType.positiveValues.concat(valuesForType.negativeValues);
var minVal=helpers$1.min(values);
var maxVal=helpers$1.max(values);
me.min=me.min===null ? minVal:Math.min(me.min, minVal);
me.max=me.max===null ? maxVal:Math.max(me.max, maxVal);
});
}else{
helpers$1.each(datasets, function(dataset, datasetIndex){
var meta=chart.getDatasetMeta(datasetIndex);
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta)){
helpers$1.each(dataset.data, function(rawValue, index){
var value=+me.getRightValue(rawValue);
if(isNaN(value)||meta.data[index].hidden){
return;
}
if(me.min===null){
me.min=value;
}else if(value < me.min){
me.min=value;
}
if(me.max===null){
me.max=value;
}else if(value > me.max){
me.max=value;
}});
}});
}
me.min=isFinite(me.min)&&!isNaN(me.min) ? me.min:DEFAULT_MIN;
me.max=isFinite(me.max)&&!isNaN(me.max) ? me.max:DEFAULT_MAX;
this.handleTickRangeOptions();
},
_computeTickLimit: function(){
var me=this;
var tickFont;
if(me.isHorizontal()){
return Math.ceil(me.width / 40);
}
tickFont=helpers$1.options._parseFont(me.options.ticks);
return Math.ceil(me.height / tickFont.lineHeight);
},
handleDirectionalChanges: function(){
if(!this.isHorizontal()){
this.ticks.reverse();
}},
getLabelForIndex: function(index, datasetIndex){
return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
},
getPixelForValue: function(value){
var me=this;
var start=me.start;
var rightValue=+me.getRightValue(value);
var pixel;
var range=me.end - start;
if(me.isHorizontal()){
pixel=me.left + (me.width / range * (rightValue - start));
}else{
pixel=me.bottom - (me.height / range * (rightValue - start));
}
return pixel;
},
getValueForPixel: function(pixel){
var me=this;
var isHorizontal=me.isHorizontal();
var innerDimension=isHorizontal ? me.width:me.height;
var offset=(isHorizontal ? pixel - me.left:me.bottom - pixel) / innerDimension;
return me.start + ((me.end - me.start) * offset);
},
getPixelForTick: function(index){
return this.getPixelForValue(this.ticksAsNumbers[index]);
}});
var _defaults$1=defaultConfig$1;
scale_linear._defaults=_defaults$1;
var valueOrDefault$a=helpers$1.valueOrDefault;
function generateTicks$1(generationOptions, dataRange){
var ticks=[];
var tickVal=valueOrDefault$a(generationOptions.min, Math.pow(10, Math.floor(helpers$1.log10(dataRange.min))));
var endExp=Math.floor(helpers$1.log10(dataRange.max));
var endSignificand=Math.ceil(dataRange.max / Math.pow(10, endExp));
var exp, significand;
if(tickVal===0){
exp=Math.floor(helpers$1.log10(dataRange.minNotZero));
significand=Math.floor(dataRange.minNotZero / Math.pow(10, exp));
ticks.push(tickVal);
tickVal=significand * Math.pow(10, exp);
}else{
exp=Math.floor(helpers$1.log10(tickVal));
significand=Math.floor(tickVal / Math.pow(10, exp));
}
var precision=exp < 0 ? Math.pow(10, Math.abs(exp)):1;
do {
ticks.push(tickVal);
++significand;
if(significand===10){
significand=1;
++exp;
precision=exp >=0 ? 1:precision;
}
tickVal=Math.round(significand * Math.pow(10, exp) * precision) / precision;
} while (exp < endExp||(exp===endExp&&significand < endSignificand));
var lastTick=valueOrDefault$a(generationOptions.max, tickVal);
ticks.push(lastTick);
return ticks;
}
var defaultConfig$2={
position: 'left',
ticks: {
callback: core_ticks.formatters.logarithmic
}};
function nonNegativeOrDefault(value, defaultValue){
return helpers$1.isFinite(value)&&value >=0 ? value:defaultValue;
}
var scale_logarithmic=core_scale.extend({
determineDataLimits: function(){
var me=this;
var opts=me.options;
var chart=me.chart;
var data=chart.data;
var datasets=data.datasets;
var isHorizontal=me.isHorizontal();
function IDMatches(meta){
return isHorizontal ? meta.xAxisID===me.id:meta.yAxisID===me.id;
}
me.min=null;
me.max=null;
me.minNotZero=null;
var hasStacks=opts.stacked;
if(hasStacks===undefined){
helpers$1.each(datasets, function(dataset, datasetIndex){
if(hasStacks){
return;
}
var meta=chart.getDatasetMeta(datasetIndex);
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta) &&
meta.stack!==undefined){
hasStacks=true;
}});
}
if(opts.stacked||hasStacks){
var valuesPerStack={};
helpers$1.each(datasets, function(dataset, datasetIndex){
var meta=chart.getDatasetMeta(datasetIndex);
var key=[
meta.type,
((opts.stacked===undefined&&meta.stack===undefined) ? datasetIndex:''),
meta.stack
].join('.');
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta)){
if(valuesPerStack[key]===undefined){
valuesPerStack[key]=[];
}
helpers$1.each(dataset.data, function(rawValue, index){
var values=valuesPerStack[key];
var value=+me.getRightValue(rawValue);
if(isNaN(value)||meta.data[index].hidden||value < 0){
return;
}
values[index]=values[index]||0;
values[index] +=value;
});
}});
helpers$1.each(valuesPerStack, function(valuesForType){
if(valuesForType.length > 0){
var minVal=helpers$1.min(valuesForType);
var maxVal=helpers$1.max(valuesForType);
me.min=me.min===null ? minVal:Math.min(me.min, minVal);
me.max=me.max===null ? maxVal:Math.max(me.max, maxVal);
}});
}else{
helpers$1.each(datasets, function(dataset, datasetIndex){
var meta=chart.getDatasetMeta(datasetIndex);
if(chart.isDatasetVisible(datasetIndex)&&IDMatches(meta)){
helpers$1.each(dataset.data, function(rawValue, index){
var value=+me.getRightValue(rawValue);
if(isNaN(value)||meta.data[index].hidden||value < 0){
return;
}
if(me.min===null){
me.min=value;
}else if(value < me.min){
me.min=value;
}
if(me.max===null){
me.max=value;
}else if(value > me.max){
me.max=value;
}
if(value!==0&&(me.minNotZero===null||value < me.minNotZero)){
me.minNotZero=value;
}});
}});
}
this.handleTickRangeOptions();
},
handleTickRangeOptions: function(){
var me=this;
var tickOpts=me.options.ticks;
var DEFAULT_MIN=1;
var DEFAULT_MAX=10;
me.min=nonNegativeOrDefault(tickOpts.min, me.min);
me.max=nonNegativeOrDefault(tickOpts.max, me.max);
if(me.min===me.max){
if(me.min!==0&&me.min!==null){
me.min=Math.pow(10, Math.floor(helpers$1.log10(me.min)) - 1);
me.max=Math.pow(10, Math.floor(helpers$1.log10(me.max)) + 1);
}else{
me.min=DEFAULT_MIN;
me.max=DEFAULT_MAX;
}}
if(me.min===null){
me.min=Math.pow(10, Math.floor(helpers$1.log10(me.max)) - 1);
}
if(me.max===null){
me.max=me.min!==0
? Math.pow(10, Math.floor(helpers$1.log10(me.min)) + 1)
: DEFAULT_MAX;
}
if(me.minNotZero===null){
if(me.min > 0){
me.minNotZero=me.min;
}else if(me.max < 1){
me.minNotZero=Math.pow(10, Math.floor(helpers$1.log10(me.max)));
}else{
me.minNotZero=DEFAULT_MIN;
}}
},
buildTicks: function(){
var me=this;
var tickOpts=me.options.ticks;
var reverse = !me.isHorizontal();
var generationOptions={
min: nonNegativeOrDefault(tickOpts.min),
max: nonNegativeOrDefault(tickOpts.max)
};
var ticks=me.ticks=generateTicks$1(generationOptions, me);
me.max=helpers$1.max(ticks);
me.min=helpers$1.min(ticks);
if(tickOpts.reverse){
reverse = !reverse;
me.start=me.max;
me.end=me.min;
}else{
me.start=me.min;
me.end=me.max;
}
if(reverse){
ticks.reverse();
}},
convertTicksToLabels: function(){
this.tickValues=this.ticks.slice();
core_scale.prototype.convertTicksToLabels.call(this);
},
getLabelForIndex: function(index, datasetIndex){
return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
},
getPixelForTick: function(index){
return this.getPixelForValue(this.tickValues[index]);
},
_getFirstTickValue: function(value){
var exp=Math.floor(helpers$1.log10(value));
var significand=Math.floor(value / Math.pow(10, exp));
return significand * Math.pow(10, exp);
},
getPixelForValue: function(value){
var me=this;
var tickOpts=me.options.ticks;
var reverse=tickOpts.reverse;
var log10=helpers$1.log10;
var firstTickValue=me._getFirstTickValue(me.minNotZero);
var offset=0;
var innerDimension, pixel, start, end, sign;
value=+me.getRightValue(value);
if(reverse){
start=me.end;
end=me.start;
sign=-1;
}else{
start=me.start;
end=me.end;
sign=1;
}
if(me.isHorizontal()){
innerDimension=me.width;
pixel=reverse ? me.right:me.left;
}else{
innerDimension=me.height;
sign *=-1;
pixel=reverse ? me.top:me.bottom;
}
if(value!==start){
if(start===0){
offset=valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);
innerDimension -=offset;
start=firstTickValue;
}
if(value!==0){
offset +=innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));
}
pixel +=sign * offset;
}
return pixel;
},
getValueForPixel: function(pixel){
var me=this;
var tickOpts=me.options.ticks;
var reverse=tickOpts.reverse;
var log10=helpers$1.log10;
var firstTickValue=me._getFirstTickValue(me.minNotZero);
var innerDimension, start, end, value;
if(reverse){
start=me.end;
end=me.start;
}else{
start=me.start;
end=me.end;
}
if(me.isHorizontal()){
innerDimension=me.width;
value=reverse ? me.right - pixel:pixel - me.left;
}else{
innerDimension=me.height;
value=reverse ? pixel - me.top:me.bottom - pixel;
}
if(value!==start){
if(start===0){
var offset=valueOrDefault$a(tickOpts.fontSize, core_defaults.global.defaultFontSize);
value -=offset;
innerDimension -=offset;
start=firstTickValue;
}
value *=log10(end) - log10(start);
value /=innerDimension;
value=Math.pow(10, log10(start) + value);
}
return value;
}});
var _defaults$2=defaultConfig$2;
scale_logarithmic._defaults=_defaults$2;
var valueOrDefault$b=helpers$1.valueOrDefault;
var valueAtIndexOrDefault$1=helpers$1.valueAtIndexOrDefault;
var resolve$7=helpers$1.options.resolve;
var defaultConfig$3={
display: true,
animate: true,
position: 'chartArea',
angleLines: {
display: true,
color: 'rgba(0, 0, 0, 0.1)',
lineWidth: 1,
borderDash: [],
borderDashOffset: 0.0
},
gridLines: {
circular: false
},
ticks: {
showLabelBackdrop: true,
backdropColor: 'rgba(255,255,255,0.75)',
backdropPaddingY: 2,
backdropPaddingX: 2,
callback: core_ticks.formatters.linear
},
pointLabels: {
display: true,
fontSize: 10,
callback: function(label){
return label;
}}
};
function getValueCount(scale){
var opts=scale.options;
return opts.angleLines.display||opts.pointLabels.display ? scale.chart.data.labels.length:0;
}
function getTickBackdropHeight(opts){
var tickOpts=opts.ticks;
if(tickOpts.display&&opts.display){
return valueOrDefault$b(tickOpts.fontSize, core_defaults.global.defaultFontSize) + tickOpts.backdropPaddingY * 2;
}
return 0;
}
function measureLabelSize(ctx, lineHeight, label){
if(helpers$1.isArray(label)){
return {
w: helpers$1.longestText(ctx, ctx.font, label),
h: label.length * lineHeight
};}
return {
w: ctx.measureText(label).width,
h: lineHeight
};}
function determineLimits(angle, pos, size, min, max){
if(angle===min||angle===max){
return {
start: pos - (size / 2),
end: pos + (size / 2)
};}else if(angle < min||angle > max){
return {
start: pos - size,
end: pos
};}
return {
start: pos,
end: pos + size
};}
function fitWithPointLabels(scale){
var plFont=helpers$1.options._parseFont(scale.options.pointLabels);
var furthestLimits={
l: 0,
r: scale.width,
t: 0,
b: scale.height - scale.paddingTop
};
var furthestAngles={};
var i, textSize, pointPosition;
scale.ctx.font=plFont.string;
scale._pointLabelSizes=[];
var valueCount=getValueCount(scale);
for (i=0; i < valueCount; i++){
pointPosition=scale.getPointPosition(i, scale.drawingArea + 5);
textSize=measureLabelSize(scale.ctx, plFont.lineHeight, scale.pointLabels[i]||'');
scale._pointLabelSizes[i]=textSize;
var angleRadians=scale.getIndexAngle(i);
var angle=helpers$1.toDegrees(angleRadians) % 360;
var hLimits=determineLimits(angle, pointPosition.x, textSize.w, 0, 180);
var vLimits=determineLimits(angle, pointPosition.y, textSize.h, 90, 270);
if(hLimits.start < furthestLimits.l){
furthestLimits.l=hLimits.start;
furthestAngles.l=angleRadians;
}
if(hLimits.end > furthestLimits.r){
furthestLimits.r=hLimits.end;
furthestAngles.r=angleRadians;
}
if(vLimits.start < furthestLimits.t){
furthestLimits.t=vLimits.start;
furthestAngles.t=angleRadians;
}
if(vLimits.end > furthestLimits.b){
furthestLimits.b=vLimits.end;
furthestAngles.b=angleRadians;
}}
scale.setReductions(scale.drawingArea, furthestLimits, furthestAngles);
}
function getTextAlignForAngle(angle){
if(angle===0||angle===180){
return 'center';
}else if(angle < 180){
return 'left';
}
return 'right';
}
function fillText(ctx, text, position, lineHeight){
var y=position.y + lineHeight / 2;
var i, ilen;
if(helpers$1.isArray(text)){
for (i=0, ilen=text.length; i < ilen; ++i){
ctx.fillText(text[i], position.x, y);
y +=lineHeight;
}}else{
ctx.fillText(text, position.x, y);
}}
function adjustPointPositionForLabelHeight(angle, textSize, position){
if(angle===90||angle===270){
position.y -=(textSize.h / 2);
}else if(angle > 270||angle < 90){
position.y -=textSize.h;
}}
function drawPointLabels(scale){
var ctx=scale.ctx;
var opts=scale.options;
var angleLineOpts=opts.angleLines;
var gridLineOpts=opts.gridLines;
var pointLabelOpts=opts.pointLabels;
var lineWidth=valueOrDefault$b(angleLineOpts.lineWidth, gridLineOpts.lineWidth);
var lineColor=valueOrDefault$b(angleLineOpts.color, gridLineOpts.color);
var tickBackdropHeight=getTickBackdropHeight(opts);
ctx.save();
ctx.lineWidth=lineWidth;
ctx.strokeStyle=lineColor;
if(ctx.setLineDash){
ctx.setLineDash(resolve$7([angleLineOpts.borderDash, gridLineOpts.borderDash, []]));
ctx.lineDashOffset=resolve$7([angleLineOpts.borderDashOffset, gridLineOpts.borderDashOffset, 0.0]);
}
var outerDistance=scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min:scale.max);
var plFont=helpers$1.options._parseFont(pointLabelOpts);
ctx.font=plFont.string;
ctx.textBaseline='middle';
for (var i=getValueCount(scale) - 1; i >=0; i--){
if(angleLineOpts.display&&lineWidth&&lineColor){
var outerPosition=scale.getPointPosition(i, outerDistance);
ctx.beginPath();
ctx.moveTo(scale.xCenter, scale.yCenter);
ctx.lineTo(outerPosition.x, outerPosition.y);
ctx.stroke();
}
if(pointLabelOpts.display){
var extra=(i===0 ? tickBackdropHeight / 2:0);
var pointLabelPosition=scale.getPointPosition(i, outerDistance + extra + 5);
var pointLabelFontColor=valueAtIndexOrDefault$1(pointLabelOpts.fontColor, i, core_defaults.global.defaultFontColor);
ctx.fillStyle=pointLabelFontColor;
var angleRadians=scale.getIndexAngle(i);
var angle=helpers$1.toDegrees(angleRadians);
ctx.textAlign=getTextAlignForAngle(angle);
adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);
fillText(ctx, scale.pointLabels[i]||'', pointLabelPosition, plFont.lineHeight);
}}
ctx.restore();
}
function drawRadiusLine(scale, gridLineOpts, radius, index){
var ctx=scale.ctx;
var circular=gridLineOpts.circular;
var valueCount=getValueCount(scale);
var lineColor=valueAtIndexOrDefault$1(gridLineOpts.color, index - 1);
var lineWidth=valueAtIndexOrDefault$1(gridLineOpts.lineWidth, index - 1);
var pointPosition;
if((!circular&&!valueCount)||!lineColor||!lineWidth){
return;
}
ctx.save();
ctx.strokeStyle=lineColor;
ctx.lineWidth=lineWidth;
if(ctx.setLineDash){
ctx.setLineDash(gridLineOpts.borderDash||[]);
ctx.lineDashOffset=gridLineOpts.borderDashOffset||0.0;
}
ctx.beginPath();
if(circular){
ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);
}else{
pointPosition=scale.getPointPosition(0, radius);
ctx.moveTo(pointPosition.x, pointPosition.y);
for (var i=1; i < valueCount; i++){
pointPosition=scale.getPointPosition(i, radius);
ctx.lineTo(pointPosition.x, pointPosition.y);
}}
ctx.closePath();
ctx.stroke();
ctx.restore();
}
function numberOrZero(param){
return helpers$1.isNumber(param) ? param:0;
}
var scale_radialLinear=scale_linearbase.extend({
setDimensions: function(){
var me=this;
me.width=me.maxWidth;
me.height=me.maxHeight;
me.paddingTop=getTickBackdropHeight(me.options) / 2;
me.xCenter=Math.floor(me.width / 2);
me.yCenter=Math.floor((me.height - me.paddingTop) / 2);
me.drawingArea=Math.min(me.height - me.paddingTop, me.width) / 2;
},
determineDataLimits: function(){
var me=this;
var chart=me.chart;
var min=Number.POSITIVE_INFINITY;
var max=Number.NEGATIVE_INFINITY;
helpers$1.each(chart.data.datasets, function(dataset, datasetIndex){
if(chart.isDatasetVisible(datasetIndex)){
var meta=chart.getDatasetMeta(datasetIndex);
helpers$1.each(dataset.data, function(rawValue, index){
var value=+me.getRightValue(rawValue);
if(isNaN(value)||meta.data[index].hidden){
return;
}
min=Math.min(value, min);
max=Math.max(value, max);
});
}});
me.min=(min===Number.POSITIVE_INFINITY ? 0:min);
me.max=(max===Number.NEGATIVE_INFINITY ? 0:max);
me.handleTickRangeOptions();
},
_computeTickLimit: function(){
return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));
},
convertTicksToLabels: function(){
var me=this;
scale_linearbase.prototype.convertTicksToLabels.call(me);
me.pointLabels=me.chart.data.labels.map(me.options.pointLabels.callback, me);
},
getLabelForIndex: function(index, datasetIndex){
return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);
},
fit: function(){
var me=this;
var opts=me.options;
if(opts.display&&opts.pointLabels.display){
fitWithPointLabels(me);
}else{
me.setCenterPoint(0, 0, 0, 0);
}},
setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles){
var me=this;
var radiusReductionLeft=furthestLimits.l / Math.sin(furthestAngles.l);
var radiusReductionRight=Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);
var radiusReductionTop=-furthestLimits.t / Math.cos(furthestAngles.t);
var radiusReductionBottom=-Math.max(furthestLimits.b - (me.height - me.paddingTop), 0) / Math.cos(furthestAngles.b);
radiusReductionLeft=numberOrZero(radiusReductionLeft);
radiusReductionRight=numberOrZero(radiusReductionRight);
radiusReductionTop=numberOrZero(radiusReductionTop);
radiusReductionBottom=numberOrZero(radiusReductionBottom);
me.drawingArea=Math.min(Math.floor(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),
Math.floor(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));
me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);
},
setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement){
var me=this;
var maxRight=me.width - rightMovement - me.drawingArea;
var maxLeft=leftMovement + me.drawingArea;
var maxTop=topMovement + me.drawingArea;
var maxBottom=(me.height - me.paddingTop) - bottomMovement - me.drawingArea;
me.xCenter=Math.floor(((maxLeft + maxRight) / 2) + me.left);
me.yCenter=Math.floor(((maxTop + maxBottom) / 2) + me.top + me.paddingTop);
},
getIndexAngle: function(index){
var angleMultiplier=(Math.PI * 2) / getValueCount(this);
var startAngle=this.chart.options&&this.chart.options.startAngle ?
this.chart.options.startAngle :
0;
var startAngleRadians=startAngle * Math.PI * 2 / 360;
return index * angleMultiplier + startAngleRadians;
},
getDistanceFromCenterForValue: function(value){
var me=this;
if(value===null){
return 0;
}
var scalingFactor=me.drawingArea / (me.max - me.min);
if(me.options.ticks.reverse){
return (me.max - value) * scalingFactor;
}
return (value - me.min) * scalingFactor;
},
getPointPosition: function(index, distanceFromCenter){
var me=this;
var thisAngle=me.getIndexAngle(index) - (Math.PI / 2);
return {
x: Math.cos(thisAngle) * distanceFromCenter + me.xCenter,
y: Math.sin(thisAngle) * distanceFromCenter + me.yCenter
};},
getPointPositionForValue: function(index, value){
return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));
},
getBasePosition: function(){
var me=this;
var min=me.min;
var max=me.max;
return me.getPointPositionForValue(0,
me.beginAtZero ? 0 :
min < 0&&max < 0 ? max :
min > 0&&max > 0 ? min :
0);
},
draw: function(){
var me=this;
var opts=me.options;
var gridLineOpts=opts.gridLines;
var tickOpts=opts.ticks;
if(opts.display){
var ctx=me.ctx;
var startAngle=this.getIndexAngle(0);
var tickFont=helpers$1.options._parseFont(tickOpts);
if(opts.angleLines.display||opts.pointLabels.display){
drawPointLabels(me);
}
helpers$1.each(me.ticks, function(label, index){
if(index > 0||tickOpts.reverse){
var yCenterOffset=me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);
if(gridLineOpts.display&&index!==0){
drawRadiusLine(me, gridLineOpts, yCenterOffset, index);
}
if(tickOpts.display){
var tickFontColor=valueOrDefault$b(tickOpts.fontColor, core_defaults.global.defaultFontColor);
ctx.font=tickFont.string;
ctx.save();
ctx.translate(me.xCenter, me.yCenter);
ctx.rotate(startAngle);
if(tickOpts.showLabelBackdrop){
var labelWidth=ctx.measureText(label).width;
ctx.fillStyle=tickOpts.backdropColor;
ctx.fillRect(-labelWidth / 2 - tickOpts.backdropPaddingX,
-yCenterOffset - tickFont.size / 2 - tickOpts.backdropPaddingY,
labelWidth + tickOpts.backdropPaddingX * 2,
tickFont.size + tickOpts.backdropPaddingY * 2
);
}
ctx.textAlign='center';
ctx.textBaseline='middle';
ctx.fillStyle=tickFontColor;
ctx.fillText(label, 0, -yCenterOffset);
ctx.restore();
}}
});
}}
});
var _defaults$3=defaultConfig$3;
scale_radialLinear._defaults=_defaults$3;
var valueOrDefault$c=helpers$1.valueOrDefault;
var MIN_INTEGER=Number.MIN_SAFE_INTEGER||-9007199254740991;
var MAX_INTEGER=Number.MAX_SAFE_INTEGER||9007199254740991;
var INTERVALS={
millisecond: {
common: true,
size: 1,
steps: [1, 2, 5, 10, 20, 50, 100, 250, 500]
},
second: {
common: true,
size: 1000,
steps: [1, 2, 5, 10, 15, 30]
},
minute: {
common: true,
size: 60000,
steps: [1, 2, 5, 10, 15, 30]
},
hour: {
common: true,
size: 3600000,
steps: [1, 2, 3, 6, 12]
},
day: {
common: true,
size: 86400000,
steps: [1, 2, 5]
},
week: {
common: false,
size: 604800000,
steps: [1, 2, 3, 4]
},
month: {
common: true,
size: 2.628e9,
steps: [1, 2, 3]
},
quarter: {
common: false,
size: 7.884e9,
steps: [1, 2, 3, 4]
},
year: {
common: true,
size: 3.154e10
}};
var UNITS=Object.keys(INTERVALS);
function sorter(a, b){
return a - b;
}
function arrayUnique(items){
var hash={};
var out=[];
var i, ilen, item;
for (i=0, ilen=items.length; i < ilen; ++i){
item=items[i];
if(!hash[item]){
hash[item]=true;
out.push(item);
}}
return out;
}
function buildLookupTable(timestamps, min, max, distribution){
if(distribution==='linear'||!timestamps.length){
return [
{time: min, pos: 0},
{time: max, pos: 1}
];
}
var table=[];
var items=[min];
var i, ilen, prev, curr, next;
for (i=0, ilen=timestamps.length; i < ilen; ++i){
curr=timestamps[i];
if(curr > min&&curr < max){
items.push(curr);
}}
items.push(max);
for (i=0, ilen=items.length; i < ilen; ++i){
next=items[i + 1];
prev=items[i - 1];
curr=items[i];
if(prev===undefined||next===undefined||Math.round((next + prev) / 2)!==curr){
table.push({time: curr, pos: i / (ilen - 1)});
}}
return table;
}
function lookup(table, key, value){
var lo=0;
var hi=table.length - 1;
var mid, i0, i1;
while (lo >=0&&lo <=hi){
mid=(lo + hi) >> 1;
i0=table[mid - 1]||null;
i1=table[mid];
if(!i0){
return {lo: null, hi: i1};}else if(i1[key] < value){
lo=mid + 1;
}else if(i0[key] > value){
hi=mid - 1;
}else{
return {lo: i0, hi: i1};}}
return {lo: i1, hi: null};}
function interpolate$1(table, skey, sval, tkey){
var range=lookup(table, skey, sval);
var prev = !range.lo ? table[0]:!range.hi ? table[table.length - 2]:range.lo;
var next = !range.lo ? table[1]:!range.hi ? table[table.length - 1]:range.hi;
var span=next[skey] - prev[skey];
var ratio=span ? (sval - prev[skey]) / span:0;
var offset=(next[tkey] - prev[tkey]) * ratio;
return prev[tkey] + offset;
}
function toTimestamp(scale, input){
var adapter=scale._adapter;
var options=scale.options.time;
var parser=options.parser;
var format=parser||options.format;
var value=input;
if(typeof parser==='function'){
value=parser(value);
}
if(!helpers$1.isFinite(value)){
value=typeof format==='string'
? adapter.parse(value, format)
: adapter.parse(value);
}
if(value!==null){
return +value;
}
if(!parser&&typeof format==='function'){
value=format(input);
if(!helpers$1.isFinite(value)){
value=adapter.parse(value);
}}
return value;
}
function parse(scale, input){
if(helpers$1.isNullOrUndef(input)){
return null;
}
var options=scale.options.time;
var value=toTimestamp(scale, scale.getRightValue(input));
if(value===null){
return value;
}
if(options.round){
value=+scale._adapter.startOf(value, options.round);
}
return value;
}
function determineStepSize(min, max, unit, capacity){
var range=max - min;
var interval=INTERVALS[unit];
var milliseconds=interval.size;
var steps=interval.steps;
var i, ilen, factor;
if(!steps){
return Math.ceil(range / (capacity * milliseconds));
}
for (i=0, ilen=steps.length; i < ilen; ++i){
factor=steps[i];
if(Math.ceil(range / (milliseconds * factor)) <=capacity){
break;
}}
return factor;
}
function determineUnitForAutoTicks(minUnit, min, max, capacity){
var ilen=UNITS.length;
var i, interval, factor;
for (i=UNITS.indexOf(minUnit); i < ilen - 1; ++i){
interval=INTERVALS[UNITS[i]];
factor=interval.steps ? interval.steps[interval.steps.length - 1]:MAX_INTEGER;
if(interval.common&&Math.ceil((max - min) / (factor * interval.size)) <=capacity){
return UNITS[i];
}}
return UNITS[ilen - 1];
}
function determineUnitForFormatting(scale, ticks, minUnit, min, max){
var ilen=UNITS.length;
var i, unit;
for (i=ilen - 1; i >=UNITS.indexOf(minUnit); i--){
unit=UNITS[i];
if(INTERVALS[unit].common&&scale._adapter.diff(max, min, unit) >=ticks.length){
return unit;
}}
return UNITS[minUnit ? UNITS.indexOf(minUnit):0];
}
function determineMajorUnit(unit){
for (var i=UNITS.indexOf(unit) + 1, ilen=UNITS.length; i < ilen; ++i){
if(INTERVALS[UNITS[i]].common){
return UNITS[i];
}}
}
function generate(scale, min, max, capacity){
var adapter=scale._adapter;
var options=scale.options;
var timeOpts=options.time;
var minor=timeOpts.unit||determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);
var major=determineMajorUnit(minor);
var stepSize=valueOrDefault$c(timeOpts.stepSize, timeOpts.unitStepSize);
var weekday=minor==='week' ? timeOpts.isoWeekday:false;
var majorTicksEnabled=options.ticks.major.enabled;
var interval=INTERVALS[minor];
var first=min;
var last=max;
var ticks=[];
var time;
if(!stepSize){
stepSize=determineStepSize(min, max, minor, capacity);
}
if(weekday){
first=+adapter.startOf(first, 'isoWeek', weekday);
last=+adapter.startOf(last, 'isoWeek', weekday);
}
first=+adapter.startOf(first, weekday ? 'day':minor);
last=+adapter.startOf(last, weekday ? 'day':minor);
if(last < max){
last=+adapter.add(last, 1, minor);
}
time=first;
if(majorTicksEnabled&&major&&!weekday&&!timeOpts.round){
time=+adapter.startOf(time, major);
time=+adapter.add(time, ~~((first - time) / (interval.size * stepSize)) * stepSize, minor);
}
for (; time < last; time=+adapter.add(time, stepSize, minor)){
ticks.push(+time);
}
ticks.push(+time);
return ticks;
}
function computeOffsets(table, ticks, min, max, options){
var start=0;
var end=0;
var first, last;
if(options.offset&&ticks.length){
if(!options.time.min){
first=interpolate$1(table, 'time', ticks[0], 'pos');
if(ticks.length===1){
start=1 - first;
}else{
start=(interpolate$1(table, 'time', ticks[1], 'pos') - first) / 2;
}}
if(!options.time.max){
last=interpolate$1(table, 'time', ticks[ticks.length - 1], 'pos');
if(ticks.length===1){
end=last;
}else{
end=(last - interpolate$1(table, 'time', ticks[ticks.length - 2], 'pos')) / 2;
}}
}
return {start: start, end: end};}
function ticksFromTimestamps(scale, values, majorUnit){
var ticks=[];
var i, ilen, value, major;
for (i=0, ilen=values.length; i < ilen; ++i){
value=values[i];
major=majorUnit ? value===+scale._adapter.startOf(value, majorUnit):false;
ticks.push({
value: value,
major: major
});
}
return ticks;
}
var defaultConfig$4={
position: 'bottom',
distribution: 'linear',
bounds: 'data',
adapters: {},
time: {
parser: false, // false==a pattern string from https://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment
format: false, // DEPRECATED false==date objects, moment object, callback or a pattern string from https://momentjs.com/docs/#/parsing/string-format/
unit: false,
round: false,
displayFormat: false,
isoWeekday: false, // override week start day - see https://momentjs.com/docs/#/get-set/iso-weekday/
minUnit: 'millisecond',
displayFormats: {}},
ticks: {
autoSkip: false,
source: 'auto',
major: {
enabled: false
}}
};
var scale_time=core_scale.extend({
initialize: function(){
this.mergeTicksOptions();
core_scale.prototype.initialize.call(this);
},
update: function(){
var me=this;
var options=me.options;
var time=options.time||(options.time={});
var adapter=me._adapter=new core_adapters._date(options.adapters.date);
if(time.format){
console.warn('options.time.format is deprecated and replaced by options.time.parser.');
}
helpers$1.mergeIf(time.displayFormats, adapter.formats());
return core_scale.prototype.update.apply(me, arguments);
},
getRightValue: function(rawValue){
if(rawValue&&rawValue.t!==undefined){
rawValue=rawValue.t;
}
return core_scale.prototype.getRightValue.call(this, rawValue);
},
determineDataLimits: function(){
var me=this;
var chart=me.chart;
var adapter=me._adapter;
var timeOpts=me.options.time;
var unit=timeOpts.unit||'day';
var min=MAX_INTEGER;
var max=MIN_INTEGER;
var timestamps=[];
var datasets=[];
var labels=[];
var i, j, ilen, jlen, data, timestamp;
var dataLabels=chart.data.labels||[];
for (i=0, ilen=dataLabels.length; i < ilen; ++i){
labels.push(parse(me, dataLabels[i]));
}
for (i=0, ilen=(chart.data.datasets||[]).length; i < ilen; ++i){
if(chart.isDatasetVisible(i)){
data=chart.data.datasets[i].data;
if(helpers$1.isObject(data[0])){
datasets[i]=[];
for (j=0, jlen=data.length; j < jlen; ++j){
timestamp=parse(me, data[j]);
timestamps.push(timestamp);
datasets[i][j]=timestamp;
}}else{
for (j=0, jlen=labels.length; j < jlen; ++j){
timestamps.push(labels[j]);
}
datasets[i]=labels.slice(0);
}}else{
datasets[i]=[];
}}
if(labels.length){
labels=arrayUnique(labels).sort(sorter);
min=Math.min(min, labels[0]);
max=Math.max(max, labels[labels.length - 1]);
}
if(timestamps.length){
timestamps=arrayUnique(timestamps).sort(sorter);
min=Math.min(min, timestamps[0]);
max=Math.max(max, timestamps[timestamps.length - 1]);
}
min=parse(me, timeOpts.min)||min;
max=parse(me, timeOpts.max)||max;
min=min===MAX_INTEGER ? +adapter.startOf(Date.now(), unit):min;
max=max===MIN_INTEGER ? +adapter.endOf(Date.now(), unit) + 1:max;
me.min=Math.min(min, max);
me.max=Math.max(min + 1, max);
me._horizontal=me.isHorizontal();
me._table=[];
me._timestamps={
data: timestamps,
datasets: datasets,
labels: labels
};},
buildTicks: function(){
var me=this;
var min=me.min;
var max=me.max;
var options=me.options;
var timeOpts=options.time;
var timestamps=[];
var ticks=[];
var i, ilen, timestamp;
switch (options.ticks.source){
case 'data':
timestamps=me._timestamps.data;
break;
case 'labels':
timestamps=me._timestamps.labels;
break;
case 'auto':
default:
timestamps=generate(me, min, max, me.getLabelCapacity(min), options);
}
if(options.bounds==='ticks'&&timestamps.length){
min=timestamps[0];
max=timestamps[timestamps.length - 1];
}
min=parse(me, timeOpts.min)||min;
max=parse(me, timeOpts.max)||max;
for (i=0, ilen=timestamps.length; i < ilen; ++i){
timestamp=timestamps[i];
if(timestamp >=min&&timestamp <=max){
ticks.push(timestamp);
}}
me.min=min;
me.max=max;
me._unit=timeOpts.unit||determineUnitForFormatting(me, ticks, timeOpts.minUnit, me.min, me.max);
me._majorUnit=determineMajorUnit(me._unit);
me._table=buildLookupTable(me._timestamps.data, min, max, options.distribution);
me._offsets=computeOffsets(me._table, ticks, min, max, options);
if(options.ticks.reverse){
ticks.reverse();
}
return ticksFromTimestamps(me, ticks, me._majorUnit);
},
getLabelForIndex: function(index, datasetIndex){
var me=this;
var adapter=me._adapter;
var data=me.chart.data;
var timeOpts=me.options.time;
var label=data.labels&&index < data.labels.length ? data.labels[index]:'';
var value=data.datasets[datasetIndex].data[index];
if(helpers$1.isObject(value)){
label=me.getRightValue(value);
}
if(timeOpts.tooltipFormat){
return adapter.format(toTimestamp(me, label), timeOpts.tooltipFormat);
}
if(typeof label==='string'){
return label;
}
return adapter.format(toTimestamp(me, label), timeOpts.displayFormats.datetime);
},
tickFormatFunction: function(time, index, ticks, format){
var me=this;
var adapter=me._adapter;
var options=me.options;
var formats=options.time.displayFormats;
var minorFormat=formats[me._unit];
var majorUnit=me._majorUnit;
var majorFormat=formats[majorUnit];
var majorTime=+adapter.startOf(time, majorUnit);
var majorTickOpts=options.ticks.major;
var major=majorTickOpts.enabled&&majorUnit&&majorFormat&&time===majorTime;
var label=adapter.format(time, format ? format:major ? majorFormat:minorFormat);
var tickOpts=major ? majorTickOpts:options.ticks.minor;
var formatter=valueOrDefault$c(tickOpts.callback, tickOpts.userCallback);
return formatter ? formatter(label, index, ticks):label;
},
convertTicksToLabels: function(ticks){
var labels=[];
var i, ilen;
for (i=0, ilen=ticks.length; i < ilen; ++i){
labels.push(this.tickFormatFunction(ticks[i].value, i, ticks));
}
return labels;
},
getPixelForOffset: function(time){
var me=this;
var isReverse=me.options.ticks.reverse;
var size=me._horizontal ? me.width:me.height;
var start=me._horizontal ? isReverse ? me.right:me.left:isReverse ? me.bottom:me.top;
var pos=interpolate$1(me._table, 'time', time, 'pos');
var offset=size * (me._offsets.start + pos) / (me._offsets.start + 1 + me._offsets.end);
return isReverse ? start - offset:start + offset;
},
getPixelForValue: function(value, index, datasetIndex){
var me=this;
var time=null;
if(index!==undefined&&datasetIndex!==undefined){
time=me._timestamps.datasets[datasetIndex][index];
}
if(time===null){
time=parse(me, value);
}
if(time!==null){
return me.getPixelForOffset(time);
}},
getPixelForTick: function(index){
var ticks=this.getTicks();
return index >=0&&index < ticks.length ?
this.getPixelForOffset(ticks[index].value) :
null;
},
getValueForPixel: function(pixel){
var me=this;
var size=me._horizontal ? me.width:me.height;
var start=me._horizontal ? me.left:me.top;
var pos=(size ? (pixel - start) / size:0) * (me._offsets.start + 1 + me._offsets.start) - me._offsets.end;
var time=interpolate$1(me._table, 'pos', pos, 'time');
return me._adapter._create(time);
},
getLabelWidth: function(label){
var me=this;
var ticksOpts=me.options.ticks;
var tickLabelWidth=me.ctx.measureText(label).width;
var angle=helpers$1.toRadians(ticksOpts.maxRotation);
var cosRotation=Math.cos(angle);
var sinRotation=Math.sin(angle);
var tickFontSize=valueOrDefault$c(ticksOpts.fontSize, core_defaults.global.defaultFontSize);
return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);
},
getLabelCapacity: function(exampleTime){
var me=this;
var format=me.options.time.displayFormats.millisecond;
var exampleLabel=me.tickFormatFunction(exampleTime, 0, [], format);
var tickLabelWidth=me.getLabelWidth(exampleLabel);
var innerWidth=me.isHorizontal() ? me.width:me.height;
var capacity=Math.floor(innerWidth / tickLabelWidth);
return capacity > 0 ? capacity:1;
}});
var _defaults$4=defaultConfig$4;
scale_time._defaults=_defaults$4;
var scales={
category: scale_category,
linear: scale_linear,
logarithmic: scale_logarithmic,
radialLinear: scale_radialLinear,
time: scale_time
};
var FORMATS={
datetime: 'MMM D, YYYY, h:mm:ss a',
millisecond: 'h:mm:ss.SSS a',
second: 'h:mm:ss a',
minute: 'h:mm a',
hour: 'hA',
day: 'MMM D',
week: 'll',
month: 'MMM YYYY',
quarter: '[Q]Q - YYYY',
year: 'YYYY'
};
core_adapters._date.override(typeof moment==='function' ? {
_id: 'moment',
formats: function(){
return FORMATS;
},
parse: function(value, format){
if(typeof value==='string'&&typeof format==='string'){
value=moment(value, format);
}else if(!(value instanceof moment)){
value=moment(value);
}
return value.isValid() ? value.valueOf():null;
},
format: function(time, format){
return moment(time).format(format);
},
add: function(time, amount, unit){
return moment(time).add(amount, unit).valueOf();
},
diff: function(max, min, unit){
return moment.duration(moment(max).diff(moment(min))).as(unit);
},
startOf: function(time, unit, weekday){
time=moment(time);
if(unit==='isoWeek'){
return time.isoWeekday(weekday).valueOf();
}
return time.startOf(unit).valueOf();
},
endOf: function(time, unit){
return moment(time).endOf(unit).valueOf();
},
_create: function(time){
return moment(time);
},
}:{});
core_defaults._set('global', {
plugins: {
filler: {
propagate: true
}}
});
var mappers={
dataset: function(source){
var index=source.fill;
var chart=source.chart;
var meta=chart.getDatasetMeta(index);
var visible=meta&&chart.isDatasetVisible(index);
var points=(visible&&meta.dataset._children)||[];
var length=points.length||0;
return !length ? null:function(point, i){
return (i < length&&points[i]._view)||null;
};},
boundary: function(source){
var boundary=source.boundary;
var x=boundary ? boundary.x:null;
var y=boundary ? boundary.y:null;
return function(point){
return {
x: x===null ? point.x:x,
y: y===null ? point.y:y,
};};
}};
function decodeFill(el, index, count){
var model=el._model||{};
var fill=model.fill;
var target;
if(fill===undefined){
fill = !!model.backgroundColor;
}
if(fill===false||fill===null){
return false;
}
if(fill===true){
return 'origin';
}
target=parseFloat(fill, 10);
if(isFinite(target)&&Math.floor(target)===target){
if(fill[0]==='-'||fill[0]==='+'){
target=index + target;
}
if(target===index||target < 0||target >=count){
return false;
}
return target;
}
switch (fill){
case 'bottom':
return 'start';
case 'top':
return 'end';
case 'zero':
return 'origin';
case 'origin':
case 'start':
case 'end':
return fill;
default:
return false;
}}
function computeBoundary(source){
var model=source.el._model||{};
var scale=source.el._scale||{};
var fill=source.fill;
var target=null;
var horizontal;
if(isFinite(fill)){
return null;
}
if(fill==='start'){
target=model.scaleBottom===undefined ? scale.bottom:model.scaleBottom;
}else if(fill==='end'){
target=model.scaleTop===undefined ? scale.top:model.scaleTop;
}else if(model.scaleZero!==undefined){
target=model.scaleZero;
}else if(scale.getBasePosition){
target=scale.getBasePosition();
}else if(scale.getBasePixel){
target=scale.getBasePixel();
}
if(target!==undefined&&target!==null){
if(target.x!==undefined&&target.y!==undefined){
return target;
}
if(helpers$1.isFinite(target)){
horizontal=scale.isHorizontal();
return {
x: horizontal ? target:null,
y: horizontal ? null:target
};}}
return null;
}
function resolveTarget(sources, index, propagate){
var source=sources[index];
var fill=source.fill;
var visited=[index];
var target;
if(!propagate){
return fill;
}
while (fill!==false&&visited.indexOf(fill)===-1){
if(!isFinite(fill)){
return fill;
}
target=sources[fill];
if(!target){
return false;
}
if(target.visible){
return fill;
}
visited.push(fill);
fill=target.fill;
}
return false;
}
function createMapper(source){
var fill=source.fill;
var type='dataset';
if(fill===false){
return null;
}
if(!isFinite(fill)){
type='boundary';
}
return mappers[type](source);
}
function isDrawable(point){
return point&&!point.skip;
}
function drawArea(ctx, curve0, curve1, len0, len1){
var i;
if(!len0||!len1){
return;
}
ctx.moveTo(curve0[0].x, curve0[0].y);
for (i=1; i < len0; ++i){
helpers$1.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);
}
ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);
for (i=len1 - 1; i > 0; --i){
helpers$1.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);
}}
function doFill(ctx, points, mapper, view, color, loop){
var count=points.length;
var span=view.spanGaps;
var curve0=[];
var curve1=[];
var len0=0;
var len1=0;
var i, ilen, index, p0, p1, d0, d1;
ctx.beginPath();
for (i=0, ilen=(count + !!loop); i < ilen; ++i){
index=i % count;
p0=points[index]._view;
p1=mapper(p0, index, view);
d0=isDrawable(p0);
d1=isDrawable(p1);
if(d0&&d1){
len0=curve0.push(p0);
len1=curve1.push(p1);
}else if(len0&&len1){
if(!span){
drawArea(ctx, curve0, curve1, len0, len1);
len0=len1=0;
curve0=[];
curve1=[];
}else{
if(d0){
curve0.push(p0);
}
if(d1){
curve1.push(p1);
}}
}}
drawArea(ctx, curve0, curve1, len0, len1);
ctx.closePath();
ctx.fillStyle=color;
ctx.fill();
}
var plugin_filler={
id: 'filler',
afterDatasetsUpdate: function(chart, options){
var count=(chart.data.datasets||[]).length;
var propagate=options.propagate;
var sources=[];
var meta, i, el, source;
for (i=0; i < count; ++i){
meta=chart.getDatasetMeta(i);
el=meta.dataset;
source=null;
if(el&&el._model&&el instanceof elements.Line){
source={
visible: chart.isDatasetVisible(i),
fill: decodeFill(el, i, count),
chart: chart,
el: el
};}
meta.$filler=source;
sources.push(source);
}
for (i=0; i < count; ++i){
source=sources[i];
if(!source){
continue;
}
source.fill=resolveTarget(sources, i, propagate);
source.boundary=computeBoundary(source);
source.mapper=createMapper(source);
}},
beforeDatasetDraw: function(chart, args){
var meta=args.meta.$filler;
if(!meta){
return;
}
var ctx=chart.ctx;
var el=meta.el;
var view=el._view;
var points=el._children||[];
var mapper=meta.mapper;
var color=view.backgroundColor||core_defaults.global.defaultColor;
if(mapper&&color&&points.length){
helpers$1.canvas.clipArea(ctx, chart.chartArea);
doFill(ctx, points, mapper, view, color, el._loop);
helpers$1.canvas.unclipArea(ctx);
}}
};
var noop$1=helpers$1.noop;
var valueOrDefault$d=helpers$1.valueOrDefault;
core_defaults._set('global', {
legend: {
display: true,
position: 'top',
fullWidth: true,
reverse: false,
weight: 1000,
onClick: function(e, legendItem){
var index=legendItem.datasetIndex;
var ci=this.chart;
var meta=ci.getDatasetMeta(index);
meta.hidden=meta.hidden===null ? !ci.data.datasets[index].hidden:null;
ci.update();
},
onHover: null,
onLeave: null,
labels: {
boxWidth: 40,
padding: 10,
generateLabels: function(chart){
var data=chart.data;
return helpers$1.isArray(data.datasets) ? data.datasets.map(function(dataset, i){
return {
text: dataset.label,
fillStyle: (!helpers$1.isArray(dataset.backgroundColor) ? dataset.backgroundColor:dataset.backgroundColor[0]),
hidden: !chart.isDatasetVisible(i),
lineCap: dataset.borderCapStyle,
lineDash: dataset.borderDash,
lineDashOffset: dataset.borderDashOffset,
lineJoin: dataset.borderJoinStyle,
lineWidth: dataset.borderWidth,
strokeStyle: dataset.borderColor,
pointStyle: dataset.pointStyle,
datasetIndex: i
};}, this):[];
}}
},
legendCallback: function(chart){
var text=[];
text.push('<ul class="' + chart.id + '-legend">');
for (var i=0; i < chart.data.datasets.length; i++){
text.push('<li><span style="background-color:' + chart.data.datasets[i].backgroundColor + '"></span>');
if(chart.data.datasets[i].label){
text.push(chart.data.datasets[i].label);
}
text.push('</li>');
}
text.push('</ul>');
return text.join('');
}});
function getBoxWidth(labelOpts, fontSize){
return labelOpts.usePointStyle&&labelOpts.boxWidth > fontSize ?
fontSize :
labelOpts.boxWidth;
}
var Legend=core_element.extend({
initialize: function(config){
helpers$1.extend(this, config);
this.legendHitBoxes=[];
this._hoveredItem=null;
this.doughnutMode=false;
},
beforeUpdate: noop$1,
update: function(maxWidth, maxHeight, margins){
var me=this;
me.beforeUpdate();
me.maxWidth=maxWidth;
me.maxHeight=maxHeight;
me.margins=margins;
me.beforeSetDimensions();
me.setDimensions();
me.afterSetDimensions();
me.beforeBuildLabels();
me.buildLabels();
me.afterBuildLabels();
me.beforeFit();
me.fit();
me.afterFit();
me.afterUpdate();
return me.minSize;
},
afterUpdate: noop$1,
beforeSetDimensions: noop$1,
setDimensions: function(){
var me=this;
if(me.isHorizontal()){
me.width=me.maxWidth;
me.left=0;
me.right=me.width;
}else{
me.height=me.maxHeight;
me.top=0;
me.bottom=me.height;
}
me.paddingLeft=0;
me.paddingTop=0;
me.paddingRight=0;
me.paddingBottom=0;
me.minSize={
width: 0,
height: 0
};},
afterSetDimensions: noop$1,
beforeBuildLabels: noop$1,
buildLabels: function(){
var me=this;
var labelOpts=me.options.labels||{};
var legendItems=helpers$1.callback(labelOpts.generateLabels, [me.chart], me)||[];
if(labelOpts.filter){
legendItems=legendItems.filter(function(item){
return labelOpts.filter(item, me.chart.data);
});
}
if(me.options.reverse){
legendItems.reverse();
}
me.legendItems=legendItems;
},
afterBuildLabels: noop$1,
beforeFit: noop$1,
fit: function(){
var me=this;
var opts=me.options;
var labelOpts=opts.labels;
var display=opts.display;
var ctx=me.ctx;
var labelFont=helpers$1.options._parseFont(labelOpts);
var fontSize=labelFont.size;
var hitboxes=me.legendHitBoxes=[];
var minSize=me.minSize;
var isHorizontal=me.isHorizontal();
if(isHorizontal){
minSize.width=me.maxWidth;
minSize.height=display ? 10:0;
}else{
minSize.width=display ? 10:0;
minSize.height=me.maxHeight;
}
if(display){
ctx.font=labelFont.string;
if(isHorizontal){
var lineWidths=me.lineWidths=[0];
var totalHeight=0;
ctx.textAlign='left';
ctx.textBaseline='top';
helpers$1.each(me.legendItems, function(legendItem, i){
var boxWidth=getBoxWidth(labelOpts, fontSize);
var width=boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
if(i===0||lineWidths[lineWidths.length - 1] + width + labelOpts.padding > minSize.width){
totalHeight +=fontSize + labelOpts.padding;
lineWidths[lineWidths.length - (i > 0 ? 0:1)]=labelOpts.padding;
}
hitboxes[i]={
left: 0,
top: 0,
width: width,
height: fontSize
};
lineWidths[lineWidths.length - 1] +=width + labelOpts.padding;
});
minSize.height +=totalHeight;
}else{
var vPadding=labelOpts.padding;
var columnWidths=me.columnWidths=[];
var totalWidth=labelOpts.padding;
var currentColWidth=0;
var currentColHeight=0;
var itemHeight=fontSize + vPadding;
helpers$1.each(me.legendItems, function(legendItem, i){
var boxWidth=getBoxWidth(labelOpts, fontSize);
var itemWidth=boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;
if(i > 0&&currentColHeight + itemHeight > minSize.height - vPadding){
totalWidth +=currentColWidth + labelOpts.padding;
columnWidths.push(currentColWidth);
currentColWidth=0;
currentColHeight=0;
}
currentColWidth=Math.max(currentColWidth, itemWidth);
currentColHeight +=itemHeight;
hitboxes[i]={
left: 0,
top: 0,
width: itemWidth,
height: fontSize
};});
totalWidth +=currentColWidth;
columnWidths.push(currentColWidth);
minSize.width +=totalWidth;
}}
me.width=minSize.width;
me.height=minSize.height;
},
afterFit: noop$1,
isHorizontal: function(){
return this.options.position==='top'||this.options.position==='bottom';
},
draw: function(){
var me=this;
var opts=me.options;
var labelOpts=opts.labels;
var globalDefaults=core_defaults.global;
var defaultColor=globalDefaults.defaultColor;
var lineDefault=globalDefaults.elements.line;
var legendWidth=me.width;
var lineWidths=me.lineWidths;
if(opts.display){
var ctx=me.ctx;
var fontColor=valueOrDefault$d(labelOpts.fontColor, globalDefaults.defaultFontColor);
var labelFont=helpers$1.options._parseFont(labelOpts);
var fontSize=labelFont.size;
var cursor;
ctx.textAlign='left';
ctx.textBaseline='middle';
ctx.lineWidth=0.5;
ctx.strokeStyle=fontColor;
ctx.fillStyle=fontColor;
ctx.font=labelFont.string;
var boxWidth=getBoxWidth(labelOpts, fontSize);
var hitboxes=me.legendHitBoxes;
var drawLegendBox=function(x, y, legendItem){
if(isNaN(boxWidth)||boxWidth <=0){
return;
}
ctx.save();
var lineWidth=valueOrDefault$d(legendItem.lineWidth, lineDefault.borderWidth);
ctx.fillStyle=valueOrDefault$d(legendItem.fillStyle, defaultColor);
ctx.lineCap=valueOrDefault$d(legendItem.lineCap, lineDefault.borderCapStyle);
ctx.lineDashOffset=valueOrDefault$d(legendItem.lineDashOffset, lineDefault.borderDashOffset);
ctx.lineJoin=valueOrDefault$d(legendItem.lineJoin, lineDefault.borderJoinStyle);
ctx.lineWidth=lineWidth;
ctx.strokeStyle=valueOrDefault$d(legendItem.strokeStyle, defaultColor);
if(ctx.setLineDash){
ctx.setLineDash(valueOrDefault$d(legendItem.lineDash, lineDefault.borderDash));
}
if(opts.labels&&opts.labels.usePointStyle){
var radius=boxWidth * Math.SQRT2 / 2;
var centerX=x + boxWidth / 2;
var centerY=y + fontSize / 2;
helpers$1.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);
}else{
if(lineWidth!==0){
ctx.strokeRect(x, y, boxWidth, fontSize);
}
ctx.fillRect(x, y, boxWidth, fontSize);
}
ctx.restore();
};
var fillText=function(x, y, legendItem, textWidth){
var halfFontSize=fontSize / 2;
var xLeft=boxWidth + halfFontSize + x;
var yMiddle=y + halfFontSize;
ctx.fillText(legendItem.text, xLeft, yMiddle);
if(legendItem.hidden){
ctx.beginPath();
ctx.lineWidth=2;
ctx.moveTo(xLeft, yMiddle);
ctx.lineTo(xLeft + textWidth, yMiddle);
ctx.stroke();
}};
var isHorizontal=me.isHorizontal();
if(isHorizontal){
cursor={
x: me.left + ((legendWidth - lineWidths[0]) / 2) + labelOpts.padding,
y: me.top + labelOpts.padding,
line: 0
};}else{
cursor={
x: me.left + labelOpts.padding,
y: me.top + labelOpts.padding,
line: 0
};}
var itemHeight=fontSize + labelOpts.padding;
helpers$1.each(me.legendItems, function(legendItem, i){
var textWidth=ctx.measureText(legendItem.text).width;
var width=boxWidth + (fontSize / 2) + textWidth;
var x=cursor.x;
var y=cursor.y;
if(isHorizontal){
if(i > 0&&x + width + labelOpts.padding > me.left + me.minSize.width){
y=cursor.y +=itemHeight;
cursor.line++;
x=cursor.x=me.left + ((legendWidth - lineWidths[cursor.line]) / 2) + labelOpts.padding;
}}else if(i > 0&&y + itemHeight > me.top + me.minSize.height){
x=cursor.x=x + me.columnWidths[cursor.line] + labelOpts.padding;
y=cursor.y=me.top + labelOpts.padding;
cursor.line++;
}
drawLegendBox(x, y, legendItem);
hitboxes[i].left=x;
hitboxes[i].top=y;
fillText(x, y, legendItem, textWidth);
if(isHorizontal){
cursor.x +=width + labelOpts.padding;
}else{
cursor.y +=itemHeight;
}});
}},
_getLegendItemAt: function(x, y){
var me=this;
var i, hitBox, lh;
if(x >=me.left&&x <=me.right&&y >=me.top&&y <=me.bottom){
lh=me.legendHitBoxes;
for (i=0; i < lh.length; ++i){
hitBox=lh[i];
if(x >=hitBox.left&&x <=hitBox.left + hitBox.width&&y >=hitBox.top&&y <=hitBox.top + hitBox.height){
return me.legendItems[i];
}}
}
return null;
},
handleEvent: function(e){
var me=this;
var opts=me.options;
var type=e.type==='mouseup' ? 'click':e.type;
var hoveredItem;
if(type==='mousemove'){
if(!opts.onHover&&!opts.onLeave){
return;
}}else if(type==='click'){
if(!opts.onClick){
return;
}}else{
return;
}
hoveredItem=me._getLegendItemAt(e.x, e.y);
if(type==='click'){
if(hoveredItem&&opts.onClick){
opts.onClick.call(me, e.native, hoveredItem);
}}else{
if(opts.onLeave&&hoveredItem!==me._hoveredItem){
if(me._hoveredItem){
opts.onLeave.call(me, e.native, me._hoveredItem);
}
me._hoveredItem=hoveredItem;
}
if(opts.onHover&&hoveredItem){
opts.onHover.call(me, e.native, hoveredItem);
}}
}});
function createNewLegendAndAttach(chart, legendOpts){
var legend=new Legend({
ctx: chart.ctx,
options: legendOpts,
chart: chart
});
core_layouts.configure(chart, legend, legendOpts);
core_layouts.addBox(chart, legend);
chart.legend=legend;
}
var plugin_legend={
id: 'legend',
_element: Legend,
beforeInit: function(chart){
var legendOpts=chart.options.legend;
if(legendOpts){
createNewLegendAndAttach(chart, legendOpts);
}},
beforeUpdate: function(chart){
var legendOpts=chart.options.legend;
var legend=chart.legend;
if(legendOpts){
helpers$1.mergeIf(legendOpts, core_defaults.global.legend);
if(legend){
core_layouts.configure(chart, legend, legendOpts);
legend.options=legendOpts;
}else{
createNewLegendAndAttach(chart, legendOpts);
}}else if(legend){
core_layouts.removeBox(chart, legend);
delete chart.legend;
}},
afterEvent: function(chart, e){
var legend=chart.legend;
if(legend){
legend.handleEvent(e);
}}
};
var noop$2=helpers$1.noop;
core_defaults._set('global', {
title: {
display: false,
fontStyle: 'bold',
fullWidth: true,
padding: 10,
position: 'top',
text: '',
weight: 2000 
}});
var Title=core_element.extend({
initialize: function(config){
var me=this;
helpers$1.extend(me, config);
me.legendHitBoxes=[];
},
beforeUpdate: noop$2,
update: function(maxWidth, maxHeight, margins){
var me=this;
me.beforeUpdate();
me.maxWidth=maxWidth;
me.maxHeight=maxHeight;
me.margins=margins;
me.beforeSetDimensions();
me.setDimensions();
me.afterSetDimensions();
me.beforeBuildLabels();
me.buildLabels();
me.afterBuildLabels();
me.beforeFit();
me.fit();
me.afterFit();
me.afterUpdate();
return me.minSize;
},
afterUpdate: noop$2,
beforeSetDimensions: noop$2,
setDimensions: function(){
var me=this;
if(me.isHorizontal()){
me.width=me.maxWidth;
me.left=0;
me.right=me.width;
}else{
me.height=me.maxHeight;
me.top=0;
me.bottom=me.height;
}
me.paddingLeft=0;
me.paddingTop=0;
me.paddingRight=0;
me.paddingBottom=0;
me.minSize={
width: 0,
height: 0
};},
afterSetDimensions: noop$2,
beforeBuildLabels: noop$2,
buildLabels: noop$2,
afterBuildLabels: noop$2,
beforeFit: noop$2,
fit: function(){
var me=this;
var opts=me.options;
var display=opts.display;
var minSize=me.minSize;
var lineCount=helpers$1.isArray(opts.text) ? opts.text.length:1;
var fontOpts=helpers$1.options._parseFont(opts);
var textSize=display ? (lineCount * fontOpts.lineHeight) + (opts.padding * 2):0;
if(me.isHorizontal()){
minSize.width=me.maxWidth;
minSize.height=textSize;
}else{
minSize.width=textSize;
minSize.height=me.maxHeight;
}
me.width=minSize.width;
me.height=minSize.height;
},
afterFit: noop$2,
isHorizontal: function(){
var pos=this.options.position;
return pos==='top'||pos==='bottom';
},
draw: function(){
var me=this;
var ctx=me.ctx;
var opts=me.options;
if(opts.display){
var fontOpts=helpers$1.options._parseFont(opts);
var lineHeight=fontOpts.lineHeight;
var offset=lineHeight / 2 + opts.padding;
var rotation=0;
var top=me.top;
var left=me.left;
var bottom=me.bottom;
var right=me.right;
var maxWidth, titleX, titleY;
ctx.fillStyle=helpers$1.valueOrDefault(opts.fontColor, core_defaults.global.defaultFontColor);
ctx.font=fontOpts.string;
if(me.isHorizontal()){
titleX=left + ((right - left) / 2);
titleY=top + offset;
maxWidth=right - left;
}else{
titleX=opts.position==='left' ? left + offset:right - offset;
titleY=top + ((bottom - top) / 2);
maxWidth=bottom - top;
rotation=Math.PI * (opts.position==='left' ? -0.5:0.5);
}
ctx.save();
ctx.translate(titleX, titleY);
ctx.rotate(rotation);
ctx.textAlign='center';
ctx.textBaseline='middle';
var text=opts.text;
if(helpers$1.isArray(text)){
var y=0;
for (var i=0; i < text.length; ++i){
ctx.fillText(text[i], 0, y, maxWidth);
y +=lineHeight;
}}else{
ctx.fillText(text, 0, 0, maxWidth);
}
ctx.restore();
}}
});
function createNewTitleBlockAndAttach(chart, titleOpts){
var title=new Title({
ctx: chart.ctx,
options: titleOpts,
chart: chart
});
core_layouts.configure(chart, title, titleOpts);
core_layouts.addBox(chart, title);
chart.titleBlock=title;
}
var plugin_title={
id: 'title',
_element: Title,
beforeInit: function(chart){
var titleOpts=chart.options.title;
if(titleOpts){
createNewTitleBlockAndAttach(chart, titleOpts);
}},
beforeUpdate: function(chart){
var titleOpts=chart.options.title;
var titleBlock=chart.titleBlock;
if(titleOpts){
helpers$1.mergeIf(titleOpts, core_defaults.global.title);
if(titleBlock){
core_layouts.configure(chart, titleBlock, titleOpts);
titleBlock.options=titleOpts;
}else{
createNewTitleBlockAndAttach(chart, titleOpts);
}}else if(titleBlock){
core_layouts.removeBox(chart, titleBlock);
delete chart.titleBlock;
}}
};
var plugins={};
var filler=plugin_filler;
var legend=plugin_legend;
var title=plugin_title;
plugins.filler=filler;
plugins.legend=legend;
plugins.title=title;
core_controller.helpers=helpers$1;
core_helpers(core_controller);
core_controller._adapters=core_adapters;
core_controller.Animation=core_animation;
core_controller.animationService=core_animations;
core_controller.controllers=controllers;
core_controller.DatasetController=core_datasetController;
core_controller.defaults=core_defaults;
core_controller.Element=core_element;
core_controller.elements=elements;
core_controller.Interaction=core_interaction;
core_controller.layouts=core_layouts;
core_controller.platform=platform;
core_controller.plugins=core_plugins;
core_controller.Scale=core_scale;
core_controller.scaleService=core_scaleService;
core_controller.Ticks=core_ticks;
core_controller.Tooltip=core_tooltip;
core_controller.helpers.each(scales, function(scale, type){
core_controller.scaleService.registerScaleType(type, scale, scale._defaults);
});
for (var k in plugins){
if(plugins.hasOwnProperty(k)){
core_controller.plugins.register(plugins[k]);
}}
core_controller.platform.initialize();
var src=core_controller;
if(typeof window!=='undefined'){
window.Chart=core_controller;
}
core_controller.Chart=core_controller;
core_controller.Legend=plugins.legend._element;
core_controller.Title=plugins.title._element;
core_controller.pluginService=core_controller.plugins;
core_controller.PluginBase=core_controller.Element.extend({});
core_controller.canvasHelpers=core_controller.helpers.canvas;
core_controller.layoutService=core_controller.layouts;
core_controller.LinearScaleBase=scale_linearbase;
core_controller.helpers.each([
'Bar',
'Bubble',
'Doughnut',
'Line',
'PolarArea',
'Radar',
'Scatter'
],
function(klass){
core_controller[klass]=function(ctx, cfg){
return new core_controller(ctx, core_controller.helpers.merge(cfg||{}, {
type: klass.charAt(0).toLowerCase() + klass.slice(1)
}));
};}
);
return src;
})));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Swiper=t()}(this,(function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function l(){return Date.now()}function o(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let s=1;s<arguments.length;s+=1){const a=s<0||arguments.length<=s?void 0:arguments[s];if(null!=a&&!c(a)){const s=Object.keys(Object(a)).filter((e=>t.indexOf(e)<0));for(let t=0,i=s.length;t<i;t+=1){const i=s[t],r=Object.getOwnPropertyDescriptor(a,i);void 0!==r&&r.enumerable&&(d(e[i])&&d(a[i])?a[i].__swiper__?e[i]=a[i]:p(e[i],a[i]):!d(e[i])&&d(a[i])?(e[i]={},a[i].__swiper__?e[i]=a[i]:p(e[i],a[i])):e[i]=a[i])}}}return e}function u(e,t,s){e.style.setProperty(t,s)}function m(e){let{swiper:t,targetPosition:s,side:a}=e;const i=r(),n=-t.translate;let l,o=null;const d=t.params.speed;t.wrapperEl.style.scrollSnapType="none",i.cancelAnimationFrame(t.cssModeFrameID);const c=s>n?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowEl&&e.shadowEl.querySelector(".swiper-slide-transform")||e}function f(e,t){return void 0===t&&(t=""),[...e.children].filter((e=>e.matches(t)))}function g(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:[t]),s}function v(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function w(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function b(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function y(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function x(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,M;function C(){return S||(S=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function P(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=C(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),T}function L(){return M||(M=function(){const e=r();let t=!1;function s(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(s()){const s=String(e.navigator.userAgent);if(s.includes("Version/")){const[e,a]=s.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));t=e<16||16===e&&a<2}}return{isSafari:t||s(),needPerspectiveFix:t,isWebView:/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent)}}()),M}var z={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n<s;n++)r[n]=arguments[n];t.apply(a,r)}return i.__emitterProxy=t,a.on(e,i,s)},onAny(e,t){const s=this;if(!s.eventsListeners||s.destroyed)return s;if("function"!=typeof e)return s;const a=t?"unshift":"push";return s.eventsAnyListeners.indexOf(e)<0&&s.eventsAnyListeners[a](e),s},offAny(e){const t=this;if(!t.eventsListeners||t.destroyed)return t;if(!t.eventsAnyListeners)return t;const s=t.eventsAnyListeners.indexOf(e);return s>=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n<i;n++)r[n]=arguments[n];"string"==typeof r[0]||Array.isArray(r[0])?(t=r[0],s=r.slice(1,r.length),a=e):(t=r[0].events,s=r[0].data,a=r[0].context||e),s.unshift(a);return(Array.isArray(t)?t:t.split(" ")).forEach((t=>{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const A=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){const t=s.querySelector(`.${e.params.lazyPreloaderClass}`);t&&t.remove()}},$=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},I=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex,r=i+a-1;if(e.params.rewind)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;t!==i&&t>r&&$(e,t)}else for(let a=Math.max(r-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&a>r&&$(e,a)};var k={updateSize:function(){const e=this;let t,s;const a=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:a.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:a.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(w(a,"padding-left")||0,10)-parseInt(w(a,"padding-right")||0,10),s=s-parseInt(w(a,"padding-top")||0,10)-parseInt(w(a,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))},updateSlides:function(){const e=this;function t(t){return e.isHorizontal()?t:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[t]}function s(e,s){return parseFloat(e.getPropertyValue(t(s))||0)}const a=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:l,wrongRTL:o}=e,d=e.virtual&&a.virtual.enabled,c=d?e.virtual.slides.length:e.slides.length,p=f(r,`.${e.params.slideClass}, swiper-slide`),m=d?e.virtual.slides.length:p.length;let h=[];const g=[],v=[];let b=a.slidesOffsetBefore;"function"==typeof b&&(b=a.slidesOffsetBefore.call(e));let y=a.slidesOffsetAfter;"function"==typeof y&&(y=a.slidesOffsetAfter.call(e));const E=e.snapGrid.length,S=e.slidesGrid.length;let T=a.spaceBetween,M=-b,C=0,P=0;if(void 0===n)return;"string"==typeof T&&T.indexOf("%")>=0?T=parseFloat(T.replace("%",""))/100*n:"string"==typeof T&&(T=parseFloat(T)),e.virtualSize=-T,p.forEach((e=>{l?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),a.centeredSlides&&a.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const L=a.grid&&a.grid.rows>1&&e.grid;let z;L&&e.grid.initSlides(m);const A="auto"===a.slidesPerView&&a.breakpoints&&Object.keys(a.breakpoints).filter((e=>void 0!==a.breakpoints[e].slidesPerView)).length>0;for(let i=0;i<m;i+=1){let r;if(z=0,p[i]&&(r=p[i]),L&&e.grid.updateSlide(i,r,m,t),!p[i]||"none"!==w(r,"display")){if("auto"===a.slidesPerView){A&&(p[i].style[t("width")]="");const n=getComputedStyle(r),l=r.style.transform,o=r.style.webkitTransform;if(l&&(r.style.transform="none"),o&&(r.style.webkitTransform="none"),a.roundLengths)z=e.isHorizontal()?x(r,"width",!0):x(r,"height",!0);else{const e=s(n,"width"),t=s(n,"padding-left"),a=s(n,"padding-right"),i=s(n,"margin-left"),l=s(n,"margin-right"),o=n.getPropertyValue("box-sizing");if(o&&"border-box"===o)z=e+i+l;else{const{clientWidth:s,offsetWidth:n}=r;z=e+t+a+i+l+(n-s)}}l&&(r.style.transform=l),o&&(r.style.webkitTransform=o),a.roundLengths&&(z=Math.floor(z))}else z=(n-(a.slidesPerView-1)*T)/a.slidesPerView,a.roundLengths&&(z=Math.floor(z)),p[i]&&(p[i].style[t("width")]=`${z}px`);p[i]&&(p[i].swiperSlideSize=z),v.push(z),a.centeredSlides?(M=M+z/2+C/2+T,0===C&&0!==i&&(M=M-n/2-T),0===i&&(M=M-n/2-T),Math.abs(M)<.001&&(M=0),a.roundLengths&&(M=Math.floor(M)),P%a.slidesPerGroup==0&&h.push(M),g.push(M)):(a.roundLengths&&(M=Math.floor(M)),(P-Math.min(e.params.slidesPerGroupSkip,P))%e.params.slidesPerGroup==0&&h.push(M),g.push(M),M=M+z+T),e.virtualSize+=z+T,C=z,P+=1}}if(e.virtualSize=Math.max(e.virtualSize,n)+y,l&&o&&("slide"===a.effect||"coverflow"===a.effect)&&(i.style.width=`${e.virtualSize+T}px`),a.setWrapperSize&&(i.style[t("width")]=`${e.virtualSize+T}px`),L&&e.grid.updateWrapperSize(z,h,t),!a.centeredSlides){const t=[];for(let s=0;s<h.length;s+=1){let i=h[s];a.roundLengths&&(i=Math.floor(i)),h[s]<=e.virtualSize-n&&t.push(i)}h=t,Math.floor(e.virtualSize-n)-Math.floor(h[h.length-1])>1&&h.push(e.virtualSize-n)}if(d&&a.loop){const t=v[0]+T;if(a.slidesPerGroup>1){const s=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/a.slidesPerGroup),i=t*a.slidesPerGroup;for(let e=0;e<s;e+=1)h.push(h[h.length-1]+i)}for(let s=0;s<e.virtual.slidesBefore+e.virtual.slidesAfter;s+=1)1===a.slidesPerGroup&&h.push(h[h.length-1]+t),g.push(g[g.length-1]+t),e.virtualSize+=t}if(0===h.length&&(h=[0]),0!==T){const s=e.isHorizontal()&&l?"marginLeft":t("marginRight");p.filter(((e,t)=>!(a.cssMode&&!a.loop)||t!==p.length-1)).forEach((e=>{e.style[s]=`${T}px`}))}if(a.centeredSlides&&a.centeredSlidesBounds){let e=0;v.forEach((t=>{e+=t+(T||0)})),e-=T;const t=e-n;h=h.map((e=>e<0?-b:e>t?t+y:e))}if(a.centerInsufficientSlides){let e=0;if(v.forEach((t=>{e+=t+(T||0)})),e-=T,e<n){const t=(n-e)/2;h.forEach(((e,s)=>{h[s]=e-t})),g.forEach(((e,s)=>{g[s]=e+t}))}}if(Object.assign(e,{slides:p,snapGrid:h,slidesGrid:g,slidesSizesGrid:v}),a.centeredSlides&&a.cssMode&&!a.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-h[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-v[v.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(m!==c&&e.emit("slidesLengthChange"),h.length!==E&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),g.length!==S&&e.emit("slidesGridLengthChange"),a.watchSlidesProgress&&e.updateSlidesOffset(),!(d||a.cssMode||"slide"!==a.effect&&"fade"!==a.effect)){const t=`${a.containerModifierClass}backface-hidden`,s=e.el.classList.contains(t);m<=a.maxBackfaceHiddenSlides?s||e.el.classList.add(t):s&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;i<Math.ceil(t.params.slidesPerView);i+=1){const e=t.activeIndex+i;if(e>t.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;i<s.length;i+=1)if(void 0!==s[i]){const e=s[i].offsetHeight;r=e>r?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a<t.length;a+=1)t[a].swiperSlideOffset=(e.isHorizontal()?t[a].offsetLeft:t[a].offsetTop)-s-e.cssOverflowAdjustment()},updateSlidesProgress:function(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:a,rtlTranslate:i,snapGrid:r}=t;if(0===a.length)return;void 0===a[0].swiperSlideOffset&&t.updateSlidesOffset();let n=-e;i&&(n=e),a.forEach((e=>{e.classList.remove(s.slideVisibleClass)})),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e<a.length;e+=1){const o=a[e];let d=o.swiperSlideOffset;s.cssMode&&s.centeredSlides&&(d-=a[0].swiperSlideOffset);const c=(n+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),p=(n-r[0]+(s.centeredSlides?t.minTranslate():0)-d)/(o.swiperSlideSize+l),u=-(n-d),m=u+t.slidesSizesGrid[e];(u>=0&&u<t.size-1||m>1&&m<=t.size||u<=0&&m>=t.size)&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e),a[e].classList.add(s.slideVisibleClass)),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l;if(t.forEach((e=>{e.classList.remove(s.slideActiveClass,s.slideNextClass,s.slidePrevClass)})),r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=n(`[data-swiper-slide-index="${t}"]`)}else l=n(`[data-swiper-slide-index="${i}"]`);else l=t[i];if(l){l.classList.add(s.slideActiveClass);let e=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&!e&&(e=t[0]),e&&e.classList.add(s.slideNextClass);let a=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(l,`.${s.slideClass}, swiper-slide`)[0];s.loop&&0===!a&&(a=t[t.length-1]),a&&a.classList.add(s.slidePrevClass)}e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e<t.length;e+=1)void 0!==t[e+1]?a>=t[e]&&a<t[e+1]-(t[e+1]-t[e])/2?i=e:a>=t[e]&&a<t[e+1]&&(i=e+1):a>=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r)return o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")),void(t.params.loop&&t.virtual&&t.params.virtual.enabled&&(t.realIndex=c(d)));let p;p=t.virtual&&i.virtual.enabled&&i.loop?c(d):t.slides[d]?parseInt(t.slides[d].getAttribute("data-swiper-slide-index")||d,10):d,Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:p,previousIndex:r,activeIndex:d}),t.initialized&&I(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),n!==p&&t.emit("realIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&t.emit("slideChange")},updateClickedSlide:function(e){const t=this,s=t.params,a=e.closest(`.${s.slideClass}, swiper-slide`);let i,r=!1;if(a)for(let e=0;e<t.slides.length;e+=1)if(t.slides[e]===a){r=!0,i=e;break}if(!a||!r)return t.clickedSlide=void 0,void(t.clickedIndex=void 0);t.clickedSlide=a,t.virtual&&t.params.virtual.enabled?t.clickedIndex=parseInt(a.getAttribute("data-swiper-slide-index"),10):t.clickedIndex=i,s.slideToClickedSlide&&void 0!==t.clickedIndex&&t.clickedIndex!==t.activeIndex&&t.slideToClickedSlide()}};var O={getTranslate:function(e){void 0===e&&(e=this.isHorizontal()?"x":"y");const{params:t,rtlTranslate:s,translate:a,wrapperEl:i}=this;if(t.virtualTranslate)return s?-a:a;if(t.cssMode)return a;let r=o(i,e);return r+=this.cssOverflowAdjustment(),s&&(r=-r),r||0},setTranslate:function(e,t){const s=this,{rtlTranslate:a,params:i,wrapperEl:r,progress:n}=s;let l,o=0,d=0;s.isHorizontal()?o=a?-e:e:d=e,i.roundLengths&&(o=Math.floor(o),d=Math.floor(d)),s.previousTranslate=s.translate,s.translate=s.isHorizontal()?o:d,i.cssMode?r[s.isHorizontal()?"scrollLeft":"scrollTop"]=s.isHorizontal()?-o:-d:i.virtualTranslate||(s.isHorizontal()?o-=s.cssOverflowAdjustment():d-=s.cssOverflowAdjustment(),r.style.transform=`translate3d(${o}px, ${d}px, 0px)`);const c=s.maxTranslate()-s.minTranslate();l=0===c?0:(e-s.minTranslate())/c,l!==n&&s.updateProgress(e),s.emit("setTranslate",s.translate,t)},minTranslate:function(){return-this.snapGrid[0]},maxTranslate:function(){return-this.snapGrid[this.snapGrid.length-1]},translateTo:function(e,t,s,a,i){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),void 0===a&&(a=!0);const r=this,{params:n,wrapperEl:l}=r;if(r.animating&&n.preventInteractionOnTransition)return!1;const o=r.minTranslate(),d=r.maxTranslate();let c;if(c=a&&e>o?o:a&&e<d?d:e,r.updateProgress(c),n.cssMode){const e=r.isHorizontal();if(0===t)l[e?"scrollLeft":"scrollTop"]=-c;else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:-c,side:e?"left":"top"}),!0;l.scrollTo({[e?"left":"top"]:-c,behavior:"smooth"})}return!0}return 0===t?(r.setTransition(0),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionEnd"))):(r.setTransition(t),r.setTranslate(c),s&&(r.emit("beforeTransitionStart",t,i),r.emit("transitionStart")),r.animating||(r.animating=!0,r.onTranslateToWrapperTransitionEnd||(r.onTranslateToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onTranslateToWrapperTransitionEnd),r.onTranslateToWrapperTransitionEnd=null,delete r.onTranslateToWrapperTransitionEnd,s&&r.emit("transitionEnd"))}),r.wrapperEl.addEventListener("transitionend",r.onTranslateToWrapperTransitionEnd))),!0}};function D(e){let{swiper:t,runCallbacks:s,direction:a,step:i}=e;const{activeIndex:r,previousIndex:n}=t;let l=a;if(l||(l=r>n?"next":r<n?"prev":"reset"),t.emit(`transition${i}`),s&&r!==n){if("reset"===l)return void t.emit(`slideResetTransition${i}`);t.emit(`slideChangeTransition${i}`),"next"===l?t.emit(`slideNextTransition${i}`):t.emit(`slidePrevTransition${i}`)}}var G={slideTo:function(e,t,s,a,i){void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e&&(e=parseInt(e,10));const r=this;let n=e;n<0&&(n=0);const{params:l,snapGrid:o,slidesGrid:d,previousIndex:c,activeIndex:p,rtlTranslate:u,wrapperEl:h,enabled:f}=r;if(r.animating&&l.preventInteractionOnTransition||!f&&!a&&!i)return!1;const g=Math.min(r.params.slidesPerGroupSkip,n);let v=g+Math.floor((n-g)/r.params.slidesPerGroup);v>=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e<d.length;e+=1){const t=-Math.floor(100*w),s=Math.floor(100*d[e]),a=Math.floor(100*d[e+1]);void 0!==d[e+1]?t>=s&&t<a-(a-s)/2?n=e:t>=s&&t<a&&(n=e+1):t>=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&w<r.translate&&w<r.minTranslate())return!1;if(!r.allowSlidePrev&&w>r.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n<p?"prev":"reset",u&&-w===r.translate||!u&&w===r.translate)return r.updateActiveIndex(n),l.autoHeight&&r.updateAutoHeight(),r.updateSlidesClasses(),"slide"!==l.effect&&r.setTranslate(w),"reset"!==b&&(r.transitionStart(s,b),r.transitionEnd(s,b)),!1;if(l.cssMode){const e=r.isHorizontal(),s=u?w:-w;if(0===t){const t=r.virtual&&r.params.virtual.enabled;t&&(r.wrapperEl.style.scrollSnapType="none",r._immediateVirtual=!0),t&&!r._cssModeVirtualInitialSet&&r.params.initialSlide>0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===t&&(t=this.params.speed),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;let r=e;return i.params.loop&&(i.virtual&&i.params.virtual.enabled?r+=i.virtual.slidesBefore:r=i.getSlideIndexByData(r)),i.slideTo(r,t,s,a)},slideNext:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i)return a;let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex<r.slidesPerGroupSkip?1:l,d=a.virtual&&r.virtual.enabled;if(r.loop){if(n&&!d&&r.loopPreventsSliding)return!1;a.loopFix({direction:"next"}),a._clientLeft=a.wrapperEl.clientLeft}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o)return a;const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return a.slideTo(f,e,t,s)},slideReset:function(e,t,s){return void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),this.slideTo(this.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===e&&(e=this.params.speed),void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this,{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const l=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?r<e.loopedSlides-a/2||r>e.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${l}[data-swiper-slide-index="${i}"]`)[0]),n((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var H={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)})),t.loopFix({slideRealIndex:e,direction:s.centeredSlides?void 0:"next"})},loopFix:function(e){let{slideRealIndex:t,slideTo:s=!0,direction:a,setTranslate:i,activeSlideIndex:r,byController:n,byMousewheel:l}=void 0===e?{}:e;const o=this;if(!o.params.loop)return;o.emit("beforeLoopFix");const{slides:d,allowSlidePrev:c,allowSlideNext:p,slidesEl:u,params:m}=o;if(o.allowSlidePrev=!0,o.allowSlideNext=!0,o.virtual&&m.virtual.enabled)return s&&(m.centeredSlides||0!==o.snapIndex?m.centeredSlides&&o.snapIndex<m.slidesPerView?o.slideTo(o.virtual.slides.length+o.snapIndex,0,!1,!0):o.snapIndex===o.snapGrid.length-1&&o.slideTo(o.virtual.slidesBefore,0,!1,!0):o.slideTo(o.virtual.slides.length,0,!1,!0)),o.allowSlidePrev=c,o.allowSlideNext=p,void o.emit("loopFix");const h="auto"===m.slidesPerView?o.slidesPerViewDynamic():Math.ceil(parseFloat(m.slidesPerView,10));let f=m.loopedSlides||h;f%m.slidesPerGroup!=0&&(f+=m.slidesPerGroup-f%m.slidesPerGroup),o.loopedSlides=f;const g=[],v=[];let w=o.activeIndex;void 0===r?r=o.getSlideIndex(o.slides.filter((e=>e.classList.contains(m.slideActiveClass)))[0]):w=r;const b="next"===a||!a,y="prev"===a||!a;let E=0,x=0;if(r<f){E=Math.max(f-r,m.slidesPerGroup);for(let e=0;e<f-r;e+=1){const t=e-Math.floor(e/d.length)*d.length;g.push(d.length-t-1)}}else if(r>o.slides.length-2*f){x=Math.max(r-(o.slides.length-2*f),m.slidesPerGroup);for(let e=0;e<x;e+=1){const t=e-Math.floor(e/d.length)*d.length;v.push(t)}}if(y&&g.forEach((e=>{o.slides[e].swiperLoopMoveDOM=!0,u.prepend(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),b&&v.forEach((e=>{o.slides[e].swiperLoopMoveDOM=!0,u.append(o.slides[e]),o.slides[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView&&o.updateSlides(),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(g.length>0&&y)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w+E,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t))}else i&&o.slideToLoop(t,0,!1,!0);else if(v.length>0&&b)if(void 0===t){const e=o.slidesGrid[w],t=o.slidesGrid[w-x]-e;l?o.setTranslate(o.translate-t):(o.slideTo(w-x,0,!1,!0),i&&(o.touches[o.isHorizontal()?"startX":"startY"]+=t))}else o.slideToLoop(t,0,!1,!0);if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,slideTo:!1,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix(e)})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix(e)}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function X(e){const t=this,s=a(),i=r(),n=t.touchEventsData;n.evCache.push(e);const{params:o,touches:d,enabled:c}=t;if(!c)return;if(!o.simulateTouch&&"mouse"===e.pointerType)return;if(t.animating&&o.preventInteractionOnTransition)return;!t.animating&&o.cssMode&&o.loop&&t.loopFix();let p=e;p.originalEvent&&(p=p.originalEvent);let u=p.target;if("wrapper"===o.touchEventsTarget&&!t.wrapperEl.contains(u))return;if("which"in p&&3===p.which)return;if("button"in p&&p.button>0)return;if(n.isTouched&&n.isMoved)return;const m=!!o.noSwipingClass&&""!==o.noSwipingClass,h=e.composedPath?e.composedPath():e.path;m&&p.target&&p.target.shadowRoot&&h&&(u=h[0]);const f=o.noSwipingSelector?o.noSwipingSelector:`.${o.noSwipingClass}`,g=!(!p.target||!p.target.shadowRoot);if(o.noSwiping&&(g?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(f,u):u.closest(f)))return void(t.allowClick=!0);if(o.swipeHandler&&!u.closest(o.swipeHandler))return;d.currentX=p.pageX,d.currentY=p.pageY;const v=d.currentX,w=d.currentY,b=o.edgeSwipeDetection||o.iOSEdgeSwipeDetection,y=o.edgeSwipeThreshold||o.iOSEdgeSwipeThreshold;if(b&&(v<=y||v>=i.innerWidth-y)){if("prevent"!==b)return;e.preventDefault()}Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=w,n.touchStartTime=l(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,o.threshold>0&&(n.allowThresholdMove=!1);let E=!0;u.matches(n.focusableElements)&&(E=!1,"SELECT"===u.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==u&&s.activeElement.blur();const x=E&&t.allowTouchMove&&o.touchStartPreventDefault;!o.touchStartForcePreventDefault&&!x||u.isContentEditable||p.preventDefault(),t.params.freeMode&&t.params.freeMode.enabled&&t.freeMode&&t.animating&&!o.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",p)}function Y(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:o,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c=e;if(c.originalEvent&&(c=c.originalEvent),!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",c));const p=i.evCache.findIndex((e=>e.pointerId===c.pointerId));p>=0&&(i.evCache[p]=c);const u=i.evCache.length>1?i.evCache[0]:c,m=u.pageX,h=u.pageY;if(c.preventedByNestedSwiper)return n.startX=m,void(n.startY=h);if(!s.allowTouchMove)return c.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:m,startY:h,prevX:s.touches.currentX,prevY:s.touches.currentY,currentX:m,currentY:h}),i.touchStartTime=l()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(h<n.startY&&s.translate<=s.maxTranslate()||h>n.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(m<n.startX&&s.translate<=s.maxTranslate()||m>n.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);if(i.allowTouchCallbacks&&s.emit("touchMove",c),c.targetTouches&&c.targetTouches.length>1)return;n.currentX=m,n.currentY=h;const f=n.currentX-n.startX,g=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(f**2+g**2)<s.params.threshold)return;if(void 0===i.isScrolling){let e;s.isHorizontal()&&n.currentY===n.startY||s.isVertical()&&n.currentX===n.startX?i.isScrolling=!1:f*f+g*g>=25&&(e=180*Math.atan2(Math.abs(g),Math.abs(f))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",c),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||s.zoom&&s.params.zoom&&s.params.zoom.enabled&&i.evCache.length>1)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let v=s.isHorizontal()?f:g,w=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(v=Math.abs(v)*(o?1:-1),w=Math.abs(w)*(o?1:-1)),n.diff=v,v*=r.touchRatio,o&&(v=-v,w=-w);const b=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=w>0?"prev":"next";const y=s.params.loop&&!r.cssMode;if(!i.isMoved){if(y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}let E;i.isMoved&&b!==s.touchesDirection&&y&&Math.abs(v)>=1&&(s.loopFix({direction:s.swipeDirection,setTranslate:!0}),E=!0),s.emit("sliderMove",c),i.isMoved=!0,i.currentTranslate=v+i.startTranslate;let x=!0,S=r.resistanceRatio;if(r.touchReleaseOnEdges&&(S=0),v>0?(y&&!E&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.size/2:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+v)**S))):v<0&&(y&&!E&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.size/2:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslate<s.maxTranslate()&&(x=!1,r.resistance&&(i.currentTranslate=s.maxTranslate()+1-(s.maxTranslate()-i.startTranslate-v)**S))),x&&(c.preventedByNestedSwiper=!0),!s.allowSlideNext&&"next"===s.swipeDirection&&i.currentTranslate<i.startTranslate&&(i.currentTranslate=i.startTranslate),!s.allowSlidePrev&&"prev"===s.swipeDirection&&i.currentTranslate>i.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(v)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),s.params.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function B(e){const t=this,s=t.touchEventsData,a=s.evCache.findIndex((t=>t.pointerId===e.pointerId));if(a>=0&&s.evCache.splice(a,1),["pointercancel","pointerout","pointerleave"].includes(e.type)){if(!("pointercancel"===e.type&&(t.browser.isSafari||t.browser.isWebView)))return}const{params:i,touches:r,rtlTranslate:o,slidesGrid:d,enabled:c}=t;if(!c)return;if(!i.simulateTouch&&"mouse"===e.pointerType)return;let p=e;if(p.originalEvent&&(p=p.originalEvent),s.allowTouchCallbacks&&t.emit("touchEnd",p),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&i.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);i.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=l(),m=u-s.touchStartTime;if(t.allowClick){const e=p.path||p.composedPath&&p.composedPath();t.updateClickedSlide(e&&e[0]||p.target),t.emit("tap click",p),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",p)}if(s.lastClickTime=l(),n((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===r.diff||s.currentTranslate===s.startTranslate)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=i.followFinger?o?t.translate:-t.translate:-s.currentTranslate,i.cssMode)return;if(t.params.freeMode&&i.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});let f=0,g=t.slidesSizesGrid[0];for(let e=0;e<d.length;e+=e<i.slidesPerGroupSkip?1:i.slidesPerGroup){const t=e<i.slidesPerGroupSkip-1?1:i.slidesPerGroup;void 0!==d[e+t]?h>=d[e]&&h<d[e+t]&&(f=e,g=d[e+t]-d[e]):h>=d[e]&&(f=e,g=d[d.length-1]-d[d.length-2])}let v=null,w=null;i.rewind&&(t.isBeginning?w=t.params.virtual&&t.params.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const b=(h-d[f])/g,y=f<i.slidesPerGroupSkip-1?1:i.slidesPerGroup;if(m>i.longSwipesMs){if(!i.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(b>=i.longSwipesRatio?t.slideTo(i.rewind&&t.isEnd?v:f+y):t.slideTo(f)),"prev"===t.swipeDirection&&(b>1-i.longSwipesRatio?t.slideTo(f+y):null!==w&&b<0&&Math.abs(b)>i.longSwipesRatio?t.slideTo(w):t.slideTo(f))}else{if(!i.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(p.target===t.navigation.nextEl||p.target===t.navigation.prevEl)?p.target===t.navigation.nextEl?t.slideTo(f+y):t.slideTo(f):("next"===t.swipeDirection&&t.slideTo(null!==v?v:f+y),"prev"===t.swipeDirection&&t.slideTo(null!==w?w:f))}}function N(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function q(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function R(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function F(e){const t=this;A(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}let _=!1;function V(){}const j=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",N,!0):e[c]("observerUpdate",N,!0),r[d]("load",e.onLoad,{capture:!0})};const W=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var U={init:!0,direction:"horizontal",oneWayMovement:!1,touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopedSlides:null,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function K(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(["navigation","pagination","scrollbar"].indexOf(a)>=0&&!0===e[a]&&(e[a]={auto:!0}),a in e&&"enabled"in i?(!0===e[a]&&(e[a]={enabled:!0}),"object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const Z={eventsEmitter:z,update:k,translate:O,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),D({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),D({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:H,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,t=a(),{params:s}=e;e.onTouchStart=X.bind(e),e.onTouchMove=Y.bind(e),e.onTouchEnd=B.bind(e),s.cssMode&&(e.onScroll=R.bind(e)),e.onClick=q.bind(e),e.onLoad=F.bind(e),_||(t.addEventListener("touchstart",V),_=!0),j(e,"on")},detachEvents:function(){j(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=W(e,a),d=W(e,l),c=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),["navigation","pagination","scrollbar"].forEach((t=>{const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const u=l.direction&&l.direction!==a.direction,m=a.loop&&(l.slidesPerView!==a.slidesPerView||u);u&&s&&e.changeDirection(),p(e.params,l);const h=e.params.enabled;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),c&&!h?e.disable():!c&&h&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),m&&s&&(e.loopDestroy(),e.loopCreate(t),e.updateSlides()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e<l.length;e+=1){const{point:r,value:n}=l[e];"window"===t?i.matchMedia(`(min-width: ${n}px)`).matches&&(a=r):n<=s.clientWidth&&(a=r)}return a||"max"}},checkOverflow:{checkOverflow:function(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:a}=s;if(a){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*a;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e.classList.remove(...t),this.emitContainerClasses()}}},Q={};class J{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r<s;r++)i[r]=arguments[r];1===i.length&&i[0].constructor&&"Object"===Object.prototype.toString.call(i[0]).slice(8,-1)?t=i[0]:[e,t]=i,t||(t={}),t=p({},t),e&&!t.el&&(t.el=e);const n=a();if(t.el&&"string"==typeof t.el&&n.querySelectorAll(t.el).length>1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new J(a))})),e}const l=this;l.__swiper__=!0,l.support=C(),l.device=P({userAgent:t.userAgent}),l.browser=L(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:K(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},U,o);return l.params=p({},d,Q,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,evCache:[]},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=b(f(t,`.${s.slideClass}, swiper-slide`)[0]);return b(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if(s.centeredSlides){let e,t=a[l].swiperSlideSize;for(let s=l+1;s<a.length;s+=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e<a.length;e+=1){(t?i[e]+r[e]-i[l]<n:i[e]-i[l]<n)&&(o+=1)}else for(let e=l-1;e>=0;e-=1){i[l]-i[e]<n&&(o+=1)}return o}update(){const e=this;if(!e||e.destroyed)return;const{snapGrid:t,params:s}=e;function a(){const t=e.rtlTranslate?-1*e.translate:e.translate,s=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(s),e.updateActiveIndex(),e.updateSlidesClasses()}let i;if(s.breakpoints&&e.setBreakpoint(),[...e.el.querySelectorAll('[loading="lazy"]')].forEach((t=>{t.complete&&A(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),e.params.freeMode&&e.params.freeMode.enabled)a(),e.params.autoHeight&&e.updateAutoHeight();else{if(("auto"===e.params.slidesPerView||e.params.slidesPerView>1)&&e.isEnd&&!e.params.centeredSlides){const t=e.virtual&&e.params.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.shadowEl&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=g("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement?s:i,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===w(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===w(s,"direction")),wrongRTL:"-webkit-box"===w(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;return!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents(),[...t.el.querySelectorAll('[loading="lazy"]')].forEach((e=>{e.complete?A(t,e):e.addEventListener("load",(e=>{A(t,e.target)}))})),I(t),t.initialized=!0,I(t),t.emit("init"),t.emit("afterInit")),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i.removeAttribute("style"),r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el.swiper=null,function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(Q,e)}static get extendedDefaults(){return Q}static get defaults(){return U}static installModule(e){J.prototype.__modules__||(J.prototype.__modules__=[]);const t=J.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>J.installModule(e))),J):(J.installModule(e),J)}}function ee(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=g("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function te(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function se(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&i(e[t]);else i(e);t.recalcSlides(),s.loop&&t.loopCreate(),s.observer&&!t.isElement||t.update()}function ae(e){const t=this,{params:s,activeIndex:a,slidesEl:i}=t;s.loop&&t.loopDestroy();let r=a+1;const n=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t<e.length;t+=1)e[t]&&n(e[t]);r=a+e.length}else n(e);t.recalcSlides(),s.loop&&t.loopCreate(),s.observer&&!t.isElement||t.update(),t.slideTo(r,0,!1)}function ie(e,t){const s=this,{params:a,activeIndex:i,slidesEl:r}=s;let n=i;a.loop&&(n-=s.loopedSlides,s.loopDestroy(),s.recalcSlides());const l=s.slides.length;if(e<=0)return void s.prependSlide(t);if(e>=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;e<t.length;e+=1)t[e]&&r.append(t[e]);o=n>e?n+t.length:n}else r.append(t);for(let e=0;e<d.length;e+=1)r.append(d[e]);s.recalcSlides(),a.loop&&s.loopCreate(),a.observer&&!s.isElement||s.update(),a.loop?s.slideTo(o+s.loopedSlides,0,!1):s.slideTo(o,0,!1)}function re(e){const t=this,{params:s,activeIndex:a}=t;let i=a;s.loop&&(i-=t.loopedSlides,t.loopDestroy());let r,n=i;if("object"==typeof e&&"length"in e){for(let s=0;s<e.length;s+=1)r=e[s],t.slides[r]&&t.slides[r].remove(),r<n&&(n-=1);n=Math.max(n,0)}else r=e,t.slides[r]&&t.slides[r].remove(),r<n&&(n-=1),n=Math.max(n,0);t.recalcSlides(),s.loop&&t.loopCreate(),s.observer&&!t.isElement||t.update(),s.loop?t.slideTo(n+t.loopedSlides,0,!1):t.slideTo(n,0,!1)}function ne(){const e=this,t=[];for(let s=0;s<e.slides.length;s+=1)t.push(s);e.removeSlide(t)}function le(e){const{effect:t,swiper:s,on:a,setTranslate:i,setTransition:r,overwriteParams:n,perspective:l,recreateShadows:o,getEffectParams:d}=e;let c;a("beforeInit",(()=>{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function oe(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function de(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowEl&&t.shadowEl===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function ce(e,t,s){const a="swiper-slide-shadow"+(s?`-${s}`:""),i=h(t);let r=i.querySelector(`.${a}`);return r||(r=g("div","swiper-slide-shadow"+(s?`-${s}`:"")),i.append(r)),r}Object.keys(Z).forEach((e=>{Object.keys(Z[e]).forEach((t=>{J.prototype[t]=Z[e][t]}))})),J.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:void 0===s.childList||s.childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=y(t.el);for(let t=0;t<e.length;t+=1)o(e[t])}o(t.el,{childList:t.params.observeSlideChildren}),o(t.wrapperEl,{attributes:!1})}})),a("destroy",(()=>{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const pe=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?g("swiper-slide"):g("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e){const{slidesPerView:t,slidesPerGroup:a,centeredSlides:i,loop:r}=s.params,{addSlidesBefore:l,addSlidesAfter:o}=s.params.virtual,{from:c,to:p,slides:u,slidesGrid:m,offset:h}=s.virtual;s.params.cssMode||s.updateActiveIndex();const g=s.activeIndex||0;let v,w,b;v=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",i?(w=Math.floor(t/2)+a+o,b=Math.floor(t/2)+a+l):(w=t+(a-1)+o,b=(r?t:a)+l);let y=g-b,E=g+w;r||(y=Math.max(y,0),E=Math.min(E,u.length-1));let x=(s.slidesGrid[y]||0)-(s.slidesGrid[0]||0);function S(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(r&&g>=b?(y-=b,i||(x+=s.slidesGrid[0])):r&&g<b&&(y=-b,i&&(x+=s.slidesGrid[0])),Object.assign(s.virtual,{from:y,to:E,offset:x,slidesGrid:s.slidesGrid,slidesBefore:b,slidesAfter:w}),c===y&&p===E&&!e)return s.slidesGrid!==m&&x!==h&&s.slides.forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:x,from:y,to:E,slides:function(){const e=[];for(let t=y;t<=E;t+=1)e.push(u[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?S():n("virtualUpdate"));const T=[],M=[],C=e=>{let t=e;return e<0?t=u.length+e:t>=u.length&&(t-=u.length),t};if(e)s.slidesEl.querySelectorAll(`.${s.params.slideClass}, swiper-slide`).forEach((e=>{e.remove()}));else for(let e=c;e<=p;e+=1)if(e<y||e>E){const t=C(e);s.slidesEl.querySelectorAll(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`).forEach((e=>{e.remove()}))}const P=r?-u.length:0,L=r?2*u.length:u.length;for(let t=P;t<L;t+=1)if(t>=y&&t<=E){const s=C(t);void 0===p||e?M.push(s):(t>p&&M.push(s),t<c&&T.push(s))}if(M.forEach((e=>{s.slidesEl.append(d(u[e],e))})),r)for(let e=T.length-1;e>=0;e-=1){const t=T[e];s.slidesEl.prepend(d(u[t],t))}else T.sort(((e,t)=>t-e)),T.forEach((e=>{s.slidesEl.prepend(d(u[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[v]=x-Math.abs(s.cssOverflowAdjustment())+"px"})),S()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,s.params.initialSlide||c()})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.push(e[t]);else s.virtual.slides.push(e);c(!0)},prependSlide:function(e){const t=s.activeIndex;let a=t+1,i=1;if(Array.isArray(e)){for(let t=0;t<e.length;t+=1)e[t]&&s.virtual.slides.unshift(e[t]);a=t+e.length,i=e.length}else s.virtual.slides.unshift(e);if(s.params.virtual.cache){const e=s.virtual.cache,t={};Object.keys(e).forEach((s=>{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.virtual.slides.splice(e[a],1),s.params.virtual.cache&&delete s.virtual.cache[e[a]],e[a]<t&&(t-=1),t=Math.max(t,0);else s.virtual.slides.splice(e,1),s.params.virtual.cache&&delete s.virtual.cache[e],e<t&&(t-=1),t=Math.max(t,0);c(!0),s.slideTo(t,0)},removeAllSlides:function(){s.virtual.slides=[],s.params.virtual.cache&&(s.virtual.cache={}),c(!0),s.slideTo(0,0)},update:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:n}=e;const l=a(),o=r();function d(e){if(!t.enabled)return;const{rtlTranslate:s}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const i=a.keyCode||a.charCode,r=t.params.keyboard.pageUpDown,d=r&&33===i,c=r&&34===i,p=37===i,u=39===i,m=38===i,h=40===i;if(!t.allowSlideNext&&(t.isHorizontal()&&u||t.isVertical()&&h||c))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&p||t.isVertical()&&m||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||c||p||u||m||h)){let e=!1;if(y(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===y(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=v(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t<c.length;t+=1){const s=c[t];if(s[0]>=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const o=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=l();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta<t.params.mousewheel.thresholdDelta)&&(!(t.params.mousewheel.thresholdTime&&l()-p<t.params.mousewheel.thresholdTime)&&(e.delta>=6&&l()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new o.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const p=o&&o.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:l(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time<c.time+500&&e.delta<=c.delta&&e.direction===c.direction;if(!a){c=void 0;let l=t.getTranslate()+m*r.sensitivity;const o=t.isBeginning,p=t.isEnd;if(l>=t.minTranslate()&&(l=t.minTranslate()),l<=t.maxTranslate()&&(l=t.maxTranslate()),t.setTransition(0),t.setTranslate(l),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=n((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=n((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l===t.minTranslate()||l===t.maxTranslate())return!0}}else{const s={time:l(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null};const r=e=>(Array.isArray(e)||(e=[e].filter((e=>!!e))),e);function n(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.shadowRoot.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s.length>1&&1===t.el.querySelectorAll(e).length&&(s=t.el.querySelector(e))),e&&!s?e:s)}function l(e,s){const a=t.params.navigation;(e=r(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function o(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return l(s,!1),void l(e,!1);l(s,t.isBeginning&&!t.params.rewind),l(e,t.isEnd&&!t.params.rewind)}function d(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function c(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=ee(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=n(e.nextEl),a=n(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=r(s),a=r(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?c:d),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function u(){let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?c:d),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}a("init",(()=>{!1===t.params.navigation.enabled?m():(p(),o())})),a("toEdge fromEdge lock unlock",(()=>{o()})),a("destroy",(()=>{u()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=r(e),s=r(s),[...e,...s].filter((e=>!!e)).forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:n}=t.navigation;a=r(a),n=r(n);const l=s.target;if(t.params.navigation.hideOnClick&&!n.includes(l)&&!a.includes(l)){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===l||t.pagination.el.contains(l)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):n.length&&(e=n[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...n].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const m=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),u()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),o()},disable:m,update:o,init:p,destroy:u})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;const o=e=>(Array.isArray(e)||(e=[e].filter((e=>!!e))),e);function d(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function c(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function p(e){const s=e.target.closest(te(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=b(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;const e=t.getSlideIndexByData(a),s=t.getSlideIndexByData(t.realIndex);e>t.slides.length-t.loopedSlides&&t.loopFix({direction:e>s?"next":"prev",activeSlideIndex:e,slideTo:!1}),t.slideToLoop(a)}else t.slideTo(a)}function u(){const e=t.rtl,s=t.params.pagination;if(d())return;let a,r,p=t.pagination.el;p=o(p);const u=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,m=t.params.loop?Math.ceil(u/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,d,u;if(s.dynamicBullets&&(n=x(i[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),d=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(d+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)i.forEach((e=>{const t=b(e);t===a&&e.classList.add(...s.bulletActiveClass.split(" ")),s.dynamicBullets&&(t>=o&&t<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&c(e,"prev"),t===d&&c(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),s.dynamicBullets){const e=i[o],t=i[d];for(let e=o;e<=d;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));c(e,"prev"),c(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(te(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(te(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/m;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(te(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,m),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=t.params.pagination;if(d())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length;let a=t.pagination.el;a=o(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s<a;s+=1)e.renderBullet?r+=e.renderBullet.call(t,s,e.bulletClass):r+=`<${e.bulletElement} class="${e.bulletClass}"></${e.bulletElement}>`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):`<span class="${e.currentClass}"></span> / <span class="${e.totalClass}"></span>`),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):`<span class="${e.progressbarFillClass}"></span>`),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(te(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function h(){t.params.pagination=ee(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.shadowRoot.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>y(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=o(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(e.clickableClass),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function f(){const e=t.params.pagination;if(d())return;let s=t.pagination.el;s&&(s=o(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&s.removeEventListener("click",p)}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=o(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?g():(h(),m(),u())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&u()})),a("snapIndexChange",(()=>{u()})),a("snapGridLengthChange",(()=>{m(),u()})),a("destroy",(()=>{f()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{u()})),a("click",((e,s)=>{const a=s.target;let{el:r}=t.pagination;if(Array.isArray(r)||(r=[r].filter((e=>!!e))),t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const g=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),f()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=o(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),h(),m(),u()},disable:g,render:m,update:u,init:h,destroy:f})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const l=a();let o,d,c,p,u=!1,m=null,h=null;function f(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=d,o=(c-d)*n;s?(o=-o,o>0?(l=d-o,o=0):-o+d>c&&(l=c+o)):o<0?(l=d+o,o=0):o+d>c&&(l=c-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(m),i.style.opacity=1,m=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function w(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?a.offsetWidth:a.offsetHeight,p=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),d="auto"===t.params.scrollbar.dragSize?c*p:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${d}px`:s.style.height=`${d}px`,a.style.display=p>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function b(e){return t.isHorizontal()?e.clientX:e.clientY}function y(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(b(e)-v(i)[t.isHorizontal()?"left":"top"]-(null!==o?o:d/2))/(c-d),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;u=!0,o=e.target===l?b(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",y(e),clearTimeout(h),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function x(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;u&&(e.preventDefault?e.preventDefault():e.returnValue=!1,y(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function S(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:l}=a;u&&(u=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(h),h=n((()=>{l.style.opacity=0,l.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function T(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},o=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),l[d]("pointermove",x,n),l[d]("pointerup",S,o)}function M(){const{scrollbar:e,el:s}=t;t.params.scrollbar=ee(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;"string"==typeof a.el&&t.isElement&&(i=t.el.shadowRoot.querySelector(a.el)),i||"string"!=typeof a.el?i||(i=a.el):i=l.querySelectorAll(a.el),t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(`.${t.params.scrollbar.dragClass}`),r||(r=g("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&T("on"),i&&i.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)}function C(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),t.params.scrollbar.el&&t.scrollbar.el&&T("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("init",(()=>{!1===t.params.scrollbar.enabled?P():(M(),w(),f())})),i("update resize observerUpdate lock unlock",(()=>{w()})),i("setTranslate",(()=>{f()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](t.params.scrollbar.lockClass)})),i("destroy",(()=>{C()}));const P=()=>{t.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.add(t.params.scrollbar.scrollbarDisabledClass),C()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),t.scrollbar.el&&t.scrollbar.el.classList.remove(t.params.scrollbar.scrollbarDisabledClass),M(),w(),f()},disable:P,updateSize:w,setTranslate:f,init:M,destroy:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},r=()=>{const{el:e,slides:s,progress:a,snapGrid:r}=t;f(e,"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").forEach((e=>{i(e,a)})),s.forEach(((e,s)=>{let n=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(n+=Math.ceil(s/2)-a*(r.length-1)),n=Math.min(Math.max(n,-1),1),e.querySelectorAll("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]").forEach((e=>{i(e,n)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&r()})),a("setTranslate",(()=>{t.params.parallax.enabled&&r()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s}=t;s.querySelectorAll("[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]").forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,d,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let w=1;function b(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function E(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!E(e))return;const s=t.params.zoom;if(l=!1,d=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=b(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?y(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=m.imageWrapEl.getAttribute("data-swiper-zoom")||s.maxRatio}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function S(e){if(!E(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(d=!0,m.scaleMove=b(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scale<s.minRatio&&(a.scale=s.minRatio+1-(s.minRatio-a.scale+1)**.5),m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`))}function T(e){if(!E(e))return;if("mouse"===e.pointerType&&"pointerout"===e.type)return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&d&&(l=!1,d=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function M(e){if(!E(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.el.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth,h.height=m.imageEl.offsetHeight,h.startX=o(m.imageWrapEl,"x")||0,h.startY=o(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;if(a<m.slideWidth&&i<m.slideHeight)return;h.minX=Math.min(m.slideWidth/2-a/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-i/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.x<h.touchesStart.x||Math.floor(h.maxX)===Math.floor(h.startX)&&h.touchesCurrent.x>h.touchesStart.x))return void(h.isTouched=!1);if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.y<h.touchesStart.y||Math.floor(h.maxY)===Math.floor(h.startY)&&h.touchesCurrent.y>h.touchesStart.y))return void(h.isTouched=!1)}e.cancelable&&e.preventDefault(),e.stopPropagation(),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentX<h.minX&&(h.currentX=h.minX+1-(h.minX-h.currentX+1)**.8),h.currentX>h.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentY<h.minY&&(h.currentY=h.minY+1-(h.minY-h.currentY+1)**.8),h.currentY>h.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function C(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function P(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?y(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,w,b,E,x,S,T,M,C,P,L;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const z="number"==typeof e?e:null;1===c&&z&&(i=void 0,r=void 0),s.scale=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,c=z||m.imageWrapEl.getAttribute("data-swiper-zoom")||a.maxRatio,!e||1===c&&z?(u=0,g=0):(P=m.slideEl.offsetWidth,L=m.slideEl.offsetHeight,l=v(m.slideEl).left+n.scrollX,o=v(m.slideEl).top+n.scrollY,d=l+P/2-i,p=o+L/2-r,w=m.imageEl.offsetWidth,b=m.imageEl.offsetHeight,E=w*s.scale,x=b*s.scale,S=Math.min(P/2-E/2,0),T=Math.min(L/2-x/2,0),M=-S,C=-T,u=d*s.scale,g=p*s.scale,u<S&&(u=S),u>M&&(u=M),g<T&&(g=T),g>C&&(g=C)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function L(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?y(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom;s.scale&&1!==s.scale?L():P(e)}function A(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function $(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.addEventListener("pointerdown",x,s),t.wrapperEl.addEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,T,s)})),t.wrapperEl.addEventListener("pointermove",M,a)}function I(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=A();t.wrapperEl.removeEventListener("pointerdown",x,s),t.wrapperEl.removeEventListener("pointermove",S,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,T,s)})),t.wrapperEl.removeEventListener("pointermove",M,a)}Object.defineProperty(t.zoom,"scale",{get:()=>w,set(e){if(w!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}w=e}}),a("init",(()=>{t.params.zoom.enabled&&$()})),a("destroy",(()=>{I()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&z(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:$,disable:I,in:P,out:L,toggle:z})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){const e=document.querySelector(t.params.controller.control);if(e&&e.swiper)t.controller.control=e.swiper;else if(e){const s=a=>{t.controller.control=a.detail[0],t.update(),e.removeEventListener("init",s)};e.addEventListener("init",s)}}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e<a.length;e+=1)a[e]!==s&&a[e]instanceof l&&o(a[e]);else a instanceof l&&s!==a&&o(a)},setTransition:function(e,s){const a=t.constructor,i=t.controller.control;let r;function l(s){s.destroyed||(s.setTransition(e,t),0!==e&&(s.transitionStart(),s.params.autoHeight&&n((()=>{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r<i.length;r+=1)i[r]!==s&&i[r]instanceof a&&l(i[r]);else i instanceof a&&s!==i&&l(i)}})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null}}),t.a11y={clicked:!1};let i=null;function r(e){const t=i;0!==t.length&&(t.innerHTML="",t.innerHTML=e)}const n=e=>(Array.isArray(e)||(e=[e].filter((e=>!!e))),e);function l(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function o(e){(e=n(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function d(e,t){(e=n(e)).forEach((e=>{e.setAttribute("role",t)}))}function c(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function p(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function u(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function m(e){(e=n(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function h(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;t.pagination&&t.pagination.el&&(a===t.pagination.el||t.pagination.el.contains(e.target))&&!e.target.matches(te(t.params.pagination.bulletClass))||(t.navigation&&t.navigation.nextEl&&a===t.navigation.nextEl&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?r(s.lastSlideMessage):r(s.nextSlideMessage)),t.navigation&&t.navigation.prevEl&&a===t.navigation.prevEl&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?r(s.firstSlideMessage):r(s.prevSlideMessage)),t.pagination&&a.matches(te(t.params.pagination.bulletClass))&&a.click())}function f(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function v(){return f()&&t.params.pagination.clickable}const w=(e,t,s)=>{l(e),"BUTTON"!==e.tagName&&(d(e,"button"),e.addEventListener("keydown",h)),p(e,s),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},y=()=>{t.a11y.clicked=!0},E=()=>{requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},x=e=>{if(t.a11y.clicked)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,t.slideTo(t.slides.indexOf(s),0))},S=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&c(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&d(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;p(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},T=()=>{const e=t.params.a11y;t.isElement?t.el.shadowEl.append(i):t.el.append(i);const s=t.el;e.containerRoleDescriptionMessage&&c(s,e.containerRoleDescriptionMessage),e.containerMessage&&p(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${l=16,void 0===l&&(l=16),"x".repeat(l).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var l;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,n(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=n(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),S();let{nextEl:u,prevEl:m}=t.navigation?t.navigation:{};if(u=n(u),m=n(m),u&&u.forEach((t=>w(t,r,e.nextSlideMessage))),m&&m.forEach((t=>w(t,r,e.prevSlideMessage))),v()){(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.addEventListener("keydown",h)}))}t.el.addEventListener("focus",x,!0),t.el.addEventListener("pointerdown",y,!0),t.el.addEventListener("pointerup",E,!0)};a("beforeInit",(()=>{i=g("span",t.params.a11y.notificationClass),i.setAttribute("aria-live","assertive"),i.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&T()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&S()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(u(s),o(s)):(m(s),l(s))),e&&(t.isEnd?(u(e),o(e)):(m(e),l(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;f()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(l(s),t.params.pagination.renderBullet||(d(s,"button"),p(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,b(s)+1)))),s.matches(te(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){i&&i.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=n(e),s=n(s),e&&e.forEach((e=>e.removeEventListener("keydown",h))),s&&s.forEach((e=>e.removeEventListener("keydown",h))),v()&&(Array.isArray(t.pagination.el)?t.pagination.el:[t.pagination.el]).forEach((e=>{e.removeEventListener("keydown",h)}));t.el.removeEventListener("focus",x,!0),t.el.removeEventListener("pointerdown",y,!0),t.el.removeEventListener("pointerup",E,!0)}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i<r;i+=1){const r=t.slides[i];if(l(r.getAttribute("data-history"))===s){const s=t.getSlideIndex(r);t.slideTo(s,e,a)}}else t.slideTo(0,e,a)},p=()=>{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`);if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`),s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!0,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g=o&&o.autoplay?o.autoplay.delay:3e3,v=o&&o.autoplay?o.autoplay.delay:3e3,w=(new Date).getTime;function b(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",b),M())}const y=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(v=d,c=!1);const e=i.autoplay.paused?d:w+v-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/g),s=requestAnimationFrame((()=>{y()}))},E=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),y();let a=void 0===e?i.params.autoplay.delay:e;g=i.params.autoplay.delay,v=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,g=r,v=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(w=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},x=()=>{i.autoplay.running=!0,E(),l("autoplayStart")},S=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},T=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",b):M()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-w),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},M=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(w=(new Date).getTime(),f?(f=!1,E(d)):E(),i.autoplay.paused=!1,l("autoplayResume"))},C=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,T(!0)),"visible"===e.visibilityState&&M()},P=e=>{"mouse"===e.pointerType&&(f=!0,T(!0))},L=e=>{"mouse"===e.pointerType&&i.autoplay.paused&&M()};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",P),i.el.addEventListener("pointerleave",L)),a().addEventListener("visibilitychange",C),w=(new Date).getTime(),x())})),n("destroy",(()=>{i.el.removeEventListener("pointerenter",P),i.el.removeEventListener("pointerleave",L),a().removeEventListener("visibilitychange",C),i.autoplay.running&&S()})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?T(!0,!0):S())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?S():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,T(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&M(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:x,stop:S,pause:T,resume:M})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(d(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function c(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e<i;e+=1)f(s.slidesEl,`[data-swiper-slide-index="${t.realIndex+e}"]`).forEach((e=>{e.classList.add(r)}));else for(let e=0;e<i;e+=1)s.slides[t.realIndex+e]&&s.slides[t.realIndex+e].classList.add(r);const n=t.params.thumbs.autoScrollOffset,l=n&&!s.params.loop;if(t.realIndex!==s.realIndex||l){const i=s.activeIndex;let r,o;if(s.params.loop){const e=s.slides.filter((e=>e.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),c(!0);else if(a){const s=i=>{e.swiper=i.detail[0],a.removeEventListener("init",s),o(),c(!0),e.swiper.update(),t.update()};a.addEventListener("init",s)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),c(!0)})),i("slideChange update resize observerUpdate",(()=>{c()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:c})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:l()})},onTouchEnd:function(e){let{currentPos:s}=e;const{params:r,wrapperEl:n,rtlTranslate:o,snapGrid:d,touchEventsData:c}=t,p=l()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length<d.length?t.slideTo(d.length-1):t.slideTo(t.slides.length-1);else{if(r.freeMode.momentum){if(c.velocities.length>1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)<r.freeMode.minimumVelocity&&(t.velocity=0),(i>150||l()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;o&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(p<t.maxTranslate())r.freeMode.momentumBounce?(p+t.maxTranslate()<-h&&(p=t.maxTranslate()-h),u=t.maxTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.maxTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(p>t.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t<d.length;t+=1)if(d[t]>-p){e=t;break}p=Math.abs(d[e]-p)<Math.abs(d[e-1]-p)||"next"===t.swipeDirection?d[e]:d[e-1],p=-p}if(f&&i("transitionEnd",(()=>{t.loopFix()})),0!==t.velocity){if(e=o?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((o?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s<a?r.speed:s<2*a?1.5*r.speed:2.5*r.speed}}else if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode.momentumBounce&&m?(t.updateProgress(u),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating=!0,E(n,(()=>{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,{swiper:i,extendParams:r}=e;r({grid:{rows:1,fill:"column"}});const n=()=>{let e=i.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*i.size:"string"==typeof e&&(e=parseFloat(e)),e};i.grid={initSlides:e=>{const{slidesPerView:r}=i.params,{rows:n,fill:l}=i.params.grid;s=t/n,a=Math.floor(e/n),t=Math.floor(e/n)===e/n?e:Math.ceil(e/n)*n,"auto"!==r&&"row"===l&&(t=Math.max(t,r*n))},updateSlide:(e,r,l,o)=>{const{slidesPerGroup:d}=i.params,c=n(),{rows:p,fill:u}=i.params.grid;let m,h,f;if("row"===u&&d>1){const s=Math.floor(e/(d*p)),a=e-p*d*s,i=0===s?d:Math.min(Math.ceil((l-s*p*d)/p),d);f=Math.floor(a/i),h=a-f*i+s*d,m=h+f*t/p,r.style.order=m}else"column"===u?(h=Math.floor(e/p),f=e-h*p,(h>a||h===a&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);r.style[o("margin-top")]=0!==f?c&&`${c}px`:""},updateWrapperSize:(e,s,a)=>{const{centeredSlides:r,roundLengths:l}=i.params,o=n(),{rows:d}=i.params.grid;if(i.virtualSize=(e+o)*t,i.virtualSize=Math.ceil(i.virtualSize/d)-o,i.wrapperEl.style[a("width")]=`${i.virtualSize+o}px`,r){const e=[];for(let t=0;t<s.length;t+=1){let a=s[t];l&&(a=Math.floor(a)),s[t]<i.virtualSize+s[0]&&e.push(a)}s.splice(0,s.length),s.push(...e)}}}},function(e){let{swiper:t}=e;Object.assign(t,{appendSlide:se.bind(t),prependSlide:ae.bind(t),addSlide:ie.bind(t),removeSlide:re.bind(t),removeAllSlides:ne.bind(t)})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}}),le({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s<e.length;s+=1){const e=t.slides[s];let a=-e.swiperSlideOffset;t.params.virtualTranslate||(a-=t.translate);let i=0;t.isHorizontal()||(i=a,a=0);const r=t.params.fadeEffect.crossFade?Math.max(1-Math.abs(e.progress),0):1+Math.min(Math.max(e.progress,-1),0),n=oe(0,e);n.style.opacity=r,n.style.transform=`translate3d(${a}px, ${i}px, 0px)`}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),de({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=g("div","swiper-slide-shadow-"+(s?"left":"top")),e.append(a)),i||(i=g("div","swiper-slide-shadow-"+(s?"right":"bottom")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};le({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=t.params.cubeEffect,p=t.isHorizontal(),u=t.virtual&&t.params.virtual.enabled;let m,h=0;c.shadow&&(p?(m=t.slidesEl.querySelector(".swiper-cube-shadow"),m||(m=g("div","swiper-cube-shadow"),t.slidesEl.append(m)),m.style.height=`${r}px`):(m=e.querySelector(".swiper-cube-shadow"),m||(m=g("div","swiper-cube-shadow"),e.append(m))));for(let e=0;e<a.length;e+=1){const t=a[e];let s=e;u&&(s=parseInt(t.getAttribute("data-swiper-slide-index"),10));let r=90*s,n=Math.floor(r/360);l&&(r=-r,n=Math.floor(-r/360));const d=Math.max(Math.min(t.progress,1),-1);let m=0,f=0,g=0;s%4==0?(m=4*-n*o,g=0):(s-1)%4==0?(m=0,g=4*-n*o):(s-2)%4==0?(m=o+4*n*o,g=o):(s-3)%4==0&&(m=-o,g=3*o+4*o*n),l&&(m=-m),p||(f=m,m=0);const v=`rotateX(${p?0:-r}deg) rotateY(${p?r:0}deg) translate3d(${m}px, ${f}px, ${g}px)`;d<=1&&d>-1&&(h=90*s+90*d,l&&(h=90*-s-90*d)),t.style.transform=v,c.slideShadows&&i(t,d,p)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(p)m.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(90deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(h)-90*Math.floor(Math.abs(h)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,i=c.shadowOffset;m.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-90deg)`}const f=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${f}px) rotateX(${t.isHorizontal()?0:h}deg) rotateY(${t.isHorizontal()?-h:0}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${f}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s,a)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=ce(0,e,t.isHorizontal()?"left":"top")),r||(r=ce(0,e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};le({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect;for(let r=0;r<e.length;r+=1){const n=e[r];let l=n.progress;t.params.flipEffect.limitRotation&&(l=Math.max(Math.min(n.progress,1),-1));const o=n.swiperSlideOffset;let d=-180*l,c=0,p=t.params.cssMode?-o-t.translate:-o,u=0;t.isHorizontal()?s&&(d=-d):(u=p,p=0,c=-d,d=0),n.style.zIndex=-Math.abs(Math.round(l))+e.length,a.slideShadows&&i(n,l);const m=`translate3d(${p}px, ${u}px, 0px) rotateX(${c}deg) rotateY(${d}deg)`;oe(0,n).style.transform=m}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),de({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect;t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),le({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth;for(let e=0,t=a.length;e<t;e+=1){const t=a[e],s=i[e],l=(o-t.swiperSlideOffset-s/2)/s,p="function"==typeof r.modifier?r.modifier(l):l*r.modifier;let u=n?d*p:0,m=n?0:d*p,h=-c*Math.abs(p),f=r.stretch;"string"==typeof f&&-1!==f.indexOf("%")&&(f=parseFloat(r.stretch)/100*s);let g=n?0:f*p,v=n?f*p:0,w=1-(1-r.scale)*Math.abs(p);Math.abs(v)<.001&&(v=0),Math.abs(g)<.001&&(g=0),Math.abs(h)<.001&&(h=0),Math.abs(u)<.001&&(u=0),Math.abs(m)<.001&&(m=0),Math.abs(w)<.001&&(w=0);const b=`translate3d(${v}px,${g}px,${h}px)  rotateX(${m}deg) rotateY(${u}deg) scale(${w})`;if(oe(0,t).style.transform=b,t.style.zIndex=1-Math.abs(Math.round(p)),r.slideShadows){let e=n?t.querySelector(".swiper-slide-shadow-left"):t.querySelector(".swiper-slide-shadow-top"),s=n?t.querySelector(".swiper-slide-shadow-right"):t.querySelector(".swiper-slide-shadow-bottom");e||(e=ce(0,t,n?"left":"top")),s||(s=ce(0,t,n?"right":"bottom")),e&&(e.style.opacity=p>0?p:0),s&&(s.style.opacity=-p>0?-p:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;le({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides;if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s<e.length;s+=1){const a=e[s],o=a.progress,d=Math.min(Math.max(a.progress,-r.limitProgress),r.limitProgress);let c=d;l||(c=Math.min(Math.max(a.originalProgress,-r.limitProgress),r.limitProgress));const p=a.swiperSlideOffset,u=[t.params.cssMode?-p-t.translate:-p,0,0],m=[0,0,0];let h=!1;t.isHorizontal()||(u[1]=u[0],u[0]=0);let f={translate:[0,0,0],rotate:[0,0,0],scale:1,opacity:1};d<0?(f=r.next,h=!0):d>0&&(f=r.prev,h=!0),u.forEach(((e,t)=>{u[t]=`calc(${e}px + (${i(f.translate[t])} * ${Math.abs(d*n)}))`})),m.forEach(((e,t)=>{m[t]=f.rotate[t]*Math.abs(d*n)})),a.style.zIndex=-Math.abs(Math.round(o))+e.length;const g=u.join(", "),v=`rotateX(${m[0]}deg) rotateY(${m[1]}deg) rotateZ(${m[2]}deg)`,w=c<0?`scale(${1+(1-f.scale)*c*n})`:`scale(${1-(1-f.scale)*c*n})`,b=c<0?1+(1-f.opacity)*c*n:1-(1-f.opacity)*c*n,y=`translate3d(${g}) ${v} ${w}`;if(h&&f.shadow||!h){let e=a.querySelector(".swiper-slide-shadow");if(!e&&f.shadow&&(e=ce(0,a)),e){const t=r.shadowPerProgress?d*(1/r.limitProgress):d;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=oe(0,a);E.style.transform=y,E.style.opacity=b,f.origin&&(E.style.transformOrigin=f.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),de({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),le({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s}=t,a=t.params.cardsEffect,{startTranslate:i,isTouched:r}=t.touchEventsData,n=t.translate;for(let l=0;l<e.length;l+=1){const o=e[l],d=o.progress,c=Math.min(Math.max(d,-4),4);let p=o.swiperSlideOffset;t.params.centeredSlides&&!t.params.cssMode&&(t.wrapperEl.style.transform=`translateX(${t.minTranslate()}px)`),t.params.centeredSlides&&t.params.cssMode&&(p-=e[0].swiperSlideOffset);let u=t.params.cssMode?-p-t.translate:-p,m=0;const h=-100*Math.abs(c);let f=1,g=-a.perSlideRotate*c,v=a.perSlideOffset-.75*Math.abs(c);const w=t.virtual&&t.params.virtual.enabled?t.virtual.from+l:l,b=(w===s||w===s-1)&&c>0&&c<1&&(r||t.params.cssMode)&&n<i,y=(w===s||w===s+1)&&c<0&&c>-1&&(r||t.params.cssMode)&&n>i;if(b||y){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;g+=-28*c*e,f+=-.5*e,v+=96*e,m=-25*e*Math.abs(c)+"%"}if(u=c<0?`calc(${u}px + (${v*Math.abs(c)}%))`:c>0?`calc(${u}px + (-${v*Math.abs(c)}%))`:`${u}px`,!t.isHorizontal()){const e=m;m=u,u=e}const E=c<0?""+(1+(1-f)*c):""+(1-(1-f)*c),x=`\n        translate3d(${u}, ${m}, ${h}px)\n        rotateZ(${a.rotate?g:0}deg)\n        scale(${E})\n      `;if(a.slideShadows){let e=o.querySelector(".swiper-slide-shadow");e||(e=ce(0,o)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}o.style.zIndex=-Math.abs(Math.round(d))+e.length;oe(0,o).style.transform=x}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),de({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return J.use(pe),J}));