function IDD($,Rx){$.fn.extend({mousewheel:function(a,b,c){return this.hover(function(){jQuery.event.mousewheel.giveFocus(this,a,b,c)},function(){jQuery.event.mousewheel.removeFocus(this)})},mousewheeldown:function(a,b){return this.mousewheel(function(){},a,b)},mousewheelup:function(a,b){return this.mousewheel(a,function(){},b)},unmousewheel:function(){return this.each(function(){var a=jQuery(this);a.unmouseover&&(a.unmouseover().unmouseout(),jQuery.event.mousewheel.removeFocus(this))})},unmousewheeldown:jQuery.fn.unmousewheel,unmousewheelup:jQuery.fn.unmousewheel}),$.event.mousewheel={giveFocus:function(a,b,c,d){a._handleMousewheel&&jQuery(a).unmousewheel(),d==window.undefined&&c&&c.constructor!=Function&&(d=c,c=null),a._handleMousewheel=function(e){e||(e=window.event),d&&(e.preventDefault?e.preventDefault():e.returnValue=!1);var f=0;e.wheelDelta?(f=e.wheelDelta/120,window.opera&&(f=-f)):e.detail&&(f=-e.detail/3),b&&(f>0||!c)?b.apply(a,[e,f]):c&&0>f&&c.apply(a,[e,f])},window.addEventListener&&window.addEventListener("DOMMouseScroll",a._handleMousewheel,!1),window.onmousewheel=document.onmousewheel=a._handleMousewheel},removeFocus:function(a){a._handleMousewheel&&(window.removeEventListener&&window.removeEventListener("DOMMouseScroll",a._handleMousewheel,!1),window.onmousewheel=document.onmousewheel=null,a._handleMousewheel=null)}},InteractiveDataDisplay={MinSizeToShow:1,Padding:20,maxTickArrangeIterations:5,tickLength:10,minLabelSpace:60,minTickSpace:5,minLogOrder:4,minNumOrder:5,TooltipDelay:1,TooltipDuration:10,CssPrefix:"",ZIndexNavigationLayer:1e3,ZIndexDOMMarkers:1500,ZIndexTooltipLayer:2e3,factory:{}},InteractiveDataDisplay=InteractiveDataDisplay||{},InteractiveDataDisplay.Utils={isArray:function(a){return a instanceof Array||a instanceof Float64Array||a instanceof Float32Array||a instanceof Int8Array||a instanceof Int16Array||a instanceof Int32Array||a instanceof Uint8Array||a instanceof Uint16Array||a instanceof Uint32Array},intersect:function(a,b){if(a&&b){var c=Math.max(a.x,b.x),d=Math.min(a.x+a.width,b.x+b.width),e=Math.max(a.y,b.y),f=Math.min(a.y+a.height,b.y+b.height);return d>=c&&f>=e?{x:c,y:e,width:d-c,height:f-e}:void 0}},includes:function(a,b){return a&&b?a.x<=b.x&&a.x+a.width>=b.x+b.width&&a.y<=b.y&&a.y+a.height>=b.y+b.height:!1},equalRect:function(a,b){return a&&b?a.x==b.x&&a.width==b.width&&a.y==b.y&&a.height==b.height:!1},calcCSWithPadding:function(a,b,c,d){var e={left:c.left,top:c.top,width:b.width-c.left-c.right,height:b.height-c.top-c.bottom};return new InteractiveDataDisplay.CoordinateTransform(a,e,d)},requestAnimationFrame:function(a,b){setTimeout(a,1e3/60,b)},range:function(a,b){var c=b-a+1;if(0>=c)return[];for(var d=new Array(c),e=0;c>e;e++)d[e]=e;return d},arrangeDiv:function(a,b){a.width(b.width),a.height(b.height)},unionRects:function(a,b){if(void 0===a)return void 0===b?void 0:{x:b.x,y:b.y,width:b.width,height:b.height};if(void 0===b)return void 0===a?void 0:{x:a.x,y:a.y,width:a.width,height:a.height};var c=Math.min(a.x,b.x),d=Math.min(a.y,b.y),e=Math.max(a.x+a.width,b.x+b.width),f=Math.max(a.y+a.height,b.y+b.height);return{x:c,y:d,width:e-c,height:f-d}},readStyle:function(a,b){var c=a.attr("data-idd-style");if(c){for(var d=c.split(";"),e=d.length,f=0;e>f;f++){var g=d[f].split(":",2);if(g&&2===g.length){var h=g[0].trim(),i=g[1].trim();b[h]=i}}return b}},getDataSourceFunction:function(jqElem,defaultSource){var source=jqElem.attr("data-idd-datasource");return source?eval(source):defaultSource},getMinMax:function(a){if(a&&0!==a.length){for(var b,c,d,e=a.length,f=0;e>f;f++)if(d=a[f],!isNaN(d)){b=c=d;break}for(f++;e>f;f++)d=a[f],isNaN(d)||(b>d?b=d:d>c&&(c=d));return{min:b,max:c}}},getMinMaxForPair:function(a,b){if(a&&0!==a.length){if(!b||a.length!==b.length)throw"Arrays should be equal";for(var c,d,e,f,g,h,i=a.length,j=0;i>j;j++)if(g=a[j],h=b[j],!isNaN(g)&&!isNaN(h)){c=d=g,e=f=h;break}for(j++;i>j;j++)g=a[j],h=b[j],isNaN(g)||isNaN(h)||(c>g?c=g:g>d&&(d=g),e>h?e=h:h>f&&(f=h));return{minx:c,maxx:d,miny:e,maxy:f}}},getBoundingBoxForArrays:function(a,b,c,d){var e=void 0;if(a&&b){var f=InteractiveDataDisplay.Utils.getMinMaxForPair(a,b);if(f){c&&(f.minx=c(f.minx),f.maxx=c(f.maxx)),d&&(f.miny=d(f.miny),f.maxy=d(f.maxy));var g=Math.min(f.minx,f.maxx),h=Math.abs(f.maxx-f.minx),i=Math.min(f.miny,f.maxy),j=Math.abs(f.maxy-f.miny);e={x:g,y:i,width:h,height:j}}}return e}},InteractiveDataDisplay=InteractiveDataDisplay||{},InteractiveDataDisplay.Binding=InteractiveDataDisplay.Binding||{},function(){var a=[],b=[],c=[],d=[],e=function(a,b,c){for(var d=0,e=a.length;e>d;d++){var f=a[d];if(!(f.plot1!==b&&f.plot1!==c||f.plot2!==b&&f.plot2!==c))return d}return-1},f=function(a,b){var c=[];b=b.slice(0);for(var d=[a];d.length>0;){var e=d.shift();e!=a&&c.indexOf(e)<0&&c.push(e);for(var f=b.length;--f>=0;){var g=b[f],h=null;g.plot1===e?h=g.plot2:g.plot2===e&&(h=g.plot1),h&&(d.push(h),b.splice(f,1))}}return c},g=function(a,b){for(var c=[],d=0,e=a.length;e>d;d++){var g=a[d];c.indexOf(g.plot1)<0&&c.push(g.plot1),c.indexOf(g.plot2)<0&&c.push(g.plot2)}b.splice(0);for(var d=0,e=c.length;e>d;d++){var h=f(c[d],a);b.push({plot:c[d],reachable:h})}};InteractiveDataDisplay.Binding.bindPlots=function(f,h,i){if(void 0==i||"vh"==i){var j=InteractiveDataDisplay.Binding.bindPlots(f,h,"v"),k=InteractiveDataDisplay.Binding.bindPlots(f,h,"h"),l=!1;return{destroy:function(){l||(j.destroy(),k.destroy(),l=!0)}}}if("v"!=i&&"h"!=i)throw"Parameter filter is incorrect";if(!f)throw"plot1 is incorrect";if(!h)throw"plot2 is incorrect";if(f=f.master,h=h.master,f===h)throw"plot1 equals plot2";var m="v"==i?b:a,n=e(m,f,h);if(n>=0)return m[n].binding;var o="v"==i?d:c,l=!1,p={plot1:f,plot2:h,binding:{destroy:function(){if(!l){var a=e(m,f,h);a&&m.splice(a,1),g(m,o),l=!0}}}};return m.push(p),g(m,o),f.requestUpdateLayout(),p.binding},InteractiveDataDisplay.Binding.getBoundPlots=function(a){for(var b={h:[],v:[]},e=0,f=c.length;f>e;e++)if(c[e].plot===a){b.h=c[e].reachable;break}for(var e=0,f=d.length;f>e;e++)if(d[e].plot===a){b.v=d[e].reachable;break}return b}}(),InteractiveDataDisplay.register=function(a,b){if(!a)throw"key is undefined";if(!b)throw"factory is undefined";InteractiveDataDisplay.factory[a]=b};var _initializeInteractiveDataDisplay=function(){"use strict";var a=navigator.userAgent.toLowerCase();a.indexOf("firefox")>=0?InteractiveDataDisplay.CssPrefix="-moz":(a.indexOf("chrome")>=0||a.indexOf("safari")>=0)&&(InteractiveDataDisplay.CssPrefix="-webkit"),window.requestAnimationFrame?InteractiveDataDisplay.Utils.requestAnimationFrame=function(a){return window.requestAnimationFrame(a)}:window.msRequestAnimationFrame?InteractiveDataDisplay.Utils.requestAnimationFrame=function(a){return window.msRequestAnimationFrame(a)}:window.webkitRequestAnimationFrame?InteractiveDataDisplay.Utils.requestAnimationFrame=function(a){return window.webkitRequestAnimationFrame(a)}:window.mozRequestAnimationFrame?InteractiveDataDisplay.Utils.requestAnimationFrame=function(a){return window.mozRequestAnimationFrame(a)}:window.oRequestAnimationFrame&&(InteractiveDataDisplay.Utils.requestAnimationFrame=function(a){return window.oRequestAnimationFrame(a)});var b=function(a,c){if("undefined"!=typeof Modernizr&&a&&(Modernizr.canvas?Modernizr.borderradius?Modernizr.boxshadow?Modernizr.csstransforms?Modernizr.hsla?Modernizr.rgba||a.replaceWith('
Browser does not support rgba colors
'):a.replaceWith('Browser does not support hsla colors
'):a.replaceWith('Browser does not support 2d css transformations
'):a.replaceWith('Browser does not support "box-shadow" style property
'):a.replaceWith('Browser does not support "border-radius" style property
'):a.replaceWith('Browser does not support HTML5 canvas
')),a.hasClass("idd-plot-master")||a.hasClass("idd-plot-dependant"))throw"The div element already is initialized as a plot";var d=void 0,e=a.attr("data-idd-plot");switch(e){case"plot":d=new InteractiveDataDisplay.Plot(a,c);break;case"polyline":d=new InteractiveDataDisplay.Polyline(a,c);break;case"dom":d=new InteractiveDataDisplay.DOMPlot(a,c);break;case"figure":d=new InteractiveDataDisplay.Figure(a,c);break;case"chart":d=new InteractiveDataDisplay.Chart(a,c);break;case"grid":d=new InteractiveDataDisplay.GridlinesPlot(a,c);break;case"markers":d=new InteractiveDataDisplay.Markers(a,c);break;case"area":d=new InteractiveDataDisplay.Area(a,c);break;case"bingMaps":d=new InteractiveDataDisplay.BingMapsPlot(a,c)}var f=window.MutationObserver||window.WebKitMutationObserver;if(f){var g=new f(function(a,e){a.forEach(function(a){var e=a.addedNodes,f=a.removedNodes;if(e.length>0)for(var g=0;g0)for(var g=0;g=0;)p[c].onAddedTo(b);k?a.addClass("idd-plot-master").removeClass("idd-plot-dependant"):a.removeClass("idd-plot-master").addClass("idd-plot-dependant")},this.removeChild=function(a){if(!a)throw"plot is undefined";for(var b,c=p.length;--c>=0;)if(b=p[c],b===a||b.name===a)return p.splice(c,1),b.onAddedTo(b),this.master._sharedCanvas&&(this.master._sharedCanvas.remove(),this.master._sharedCanvas=void 0),void 0!==b.constraint&&(D=void 0),void 0!==b.map&&(F=void 0),this.fireChildrenChanged({type:"remove",plot:b}),this.onChildrenChanged({type:"remove",plot:b}),this.requestUpdateLayout(),!0;for(c=p.length;--c>=0;)if(b=p[c],b.removeChild(a))return!0;return!1},this.getPlotsSequence=function(){for(var a=[this],b=p.length,c=0;b>c;c++){var d=p[c],e=d.getPlotsSequence();e.forEach(function(b){a.push(b)})}return a},this.getLocalBounds=function(a,b){return A||(A=this.computeLocalBounds(a,b)),A},this.computeLocalBounds=function(a,b){},this.invalidateLocalBounds=function(){var a=A;return A=void 0,a};this.aggregateBounds=function(){for(var a=E.getPlotsSequence(),b=void 0,c=[],d=a.length,e=0;d>e;e++){var f=a[e],g=f.getLocalBounds(1);void 0===g?c.push(f):b=InteractiveDataDisplay.Utils.unionRects(b,g)}d=c.length;for(var h=b,e=0;d>e;e++){var f=c[e];b=InteractiveDataDisplay.Utils.unionRects(b,f.getLocalBounds(2,h))}if(void 0!==b){var i=100;if(0===b.width){var j=Math.max(.1,Math.abs(b.x));b.x=b.x-j/(2*i),b.width=j/i}if(0===b.height){var l=Math.max(.1,Math.abs(b.y));b.y=b.y-l/(2*i),b.height=l/i}}var m=k&&void 0===b;return m&&(b=void 0!==F?{x:-180,y:-90,width:360,height:180}:{x:0,y:0,width:1,height:1}),{bounds:b,isDefault:m}},this.getLocalPadding=function(){return{left:0,right:0,top:0,bottom:0}},this.aggregatePadding=function(){for(var a=E.getLocalPadding()||{left:0,right:0,top:0,bottom:0},b=p.length,c=0;b>c;c++){var d=p[c],e=d.aggregatePadding();a={left:Math.max(a.left,e.left),right:Math.max(a.right,e.right),top:Math.max(a.top,e.top),bottom:Math.max(a.bottom,e.bottom)}}return a.left=a.left+InteractiveDataDisplay.Padding||InteractiveDataDisplay.Padding,a.right=a.right+InteractiveDataDisplay.Padding||InteractiveDataDisplay.Padding,a.top=a.top+InteractiveDataDisplay.Padding||InteractiveDataDisplay.Padding,a.bottom=a.bottom+InteractiveDataDisplay.Padding||InteractiveDataDisplay.Padding,a};var I=function(){if(l.flatRendering&&(C=!0,l._sharedCanvas&&(l._sharedCanvas._dirty=!0)),E.requestsUpdateLayout)E.requestsUpdateLayout=!1,E.isAnimationFrameRequested=!1,C=!0,E.updateLayout();else{E.isAnimationFrameRequested=!1;var a=E.screenSize,b=E.coordinateTransform.getPlotRect({x:0,y:0,width:a.width,height:a.height});J(C,l,b,a)}C=!1,N&&N()},J=function(a,b,c,d){if(b&&b.isVisible){(a||b.requestsRender)&&(b.requestsRender=!1,b.render(c,d));for(var e=b.children,f=e.length,g=0;f>g;g++){var h=e[g];J(a,h,c,d)}}};this.requestNextFrame=function(a){return a=a||this,k?(a.requestsRender=!0,void(this.isAnimationFrameRequested||(this.isAnimationFrameRequested=!0,C=!1,InteractiveDataDisplay.Utils.requestAnimationFrame(I)))):void l.requestNextFrame(a)},this.requestUpdateLayout=function(a){return k?(C=!0,z=a&&a.suppressNotifyBoundPlots,void(this.requestsUpdateLayout||(this.requestsUpdateLayout=!0,this.isAnimationFrameRequested||(this.isAnimationFrameRequested=!0,InteractiveDataDisplay.Utils.requestAnimationFrame(I))))):void l.requestUpdateLayout(a)},this.onIsVisibleChanged=function(){this.updateLayout()},this.onDataTranformChangedCore=function(a){},this.onDataTransformChanged=function(a){A=void 0,this.onDataTranformChangedCore(a),this.isAutoFitEnabled?this.master.requestUpdateLayout():this.doFitOnDataTransformChanged&&this.master.fitToView()},this.render=function(a,b){var c=this.getLocalBounds(),d=!1;if(c){var e=InteractiveDataDisplay.Utils.intersect(c,a);e&&(this.renderCore(a,b),d=!0)}else this.renderCore(a,b),d=!0;d!==B&&(B=d,this.onIsRenderedChanged())},this.renderCore=function(a,b){},this.onIsRenderedChanged=function(){},this.fit=function(a,b,c){h=a.width,i=a.height;var d=void 0;if(r||s){var e=l.aggregateBounds(),f=e.bounds;(f.x!=f.x||f.y!=f.y||f.width!=f.width||f.height!=f.height)&&(f={x:0,width:1,y:0,height:1}),j=f;var g=e.isDefault?{left:0,top:0,bottom:0,right:0}:l.aggregatePadding();o=InteractiveDataDisplay.Utils.calcCSWithPadding(j,a,g,l.aspectRatio),d=o.getPlotRect({x:0,y:0,width:a.width,height:a.height}),void 0!==D&&b===!0&&(d=D(d,a),o=new InteractiveDataDisplay.CoordinateTransform(d,{left:0,top:0,width:h,height:i},l.aspectRatio))}else{var k=void 0,m=void 0,n=void 0,e=void 0;(t===!0||u===!0)&&(e=l.aggregateBounds(),n=e.isDefault?{left:0,top:0,bottom:0,right:0}:l.aggregatePadding()),t===!0&&(j.width=e.bounds.width,j.x=e.bounds.x,k=e.isDefault?{left:0,top:0,bottom:0,right:0}:n),u===!0&&(j.height=e.bounds.height,j.y=e.bounds.y,m=e.isDefault?{left:0,top:0,bottom:0,right:0}:n);var g=void 0;(void 0!==k||void 0!==m)&&(g={left:void 0!==k?k.left:0,top:void 0!==m?m.top:0,bottom:void 0!==m?m.bottom:0,right:void 0!==k?k.right:0}),o=void 0!==g?InteractiveDataDisplay.Utils.calcCSWithPadding(j,a,g,l.aspectRatio):new InteractiveDataDisplay.CoordinateTransform(j,{left:0,top:0,width:h,height:i},l.aspectRatio),d=o.getPlotRect({x:0,y:0,width:a.width,height:a.height}),void 0!==D&&b===!0&&c===!0&&(d=D(d,a),o=new InteractiveDataDisplay.CoordinateTransform(d,{left:0,top:0,width:h,height:i},l.aspectRatio)),j=d}return b&&(j=d),d},this.updateLayout=function(){if(this.requestsUpdateLayout=!1,k){var a=E.visibleRect,b={width:m.width(),height:m.height()};if(b.width<=1||b.height<=1)return;var c=E.screenSize.width!==b.width||E.screenSize.height!==b.height,d=this.measure(b,c);s=!1,t=!1,u=!1,E.arrange(d);var e=E.visibleRect;if((e.x!==a.x||e.y!==a.y||e.width!==a.width||e.height!==a.height)&&E.fireVisibleRectChanged({visibleRect:e}),C=!0,I(),!z){var f=InteractiveDataDisplay.Binding.getBoundPlots(this),g=f.h.length,h=f.v.length;if(g>0||h>0){var i=E.coordinateTransform.getPlotRect({x:0,y:0,width:d.width,height:d.height});f.v=f.v.slice(0);for(var j=0;g>j;j++){var n=f.h[j],o=f.v.indexOf(n);if(o>=0)f.v[o]=null,n.navigation.setVisibleRect(i,!1,{suppressNotifyBoundPlots:!0});else{var p=n.visibleRect;p.x=i.x,p.width=i.width,n.navigation.setVisibleRect(p,!1,{suppressNotifyBoundPlots:!0})}}for(var j=0;h>j;j++){var n=f.v[j];if(null!=n){var p=n.visibleRect;p.y=i.y,p.height=i.height,n.navigation.setVisibleRect(p,!1,{suppressNotifyBoundPlots:!0})}}}}z=!1}else l.updateLayout()},this.measure=function(a,b){return void 0!==this.mapControl&&this.mapControl.setOptions({width:a.width,height:a.height}),this.fit(a,!0,b),m&&m.children("div").each(function(){var a=$(this);a.css("top",0),a.css("left",0)}),a},this.arrange=function(a){this.isMaster||InteractiveDataDisplay.Utils.arrangeDiv(this.host,a);for(var b=this.children,c=b.length,d=0;c>d;d++){var e=b[d];e.arrange(a)}};var K=function(a,b){E.isAutoFitEnabled&&(E.isAutoFitEnabled=!1),j=a,void 0!==b&&void 0!==b.syncUpdate&&b.syncUpdate===!0?E.updateLayout():E.requestUpdateLayout(b)};if(this.fitToView=function(){k?(this.isAutoFitEnabled=!1,this.navigation.stop(),s=!0,this.requestUpdateLayout()):l.fitToView()},this.fitToViewX=function(){k?(this.isAutoFitEnabled=!1,this.navigation.stop(),t=!0,this.requestUpdateLayout()):l.fitToViewX()},this.fitToViewY=function(){k?(this.isAutoFitEnabled=!1,this.navigation.stop(),u=!0,this.requestUpdateLayout()):l.fitToViewY()},this.requestNextFrameOrUpdate=function(){this.isAutoFitEnabled?this.master.requestUpdateLayout():this.master.requestNextFrame(this)},this.getTooltip=function(a,b,c,d){},k){var L,M,N,O=function(a,b){for(var c=a.children,d=c.length,e=0;d>e;e++){var f=c[e];O(f,b)}b(a)};this.enumAll=function(a,b){O(a,b)};var P=function(a,b){L=void 0,Q();var c=function(){var a,c,d=[],e=b.x,f=b.y;return O(E,function(b){var g=b.xDataTransform?b.xDataTransform.plotToData(e):e,h=b.yDataTransform?b.yDataTransform.plotToData(f):f,i=b.getTooltip(g,h,e,f);i&&((g!==a||h!==c)&&(a=g,c=h,(void 0===G||G.showCursorCoordinates!==!1)&&d.push(""+a+", "+c+"
")),d.push(i))}),d},d=c();if(0!==d.length){M=$("").addClass("idd-tooltip").hide().appendTo(E.host).css("position","absolute").css("left",a.x+15).css("top",a.y+15).css("z-index",InteractiveDataDisplay.ZIndexTooltipLayer);for(var e=d.length,f=0;e>f;f++)$(d[f]).appendTo(M).addClass("idd-tooltip-item");N=function(){if(M){M.empty();var a=c();if(0===a.length)return 0;for(var b=a.length,d=0;b>d;d++)$(a[d]).appendTo(M).addClass("idd-tooltip-item");return b}};var g=M;M.fadeIn("fast",function(){g.fadeOutTimer=setTimeout(function(){N=void 0,g.fadeOut("fast")},1e3*InteractiveDataDisplay.TooltipDuration)})}},Q=function(){L&&(clearTimeout(L),L=void 0),N=void 0,M&&(M.fadeOutTimer&&(clearTimeout(M.fadeOutTimer),M.fadeOutTimer=void 0),M.fadeOut("fast",function(){$(this).remove()}),M=void 0)};n.mousemove(function(a){R=void 0;var b=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(m,a),c=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(n,a),d=E.coordinateTransform,e={x:d.screenToPlotX(c.x),y:d.screenToPlotY(c.y)};Q(),E.master.isToolTipEnabled&&(L=setTimeout(function(){P(b,e)},1e3*InteractiveDataDisplay.TooltipDelay));var f=function(a,b,c){a.onMouseMove&&a.onMouseMove(b,c);for(var d=a.children,e=d.length,g=0;e>g;g++)f(d[g],b,c)};f(E,c,e)});var R;n.mousedown(function(a){Q(),R=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(n,a)}),n.mouseup(function(a){Q();var b=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(n,a);if(R&&R.x==b.x&&R.y==b.y){var c=E.coordinateTransform,d={x:c.screenToPlotX(b.x),y:c.screenToPlotY(b.y)},e=function(a,b,c){a.onClick&&a.onClick(b,c);for(var d=a.children,f=d.length,g=0;f>g;g++)e(d[g],b,c)};e(E,b,d)}}),n.mouseleave(function(a){Q()})}else this.enumAll=l.enumAll;if(this.get=function(a){var b=function(a,c){if(c.name===a||c.host[0].id===a||c.host[0]===a)return c;for(var d=c.children,e=d.length,f=0;e>f;f++){var g=b(a,d[f]);if(g)return g}};return b(a,this.master)},this.fireAppearanceChanged=function(a){this.host.trigger(InteractiveDataDisplay.Event.appearanceChanged,a)},this.fireChildrenChanged=function(a){this.master.host.trigger(InteractiveDataDisplay.Event.childrenChanged,a)},this.fireVisibleRectChanged=function(a){Q(),this.master.host.trigger(InteractiveDataDisplay.Event.visibleRectChanged,a)},this.polyline=function(a,b){var c=this.get(a);if(!c){var d=$("").attr("data-idd-name",a).attr("data-idd-plot","polyline").appendTo(this.host);c=new InteractiveDataDisplay.Polyline(d,this.master),this.addChild(c)}return void 0!==b&&c.draw(b),c},this.markers=function(a,b,c){var d=this.get(a);if(!d){var e=$("").attr("data-idd-name",a).appendTo(this.host);d=new InteractiveDataDisplay.Markers(e),this.addChild(d)}return void 0!==b&&d.draw(b,c),d},this.area=function(a,b){var c=this.get(a);if(!c){var d=$("").attr("data-idd-name",a).attr("data-idd-plot","area").appendTo(this.host);c=new InteractiveDataDisplay.Area(d),this.addChild(c)}return void 0!==b&&c.draw(b),c},this.heatmap=function(a,b){var c=this.get(a);if(!c){var d=$("").attr("data-idd-name",a).attr("data-idd-plot","heatmap").appendTo(this.host);c=new InteractiveDataDisplay.Heatmap(d,this.master),this.addChild(c)}return void 0!==b&&c.draw(b),c},k)var S=new InteractiveDataDisplay.Navigation(this,K);Object.defineProperty(this,"navigation",{get:function(){return k?S:l.navigation},configurable:!1}),m&&m.children("div").each(function(){var a=$(this);a.hasClass("idd-plot-master")||a.hasClass("idd-plot-dependant")||void 0===a.attr("data-idd-plot")||"figure"===a.attr("data-idd-plot")||"chart"===a.attr("data-idd-plot")||E.addChild(b(a,l))}),this.getLegend=function(){},setTimeout(function(){if(m&&m.attr("data-idd-legend")){var a=$("#"+m.attr("data-idd-legend")),b=new InteractiveDataDisplay.Legend(E,a);Object.defineProperty(E,"legend",{get:function(){return b},configurable:!1})}},0),a&&(k?("figure"!==a.attr("data-idd-plot")&&"chart"!==a.attr("data-idd-plot")&&this.updateLayout(),a.addClass("idd-plot-master")):a.addClass("idd-plot-dependant"))}},InteractiveDataDisplay.Legend=function(a,b){var c=[],d=b[0].style;InteractiveDataDisplay.Gestures.FullEventList.forEach(function(a){b[0].addEventListener(a,function(a){a.stopPropagation()},!1)});var e=!0;Object.defineProperty(this,"isVisible",{get:function(){return e},set:function(a){e=a,e?d.display="block":d.display="none"},configurable:!1}),d.display="none",b.addClass("idd-legend"),b.addClass("unselectable");var f=function(){g(a),b[0].hasChildNodes()&&e&&(d.display="block")},g=function(e){var h=e.getLegend();e.host.bind("childrenChanged",function(h,i){if("add"===i.type&&b[0].hasChildNodes()&&i.plot.master==a.master)g(i.plot);else if("remove"===i.type){for(var j=function(a){var e=c[a];c.splice(a,1),e.plot.host.unbind("childrenChanged"),e.onLegendRemove&&e.onLegendRemove(),b[0].removeChild(e.div[0]);var f=e.plot.children;f.forEach(function(a){for(var b=0,d=c.length;d>b;b++)c[b].plot===a&&j(c[b])}),0===c.length&&(d.display="none")},k=0,l=c.length;l>k;k++)if(c[k].plot===i.plot){j(k);break}}else{for(b[0].innerHTML="",d.display="none",l=c.length,k=0;l>k;k++)c[k].onLegendRemove&&c[k].onLegendRemove();c=[],e.host.unbind("childrenChanged"),f()}}),h&&(h.div.appendTo(b),h.plot=e,c[c.length]=h);var i=e.children;i.forEach(function(a){g(a)})};this.remove=function(){for(var d=0,e=c.length;e>d;d++)c[d].onLegendRemove&&c[d].onLegendRemove();c=[];var f=function(a){a.host.unbind("childrenChanged");var b=a.children;b.forEach(function(a){f(a)})};f(a),b[0].innerHTML="",b.removeClass("idd-legend"),b.removeClass("unselectable")},f(),b.dblclick(function(a){a.stopImmediatePropagation()})},InteractiveDataDisplay.CoordinateTransform=function(a,b,c){var d=0,e=0,f=1,g=1;void 0!==a&&void 0!==b&&(f=b.width/a.width,g=b.height/a.height,void 0!==c&&c>0&&(f>c*g?f=c*g:g=f/c),d=b.left-f*a.x,e=b.height+b.top+g*a.y),this.plotToScreenX=function(a){return a*f+d},this.plotToScreenY=function(a){return e-a*g},this.screenToPlotX=function(a){return(a-d)/f},this.screenToPlotY=function(a){return(e-a)/g},this.plotToScreenWidth=function(a){return a*f},this.plotToScreenHeight=function(a){return a*g},this.screenToPlotWidth=function(a){return a/f},this.screenToPlotHeight=function(a){return a/g},this.getPlotRect=function(a){var b=this.screenToPlotX(a.x),c=this.screenToPlotY(a.height+a.y);return{x:b,y:c,width:this.screenToPlotX(a.x+a.width)-b,height:this.screenToPlotY(a.y)-c}},this.getScale=function(){return{x:f,y:g}},this.getOffset=function(){return{x:d,y:e}},this.clone=function(){var a=new InteractiveDataDisplay.CoordinateTransform;return a.plotToScreenX=this.plotToScreenX,a.plotToScreenY=this.plotToScreenY,a.screenToPlotX=this.screenToPlotX,a.screenToPlotY=this.screenToPlotY,a.plotToScreenWidth=this.plotToScreenWidth,a.plotToScreenHeight=this.plotToScreenHeight,a.screenToPlotWidth=this.screenToPlotWidth,a.screenToPlotHeight=this.screenToPlotHeight,a.getPlotRect=this.getPlotRect,a.getScale=this.getScale,a.getOffset=this.getOffset,a}},InteractiveDataDisplay.CanvasPlot=function(a,b){if(this.base=InteractiveDataDisplay.Plot,this.base(a,b),a){var c,d=function(){b._sharedCanvas&&(b._sharedCanvas.remove(),b._sharedCanvas=void 0)};this.getContext=function(a){var b,d=this.master;d.flatRendering?(b=d._sharedCanvas,a=d._sharedCanvas._dirty&&a,d._sharedCanvas._dirty=!1):b=c;var e=b[0].getContext("2d");if(a){var f=this.screenSize;e.clearRect(0,0,f.width,f.height)}return e},this.destroy=function(){return InteractiveDataDisplay.CanvasPlot.prototype.destroy.call(this),this.host.children(".idd-plot-canvas").remove(),d(),this},this.arrange=function(a){InteractiveDataDisplay.CanvasPlot.prototype.arrange.call(this,a);var b,e=this.master;e.flatRendering?(e._sharedCanvas?b=e._sharedCanvas:(c?(b=c,c=void 0):b=$("").prependTo(this.host).addClass("idd-plot-canvas"),e._sharedCanvas=b,e._sharedCanvas._dirty=!1),c&&(c.remove(),c=void 0)):(e._sharedCanvas&&d(),c||(c=$("").prependTo(this.host).addClass("idd-plot-canvas")),b=c);var f=b[0];f.width=a.width,f.height=a.height},this.getTransform=function(){var a=this.coordinateTransform,b=a.plotToScreenX,c=a.plotToScreenY,d=this.xDataTransform&&this.xDataTransform.dataToPlot,e=this.yDataTransform&&this.yDataTransform.dataToPlot,f=d?function(a){return b(d(a))}:b,g=e?function(a){return c(e(a))}:c;return{dataToScreenX:f,dataToScreenY:g}},this.getScreenToDataTransform=function(){var a=this.coordinateTransform,b=a.screenToPlotX,c=a.screenToPlotY,d=this.xDataTransform&&this.xDataTransform.plotToData,e=this.yDataTransform&&this.yDataTransform.plotToData,f=d?function(a){
return d(b(a))}:b,g=e?function(a){return e(c(a))}:c;return{screenToDataX:f,screenToDataY:g}}}},InteractiveDataDisplay.CanvasPlot.prototype=new InteractiveDataDisplay.Plot,InteractiveDataDisplay.Polyline=function(a,b){var c=InteractiveDataDisplay.Utils.getDataSourceFunction(a,InteractiveDataDisplay.readCsv),d=c(a);this.base=InteractiveDataDisplay.CanvasPlot,this.base(a,b);var e,f,g=1,h="#4169ed",i="butt",j="miter";d&&(g="undefined"!=typeof d.thickness?d.thickness:g,h="undefined"!=typeof d.stroke?d.stroke:h,i="undefined"!=typeof d.lineCap?d.lineCap:i,j="undefined"!=typeof d.lineJoin?d.lineJoin:j),this.draw=function(a){var b=a.y;if(!b)throw"Data series y is undefined";var c=b.length;if(a.x||(a.x=InteractiveDataDisplay.Utils.range(0,c-1)),c!=a.x.length)throw"Data series x and y have different lengths";e=b,f=a.x,g="undefined"!=typeof a.thickness?a.thickness:g,"number"!=typeof g&&(g=parseFloat(g)||1),h="undefined"!=typeof a.stroke?a.stroke:h,i="undefined"!=typeof a.lineCap?a.lineCap:i,j="undefined"!=typeof a.lineJoin?a.lineJoin:j,this.invalidateLocalBounds(),this.requestNextFrameOrUpdate(),this.fireAppearanceChanged()},this.computeLocalBounds=function(a,b){var c=this.xDataTransform&&this.xDataTransform.dataToPlot,d=this.yDataTransform&&this.yDataTransform.dataToPlot;return InteractiveDataDisplay.Utils.getBoundingBoxForArrays(f,e,c,d)},this.getLocalPadding=function(){var a=g/2;return{left:a,right:a,top:a,bottom:a}},this.getTooltip=function(a,b,c,d){if(void 0!==f&&void 0!=e){var g=e.length;if(0!=g){var h=this.coordinateTransform,i=h.plotToScreenX(c),j=h.plotToScreenY(d),k=this.getContext(!1),l=k.getImageData(i,j,1,1);if(0!==l.data[0]||0!==l.data[1]||0!==l.data[2]||0!==l.data[3])return""+(this.name||"Polyline")+"
"}}},this.renderCore=function(a,b){if(InteractiveDataDisplay.Polyline.prototype.renderCore.call(this,a,b),void 0!==f&&void 0!=e){var c=e.length;if(0!=c){var d=this.getTransform(),l=d.dataToScreenX,m=d.dataToScreenY,n=b.width,o=b.height,p=0,q=n,r=0,s=o,t=this.getContext(!0);t.strokeStyle=h,t.fillStyle=h,t.lineWidth=g,t.lineCap=i,t.lineJoin=j,t.beginPath();var u,v,w,x,y=0,z=function(){for(;c>y;y++)if(!isNaN(f[y])&&!isNaN(e[y])){u=l(f[y]),w=m(e[y]),A=k(u,w,p,q,r,s);break}0==A&&t.moveTo(u,w)};z();var A,B,C,D,E,F,G,H,I=1;for(y++;c>y;y++)if(isNaN(f[y])||isNaN(e[y])){if(1==I){t.stroke();var J=k(u,w,p,q,r,s);0==J&&(t.beginPath(),t.arc(u,w,g/2,0,2*Math.PI),t.fill())}else t.stroke();t.beginPath(),y++,z(),I=1}else if(G=v=l(f[y]),H=x=m(e[y]),!(Math.abs(u-v)<1&&Math.abs(w-x)<1)){for(C=A,D=B=k(v,x,p,q,r,s);A|B&&!(A&B);)E=v-u,F=x-w,A?(p>u?(w+=F*(p-u)/E,u=p):u>q?(w+=F*(q-u)/E,u=q):r>w?(u+=E*(r-w)/F,w=r):w>s&&(u+=E*(s-w)/F,w=s),A=k(u,w,p,q,r,s)):(p>v?(x+=F*(p-v)/E,v=p):v>q?(x+=F*(q-v)/E,v=q):r>x?(v+=E*(r-x)/F,x=r):x>s&&(v+=E*(s-x)/F,x=s),B=k(v,x,p,q,r,s));A&B||(0!=C&&t.moveTo(u,w),t.lineTo(v,x),I++),u=G,w=H,A=D}if(1==I){t.stroke();var J=k(u,w,p,q,r,s);0==J&&(t.beginPath(),t.arc(u,w,g/2,0,2*Math.PI),t.fill())}else t.stroke()}}};var k=function(a,b,c,d,e,f){return(c>a)<<3|(a>d)<<2|(e>b)<<1|b>f};this.onDataTransformChanged=function(a){this.invalidateLocalBounds(),InteractiveDataDisplay.Polyline.prototype.onDataTransformChanged.call(this,a)},Object.defineProperty(this,"thickness",{get:function(){return g},set:function(a){if(a!=g){if(0>=a)throw"Polyline thickness must be positive";g=a,this.fireAppearanceChanged("thickness"),this.requestNextFrameOrUpdate()}},configurable:!1}),Object.defineProperty(this,"stroke",{get:function(){return h},set:function(a){a!=h&&(h=a,this.fireAppearanceChanged("stroke"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"lineCap",{get:function(){return i},set:function(a){a!=i&&(i=a,this.fireAppearanceChanged("lineCap"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"lineJoin",{get:function(){return j},set:function(a){a!=j&&(j=a,this.fireAppearanceChanged("lineJoin"),this.requestNextFrameOrUpdate())},configurable:!1}),this.getLegend=function(){var a=$(""),b=$("").appendTo(a);b[0].width=20,b[0].height=20;var c=b.get(0).getContext("2d");c.strokeStyle=h,c.lineWidth=g,c.moveTo(0,0),c.lineTo(20,20),c.stroke();var d=this,e=$("").appendTo(a),f=function(){e.text(d.name)};f(),this.host.bind("appearanceChanged",function(a,d){d&&"name"!=d||f(),c.clearRect(0,0,b[0].width,b[0].height),c.strokeStyle=h,c.lineWidth=g,c.moveTo(0,0),c.lineTo(20,20),c.stroke()});var d=this,i=function(){d.host.unbind("appearanceChanged"),a[0].innerHTML="",a.removeClass("idd-legend-item")};return{div:a,onLegendRemove:i}},d&&"undefined"!=typeof d.y&&this.draw(d)},InteractiveDataDisplay.Polyline.prototype=new InteractiveDataDisplay.CanvasPlot,InteractiveDataDisplay.DOMPlot=function(a,b){this.base=InteractiveDataDisplay.Plot,this.base(a,b);var c=[],d=function(a,b,d,e,f,g,h,i){if("div"!==a[0].tagName.toLowerCase())throw"DOMPlot supports only DIV elements";a._x=d,a._y=e,a._width=f&&f>0?f:1,a._height=g&&g>0?g:1,a._originX=h||0,a._originY=i||0,a._scale=b||"element",a.addClass("idd-dom-marker"),a.css("display","none").css("z-index",InteractiveDataDisplay.ZIndexDOMMarkers),c.push(a)};a.children("div[data-idd-position]").each(function(){var a=$(this),b=a.attr("data-idd-position").split(/\s+/g);if(b.length<2)throw"Position of the DOM marker should define x and y";var c,e,f=parseFloat(b[0]),g=parseFloat(b[1]),h=a.attr("data-idd-size");if(h){var i=h.split(/\s+/g);i.length>=2&&(c=parseFloat(i[0]),e=parseFloat(i[1]))}var j,k,l=a.attr("data-idd-origin");if(l){var m=l.split(/\s+/g);m.length>=2&&(j=parseFloat(m[0]),k=parseFloat(m[1]))}var n=a.attr("data-idd-scale");d(a,n,f,g,c,e,j,k)});var e=function(a){var b=a._x-a._originX*a._width,c=a._y+a._originY*a._height;return{left:b,top:c}};this.computeLocalBounds=function(){var a;if(c){var b=c.length;if(b>0){for(var d=[],f=[],g=0,h=0;b>g;g++,h++){var i=c[g];if("none"!=i._scale){var j=e(i);d[h]=j.left,f[h]=j.top,d[++h]=j.left+i._width,f[h]=j.top-i._height}}var k=InteractiveDataDisplay.Utils.getMinMax(d),l=InteractiveDataDisplay.Utils.getMinMax(f);if(k&&l){var m=this.xDataTransform&&this.xDataTransform.dataToPlot,n=this.yDataTransform&&this.yDataTransform.dataToPlot;m&&(k.min=m(k.min),k.max=m(k.max)),n&&(l.min=n(l.min),l.max=n(l.max)),a={x:k.min,y:l.min,width:k.max-k.min,height:l.max-l.min}}}}return a},this.getLocalPadding=function(){var a=0;return{left:a,right:a,top:a,bottom:a}},this.arrange=function(a){InteractiveDataDisplay.CanvasPlot.prototype.arrange.call(this,a);var b=a.width,c=a.height;this.host.css("clip","rect(0px,"+b+"px,"+c+"px,0px)")},this.renderCore=function(a,b){InteractiveDataDisplay.DOMPlot.prototype.renderCore.call(this,a,b);var d=c.length;if(d>0)for(var f=0,g=b.height,h=0,i=b.width,j=this.coordinateTransform.plotToScreenX,k=this.coordinateTransform.plotToScreenY,l=this.xDataTransform&&this.xDataTransform.dataToPlot,m=this.yDataTransform&&this.yDataTransform.dataToPlot,n=l?function(a){return j(l(a))}:j,o=m?function(a){return k(m(a))}:k,p=0;d>p;p++){var q,r,s=c[p];if("none"==s._scale){r={x:s.width(),y:s.height()},q={x:n(s._x),y:o(s._y)};var t=q.x-s._originX*r.x,u=q.y-s._originY*r.y;q={x:t,y:u}}else{var v;v=e(s),q={x:n(v.left),y:o(v.top)},r={x:n(v.left+s._width)-q.x,y:o(v.top-s._height)-q.y}}var w,x=0,y=0,z=r.y,A=r.x,B=f,C=g,D=q.y,E=q.y+r.y,F=Math.max(B,D),G=Math.min(C,E);if(w=G>F,w&&(x=F-q.y,z=G-q.y,B=h,C=i,D=q.x,E=q.x+r.x,F=Math.max(B,D),G=Math.min(C,E),w=G>F))if(y=F-q.x,A=G-q.x,s.css("left",q.x+"px"),s.css("top",q.y+"px"),s.css("display","block"),"content"===s._scale){var H=r.x/s.width(),I=r.y/s.height();s.css(InteractiveDataDisplay.CssPrefix+"-transform-origin","0% 0%"),s.css(InteractiveDataDisplay.CssPrefix+"-transform","scale("+H+","+I+")")}else"element"===s._scale&&(s.css("width",r.x+"px"),s.css("height",r.y+"px"));w||s.css("display","none")}},this.onIsRenderedChanged=function(){if(this.isRendered)for(var a=c.length,b=0;a>b;b++){var d=c[b];d.css("z-index",InteractiveDataDisplay.ZIndexDOMMarkers)}else for(var a=c.length,b=0;a>b;b++){var d=c[b];d.css("display","none")}},this.clear=function(){for(var a=c.length,b=0;a>b;b++){var d=c[b];d.remove()}c=[],this.invalidateLocalBounds(),this.requestUpdateLayout()},this.add=function(a,b,c,e,f,g,h,i){var j=$(a).appendTo(this.host);return d(j,b,c,e,f,g,h,i),this.invalidateLocalBounds(),this.requestUpdateLayout(),j.get(0)};var f=function(a){var b=jQuery.grep(c,function(b){return b[0]===a});return b&&b.length>0?b[0]:void 0};this.remove=function(a){var b=function(a){var b=f(a[0]);b&&c.splice(c.indexOf(b),1),a.remove()};b(a.jquery?a:$(a)),this.invalidateLocalBounds(),this.requestUpdateLayout()},this.set=function(a,b,c,d,e){var g=f(a);if(!g)throw"Element is not found in the plot";g._x=b,g._y=c,"none"!=g.scale&&(d&&d>0&&(g._width=d),e&&e>0&&(g._height=e)),this.invalidateLocalBounds(),this.requestUpdateLayout()},Object.defineProperty(this,"domElements",{get:function(){return c.slice(0)},configurable:!1})},InteractiveDataDisplay.DOMPlot.prototype=new InteractiveDataDisplay.Plot,InteractiveDataDisplay.GridlinesPlot=function(a,b){this.base=InteractiveDataDisplay.CanvasPlot,this.base(a,b);var c,d,e="1px",f="LightGray",g={};InteractiveDataDisplay.Utils.readStyle(this.host,g),g&&(f="undefined"!=typeof g.stroke?g.stroke:f,e="undefined"!=typeof g.thickness?g.thickness:e),Object.defineProperty(this,"xAxis",{get:function(){return c},set:function(a){a!=c&&(c=a,this.requestUpdateLayout())},configurable:!1}),Object.defineProperty(this,"yAxis",{get:function(){return d},set:function(a){a!=d&&(d=a,this.requestUpdateLayout())},configurable:!1}),Object.defineProperty(this,"thickness",{get:function(){return e},set:function(a){if(a!=e){if(0>=a)throw"GridLines thickness must be positive";e=a,this.requestNextFrameOrUpdate()}},configurable:!1}),Object.defineProperty(this,"stroke",{get:function(){return f},set:function(a){a!=f&&(f=a,this.requestNextFrameOrUpdate())},configurable:!1}),this.renderCore=function(a,b){if(InteractiveDataDisplay.GridlinesPlot.prototype.renderCore.call(this,a,b),!c){var g=this.host.attr("data-idd-xaxis");if(g){var h=this.master.get(g);h&&(c=h)}}if(!d){var g=this.host.attr("data-idd-yaxis");if(g){var h=this.master.get(g);h&&(d=h)}}var i=this.getContext(!0);i.strokeStyle=f,i.fillStyle=f,i.lineWidth=1;var j,k=parseInt(e.slice(0,-2)),l=[];c&&(l=c.ticks);for(var m=0,n=l.length;n>m;m++)l[m].invisible||(j=c.getCoordinateFromTick(l[m].position),i.fillRect(j,0,k,b.height));l=[],d&&(l=d.ticks);for(var m=0,n=l.length;n>m;m++)l[m].invisible||(j=b.height-1-d.getCoordinateFromTick(l[m].position),i.fillRect(0,j,b.width,k))}},InteractiveDataDisplay.GridlinesPlot.prototype=new InteractiveDataDisplay.CanvasPlot}();InteractiveDataDisplay.readTable=function(a){var b={};InteractiveDataDisplay.Utils.readStyle(a,b);var c=a.children("table:first-child");if(c&&c.length>0){c.toggle();var d=c.children("tbody").children("tr");if(d&&d.length>0){var e=d.first(),f=[];e.children("th").each(function(a){var c=$(this).text();f[a]=c,b[c]=[]});var g=d.toArray();if(g)for(var h=g.length,i=f.length,j=1;h>j;j++)for(var k=$(g[j]).children("td").toArray(),l=0;i>l;l++)b[f[l]][j-1]=parseFloat($(k[l]).text())}}return b},InteractiveDataDisplay.Utils.getAndClearTextContent=function(a){a[0].normalize();var b=a.contents().filter(function(){return 3!=this.nodeType?!1:this.data&&""!=this.data.trim()?!0:!1})[0];if(b&&b.data){var c=b.wholeText;return"undefined"!=typeof b.replaceWholeText?b.replaceWholeText(""):b.data="",c}},InteractiveDataDisplay.readCsv=function(a){var b={};InteractiveDataDisplay.Utils.readStyle(a,b);var c=InteractiveDataDisplay.Utils.getAndClearTextContent(a);if(c){c=c.trim();var d=function(a){return a.split(/\s+/g)},e=c.split(/\n/g),f=e.length-1;if(f>0){for(var g=d(e[0]),h=g[0]?0:1,i=h;ij;j++){var k=d(e[j+1]);h=k[0]?0:1;for(var i=h;i0){var g=d(e[0]),h=g.length-1;if(h>0){for(var i=new Array(h),j=new Array(f),k=new Array(h),l=1;h>=l;l++)k[l-1]=new Array(f),i[l-1]=parseFloat(g[l]);for(var m=1;f>=m;m++){var n=d(e[m]);j[m-1]=parseFloat(n[0]);for(var l=1;h>=l;l++)k[l-1][m-1]=parseFloat(n[l])}b.x=i,b.y=j,b.f=k}}}return b},InteractiveDataDisplay.InitializeAxis=function(a,b){if(a.hasClass("idd-axis"))throw"The div element already is initialized as an axis";var c=a.attr("data-idd-axis");switch(c){case"numeric":return new InteractiveDataDisplay.NumericAxis(a);case"log":return new InteractiveDataDisplay.LogarithmicAxis(a);case"labels":return new InteractiveDataDisplay.LabelledAxis(a,b)}},InteractiveDataDisplay.TicksRenderer=function(a,b){if("undefined"!=typeof Modernizr&&a&&(Modernizr.canvas||a.replaceWith('Browser does not support HTML5 canvas
')),!a||!a.hasClass("idd-axis")){var c=this,d=a,e="";a&&(e=a.attr("data-idd-placement"));var f="top"==e||"bottom"==e;this.rotateLabels=!1;var g={min:0,max:1},h=b,i=[],j=3,k=$(""),l=$("");if(a){"bottom"==e||"right"==e?(a[0].appendChild(k[0]),a[0].appendChild(l[0])):(a[0].appendChild(l[0]),a[0].appendChild(k[0]));var m=InteractiveDataDisplay.tickLength+1;f?k[0].height=m:(k[0].width=m,"right"==e?l.css("left",j):k.css("left",j))}var n,o,p,q,r;this.updateSize=function(){var b=p;a&&(n=a.outerWidth(!1),o=a.outerHeight(!1)),f?(p=n,p!=b&&(k[0].width=p,l.css("width",p))):(p=o,p!=b&&(k[0].height=p,l.css("height",p))),q=(p-1)/(g.max-g.min),r=k[0].height};var s=-1,t=InteractiveDataDisplay.tickLength/3,u=d?d.css("color"):"Black",v=k.get(0).getContext("2d");v.strokeStyle=u,v.fillStyle=u,v.lineWidth=1;var w=12;d&&(d[0].currentStyle?(w=d[0].currentStyle["font-size"],v.font=w+d[0].currentStyle["font-family"]):document.defaultView&&document.defaultView.getComputedStyle?(w=document.defaultView.getComputedStyle(d[0],null).getPropertyValue("font-size"),v.font=w+document.defaultView.getComputedStyle(d[0],null).getPropertyValue("font-family")):d[0].style&&(w=d[0].style["font-size"],v.font=w+d[0].style["font-family"])),Object.defineProperty(this,"host",{get:function(){return d},configurable:!1}),Object.defineProperty(this,"mode",{get:function(){return e},configurable:!1}),Object.defineProperty(this,"tickSource",{get:function(){return h},configurable:!1}),Object.defineProperty(this,"range",{get:function(){return g},configurable:!1}),Object.defineProperty(this,"ticks",{get:function(){return i},configurable:!1}),Object.defineProperty(this,"DesiredSize",{get:function(){return{width:n,height:o}},configurable:!1}),Object.defineProperty(this,"axisSize",{get:function(){return p},configurable:!1}),Object.defineProperty(this,"deltaRange",{get:function(){return q},configurable:!1}),this.sizeChanged=!0;var x=void 0;Object.defineProperty(this,"dataTransform",{get:function(){return x},set:function(a){x=a,B()},configurable:!1});var y=[],z=function(a){var b=a.length;y=new Array(b);for(var d,e,g,i=f?r:0,j=0;b>j;j++){var k=a[j];k.label?(d=k.label._size,e=d.width,g=d.height,0==e&&(e=v.measureText(h.getInnerText(k.position)).width),0==g&&(g=(f?i:parseFloat(w))+8),y[j]={position:c.getCoordinateFromTick(k.position),width:e,height:g,hasLabel:!0}):y[j]={position:c.getCoordinateFromTick(k.position),width:0,height:0,hasLabel:!1}}},A=function(a){var b,c,d=a.length-1;if(C(a),z(a),-1==d)return 1;for(var e=0,g=0;d>g;){for(e=g,g++;d+1>g&&!y[g].hasLabel;)g++;if(g>d)break;if(y[e].hasLabel){if(b=Math.abs(y[g].position-y[e].position),bp&&(c-=y[g].width/2)):(c=(y[e].height+y[g].height)/2,0==e&&y[e].position-y[e].height/2<0?c-=y[e].height/2:g==d-1&&y[g].position-y[g].height/2>p&&(c-=y[g].height/2)),b-cg;){for(e=g,g++;d+1>g&&!y[g].hasLabel;)g++;if(g>d)break;if(y[e].hasLabel&&(b=Math.abs(y[g].position-y[e].position),f?(c=(y[e].width+y[g].width)/2,0==e&&y[e].position-y[e].width/2<0?c-=y[e].width/2:g==d-1&&y[g].position-y[g].width/2>p&&(c-=y[g].width/2)):(c=(y[e].height+y[g].height)/2,0==e&&y[e].position-y[e].height/2<0?c-=y[e].height/2:g==d-1&&y[g].position-y[g].height/2>p&&(c-=y[g].height/2)),b-cInteractiveDataDisplay.maxTickArrangeIterations||i.length<2)&&(q=h.getMinTicks(),q.length>0&&(i=q,C(i),z(i))),2==i.length&&(C(i),z(i),2==i.length)){var E,F=y[1].position-y[0].position;E=f?(y[0].width+y[1].width)/2:(y[0].height+y[1].height)/2,F-EI;I++)s=Math.max(s,y[I].height);s!=H&&0!=s&&(l.css("height",s),k[0].height=m,o=s+m,d.css("height",o),this.sizeChanged=!0)}else{for(var I=0;G>I;I++)s=Math.max(s,y[I].width);s!=H&&0!=s&&(l.css("width",s),k[0].width=m,n=s+m+j,d.css("width",n),this.sizeChanged=!0)}v.strokeStyle=u,v.fillStyle=u,f?(v.clearRect(0,0,p,m),"bottom"==e?v.fillRect(0,0,p,1):v.fillRect(0,InteractiveDataDisplay.tickLength,p,1)):(v.clearRect(0,0,m,p),"right"==e?v.fillRect(0,0,1,p):v.fillRect(InteractiveDataDisplay.tickLength,0,1,p));for(var J,K,I=0;G>I;I++)J=y[I].position,f?(K=y[I].width/2,D?0==I?K*=2:I==G-1&&(K=0):0==I&&K>J?K=0:I==G-1&&J+K>p&&(K*=2),i[I].invisible||v.fillRect(J,1,1,InteractiveDataDisplay.tickLength),i[I].label&&i[I].label.css("left",J-K)):(J=p-1-J,K=y[I].height/2,D?0==I?K=0:I==G-1&&(K*=2):0==I&&J+K>p?K*=2:I==G-1&&K>J&&(K=0),i[I].invisible||v.fillRect(1,J,InteractiveDataDisplay.tickLength,1),i[I].label&&(i[I].label.css("top",J-K),"left"==e&&i[I].label.css("left",s-(this.rotateLabels?y[I].height:y[I].width))));var L=h.getSmallTicks(i);if(L.length>0){for(var M=Math.abs(c.getCoordinateFromTick(L[1])-c.getCoordinateFromTick(L[0])),N=1;N=InteractiveDataDisplay.minTickSpace)for(var I=0,G=L.length;G>I;I++)J=c.getCoordinateFromTick(L[I]),"bottom"==e?v.fillRect(J,1,1,t):"top"==e?v.fillRect(J,InteractiveDataDisplay.tickLength-t,1,t):"left"==e?v.fillRect(InteractiveDataDisplay.tickLength-t,p-1-J,t,1):"right"==e&&v.fillRect(1,p-1-J,t,1)}},C=function(a){for(var b,c=0,d=a.length;d>c;c++)if(b=a[c].label,b&&!b.hasClass("idd-axis-label")){var e=b[0];l[0].appendChild(e),b.addClass("idd-axis-label"),b._size={width:e.offsetWidth,height:e.offsetHeight}}};this.update=function(a){a&&(g=a),B()},this.destroy=function(){d[0].innerHTML="",d.removeClass("idd-axis"),d.removeClass("unselectable")},this.remove=function(){var a=d[0].parentElement;if(a){a.removeChild(d[0]);var b=a.parentElement;b&&("idd-plot-master"==b.className||b.classList&&b.classList.contains("idd-plot-master"))&&b.plot.removeDiv(a)}this.destroy()},a&&(B(),a.addClass("idd-axis"),a.addClass("unselectable"))}},InteractiveDataDisplay.NumericAxis=function(a){this.base=InteractiveDataDisplay.TicksRenderer,this.getCoordinateFromTick=function(a){var b=this.deltaRange;if(isFinite(b)){var c=a,d=this.dataTransform;return d&&(c=d.dataToPlot(a)),(c-this.range.min)*b}return this.axisSize/2},this.base(a,new InteractiveDataDisplay.NumericTickSource)},InteractiveDataDisplay.NumericAxis.prototype=new InteractiveDataDisplay.TicksRenderer,InteractiveDataDisplay.LogarithmicAxis=function(a){this.base=InteractiveDataDisplay.TicksRenderer;var b=Math.log(10);this.getCoordinateFromTick=function(a){var c=this.deltaRange;if(isFinite(c)){var d=Math.log(a)/b;return(d-this.range.min)*c}return this.axisSize/2},this.base(a,new InteractiveDataDisplay.LogarithmicTickSource)},InteractiveDataDisplay.LogarithmicAxis.prototype=new InteractiveDataDisplay.TicksRenderer,InteractiveDataDisplay.LabelledAxis=function(a,b){this.base=InteractiveDataDisplay.TicksRenderer;this.getCoordinateFromTick=function(a){var b=this.deltaRange;if(isFinite(b)){var c=a;return this.dataTransform&&(c=this.dataTransform.dataToPlot(a)),(c-this.range.min)*b}return this.axisSize/2},b&&b.rotate&&(this.rotateLabels=!0),this.base(a,new InteractiveDataDisplay.LabelledTickSource(b))},InteractiveDataDisplay.LabelledAxis.prototype=new InteractiveDataDisplay.TicksRenderer,InteractiveDataDisplay.TickSource=function(){var a=[],b=[],c=[],d=[],e=0;this.start,this.finish,this.getDiv=function(f){var g=this.getInnerText(f),h=c.indexOf(g);if(-1!=h){b[h]=!0,d[h].display="block";var i=a[h][0];return a[h]._size={width:i.offsetWidth,height:i.offsetHeight},a[h]}var h=b.indexOf(!1);if(-1!=h){b[h]=!0,d[h].display="block",c[h]=g;var i=a[h][0];return i.innerHTML=g,a[h]._size={width:i.offsetWidth,height:i.offsetHeight},a[h]}var i=$(""+g+"
");return b[e]=!0,a[e]=i,c[e]=g,d[e]=i[0].style,i._size=void 0,e++,i},this.getInnerText=function(a){return a},this.refreshDivs=function(){for(var a=0;e>a;a++)b[a]?b[a]=!1:d[a].display="none"},this.getTicks=function(a){this.start=a.min,this.finish=a.max},this.decreaseTickCount=function(){},this.increaseTickCount=function(){},this.round=function(a,b){if(0>=b)return-b>15?parseFloat(a.toFixed(15)):parseFloat(a.toFixed(-b));var c=Math.pow(10,b-1);return Math.round(a/c)*c}},InteractiveDataDisplay.NumericTickSource=function(){this.base=InteractiveDataDisplay.TickSource,this.base();var a,b,c=this,d=1/Math.log(10);this.getInnerText=function(a){return 0==a?a:b>=InteractiveDataDisplay.minNumOrder?this.round(a/Math.pow(10,b),-1)+"e+"+b:this.round(a,b)},this.getTicks=function(c){return InteractiveDataDisplay.NumericTickSource.prototype.getTicks.call(this,c),a=1,b=Math.floor(Math.log(this.finish-this.start)*d),e()};var e=function(){var d=[];if(c.start>c.finish)return d;if(isFinite(b))for(var e,f=a*Math.pow(10,b),g=Math.floor(c.start/f),h=Math.floor(c.finish/f)-g+2,i=0,j=g*f,k=0;h>k;k++)e=j+k*f,e>=c.start&&e<=c.finish&&(d[i]={position:e,label:c.getDiv(e)},i++);else d[0]={position:c.start,label:c.getDiv(c.start),invisible:!0};return c.refreshDivs(),d};this.decreaseTickCount=function(){return 1==a?a=2:2==a?a=5:5==a&&(a=1,b++),e()},this.increaseTickCount=function(){return 1==a?(a=5,b--):2==a?a=1:5==a&&(a=2),e()},this.getSmallTicks=function(a){var b=[],c=0;if(a.length>1){var d=a[0].position,e=Math.abs(a[1].position-d)/10;for(d-=e;d>this.start&&10>c;)b[c]=d,c++,d-=e;for(var f=a.length,g=0;f-1>g;g++){d=a[g].position+e;for(var h=0;9>h;h++)b[c]=d,c++,d+=e}d=a[f-1].position+e;for(var i=0;di;)b[c]=d,c++,d+=e,i++}return b},this.getMinTicks=function(){var e=[];if(b=Math.floor(Math.log(this.finish-this.start)*d),isFinite(b)){var f=Math.pow(10,b),g=Math.floor(c.start/f)*f;gc.finish&&(h-=f),g!=h)e[0]={position:g,label:c.getDiv(c.round(g,b))},e[1]={position:h,label:c.getDiv(c.round(h,b))};else{b--,a=5,f=a*Math.pow(10,b),g=Math.floor(c.start/f);for(var i,j=Math.floor(c.finish/f)-g+2,k=0,l=g*f,m=0;j>m;m++)i=l+m*f,i>=c.start&&i<=c.finish&&(e[k]={position:i,label:c.getDiv(c.round(i,b))},k++)}}else e[0]={position:c.start,label:c.getDiv(c.start),invisible:!0};return this.refreshDivs(),e}},InteractiveDataDisplay.NumericTickSource.prototype=new InteractiveDataDisplay.TickSource,InteractiveDataDisplay.LogarithmicTickSource=function(){this.base=InteractiveDataDisplay.TickSource,this.base();var a,b,c=this,d=1,e=10;this.getInnerText=function(a){return Math.abs(a)"+a+""},this.getTicks=function(c){return InteractiveDataDisplay.LogarithmicTickSource.prototype.getTicks.call(this,c),a=Math.pow(10,this.start),b=Math.pow(10,this.finish),f()};var f=function(){var f=[];if(isFinite(Math.pow(10,-c.start))&&isFinite(b))if(a==b)f[0]={position:c.start,label:c.getDiv(c.start),invisible:!0};else for(var g=c.start/d|0,h=(c.finish/d|0)-g+3,i=(g-1)*d,j=Math.pow(10,i),k=0,l=0;h>l;l++)j>=a&&b>=j&&(f[k]={position:j,label:c.getDiv(i)},k++),i+=d,j*=e;return c.refreshDivs(),f};this.decreaseTickCount=function(){return d*=2,e=Math.pow(10,d),f()},this.increaseTickCount=function(){return d>1&&(d/=2,e=Math.pow(10,d)),f()},this.getSmallTicks=function(e){var f=[],g=isFinite(Math.pow(10,-c.start))&&isFinite(b),h=0;if(e.length>0&&1==d&&g){var i=e[0].position,j=i/10;for(i-=j;i>a&&10>h;)f[h]=i,h++,i-=j;for(var k=e.length,l=0;k-1>l;l++){i=e[l].position,j=(e[l+1].position-i)/10,i+=j;for(var m=0;9>m;m++)f[h]=i,h++,i+=j}for(i=e[k-1].position,j=i,i+=j;b>i;)f[h]=i,h++,i+=j}return f},this.getMinTicks=function(){var d=[],e=isFinite(Math.pow(10,-c.start))&&isFinite(b);return e?a==b&&(d[0]={position:c.start,label:c.getDiv(c.start),invisible:!0},this.refreshDivs()):(d[0]={position:1,label:c.getDiv(0)},this.refreshDivs()),d}},InteractiveDataDisplay.LogarithmicTickSource.prototype=new InteractiveDataDisplay.TickSource,InteractiveDataDisplay.LabelledTickSource=function(a){this.base=InteractiveDataDisplay.TickSource,this.base();var b=this,c=[],d=[];if(a&&a.labels){for(var e=a.labels.length,f=0;e>f;f++)c[f]=a.labels[f].toString();if(a.ticks)d=a.ticks;else for(var f=0;e>f;f++)d[f]=f}var g,h,i=1,j=d.length-c.length,k=a&&a.rotate?a.rotate:!1;this.getTicks=function(a){if(InteractiveDataDisplay.LabelledTickSource.prototype.getTicks.call(this,a),i=1,0>=j){var b=0,c=d.length-1,e=0|this.start;if(e>d[b])for(;c-b>1;){var f=Math.round((b+c)/2);d[f]1;){var f=Math.round((b+c)/2);d[f]g)for(var k=(d.length-1)/(h-g);k>i;)i*=2}return l()};var l=function(){var a=[];if(0>=j){var e=Math.floor((d.length-1)/i);e>d.length-1?e=d.length-1:1>e&&(e=1);for(var f=0,l=0|b.start;d[f]=0&&d[f]>l&&(f-=e);for(var m=h-g+1,n=0,o=0;m>o;o++){if(l=d[f],l>=b.start&&l<=b.finish){var p=b.getDiv(c[f]);k&&p.addClass("idd-verticalText"),a[n]={position:l,label:p},n++}f+=e}}else{for(var q=0;d[q]0&&q--;for(var r=d.length-1;d[r]>b.finish;)r--;ro;o++){l=s,l>=b.start&&l<=b.finish&&(a[n]={position:l},n++),q++,s=d[q];var t=1;if(i>1&&(t/=i),o!=m-1){var u=(Math.min(s,b.finish)+Math.max(l,b.start))/2;if(u>=b.start&&u<=b.finish){var p=b.getDiv(c[q-1]);k&&(p.addClass("idd-verticalText"),p.css("transform","rotate(-90deg) scale("+t+", "+t+")")),a[n]={position:u,label:p,invisible:!0},n++}}}}return b.refreshDivs(),a};this.decreaseTickCount=function(){return 0>=j?i/=2:i++,l()},this.increaseTickCount=function(){return 0>=j?i*=2:i--,l()},this.getSmallTicks=function(a){var b=[];if(0>=j)for(var c=0,e=0,f=0;fe&&d[f]==a[e].position?e++:(b[c]=d[f],c++);return b},this.getMinTicks=function(){var a=[];if(0>=j&&0==c.length){var e=b.getDiv(c[0]);k&&e.addClass("idd-verticalText"),a[0]={position:d[0],label:e},e=b.getDiv(c[c.length-1]),k&&e.addClass("idd-verticalText"),a[1]={position:d[d.length-1],label:e},b.refreshDivs()}return a}},InteractiveDataDisplay.LabelledTickSource.prototype=new InteractiveDataDisplay.TickSource,InteractiveDataDisplay.TicksRenderer.getAxisType=function(a){return void 0===a?"numeric":a.type&&"log10"==a.type?"log":"numeric"},InteractiveDataDisplay=InteractiveDataDisplay||{},InteractiveDataDisplay.ColorPalette=function(a,b,c){var d,e,f,g=this;if(Object.defineProperty(this,"isNormalized",{get:function(){return d},configurable:!1}),Object.defineProperty(this,"range",{get:function(){return e},configurable:!1}),Object.defineProperty(this,"points",{get:function(){return f},configurable:!1}),d=a,e=d?{min:0,max:1}:{min:b.min,max:b.max},e.min>=e.max)throw"range is incorrect (min >= max)";if(void 0==c)throw"points are undefined";if(c.length<2)throw"Palette should have at least two points";f=c.slice(0),this.getRgba=function(a){var b=g.getHsla(a);return InteractiveDataDisplay.ColorPalette.HSLtoRGB(b)},this.getHsla=function(a){var b=f.length;if(a<=f[0].x)return f[0].leftColor;if(a>=f[b-1].x)return f[b-1].rightColor;for(var c=0,d=b-1;d-c>1;){var e=Math.round((c+d)/2);f[e].x3&&(m>l?l+=6:m+=6);var n={h:l+(m-l)*i,s:j.s+(k.s-j.s)*i,l:j.l+(k.l-j.l)*i,a:j.a+(k.a-j.a)*i};return n.h>=6&&(n.h-=6),n},this.absolute=function(a,b){for(var c=f.length,d=(b-a)/(e.max-e.min),g=new Array(c),h=0;c>h;h++){var i=f[h];g[h]={x:d*(i.x-e.min)+a,rightColor:i.rightColor,leftColor:i.leftColor}}return new InteractiveDataDisplay.ColorPalette(!1,{min:a,max:b},g)},this.relative=function(){if(d)return this;for(var a=f.length,b=1/(e.max-e.min),c=new Array(a),g=0;a>g;g++){var h=f[g];c[g]={x:b*(h.x-e.min),rightColor:h.rightColor,leftColor:h.leftColor}}return new InteractiveDataDisplay.ColorPalette(!0,{min:0,max:1},c)},this.banded=function(a){if(!a)throw"bands is undefined";var b=!1;if("number"==typeof a){if(1>a)throw new"number of bands is less than 1";b=!0;var c=a-1,f=(e.max-e.min)/a;a=new Array(c);for(var g=0;c>g;g++)a[g]=(g+1)*f+e.min}var h=a.length+2,i=a.length+1;if(2>h)throw"number of bands is less than 1";for(var j,k,l=new Array(h),m=this.getHsla(e.min),n=i>1?(e.max-e.min)/(i-1):.5*(e.max-e.min),g=0;h-1>g;g++){if(0==g)j=e.min,k=e.min;else{if(j=g==h-2?e.max:b?e.min+g*n:(a[g-1]+a[g])/2,k>=a[g-1])throw"bands points are incorrect";k=a[g-1]}var o=this.getHsla(j),p={x:k,rightColor:o,leftColor:m};l[g]=p,m=o}if(k>=e.max)throw"bands points are incorrect";return l[h-1]={x:e.max,rightColor:m,leftColor:m},new InteractiveDataDisplay.ColorPalette(d,e,l)}},InteractiveDataDisplay.ColorPalette.toArray=function(a,b){var c,d,e=new Uint8Array(b<<2),f=a.getRgba;a.isNormalized?(c=1/(b-1),d=0):(d=a.range.min,c=(a.range.max-a.range.min)/(b-1));for(var g,h,i=0,h=0;b>i;i++)g=f(i*c+d),e[h++]=g.r,e[h++]=g.g,e[h++]=g.b,e[h++]=255*g.a;return e},InteractiveDataDisplay.ColorPalette.create=function(){var a=arguments;if(!a||0==a.length)throw"colors is undefined or empty";var b=a.length;1==b&&(b++,a=[a[0],a[0]]);for(var c=new Array(b),d=1/(b-1),e=0;b>e;e++){var f=a[e],g="number"==typeof f.r?InteractiveDataDisplay.ColorPalette.RGBtoHSL(f):f;c[e]={x:e*d,rightColor:g,leftColor:g}}return new InteractiveDataDisplay.ColorPalette(!0,{min:0,max:1},c)},InteractiveDataDisplay.ColorPalette.parse=function(a){var b,c=!0,d=[];if(void 0==a&&(a=""),""==a)return InteractiveDataDisplay.palettes.grayscale;var e,f=new InteractiveDataDisplay.Lexer(a),g=-1;if(f.readNext()){if(d.push({x:0,rightColor:{h:0,s:0,l:0,a:1},leftColor:{h:0,s:0,l:1,a:1}}),"number"==f.currentLexeme){if(d[d.length-1].x=f.currentNumber,c=!1,f.readNext()&&("separator"!=f.currentLexeme||"equal"!=f.currentSeparator))throw f.position+": separator '=' expected";if(f.readNext()&&"color"!=f.currentLexeme)throw f.position+": color expected"}if("color"!=f.currentLexeme)throw f.position+": wrong lexeme";d[d.length-1].rightColor=f.currentColor,d[d.length-1].leftColor=f.currentColor,d.push({x:d[0].x,rightColor:f.currentColor,leftColor:f.currentColor})}for(e=d[0].x;f.readNext();){if("separator"!=f.currentLexeme)throw f.position+": separator expected";if("equal"==f.currentSeparator){if(f.readNext())if("number"==f.currentLexeme){if(f.currentNumber=d[d.length-1].x)throw f.position+": wrong range of palette";b={min:d[0].x,max:d[d.length-1].x};for(var h=1,i=0,j=1,k=d.length;k>j;j++)if(d[j].x==d[0].x-1)0==i&&(h=j),i++;else if(0!=i){for(var l=(d[h+i].x-d[h-1].x)/(i+1),m=0;i>m;m++)d[h+m].x=d[h-1].x+l*(m+1);i=0,h=1}return new InteractiveDataDisplay.ColorPalette(c,b,d)},InteractiveDataDisplay.Lexer=function(a){if("string"!=typeof a)throw"wrong definition of palette: must be a string";var b,c,d,e,f=a,g=0;Object.defineProperty(this,"position",{get:function(){return g},configurable:!1}),Object.defineProperty(this,"paletteString",{get:function(){return f},configurable:!1}),Object.defineProperty(this,"currentSeparator",{get:function(){return e},configurable:!1}),Object.defineProperty(this,"currentLexeme",{get:function(){return d},configurable:!1}),Object.defineProperty(this,"currentNumber",{get:function(){return c},configurable:!1}),Object.defineProperty(this,"currentColor",{get:function(){return b},configurable:!1}),this.readNext=function(){if(g>=f.length)return!1;for(;" "===f[g];)g++;if("#"===f[g]||/^[a-z]/.test(f[g].toLowerCase())){d="color";for(var a=g;gd?(i-j)/(i+j):(i-j)/(2-i-j),i==j?b=0:i==f?b=g>=h?(g-h)/(i-j):(g-h)/(i-j)+6:i==g?b=2+(h-f)/(i-j):i==h&&(b=4+(f-g)/(i-j)),{h:b,s:c,l:d,a:e}},InteractiveDataDisplay.ColorPalette.HSLtoRGB=function(a){var b,c,d,e;e=a.a;var f=a.h,g=a.s,h=a.l,i=(1-Math.abs(2*h-1))*g,j=i*(1-Math.abs(f%2-1));2>f?(d=0,1>f?(b=Math.round(255*i),c=Math.round(255*j)):(b=Math.round(255*j),c=Math.round(255*i))):4>f?(b=0,3>f?(c=Math.round(255*i),d=Math.round(255*j)):(c=Math.round(255*j),d=Math.round(255*i))):6>f&&(c=0,5>f?(b=Math.round(255*j),d=Math.round(255*i)):(b=Math.round(255*i),d=Math.round(255*j)));var k=255*(h-i/2),l=b+k;return b=l>255?255:0>l?0:Math.round(l),l=c+k,c=l>255?255:0>l?0:Math.round(l),l=d+k,d=l>255?255:0>l?0:Math.round(l),{r:b,g:c,b:d,a:e}},InteractiveDataDisplay.ColorPaletteViewer=function(a,b,c){function d(){k=$(""),f[0].appendChild(k[0]),l=new InteractiveDataDisplay.NumericAxis(k),m&&!m.isNormalized?l.update({min:m.range.min,max:m.range.max}):n&&l.update({min:n.min,max:n.max})}function e(){f[0].removeChild(k[0]),k=null,l=null}var f=a,g=f.width(),h=20,i=!0;void 0!==c&&(void 0!==c.height&&(h=c.height),void 0!==c.width&&(g=c.width),void 0!==c.axisVisible&&(i=c.axisVisible));var j=$("");f[0].appendChild(j[0]);var k=null,l=null;i&&d(),Object.defineProperty(this,"axisVisible",{get:function(){return i},set:function(a){a=a?!0:!1,i!=a&&(i=a,i?d():e())},configurable:!1});var m=b;Object.defineProperty(this,"palette",{get:function(){return m},set:function(a){a&&(m=a,!i||m.isNormalized&&n||l.update({min:m.range.min,max:m.range.max}),p())},configurable:!1});var n=void 0;Object.defineProperty(this,"dataRange",{get:function(){return n},set:function(a){a&&(n=a,!i||m&&!m.isNormalized||l.update({min:n.min,max:n.max}))},configurable:!1});var o=j.get(0).getContext("2d"),p=function(){for(var a,b=(m.range.max-m.range.min)/g,c=o.createLinearGradient(0,0,g,0),d=m.range.min,e=0;g>e;e++)a=m.getRgba(d),c.addColorStop(e/g,"rgba("+a.r+","+a.g+","+a.b+","+a.a+")"),d+=b;o.fillStyle=c,o.fillRect(0,0,g,h)};m&&p()},InteractiveDataDisplay.SizePalette=function(a,b,c){var d,e,f;if(Object.defineProperty(this,"isNormalized",{get:function(){return d},configurable:!1}),Object.defineProperty(this,"range",{get:function(){return e},configurable:!1}),Object.defineProperty(this,"sizeRange",{get:function(){return f},configurable:!1}),d=a,e=d?{min:0,max:1}:{min:c.min,max:c.max},f={min:b.min,max:b.max},e.min>e.max)throw"valueRange is incorrect (min >= max)";var g=(f.max-f.min)/(e.max-e.min);this.getSize=function(a){return a<=e.min?f.min:a>=e.max?f.max:g*(a-e.min)+f.min}},InteractiveDataDisplay.SizePaletteViewer=function(a,b,c){function d(){m=$(""),l=new InteractiveDataDisplay.NumericAxis(m),f[0].appendChild(m[0]),j?j.isNormalized||l.update({min:j.range.min,max:j.range.max}):n&&l.update({min:n.min,max:n.max})}function e(){f[0].removeChild(m[0]),m=null,l=null}var f=a,g=f.width(),h=35,i=!0,j=b;void 0!==c&&(void 0!==c.axisVisible&&(i=c.axisVisible),void 0!==c.width&&(g=c.width),void 0!==c.height&&(h=c.height));var k=$("");f[0].appendChild(k[0]);var l=null,m=null;i&&d(),Object.defineProperty(this,"axisVisible",{get:function(){return i},set:function(a){a=a?!0:!1,i!=a&&(i=a,i?d():e())},configurable:!1}),Object.defineProperty(this,"palette",{get:function(){return j},set:function(a){a&&(j=a,i&&!j.isNormalized&&l.update({min:j.range.min,max:j.range.max}),p())},configurable:!1});var n=void 0;Object.defineProperty(this,"dataRange",{get:function(){return n},set:function(a){a&&(n=a,!i||j&&!j.isNormalized||l.update({min:n.min,max:n.max}))},configurable:!1});var o=k.get(0).getContext("2d"),p=function(){o.clearRect(0,0,g,h),o.fillStyle="lightgray",o.strokeStyle="black";var a=0,b=h;j&&j.sizeRange&&(a=j.sizeRange.min,b=j.sizeRange.max);var c=h*g/Math.max(b,a);o.beginPath(),o.moveTo(0,h),0!=a&&o.lineTo(0,Math.max(0,h-a)),g>c?(o.lineTo(c,0),b>=a?o.lineTo(g,0):o.lineTo(g,Math.max(0,h-b))):o.lineTo(g,Math.max(0,h-b)),o.lineTo(g,h),o.lineTo(0,h),o.closePath(),o.fill(),o.stroke()};p()},InteractiveDataDisplay.palettes={grayscale:new InteractiveDataDisplay.ColorPalette(!0,{min:0,max:1},[{x:0,rightColor:{h:0,s:0,l:0,a:1},leftColor:{h:0,s:0,l:0,a:1}},{x:1,rightColor:{h:0,s:0,l:1,a:1},leftColor:{h:0,s:0,l:1,a:1}}])},InteractiveDataDisplay.Gestures={},InteractiveDataDisplay.Gestures.FullEventList=["mousedown","mousemove","mouseup","touchstart","touchmove","touchend","touchcancel","gesturestart","gesturechange","gestureend","MSGestureStart","MSGestureChange","MSGestureEnd","MSGestureCancel","MSPointerDown"],InteractiveDataDisplay.Gestures.zoomLevelFactor=1.4,InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin=function(a,b){var c=function(a){for(var b=0,c=0;a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return{left:b,top:c}},d=c(a[0]),e=b.pageX-d.left,f=b.pageY-d.top;return{x:e,y:f}},InteractiveDataDisplay.Gestures.PanGesture=function(a,b,c){this.Type="Pan",this.Source=c,this.xOffset=a,this.yOffset=b},InteractiveDataDisplay.Gestures.ZoomGesture=function(a,b,c,d){this.Type="Zoom",this.Source=d,this.xOrigin=a,this.yOrigin=b,this.scaleFactor=c},InteractiveDataDisplay.Gestures.PinGesture=function(a){this.Type="Pin",this.Source=a},InteractiveDataDisplay.Gestures.createPanSubject=function(a){var b=$(document),c=Rx.Observable.fromEvent(a,"mousedown"),d=Rx.Observable.fromEvent(a,"mousemove"),e=Rx.Observable.fromEvent(b,"mouseup"),f=d.skip(1).zip(d,function(a,b){return new InteractiveDataDisplay.Gestures.PanGesture(a.clientX-b.clientX,a.clientY-b.clientY,"Mouse")}),g=e,h=c.selectMany(function(a){return f.takeUntil(g)});return h},InteractiveDataDisplay.Gestures.createPinSubject=function(a){var b=Rx.Observable.fromEvent(a,"mousedown");return b.select(function(a){return new InteractiveDataDisplay.Gestures.PinGesture("Mouse")})},InteractiveDataDisplay.Gestures.createZoomSubject=function(a){a.mousewheel(function(b,c){b.preventDefault();var d=jQuery.Event("xbrowserwheel");d.delta=c,d.origin=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(a,b),a.trigger(d)});var b=Rx.Observable.fromEvent(a,"xbrowserwheel"),c=b.zip(b,function(a){return new InteractiveDataDisplay.Gestures.ZoomGesture(a.origin.x,a.origin.y,a.delta>0?1/InteractiveDataDisplay.Gestures.zoomLevelFactor:1*InteractiveDataDisplay.Gestures.zoomLevelFactor,"Mouse")}),d=Rx.Observable.fromEvent(a,"dblclick");d.zip(d,function(b){var c=InteractiveDataDisplay.Gestures.getXBrowserMouseOrigin(a,b);return new InteractiveDataDisplay.Gestures.ZoomGesture(c.x,c.y,1/InteractiveDataDisplay.Gestures.zoomLevelFactor,"Mouse")});return c},InteractiveDataDisplay.Gestures.createTouchPanSubject=function(a){var b=$(document),c=Rx.Observable.fromEvent(a,"touchstart"),d=Rx.Observable.fromEvent(a,"touchmove"),e=Rx.Observable.fromEvent(b,"touchend"),f=Rx.Observable.fromEvent(b,"touchcancel"),g=c.selectMany(function(a){return d.takeUntil(e.merge(f)).skip(1).zip(d,function(a,b){return{left:a.originalEvent,right:b.originalEvent}}).where(function(a){return a.left.scale===a.right.scale}).select(function(a){return new InteractiveDataDisplay.Gestures.PanGesture(a.left.pageX-a.right.pageX,a.left.pageY-a.right.pageY,"Touch")})});return g},InteractiveDataDisplay.Gestures.createTouchPinSubject=function(a){var b=Rx.Observable.fromEvent(a,"touchstart");return b.select(function(a){return new InteractiveDataDisplay.Gestures.PinGesture("Touch")})},InteractiveDataDisplay.Gestures.createTouchZoomSubject=function(a){var b=$(document),c=Rx.Observable.fromEvent(a,"gesturestart"),d=Rx.Observable.fromEvent(a,"gesturechange"),e=Rx.Observable.fromEvent(b,"gestureend"),f=Rx.Observable.fromEvent(b,"touchcancel"),g=c.selectMany(function(a){return d.takeUntil(e.merge(f)).skip(1).zip(d,function(a,b){return{left:a.originalEvent,right:b.originalEvent}}).where(function(a){return a.left.scale!==a.right.scale&&0!==a.right.scale}).select(function(b){var c=b.left.scale/b.right.scale;return new InteractiveDataDisplay.Gestures.ZoomGesture(a.originalEvent.layerX,a.originalEvent.layerY,1/c,"Touch")})});return g},InteractiveDataDisplay.Gestures.createTouchPanSubjectWin8=function(a){var b=Rx.Observable.fromEvent(a,"MSGestureStart"),c=Rx.Observable.fromEvent(a,"MSGestureChange"),d=Rx.Observable.fromEvent($(document),"MSGestureEnd"),e=b.selectMany(function(a){var b=c.startWith({originalEvent:{offsetX:a.originalEvent.offsetX,offsetY:a.originalEvent.offsetY}});return b.takeUntil(d).skip(1).zip(b,function(a,b){return{left:a.originalEvent,right:b.originalEvent}}).where(function(a){return a.left.scale===a.right.scale&&a.left.detail!=a.left.MSGESTURE_FLAG_INERTIA&&a.right.detail!=a.right.MSGESTURE_FLAG_INERTIA}).select(function(a){return new InteractiveDataDisplay.Gestures.PanGesture(a.left.offsetX-a.right.offsetX,a.left.offsetY-a.right.offsetY,"Touch")})});return e},InteractiveDataDisplay.Gestures.createTouchPinSubjectWin8=function(a){var b=Rx.Observable.fromEvent(a,"MSPointerDown");return b.select(function(a){return new InteractiveDataDisplay.Gestures.PinGesture("Touch")})},InteractiveDataDisplay.Gestures.createTouchZoomSubjectWin8=function(a){var b=Rx.Observable.fromEvent(a,"MSGestureStart"),c=Rx.Observable.fromEvent(a,"MSGestureChange"),d=Rx.Observable.fromEvent(a,"MSGestureEnd"),e=b.selectMany(function(a){return c.takeUntil(d).where(function(a){return 1!==a.originalEvent.scale&&0!==a.originalEvent.scale&&a.originalEvent.detail!=a.originalEvent.MSGESTURE_FLAG_INERTIA}).select(function(b){return new InteractiveDataDisplay.Gestures.ZoomGesture(a.originalEvent.offsetX,a.originalEvent.offsetY,1/b.originalEvent.scale,"Touch")})});return e},InteractiveDataDisplay.Gestures.GesturesPool=function(){var a=[];this.addMSGestureSource=function(b){a.forEach(function(a){}),a.push(b),b.addEventListener("MSPointerDown",function(a){if(void 0===b.gesture){var c=new MSGesture;c.target=b,b.gesture=c}b.gesture.addPointer(a.pointerId)},!1)}},InteractiveDataDisplay.Gestures.GesturesPool=new InteractiveDataDisplay.Gestures.GesturesPool,InteractiveDataDisplay.Gestures.getGesturesStream=function(a){var b,c,d;if(window.navigator.msPointerEnabled&&"undefined"!=typeof MSGesture){var e=a[0];InteractiveDataDisplay.Gestures.GesturesPool.addMSGestureSource(e),b=InteractiveDataDisplay.Gestures.createTouchPanSubjectWin8(a);var f=InteractiveDataDisplay.Gestures.createTouchZoomSubjectWin8(a),g=InteractiveDataDisplay.Gestures.createZoomSubject(a);c=f.merge(g),d=InteractiveDataDisplay.Gestures.createTouchPinSubjectWin8(a)}else b=InteractiveDataDisplay.Gestures.createPanSubject(a),c=InteractiveDataDisplay.Gestures.createZoomSubject(a),d=InteractiveDataDisplay.Gestures.createPinSubject(a);var h=d.merge(b.merge(c));return"ontouchstart"in document.documentElement&&(b=InteractiveDataDisplay.Gestures.createTouchPanSubject(a),c=InteractiveDataDisplay.Gestures.createTouchZoomSubject(a),d=InteractiveDataDisplay.Gestures.createTouchPinSubject(a),h=h.merge(d.merge(b.merge(c)))),h},InteractiveDataDisplay.Gestures.applyHorizontalBehavior=function(a){return a.select(function(a){return"Pan"==a.Type?a.yOffset=0:"Zoom"==a.Type&&(a.preventVertical=!0),a})},InteractiveDataDisplay.Gestures.applyVerticalBehavior=function(a){return a.select(function(a){return"Pan"==a.Type?a.xOffset=0:"Zoom"==a.Type&&(a.preventHorizontal=!0),a})},InteractiveDataDisplay="undefined"==typeof InteractiveDataDisplay?{}:InteractiveDataDisplay,InteractiveDataDisplay.DataTransform=function(a,b,c,d){this.dataToPlot=a,this.plotToData=b,this.domain=c||{isInDomain:function(a){return!0}},this.type=d};var mercator_maxPhi=85.05112878,mercator_R=mercator_maxPhi/Math.log(Math.tan(mercator_maxPhi*Math.PI/360+Math.PI/4));InteractiveDataDisplay.mercatorTransform=new InteractiveDataDisplay.DataTransform(function(a){return a>=-mercator_maxPhi&&mercator_maxPhi>=a?mercator_R*Math.log(Math.tan(Math.PI*(a+90)/360)):a},function(a){return a>=-mercator_maxPhi&&mercator_maxPhi>=a?360*Math.atan(Math.exp(a/mercator_R))/Math.PI-90:a},void 0,"mercator"),Math.LOGE10=Math.log(10),InteractiveDataDisplay.logTransform=new InteractiveDataDisplay.DataTransform(function(a){return Math.log(a)/Math.LOGE10},function(a){return Math.pow(10,a)},{isInDomain:function(a){return a>0}},"log10"),InteractiveDataDisplay.AnimationBase=function(){var a=void 0,b=this;this.isInAnimation=!1;var c=Rx.Observable.create(function(b){return a=b,function(){}});Object.defineProperty(this,"currentObserver",{get:function(){return a},configurable:!1}),Object.defineProperty(this,"currentObservable",{get:function(){return c},configurable:!1}),this.targetPlotRect=void 0,this.getCurrentPlotRect=function(){},this.stop=function(){b.isInAnimation&&(b.isInAnimation=!1),a&&(a.onNext({plotRect:b.getCurrentPlotRect(),isLast:!0}),a.onCompleted(),a=void 0),this.additionalStopRutines()},this.additionalStopRutines=function(){},this.animate=function(a,b){}},InteractiveDataDisplay.PanZoomAnimation=function(){this.base=InteractiveDataDisplay.AnimationBase,this.base();var a=this,b=void 0,c=void 0,d=void 0,e=new Date,f=void 0,g=void 0,h=void 0,i=0,j=void 0,k=void 0,l=0,m=0;this.getCurrentPlotRect=function(){return f},Object.defineProperty(this,"previousEstimatedPlotRect",{get:function(){return g},configurable:!1});var n=function(){var b=a.currentObserver;if(b){var g=new Date,j=g.getTime()-e.getTime(),n=k*j,o=d.x-f.x,p=d.y-f.y,q=Math.max(d.width/1e3,Math.sqrt(o*o+p*p)),r=f.x+q*n*h.x,s=f.y+q*n*h.y,t=(d.width-f.width)*n+f.width,u=(d.height-f.height)*n+f.height;e=g,o=r-c.x,p=s-c.y;var v=Math.sqrt(o*o+p*p),w=t-c.width,x=u-c.height;v>=i||Math.abs(w)>Math.abs(l)||Math.abs(x)>Math.abs(m)?(a.isInAnimation=!1,f=d,a.stop()):(f={x:r,y:s,width:t,height:u},a.currentPlotRect=f,b.onNext({plotRect:f,isLast:!1}))}},o=function(){n(),a.isInAnimation&&(j=setTimeout(function(){o()},1e3/60))};this.animate=function(b,e){1.2!=InteractiveDataDisplay.Gestures.zoomLevelFactor&&(InteractiveDataDisplay.Gestures.zoomLevelFactor=1.2),void 0!==j&&(clearTimeout(j),j=void 0),g=e;var n=b();c=void 0===f?n.plotRect:f,d=e,f=c,h={x:d.x-c.x,y:d.y-c.y},i=Math.sqrt(h.x*h.x+h.y*h.y),h=i>1e-10?{x:h.x/i,y:h.y/i}:{x:0,y:0},l=e.width-c.width,m=e.height-c.height,k=0!=l||0!=m?.008:.009,a.isInAnimation=!0,o()},this.additionalStopRutines=function(){void 0!==j&&(clearTimeout(j),j=void 0),a.isInAnimation=!1,b=void 0,c=void 0,startCS=void 0,d=void 0,e=new Date,f=void 0,g=void 0,h=void 0,i=0,startScreenCenter=void 0,previousFrameScreenCenter=void 0,endScreenCenter=void 0,j=void 0,l=0,m=0}},InteractiveDataDisplay.PanZoomAnimation.prototype=new InteractiveDataDisplay.AnimationBase,InteractiveDataDisplay.Utils.getPlotRectForMap=function(a,b){var c=85.05112878,d=void 0===b?{width:a.getWidth(),height:a.getHeight()}:b,e=a.getCenter(),f=d.width,g=d.height,h=30,i=a.tryLocationToPixel({latitude:0,longitude:e.longitude},Microsoft.Maps.PixelReference.control),j=a.tryLocationToPixel({latitude:0,longitude:e.longitude+h},Microsoft.Maps.PixelReference.control),k=j.x-i.x;0>k&&(k=i.x-a.tryLocationToPixel({latitude:0,longitude:e.longitude-h},Microsoft.Maps.PixelReference.control).x);var l=k/h,m=e.longitude-i.x/l,n=e.longitude+(f-i.x)/l,o=a.getBounds(),p=o.getNorth(),q=o.getSouth(),r=0;if(p>=c){p=c;var s=a.tryLocationToPixel({latitude:p,longitude:e.longitude},Microsoft.Maps.PixelReference.control);r=s.y}var t=0;if(-c>=q){q=-c;var u=a.tryLocationToPixel({latitude:q,longitude:e.longitude},Microsoft.Maps.PixelReference.control);t=g-u.y}var v=n-m;0>v&&(v=o.width);var w={y:q,x:m,width:v,height:p-q},x=InteractiveDataDisplay.mercatorTransform.dataToPlot(w.y),y=InteractiveDataDisplay.mercatorTransform.dataToPlot(w.y+w.height);if(w.y=x,w.height=y-x,0!=t||0!=r){var z=g-r-t,A=w.height/z,B=t*A,C=r*A,D=w.y-B,E=w.y+w.height+C;w.y=D,w.height=E-D}return w},InteractiveDataDisplay.BingMapsAnimation=function(a){this.base=InteractiveDataDisplay.AnimationBase,this.base();var b=this,c=a,d=void 0,e=void 0,f=new Date,g=void 0,h=void 0,i=void 0,j=0,k=void 0,l=void 0,m=0,n=0,o=!1;Object.defineProperty(this,"previousEstimatedPlotRect",{get:function(){return h},configurable:!1});var p=function(){var a=b.currentObserver;if(a){var c=new Date,h=c.getTime()-f.getTime(),k=l*h,m=e.x-g.x,n=e.y-g.y,o=Math.max(e.width/1e3,Math.sqrt(m*m+n*n)),p=g.x+o*k*i.x,q=g.y+o*k*i.y,r=(e.width-g.width)*k+g.width,s=(e.height-g.height)*k+g.height;f=c,m=p-d.x,n=q-d.y;var t=Math.sqrt(m*m+n*n);t>=j?(b.isInAnimation=!1,u(e),b.stop()):(g={x:p,y:q,width:r,height:s},b.currentPlotRect=g,u(g))}},q=function(){p(),b.isInAnimation&&(k=setTimeout(function(){q()},1e3/60))};this.animate=function(a,c,f){if(1.4!=InteractiveDataDisplay.Gestures.zoomLevelFactor&&(InteractiveDataDisplay.Gestures.zoomLevelFactor=1.4),void 0!==k&&(clearTimeout(k),k=void 0),h=c,b.isInAnimation=!0,f&&f.isFirstFrame&&w(!0),f&&"Pan"==f.gestureType){o=!1;var m=a();d=void 0===g?m.plotRect:g,e=c,g=d,i={x:e.x-d.x,y:e.y-d.y},j=Math.sqrt(i.x*i.x+i.y*i.y),i=j>1e-10?{x:i.x/j,y:i.y/j}:{x:0,y:0},l=.008,q()}else o=!0,u(c)};var r=function(a,b,c){var d=Math.max(1,Math.log(b.width/a.width*360/256)/Math.log(2)),e=InteractiveDataDisplay.mercatorTransform.plotToData(a.y),f=InteractiveDataDisplay.mercatorTransform.plotToData(a.y+a.height),g=Math.max(1,Math.log(b.height/(f-e)*180/256)/Math.log(2));return c===!0&&(d=Math.ceil(d)-1,g=Math.ceil(g)),Math.min(d,g)},s=function(a,b){return{width:360*b.width/(256*Math.pow(2,a)),height:180*b.height/(256*Math.pow(2,a))}};this.setMapView=function(a,b){var d=b;void 0===b&&(d={width:c.getWidth(),height:c.getHeight()});var e=r(a,d,!0),f=(c.getZoom(),{x:a.x+a.width/2,y:InteractiveDataDisplay.mercatorTransform.plotToData(a.y+a.height/2)});c.setView({center:new Microsoft.Maps.Location(f.y,f.x),zoom:e,animate:!1})};var t=0,u=function(a){var d,e=c.getZoom()+t;t=0,d=o?r(a,{width:c.getWidth(),height:c.getHeight()}):e;var f={x:a.x+a.width/2,y:InteractiveDataDisplay.mercatorTransform.plotToData(a.y+a.height/2)};if(o)if(e>1||d>e){var g=Math.round(d),i=s(g,{width:c.getWidth(),height:c.getHeight()});if(a.zoomOrigin)var j={x:a.zoomOrigin.x,y:InteractiveDataDisplay.mercatorTransform.plotToData(a.zoomOrigin.y)},k={x:j.x-f.x,y:j.y-f.y},l={x:i.width/a.width,y:i.height/a.height},m={x:j.x-k.x*l.x,y:j.y-k.y*l.y};else var m=f;c.setView({center:new Microsoft.Maps.Location(m.y,m.x),zoom:d,animate:!0})}else w(),h=b.getCurrentPlotRect(),b.stop();else c.setView({center:new Microsoft.Maps.Location(f.y,f.x),zoom:d,animate:!1})},v=function(){return InteractiveDataDisplay.Utils.getPlotRectForMap(c)};this.getCurrentPlotRect=function(){return v(c.getBounds(),c.getCenter())};var w=function(a){var c=b.currentObserver;if(void 0!==c){var d=b.getCurrentPlotRect(),e={plotRect:d,isLast:!1};void 0!==a&&(e.syncUpdate=a),c.onNext(e)}};Microsoft.Maps.Events.addHandler(c,"viewchange",function(a){w()}),Microsoft.Maps.Events.addHandler(c,"viewchangeend",function(a){h=b.getCurrentPlotRect(),o||!b.isInAnimation?b.stop():w()}),this.additionalStopRutines=function(){void 0!==k&&(clearTimeout(k),k=void 0),b.isInAnimation=!1,d=void 0,e=void 0,h=void 0,f=new Date,g=void 0,i=void 0,j=0,k=void 0,m=0,n=0}},InteractiveDataDisplay.BingMapsAnimation.prototype=new InteractiveDataDisplay.AnimationBase,InteractiveDataDisplay.Navigation=function(a,b){var c=a,d=this,e=b,f=void 0,g=void 0,h=void 0,i=void 0;Object.defineProperty(this,"animation",{get:function(){return h},set:function(a){d.stop(),h=a},configurable:!1});var j=InteractiveDataDisplay.NavigationUtils.calcPannedRect,k=InteractiveDataDisplay.NavigationUtils.calcZoomedRect,l=function(){var a=c.screenSize,b=c.coordinateTransform,d=b.getPlotRect({x:0,y:0,width:a.width,height:a.height});return{plotRect:d,screenSize:a,cs:b}},m=function(){return h?h.currentObservable.subscribe(function(a){a.isLast&&(c.isInAnimation=!1),e(a.plotRect,{syncUpdate:a.syncUpdate})},function(a){},function(){}):void 0};this.setVisibleRect=function(a,b,f){if(d.stop(),i=a,b)d.animation.isInAnimation||m(),c.isInAnimation=!0,d.animation.animate(l,a);else{var g=a;d.animation&&d.animation.constraint&&(g=d.animation.constraint(g)),e(g,f)}};var n=function(a){var b,f,g=c.screenSize,h=void 0!==d.animation?d.animation.previousEstimatedPlotRect:i;if(void 0!==h?(b=InteractiveDataDisplay.Utils.calcCSWithPadding(h,{width:g.width,height:g.height},{left:0,top:0,bottom:0,right:0},c.aspectRatio),f=h):(b=c.coordinateTransform,f=b.getPlotRect({x:0,y:0,width:g.width,height:g.height})),"Pin"==a.Type)return void(d.animation&&d.animation.isInAnimation&&d.stop());var n=void 0;if("Pan"==a.Type?(n=j(f,g,a),i=n):"Zoom"==a.Type&&(n=k(f,b,a),n.width<1e-9&&(n.width=f.width,n.x=f.x),n.height<1e-9&&(n.height=f.height,n.y=f.y),i=n),n)if(d.animation){var o=!d.animation.isInAnimation;o&&m(),c.isInAnimation=!0,d.animation.animate(l,n,{gestureType:a.Type,isFirstFrame:o})}else e(n)};this.stop=function(){c.isInAnimation=!1,i=void 0,d.animation&&d.animation.stop()},Object.defineProperty(this,"gestureSource",{get:function(){return f},set:function(a){f!=a&&(g&&g.dispose(),f=a,void 0!==f&&(g=f.subscribe(function(a){n(a)})))},configurable:!1}),d.animation=new InteractiveDataDisplay.PanZoomAnimation},InteractiveDataDisplay.NavigationUtils={},InteractiveDataDisplay.NavigationUtils.SuppressDefaultMultitouch=function(){if(navigator.userAgent.match(/(iPhone|iPod|iPad)/)&&document.addEventListener("touchmove",function(a){a.preventDefault()}),-1!=navigator.userAgent.indexOf("Mac")){var a=document.getElementsByTagName("body")[0];a.style.overflow="hidden"}},InteractiveDataDisplay.NavigationUtils.calcPannedRect=function(a,b,c){var d={x:a.width/b.width,y:a.height/b.height},e=c.xOffset*d.x,f=-c.yOffset*d.y;return{x:a.x-e,y:a.y-f,width:a.width,height:a.height}},InteractiveDataDisplay.NavigationUtils.calcZoomedRect=function(a,b,c){var d=b.getScale(),e=b.plotToScreenX(a.x+a.width/2),f=b.plotToScreenY(a.y+a.height/2),g=c.preventHorizontal?0:c.xOrigin-e,h=c.preventVertical?0:c.yOrigin-f,i={x:a.x+g/d.x,y:a.y-h/d.y,width:a.width,height:a.height},j=a.width*(c.preventHorizontal?1:c.scaleFactor),k=a.height*(c.preventVertical?1:c.scaleFactor),l=i.x+i.width/2-j/2,m=i.y+i.height/2-k/2;return{x:l-c.scaleFactor*g/d.x,y:m+c.scaleFactor*h/d.y,width:j,height:k,zoomOrigin:{x:b.screenToPlotX(c.xOrigin),y:b.screenToPlotY(c.yOrigin)}}},InteractiveDataDisplay.SharedRenderWorker=function(a,b){var c=!!window.Worker;!c&&window.console&&console.log("Web workers are not available");var d=null;try{d=c?new Worker(a):null}catch(e){console.error("Error creating Web worker from "+a+": "+e.message)}var f=!1,g=[],h=function(a,b){for(var c=g.length,d=0;c>d;d++)if(g[d].source==a)return g[d];if(!b){var e={source:a,pendingTask:void 0,index:c};return g.push(e),e}},i=function(a){var b=g.length,c=0;if(a){c=a.index;for(var d=c+1;b>d;d++)if(g[d].pendingTask)return g[d];for(var d=0;c>d;d++)if(g[d].pendingTask)return g[d];if(g[c].pendingTask)return g[c]}else for(var d=0;b>d;d++)if(g[d].pendingTask)return g[d]};d&&(d.onmessage=function(a){var c=a.data,e=g[c.sourceIndex],h=i(e);h?(f=!0,d.postMessage(h.pendingTask),h.pendingTask=void 0):f=!1,b&&b(e.source,c)},d.onerror=function(a){var b=a.message+" ("+a.filename+":"+a.lineno+")";"object"==typeof console&&console.log(b)}),this.enqueue=function(a,b){var c=h(b);a.sourceIndex=c.index,f?c.pendingTask=a:(f=!0,c.pendingTask=void 0,d.postMessage(a))},this.cancelPending=function(a){var b=h(a,!0);b&&(b.pendingTask=void 0)},c||(this.enqueue=function(a,b){},this.cancelPending=function(a){})},InteractiveDataDisplay.heatmapBackgroundRendererCodeBase64="SW50ZXJhY3RpdmVEYXRhRGlzcGxheSA9IHR5cGVvZiBJbnRlcmFjdGl2ZURhdGFEaXNwbGF5ID09ICd1bmRlZmluZWQnID8ge30gOiBJbnRlcmFjdGl2ZURhdGFEaXNwbGF5OwogCkludGVyYWN0aXZlRGF0YURpc3BsYXkuRGF0YVRyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhVG9QbG90LCBwbG90VG9EYXRhLCBkb21haW4sIHR5cGUpIHsKICAgIHRoaXMuZGF0YVRvUGxvdCA9IGRhdGFUb1Bsb3Q7CiAgICB0aGlzLnBsb3RUb0RhdGEgPSBwbG90VG9EYXRhOwoKICAgIHRoaXMuZG9tYWluID0gZG9tYWluIHx8IHsKICAgICAgICBpc0luRG9tYWluOiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgfTsKCiAgICB0aGlzLnR5cGUgPSB0eXBlOwp9OwoKdmFyIG1lcmNhdG9yX21heFBoaSA9IDg1LjA1MTEyODc4OyAvLzg3LjExNDc1NzYzNjMzODQ7IC8vIGRlZwp2YXIgbWVyY2F0b3JfUiA9IG1lcmNhdG9yX21heFBoaSAvIE1hdGgubG9nKE1hdGgudGFuKG1lcmNhdG9yX21heFBoaSAqIE1hdGguUEkgLyAzNjAuMCArIE1hdGguUEkgLyA0KSk7CkludGVyYWN0aXZlRGF0YURpc3BsYXkubWVyY2F0b3JUcmFuc2Zvcm0gPSBuZXcgSW50ZXJhY3RpdmVEYXRhRGlzcGxheS5EYXRhVHJhbnNmb3JtKAogICAgZnVuY3Rpb24gKHBoaV9kZWcpIHsKICAgICAgICBpZiAocGhpX2RlZyA+PSAtbWVyY2F0b3JfbWF4UGhpICYmIHBoaV9kZWcgPD0gbWVyY2F0b3JfbWF4UGhpKQogICAgICAgICAgICByZXR1cm4gbWVyY2F0b3JfUiAqIE1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkgKiAocGhpX2RlZyArIDkwKSAvIDM2MCkpOwogICAgICAgIGVsc2UgcmV0dXJuIHBoaV9kZWc7CiAgICB9LAogICAgZnVuY3Rpb24gKHkpIHsKICAgICAgICBpZiAoLW1lcmNhdG9yX21heFBoaSA8PSB5ICYmIHkgPD0gbWVyY2F0b3JfbWF4UGhpKSB7CiAgICAgICAgICAgIHJldHVybiAzNjAgKiBNYXRoLmF0YW4oTWF0aC5leHAoeSAvIG1lcmNhdG9yX1IpKSAvIE1hdGguUEkgLSA5MDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHk7CiAgICB9LAogICAgdW5kZWZpbmVkLAogICAgIm1lcmNhdG9yIgopOwoKCk1hdGguTE9HRTEwID0gTWF0aC5sb2coMTApOwoKSW50ZXJhY3RpdmVEYXRhRGlzcGxheS5sb2dUcmFuc2Zvcm0gPSBuZXcgSW50ZXJhY3RpdmVEYXRhRGlzcGxheS5EYXRhVHJhbnNmb3JtKAogICAgZnVuY3Rpb24gKHhfZCkgewogICAgICAgIHJldHVybiBNYXRoLmxvZyh4X2QpIC8gTWF0aC5MT0dFMTA7CiAgICB9LAogICAgZnVuY3Rpb24gKHhfcCkgewogICAgICAgIHJldHVybiBNYXRoLnBvdygxMCwgeF9wKTsKICAgIH0sCiAgICB7IGlzSW5Eb21haW46IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4ID4gMDsgfSB9LAogICAgImxvZzEwIgopOztzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChldmVudCkgew0KICAgIHZhciB4c2NhbGUgPSBldmVudC5kYXRhLnNjYWxlWCwgeG9mZnNldCA9IGV2ZW50LmRhdGEub2Zmc2V0WCwgeXNjYWxlID0gZXZlbnQuZGF0YS5zY2FsZVksIHlvZmZzZXQgPSBldmVudC5kYXRhLm9mZnNldFk7DQogICAgdmFyIGRhdGFUb1NjcmVlblgsIGRhdGFUb1NjcmVlblk7DQogICAgdmFyIGhhc2R0WCwgaGFzZHRZOw0KDQogICAgaWYgKHR5cGVvZiBldmVudC5kYXRhLnhEYXRhVHJhbnNmb3JtID09ICdzdHJpbmcnKSB7DQogICAgICAgIHZhciBkdCA9IGdldERhdGFUcmFuc2Zvcm0oZXZlbnQuZGF0YS54RGF0YVRyYW5zZm9ybSk7DQogICAgICAgIHZhciBmID0gZHQuZGF0YVRvUGxvdDsNCiAgICAgICAgaGFzZHRYID0gdHJ1ZTsNCiAgICAgICAgZGF0YVRvU2NyZWVuWCA9IGZ1bmN0aW9uICh4KSB7DQogICAgICAgICAgICByZXR1cm4gZih4KSAqIHhzY2FsZSArIHhvZmZzZXQ7DQogICAgICAgIH07DQogICAgfSBlbHNlIHsNCiAgICAgICAgaGFzZHRYID0gZmFsc2U7DQogICAgICAgIGRhdGFUb1NjcmVlblggPSBmdW5jdGlvbiAoeCkgew0KICAgICAgICAgICAgcmV0dXJuIHhzY2FsZSAqIHggKyB4b2Zmc2V0Ow0KICAgICAgICB9Ow0KICAgIH0NCiAgICBpZiAodHlwZW9mIGV2ZW50LmRhdGEueURhdGFUcmFuc2Zvcm0gPT0gJ3N0cmluZycpIHsNCiAgICAgICAgdmFyIGR0ID0gZ2V0RGF0YVRyYW5zZm9ybShldmVudC5kYXRhLnlEYXRhVHJhbnNmb3JtKTsNCiAgICAgICAgdmFyIGYgPSBkdC5kYXRhVG9QbG90Ow0KICAgICAgICBoYXNkdFkgPSB0cnVlOw0KICAgICAgICBkYXRhVG9TY3JlZW5ZID0gZnVuY3Rpb24gKHkpIHsNCiAgICAgICAgICAgIHJldHVybiB5b2Zmc2V0IC0gZih5KSAqIHlzY2FsZTsNCiAgICAgICAgfTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBoYXNkdFkgPSBmYWxzZTsNCiAgICAgICAgZGF0YVRvU2NyZWVuWSA9IGZ1bmN0aW9uICh5KSB7DQogICAgICAgICAgICByZXR1cm4geW9mZnNldCAtIHkgKiB5c2NhbGU7DQogICAgICAgIH07DQogICAgfQ0KDQogICAgdmFyIHdpZHRoID0gZXZlbnQuZGF0YS53aWR0aDsNCiAgICB2YXIgaGVpZ2h0ID0gZXZlbnQuZGF0YS5oZWlnaHQ7DQoNCiAgICBpZiAoZXZlbnQuZGF0YS54Lmxlbmd0aCAhPSBldmVudC5kYXRhLmYubGVuZ3RoKSB7DQogICAgICAgIHJlbmRlck1hdHJpeChldmVudC5kYXRhLmltYWdlLCB3aWR0aCwgaGVpZ2h0LCBldmVudC5kYXRhLngsIGV2ZW50LmRhdGEueSwgZXZlbnQuZGF0YS5mLCBldmVudC5kYXRhLmZtaW4sIGV2ZW50LmRhdGEuZm1heCwgZXZlbnQuZGF0YS5wYWxldHRlLCBldmVudC5kYXRhLnBsb3RSZWN0LCBkYXRhVG9TY3JlZW5YLCBkYXRhVG9TY3JlZW5ZLCBoYXNkdFgsIGhhc2R0WSk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgdmFyIHNjcmVlblRvRGF0YVgsIHNjcmVlblRvRGF0YVk7DQogICAgICAgIHhzY2FsZV9yID0gMSAvIHhzY2FsZTsNCiAgICAgICAgeXNjYWxlX3IgPSAxIC8geXNjYWxlOw0KICAgICAgICBpZiAoaGFzZHRYKSB7DQogICAgICAgICAgICB2YXIgcGxvdFRvRGF0YSA9IGR0LnBsb3RUb0RhdGE7DQogICAgICAgICAgICBzY3JlZW5Ub0RhdGFYID0gZnVuY3Rpb24gKHhzKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBsb3RUb0RhdGEoKHhzIC0geG9mZnNldCkgKiB4c2NhbGVfcik7DQogICAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgc2NyZWVuVG9EYXRhWCA9IGZ1bmN0aW9uICh4cykgew0KICAgICAgICAgICAgICAgIHJldHVybiAoeHMgLSB4b2Zmc2V0KSAqIHhzY2FsZV9yOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoaGFzZHRZKSB7DQogICAgICAgICAgICB2YXIgcGxvdFRvRGF0YSA9IGR0LnBsb3RUb0RhdGE7DQogICAgICAgICAgICBzY3JlZW5Ub0RhdGFZID0gZnVuY3Rpb24gKHlzKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHBsb3RUb0RhdGEoKHlvZmZzZXQgLSB5cykgKiB5c2NhbGVfcik7DQogICAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgc2NyZWVuVG9EYXRhWSA9IGZ1bmN0aW9uICh5cykgew0KICAgICAgICAgICAgICAgIHJldHVybiAoeW9mZnNldCAtIHlzKSAqIHlzY2FsZV9yOw0KICAgICAgICAgICAgfTsNCiAgICAgICAgfQ0KICAgICAgICByZW5kZXJHcmFkaWVudChldmVudC5kYXRhLmltYWdlLCB3aWR0aCwgaGVpZ2h0LCBldmVudC5kYXRhLngsIGV2ZW50LmRhdGEueSwgZXZlbnQuZGF0YS5mLCBldmVudC5kYXRhLmZtaW4sIGV2ZW50LmRhdGEuZm1heCwgZXZlbnQuZGF0YS5wYWxldHRlLCBldmVudC5kYXRhLnBsb3RSZWN0LCBkYXRhVG9TY3JlZW5YLCBzY3JlZW5Ub0RhdGFYLCBkYXRhVG9TY3JlZW5ZLCBzY3JlZW5Ub0RhdGFZLCBoYXNkdFgsIGhhc2R0WSk7DQogICAgfQ0KICAgIGV2ZW50LmRhdGEueCA9IHVuZGVmaW5lZDsNCiAgICBldmVudC5kYXRhLnkgPSB1bmRlZmluZWQ7DQogICAgZXZlbnQuZGF0YS5mID0gdW5kZWZpbmVkOw0KICAgIGV2ZW50LmRhdGEucGFsZXR0ZSA9IHVuZGVmaW5lZDsNCiAgICBzZWxmLnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEpOw0KfTsNCg0KdmFyIGdldERhdGFUcmFuc2Zvcm0gPSBmdW5jdGlvbiAodHlwZSkgew0KICAgIGlmICh0eXBlID09ICdtZXJjYXRvcicpDQogICAgICAgIHJldHVybiBJbnRlcmFjdGl2ZURhdGFEaXNwbGF5Lm1lcmNhdG9yVHJhbnNmb3JtOw0KICAgIHRocm93ICdVbmtub3duIGRhdGEgdHJhbnNmb3JtJzsNCn07DQoNCg0KdmFyIHJlbmRlck1hdHJpeCA9IGZ1bmN0aW9uIChpbWFnZSwgd2lkdGgsIGhlaWdodCwgeCwgeSwgZiwgZm1pbiwgZm1heCwgcGFsZXR0ZSwgcGxvdFJlY3QsIGRhdGFUb1NjcmVlblgsIGRhdGFUb1NjcmVlblksIGhhc0RhdGFUcmFuc2Zvcm1YLCBoYXNEYXRhVHJhbnNmb3JtWSkgew0KICAgIHZhciBuID0geC5sZW5ndGg7DQogICAgdmFyIG0gPSB5Lmxlbmd0aDsNCiAgICB2YXIgaW1hZ2VEYXRhID0gaW1hZ2UuZGF0YTsNCiAgICB2YXIgdyA9IHdpZHRoOw0KICAgIHZhciBoID0gaGVpZ2h0Ow0KDQogICAgdmFyIGkwLCBqMDsNCiAgICB2YXIgeDAsIHkwOyAvLyBpbiBkYXRhIHNwYWNlDQoNCg0KICAgIC8vIHByZWNvbXB1dGluZyB5IGluIHNjcmVlbiBjb29yZGluYXRlczoNCiAgICB2YXIgeXNjciA9IG5ldyBGbG9hdDMyQXJyYXkobSk7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyBpKyspDQogICAgICAgIHlzY3JbaV0gPSBkYXRhVG9TY3JlZW5ZKHlbaV0pIHwgMDsgLy8gZmxvb3I7DQoNCiAgICAvLyBzdGFydCBjZWxsDQogICAgdmFyIGxlZnRwID0gcGxvdFJlY3QueDsNCiAgICB2YXIgcmlnaHRwID0gbGVmdHAgKyBwbG90UmVjdC53aWR0aDsNCiAgICBpZiAoaGFzRGF0YVRyYW5zZm9ybVgpIHsNCiAgICAgICAgZm9yIChpMCA9IDA7IGkwIDwgbjsgaTArKykgew0KICAgICAgICAgICAgaWYgKGRhdGFUb1NjcmVlblgoeFtpMF0pID49IDApIHsNCiAgICAgICAgICAgICAgICBpZiAoaTAgPT0gMCkgaTArKzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGZvciAoaTAgPSAwOyBpMCA8IG47IGkwKyspIHsNCiAgICAgICAgICAgIGlmICh4W2kwXSA+PSBsZWZ0cCkgew0KICAgICAgICAgICAgICAgIGlmIChpMCA9PSAwKSBpMCsrOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChpMCA9PSBuKSByZXR1cm47DQoNCiAgICB2YXIgYm90dG9tcCA9IHBsb3RSZWN0Lnk7DQogICAgdmFyIHRvcHAgPSBib3R0b21wICsgcGxvdFJlY3QuaGVpZ2h0Ow0KICAgIGZvciAoajAgPSAwOyBqMCA8IG07IGowKyspIHsNCiAgICAgICAgaWYgKHlzY3JbajBdIDwgaCkgew0KICAgICAgICAgICAgaWYgKGowID09IDApIGowKys7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoajAgPT0gbSkgcmV0dXJuOw0KDQogICAgLy8gcmVuZGVyaW5nIGZyb20gbGVmdCB0byByaWdodCwgYm90dG9tIHRvIHRvcA0KICAgIHZhciBjZWxsTGVmdF9zID0gMCwgY2VsbFJpZ2h0X3MgPSAwOw0KDQogICAgdmFyIGlzTm9ybWFsaXplZCA9IHBhbGV0dGUuaXNOb3JtYWxpemVkOw0KICAgIHZhciBjb2xvcnMgPSBwYWxldHRlLmNvbG9yczsNCiAgICB2YXIgY29sTiA9IChjb2xvcnMubGVuZ3RoID4+IDIpIC0gMTsNCiAgICBpZiAoIWlzTm9ybWFsaXplZCkgew0KICAgICAgICBmbWF4ID0gcGFsZXR0ZS5yYW5nZS5tYXg7DQogICAgICAgIGZtaW4gPSBwYWxldHRlLnJhbmdlLm1pbjsNCiAgICB9DQogICAgdmFyIHBhbGV0dGVLID0gZm1heCAhPT0gZm1pbiA/IDEuMCAvIChmbWF4IC0gZm1pbikgOiAwOw0KDQogICAgZm9yICh2YXIgaSA9IGkwOyBpIDwgbiAmJiBjZWxsUmlnaHRfcyA8IHc7IGkrKykgew0KICAgICAgICAvLyBpMCBpcyB0aGUgcmlnaHQgdmlzaWJsZSBlZGdlIG9mIHRoZSBjZWxsDQogICAgICAgIHgwID0geFtpIC0gMV07DQogICAgICAgIHZhciB4MSA9IHhbaV07DQoNCiAgICAgICAgaWYgKHgwICE9IHgwIHx8IHgxICE9IHgxKSB7DQogICAgICAgICAgICBjZWxsUmlnaHRfcyA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGNlbGxSaWdodF9zKQ0KICAgICAgICAgICAgY2VsbExlZnRfcyA9IGNlbGxSaWdodF9zOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBjZWxsTGVmdF9zID0gTWF0aC5jZWlsKGRhdGFUb1NjcmVlblgoeDApKTsNCg0KICAgICAgICBjZWxsUmlnaHRfcyA9IE1hdGguY2VpbChkYXRhVG9TY3JlZW5YKHgxKSk7DQogICAgICAgIGlmIChjZWxsTGVmdF9zIDwgMCkgY2VsbExlZnRfcyA9IDA7DQogICAgICAgIGlmIChjZWxsUmlnaHRfcyA+PSB3KSBjZWxsUmlnaHRfcyA9IHc7DQoNCiAgICAgICAgLy9pZiAoaSA9PSBuIC0gMSkgY2VsbFJpZ2h0X3MrKzsNCiAgICAgICAgaWYgKGNlbGxSaWdodF9zIC0gY2VsbExlZnRfcyA9PSAwKSBjb250aW51ZTsNCg0KICAgICAgICB5MCA9IHlbajAgLSAxXTsNCiAgICAgICAgdmFyIGNlbGxCb3R0b21fcyA9IDAsDQogICAgICAgICAgICBjZWxsVG9wX3MgPSB5c2NyW2owIC0gMV07DQogICAgICAgIGZvciAodmFyIGogPSBqMDsgaiA8IG0gJiYgY2VsbEJvdHRvbV9zID49IDA7IGorKykgew0KICAgICAgICAgICAgeTAgPSB5W2ogLSAxXTsNCiAgICAgICAgICAgIHZhciB5MSA9IHlbal07DQoNCiAgICAgICAgICAgIGlmICh5MCAhPSB5MCB8fCB5MSAhPSB5MSkgew0KICAgICAgICAgICAgICAgIGNlbGxUb3BfcyA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYgKGNlbGxUb3BfcykNCiAgICAgICAgICAgICAgICBjZWxsQm90dG9tX3MgPSBjZWxsVG9wX3M7DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgY2VsbEJvdHRvbV9zID0geXNjcltqIC0gMV07DQogICAgICAgICAgICBjZWxsVG9wX3MgPSB5c2NyW2pdOw0KICAgICAgICAgICAgaWYgKGNlbGxUb3BfcyA8IDApIGNlbGxUb3BfcyA9IC0xOw0KICAgICAgICAgICAgaWYgKGNlbGxCb3R0b21fcyA+PSBoKSBjZWxsQm90dG9tX3MgPSBoIC0gMTsNCg0KICAgICAgICAgICAgaWYgKGNlbGxUb3BfcyAtIGNlbGxCb3R0b21fcyA9PSAwKSBjb250aW51ZTsNCg0KICAgICAgICAgICAgdmFyIF9mID0gZltpIC0gMV1baiAtIDFdOw0KICAgICAgICAgICAgaWYgKF9mICE9IF9mKSBjb250aW51ZTsNCiAgICAgICAgICAgIHZhciBwYWxldHRlVmFsID0gcGFsZXR0ZUsgKiAoX2YgLSBmbWluKTsNCiAgICAgICAgICAgIHZhciBrID0gKHBhbGV0dGVWYWwgKiBjb2xOKSB8IDA7DQogICAgICAgICAgICBpZiAoayA8IDApIGsgPSAwOw0KICAgICAgICAgICAgZWxzZSBpZiAoayA+IGNvbE4pIGsgPSBjb2xOOw0KICAgICAgICAgICAgayA9IGsgPDwgMjsNCg0KICAgICAgICAgICAgLy8gZmlsbHMgdGhlIGNlbGwgd2l0aCBzYW1lIGNvbG9yDQogICAgICAgICAgICBmb3IgKHZhciB5cyA9IGNlbGxUb3BfcyArIDE7IHlzIDw9IGNlbGxCb3R0b21fczsgeXMrKykgew0KICAgICAgICAgICAgICAgIHZhciBpbmRleCA9ICh3ICogeXMgKyBjZWxsTGVmdF9zKSA8PCAyOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHhzID0gY2VsbExlZnRfczsgeHMgPCBjZWxsUmlnaHRfczsgeHMrKykgew0KICAgICAgICAgICAgICAgICAgICBpbWFnZURhdGFbaW5kZXgrK10gPSBjb2xvcnNba107DQogICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YVtpbmRleCsrXSA9IGNvbG9yc1trICsgMV07DQogICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YVtpbmRleCsrXSA9IGNvbG9yc1trICsgMl07DQogICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YVtpbmRleCsrXSA9IGNvbG9yc1trICsgM107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKGNlbGxUb3BfcyA8PSAwKSBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoY2VsbFJpZ2h0X3MgPj0gdykgYnJlYWs7DQogICAgfQ0KfTsNCg0KDQp2YXIgcmVuZGVyR3JhZGllbnQgPSBmdW5jdGlvbiAoaW1hZ2UsIHdpZHRoLCBoZWlnaHQsIHgsIHksIGYsIGZtaW4sIGZtYXgsIHBhbGV0dGUsIHBsb3RSZWN0LCBkYXRhVG9TY3JlZW5YLCBzY3JlZW5Ub0RhdGFYLCBkYXRhVG9TY3JlZW5ZLCBzY3JlZW5Ub0RhdGFZLCBoYXNEYXRhVHJhbnNmb3JtWCwgaGFzRGF0YVRyYW5zZm9ybVkpIHsNCiAgICB2YXIgbiA9IHgubGVuZ3RoOw0KICAgIHZhciBtID0geS5sZW5ndGg7DQogICAgdmFyIGltYWdlRGF0YSA9IGltYWdlLmRhdGE7DQogICAgdmFyIHcgPSB3aWR0aDsNCiAgICB2YXIgaCA9IGhlaWdodDsNCg0KICAgIC8vIHByZWNvbXB1dGluZyB5IGluIHNjcmVlbiBjb29yZGluYXRlczoNCiAgICB2YXIgeXNjciA9IG5ldyBGbG9hdDMyQXJyYXkobSk7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtOyBpKyspDQogICAgICAgIHlzY3JbaV0gPSBkYXRhVG9TY3JlZW5ZKHlbaV0pIHwgMDsgLy8gZmxvb3I7DQoNCiAgICAvLyBwcmVwYXJpbmcgc2NyZWVuIHRvIGRhdGEgbWFwcGluZw0KICAgIHZhciBtYXBTY3JlZW5Ub0RhdGFYID0gbmV3IEZsb2F0MzJBcnJheSh3KTsNCiAgICBmb3IgKHZhciB4cyA9IDA7IHhzIDwgdzsgeHMrKykgew0KICAgICAgICBtYXBTY3JlZW5Ub0RhdGFYW3hzXSA9IHNjcmVlblRvRGF0YVgoeHMgKyAwLjUpOyAvLyB0b2RvOiBtYWtlIGlubGluZSB0cmFuc2Zvcm0gZm9yIGxpbmVhciBjYXNlDQogICAgfQ0KICAgIHZhciBtYXBTY3JlZW5Ub0RhdGFZID0gbmV3IEZsb2F0MzJBcnJheShoKTsNCiAgICBmb3IgKHZhciB5cyA9IDA7IHlzIDwgaDsgeXMrKykgew0KICAgICAgICBtYXBTY3JlZW5Ub0RhdGFZW3lzXSA9IHNjcmVlblRvRGF0YVkoeXMgKyAwLjUpOyAvLyB0b2RvOiBtYWtlIGlubGluZSB0cmFuc2Zvcm0gZm9yIGxpbmVhciBjYXNlDQogICAgfQ0KDQogICAgdmFyIGkwLCBqMDsNCiAgICB2YXIgeDAsIHkwOyAvLyBpbiBkYXRhIHNwYWNlDQoNCiAgICAvLyBzdGFydCBjZWxsDQogICAgdmFyIGxlZnRwID0gcGxvdFJlY3QueDsNCiAgICB2YXIgcmlnaHRwID0gbGVmdHAgKyBwbG90UmVjdC53aWR0aDsNCiAgICBpZiAoaGFzRGF0YVRyYW5zZm9ybVgpIHsNCiAgICAgICAgZm9yIChpMCA9IDA7IGkwIDwgbjsgaTArKykgew0KICAgICAgICAgICAgaWYgKGRhdGFUb1NjcmVlblgoeFtpMF0pID49IDApIHsNCiAgICAgICAgICAgICAgICBpZiAoaTAgPT0gMCkgaTArKzsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGZvciAoaTAgPSAwOyBpMCA8IG47IGkwKyspIHsNCiAgICAgICAgICAgIGlmICh4W2kwXSA+PSBsZWZ0cCkgew0KICAgICAgICAgICAgICAgIGlmIChpMCA9PSAwKSBpMCsrOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGlmIChpMCA9PSBuKSByZXR1cm47DQoNCiAgICB2YXIgYm90dG9tcCA9IHBsb3RSZWN0Lnk7DQogICAgdmFyIHRvcHAgPSBib3R0b21wICsgcGxvdFJlY3QuaGVpZ2h0Ow0KICAgIGZvciAoajAgPSAwOyBqMCA8IG07IGowKyspIHsNCiAgICAgICAgaWYgKHlzY3JbajBdIDwgaCkgew0KICAgICAgICAgICAgaWYgKGowID09IDApIGowKys7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoajAgPT0gbSkgcmV0dXJuOw0KDQogICAgLy8gcmVuZGVyaW5nIGZyb20gbGVmdCB0byByaWdodCwgYm90dG9tIHRvIHRvcA0KICAgIHZhciBjZWxsTGVmdF9zID0gMCwgY2VsbFJpZ2h0X3MgPSAwOw0KDQogICAgdmFyIGlzTm9ybWFsaXplZCA9IHBhbGV0dGUuaXNOb3JtYWxpemVkOw0KICAgIHZhciBjb2xvcnMgPSBwYWxldHRlLmNvbG9yczsNCiAgICB2YXIgY29sTiA9IChjb2xvcnMubGVuZ3RoID4+IDIpIC0gMTsNCiAgICBpZiAoIWlzTm9ybWFsaXplZCkgew0KICAgICAgICBmbWF4ID0gcGFsZXR0ZS5yYW5nZS5tYXg7DQogICAgICAgIGZtaW4gPSBwYWxldHRlLnJhbmdlLm1pbjsNCiAgICB9DQogICAgdmFyIHBhbGV0dGVLID0gZm1heCAhPT0gZm1pbiA/IDEuMCAvIChmbWF4IC0gZm1pbikgOiAwOw0KDQogICAgdmFyIGZsYiwgZmx0LCBmcnQsIGZyYjsNCiAgICB2YXIgZmksIGZpMTsNCg0KICAgIC8vIHJlbmRlcmluZyB0aGUgaW1hZ2UNCiAgICBmb3IgKHZhciBpID0gaTA7IGkgPCBuICYmIGNlbGxSaWdodF9zIDwgdzsgaSsrKSB7DQogICAgICAgIC8vIGkwIGlzIHRoZSByaWdodCB2aXNpYmxlIGVkZ2Ugb2YgdGhlIGNlbGwNCiAgICAgICAgeDAgPSB4W2kgLSAxXTsNCiAgICAgICAgdmFyIHgxID0geFtpXTsNCiAgICAgICAgaWYgKHgwICE9IHgwIHx8IHgxICE9IHgxKSB7IC8vIGEgIT0gYSAgZXF1aXYuIGlzTmFOKGEpDQogICAgICAgICAgICBjZWxsUmlnaHRfcyA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGNlbGxSaWdodF9zKQ0KICAgICAgICAgICAgY2VsbExlZnRfcyA9IGNlbGxSaWdodF9zOw0KICAgICAgICBlbHNlDQogICAgICAgICAgICBjZWxsTGVmdF9zID0gTWF0aC5jZWlsKGRhdGFUb1NjcmVlblgoeDApKTsNCiAgICAgICAgY2VsbFJpZ2h0X3MgPSBNYXRoLmNlaWwoZGF0YVRvU2NyZWVuWCh4MSkpOw0KICAgICAgICBpZiAoY2VsbExlZnRfcyA8IDApIGNlbGxMZWZ0X3MgPSAwOw0KICAgICAgICBpZiAoY2VsbFJpZ2h0X3MgPj0gdykgY2VsbFJpZ2h0X3MgPSB3Ow0KICAgICAgICBpZiAoY2VsbFJpZ2h0X3MgLSBjZWxsTGVmdF9zID09IDApIGNvbnRpbnVlOw0KDQogICAgICAgIHZhciBjZWxsQm90dG9tX3MgPSAwLCBjZWxsVG9wX3MgPSAwOw0KICAgICAgICBmaSA9IGZbaV07DQogICAgICAgIGZpMSA9IGZbaSAtIDFdOw0KICAgICAgICBmb3IgKHZhciBqID0gajA7IGogPCBtICYmIGNlbGxCb3R0b21fcyA+PSAwOyBqKyspIHsNCiAgICAgICAgICAgIHkwID0geVtqIC0gMV07DQogICAgICAgICAgICB2YXIgeTEgPSB5W2pdOw0KICAgICAgICAgICAgaWYgKHkwICE9IHkwIHx8IHkxICE9IHkxKSB7DQogICAgICAgICAgICAgICAgY2VsbFRvcF9zID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoY2VsbFRvcF9zKQ0KICAgICAgICAgICAgICAgIGNlbGxCb3R0b21fcyA9IGNlbGxUb3BfczsNCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICBjZWxsQm90dG9tX3MgPSB5c2NyW2ogLSAxXTsNCiAgICAgICAgICAgIGNlbGxUb3BfcyA9IHlzY3Jbal07DQogICAgICAgICAgICBpZiAoY2VsbFRvcF9zIDwgMCkgY2VsbFRvcF9zID0gLTE7DQogICAgICAgICAgICBpZiAoY2VsbEJvdHRvbV9zID49IGgpIGNlbGxCb3R0b21fcyA9IGggLSAxOw0KICAgICAgICAgICAgaWYgKGNlbGxCb3R0b21fcyAtIGNlbGxUb3BfcyA9PSAwKSBjb250aW51ZTsNCg0KICAgICAgICAgICAgLy8gZmlsbHMgdGhlIGNlbGwNCiAgICAgICAgICAgIGZsdCA9IGZpMVtqXTsNCiAgICAgICAgICAgIGZsYiA9IGZpMVtqIC0gMV07DQogICAgICAgICAgICBmcnQgPSBmaVtqXTsNCiAgICAgICAgICAgIGZyYiA9IGZpW2ogLSAxXTsNCg0KICAgICAgICAgICAgaWYgKGZsdCAhPSBmbHQgfHwgZmxiICE9IGZsYiB8fCBmcnQgIT0gZnJ0IHx8IGZyYiAhPSBmcmIpDQogICAgICAgICAgICAgICAgY29udGludWU7DQoNCiAgICAgICAgICAgIHZhciBreUxlZnQgPSAoZmx0IC0gZmxiKSAvICh5MSAtIHkwKTsNCiAgICAgICAgICAgIHZhciBreVJpZ2h0ID0gKGZydCAtIGZyYikgLyAoeTEgLSB5MCk7DQogICAgICAgICAgICBmb3IgKHZhciB5cyA9IGNlbGxUb3BfcyArIDE7IHlzIDw9IGNlbGxCb3R0b21fczsgeXMrKykgew0KICAgICAgICAgICAgICAgIHZhciBpbmRleCA9ICh3ICogeXMgKyBjZWxsTGVmdF9zKSA8PCAyOw0KICAgICAgICAgICAgICAgIHZhciBfeSA9IG1hcFNjcmVlblRvRGF0YVlbeXNdOw0KICAgICAgICAgICAgICAgIHZhciBmbGVmdCA9IGt5TGVmdCAqIChfeSAtIHkwKSArIGZsYjsNCiAgICAgICAgICAgICAgICB2YXIgZnJpZ2h0ID0ga3lSaWdodCAqIChfeSAtIHkwKSArIGZyYjsNCiAgICAgICAgICAgICAgICB2YXIga3ggPSAoZnJpZ2h0IC0gZmxlZnQpIC8gKHgxIC0geDApOw0KDQogICAgICAgICAgICAgICAgZm9yICh2YXIgeHMgPSBjZWxsTGVmdF9zOyB4cyA8IGNlbGxSaWdodF9zOyB4cysrKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBfeCA9IG1hcFNjcmVlblRvRGF0YVhbeHNdOw0KICAgICAgICAgICAgICAgICAgICB2YXIgX2YgPSBreCAqIChfeCAtIHgwKSArIGZsZWZ0Ow0KICAgICAgICAgICAgICAgICAgICB2YXIgcGFsZXR0ZVZhbCA9IHBhbGV0dGVLICogKF9mIC0gZm1pbik7DQogICAgICAgICAgICAgICAgICAgIHZhciBrID0gKHBhbGV0dGVWYWwgKiBjb2xOKSB8IDA7DQogICAgICAgICAgICAgICAgICAgIGlmIChrIDwgMCkgayA9IDA7DQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGsgPiBjb2xOKSBrID0gY29sTjsNCiAgICAgICAgICAgICAgICAgICAgayA9IGsgPDwgMjsNCg0KICAgICAgICAgICAgICAgICAgICAvL3ZhciBjb2xvciA9IGdldENvbG9yKHBhbGV0dGVWYWwpOw0KICAgICAgICAgICAgICAgICAgICAvL2lmICh4cyA9PSBjZWxsTGVmdF9zIHx8IHhzID09IGNlbGxSaWdodF9zIC0gMSB8fCAgLyogdW5jb21tZW50IHRvIGRyYXcgdGhlIGJvcmRlciBvZiBjZWxscyAqLw0KICAgICAgICAgICAgICAgICAgICAvLyAgICB5cyA9PSBjZWxsVG9wX3MgKyAxIHx8IHlzID09IGNlbGxCb3R0b21fcykNCiAgICAgICAgICAgICAgICAgICAgLy8gICAgY29sb3IgPSB7IGE6IDEsIHI6IDAsIGc6IDAsIGI6IDI1NSB9Ow0KDQogICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YVtpbmRleCsrXSA9IGNvbG9yc1trKytdOw0KICAgICAgICAgICAgICAgICAgICBpbWFnZURhdGFbaW5kZXgrK10gPSBjb2xvcnNbaysrXTsNCiAgICAgICAgICAgICAgICAgICAgaW1hZ2VEYXRhW2luZGV4KytdID0gY29sb3JzW2srK107DQogICAgICAgICAgICAgICAgICAgIGltYWdlRGF0YVtpbmRleCsrXSA9IGNvbG9yc1trXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoY2VsbFRvcF9zIDw9IDApIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIGlmIChjZWxsUmlnaHRfcyA+PSB3KSBicmVhazsNCiAgICB9DQp9Ow0K",
InteractiveDataDisplay.Figure=function(a,b){if(void 0!==b)throw"Figure cannot be a dependent plot";if(a){var c;a&&(c=$(""),c.css("z-index",InteractiveDataDisplay.ZIndexNavigationLayer).css("background-color","rgba(0,0,0,0)"));var d=a.children().toArray();c.appendTo(a),this.base=InteractiveDataDisplay.Plot,this.base(a,b,c);var e=this;c.dblclick(function(){e.master.fitToView()});var f=function(a){var b=a.css("position");return"static"==b?a.css("position","relative"):"inherit"==b&&a.css("position","relative"),(void 0===b||""==b)&&a.css("position","relative"),"relative"==a.css("position")},g=[],h=[],i=[],j=[],k=[],l=function(a,b,c){var d=$("");d.appendTo(e.host).addClass("idd-figure-container"),d.content=a,a.appendTo(d);var f=a.attr("data-idd-placement");if(a.attr("data-idd-axis")){var l=InteractiveDataDisplay.InitializeAxis(a,b);a.axis=l,a.dblclick(function(){"bottom"==f||"top"==f?e.master.fitToViewX():e.master.fitToViewY()})}var m=function(a){if(c){var b=p(c,a);a.splice(b.index,0,d)}else a.push(d)};"left"==f?m(g):"bottom"==f?m(h):"center"==f?m(i):"right"==f?m(k):"top"==f&&m(j),f&&d.attr("data-idd-placement",f)};this.getAxes=function(a){if(a){var b;if("top"==a?b=jQuery.grep(j,function(b){return b.content&&b.content.axis&&b.content.axis.mode==a?b.content.axis:void 0}):"bottom"==a?b=jQuery.grep(h,function(b){return b.content&&b.content.axis&&b.content.axis.mode==a?b.content.axis:void 0}):"left"==a?b=jQuery.grep(g,function(b){return b.content&&b.content.axis&&b.content.axis.mode==a?b.content.axis:void 0}):"right"==a&&(b=jQuery.grep(k,function(b){return b.content&&b.content.axis&&b.content.axis.mode==a?b.content.axis:void 0})),b&&b.length>0){for(var c=0;c0){for(var c=0;c0},p=function(a,b){for(var c=0;c0};this.removeDiv=function(a){if(void 0===a)throw"Unable to remove undefined object!";var b=this.host.children().toArray();if(!(o(a,b)||q(a,g)||q(a,h)||q(a,i)||q(a,k)||q(a,j)))throw"Specified div doesn't belong to figure!";var c=$(a);c.remove(),c.attr("data-idd-placement")&&("left"==c.attr("data-idd-placement")?g=n(g):"bottom"==c.attr("data-idd-placement")?h=n(h):"center"==c.attr("data-idd-placement")?i=n(i):"right"==c.attr("data-idd-placement")?k=n(k):"top"==c.attr("data-idd-placement")&&(j=n(j))),e.requestUpdateLayout()},this.addAxis=function(a,b,c,d){var e=void 0===b?"numeric":b;return m('',a,c,!1,d)};var r;this.measure=function(a){var b=(e.screenSize.width!==a.width||e.screenSize.height!==a.height,this.fit(a));r={x:0,y:0,width:a.width,height:a.height};var c=function(a,b,c,d,e,f){for(var g=0,h=a.length,i=h-1;i>=0;i--){var j=a[i],k=j.content;if(j.width(b),f&&j.css("top",d(g)),j.css("left",e),void 0!==k.axis){k.width(b);var l=k.axis;l.update(c);var m=k.height();j.height()!==m&&j.height(m),g+=j.height()}else g+=j.height();f||j.css("top",d(g))}return g},d=function(a,b,c,d,e,f){for(var g=0,h=a.length,i=h-1;i>=0;i--){var j=a[i],k=j.content;if(j.height(b),k.height(b),f&&j.css("left",d(g)),j.css("top",e),void 0!==k.axis){k.height(b);var l=k.axis;l.update(c);var m=k.width();j.width()!==m&&j.width(m),g+=j.width()}else g+=j.width();f||j.css("left",d(g))}return g},f=0,l=0,m=0;l=c(j,a.width,{min:b.x,max:b.x+b.width},function(a){return a},0,!0),m=c(h,a.width,{min:b.x,max:b.x+b.width},function(b){return a.height-b},0,!1),f=l+m;var n=0,o=0,p=0;o=d(g,a.height-f,{min:b.y,max:b.y+b.height},function(a){return a},l,!0),p=d(k,a.height-f,{min:b.y,max:b.y+b.height},function(b){return a.width-b},l,!1),n=o+p;var q={width:a.width-n,height:a.height-f};void 0!==e.mapControl&&e.mapControl.setOptions({width:q.width,height:q.height}),b=this.fit(q,!0),i.forEach(function(a){a.width(q.width),a.height(q.height),a.css("top",l),a.css("left",o)});var s=this.children;s.forEach(function(a){var b=a.host;b.width(q.width),b.height(q.height),b.css("top",l),b.css("left",o)});var t=0,u=0;if(t=c(j,q.width,{min:b.x,max:b.x+b.width},function(a){return a},o,!0),u=c(h,q.width,{min:b.x,max:b.x+b.width},function(b){return a.height-b},o,!1),t!=l)for(var v=l/t,w=0,x=0;x").prependTo(a),d=$('').prependTo(a),e=$('').prependTo(a);this.base=InteractiveDataDisplay.Figure,this.base(a,b);var f=this,g=this.get(c[0]);e.axis=g.xAxis=this.get(e[0]),d.axis=g.yAxis=this.get(d[0]);var h=$("").prependTo(this.centralPart),i=new InteractiveDataDisplay.Legend(this,h);h.css("float","right"),Object.defineProperty(this,"legend",{get:function(){return i},configurable:!1});var j={};InteractiveDataDisplay.Utils.readStyle(a,j);var k=j.isLegendVisible;k&&("true"==k?i.isVisible=!0:"false"==k&&(i.isVisible=!1));var l=function(){var a=InteractiveDataDisplay.Gestures.getGesturesStream(f.centralPart),b=InteractiveDataDisplay.Gestures.applyHorizontalBehavior(InteractiveDataDisplay.Gestures.getGesturesStream(e)),c=InteractiveDataDisplay.Gestures.applyVerticalBehavior(InteractiveDataDisplay.Gestures.getGesturesStream(d));f.navigation.gestureSource=a.merge(b.merge(c))};this.onDataTranformChangedCore=function(a){if("y"==a){var b=InteractiveDataDisplay.TicksRenderer.getAxisType(f.yDataTransform);if(d.axis.host.attr("data-idd-axis")==b)"log"!=b&&(d.axis.dataTransform=f.yDataTransform);else{var c=d;d=f.addAxis("left",b,!0,d[0]),f.removeDiv(c[0]),c.axis.destroy(),g.yAxis=this.get(d[0]),l()}f.enumAll(f,function(a){a!=f&&(a.yDataTransform=f.yDataTransform)})}else if("x"==a){var b=InteractiveDataDisplay.TicksRenderer.getAxisType(f.xDataTransform);if(e.axis.host.attr("data-idd-axis")==b)"log"!=b&&(e.axis.dataTransform=f.xDataTransform);else{var c=e;e=f.addAxis("bottom",b,!0,e[0]),f.removeDiv(c[0]),c.axis.destroy(),g.xAxis=this.get(e[0]),l()}f.enumAll(f,function(a){a!=f&&(a.xDataTransform=f.xDataTransform)})}},this.onChildrenChanged=function(a){"add"==a.type&&(f.xDataTransform&&(a.plot.xDataTransform=f.xDataTransform),f.yDataTransform&&(a.plot.yDataTransform=f.yDataTransform))},l()}},InteractiveDataDisplay.Chart.prototype=new InteractiveDataDisplay.Figure,InteractiveDataDisplay.CustomMarkerShape=function(a,b,c){this.draw=a,this.getBoundingBox=b,this.getLegendItem=c},InteractiveDataDisplay.MaxMarkersPerAnimationFrame=3e3,InteractiveDataDisplay.Markers=function(div,master){var initializer=InteractiveDataDisplay.Utils.getDataSourceFunction(div,InteractiveDataDisplay.readCsv),initialData=initializer(div);if(this.base=InteractiveDataDisplay.CanvasPlot,this.base(div,master),div){var _data={},_shape,_colorPalette,_sizePalette,_colorRange,_sizeRange,_dataUpdated=!1,_markerPushpins=void 0,_pushpinsVisible=!1,that=this,_preRender,iconDiv=$("");iconDiv.width(10),iconDiv.height(10);var iconCv=$("").appendTo(iconDiv),iconCtx=iconCv[0].getContext("2d");iconCtx.fillStyle="rgba(100,100,100,0.3)",iconCtx.fillRect(0,0,10,10);var defaultShape="box",defaultColor="#4169ed",defaultBorder="#000000",defaultSize=10;initialData&&(_data.x=initialData.x,_data.y=initialData.y,_data.size="undefined"!=typeof initialData.size?initialData.size:defaultSize,_data.color="undefined"!=typeof initialData.color?initialData.color:defaultColor,_data.border="undefined"!=typeof initialData.border?initialData.border:defaultBorder,_shape="undefined"!=typeof initialData.shape?initialData.shape:defaultShape,_colorPalette="undefined"!=typeof initialData.colorPalette?initialData.colorPalette:void 0,_sizePalette="undefined"!=typeof initialData.sizePalette?initialData.sizePalette:void 0),this.draw=function(data,titles){var y2=data.y;if(!y2)throw"Data series y is undefined";var n=y2.length;if(data.x||(data.x=InteractiveDataDisplay.Utils.range(0,n-1)),n!=data.x.length)throw"Data series x and y have different lengths";for(var prop in data)"shape"==prop&&"undefined"!=data[prop]?_shape=data[prop]:"sizePalette"==prop&&"undefined"!=data[prop]?_sizePalette=data[prop]:"colorPalette"==prop&&"undefined"!=data[prop]?_colorPalette=data[prop]:_data[prop]="undefined"!=data[prop]?data[prop]:_data[prop];_colorPalette&&_colorPalette.isNormalized&&(_colorRange=InteractiveDataDisplay.Utils.getMinMax(_data.color)),_sizePalette&&_sizePalette.isNormalized&&(_sizeRange=InteractiveDataDisplay.Utils.getMinMax(_data.size)),"string"==typeof _shape&&(isStandartShape(_shape)||(_shape=eval(_shape))),_dataUpdated=!0,this.invalidateLocalBounds(),this.requestNextFrameOrUpdate(),this.setTitles(titles,!0),this.fireAppearanceChanged()},this.computeLocalBounds=function(a,b){var c=this.xDataTransform&&this.xDataTransform.dataToPlot,d=this.yDataTransform&&this.yDataTransform.dataToPlot;return InteractiveDataDisplay.Utils.getBoundingBoxForArrays(_data.x,_data.y,c,d)},this.getLocalPadding=function(){var a=0;if(_shape&&"function"==typeof _shape.getPadding)return _shape.getPadding(_data);var b=_data.size;return a=InteractiveDataDisplay.Utils.isArray(b)?_sizePalette?_sizePalette.sizeRange.max/2:InteractiveDataDisplay.Utils.getMinMax(b).max/2:b/2,{left:a,right:a,top:a,bottom:a}};var isStandartShape=function(a){if("string"==typeof a){var b=a.toLowerCase();return"box"==b?1:"circle"==b?2:"diamond"==b?3:"cross"==b?4:"triangle"==b?5:!1}return!1};this.renderCore=function(a,b){InteractiveDataDisplay.Markers.prototype.renderCore.call(this,a,b);var c=_data.x,d=_data.y;if(void 0!==c&&void 0!=d){var e=d.length;if(0!=e){var f=this.getTransform(),g=f.dataToScreenX,h=f.dataToScreenY,i=b.width,j=b.height,k=!(that.master.isInAnimation&&void 0!==that.master.mapControl);if(void 0!==that.mapControl){if(_dataUpdated||void 0===_markerPushpins){if(void 0!==_markerPushpins&&(_markerPushpins.forEach(function(a){var b=that.mapControl.entities.indexOf(a);b>=0&&that.mapControl.entities.removeAt(b)}),_markerPushpins=void 0),void 0!==that.mapControl&&e<=InteractiveDataDisplay.MaxMarkersPerAnimationFrame){_markerPushpins=[];for(var l=0;e>l;l++){var m=new Microsoft.Maps.Pushpin(new Microsoft.Maps.Location(d[l],c[l]),{visible:!1,htmlContent:'',anchor:new Microsoft.Maps.Point(5,5)});_markerPushpins.push(m),that.mapControl.entities.push(m)}}_dataUpdated=!1}that.master.isInAnimation===!0&&void 0!==_markerPushpins?_pushpinsVisible===!1&&(_markerPushpins.forEach(function(a){a.setOptions({visible:!0})}),_pushpinsVisible=!0):_pushpinsVisible===!0&&(_markerPushpins.forEach(function(a){a.setOptions({visible:!1})}),_pushpinsVisible=!1)}if(k){var n={};for(var o in _data)n[o]=_data[o];_preRender&&_preRender(n,a,b,f,t);for(var o in n){var p=n[o];n[o]={value:p,isArray:InteractiveDataDisplay.Utils.isArray(p)}}if(c=n.x.value,d=n.y.value,void 0===c||void 0==d)return;if(e=d.length,0==e)return;var q,r,s,t=this.getContext(!0),l=0,u=n.color.value,v=n.color.isArray,w=n.size.isArray,x=_colorPalette&&_colorPalette.isNormalized,y=_sizePalette&&_sizePalette.isNormalized;v||(t.strokeStyle=u,t.fillStyle=u);var z=!1;if(n.border.value&&"none"!==n.border.value&&(z=!0,t.strokeStyle=n.border.value),"object"==typeof _shape){for(var A=_shape.draw;e>l;l++)if(q=c[l],r=d[l],q==q&&r==r){var B={};for(var o in n){var p=n[o];p.isArray?B[o]=p.value[l]:B[o]=p.value}if(w){if(s=B.size,s!=s)continue;_sizePalette&&(y&&(s=(s-_sizeRange.min)/(_sizeRange.max-_sizeRange.min)),B.size=_sizePalette.getSize(s))}if(v){if(u=B.color,u!=u)continue;_colorPalette&&(x&&(u=(u-_colorRange.min)/(_colorRange.max-_colorRange.min)),C=_colorPalette.getRgba(u),B.color="rgba("+C.r+","+C.g+","+C.b+","+C.a+")")}A(B,a,b,f,t)}}else for(var C,D,E=isStandartShape(_shape);e>l;l++)if(q=c[l],r=d[l],q==q&&r==r){var B={};for(var o in n){var p=n[o];p.isArray?B[o]=p.value[l]:B[o]=p.value}if(w){if(s=B.size,s!=s)continue;_sizePalette&&(y&&(s=(s-_sizeRange.min)/(_sizeRange.max-_sizeRange.min)),B.size=_sizePalette.getSize(s))}if(v){if(u=B.color,u!=u)continue;_colorPalette&&(x&&(u=(u-_colorRange.min)/(_colorRange.max-_colorRange.min)),C=_colorPalette.getRgba(u),B.color="rgba("+C.r+","+C.g+","+C.b+","+C.a+")"),t.fillStyle=B.color}D=g(B.x),y1=h(B.y),s=B.size;var F=s/2;if(!(D-F>i||0>D+F||y1-F>j||y1+F<0))switch(E){case 1:t.fillRect(D-F,y1-F,s,s),z&&t.strokeRect(D-F,y1-F,s,s);break;case 2:t.beginPath(),t.arc(D,y1,F,0,2*Math.PI),t.fill(),z&&t.stroke();break;case 3:t.beginPath(),t.moveTo(D-F,y1),t.lineTo(D,y1-F),t.lineTo(D+F,y1),t.lineTo(D,y1+F),t.closePath(),t.fill(),z&&t.stroke();break;case 4:var G=s/3,H=G/2;z?(t.beginPath(),t.moveTo(D-F,y1-H),t.lineTo(D-H,y1-H),t.lineTo(D-H,y1-F),t.lineTo(D+H,y1-F),t.lineTo(D+H,y1-H),t.lineTo(D+F,y1-H),t.lineTo(D+F,y1+H),t.lineTo(D+H,y1+H),t.lineTo(D+H,y1+F),t.lineTo(D-H,y1+F),t.lineTo(D-H,y1+H),t.lineTo(D-F,y1+H),t.closePath(),t.fill(),t.stroke()):(t.fillRect(D-H,y1-F,G,s),t.fillRect(D-F,y1-H,s,G));break;case 5:t.beginPath(),t.moveTo(D-F,y1+F),t.lineTo(D,y1-F),t.lineTo(D+F,y1+F),t.closePath(),t.fill(),z&&t.stroke()}}}}}},this.findToolTipMarkers=function(a,b,c,d){var e=[],f=_data.x,g=_data.y;if(void 0==f||void 0==g)return e;var h=f.length,i=g.length;if(0==h||0==i)return e;var j,k=0,l=_data.size,m=InteractiveDataDisplay.Utils.isArray(l),n=(InteractiveDataDisplay.Utils.isArray(_data.color),_sizePalette&&_sizePalette.isNormalized),o=this.getTransform(),p=o.dataToScreenX(a),q=o.dataToScreenY(b);if("object"==typeof _shape){if("function"==typeof _shape.hitTest)for(var r={x:p,y:q},s={x:a,y:b},k=0;h>k;k++){var t={};for(var u in _data){var v=_data[u];InteractiveDataDisplay.Utils.isArray(v)?t[u]=v[k]:t[u]=v}if(m&&(l=t.size,_sizePalette&&(n&&(l=(l-_sizeRange.min)/(_sizeRange.max-_sizeRange.min)),t.size=_sizePalette.getSize(l))),_shape.hitTest(t,o,r,s)){var t={};for(var u in _data){var v=_data[u];InteractiveDataDisplay.Utils.isArray(v)&&(t[u]=v[k])}t.index=k,e.push(t)}}}else for(var w=function(a,b){for(var c=function(a,b,c){var d={x:c.x-b.x,y:c.y-b.y},e={x:a.x-b.x,y:a.y-b.y},f=d.x*e.y-d.y*e.x;return f>0?1:0>f?2:0},d=b.length,e=0;d>e;e++)if(1!=c(a,b[e],b[(e+1)%d]))return!1;return!0},x=isStandartShape(_shape);h>k;k++){var y=f[k],z=g[k];if(y==y&&z==z){m&&(l=_data.size[k],_sizePalette&&(n&&(l=(l-_sizeRange.min)/(_sizeRange.max-_sizeRange.min)),l=_sizePalette.getSize(l))),j=o.dataToScreenX(y),y1=o.dataToScreenY(z);var A=l/2;if(p>=j-A&&j+A>=p&&q>=y1-A&&q<=y1+A){var t={};for(var u in _data){var v=_data[u];InteractiveDataDisplay.Utils.isArray(v)&&(t[u]=v[k])}switch(t.index=k,x){case 1:e.push(t);break;case 2:(j-p)*(j-p)+(y1-q)*(y1-q)<=A*A&&e.push(t);break;case 3:w({x:p,y:q},[{x:j-A,y:y1},{x:j,y:y1-A},{x:j+A,y:y1},{x:j,y:y1+A}])&&e.push(t);break;case 4:var B=l/3,C=B/2;(w({x:p,y:q},[{x:j-C,y:y1+A},{x:j-C,y:y1-A},{x:j+C,y:y1-A},{x:j+C,y:y1+A}])||w({x:p,y:q},[{x:j-A,y:y1+C},{x:j-A,y:y1-C},{x:j+A,y:y1-C},{x:j+A,y:y1+C}]))&&e.push(t);break;case 5:w({x:p,y:q},[{x:j-A,y:y1+A},{x:j,y:y1-A},{x:j+A,y:y1+A}])&&e.push(t)}}}}return e},this.getTooltip=function(a,b,c,d){var e=this,f=e.findToolTipMarkers(a,b,c,d),g=function(a){var b=void 0;for(var c in a)if(a.hasOwnProperty(c)){var d=e.getTitle(c);b?b+="
"+d+": "+a[c]:b=""+d+": "+a[c]}return""+b+"
"};if(f.length>0){var h=""+e.name+"";return f.forEach(function(a){h+="
"+g(a)}),""+h+"
"}},this.onDataTransformChanged=function(a){this.invalidateLocalBounds(),InteractiveDataDisplay.Markers.prototype.onDataTransformChanged.call(this,a)},Object.defineProperty(this,"color",{get:function(){return _data.color},set:function(a){a!=_data.color&&(_data.color=a,this.fireAppearanceChanged("color"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"colorPalette",{get:function(){return _colorPalette},set:function(a){a!=_colorPalette&&(_colorPalette=a,a.isNormalized&&(_colorRange=InteractiveDataDisplay.Utils.getMinMax(_data.color)),this.fireAppearanceChanged("colorPalette"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"size",{get:function(){return _data.size},set:function(a){a!=_data.size&&(_data.size=a,this.fireAppearanceChanged("size"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"sizePalette",{get:function(){return _sizePalette},set:function(a){a!=_sizePalette&&(_sizePalette=a,a.isNormalized&&(_sizeRange=InteractiveDataDisplay.Utils.getMinMax(_data.size)),this.fireAppearanceChanged("sizePalette"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"shape",{get:function(){return _shape},set:function(a){a!=_shape&&(_shape=a,this.fireAppearanceChanged("shape"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"border",{get:function(){return _data.border},set:function(a){a!=_data.border&&(_data.border=a,this.fireAppearanceChanged("border"),this.requestNextFrameOrUpdate())},configurable:!1}),Object.defineProperty(this,"preRender",{get:function(){return _preRender},set:function(a){a!=_preRender&&(_preRender=a,this.fireAppearanceChanged("preRender"),this.requestNextFrameOrUpdate())},configurable:!1}),this.getLegend=function(){var a=this,b=$(""),c=$("").appendTo(b),d=14;document.defaultView&&document.defaultView.getComputedStyle&&(d=parseFloat(document.defaultView.getComputedStyle(b[0],null).getPropertyValue("font-size"))),(isNaN(d)||0==d)&&(d=14);var e=$("").appendTo(c),f=!0,g=1.5*d,h=g/2+1,j=h;e[0].width=e[0].height=g+2;var k=e[0].style,l=e.get(0).getContext("2d"),m=$("").appendTo(c),n=function(){m.text(a.name)};n();var o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F=0,G=0,H=0,I=function(){if(x=InteractiveDataDisplay.Utils.isArray(_data.size)){if(y=g,_sizePalette){var c=a.getTitle("size");if(0==H){A=$("").appendTo(b),D=$("").text(c).appendTo(A),B=A[0].style;var d=$("").appendTo(A);C=new InteractiveDataDisplay.SizePaletteViewer(d),H=2}else D.text(c);C.palette=_sizePalette,_sizePalette.isNormalized&&(C.dataRange=_sizeRange),1==H&&(B.display="block",H=2)}}else y=Math.min(_data.size,g),2==H&&(B.display="none",H=1);z=y/2},J=function(){if(q=InteractiveDataDisplay.Utils.isArray(_data.color),t=!1,q&&_colorPalette){var c=a.getTitle("color");if(0==G){u=$("").appendTo(b),E=$("").text(c).appendTo(u),v=u[0].style;var d=$("").appendTo(u);w=new InteractiveDataDisplay.ColorPaletteViewer(d),G=2}else E.text(c);w.palette=_colorPalette,_colorPalette.isNormalized&&(w.dataRange=_colorRange),1==G&&(v.display="block",G=2)}else 2==G&&(v.display="none",G=1);q?(s="#000000",r="#ffffff",t=!0):(r=_data.color,s=r,_data.border&&(t=!0,s=_data.border))},K=function(){if("object"==typeof _shape){if(_shape.getLegendItem){var a={size:y,color:r,border:s};for(var b in _data)if("size"!=b&&"color"!=b&&"border"!=b){var d=_data[b];InteractiveDataDisplay.Utils.isArray(d)?a[b]=d[i]:a[b]=d}if(0==F)o=_shape.getLegendItem(a),c[0].insertBefore(o[0],name[0]);else{var e=_shape.getLegendItem(a);o.replaceWith(e),o=e}p=o[0].style,F=2}f&&(k.display="none",f=!1)}else{2==F&&(p.display="none",F=1),l.clearRect(0,0,g+2,g+2),l.strokeStyle=s,l.fillStyle=r;var m=isStandartShape(_shape);switch(m){case 1:l.fillRect(h-z,j-z,y,y),t&&l.strokeRect(h-z,j-z,y,y);break;case 2:l.beginPath(),l.arc(h,j,z,0,2*Math.PI),l.fill(),t&&l.stroke();break;case 3:l.beginPath(),l.moveTo(h-z,j),l.lineTo(h,j-z),l.lineTo(h+z,j),l.lineTo(h,j+z),l.closePath(),l.fill(),t&&l.stroke();break;case 4:var n=y/3,q=n/2;t?(l.beginPath(),l.moveTo(h-z,j-q),l.lineTo(h-q,j-q),l.lineTo(h-q,j-z),l.lineTo(h+q,j-z),l.lineTo(h+q,j-q),l.lineTo(h+z,j-q),l.lineTo(h+z,j+q),l.lineTo(h+q,j+q),l.lineTo(h+q,j+z),l.lineTo(h-q,j+z),l.lineTo(h-q,j+q),l.lineTo(h-z,j+q),l.closePath(),l.fill(),l.stroke()):(l.fillRect(h-q,j-z,n,y),l.fillRect(h-z,j-q,y,n));break;case 5:l.beginPath(),l.moveTo(h-z,j+z),l.lineTo(h,j-z),l.lineTo(h+z,j+z),l.closePath(),l.fill(),t&&l.stroke()}f||(k.display="inline-block",f=!0)}};J(),I(),K();var a=this;this.host.bind("appearanceChanged",function(a,b){b&&"name"!=b||n(),b&&"color"!=b&&"colorPalette"!=b||J(),b&&"size"!=b&&"sizePalette"!=b||I(),K()});var L=function(){a.host.unbind("appearanceChanged"),b[0].innerHTML="",b.removeClass("idd-legend-item")};return{div:b,onLegendRemove:L}},initialData&&"undefined"!=typeof initialData.y&&this.draw(initialData)}},InteractiveDataDisplay.Markers.prototype=new InteractiveDataDisplay.CanvasPlot,InteractiveDataDisplay.AdaptMarkerSize=function(a,b,c,d,e){for(var f,g,h=0,i=a.x,j=a.y,k=0,l=i.length;l>k;k++)f=i[k],g=j[k],f>=b.x&&f<=b.x+b.width&&g>=b.y&&g<=b.y+b.height&&h++;var m=.2,n=15,o=100,p=Math.sqrt(m*b.width*b.height/h);p=d.dataToScreenX(p)-d.dataToScreenX(0),n>p?p=n:p>o&&(p=o),a.size=p},InteractiveDataDisplay.Area=function(a,b){var c=this,d="rgba(0,0,0,0.2)",e=InteractiveDataDisplay.Utils.getDataSourceFunction(a,InteractiveDataDisplay.readCsv),f=e(a);this.base=InteractiveDataDisplay.CanvasPlot,this.base(a,b);var g=[],h=[],i=[],j=d;f&&(j="undefined"!=typeof f.fill?f.fill:d),this.draw=function(a){var b=a.y1;if(!b)throw"Data series y1 is undefined";var c=b.length,e=a.y2;if(!e)throw"Data series y2 is undefined";if(e.length!==c)throw"Data series y1 and y2 have different lengths";var f=a.x;if(f||(f=InteractiveDataDisplay.Utils.range(0,c-1)),f.length!==c)throw"Data series x and y1, y2 have different lengths";h=b,i=e,g=f,j="undefined"!=typeof a.fill?a.fill:d,this.invalidateLocalBounds(),this.requestNextFrameOrUpdate(),this.fireAppearanceChanged()},this.computeLocalBounds=function(){var a=this.xDataTransform&&this.xDataTransform.dataToPlot,b=this.yDataTransform&&this.yDataTransform.dataToPlot,c=InteractiveDataDisplay.Utils.getBoundingBoxForArrays(g,h,a,b),d=InteractiveDataDisplay.Utils.getBoundingBoxForArrays(g,i,a,b);return InteractiveDataDisplay.Utils.unionRects(c,d)},this.getLocalPadding=function(){return{left:0,right:0,top:0,bottom:0}},this.renderCore=function(a,b){InteractiveDataDisplay.Area.prototype.renderCore.call(this,a,b);var d=c.getContext(!0);if(void 0!==g&&void 0!=h&&void 0!=i){var e=h.length;if(0!=e){var f=c.getTransform(),k=f.dataToScreenX,l=f.dataToScreenY;b.width,b.height;d.fillStyle=j;for(var m=[],n=void 0,o=0;e>o;o++)isNaN(g[o])||isNaN(h[o])||isNaN(i[o])?void 0===n?n=o:(m.push([n,o]),n=void 0):void 0===n?n=o:o===e-1&&(m.push([n,o]),n=void 0);for(var p=m.length,o=0;p>o;o++){d.beginPath();var q=m[o];d.moveTo(k(g[q[0]]),l(h[q[0]]));for(var r=q[0]+1;r<=q[1];r++)d.lineTo(k(g[r]),l(h[r]));for(var r=q[1];r>=q[0];r--)d.lineTo(k(g[r]),l(i[r]));d.fill()}}}};this.onDataTransformChanged=function(a){this.invalidateLocalBounds(),InteractiveDataDisplay.Area.prototype.onDataTransformChanged.call(this,a)},f&&f.x&&f.y1&&f.y2&&this.draw(f)},InteractiveDataDisplay.Area.prototype=new InteractiveDataDisplay.CanvasPlot,InteractiveDataDisplay.heatmapBackgroundRenderer=new InteractiveDataDisplay.SharedRenderWorker(function(){var a;if("undefined"==typeof InteractiveDataDisplay.heatmapBackgroundRendererCodeBase64||/PhantomJS/.test(window.navigator.userAgent))a="idd.heatmapworker.js";else{var b=new Blob([window.atob(InteractiveDataDisplay.heatmapBackgroundRendererCodeBase64)],{type:"text/javascript"});a=window.URL.createObjectURL(b)}return a}(),function(a,b){a.onRenderTaskCompleted(b)}),InteractiveDataDisplay.Heatmap=function(a,b){var c=InteractiveDataDisplay.Utils.getDataSourceFunction(a,InteractiveDataDisplay.readCsv2d),d=c(a);if(d&&"undefined"!=typeof d.y&&"undefined"!=typeof d.f){var e=d.y,f=d.f,g=e.length,h=f.length;if(g>1&&h>0&&e[0]>e[1]){e.reverse();for(var i=0;g>i;i++)f[i].reverse()}}if(this.base=InteractiveDataDisplay.CanvasPlot,this.base(a,b),a){var j,k,l,m,n,o,p,q,r,s,t,u=function(a){if(a)try{r="string"==typeof a?InteractiveDataDisplay.ColorPalette.parse(a):a,t=InteractiveDataDisplay.ColorPalette.toArray(r,512)}catch(b){window.console&&console.error("Failed to initialize the palette")}},v=function(a){p=Math.min(1,Math.max(0,a))},w=document.createElement("canvas");v(d&&"undefined"!=typeof d.opacity?parseFloat(d.opacity):1),u(d&&"undefined"!=typeof d.palette?d.palette:InteractiveDataDisplay.palettes.grayscale);var x,y=function(){var a=m.length;if(!(1>a)){var b=m[0].length;if(!(1>b)){n=o=m[0][0];for(var c=0;a>c;c++)for(var d=m[c],e=0;b>e;e++){var f=d[e];f==f&&(f>o?o=f:n>f&&(n=f))}}}},z=this;if(this.onRenderTaskCompleted=function(a){x=a,(w.width!==x.width||w.height!==x.height)&&(w.width=x.width,w.height=x.height);var b=w.getContext("2d");b.putImageData(x.image,0,0),z.requestNextFrame()},this.draw=function(a){var b=a.f;if(!b)throw"Data series f is undefined";var c=b.length,d=b[0].length,e=a.x;if(e){if(e.length!=c&&e.length!=c+1)throw"Data series x must have length equal or one more than length of data series f by first dimension"}else e=InteractiveDataDisplay.Utils.range(0,c);var f=a.y;if(f){if(f.length!=d&&f.length!=d+1)throw"Data series y must have length equal or one more than length of data series f by second dimension"}else f=InteractiveDataDisplay.Utils.range(0,d);if(l=e,k=f,m=b,e.length==c){if(f.length!=d)throw"Data series y must have length equal to length of data series f by second dimension";q="gradient"}else{if(f.length!=d+1)throw"Data series y must have length equal to one more than length of data series f by second dimension";q="matrix"}if(l.length<2)throw"Data series x must have at least 2 elements by each dimension";if(k.length<2)throw"Data series y must have at least 2 elements by each dimension";a&&"undefined"!=typeof a.opacity&&v(parseFloat(a.opacity)),a&&"undefined"!=typeof a.palette&&u(a.palette),r.isNormalized&&y(),s=!0;var g=this.invalidateLocalBounds(),h=this.getLocalBounds();InteractiveDataDisplay.Utils.equalRect(g,h)?this.requestNextFrame():this.requestNextFrameOrUpdate(),this.fireAppearanceChanged()},this.computeLocalBounds=function(){var a;if(l&&k){var b,c,d,e,f,g=l.length,h=k.length;for(f=0;g>f&&(b=l[f],b!=b);f++);for(f=g;--f>=0&&(c=l[f],c!=c););for(f=0;h>f&&(d=k[f],d!=d);f++);for(f=h;--f>=0&&(e=k[f],e!=e););var i=this.xDataTransform&&this.xDataTransform.dataToPlot,j=this.yDataTransform&&this.yDataTransform.dataToPlot;i&&(b=i(b),c=i(c)),j&&(d=j(d),e=j(e)),a={x:Math.min(b,c),y:Math.min(d,e),width:Math.abs(c-b),height:Math.abs(e-d)}}return a},"undefined"==typeof Modernizr||!a||Modernizr.webworkers&&Modernizr.postmessage){var A=void 0,B=void 0;this.renderCore=function(a,c){InteractiveDataDisplay.Heatmap.prototype.renderCore.call(this,a,c);var d=this.getContext(!0);if(void 0!=l&&void 0!=k&&void 0!=m){var e=this.coordinateTransform,f=e.plotToScreenX,g=e.plotToScreenY,h=this.getLocalBounds(),i=InteractiveDataDisplay.Utils.intersect(h,a);if(i){var q=!0;if(void 0!==b.mapControl){var u=h.x,v=h.x+h.width/2,y=h.x+h.width;if(void 0===A){var z=120,C={fillColor:new Microsoft.Maps.Color(z,z,z,z),strokeColor:new Microsoft.Maps.Color(z,z,z,z),strokeThickness:0};A=new Microsoft.Maps.Polygon([new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),u),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),u)],C),B=new Microsoft.Maps.Polygon([new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),y),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),y),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),v)],C),b.mapControl.entities.push(A),b.mapControl.entities.push(B)}s&&(A.setLocations([new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),u),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),u)]),
B.setLocations([new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),v),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y),y),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),y),new Microsoft.Maps.Location(InteractiveDataDisplay.mercatorTransform.plotToData(h.y+h.height),v)])),q=!b.isInAnimation,A.setOptions({visible:b.isInAnimation}),B.setOptions({visible:b.isInAnimation})}if(q){var D={left:Math.floor(f(i.x)),width:Math.ceil(e.plotToScreenWidth(i.width)),top:Math.floor(g(i.y+i.height)),height:Math.ceil(e.plotToScreenHeight(i.height))},E=e.getScale(),F=e.getOffset();if(d.fillStyle="rgba(200,200,200,0.3)",d.fillRect(D.left,D.top,D.width,D.height),x){var G=InteractiveDataDisplay.Utils.intersect(x.plotRect,a);if(G){var H,I=f(x.plotRect.x),J=g(x.plotRect.y+x.plotRect.height);if(1!=p&&(H=d.globalAlpha,d.globalAlpha=p),E.x!=x.scaleX||E.y!=x.scaleY){var K=E.x/x.scaleX,L=E.y/x.scaleY;d.drawImage(w,0,0,x.image.width,x.image.height,I,J,K*x.image.width,L*x.image.height)}else d.drawImage(w,I,J);1!=p&&(d.globalAlpha=H)}}if(s||!this.master.isInAnimation&&(!x||x.scaleX!=E.x||x.scaleY!=E.y||!InteractiveDataDisplay.Utils.includes(x.plotRect,i))){j&&j.width===D.width&&j.height===D.height||(j=d.createImageData(D.width,D.height));var M={image:j,width:j.width,height:j.height,x:l,y:k,f:m,fmin:n,fmax:o,plotRect:i,scaleX:E.x,scaleY:E.y,offsetX:F.x-D.left,offsetY:F.y-D.top,palette:{isNormalized:r.isNormalized,range:r.range,points:r.points,colors:t},xDataTransform:this.xDataTransform&&this.xDataTransform.type,yDataTransform:this.yDataTransform&&this.yDataTransform.type};InteractiveDataDisplay.heatmapBackgroundRenderer.enqueue(M,this),s=!1}}}}},this.onIsRenderedChanged=function(){this.isRendered||InteractiveDataDisplay.heatmapBackgroundRenderer.cancelPending(this)},this.onDataTransformChanged=function(a){this.invalidateLocalBounds(),InteractiveDataDisplay.Heatmap.prototype.onDataTransformChanged.call(this,a)};var C=function(a,b){var c=l.length,d=k.length;if(0!=c&&0!=d&&!(al[c-1]||b>k[d-1])){var e;for(e=1;c>e;e++)if(a<=l[e]){if(isNaN(l[e-1]))return NaN;break}var f;for(f=1;d>f;f++)if(b<=k[f]){if(isNaN(k[f-1]))return NaN;break}return e>=c||f>=d?NaN:{iLeft:e-1,jBottom:f-1}}};this.getValue=function(a,b){var c=l.length,d=k.length;if(0==c||0==d)return null;var e=C(a,b);if(void 0==e)return null;if(e!=e)return""+(this.name||"heatmap")+": (unknown value)
";var f;if("gradient"===q){var g,h,i,j;if(h=m[e.iLeft][e.jBottom+1],g=m[e.iLeft][e.jBottom],i=m[e.iLeft+1][e.jBottom+1],j=m[e.iLeft+1][e.jBottom],isNaN(h)||isNaN(g)||isNaN(i)||isNaN(j))f=NaN;else{var n=k[e.jBottom],o=k[e.jBottom+1],p=(h-g)/(o-n),r=(i-j)/(o-n),s=p*(b-n)+g,t=r*(b-n)+j,u=l[e.iLeft],v=l[e.iLeft+1],w=(t-s)/(v-u);f=w*(a-u)+s}}else f=m[e.iLeft][e.jBottom];return f},this.getTooltip=function(a,b){if(void 0!==m){var c=this.getValue(a,b);if(null!=c)return""+(this.name||"heatmap")+": "+c+"
"}},Object.defineProperty(this,"palette",{get:function(){return r},set:function(a){if(a!=r){if(!a)throw"Heatmap palette is undefined";r&&a.isNormalized&&!r.isNormalized&&m&&y(),u(a),x=void 0,this.fireAppearanceChanged("palette"),this.requestNextFrame()}},configurable:!1}),Object.defineProperty(this,"opacity",{get:function(){return p},set:function(a){if(!a)throw"Heatmap opacity is undefined";a!=p&&(v(a),this.fireAppearanceChanged("opacity"),this.requestNextFrame())},configurable:!1}),Object.defineProperty(this,"mode",{get:function(){return q},configurable:!1}),this.getLegend=function(){var a=$(""),b=this,c=$("").appendTo(a),d=function(){c.text(b.name)};d();var e=$("").appendTo(a),f=new InteractiveDataDisplay.ColorPaletteViewer(e,r);r&&r.isNormalized&&(f.dataRange={min:n,max:o}),this.host.bind("appearanceChanged",function(a,b){b&&"name"!=b||d(),b&&"palette"!=b||(f.palette=r);var c=f.dataRange;r&&r.isNormalized&&(void 0==c||c.min!=n||c.max!=o)&&(f.dataRange={min:n,max:o})});var g=function(){b.host.unbind("appearanceChanged"),a[0].innerHTML="",a.removeClass("idd-legend-item")};return{div:a,onLegendRemove:g}},d&&"undefined"!=typeof d.f&&this.draw(d)}else{var D=a[0].parentElement;if(D){for(var E=!1,i=0;i').prependTo(a);this.base=InteractiveDataDisplay.Plot,this.base(a,b);var d=this;if("undefined"==typeof Microsoft)$("").css("margin",15).css("word-wrap","break-word").text("BingMaps script is unavailable. Check your internet connection.").appendTo(a);else{var e=void 0,f=void 0;0===d.children.length&&(e=$('').appendTo(a),e.css("z-index",InteractiveDataDisplay.ZIndexNavigationLayer),f=$("").appendTo(e));this.mapKey=a.attr("data-idd-mapKey");var g=new Microsoft.Maps.Map(c[0],{credentials:d.mapKey,mapTypeId:Microsoft.Maps.MapTypeId.aerial,enableClickableLogo:!1,enableSearchLogo:!1,showCopyright:!1,showDashboard:!1,showLogo:!1,disablePanning:!0,disableZooming:!0,width:a.width(),height:a.height()});Object.defineProperty(this,"map",{get:function(){return g},configurable:!1});var h=new InteractiveDataDisplay.BingMapsAnimation(g);this.arrange=function(a){InteractiveDataDisplay.BingMapsPlot.prototype.arrange.call(this,a),g.width=a.width,g.height=a.height},this.setMap=function(a){if(g.setMapType(Microsoft.Maps.MapTypeId.mercator),g.entities.clear(),a)if(a instanceof Microsoft.Maps.TileSource){var b=new Microsoft.Maps.TileLayer({mercator:a,opacity:1});g.entities.push(b)}else g.setMapType(a)},this.constraint=function(a,b){var c=g.getWidth(),d=g.getHeight();return 1>=c||1>=d?a:(h.setMapView(a,b),mapRect=InteractiveDataDisplay.Utils.getPlotRectForMap(g),mapRect)},this.arrange=function(a){InteractiveDataDisplay.CanvasPlot.prototype.arrange.call(this,a),void 0!==e&&(e.width(a.width),e.height(a.height),f[0].width=a.width,f[0].height=a.height)},h.constraint=this.constraint,d.navigation.animation=h,this.selfMapRefresh()}}},InteractiveDataDisplay.BingMapsPlot.prototype=new InteractiveDataDisplay.Plot}!function(){window.define?define(["jquery","rx"],function(a,b){return IDD(a,b),InteractiveDataDisplay}):(IDD($,Rx),window.InteractiveDataDisplay=InteractiveDataDisplay)}();
//# sourceMappingURL=idd.min.js.map