From d56f0b7995b11cf09c62b94cf7552eb0bb31a0f5 Mon Sep 17 00:00:00 2001 From: Shammamah Hossain Date: Fri, 8 Nov 2019 15:29:21 -0500 Subject: [PATCH] Fix forna stylesheet (#434) * Add className to container div. * Use fixed version of fornac library. * Update version of package. * Update auto-generated files. * Add hash for specific fornac commit and update version. * Update autogenerated files. * Add Python version to cache checksum. * Remove className. * Update CHANGELOG. * Update version. * Add autogenerated files. * Remove python version caching from node job. * Update .circleci/config.yml Co-Authored-By: alexcjohnson * Fix save_cache for python dependencies. * Update version. * Update autogenerated files. --- .circleci/config.yml | 6 +++--- CHANGELOG.md | 4 ++++ dash_bio/bundle.js | 2 +- dash_bio/package-info.json | 2 +- package-lock.json | 7 +++---- package.json | 6 +++--- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index d586fb733..3eebde139 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,6 @@ jobs: - run: name: Check current version of node command: node -v - - restore_cache: key: deps1-{{ .Branch }}-{{ checksum "package.json" }} @@ -67,9 +66,10 @@ jobs: steps: - checkout + - run: echo $PYVERSION > ver.txt - restore_cache: - key: deps1-{{ .Branch }}-{{ checksum "tests/requirements.txt" }} + key: deps1-{{ .Branch }}-{{ checksum "tests/requirements.txt" }}-{{ checksum "ver.txt" }} - run: name: Create virtualenv @@ -85,7 +85,7 @@ jobs: pip install dash[testing] - save_cache: - key: deps1-{{ .Branch }}-{{ checksum "tests/requirements.txt" }} + key: deps1-{{ .Branch }}-{{ checksum "tests/requirements.txt" }}-{{ checksum "ver.txt" }} paths: - venv diff --git a/CHANGELOG.md b/CHANGELOG.md index 70e14ed85..64e5b644d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## [0.4.1] - 2019-11-08 +### Fixed +* [#434](https://github.com/plotly/dash-bio/pull/434) Fixed FornaContainer selector issue, in which FornaContainer styles were being applied to all svg elements on the page. + ## [0.4.0] - 2019-11-05 ### Added * [#430](https://github.com/plotly/dash-bio/pull/430) Async AlignmentChart, Circos, Ideogram, Molecule2dViewer, Molecule3dViewer, NeedlePlot, OncoPrint, SequenceViewwer and Speck components diff --git a/dash_bio/bundle.js b/dash_bio/bundle.js index c30cc720e..cfbd7188c 100644 --- a/dash_bio/bundle.js +++ b/dash_bio/bundle.js @@ -1 +1 @@ -window.dash_bio=function(n){function t(t){for(var e,o,a=t[0],i=t[1],u=0,s=[];u0&&(o=1/Math.sqrt(o),n[0]=t[0]*o,n[1]=t[1]*o),n},u.dot=function(n,t){return n[0]*t[0]+n[1]*t[1]},u.cross=function(n,t,e){var r=t[0]*e[1]-t[1]*e[0];return n[0]=n[1]=0,n[2]=r,n},u.lerp=function(n,t,e,r){var o=t[0],a=t[1];return n[0]=o+r*(e[0]-o),n[1]=a+r*(e[1]-a),n},u.random=function(n,t){t=t||1;var e=2*r()*Math.PI;return n[0]=Math.cos(e)*t,n[1]=Math.sin(e)*t,n},u.transformMat2=function(n,t,e){var r=t[0],o=t[1];return n[0]=e[0]*r+e[2]*o,n[1]=e[1]*r+e[3]*o,n},u.transformMat2d=function(n,t,e){var r=t[0],o=t[1];return n[0]=e[0]*r+e[2]*o+e[4],n[1]=e[1]*r+e[3]*o+e[5],n},u.transformMat3=function(n,t,e){var r=t[0],o=t[1];return n[0]=e[0]*r+e[3]*o+e[6],n[1]=e[1]*r+e[4]*o+e[7],n},u.transformMat4=function(n,t,e){var r=t[0],o=t[1];return n[0]=e[0]*r+e[4]*o+e[12],n[1]=e[1]*r+e[5]*o+e[13],n},u.forEach=(i=u.create(),function(n,t,e,r,o,a){var u,s;for(t||(t=2),e||(e=0),s=r?Math.min(r*t+e,n.length):n.length,u=e;u0&&(a=1/Math.sqrt(a),n[0]=t[0]*a,n[1]=t[1]*a,n[2]=t[2]*a),n},s.dot=function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]},s.cross=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=e[0],u=e[1],s=e[2];return n[0]=o*s-a*u,n[1]=a*i-r*s,n[2]=r*u-o*i,n},s.lerp=function(n,t,e,r){var o=t[0],a=t[1],i=t[2];return n[0]=o+r*(e[0]-o),n[1]=a+r*(e[1]-a),n[2]=i+r*(e[2]-i),n},s.random=function(n,t){t=t||1;var e=2*r()*Math.PI,o=2*r()-1,a=Math.sqrt(1-o*o)*t;return n[0]=Math.cos(e)*a,n[1]=Math.sin(e)*a,n[2]=o*t,n},s.transformMat4=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=e[3]*r+e[7]*o+e[11]*a+e[15];return i=i||1,n[0]=(e[0]*r+e[4]*o+e[8]*a+e[12])/i,n[1]=(e[1]*r+e[5]*o+e[9]*a+e[13])/i,n[2]=(e[2]*r+e[6]*o+e[10]*a+e[14])/i,n},s.transformMat3=function(n,t,e){var r=t[0],o=t[1],a=t[2];return n[0]=r*e[0]+o*e[3]+a*e[6],n[1]=r*e[1]+o*e[4]+a*e[7],n[2]=r*e[2]+o*e[5]+a*e[8],n},s.transformQuat=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=e[0],u=e[1],s=e[2],l=e[3],c=l*r+u*a-s*o,f=l*o+s*r-i*a,p=l*a+i*o-u*r,h=-i*r-u*o-s*a;return n[0]=c*l+h*-i+f*-s-p*-u,n[1]=f*l+h*-u+p*-i-c*-s,n[2]=p*l+h*-s+c*-u-f*-i,n},s.rotateX=function(n,t,e,r){var o=[],a=[];return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],a[0]=o[0],a[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),a[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),n[0]=a[0]+e[0],n[1]=a[1]+e[1],n[2]=a[2]+e[2],n},s.rotateY=function(n,t,e,r){var o=[],a=[];return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],a[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),a[1]=o[1],a[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),n[0]=a[0]+e[0],n[1]=a[1]+e[1],n[2]=a[2]+e[2],n},s.rotateZ=function(n,t,e,r){var o=[],a=[];return o[0]=t[0]-e[0],o[1]=t[1]-e[1],o[2]=t[2]-e[2],a[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),a[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),a[2]=o[2],n[0]=a[0]+e[0],n[1]=a[1]+e[1],n[2]=a[2]+e[2],n},s.forEach=function(){var n=s.create();return function(t,e,r,o,a,i){var u,s;for(e||(e=3),r||(r=0),s=o?Math.min(o*e+r,t.length):t.length,u=r;u1?0:Math.acos(o)},s.str=function(n){return"vec3("+n[0]+", "+n[1]+", "+n[2]+")"},void 0!==n&&(n.vec3=s);var l={create:function(){var n=new e(4);return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n},clone:function(n){var t=new e(4);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},fromValues:function(n,t,r,o){var a=new e(4);return a[0]=n,a[1]=t,a[2]=r,a[3]=o,a},copy:function(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},set:function(n,t,e,r,o){return n[0]=t,n[1]=e,n[2]=r,n[3]=o,n},add:function(n,t,e){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n[3]=t[3]+e[3],n},subtract:function(n,t,e){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n[3]=t[3]-e[3],n}};l.sub=l.subtract,l.multiply=function(n,t,e){return n[0]=t[0]*e[0],n[1]=t[1]*e[1],n[2]=t[2]*e[2],n[3]=t[3]*e[3],n},l.mul=l.multiply,l.divide=function(n,t,e){return n[0]=t[0]/e[0],n[1]=t[1]/e[1],n[2]=t[2]/e[2],n[3]=t[3]/e[3],n},l.div=l.divide,l.min=function(n,t,e){return n[0]=Math.min(t[0],e[0]),n[1]=Math.min(t[1],e[1]),n[2]=Math.min(t[2],e[2]),n[3]=Math.min(t[3],e[3]),n},l.max=function(n,t,e){return n[0]=Math.max(t[0],e[0]),n[1]=Math.max(t[1],e[1]),n[2]=Math.max(t[2],e[2]),n[3]=Math.max(t[3],e[3]),n},l.scale=function(n,t,e){return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n},l.scaleAndAdd=function(n,t,e,r){return n[0]=t[0]+e[0]*r,n[1]=t[1]+e[1]*r,n[2]=t[2]+e[2]*r,n[3]=t[3]+e[3]*r,n},l.distance=function(n,t){var e=t[0]-n[0],r=t[1]-n[1],o=t[2]-n[2],a=t[3]-n[3];return Math.sqrt(e*e+r*r+o*o+a*a)},l.dist=l.distance,l.squaredDistance=function(n,t){var e=t[0]-n[0],r=t[1]-n[1],o=t[2]-n[2],a=t[3]-n[3];return e*e+r*r+o*o+a*a},l.sqrDist=l.squaredDistance,l.length=function(n){var t=n[0],e=n[1],r=n[2],o=n[3];return Math.sqrt(t*t+e*e+r*r+o*o)},l.len=l.length,l.squaredLength=function(n){var t=n[0],e=n[1],r=n[2],o=n[3];return t*t+e*e+r*r+o*o},l.sqrLen=l.squaredLength,l.negate=function(n,t){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n[3]=-t[3],n},l.inverse=function(n,t){return n[0]=1/t[0],n[1]=1/t[1],n[2]=1/t[2],n[3]=1/t[3],n},l.normalize=function(n,t){var e=t[0],r=t[1],o=t[2],a=t[3],i=e*e+r*r+o*o+a*a;return i>0&&(i=1/Math.sqrt(i),n[0]=t[0]*i,n[1]=t[1]*i,n[2]=t[2]*i,n[3]=t[3]*i),n},l.dot=function(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]},l.lerp=function(n,t,e,r){var o=t[0],a=t[1],i=t[2],u=t[3];return n[0]=o+r*(e[0]-o),n[1]=a+r*(e[1]-a),n[2]=i+r*(e[2]-i),n[3]=u+r*(e[3]-u),n},l.random=function(n,t){return t=t||1,n[0]=r(),n[1]=r(),n[2]=r(),n[3]=r(),l.normalize(n,n),l.scale(n,n,t),n},l.transformMat4=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=t[3];return n[0]=e[0]*r+e[4]*o+e[8]*a+e[12]*i,n[1]=e[1]*r+e[5]*o+e[9]*a+e[13]*i,n[2]=e[2]*r+e[6]*o+e[10]*a+e[14]*i,n[3]=e[3]*r+e[7]*o+e[11]*a+e[15]*i,n},l.transformQuat=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=e[0],u=e[1],s=e[2],l=e[3],c=l*r+u*a-s*o,f=l*o+s*r-i*a,p=l*a+i*o-u*r,h=-i*r-u*o-s*a;return n[0]=c*l+h*-i+f*-s-p*-u,n[1]=f*l+h*-u+p*-i-c*-s,n[2]=p*l+h*-s+c*-u-f*-i,n},l.forEach=function(){var n=l.create();return function(t,e,r,o,a,i){var u,s;for(e||(e=4),r||(r=0),s=o?Math.min(o*e+r,t.length):t.length,u=r;u.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(s.cross(d,t,e),n[0]=d[0],n[1]=d[1],n[2]=d[2],n[3]=1+r,y.normalize(n,n))}),y.setAxes=(g=p.create(),function(n,t,e,r){return g[0]=e[0],g[3]=e[1],g[6]=e[2],g[1]=r[0],g[4]=r[1],g[7]=r[2],g[2]=-t[0],g[5]=-t[1],g[8]=-t[2],y.normalize(n,y.fromMat3(n,g))}),y.clone=l.clone,y.fromValues=l.fromValues,y.copy=l.copy,y.set=l.set,y.identity=function(n){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n},y.setAxisAngle=function(n,t,e){e*=.5;var r=Math.sin(e);return n[0]=r*t[0],n[1]=r*t[1],n[2]=r*t[2],n[3]=Math.cos(e),n},y.add=l.add,y.multiply=function(n,t,e){var r=t[0],o=t[1],a=t[2],i=t[3],u=e[0],s=e[1],l=e[2],c=e[3];return n[0]=r*c+i*u+o*l-a*s,n[1]=o*c+i*s+a*u-r*l,n[2]=a*c+i*l+r*s-o*u,n[3]=i*c-r*u-o*s-a*l,n},y.mul=y.multiply,y.scale=l.scale,y.rotateX=function(n,t,e){e*=.5;var r=t[0],o=t[1],a=t[2],i=t[3],u=Math.sin(e),s=Math.cos(e);return n[0]=r*s+i*u,n[1]=o*s+a*u,n[2]=a*s-o*u,n[3]=i*s-r*u,n},y.rotateY=function(n,t,e){e*=.5;var r=t[0],o=t[1],a=t[2],i=t[3],u=Math.sin(e),s=Math.cos(e);return n[0]=r*s-a*u,n[1]=o*s+i*u,n[2]=a*s+r*u,n[3]=i*s-o*u,n},y.rotateZ=function(n,t,e){e*=.5;var r=t[0],o=t[1],a=t[2],i=t[3],u=Math.sin(e),s=Math.cos(e);return n[0]=r*s+o*u,n[1]=o*s-r*u,n[2]=a*s+i*u,n[3]=i*s-a*u,n},y.calculateW=function(n,t){var e=t[0],r=t[1],o=t[2];return n[0]=e,n[1]=r,n[2]=o,n[3]=Math.sqrt(Math.abs(1-e*e-r*r-o*o)),n},y.dot=l.dot,y.lerp=l.lerp,y.slerp=function(n,t,e,r){var o,a,i,u,s,l=t[0],c=t[1],f=t[2],p=t[3],h=e[0],d=e[1],m=e[2],v=e[3];return(a=l*h+c*d+f*m+p*v)<0&&(a=-a,h=-h,d=-d,m=-m,v=-v),1-a>1e-6?(o=Math.acos(a),i=Math.sin(o),u=Math.sin((1-r)*o)/i,s=Math.sin(r*o)/i):(u=1-r,s=r),n[0]=u*l+s*h,n[1]=u*c+s*d,n[2]=u*f+s*m,n[3]=u*p+s*v,n},y.invert=function(n,t){var e=t[0],r=t[1],o=t[2],a=t[3],i=e*e+r*r+o*o+a*a,u=i?1/i:0;return n[0]=-e*u,n[1]=-r*u,n[2]=-o*u,n[3]=a*u,n},y.conjugate=function(n,t){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n[3]=t[3],n},y.length=l.length,y.len=y.length,y.squaredLength=l.squaredLength,y.sqrLen=y.squaredLength,y.normalize=l.normalize,y.fromMat3=function(n,t){var e,r=t[0]+t[4]+t[8];if(r>0)e=Math.sqrt(r+1),n[3]=.5*e,e=.5/e,n[0]=(t[5]-t[7])*e,n[1]=(t[6]-t[2])*e,n[2]=(t[1]-t[3])*e;else{var o=0;t[4]>t[0]&&(o=1),t[8]>t[3*o+o]&&(o=2);var a=(o+1)%3,i=(o+2)%3;e=Math.sqrt(t[3*o+o]-t[3*a+a]-t[3*i+i]+1),n[o]=.5*e,e=.5/e,n[3]=(t[3*a+i]-t[3*i+a])*e,n[a]=(t[3*a+o]+t[3*o+a])*e,n[i]=(t[3*i+o]+t[3*o+i])*e}return n},y.str=function(n){return"quat("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"},void 0!==n&&(n.quat=y)}(e.exports)}()},function(n,t,e){"use strict";var r=e(7),o=e(6),a=e(20);function i(n,t,e){return Math.min(t,Math.max(n,e))}n.exports.new=function(){return{aspect:1,zoom:.125,translation:{x:0,y:0},atomScale:.6,relativeAtomScale:1,bondScale:.5,rotation:r.mat4.create(),ao:.75,aoRes:256,brightness:.5,outline:0,spf:32,bonds:!1,bondThreshold:1.2,bondShade:.5,atomShade:.5,resolution:768,dofStrength:0,dofPosition:.5,fxaa:1}},n.exports.center=function(n,t){for(var e=-1/0,a=1/0,i=-1/0,u=1/0,s=0;st&&(t=u,n.farAtom=r)}return n.farAtom});n.exports.getRadius=function(n){var t=u(n),e=a.MAX_ATOM_RADIUS,r=2.5*Math.sqrt(e*e+e*e+e*e);return Math.sqrt(t.x*t.x+t.y*t.y+t.z*t.z)+r}},function(n,t,e){n.exports=function(n){function t(r){if(e[r])return e[r].exports;var o=e[r]={exports:{},id:r,loaded:!1};return n[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var e={};return t.m=n,t.c=e,t.p="",t(0)}([function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FornaContainer=function(n,t){function e(n){return Math.sqrt(n[0]*n[0]+n[1]*n[1])}function o(n){var t=n,r=n.prevNode;if(null!==r&&n.linked){var o=[-(t.x-r.x),-(t.y-r.y)],i=[-(o=[o[0]/e(o),o[1]/e(o)])[1],o[0]],u=[n.radius*o[0],n.radius*o[1]],s="M"+(u[0]+6*(o[0]+i[0])/2)+","+(u[1]+6*(o[1]+i[1])/2)+"L"+u[0]+","+u[1]+"L"+(u[0]+6*(o[0]-i[0])/2)+","+(u[1]+6*(o[1]-i[1])/2);a.default.select(this).attr("d",s)}}function c(n){return"basepair"==n.linkType||"backbone"==n.linkType||"pseudoknot"==n.linkType||"label_link"==n.linkType||"external"==n.linkType||"chain_chain"==n.linkType}function f(n,t,e){if(n.hasOwnProperty(t.num)){var r=parseFloat(n[t.num]);return isNaN(r)?n[t.num]:e(r)}return"white"}function p(){b=null,x=null}function h(n){var t=R.selectAll("g.gnode");return t.filter(function(n){return n.selected})}function d(n){var t=n.radius+16,e=n.x-t,r=n.x+t,o=n.y-t,a=n.y+t;return function(t,i,u,s,l){if(t.point&&t.point!==n){var c=n.x-t.point.x,f=n.y-t.point.y,p=Math.sqrt(c*c+f*f),h=n.radius+t.point.radius;h>p&&(p=(p-h)/p*.1,n.x-=c*=p,n.y-=f*=p,t.point.x+=c,t.point.y+=f)}return i>r||e>s||u>a||o>l}}function m(){if(!g.deaf&&!N){switch(a.default.event.keyCode){case 16:N=!0;break;case 17:O=!0;break;case 67:g.centerView()}(N||O)&&(S.call(g.zoomer).on("mousedown.zoom",null).on("touchstart.zoom",null).on("touchmove.zoom",null).on("touchend.zoom",null),T.selectAll("g.gnode").on("mousedown.drag",null)),O&&(A.select(".background").style("cursor","crosshair"),A.call(g.brusher))}}function v(){N=!1,O=!1,A.call(g.brusher).on("mousedown.brush",null).on("touchstart.brush",null).on("touchmove.brush",null).on("touchend.brush",null),A.select(".background").style("cursor","auto"),S.call(g.zoomer),T.selectAll("g.gnode").call(C)}var g=this;if(g.options={displayAllLinks:!1,labelInterval:10,applyForce:!0,initialSize:null,allowPanningAndZooming:!0,transitionDuration:500,resizeSvgOnResize:!0},arguments.length>1)for(var y in t)g.options.hasOwnProperty(y)&&(g.options[y]=t[y]);null!==g.options.initialSize?(g.options.svgW=g.options.initialSize[0],g.options.svgH=g.options.initialSize[1]):(g.options.svgW=800,g.options.svgH=800),a.default.scale.category20();var b=null,x=null,M=a.default.scale.linear().domain([0,g.options.svgW]).range([0,g.options.svgW]),w=a.default.scale.linear().domain([0,g.options.svgH]).range([0,g.options.svgH]),k=g.graph={nodes:[],links:[]};g.linkStrengths={pseudoknot:0,proteinChain:0,chainChain:0,intermolecule:10,external:0,other:10},g.displayParameters={displayBackground:"true",displayNumbering:"true",displayNodeOutline:"true",displayNodeLabel:"true",displayLinks:"true",displayPseudoknotLinks:"true",displayProteinLinks:"true"},g.colorScheme="structure",g.customColors={},g.animation=g.options.applyForce,g.deaf=!1,g.rnas={},g.extraLinks=[],Array.prototype.equals=function(n){if(!n)return!1;if(this.length!=n.length)return!1;for(var t=0,e=this.length;e>t;t++)if(this[t]instanceof Array&&n[t]instanceof Array){if(!this[t].equals(n[t]))return!1}else if(this[t]!=n[t])return!1;return!0},g.createInitialLayout=function(n,t){var e={sequence:"",name:"empty",positions:[],labelInterval:g.options.labelInterval,avoidOthers:!0,uids:[],circularizeExternal:!0};if(2==arguments.length)for(var r in t)e.hasOwnProperty(r)&&(e[r]=t[r]);var o=new u.RNAGraph(e.sequence,n,e.name);o.circularizeExternal=e.circularizeExternal;var a=o.recalculateElements();return 0===e.positions.length&&(e.positions=(0,s.simpleXyCoordinates)(a.pairtable)),a=a.elementsToJson().addUids(e.uids).addPositions("nucleotide",e.positions).addLabels(1,e.labelInterval).reinforceStems().reinforceLoops().connectFakeNodes().reassignLinkUids().breakNodesToFakeNodes()},g.addRNA=function(n,t){var e=g.createInitialLayout(n,t);if(1===arguments.length&&(t={}),"extraLinks"in t){var r=g.addExternalLinks(e,t.extraLinks);g.extraLinks=g.extraLinks.concat(r)}return"avoidOthers"in t?g.addRNAJSON(e,t.avoidOthers):g.addRNAJSON(e,!0),e},g.addExternalLinks=function(n,t){for(var e=[],r=0;r0?a.default.max(g.graph.nodes.map(function(n){return n.x})):0,r=a.default.min(n.nodes.map(function(n){return n.x})),n.nodes.forEach(function(n){n.x+=e-r+20,n.px+=e-r})),n.nodes.forEach(function(t){t.rna=n}),g.rnas[n.uid]=n,g.recalculateGraph(),g.update(),g.centerView(),n},g.transitionRNA=function(n,t){var e=g.options.transitionDuration,r=g.graph.nodes.filter(function(n){return"nucleotide"==n.nodeType}).map(function(n){return n.uid}),a={uids:r},i=g.createInitialLayout(n,a),u=R.selectAll("g.gnode").data(i.nodes,U),e=g.options.transitionDuration;0===e?u.attr("transform",function(n){return"translate("+[n.x,n.y]+")"}):u.transition().attr("transform",function(n){return"translate("+[n.x,n.y]+")"}).duration(e);var s=E.selectAll("line.link").data(i.links.filter(c),L),l=g.createNewNodes(u.enter()).attr("transform",function(n){return void 0!==n.x&&void 0!==n.y?"translate("+[0,0]+")":""});0===e?u.exit().remove():u.exit().transition().attr("transform",function(n){return void 0!==n.x&&void 0!==n.y?"translate("+[0,0]+")":""}),u.select("path").each(o),g.graph.nodes=u.data(),g.updateStyle(),g.centerView(e),s.exit().remove(),0===e?(s.attr("x1",function(n){return n.source.x}).attr("y1",function(n){return n.source.y}).attr("x2",function(n){return n.target.x}).attr("y2",function(n){return n.target.y}),g.createNewLinks(s.enter()),g.graph.links=s.data(),g.updateStyle()):s.transition().attr("x1",function(n){return n.source.x}).attr("y1",function(n){return n.source.y}).attr("x2",function(n){return n.target.x}).attr("y2",function(n){return n.target.y}).duration(e).call(function(n,t){0===n.size()&&setTimeout(t,e);var r=0;n.each(function(){++r}).each("end",function(){--r||t.apply(this,arguments)})},function(){g.createNewLinks(s.enter()),g.graph.links=s.data(),g.updateStyle(),void 0!==t&&t()}),0===e?l.attr("transform",function(n){return void 0!==n.x&&void 0!==n.y?"translate("+[n.x,n.y]+")":""}):l.transition().attr("transform",function(n){return void 0!==n.x&&void 0!==n.y?"translate("+[n.x,n.y]+")":""})},g.recalculateGraph=function(){for(var n in g.graph.nodes=[],g.graph.links=[],g.rnas)g.graph.nodes=g.graph.nodes.concat(g.rnas[n].nodes),g.graph.links=g.graph.links.concat(g.rnas[n].links);for(var t={},e=0;e0?(maxX=a.default.max(g.graph.nodes.map(function(n){return n.x})),maxY=a.default.max(g.graph.nodes.map(function(n){return n.y}))):(maxX=0,maxY=0),n.nodes.forEach(function(n){n.rna.uid in g.rnas||(g.rnas[n.rna.uid]=n.rna),n.x+=maxX,n.px+=maxX}),r=new u.RNAGraph("",""),r.nodes=n.nodes,r.links=n.links,g.recalculateGraph(),g.update(),g.centerView()},g.addCustomColors=function(n){g.customColors=n},g.addCustomColorsText=function(n){var t=new l.ColorScheme(n);g.customColors=t.colorsJson,g.changeColorScheme("custom")},g.clearNodes=function(){g.graph.nodes=[],g.graph.links=[],g.rnas={},g.extraLinks=[],g.update()},g.toJSON=function(){var n={rnas:g.rnas,extraLinks:g.extraLinks},t=JSON.stringify(n,function(n,t){return"rna"==n?void 0:t},"\t");return t},g.fromJSON=function(n){var t,e;try{var o=JSON.parse(n);t=o.rnas,e=o.extraLinks}catch(n){throw n}for(var a in t)"rna"==t[a].type?(r=new u.RNAGraph,r.seq=t[a].seq,r.dotbracket=t[a].dotbracket,r.circular=t[a].circular,r.pairtable=t[a].pairtable,r.uid=t[a].uid,r.structName=t[a].structName,r.nodes=t[a].nodes,r.links=t[a].links,r.rnaLength=t[a].rnaLength,r.elements=t[a].elements,r.nucsToNodes=t[a].nucsToNodes,r.pseudoknotPairs=t[a].pseudoknotPairs):(r=new ProteinGraph,r.size=t[a].size,r.nodes=t[a].nodes,r.uid=t[a].uid),g.addRNAJSON(r,!1);e.forEach(function(n){g.extraLinks.push(n)}),g.recalculateGraph(),g.update()},g.setSize=function(){if(null==g.options.initialSize){var t=a.default.select(n).node().offsetHeight,e=a.default.select(n).node().offsetWidth;g.options.svgW=e,g.options.svgH=t,M.range([0,e]).domain([0,e]),w.range([0,t]).domain([0,t]),g.zoomer.x(M).y(w),g.brusher.x(M).y(w),g.centerView(),g.options.resizeSvgOnResize&&_.attr("width",e).attr("height",t)}},g.setOutlineColor=function(n){var t=R.selectAll("g.gnode").select("[node_type=nucleotide]");t.style("fill",n)},g.changeColorScheme=function(n){var t=R.selectAll("[node_type=protein]");t.classed("protein",!0).attr("r",function(n){return n.radius});var e=(R.selectAll("g.gnode"),R.selectAll("g.gnode").selectAll("circle"),R.selectAll("g.gnode").select("[node_type=nucleotide]"));if(g.colorScheme=n,"sequence"==n){var r=a.default.scale.ordinal().range(["#dbdb8d","#98df8a","#ff9896","#aec7e8","#aec7e8"]).domain(["A","C","G","U","T"]);e.style("fill",function(n){return r(n.name)})}else if("structure"==n){var r=a.default.scale.category10().domain(["s","m","i","e","t","h","x"]).range(["lightgreen","#ff9896","#dbdb8d","lightsalmon","lightcyan","lightblue","transparent"]);e.style("fill",function(n){return r(n.elemType)})}else if("positions"==n)e.style("fill",function(n){var t=a.default.scale.linear().range(["#98df8a","#dbdb8d","#ff9896"]).interpolate(a.default.interpolateLab).domain([1,1+(n.rna.rnaLength-1)/2,n.rna.rnaLength]);return t(n.num)});else if("custom"==n){if(void 0!==g.customColors&&"domain"in g.customColors&&"range"in g.customColors)var r=a.default.scale.linear().interpolate(a.default.interpolateLab).domain(g.customColors.domain).range(g.customColors.range);e.style("fill",function(n){if(void 0===g.customColors||!g.customColors.hasOwnProperty("colorValues"))return"white";if(g.customColors.colorValues.hasOwnProperty(n.structName)&&g.customColors.colorValues[n.structName].hasOwnProperty(n.num)){var t=g.customColors.colorValues[n.structName];return f(t,n,r)}if(g.customColors.colorValues.hasOwnProperty("")){var t=g.customColors.colorValues[""];return f(t,n,r)}return"white"})}},window.addEventListener("resize",g.setSize,!1),g.zoomer=a.default.behavior.zoom().scaleExtent([.1,10]).x(M).y(w).on("zoomstart",function(){var n=R.selectAll("g.gnode").selectAll(".outline_node");n.each(function(n){n.selected=!1,n.previouslySelected=!1}),n.classed("selected",!1)}).on("zoom",function(){T.attr("transform","translate("+a.default.event.translate+") scale("+a.default.event.scale+")")}),a.default.select(n).select("svg").remove();var _=a.default.select(n).attr("tabindex",1).on("keydown.brush",m).on("keyup.brush",v).each(function(){this.focus()}).append("svg:svg").attr("width",g.options.svgW).attr("height",g.options.svgH).attr("id","plotting-area");g.options.svg=_;var S=_.append("svg:g").on("mousemove",function(){b&&(mpos=a.default.mouse(T.node()),P.attr("x1",b.x).attr("y1",b.y).attr("x2",mpos[0]).attr("y2",mpos[1]))}).on("mousedown",function(){}).on("mouseup",function(){b&&P.attr("class","drag_line_hidden"),p()});g.options.allowPanningAndZooming&&S.call(g.zoomer);var A=S.append("g").datum(function(){return{selected:!1,previouslySelected:!1}}).attr("class","brush"),T=S.append("svg:g"),E=T.append("svg:g"),R=T.append("svg:g");g.brusher=a.default.svg.brush().x(M).y(w).on("brushstart",function(n){var t=R.selectAll("g.gnode").selectAll(".outline_node");t.each(function(n){n.previouslySelected=O&&n.selected})}).on("brush",function(){var n=R.selectAll("g.gnode").selectAll(".outline_node"),t=a.default.event.target.extent();n.classed("selected",function(n){return n.selected=g.options.applyForce&&n.previouslySelected^(t[0][0]<=n.x&&n.x-1){if(n.source.rna==n.target.rna){var t=n.source.rna;t.addPseudoknots(),t.pairtable[n.source.num]=0,t.pairtable[n.target.num]=0,D(t)}else extraLinkIndex=g.extraLinks.indexOf(n),g.extraLinks.splice(extraLinkIndex,1);g.recalculateGraph()}g.update()}(n))};g.addLink=function(n){n.source.rna==n.target.rna?(r=n.source.rna,r.pairtable[n.source.num]=n.target.num,r.pairtable[n.target.num]=n.source.num,D(r)):(n.linkType="intermolecule",g.extraLinks.push(n)),g.recalculateGraph(),g.update()};var F=function(n){if(!a.default.event.defaultPrevented){if(!O){var t=R.selectAll("g.gnode").selectAll(".outline_node");t.classed("selected",function(n){return n.selected=g.options.applyForce&&(n.previouslySelected=!1)})}a.default.select(this).select("circle").classed("selected",n.selected=g.options.applyForce&&!n.previouslySelected)}},q=function(n){if(b){if((x=n)==b)return void p();var t={source:b,target:x,linkType:"basepair",value:1,uid:generateUUID()};for(i=0;in?-1:n>t?1:n>=t?0:NaN}function s(n){return null===n?NaN:+n}function l(n){return!isNaN(n)}function c(n){return{left:function(t,e,r,o){for(arguments.length<3&&(r=0),arguments.length<4&&(o=t.length);o>r;){var a=r+o>>>1;n(t[a],e)<0?r=a+1:o=a}return r},right:function(t,e,r,o){for(arguments.length<3&&(r=0),arguments.length<4&&(o=t.length);o>r;){var a=r+o>>>1;n(t[a],e)>0?o=a:r=a+1}return r}}}function f(n){return n.length}function p(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function h(){this._=Object.create(null)}function d(n){return(n+="")===da||n[0]===ma?ma+n:n}function m(n){return(n+="")[0]===ma?n.slice(1):n}function v(n){return d(n)in this._}function g(n){return(n=d(n))in this._&&delete this._[n]}function y(){var n=[];for(var t in this._)n.push(m(t));return n}function b(){var n=0;for(var t in this._)++n;return n}function x(){for(var n in this._)return!1;return!0}function M(){this._=Object.create(null)}function w(n){return n}function k(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function _(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=va.length;r>e;++e){var o=va[e]+t;if(o in n)return o}}function S(){}function A(){}function T(n){function t(){for(var t,r=e,o=-1,a=r.length;++oe;e++)for(var o,a=n[e],i=0,u=a.length;u>i;i++)(o=a[i])&&t(o,i,e);return n}function Y(n){return ya(n,_a),n}function W(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}var o="__on"+n,a=n.indexOf("."),i=Z;a>0&&(n=n.slice(0,a));var u=Sa.get(n);return u&&(n=u,i=J),a?t?function(){var a=i(t,aa(arguments));r.call(this),this.addEventListener(n,this[o]=a,a.$=e),a._=t}:r:t?S:function(){var t,e=new RegExp("^__on([^.]+)"+ra.requote(n)+"$");for(var r in this)if(t=r.match(e)){var o=this[r];this.removeEventListener(t[1],o,o.$),delete this[r]}}}function Z(n,t){return function(e){var r=ra.event;ra.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ra.event=r}}}function J(n,t){var e=Z(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function $(n){var t=".dragsuppress-"+ ++Ta,e="click"+t,r=ra.select(i(n)).on("touchmove"+t,E).on("dragstart"+t,E).on("selectstart"+t,E);if(null==Aa&&(Aa=!("onselectstart"in n)&&_(n.style,"userSelect")),Aa){var o=a(n).style,u=o[Aa];o[Aa]="none"}return function(n){if(r.on(t,null),Aa&&(o[Aa]=u),n){var a=function(){r.on(e,null)};r.on(e,function(){E(),a()},!0),setTimeout(a,0)}}}function K(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();if(0>Ea){var o=i(n);if(o.scrollX||o.scrollY){var a=(e=ra.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important"))[0][0].getScreenCTM();Ea=!(a.f||a.e),e.remove()}}return Ea?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}var u=n.getBoundingClientRect();return[t.clientX-u.left-n.clientLeft,t.clientY-u.top-n.clientTop]}function Q(){return ra.event.changedTouches[0].identifier}function nn(n){return n>0?1:0>n?-1:0}function tn(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function en(n){return n>1?0:-1>n?Na:Math.acos(n)}function rn(n){return n>1?La:-1>n?-La:Math.asin(n)}function on(n){return((n=Math.exp(n))+1/n)/2}function an(n){return(n=Math.sin(n/2))*n}function un(){}function sn(n,t,e){return this instanceof sn?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof sn?new sn(n.h,n.s,n.l):wn(""+n,kn,sn):new sn(n,t,e)}function ln(n,t,e){function r(n){return Math.round(255*function(n){return n>360?n-=360:0>n&&(n+=360),60>n?o+(a-o)*n/60:180>n?a:240>n?o+(a-o)*(240-n)/60:o}(n))}var o,a;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,o=2*(e=0>e?0:e>1?1:e)-(a=.5>=e?e*(1+t):e+t-e*t),new yn(r(n+120),r(n),r(n-120))}function cn(n,t,e){return this instanceof cn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof cn?new cn(n.h,n.c,n.l):dn(n instanceof pn?n.l:(n=_n((n=ra.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new cn(n,t,e)}function fn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new pn(e,Math.cos(n*=Ua)*t,Math.sin(n)*t)}function pn(n,t,e){return this instanceof pn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof pn?new pn(n.l,n.a,n.b):n instanceof cn?fn(n.h,n.c,n.l):_n((n=yn(n)).r,n.g,n.b):new pn(n,t,e)}function hn(n,t,e){var r=(n+16)/116,o=r+t/500,a=r-e/200;return o=mn(o)*Va,r=mn(r)*Xa,a=mn(a)*Ga,new yn(gn(3.2404542*o-1.5371385*r-.4985314*a),gn(-.969266*o+1.8760108*r+.041556*a),gn(.0556434*o-.2040259*r+1.0572252*a))}function dn(n,t,e){return n>0?new cn(Math.atan2(e,t)*Da,Math.sqrt(t*t+e*e),n):new cn(NaN,NaN,n)}function mn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function vn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function gn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function yn(n,t,e){return this instanceof yn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof yn?new yn(n.r,n.g,n.b):wn(""+n,yn,ln):new yn(n,t,e)}function bn(n){return new yn(n>>16,n>>8&255,255&n)}function xn(n){return bn(n)+""}function Mn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function wn(n,t,e){var r,o,a,i=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(o=r[2].split(","),r[1]){case"hsl":return e(parseFloat(o[0]),parseFloat(o[1])/100,parseFloat(o[2])/100);case"rgb":return t(An(o[0]),An(o[1]),An(o[2]))}return(a=Za.get(n))?t(a.r,a.g,a.b):(null==n||"#"!==n.charAt(0)||isNaN(a=parseInt(n.slice(1),16))||(4===n.length?(i=(3840&a)>>4,i|=i>>4,u=240&a,u|=u>>4,s=15&a,s|=s<<4):7===n.length&&(i=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),t(i,u,s))}function kn(n,t,e){var r,o,a=Math.min(n/=255,t/=255,e/=255),i=Math.max(n,t,e),u=i-a,s=(i+a)/2;return u?(o=.5>s?u/(i+a):u/(2-i-a),r=n==i?(t-e)/u+(e>t?6:0):t==i?(e-n)/u+2:(n-t)/u+4,r*=60):(r=NaN,o=s>0&&1>s?0:r),new sn(r,o,s)}function _n(n,t,e){n=Sn(n),t=Sn(t),e=Sn(e);var r=vn((.4124564*n+.3575761*t+.1804375*e)/Va),o=vn((.2126729*n+.7151522*t+.072175*e)/Xa),a=vn((.0193339*n+.119192*t+.9503041*e)/Ga);return pn(116*o-16,500*(r-o),200*(o-a))}function Sn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function An(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Tn(n){return"function"==typeof n?n:function(){return n}}function En(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Rn(t,e,n,r)}}function Rn(n,t,e,r){function o(){var n,t=s.status;if(!t&&function(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}(s)||t>=200&&300>t||304===t){try{n=e.call(a,s)}catch(n){return void i.error.call(a,n)}i.load.call(a,n)}else i.error.call(a,s)}var a={},i=ra.dispatch("beforesend","progress","load","error"),u={},s=new XMLHttpRequest,l=null;return!this.XDomainRequest||"withCredentials"in s||!/^(http(s)?:)?\/\//.test(n)||(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=o:s.onreadystatechange=function(){s.readyState>3&&o()},s.onprogress=function(n){var t=ra.event;ra.event=n;try{i.progress.call(a,s)}finally{ra.event=t}},a.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?u[n]:(null==t?delete u[n]:u[n]=t+"",a)},a.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",a):t},a.responseType=function(n){return arguments.length?(l=n,a):l},a.response=function(n){return e=n,a},["get","post"].forEach(function(n){a[n]=function(){return a.send.apply(a,[n].concat(aa(arguments)))}}),a.send=function(e,r,o){if(2===arguments.length&&"function"==typeof r&&(o=r,r=null),s.open(e,n,!0),null==t||"accept"in u||(u.accept=t+",*/*"),s.setRequestHeader)for(var c in u)s.setRequestHeader(c,u[c]);return null!=t&&s.overrideMimeType&&s.overrideMimeType(t),null!=l&&(s.responseType=l),null!=o&&a.on("error",o).on("load",function(n){o(null,n)}),i.beforesend.call(a,s),s.send(null==r?null:r),a},a.abort=function(){return s.abort(),a},ra.rebind(a,i,"on"),null==r?a:a.get(function(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}(r))}function Pn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var o=e+t,a={c:n,t:o,n:null};return $a?$a.n=a:Ja=a,$a=a,Ka||(Qa=clearTimeout(Qa),Ka=1,ni(Nn)),a}function Nn(){var n=On(),t=Cn()-n;t>24?(isFinite(t)&&(clearTimeout(Qa),Qa=setTimeout(Nn,t)),Ka=0):(Ka=1,ni(Nn))}function On(){for(var n=Date.now(),t=Ja;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Cn(){for(var n,t=Ja,e=1/0;t;)t.c?(t.t1?Date.UTC.apply(this,arguments):arguments[0])}function zn(n,t,e){function r(t){var e=n(t),r=a(e,1);return r-t>t-e?e:r}function o(e){return t(e=n(new ai(e-1)),1),e}function a(n,e){return t(n=new ai(+n),e),n}function i(n,r,a){var i=o(n),u=[];if(a>1)for(;r>i;)e(i)%a||u.push(new Date(+i)),t(i,1);else for(;r>i;)u.push(new Date(+i)),t(i,1);return u}n.floor=n,n.round=r,n.ceil=o,n.offset=a,n.range=i;var u=n.utc=Fn(n);return u.floor=u,u.round=Fn(r),u.ceil=Fn(o),u.offset=Fn(a),u.range=function(n,t,e){try{ai=Dn;var r=new Dn;return r._=n,i(r,t,e)}finally{ai=Date}},n}function Fn(n){return function(t,e){try{ai=Dn;var r=new Dn;return r._=t,n(r,e)._}finally{ai=Date}}}function qn(n,t,e){var r=0>n?"-":"",o=(r?-n:n)+"",a=o.length;return r+(e>a?new Array(e-a+1).join(t)+o:o)}function jn(n){return new RegExp("^(?:"+n.map(ra.requote).join("|")+")","i")}function Bn(n){for(var t=new h,e=-1,r=n.length;++e68?1900:2e3)}(+r[0]),e+r[0].length):-1}function Yn(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Wn(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Zn(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function Jn(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function $n(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function Kn(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function Qn(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function nt(n,t,e){si.lastIndex=0;var r=si.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function tt(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=ha(t)/60|0,o=ha(t)%60;return e+qn(r,"0",2)+qn(o,"0",2)}function et(n,t,e){li.lastIndex=0;var r=li.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function rt(n){for(var t=n.length,e=-1;++e=0?1:-1,u=i*e,s=Math.cos(t),l=Math.sin(t),c=a*l,f=o*s+c*Math.cos(u),p=c*i*Math.sin(u);mi.add(Math.atan2(p,f)),r=n,o=s,a=l}var t,e,r,o,a;vi.point=function(i,u){vi.point=n,r=(t=i)*Ua,o=Math.cos(u=(e=u)*Ua/2+Na/4),a=Math.sin(u)},vi.lineEnd=function(){n(t,e)}}function ct(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function ft(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function pt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function ht(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function dt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function mt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function vt(n){return[Math.atan2(n[1],n[0]),rn(n[2])]}function gt(n,t){return ha(n[0]-t[0])u;++u)o.point((e=n[u])[0],e[1]);return void o.lineEnd()}var s=new Tt(e,n,null,!0),l=new Tt(e,null,s,!1);s.o=l,a.push(s),i.push(l),s=new Tt(r,n,null,!1),l=new Tt(r,null,s,!0),s.o=l,a.push(s),i.push(l)}}),i.sort(t),At(a),At(i),a.length){for(var u=0,s=e,l=i.length;l>u;++u)i[u].e=s=!s;for(var c,f,p=a[0];;){for(var h=p,d=!0;h.v;)if((h=h.n)===p)return;c=h.z,o.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(var u=0,l=c.length;l>u;++u)o.point((f=c[u])[0],f[1]);else r(h.x,h.n.x,1,o);h=h.n}else{if(d)for(var u=(c=h.p.z).length-1;u>=0;--u)o.point((f=c[u])[0],f[1]);else r(h.x,h.p.x,-1,o);h=h.p}h=h.o,c=h.z,d=!d}while(!h.v);o.lineEnd()}}}function At(n){if(t=n.length){for(var t,e,r=0,o=n[0];++r0){for(M||(a.polygonStart(),M=!0),a.lineStart();++i1&&2&t&&e.push(e.pop().concat(e.shift())),h.push(e.filter(Rt))}var h,d,m,v=t(a),g=o.invert(r[0],r[1]),y={point:i,lineStart:s,lineEnd:l,polygonStart:function(){y.point=c,y.lineStart=f,y.lineEnd=p,h=[],d=[]},polygonEnd:function(){y.point=i,y.lineStart=s,y.lineEnd=l,h=ra.merge(h);var n=function(n,t){var e=n[0],r=n[1],o=[Math.sin(e),-Math.cos(e),0],a=0,i=0;mi.reset();for(var u=0,s=t.length;s>u;++u){var l=t[u],c=l.length;if(c)for(var f=l[0],p=f[0],h=f[1]/2+Na/4,d=Math.sin(h),m=Math.cos(h),v=1;;){v===c&&(v=0);var g=(n=l[v])[0],y=n[1]/2+Na/4,b=Math.sin(y),x=Math.cos(y),M=g-p,w=M>=0?1:-1,k=w*M,_=k>Na,S=d*b;if(mi.add(Math.atan2(S*w*Math.sin(k),m*x+S*Math.cos(k))),a+=_?M+w*Oa:M,_^p>=e^g>=e){var A=pt(ct(f),ct(n));mt(A);var T=pt(o,A);mt(T);var E=(_^M>=0?-1:1)*rn(T[2]);(r>E||r===E&&(A[0]||A[1]))&&(i+=_^M>=0?1:-1)}if(!v++)break;p=g,d=b,m=x,f=n}}return(-Ra>a||Ra>a&&0>mi)^1&i}(g,d);h.length?(M||(a.polygonStart(),M=!0),St(h,Nt,n,e,a)):n&&(M||(a.polygonStart(),M=!0),a.lineStart(),e(null,null,1,a),a.lineEnd()),M&&(a.polygonEnd(),M=!1),h=d=null},sphere:function(){a.polygonStart(),a.lineStart(),e(null,null,1,a),a.lineEnd(),a.polygonEnd()}},b=Pt(),x=t(b),M=!1;return y}}function Rt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:S,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Nt(n,t){return((n=n.x)[0]<0?n[1]-La-Ra:La-n[1])-((t=t.x)[0]<0?t[1]-La-Ra:La-t[1])}function Ot(n,t,e,r){return function(o){var a,i=o.a,u=o.b,s=i.x,l=i.y,c=u.x,f=u.y,p=0,h=1,d=c-s,m=f-l;if(a=n-s,d||!(a>0)){if(a/=d,0>d){if(p>a)return;h>a&&(h=a)}else if(d>0){if(a>h)return;a>p&&(p=a)}if(a=e-s,d||!(0>a)){if(a/=d,0>d){if(a>h)return;a>p&&(p=a)}else if(d>0){if(p>a)return;h>a&&(h=a)}if(a=t-l,m||!(a>0)){if(a/=m,0>m){if(p>a)return;h>a&&(h=a)}else if(m>0){if(a>h)return;a>p&&(p=a)}if(a=r-l,m||!(0>a)){if(a/=m,0>m){if(a>h)return;a>p&&(p=a)}else if(m>0){if(p>a)return;h>a&&(h=a)}return p>0&&(o.a={x:s+p*d,y:l+p*m}),1>h&&(o.b={x:s+h*d,y:l+h*m}),o}}}}}}function Ct(n,t,e,r){function o(r,o){return ha(r[0]-n)0?0:3:ha(r[0]-e)0?2:1:ha(r[1]-t)0?1:0:o>0?3:2}function a(n,t){return i(n.x,t.x)}function i(n,t){var e=o(n,1),r=o(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(u){function s(a,u,s,l){var c=0,f=0;if(null==a||(c=o(a,s))!==(f=o(u,s))||i(a,u)<0^s>0)do{l.point(0===c||3===c?n:e,c>1?r:t)}while((c=(c+s+4)%4)!==f);else l.point(u[0],u[1])}function l(o,a){return o>=n&&e>=o&&a>=t&&r>=a}function c(n,t){l(n,t)&&u.point(n,t)}function f(n,t){n=Math.max(-Pi,Math.min(Pi,n)),t=Math.max(-Pi,Math.min(Pi,t));var e=l(n,t);if(h&&d.push([n,t]),M)m=n,v=t,g=e,M=!1,e&&(u.lineStart(),u.point(n,t));else if(e&&x)u.point(n,t);else{var r={a:{x:y,y:b},b:{x:n,y:t}};S(r)?(x||(u.lineStart(),u.point(r.a.x,r.a.y)),u.point(r.b.x,r.b.y),e||u.lineEnd(),w=!1):e&&(u.lineStart(),u.point(n,t),w=!1)}y=n,b=t,x=e}var p,h,d,m,v,g,y,b,x,M,w,k=u,_=Pt(),S=Ot(n,t,e,r),A={point:c,lineStart:function(){A.point=f,h&&h.push(d=[]),M=!0,x=!1,y=b=NaN},lineEnd:function(){p&&(f(m,v),g&&x&&_.rejoin(),p.push(_.buffer())),A.point=c,x&&u.lineEnd()},polygonStart:function(){u=_,p=[],h=[],w=!0},polygonEnd:function(){u=k,p=ra.merge(p);var t=function(n){for(var t=0,e=h.length,r=n[1],o=0;e>o;++o)for(var a,i=1,u=h[o],s=u.length,l=u[0];s>i;++i)a=u[i],l[1]<=r?a[1]>r&&tn(l,a,n)>0&&++t:a[1]<=r&&tn(l,a,n)<0&&--t,l=a;return 0!==t}([n,r]),e=w&&t,o=p.length;(e||o)&&(u.polygonStart(),e&&(u.lineStart(),s(null,null,1,u),u.lineEnd()),o&&St(p,a,t,s,u),u.polygonEnd()),p=h=d=null}};return A}}function Lt(n){var t=0,e=Na/3,r=Wt(n),o=r(t,e);return o.parallels=function(n){return arguments.length?r(t=n[0]*Na/180,e=n[1]*Na/180):[t/Na*180,e/Na*180]},o}function Ut(n,t){function e(n,t){var e=Math.sqrt(a-2*o*Math.sin(t))/o;return[e*Math.sin(n*=o),i-e*Math.cos(n)]}var r=Math.sin(n),o=(r+Math.sin(t))/2,a=1+r*(2*o-r),i=Math.sqrt(a)/o;return e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/o,rn((a-(n*n+e*e)*o*o)/(2*o))]},e}function Dt(){function n(n,t){Oi+=o*n-r*t,r=n,o=t}var t,e,r,o;zi.point=function(a,i){zi.point=n,t=r=a,e=o=i},zi.lineEnd=function(){n(t,e)}}function zt(){function n(n,t){i.push("M",n,",",t,a)}function t(n,t){i.push("M",n,",",t),u.point=e}function e(n,t){i.push("L",n,",",t)}function r(){u.point=n}function o(){i.push("Z")}var a=Ft(4.5),i=[],u={point:n,lineStart:function(){u.point=t},lineEnd:r,polygonStart:function(){u.lineEnd=o},polygonEnd:function(){u.lineEnd=r,u.point=n},pointRadius:function(n){return a=Ft(n),u},result:function(){if(i.length){var n=i.join("");return i=[],n}}};return u}function Ft(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function qt(n,t){bi+=n,xi+=t,++Mi}function jt(){function n(n,r){var o=n-t,a=r-e,i=Math.sqrt(o*o+a*a);wi+=i*(t+n)/2,ki+=i*(e+r)/2,_i+=i,qt(t=n,e=r)}var t,e;qi.point=function(r,o){qi.point=n,qt(t=r,e=o)}}function Bt(){qi.point=qt}function It(){function n(n,t){var e=n-r,a=t-o,i=Math.sqrt(e*e+a*a);wi+=i*(r+n)/2,ki+=i*(o+t)/2,_i+=i,Si+=(i=o*n-r*t)*(r+n),Ai+=i*(o+t),Ti+=3*i,qt(r=n,o=t)}var t,e,r,o;qi.point=function(a,i){qi.point=n,qt(t=r=a,e=o=i)},qi.lineEnd=function(){n(t,e)}}function Ht(n){function t(t,e){n.moveTo(t+i,e),n.arc(t,e,i,0,Oa)}function e(t,e){n.moveTo(t,e),u.point=r}function r(t,e){n.lineTo(t,e)}function o(){u.point=t}function a(){n.closePath()}var i=4.5,u={point:t,lineStart:function(){u.point=e},lineEnd:o,polygonStart:function(){u.lineEnd=a},polygonEnd:function(){u.lineEnd=o,u.point=t},pointRadius:function(n){return i=n,u},result:S};return u}function Vt(n){function t(n){return(u?r:e)(n)}function e(t){return Gt(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){y=NaN,k.point=a,t.lineStart()}function a(e,r){var a=ct([e,r]),i=n(e,r);o(y,b,g,x,M,w,y=i[0],b=i[1],g=e,x=a[0],M=a[1],w=a[2],u,t),t.point(y,b)}function i(){k.point=e,t.lineEnd()}function s(){r(),k.point=l,k.lineEnd=c}function l(n,t){a(f=n,t),p=y,h=b,d=x,m=M,v=w,k.point=a}function c(){o(y,b,g,x,M,w,p,h,f,d,m,v,u,t),k.lineEnd=i,i()}var f,p,h,d,m,v,g,y,b,x,M,w,k={point:e,lineStart:r,lineEnd:i,polygonStart:function(){t.polygonStart(),k.lineStart=s},polygonEnd:function(){t.polygonEnd(),k.lineStart=r}};return k}function o(t,e,r,u,s,l,c,f,p,h,d,m,v,g){var y=c-t,b=f-e,x=y*y+b*b;if(x>4*a&&v--){var M=u+h,w=s+d,k=l+m,_=Math.sqrt(M*M+w*w+k*k),S=Math.asin(k/=_),A=ha(ha(k)-1)a||ha((y*P+b*N)/x-.5)>.3||i>u*h+s*d+l*m)&&(o(t,e,r,u,s,l,E,R,A,M/=_,w/=_,k,v,g),g.point(E,R),o(E,R,A,M,w,k,c,f,p,h,d,m,v,g))}}var a=.5,i=Math.cos(30*Ua),u=16;return t.precision=function(n){return arguments.length?(u=(a=n*n)>0&&16,t):Math.sqrt(a)},t}function Xt(n){this.stream=n}function Gt(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function Yt(n){return Wt(function(){return n})()}function Wt(n){function t(n){return[(n=u(n[0]*Ua,n[1]*Ua))[0]*p+s,l-n[1]*p]}function e(n){return(n=u.invert((n[0]-s)/p,(l-n[1])/p))&&[n[0]*Da,n[1]*Da]}function r(){u=kt(i=Kt(g,y,b),a);var n=a(m,v);return s=h-n[0]*p,l=d+n[1]*p,o()}function o(){return c&&(c.valid=!1,c=null),t}var a,i,u,s,l,c,f=Vt(function(n,t){return[(n=a(n,t))[0]*p+s,l-n[1]*p]}),p=150,h=480,d=250,m=0,v=0,g=0,y=0,b=0,x=Ri,M=w,k=null,_=null;return t.stream=function(n){return c&&(c.valid=!1),(c=Zt(x(i,f(M(n))))).valid=!0,c},t.clipAngle=function(n){return arguments.length?(x=null==n?(k=n,Ri):function(n){function t(n,t){return Math.cos(n)*Math.cos(t)>o}function e(n,t,e){var r=ct(n),a=ct(t),i=[1,0,0],u=pt(r,a),s=ft(u,u),l=u[0],c=s-l*l;if(!c)return!e&&n;var f=o*s/c,p=-o*l/c,h=pt(i,u),d=dt(i,f),m=dt(u,p);ht(d,m);var v=h,g=ft(d,v),y=ft(v,v),b=g*g-y*(ft(d,d)-1);if(!(0>b)){var x=Math.sqrt(b),M=dt(v,(-g-x)/y);if(ht(M,d),M=vt(M),!e)return M;var w,k=n[0],_=t[0],S=n[1],A=t[1];k>_&&(w=k,k=_,_=w);var T=_-k,E=ha(T-Na)T;if(!E&&S>A&&(w=S,S=A,A=w),R?E?S+A>0^M[1]<(ha(M[0]-k)Na^(k<=M[0]&&M[0]<=_)){var P=dt(v,(-g+x)/y);return ht(P,d),[M,vt(P)]}}}function r(t,e){var r=a?n:Na-n,o=0;return-r>t?o|=1:t>r&&(o|=2),-r>e?o|=4:e>r&&(o|=8),o}var o=Math.cos(n),a=o>0,i=ha(o)>Ra;return Et(t,function(n){var o,u,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,p){var h,d=[f,p],m=t(f,p),v=a?m?0:r(f,p):m?r(f+(0>f?Na:-Na),p):0;if(!o&&(l=s=m)&&n.lineStart(),m!==s&&(h=e(o,d),(gt(o,h)||gt(d,h))&&(d[0]+=Ra,d[1]+=Ra,m=t(d[0],d[1]))),m!==s)c=0,m?(n.lineStart(),h=e(d,o),n.point(h[0],h[1])):(h=e(o,d),n.point(h[0],h[1]),n.lineEnd()),o=h;else if(i&&o&&a^m){var g;v&u||!(g=e(d,o,!0))||(c=0,a?(n.lineStart(),n.point(g[0][0],g[0][1]),n.point(g[1][0],g[1][1]),n.lineEnd()):(n.point(g[1][0],g[1][1]),n.lineEnd(),n.lineStart(),n.point(g[0][0],g[0][1])))}!m||o&>(o,d)||n.point(d[0],d[1]),o=d,s=m,u=v},lineEnd:function(){s&&n.lineEnd(),o=null},clean:function(){return c|(l&&s)<<1}}},ee(n,6*Ua),a?[0,-n]:[-Na,n-Na])}((k=+n)*Ua),o()):k},t.clipExtent=function(n){return arguments.length?(_=n,M=n?Ct(n[0][0],n[0][1],n[1][0],n[1][1]):w,o()):_},t.scale=function(n){return arguments.length?(p=+n,r()):p},t.translate=function(n){return arguments.length?(h=+n[0],d=+n[1],r()):[h,d]},t.center=function(n){return arguments.length?(m=n[0]%360*Ua,v=n[1]%360*Ua,r()):[m*Da,v*Da]},t.rotate=function(n){return arguments.length?(g=n[0]%360*Ua,y=n[1]%360*Ua,b=n.length>2?n[2]%360*Ua:0,r()):[g*Da,y*Da,b*Da]},ra.rebind(t,f,"precision"),function(){return a=n.apply(this,arguments),t.invert=a.invert&&e,r()}}function Zt(n){return Gt(n,function(t,e){n.point(t*Ua,e*Ua)})}function Jt(n,t){return[n,t]}function $t(n,t){return[n>Na?n-Oa:-Na>n?n+Oa:n,t]}function Kt(n,t,e){return n?t||e?kt(ne(n),te(t,e)):ne(n):t||e?te(t,e):$t}function Qt(n){return function(t,e){return[(t+=n)>Na?t-Oa:-Na>t?t+Oa:t,e]}}function ne(n){var t=Qt(n);return t.invert=Qt(-n),t}function te(n,t){function e(n,t){var e=Math.cos(t),u=Math.cos(n)*e,s=Math.sin(n)*e,l=Math.sin(t),c=l*r+u*o;return[Math.atan2(s*a-c*i,u*r-l*o),rn(c*a+s*i)]}var r=Math.cos(n),o=Math.sin(n),a=Math.cos(t),i=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),u=Math.cos(n)*e,s=Math.sin(n)*e,l=Math.sin(t),c=l*a-s*i;return[Math.atan2(s*a+l*i,u*r+c*o),rn(c*r-u*o)]},e}function ee(n,t){var e=Math.cos(n),r=Math.sin(n);return function(o,a,i,u){var s=i*t;null!=o?(o=re(e,o),a=re(e,a),(i>0?a>o:o>a)&&(o+=i*Oa)):(o=n+i*Oa,a=n-.5*s);for(var l,c=o;i>0?c>a:a>c;c-=s)u.point((l=vt([e,-r*Math.cos(c),-r*Math.sin(c)]))[0],l[1])}}function re(n,t){var e=ct(t);e[0]-=n,mt(e);var r=en(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ra)%(2*Math.PI)}function oe(n,t,e){var r=ra.range(n,t-Ra,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function ae(n,t,e){var r=ra.range(n,t-Ra,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function ie(n){return n.source}function ue(n){return n.target}function se(n,t){function e(t,e){var r=Math.cos(t),o=Math.cos(e),a=n(r*o);return[a*o*Math.sin(t),a*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),o=t(r),a=Math.sin(o),i=Math.cos(o);return[Math.atan2(n*a,r*i),Math.asin(r&&e*a/r)]},e}function le(n,t){function e(n,t){i>0?-La+Ra>t&&(t=-La+Ra):t>La-Ra&&(t=La-Ra);var e=i/Math.pow(o(t),a);return[e*Math.sin(a*n),i-e*Math.cos(a*n)]}var r=Math.cos(n),o=function(n){return Math.tan(Na/4+n/2)},a=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(o(t)/o(n)),i=r*Math.pow(o(n),a)/a;return a?(e.invert=function(n,t){var e=i-t,r=nn(a)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/a,2*Math.atan(Math.pow(i/r,1/a))-La]},e):fe}function ce(n,t){function e(n,t){var e=a-t;return[e*Math.sin(o*n),a-e*Math.cos(o*n)]}var r=Math.cos(n),o=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),a=r/o+n;return ha(o)o;o++){for(;r>1&&tn(n[e[r-2]],n[e[r-1]],n[o])<=0;)--r;e[r++]=o}return e.slice(0,r)}function ge(n,t){return n[0]-t[0]||n[1]-t[1]}function ye(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function be(n,t,e,r){var o=n[0],a=e[0],i=t[0]-o,u=r[0]-a,s=n[1],l=e[1],c=t[1]-s,f=r[1]-l,p=(u*(s-l)-f*(o-a))/(f*i-u*c);return[o+p*i,s+p*c]}function xe(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Me(){je(this),this.edge=this.site=this.circle=null}function we(n){var t=Qi.pop()||new Me;return t.site=n,t}function ke(n){Oe(n),Ji.remove(n),Qi.push(n),je(n)}function _e(n){var t=n.circle,e=t.x,r=t.cy,o={x:e,y:r},a=n.P,i=n.N,u=[n];ke(n);for(var s=a;s.circle&&ha(e-s.circle.x)c;++c)l=u[c],s=u[c-1],ze(l.edge,s.site,l.site,o);s=u[0],(l=u[f-1]).edge=Ue(s.site,l.site,null,o),Ne(s),Ne(l)}function Se(n){for(var t,e,r,o,a=n.x,i=n.y,u=Ji._;u;)if((r=Ae(u,i)-a)>Ra)u=u.L;else{if(!((o=a-Te(u,i))>Ra)){r>-Ra?(t=u.P,e=u):o>-Ra?(t=u,e=u.N):t=e=u;break}if(!u.R){t=u;break}u=u.R}var s=we(n);if(Ji.insert(t,s),t||e){if(t===e)return Oe(t),e=we(t.site),Ji.insert(s,e),s.edge=e.edge=Ue(t.site,s.site),Ne(t),void Ne(e);if(!e)return void(s.edge=Ue(t.site,s.site));Oe(t),Oe(e);var l=t.site,c=l.x,f=l.y,p=n.x-c,h=n.y-f,d=e.site,m=d.x-c,v=d.y-f,g=2*(p*v-h*m),y=p*p+h*h,b=m*m+v*v,x={x:(v*y-h*b)/g+c,y:(p*b-m*y)/g+f};ze(e.edge,l,d,x),s.edge=Ue(l,n,null,x),e.edge=Ue(n,d,null,x),Ne(t),Ne(e)}}function Ae(n,t){var e=n.site,r=e.x,o=e.y,a=o-t;if(!a)return r;var i=n.P;if(!i)return-1/0;var u=(e=i.site).x,s=e.y,l=s-t;if(!l)return u;var c=u-r,f=1/a-1/l,p=c/l;return f?(-p+Math.sqrt(p*p-2*f*(c*c/(-2*l)-s+l/2+o-a/2)))/f+r:(r+u)/2}function Te(n,t){var e=n.N;if(e)return Ae(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ee(n){this.site=n,this.edges=[]}function Re(n,t){return t.angle-n.angle}function Pe(){je(this),this.x=this.y=this.arc=this.site=this.cy=null}function Ne(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,o=n.site,a=e.site;if(r!==a){var i=o.x,u=o.y,s=r.x-i,l=r.y-u,c=a.x-i,f=a.y-u,p=2*(s*f-l*c);if(!(p>=-Pa)){var h=s*s+l*l,d=c*c+f*f,m=(f*h-l*d)/p,v=(s*d-c*h)/p,f=v+u,g=nu.pop()||new Pe;g.arc=n,g.site=o,g.x=m+i,g.y=f+Math.sqrt(m*m+v*v),g.cy=f,n.circle=g;for(var y=null,b=Ki._;b;)if(g.yv||v>=u)return;if(p>d){if(a){if(a.y>=l)return}else a={x:v,y:s};e={x:v,y:l}}else{if(a){if(a.yr||r>1)if(p>d){if(a){if(a.y>=l)return}else a={x:(s-o)/r,y:s};e={x:(l-o)/r,y:l}}else{if(a){if(a.yh){if(a){if(a.x>=u)return}else a={x:i,y:r*i+o};e={x:u,y:r*u+o}}else{if(a){if(a.xi;)c=u[i].end(),r=c.x,o=c.y,l=u[++i%s].start(),t=l.x,e=l.y,(ha(r-t)>Ra||ha(o-e)>Ra)&&(u.splice(i,0,new Fe(De(a.site,c,ha(r-f)Ra?{x:f,y:ha(t-f)Ra?{x:ha(e-d)Ra?{x:p,y:ha(t-p)Ra?{x:ha(e-h)a&&(o=t.slice(a,o),u[i]?u[i]+=o:u[++i]=o),(e=e[0])===(r=r[0])?u[i]?u[i]+=r:u[++i]=r:(u[++i]=null,s.push({i:i,x:$e(e,r)})),a=ru.lastIndex;return ar;++r)u[(e=s[r]).i]=e.x(n);return u.join("")})}function Qe(n,t){for(var e,r=ra.interpolators.length;--r>=0&&!(e=ra.interpolators[r](n,t)););return e}function nr(n,t){var e,r=[],o=[],a=n.length,i=t.length,u=Math.min(n.length,t.length);for(e=0;u>e;++e)r.push(Qe(n[e],t[e]));for(;a>e;++e)o[e]=n[e];for(;i>e;++e)o[e]=t[e];return function(n){for(e=0;u>e;++e)o[e]=r[e](n);return o}}function tr(n){return function(t){return 1-n(1-t)}}function er(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function rr(n){return n*n}function or(n){return n*n*n}function ar(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function ir(n){return 1-Math.cos(n*La)}function ur(n){return Math.pow(2,10*(n-1))}function sr(n){return 1-Math.sqrt(1-n*n)}function lr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function cr(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function fr(n){var t=[n.a,n.b],e=[n.c,n.d],r=hr(t),o=pr(t,e),a=hr(function(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}(e,t,-o))||0;t[0]*e[1]180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(dr(e)+"rotate(",null,")")-2,x:$e(n,t)})):t&&e.push(dr(e)+"rotate("+t+")")}(n.rotate,t.rotate,e,r),function(n,t,e,r){n!==t?r.push({i:e.push(dr(e)+"skewX(",null,")")-2,x:$e(n,t)}):t&&e.push(dr(e)+"skewX("+t+")")}(n.skew,t.skew,e,r),function(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var o=e.push(dr(e)+"scale(",null,",",null,")");r.push({i:o-4,x:$e(n[0],t[0])},{i:o-2,x:$e(n[1],t[1])})}else(1!==t[0]||1!==t[1])&&e.push(dr(e)+"scale("+t+")")}(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,o=-1,a=r.length;++o=0;)e.push(o[r])}function Ar(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(a=n.children)&&(o=a.length))for(var o,a,i=-1;++ie;++e)(t=n[e][1])>o&&(r=e,o=t);return r}function zr(n){return n.reduce(Fr,0)}function Fr(n,t){return n+t[1]}function qr(n,t){return jr(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function jr(n,t){for(var e=-1,r=+n[0],o=(n[1]-r)/t,a=[];++e<=t;)a[e]=o*e+r;return a}function Br(n){return[ra.min(n),ra.max(n)]}function Ir(n,t){return n.value-t.value}function Hr(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Vr(n,t){n._pack_next=t,t._pack_prev=n}function Xr(n,t){var e=t.x-n.x,r=t.y-n.y,o=n.r+t.r;return.999*o*o>e*e+r*r}function Gr(n){function t(n){c=Math.min(n.x-n.r,c),f=Math.max(n.x+n.r,f),p=Math.min(n.y-n.r,p),h=Math.max(n.y+n.r,h)}if((e=n.children)&&(l=e.length)){var e,r,o,a,i,u,s,l,c=1/0,f=-1/0,p=1/0,h=-1/0;if(e.forEach(Yr),(r=e[0]).x=-r.r,r.y=0,t(r),l>1&&((o=e[1]).x=o.r,o.y=0,t(o),l>2))for(a=e[2],Zr(r,o,a),t(a),Hr(r,a),r._pack_prev=a,Hr(a,o),o=r._pack_next,i=3;l>i;i++){Zr(r,o,a=e[i]);var d=0,m=1,v=1;for(u=o._pack_next;u!==o;u=u._pack_next,m++)if(Xr(u,a)){d=1;break}if(1==d)for(s=r._pack_prev;s!==u._pack_prev&&!Xr(s,a);s=s._pack_prev,v++);d?(v>m||m==v&&o.ri;i++)(a=e[i]).x-=g,a.y-=y,b=Math.max(b,a.r+Math.sqrt(a.x*a.x+a.y*a.y));n.r=b,e.forEach(Wr)}}function Yr(n){n._pack_next=n._pack_prev=n}function Wr(n){delete n._pack_next,delete n._pack_prev}function Zr(n,t,e){var r=n.r+e.r,o=t.x-n.x,a=t.y-n.y;if(r&&(o||a)){var i=t.r+e.r,u=o*o+a*a,s=.5+((r*=r)-(i*=i))/(2*u),l=Math.sqrt(Math.max(0,2*i*(r+u)-(r-=u)*r-i*i))/(2*u);e.x=n.x+s*o+l*a,e.y=n.y+s*a-l*o}else e.x=n.x+r,e.y=n.y}function Jr(n,t){return n.parent==t.parent?1:2}function $r(n){var t=n.children;return t.length?t[0]:n.t}function Kr(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Qr(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function no(n,t,e){return n.a.parent===t.parent?n.a:e}function to(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function eo(n,t){var e=n.x+t[3],r=n.y+t[0],o=n.dx-t[1]-t[3],a=n.dy-t[0]-t[2];return 0>o&&(e+=o/2,o=0),0>a&&(r+=a/2,a=0),{x:e,y:r,dx:o,dy:a}}function ro(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function oo(n){return n.rangeExtent?n.rangeExtent():ro(n.range())}function ao(n,t,e,r){var o=e(n[0],n[1]),a=r(t[0],t[1]);return function(n){return a(o(n))}}function io(n,t){var e,r=0,o=n.length-1,a=n[r],i=n[o];return a>i&&(e=r,r=o,o=e,e=a,a=i,i=e),n[r]=t.floor(a),n[o]=t.ceil(i),n}function uo(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:du}function so(n,t,e,r){var o=[],a=[],i=0,u=Math.min(n.length,t.length)-1;for(n[u]=a?o*=10:.35>=a?o*=5:.75>=a&&(o*=2),e[0]=Math.ceil(e[0]/o)*o,e[1]=Math.floor(e[1]/o)*o+.5*o,e[2]=o,e}function po(n,t){return ra.range.apply(ra,fo(n,t))}function ho(n,t,e){var r=fo(n,t);if(e){var o=ei.exec(e);if(o.shift(),"s"===o[8]){var a=ra.formatPrefix(Math.max(ha(r[0]),ha(r[1])));return o[7]||(o[7]="."+mo(a.scale(r[2]))),o[8]="f",e=ra.format(o.join("")),function(n){return e(a.scale(n))+a.symbol}}o[7]||(o[7]="."+function(n,t){var e=mo(t[2]);return n in mu?Math.abs(e-mo(Math.max(ha(t[0]),ha(t[1]))))+ +("e"!==n):e-2*("%"===n)}(o[8],r)),e=o.join("")}else e=",."+mo(r[2])+"f";return ra.format(e)}function mo(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function vo(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function go(){return 0}function yo(n){return n.innerRadius}function bo(n){return n.outerRadius}function xo(n){return n.startAngle}function Mo(n){return n.endAngle}function wo(n){return n&&n.padAngle}function ko(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function _o(n,t,e,r,o){var a=n[0]-t[0],i=n[1]-t[1],u=(o?r:-r)/Math.sqrt(a*a+i*i),s=u*i,l=-u*a,c=n[0]+s,f=n[1]+l,p=t[0]+s,h=t[1]+l,d=(c+p)/2,m=(f+h)/2,v=p-c,g=h-f,y=v*v+g*g,b=e-r,x=c*h-p*f,M=(0>g?-1:1)*Math.sqrt(Math.max(0,b*b*y-x*x)),w=(x*g-v*M)/y,k=(-x*v-g*M)/y,_=(x*g+v*M)/y,S=(-x*v+g*M)/y,A=w-d,T=k-m,E=_-d,R=S-m;return A*A+T*T>E*E+R*R&&(w=_,k=S),[[w-s,k-l],[w*e/b,k*e/b]]}function So(n){function t(t){function i(){l.push("M",a(n(c),u))}for(var s,l=[],c=[],f=-1,p=t.length,h=Tn(e),d=Tn(r);++f1?n.join("L"):n+"Z"}function To(n){return n.join("L")+"Z"}function Eo(n){for(var t=0,e=n.length,r=n[0],o=[r[0],",",r[1]];++t1){u=t[1],a=n[s],s++,r+="C"+(o[0]+i[0])+","+(o[1]+i[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;l9&&(o=3*t/Math.sqrt(o),i[u]=o*e,i[u+1]=o*r));for(u=-1;++u<=s;)o=(n[Math.min(s,u+1)][0]-n[Math.max(0,u-1)][0])/(6*(1+i[u]*i[u])),a.push([o||0,i[u]*o||0]);return a}function zo(n){for(var t,e,r,o=-1,a=n.length;++o+h){var m=p[h];m.timer.c=null,m.timer.t=NaN,--p.count,delete p[h]}s.c=i,Pn(function(){return s.c&&i(e||1)&&(s.c=null,s.t=NaN),1},0,u),p.active=r,d.event&&d.event.start.call(n,n.__data__,t),f=[],d.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&f.push(r)}),c=d.ease,l=d.duration}function i(o){for(var a=o/l,i=c(a),u=f.length;u>0;)f[--u].call(n,i);return a>=1?(d.event&&d.event.end.call(n,n.__data__,t),--p.count?delete p[r]:delete n[e],1):void 0}var u,s,l,c,f,p=n[e]||(n[e]={active:0,count:0}),d=p[r];d||(u=o.time,s=Pn(function(n){var t=d.delay;return s.t=t+u,n>=t?a(n-t):void(s.c=a)},0,u),d=p[r]={tween:new h,time:u,timer:s,delay:o.delay,duration:o.duration,ease:o.ease,index:t},o=null,++p.count)}function Jo(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function $o(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function Ko(n){return n.toISOString()}function Qo(n,t,e){function r(t){return n(t)}function o(n,e){var r=n[1]-n[0],o=r/e,a=ra.bisect(Iu,o);return a==Iu.length?[t.year,fo(n.map(function(n){return n/31536e6}),e)[2]]:a?t[o/Iu[a-1]1?{floor:function(t){for(;e(t=n.floor(t));)t=na(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=na(+t+1);return t}}:n))},r.ticks=function(n,t){var e=ro(r.domain()),a=null==n?o(e,10):"number"==typeof n?o(e,n):!n.range&&[{range:n},t];return a&&(n=a[0],t=a[1]),n.range(e[0],na(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Qo(n.copy(),t,e)},lo(r,n)}function na(n){return new Date(n)}function ta(n){return JSON.parse(n.responseText)}function ea(n){var t=ia.createRange();return t.selectNode(ia.body),t.createContextualFragment(n.responseText)}var ra={version:"3.5.13"},oa=[].slice,aa=function(n){return oa.call(n)},ia=this.document;if(ia)try{aa(ia.documentElement.childNodes)[0].nodeType}catch(n){aa=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),ia)try{ia.createElement("DIV").style.setProperty("opacity",0,"")}catch(n){var ua=this.Element.prototype,sa=ua.setAttribute,la=ua.setAttributeNS,ca=this.CSSStyleDeclaration.prototype,fa=ca.setProperty;ua.setAttribute=function(n,t){sa.call(this,n,t+"")},ua.setAttributeNS=function(n,t,e){la.call(this,n,t,e+"")},ca.setProperty=function(n,t,e){fa.call(this,n,t+"",e)}}ra.ascending=u,ra.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ra.min=function(n,t){var e,r,o=-1,a=n.length;if(1===arguments.length){for(;++o=r){e=r;break}for(;++or&&(e=r)}else{for(;++o=r){e=r;break}for(;++or&&(e=r)}return e},ra.max=function(n,t){var e,r,o=-1,a=n.length;if(1===arguments.length){for(;++o=r){e=r;break}for(;++oe&&(e=r)}else{for(;++o=r){e=r;break}for(;++oe&&(e=r)}return e},ra.extent=function(n,t){var e,r,o,a=-1,i=n.length;if(1===arguments.length){for(;++a=r){e=o=r;break}for(;++ar&&(e=r),r>o&&(o=r))}else{for(;++a=r){e=o=r;break}for(;++ar&&(e=r),r>o&&(o=r))}return[e,o]},ra.sum=function(n,t){var e,r=0,o=n.length,a=-1;if(1===arguments.length)for(;++a1?i/(c-1):void 0},ra.deviation=function(){var n=ra.variance.apply(this,arguments);return n?Math.sqrt(n):n};var pa=c(u);ra.bisectLeft=pa.left,ra.bisect=ra.bisectRight=pa.right,ra.bisector=function(n){return c(1===n.length?function(t,e){return u(n(t),e)}:n)},ra.shuffle=function(n,t,e){(a=arguments.length)<3&&(e=n.length,2>a&&(t=0));for(var r,o,a=e-t;a;)o=Math.random()*a--|0,r=n[a+t],n[a+t]=n[o+t],n[o+t]=r;return n},ra.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ra.pairs=function(n){for(var t=0,e=n.length-1,r=n[0],o=new Array(0>e?0:e);e>t;)o[t]=[r,r=n[++t]];return o},ra.zip=function(){if(!(r=arguments.length))return[];for(var n=-1,t=ra.min(arguments,f),e=new Array(t);++n=0;)for(r=n[o],t=r.length;--t>=0;)e[--i]=r[t];return e};var ha=Math.abs;ra.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e==1/0)throw new Error("infinite range");var r,o=[],a=function(n){for(var t=1;n*t%1;)t*=10;return t}(ha(e)),i=-1;if(n*=a,t*=a,0>(e*=a))for(;(r=n+e*++i)>t;)o.push(r/a);else for(;(r=n+e*++i)=o.length)return e?e.call(r,i):t?i.sort(t):i;for(var s,l,c,f,p=-1,d=i.length,m=o[u++],v=new h;++p=o.length)return t;var r=[],i=a[e++];return t.forEach(function(t,o){r.push({key:t,values:n(o,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}(n(ra.map,t,0),0)},r.key=function(n){return o.push(n),r},r.sortKeys=function(n){return a[o.length-1]=n,r},r.sortValues=function(n){return t=n,r},r.rollup=function(n){return e=n,r},r},ra.set=function(n){var t=new M;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},p(M,{has:v,add:function(n){return this._[d(n+="")]=!0,n},remove:g,values:y,size:b,empty:x,forEach:function(n){for(var t in this._)n.call(this,m(t))}}),ra.behavior={},ra.rebind=function(n,t){for(var e,r=1,o=arguments.length;++r=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ra.event=null,ra.requote=function(n){return n.replace(ga,"\\$&")};var ga=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ya={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ba=function(n,t){return t.querySelector(n)},xa=function(n,t){return t.querySelectorAll(n)},Ma=function(n,t){var e=n.matches||n[_(n,"matchesSelector")];return(Ma=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(ba=function(n,t){return Sizzle(n,t)[0]||null},xa=Sizzle,Ma=Sizzle.matchesSelector),ra.selection=function(){return ra.select(ia.documentElement)};var wa=ra.selection.prototype=[];wa.select=function(n){var t,e,r,o,a=[];n=O(n);for(var i=-1,u=this.length;++i=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),ka.hasOwnProperty(e)?{space:ka[e],local:n}:n}},wa.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return(n=ra.ns.qualify(n)).local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(L(t,n[t]));return this}return this.each(L(n,t))},wa.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=z(n)).length,o=-1;if(t=e.classList){for(;++or){if("string"!=typeof n){for(e in 2>r&&(t=""),n)this.each(j(e,n[e],t));return this}if(2>r){var o=this.node();return i(o).getComputedStyle(o,null).getPropertyValue(n)}e=""}return this.each(j(n,t,e))},wa.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(B(t,n[t]));return this}return this.each(B(n,t))},wa.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},wa.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},wa.append=function(n){return n=I(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},wa.insert=function(n,t){return n=I(n),t=O(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},wa.remove=function(){return this.each(H)},wa.data=function(n,t){function e(n,e){var r,o,a,i=n.length,c=e.length,f=Math.min(i,c),p=new Array(c),d=new Array(c),m=new Array(i);if(t){var v,g=new h,y=new Array(i);for(r=-1;++rr;++r)d[r]=V(e[r]);for(;i>r;++r)m[r]=n[r]}d.update=p,d.parentNode=p.parentNode=m.parentNode=n.parentNode,u.push(d),s.push(p),l.push(m)}var r,o,a=-1,i=this.length;if(!arguments.length){for(n=new Array(i=(r=this[0]).length);++aa;a++){o.push(t=[]),t.parentNode=(e=this[a]).parentNode;for(var u=0,s=e.length;s>u;u++)(r=e[u])&&n.call(r,r.__data__,u,a)&&t.push(r)}return N(o)},wa.order=function(){for(var n=-1,t=this.length;++n=0;)(e=r[o])&&(a&&a!==e.nextSibling&&a.parentNode.insertBefore(e,a),a=e);return this},wa.sort=function(n){n=function(n){return arguments.length||(n=u),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}.apply(this,arguments);for(var t=-1,e=this.length;++tn;n++)for(var e=this[n],r=0,o=e.length;o>r;r++){var a=e[r];if(a)return a}return null},wa.size=function(){var n=0;return G(this,function(){++n}),n};var _a=[];ra.selection.enter=Y,ra.selection.enter.prototype=_a,_a.append=wa.append,_a.empty=wa.empty,_a.node=wa.node,_a.call=wa.call,_a.size=wa.size,_a.select=function(n){for(var t,e,r,o,a,i=[],u=-1,s=this.length;++u=t&&(t=o+1);!(i=u[t])&&++tr){if("string"!=typeof n){for(e in 2>r&&(t=!1),n)this.each(W(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(W(n,t,e))};var Sa=ra.map({mouseenter:"mouseover",mouseleave:"mouseout"});ia&&Sa.forEach(function(n){"on"+n in ia&&Sa.remove(n)});var Aa,Ta=0;ra.mouse=function(n){return K(n,R())};var Ea=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ra.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=R().changedTouches),t)for(var r,o=0,a=t.length;a>o;++o)if((r=t[o]).identifier===e)return K(n,r)},ra.behavior.drag=function(){function n(){this.on("mousedown.drag",o).on("touchstart.drag",a)}function t(n,t,o,a,i){return function(){var u,s=this,l=ra.event.target,c=s.parentNode,f=e.of(s,arguments),p=0,h=n(),d=".drag"+(null==h?"":"-"+h),m=ra.select(o(l)).on(a+d,function(){var n,e,r=t(c,h);r&&(n=r[0]-g[0],e=r[1]-g[1],p|=n|e,g=r,f({type:"drag",x:r[0]+u[0],y:r[1]+u[1],dx:n,dy:e}))}).on(i+d,function(){t(c,h)&&(m.on(a+d,null).on(i+d,null),v(p),f({type:"dragend"}))}),v=$(l),g=t(c,h);u=r?[(u=r.apply(s,arguments)).x-g[0],u.y-g[1]]:[0,0],f({type:"dragstart"})}}var e=P(n,"drag","dragstart","dragend"),r=null,o=t(S,ra.mouse,i,"mousemove","mouseup"),a=t(Q,ra.touch,w,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},ra.rebind(n,e,"on")},ra.touches=function(n,t){return arguments.length<2&&(t=R().touches),t?aa(t).map(function(t){var e=K(n,t);return e.identifier=t.identifier,e}):[]};var Ra=1e-6,Pa=Ra*Ra,Na=Math.PI,Oa=2*Na,Ca=Oa-Ra,La=Na/2,Ua=Na/180,Da=180/Na,za=Math.SQRT2;ra.interpolateZoom=function(n,t){var e,r,o=n[0],a=n[1],i=n[2],u=t[0],s=t[1],l=t[2],c=u-o,f=s-a,p=c*c+f*f;if(Pa>p)r=Math.log(l/i)/za,e=function(n){return[o+n*c,a+n*f,i*Math.exp(za*n*r)]};else{var h=Math.sqrt(p),d=(l*l-i*i+4*p)/(2*i*2*h),m=(l*l-i*i-4*p)/(2*l*2*h),v=Math.log(Math.sqrt(d*d+1)-d),g=Math.log(Math.sqrt(m*m+1)-m);r=(g-v)/za,e=function(n){var t=n*r,e=on(v),u=i/(2*h)*(e*function(n){return((n=Math.exp(2*n))-1)/(n+1)}(za*t+v)-function(n){return((n=Math.exp(n))-1/n)/2}(v));return[o+u*c,a+u*f,i*e/on(za*t+v)]}}return e.duration=1e3*r,e},ra.behavior.zoom=function(){function n(n){n.on(R,c).on(qa+".zoom",p).on("dblclick.zoom",h).on(C,f)}function t(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function e(n){k.k=Math.max(S[0],Math.min(S[1],n))}function r(n,t){t=function(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,o,a,i){t.__chart__={x:k.x,y:k.y,k:k.k},e(Math.pow(2,i)),r(m=o,a),t=ra.select(t),A>0&&(t=t.transition().duration(A)),t.call(n.event)}function a(){x&&x.domain(b.range().map(function(n){return(n-k.x)/k.k}).map(b.invert)),w&&w.domain(M.range().map(function(n){return(n-k.y)/k.k}).map(M.invert))}function u(n){T++||n({type:"zoomstart"})}function s(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function l(n){--T||(n({type:"zoomend"}),m=null)}function c(){var n=this,e=L.of(n,arguments),o=0,a=ra.select(i(n)).on(N,function(){o=1,r(ra.mouse(n),c),s(e)}).on(O,function(){a.on(N,null).on(O,null),f(o),l(e)}),c=t(ra.mouse(n)),f=$(n);Ou.call(n),u(e)}function f(){function n(){var n=ra.touches(d);return h=k.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function a(){var t=ra.event.target;ra.select(t).on(x,i).on(M,p),w.push(t);for(var e=ra.event.changedTouches,r=0,a=e.length;a>r;++r)v[e[r].identifier]=null;var u=n(),s=Date.now();if(1===u.length){if(500>s-y){var l=u[0];o(d,l,v[l.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),E()}y=s}else if(u.length>1){var l=u[0],c=u[1],f=l[0]-c[0],h=l[1]-c[1];g=f*f+h*h}}function i(){var n,t,o,a,i=ra.touches(d);Ou.call(d);for(var u=0,l=i.length;l>u;++u,a=null)if(o=i[u],a=v[o.identifier]){if(t)break;n=o,t=a}if(a){var c=(c=o[0]-n[0])*c+(c=o[1]-n[1])*c,f=g&&Math.sqrt(c/g);n=[(n[0]+o[0])/2,(n[1]+o[1])/2],t=[(t[0]+a[0])/2,(t[1]+a[1])/2],e(f*h)}y=null,r(n,t),s(m)}function p(){if(ra.event.touches.length){for(var t=ra.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var o in v)return void n()}ra.selectAll(w).on(b,null),_.on(R,c).on(C,f),S(),l(m)}var h,d=this,m=L.of(d,arguments),v={},g=0,b=".zoom-"+ra.event.changedTouches[0].identifier,x="touchmove"+b,M="touchend"+b,w=[],_=ra.select(d),S=$(d);a(),u(m),_.on(R,null).on(C,a)}function p(){var n=L.of(this,arguments);g?clearTimeout(g):(Ou.call(this),d=t(m=v||ra.mouse(this)),u(n)),g=setTimeout(function(){g=null,l(n)},50),E(),e(Math.pow(2,.002*Fa())*k.k),r(m,d),s(n)}function h(){var n=ra.mouse(this),e=Math.log(k.k)/Math.LN2;o(this,n,t(n),ra.event.shiftKey?Math.ceil(e)-1:Math.floor(e)+1)}var d,m,v,g,y,b,x,M,w,k={x:0,y:0,k:1},_=[960,500],S=ja,A=250,T=0,R="mousedown.zoom",N="mousemove.zoom",O="mouseup.zoom",C="touchstart.zoom",L=P(n,"zoomstart","zoom","zoomend");return qa||(qa="onwheel"in ia?(Fa=function(){return-ra.event.deltaY*(ra.event.deltaMode?120:1)},"wheel"):"onmousewheel"in ia?(Fa=function(){return ra.event.wheelDelta},"mousewheel"):(Fa=function(){return-ra.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=L.of(this,arguments),t=k;Pu?ra.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},u(n)}).tween("zoom:zoom",function(){var e=_[0],r=_[1],o=m?m[0]:e/2,a=m?m[1]:r/2,i=ra.interpolateZoom([(o-k.x)/k.k,(a-k.y)/k.k,e/k.k],[(o-t.x)/t.k,(a-t.y)/t.k,e/t.k]);return function(t){var r=i(t),u=e/r[2];this.__chart__=k={x:o-r[0]*u,y:a-r[1]*u,k:u},s(n)}}).each("interrupt.zoom",function(){l(n)}).each("end.zoom",function(){l(n)}):(this.__chart__=k,u(n),s(n),l(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},e(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(S=null==t?ja:[+t[0],+t[1]],n):S},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(_=t&&[+t[0],+t[1]],n):_},n.duration=function(t){return arguments.length?(A=+t,n):A},n.x=function(t){return arguments.length?(x=t,b=t.copy(),k={x:0,y:0,k:1},n):x},n.y=function(t){return arguments.length?(w=t,M=t.copy(),k={x:0,y:0,k:1},n):w},ra.rebind(n,L,"on")};var Fa,qa,ja=[0,1/0];ra.color=un,un.prototype.toString=function(){return this.rgb()+""},ra.hsl=sn;var Ba=sn.prototype=new un;Ba.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new sn(this.h,this.s,this.l/n)},Ba.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new sn(this.h,this.s,n*this.l)},Ba.rgb=function(){return ln(this.h,this.s,this.l)},ra.hcl=cn;var Ia=cn.prototype=new un;Ia.brighter=function(n){return new cn(this.h,this.c,Math.min(100,this.l+Ha*(arguments.length?n:1)))},Ia.darker=function(n){return new cn(this.h,this.c,Math.max(0,this.l-Ha*(arguments.length?n:1)))},Ia.rgb=function(){return fn(this.h,this.c,this.l).rgb()},ra.lab=pn;var Ha=18,Va=.95047,Xa=1,Ga=1.08883,Ya=pn.prototype=new un;Ya.brighter=function(n){return new pn(Math.min(100,this.l+Ha*(arguments.length?n:1)),this.a,this.b)},Ya.darker=function(n){return new pn(Math.max(0,this.l-Ha*(arguments.length?n:1)),this.a,this.b)},Ya.rgb=function(){return hn(this.l,this.a,this.b)},ra.rgb=yn;var Wa=yn.prototype=new un;Wa.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,o=30;return t||e||r?(t&&o>t&&(t=o),e&&o>e&&(e=o),r&&o>r&&(r=o),new yn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new yn(o,o,o)},Wa.darker=function(n){return new yn((n=Math.pow(.7,arguments.length?n:1))*this.r,n*this.g,n*this.b)},Wa.hsl=function(){return kn(this.r,this.g,this.b)},Wa.toString=function(){return"#"+Mn(this.r)+Mn(this.g)+Mn(this.b)};var Za=ra.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Za.forEach(function(n,t){Za.set(n,bn(t))}),ra.functor=Tn,ra.xhr=En(w),ra.dsv=function(n,t){function e(n,e,a){arguments.length<3&&(a=e,e=null);var i=Rn(n,t,null==e?r:o(e),a);return i.row=function(n){return arguments.length?i.response(null==(e=n)?r:o(n)):e},i}function r(n){return e.parse(n.responseText)}function o(n){return function(t){return e.parse(t.responseText,n)}}function a(t){return t.map(i).join(n)}function i(n){return u.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var u=new RegExp('["'+n+"\n]"),s=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var o=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(o(n),e)}:o})},e.parseRows=function(n,t){function e(){if(c>=l)return i;if(o)return o=!1,a;var t=c;if(34===n.charCodeAt(t)){for(var e=t;e++c;){var r=n.charCodeAt(c++),u=1;if(10===r)o=!0;else if(13===r)o=!0,10===n.charCodeAt(c)&&(++c,++u);else if(r!==s)continue;return n.slice(t,c-u)}return n.slice(t)}for(var r,o,a={},i={},u=[],l=n.length,c=0,f=0;(r=e())!==i;){for(var p=[];r!==a&&r!==i;)p.push(r),r=e();t&&null==(p=t(p,f++))||u.push(p)}return u},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new M,o=[];return t.forEach(function(n){for(var t in n)r.has(t)||o.push(r.add(t))}),[o.map(i).join(n)].concat(t.map(function(t){return o.map(function(n){return i(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(a).join("\n")},e},ra.csv=ra.dsv(",","text/csv"),ra.tsv=ra.dsv("\t","text/tab-separated-values");var Ja,$a,Ka,Qa,ni=this[_(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ra.timer=function(){Pn.apply(this,arguments)},ra.timer.flush=function(){On(),Cn()},ra.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var ti=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(function(n,t){var e=Math.pow(10,3*ha(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}});ra.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ra.round(n,Ln(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),ti[8+e/3]};var ei=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,ri=ra.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ra.round(n,Ln(n,t))).toFixed(Math.max(0,Math.min(20,Ln(n*(1+1e-15),t))))}}),oi=ra.time={},ai=Date;Dn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ii.setUTCDate.apply(this._,arguments)},setDay:function(){ii.setUTCDay.apply(this._,arguments)},setFullYear:function(){ii.setUTCFullYear.apply(this._,arguments)},setHours:function(){ii.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ii.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ii.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ii.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ii.setUTCSeconds.apply(this._,arguments)},setTime:function(){ii.setTime.apply(this._,arguments)}};var ii=Date.prototype;oi.year=zn(function(n){return(n=oi.day(n)).setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),oi.years=oi.year.range,oi.years.utc=oi.year.utc.range,oi.day=zn(function(n){var t=new ai(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),oi.days=oi.day.range,oi.days.utc=oi.day.utc.range,oi.dayOfYear=function(n){var t=oi.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=oi[n]=zn(function(n){return(n=oi.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=oi.year(n).getDay();return Math.floor((oi.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});oi[n+"s"]=e.range,oi[n+"s"].utc=e.utc.range,oi[n+"OfYear"]=function(n){var e=oi.year(n).getDay();return Math.floor((oi.dayOfYear(n)+(e+t)%7)/7)}}),oi.week=oi.sunday,oi.weeks=oi.sunday.range,oi.weeks.utc=oi.sunday.utc.range,oi.weekOfYear=oi.sundayOfYear;var ui={"-":"",_:" ",0:"0"},si=/^\s*\d+/,li=/^%/;ra.locale=function(n){return{numberFormat:function(n){var t=n.decimal,e=n.thousands,r=n.grouping,o=n.currency,a=r&&e?function(n,t){for(var o=n.length,a=[],i=0,u=r[0],s=0;o>0&&u>0&&(s+u+1>t&&(u=Math.max(1,t-s)),a.push(n.substring(o-=u,o+u)),!((s+=u+1)>t));)u=r[i=(i+1)%r.length];return a.reverse().join(e)}:w;return function(n){var e=ei.exec(n),r=e[1]||" ",i=e[2]||">",u=e[3]||"-",s=e[4]||"",l=e[5],c=+e[6],f=e[7],p=e[8],h=e[9],d=1,m="",v="",g=!1,y=!0;switch(p&&(p=+p.substring(1)),(l||"0"===r&&"="===i)&&(l=r="0",i="="),h){case"n":f=!0,h="g";break;case"%":d=100,v="%",h="f";break;case"p":d=100,v="%",h="r";break;case"b":case"o":case"x":case"X":"#"===s&&(m="0"+h.toLowerCase());case"c":y=!1;case"d":g=!0,p=0;break;case"s":d=-1,h="r"}"$"===s&&(m=o[0],v=o[1]),"r"!=h||p||(h="g"),null!=p&&("g"==h?p=Math.max(1,Math.min(21,p)):("e"==h||"f"==h)&&(p=Math.max(0,Math.min(20,p)))),h=ri.get(h)||Un;var b=l&&f;return function(n){var e=v;if(g&&n%1)return"";var o=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===u?"":u;if(0>d){var s=ra.formatPrefix(n,p);n=s.scale(n),e=s.symbol+v}else n*=d;var x,M,w=(n=h(n,p)).lastIndexOf(".");if(0>w){var k=y?n.lastIndexOf("e"):-1;0>k?(x=n,M=""):(x=n.substring(0,k),M=n.substring(k))}else x=n.substring(0,w),M=t+n.substring(w+1);!l&&f&&(x=a(x,1/0));var _=m.length+x.length+M.length+(b?0:o.length),S=c>_?new Array(_=c-_+1).join(r):"";return b&&(x=a(S+x,S.length?c-M.length:1/0)),o+=m,n=x+M,("<"===i?o+n+S:">"===i?S+o+n:"^"===i?S.substring(0,_>>=1)+o+n+S.substring(_):o+(b?n:S+n))+e}}}(n),timeFormat:function(n){function t(n){function t(t){for(var e,o,a,i=[],u=-1,s=0;++uu;){if(r>=l)return-1;if(37===(o=t.charCodeAt(u++))){if(i=t.charAt(u++),!(a=M[i in ui?t.charAt(u++):i])||(r=a(n,e,r))<0)return-1}else if(o!=e.charCodeAt(r++))return-1}return r}var r=n.dateTime,o=n.date,a=n.time,i=n.periods,u=n.days,s=n.shortDays,l=n.months,c=n.shortMonths;t.utc=function(n){function e(n){try{var t=new(ai=Dn);return t._=n,r(t)}finally{ai=Date}}var r=t(n);return e.parse=function(n){try{ai=Dn;var t=r.parse(n);return t&&t._}finally{ai=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=rt;var f=ra.map(),p=jn(u),h=Bn(u),d=jn(s),m=Bn(s),v=jn(l),g=Bn(l),y=jn(c),b=Bn(c);i.forEach(function(n,t){f.set(n.toLowerCase(),t)});var x={a:function(n){return s[n.getDay()]},A:function(n){return u[n.getDay()]},b:function(n){return c[n.getMonth()]},B:function(n){return l[n.getMonth()]},c:t(r),d:function(n,t){return qn(n.getDate(),t,2)},e:function(n,t){return qn(n.getDate(),t,2)},H:function(n,t){return qn(n.getHours(),t,2)},I:function(n,t){return qn(n.getHours()%12||12,t,2)},j:function(n,t){return qn(1+oi.dayOfYear(n),t,3)},L:function(n,t){return qn(n.getMilliseconds(),t,3)},m:function(n,t){return qn(n.getMonth()+1,t,2)},M:function(n,t){return qn(n.getMinutes(),t,2)},p:function(n){return i[+(n.getHours()>=12)]},S:function(n,t){return qn(n.getSeconds(),t,2)},U:function(n,t){return qn(oi.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return qn(oi.mondayOfYear(n),t,2)},x:t(o),X:t(a),y:function(n,t){return qn(n.getFullYear()%100,t,2)},Y:function(n,t){return qn(n.getFullYear()%1e4,t,4)},Z:tt,"%":function(){return"%"}},M={a:function(n,t,e){d.lastIndex=0;var r=d.exec(t.slice(e));return r?(n.w=m.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(n,t,e){p.lastIndex=0;var r=p.exec(t.slice(e));return r?(n.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(n,t,e){y.lastIndex=0;var r=y.exec(t.slice(e));return r?(n.m=b.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(n,t,e){v.lastIndex=0;var r=v.exec(t.slice(e));return r?(n.m=g.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(n,t,r){return e(n,x.c.toString(),t,r)},d:Zn,e:Zn,H:$n,I:$n,j:Jn,L:nt,m:Wn,M:Kn,p:function(n,t,e){var r=f.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)},S:Qn,U:Hn,w:In,W:Vn,x:function(n,t,r){return e(n,x.x.toString(),t,r)},X:function(n,t,r){return e(n,x.X.toString(),t,r)},y:Gn,Y:Xn,Z:Yn,"%":et};return t}(n)}};var ci=ra.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ra.format=ci.numberFormat,ra.geo={},ot.prototype={s:0,t:0,add:function(n){at(n,this.t,fi),at(fi.s,this.s,this),this.s?this.t+=fi.t:this.s=fi.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var fi=new ot;ra.geo.stream=function(n,t){n&&pi.hasOwnProperty(n.type)?pi[n.type](n,t):it(n,t)};var pi={Feature:function(n,t){it(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,o=e.length;++rn?4*Na+n:n,vi.lineStart=vi.lineEnd=vi.point=S}};ra.geo.bounds=function(){function n(n,t){b.push(x=[c=n,p=n]),f>t&&(f=t),t>h&&(h=t)}function t(t,e){var r=ct([t*Ua,e*Ua]);if(g){var o=pt(g,r),a=[o[1],-o[0],0],i=pt(a,o);mt(i),i=vt(i);var s=t-d,l=s>0?1:-1,m=i[0]*Da*l,v=ha(s)>180;if(v^(m>l*d&&l*t>m)){var y=i[1]*Da;y>h&&(h=y)}else if(v^((m=(m+360)%360-180)>l*d&&l*t>m)){var y=-i[1]*Da;f>y&&(f=y)}else f>e&&(f=e),e>h&&(h=e);v?d>t?u(c,t)>u(c,p)&&(p=t):u(t,p)>u(c,p)&&(c=t):p>=c?(c>t&&(c=t),t>p&&(p=t)):t>d?u(c,t)>u(c,p)&&(p=t):u(t,p)>u(c,p)&&(c=t)}else n(t,e);g=r,d=t}function e(){M.point=t}function r(){x[0]=c,x[1]=p,M.point=n,g=null}function o(n,e){if(g){var r=n-d;y+=ha(r)>180?r+(r>0?360:-360):r}else m=n,v=e;vi.point(n,e),t(n,e)}function a(){vi.lineStart()}function i(){o(m,v),vi.lineEnd(),ha(y)>Ra&&(c=-(p=180)),x[0]=c,x[1]=p,g=null}function u(n,t){return(t-=n)<0?t+360:t}function s(n,t){return n[0]-t[0]}function l(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:nmi?(c=-(p=180),f=-(h=90)):y>Ra?h=90:-Ra>y&&(f=-90),x[0]=c,x[1]=p}};return function(n){h=p=-(c=f=1/0),b=[],ra.geo.stream(n,M);var t=b.length;if(t){b.sort(s);for(var e=1,r=b[0],o=[r];t>e;++e)l((i=b[e])[0],r)||l(i[1],r)?(u(r[0],i[1])>u(r[0],r[1])&&(r[1]=i[1]),u(i[0],r[1])>u(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(var a,i,d=-1/0,t=o.length-1,e=0,r=o[t];t>=e;r=i,++e)i=o[e],(a=u(r[1],i[0]))>d&&(d=a,c=i[0],p=r[1])}return b=x=null,c===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[c,f],[p,h]]}}(),ra.geo.centroid=function(n){gi=yi=bi=xi=Mi=wi=ki=_i=Si=Ai=Ti=0,ra.geo.stream(n,Ei);var t=Si,e=Ai,r=Ti,o=t*t+e*e+r*r;return Pa>o&&(t=wi,e=ki,r=_i,Ra>yi&&(t=bi,e=xi,r=Mi),Pa>(o=t*t+e*e+r*r))?[NaN,NaN]:[Math.atan2(e,t)*Da,rn(r/Math.sqrt(o))*Da]};var gi,yi,bi,xi,Mi,wi,ki,_i,Si,Ai,Ti,Ei={sphere:S,point:yt,lineStart:xt,lineEnd:Mt,polygonStart:function(){Ei.lineStart=wt},polygonEnd:function(){Ei.lineStart=xt}},Ri=Et(_t,function(n){var t,e=NaN,r=NaN,o=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(a,i){var u=a>0?Na:-Na,s=ha(a-e);ha(s-Na)0?La:-La),n.point(o,r),n.lineEnd(),n.lineStart(),n.point(u,r),n.point(a,r),t=0):o!==u&&s>=Na&&(ha(e-o)Ra?Math.atan((Math.sin(t)*(a=Math.cos(r))*Math.sin(e)-Math.sin(r)*(o=Math.cos(t))*Math.sin(n))/(o*a*i)):(t+r)/2}(e,r,a,i),n.point(o,r),n.lineEnd(),n.lineStart(),n.point(u,r),t=0),n.point(e=a,r=i),o=u},lineEnd:function(){n.lineEnd(),e=r=NaN},clean:function(){return 2-t}}},function(n,t,e,r){var o;if(null==n)o=e*La,r.point(-Na,o),r.point(0,o),r.point(Na,o),r.point(Na,0),r.point(Na,-o),r.point(0,-o),r.point(-Na,-o),r.point(-Na,0),r.point(-Na,o);else if(ha(n[0]-t[0])>Ra){var a=n[0]=.12&&.234>o&&r>=-.425&&-.214>r?i:o>=.166&&.234>o&&r>=-.214&&-.115>r?u:a).invert(n)},n.stream=function(n){var t=a.stream(n),e=i.stream(n),r=u.stream(n);return{point:function(n,o){t.point(n,o),e.point(n,o),r.point(n,o)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(a.precision(t),i.precision(t),u.precision(t),n):a.precision()},n.scale=function(t){return arguments.length?(a.scale(t),i.scale(.35*t),u.scale(t),n.translate(a.translate())):a.scale()},n.translate=function(t){if(!arguments.length)return a.translate();var l=a.scale(),c=+t[0],f=+t[1];return e=a.translate(t).clipExtent([[c-.455*l,f-.238*l],[c+.455*l,f+.238*l]]).stream(s).point,r=i.translate([c-.307*l,f+.201*l]).clipExtent([[c-.425*l+Ra,f+.12*l+Ra],[c-.214*l-Ra,f+.234*l-Ra]]).stream(s).point,o=u.translate([c-.205*l,f+.212*l]).clipExtent([[c-.214*l+Ra,f+.166*l+Ra],[c-.115*l-Ra,f+.234*l-Ra]]).stream(s).point,n},n.scale(1070)};var Ni,Oi,Ci,Li,Ui,Di,zi={point:S,lineStart:S,lineEnd:S,polygonStart:function(){Oi=0,zi.lineStart=Dt},polygonEnd:function(){zi.lineStart=zi.lineEnd=zi.point=S,Ni+=ha(Oi/2)}},Fi={point:function(n,t){Ci>n&&(Ci=n),n>Ui&&(Ui=n),Li>t&&(Li=t),t>Di&&(Di=t)},lineStart:S,lineEnd:S,polygonStart:S,polygonEnd:S},qi={point:qt,lineStart:jt,lineEnd:Bt,polygonStart:function(){qi.lineStart=It},polygonEnd:function(){qi.point=qt,qi.lineStart=jt,qi.lineEnd=Bt}};ra.geo.path=function(){function n(n){return n&&("function"==typeof u&&a.pointRadius(+u.apply(this,arguments)),i&&i.valid||(i=o(a)),ra.geo.stream(n,i)),a.result()}function t(){return i=null,n}var e,r,o,a,i,u=4.5;return n.area=function(n){return Ni=0,ra.geo.stream(n,o(zi)),Ni},n.centroid=function(n){return bi=xi=Mi=wi=ki=_i=Si=Ai=Ti=0,ra.geo.stream(n,o(qi)),Ti?[Si/Ti,Ai/Ti]:_i?[wi/_i,ki/_i]:Mi?[bi/Mi,xi/Mi]:[NaN,NaN]},n.bounds=function(n){return Ui=Di=-(Ci=Li=1/0),ra.geo.stream(n,o(Fi)),[[Ci,Li],[Ui,Di]]},n.projection=function(n){return arguments.length?(o=(e=n)?n.stream||function(n){var t=Vt(function(t,e){return n([t*Da,e*Da])});return function(n){return Zt(t(n))}}(n):w,t()):e},n.context=function(n){return arguments.length?(a=null==(r=n)?new zt:new Ht(n),"function"!=typeof u&&a.pointRadius(u),t()):r},n.pointRadius=function(t){return arguments.length?(u="function"==typeof t?t:(a.pointRadius(+t),+t),n):u},n.projection(ra.geo.albersUsa()).context(null)},ra.geo.transform=function(n){return{stream:function(t){var e=new Xt(t);for(var r in n)e[r]=n[r];return e}}},Xt.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ra.geo.projection=Yt,ra.geo.projectionMutator=Wt,(ra.geo.equirectangular=function(){return Yt(Jt)}).raw=Jt.invert=Jt,ra.geo.rotation=function(n){function t(t){return(t=n(t[0]*Ua,t[1]*Ua))[0]*=Da,t[1]*=Da,t}return n=Kt(n[0]%360*Ua,n[1]*Ua,n.length>2?n[2]*Ua:0),t.invert=function(t){return(t=n.invert(t[0]*Ua,t[1]*Ua))[0]*=Da,t[1]*=Da,t},t},$t.invert=Jt,ra.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=Kt(-n[0]*Ua,-n[1]*Ua,0).invert,o=[];return e(null,null,1,{point:function(n,e){o.push(n=t(n,e)),n[0]*=Da,n[1]*=Da}}),{type:"Polygon",coordinates:[o]}}var t,e,r=[0,0],o=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ee((t=+r)*Ua,o*Ua),n):t},n.precision=function(r){return arguments.length?(e=ee(t*Ua,(o=+r)*Ua),n):o},n.angle(90)},ra.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Ua,o=n[1]*Ua,a=t[1]*Ua,i=Math.sin(r),u=Math.cos(r),s=Math.sin(o),l=Math.cos(o),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((e=f*i)*e+(e=l*c-s*f*u)*e),s*c+l*f*u)},ra.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ra.range(Math.ceil(a/v)*v,o,v).map(p).concat(ra.range(Math.ceil(l/g)*g,s,g).map(h)).concat(ra.range(Math.ceil(r/d)*d,e,d).filter(function(n){return ha(n%v)>Ra}).map(c)).concat(ra.range(Math.ceil(u/m)*m,i,m).filter(function(n){return ha(n%g)>Ra}).map(f))}var e,r,o,a,i,u,s,l,c,f,p,h,d=10,m=d,v=90,g=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[p(a).concat(h(s).slice(1),p(o).reverse().slice(1),h(l).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(a=+t[0][0],o=+t[1][0],l=+t[0][1],s=+t[1][1],a>o&&(t=a,a=o,o=t),l>s&&(t=l,l=s,s=t),n.precision(y)):[[a,l],[o,s]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],i=+t[1][1],r>e&&(t=r,r=e,e=t),u>i&&(t=u,u=i,i=t),n.precision(y)):[[r,u],[e,i]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(v=+t[0],g=+t[1],n):[v,g]},n.minorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.precision=function(t){return arguments.length?(y=+t,c=oe(u,i,90),f=ae(r,e,y),p=oe(l,s,90),h=ae(a,o,y),n):y},n.majorExtent([[-180,-90+Ra],[180,90-Ra]]).minorExtent([[-180,-80-Ra],[180,80+Ra]])},ra.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||o.apply(this,arguments)]}}var t,e,r=ie,o=ue;return n.distance=function(){return ra.geo.distance(t||r.apply(this,arguments),e||o.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(o=t,e="function"==typeof t?null:t,n):o},n.precision=function(){return arguments.length?n:0},n},ra.geo.interpolate=function(n,t){return function(n,t,e,r){var o=Math.cos(t),a=Math.sin(t),i=Math.cos(r),u=Math.sin(r),s=o*Math.cos(n),l=o*Math.sin(n),c=i*Math.cos(e),f=i*Math.sin(e),p=2*Math.asin(Math.sqrt(an(r-t)+o*i*an(e-n))),h=1/Math.sin(p),d=p?function(n){var t=Math.sin(n*=p)*h,e=Math.sin(p-n)*h,r=e*s+t*c,o=e*l+t*f,i=e*a+t*u;return[Math.atan2(o,r)*Da,Math.atan2(i,Math.sqrt(r*r+o*o))*Da]}:function(){return[n*Da,t*Da]};return d.distance=p,d}(n[0]*Ua,n[1]*Ua,t[0]*Ua,t[1]*Ua)},ra.geo.length=function(n){return ji=0,ra.geo.stream(n,Bi),ji};var ji,Bi={sphere:S,point:S,lineStart:function(){function n(n,o){var a=Math.sin(o*=Ua),i=Math.cos(o),u=ha((n*=Ua)-t),s=Math.cos(u);ji+=Math.atan2(Math.sqrt((u=i*Math.sin(u))*u+(u=r*a-e*i*s)*u),e*a+r*i*s),t=n,e=a,r=i}var t,e,r;Bi.point=function(o,a){t=o*Ua,e=Math.sin(a*=Ua),r=Math.cos(a),Bi.point=n},Bi.lineEnd=function(){Bi.point=Bi.lineEnd=S}},lineEnd:S,polygonStart:S,polygonEnd:S},Ii=se(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ra.geo.azimuthalEqualArea=function(){return Yt(Ii)}).raw=Ii;var Hi=se(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},w);(ra.geo.azimuthalEquidistant=function(){return Yt(Hi)}).raw=Hi,(ra.geo.conicConformal=function(){return Lt(le)}).raw=le,(ra.geo.conicEquidistant=function(){return Lt(ce)}).raw=ce;var Vi=se(function(n){return 1/n},Math.atan);(ra.geo.gnomonic=function(){return Yt(Vi)}).raw=Vi,fe.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-La]},(ra.geo.mercator=function(){return pe(fe)}).raw=fe;var Xi=se(function(){return 1},Math.asin);(ra.geo.orthographic=function(){return Yt(Xi)}).raw=Xi;var Gi=se(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ra.geo.stereographic=function(){return Yt(Gi)}).raw=Gi,he.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-La]},(ra.geo.transverseMercator=function(){var n=pe(he),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):[(n=t())[1],-n[0]]},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):[(n=e())[0],n[1],n[2]-90]},e([0,0,90])}).raw=he,ra.geom={},ra.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,o=Tn(e),a=Tn(r),i=n.length,u=[],s=[];for(t=0;i>t;t++)u.push([+o.call(this,n[t],t),+a.call(this,n[t],t),t]);for(u.sort(ge),t=0;i>t;t++)s.push([u[t][0],-u[t][1]]);var l=ve(u),c=ve(s),f=c[0]===l[0],p=c[c.length-1]===l[l.length-1],h=[];for(t=l.length-1;t>=0;--t)h.push(n[u[l[t]][2]]);for(t=+f;t=r&&l.x<=a&&l.y>=o&&l.y<=i?[[r,i],[a,i],[a,o],[r,o]]:[];c.point=n[u]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(a(n,t)/Ra)*Ra,y:Math.round(i(n,t)/Ra)*Ra,i:t}})}var r=de,o=me,a=r,i=o,u=tu;return n?t(n):(t.links=function(n){return Ve(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return Ve(e(n)).cells.forEach(function(e,r){for(var o,a=e.site,i=e.edges.sort(Re),u=-1,s=i.length,l=i[s-1].edge,c=l.l===a?l.r:l.l;++u=l,p=r>=c,h=p<<1|f;n.leaf=!1,n=n.nodes[h]||(n.nodes[h]={leaf:!0,nodes:[],point:null,x:null,y:null}),f?o=l:u=l,p?i=c:s=c,a(n,t,e,r,o,i,u,s)}var c,f,p,h,d,m,v,g,y,b=Tn(u),x=Tn(s);if(null!=t)m=t,v=e,g=r,y=o;else if(g=y=-(m=v=1/0),f=[],p=[],d=n.length,i)for(h=0;d>h;++h)(c=n[h]).xg&&(g=c.x),c.y>y&&(y=c.y),f.push(c.x),p.push(c.y);else for(h=0;d>h;++h){var M=+b(c=n[h],h),w=+x(c,h);m>M&&(m=M),v>w&&(v=w),M>g&&(g=M),w>y&&(y=w),f.push(M),p.push(w)}var k=g-m,_=y-v;k>_?y=v+k:g=m+_;var S={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(n){a(S,n,+b(n,++h),+x(n,h),m,v,g,y)},visit:function(n){!function n(t,e,r,o,a,i){if(!t(e,r,o,a,i)){var u=.5*(r+a),s=.5*(o+i),l=e.nodes;l[0]&&n(t,l[0],r,o,u,s),l[1]&&n(t,l[1],u,o,a,s),l[2]&&n(t,l[2],r,s,u,i),l[3]&&n(t,l[3],u,s,a,i)}}(n,S,m,v,g,y)},find:function(n){return function(n,t,e,r,o,a,i){var u,s=1/0;return function n(l,c,f,p,h){if(!(c>a||f>i||r>p||o>h)){if(d=l.point){var d,m=t-l.x,v=e-l.y,g=m*m+v*v;if(s>g){var y=Math.sqrt(s=g);r=t-y,o=e-y,a=t+y,i=e+y,u=d}}for(var b=l.nodes,x=.5*(c+p),M=.5*(f+h),w=t>=x,k=e>=M,_=k<<1|w,S=_+4;S>_;++_)if(l=b[3&_])switch(3&_){case 0:n(l,c,f,x,M);break;case 1:n(l,x,f,p,M);break;case 2:n(l,c,M,x,h);break;case 3:n(l,x,M,p,h)}}}(n,r,o,a,i),u}(S,n[0],n[1],m,v,g,y)}};if(h=-1,null==t){for(;++h=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=au.get(e)||ou,function(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}((r=iu.get(r)||w)(e.apply(null,oa.call(arguments,1))))},ra.interpolateHcl=function(n,t){n=ra.hcl(n),t=ra.hcl(t);var e=n.h,r=n.c,o=n.l,a=t.h-e,i=t.c-r,u=t.l-o;return isNaN(i)&&(i=0,r=isNaN(r)?t.c:r),isNaN(a)?(a=0,e=isNaN(e)?t.h:e):a>180?a-=360:-180>a&&(a+=360),function(n){return fn(e+a*n,r+i*n,o+u*n)+""}},ra.interpolateHsl=function(n,t){n=ra.hsl(n),t=ra.hsl(t);var e=n.h,r=n.s,o=n.l,a=t.h-e,i=t.s-r,u=t.l-o;return isNaN(i)&&(i=0,r=isNaN(r)?t.s:r),isNaN(a)?(a=0,e=isNaN(e)?t.h:e):a>180?a-=360:-180>a&&(a+=360),function(n){return ln(e+a*n,r+i*n,o+u*n)+""}},ra.interpolateLab=function(n,t){n=ra.lab(n),t=ra.lab(t);var e=n.l,r=n.a,o=n.b,a=t.l-e,i=t.a-r,u=t.b-o;return function(n){return hn(e+a*n,r+i*n,o+u*n)+""}},ra.interpolateRound=cr,ra.transform=function(n){var t=ia.createElementNS(ra.ns.prefix.svg,"g");return(ra.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new fr(e?e.matrix:uu)})(n)},fr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var uu={a:1,b:0,c:0,d:1,e:0,f:0};ra.interpolateTransform=mr,ra.layout={},ra.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++eu*u/g){if(m>s){var l=t.charge/s;n.px-=a*l,n.py-=i*l}return!0}if(t.point&&s&&m>s){var l=t.pointCharge/s;n.px-=a*l,n.py-=i*l}}return!t.charge}}function t(n){n.px=ra.event.x,n.py=ra.event.y,s.resume()}var e,r,o,a,i,u,s={},l=ra.dispatch("start","tick","end"),c=[1,1],f=.9,p=su,h=lu,d=-30,m=cu,v=.1,g=.64,y=[],b=[];return s.tick=function(){if((o*=.99)<.005)return e=null,l.end({type:"end",alpha:o=0}),!0;var t,r,s,p,h,m,g,x,M,w=y.length,k=b.length;for(r=0;k>r;++r)s=b[r],p=s.source,h=s.target,x=h.x-p.x,M=h.y-p.y,(m=x*x+M*M)&&(m=o*i[r]*((m=Math.sqrt(m))-a[r])/m,x*=m,M*=m,h.x-=x*(g=p.weight+h.weight?p.weight/(p.weight+h.weight):.5),h.y-=M*g,p.x+=x*(g=1-g),p.y+=M*g);if((g=o*v)&&(x=c[0]/2,M=c[1]/2,r=-1,g))for(;++r0?o=n:(e.c=null,e.t=NaN,e=null,l.end({type:"end",alpha:o=0})):n>0&&(l.start({type:"start",alpha:o=n}),e=Pn(s.tick)),s):o},s.start=function(){function n(n,r){if(!e){for(e=new Array(o),s=0;o>s;++s)e[s]=[];for(s=0;l>s;++s){var a=b[s];e[a.source.index].push(a.target),e[a.target.index].push(a.source)}}for(var i,u=e[t],s=-1,c=u.length;++st;++t)(r=y[t]).index=t,r.weight=0;for(t=0;l>t;++t)"number"==typeof(r=b[t]).source&&(r.source=y[r.source]),"number"==typeof r.target&&(r.target=y[r.target]),++r.source.weight,++r.target.weight;for(t=0;o>t;++t)r=y[t],isNaN(r.x)&&(r.x=n("x",f)),isNaN(r.y)&&(r.y=n("y",m)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(a=[],"function"==typeof p)for(t=0;l>t;++t)a[t]=+p.call(this,b[t],t);else for(t=0;l>t;++t)a[t]=p;if(i=[],"function"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,b[t],t);else for(t=0;l>t;++t)i[t]=h;if(u=[],"function"==typeof d)for(t=0;o>t;++t)u[t]=+d.call(this,y[t],t);else for(t=0;o>t;++t)u[t]=d;return s.resume()},s.resume=function(){return s.alpha(.1)},s.stop=function(){return s.alpha(0)},s.drag=function(){return r||(r=ra.behavior.drag().origin(w).on("dragstart.force",xr).on("drag.force",t).on("dragend.force",Mr)),arguments.length?void this.on("mouseover.force",wr).on("mouseout.force",kr).call(r):r},ra.rebind(s,l,"on")};var su=20,lu=1,cu=1/0;ra.layout.hierarchy=function(){function n(o){var a,i=[o],u=[];for(o.depth=0;null!=(a=i.pop());)if(u.push(a),(l=e.call(n,a,a.depth))&&(s=l.length)){for(var s,l,c;--s>=0;)i.push(c=l[s]),c.parent=a,c.depth=a.depth+1;r&&(a.value=0),a.children=l}else r&&(a.value=+r.call(n,a,a.depth)||0),delete a.children;return Ar(o,function(n){var e,o;t&&(e=n.children)&&e.sort(t),r&&(o=n.parent)&&(o.value+=n.value)}),u}var t=Rr,e=Tr,r=Er;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Sr(t,function(n){n.children&&(n.value=0)}),Ar(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ra.layout.partition=function(){function n(n,r){var o=t.call(this,n,r);return function n(t,e,r,o){var a=t.children;if(t.x=e,t.y=t.depth*o,t.dx=r,t.dy=o,a&&(i=a.length)){var i,u,s,l=-1;for(r=t.value?r/t.value:0;++lf?-1:1),d=ra.sum(l),m=d?(f-s*h)/d:0,v=ra.range(s),g=[];return null!=e&&v.sort(e===fu?function(n,t){return l[t]-l[n]}:function(n,t){return e(i[n],i[t])}),v.forEach(function(n){g[n]={data:i[n],value:u=l[n],startAngle:c,endAngle:c+=u*m+h,padAngle:p}}),g}var t=Number,e=fu,r=0,o=Oa,a=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(o=t,n):o},n.padAngle=function(t){return arguments.length?(a=t,n):a},n};var fu={};ra.layout.stack=function(){function n(u,s){if(!(p=u.length))return u;var l=u.map(function(e,r){return t.call(n,e,r)}),c=l.map(function(t){return t.map(function(t,e){return[a.call(n,t,e),i.call(n,t,e)]})}),f=e.call(n,c,s);l=ra.permute(l,f),c=ra.permute(c,f);var p,h,d,m,v=r.call(n,c,s),g=l[0].length;for(d=0;g>d;++d)for(o.call(n,l[0][d],m=v[d],c[0][d][1]),h=1;p>h;++h)o.call(n,l[h][d],m+=c[h-1][d][1],c[h][d][1]);return u}var t=w,e=Lr,r=Ur,o=Cr,a=Nr,i=Or;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:pu.get(t)||Lr,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:hu.get(t)||Ur,n):r},n.x=function(t){return arguments.length?(a=t,n):a},n.y=function(t){return arguments.length?(i=t,n):i},n.out=function(t){return arguments.length?(o=t,n):o},n};var pu=ra.map({"inside-out":function(n){var t,e,r=n.length,o=n.map(Dr),a=n.map(zr),i=ra.range(r).sort(function(n,t){return o[n]-o[t]}),u=0,s=0,l=[],c=[];for(t=0;r>t;++t)e=i[t],s>u?(u+=a[e],l.push(e)):(s+=a[e],c.push(e));return c.reverse().concat(l)},reverse:function(n){return ra.range(n.length).reverse()},default:Lr}),hu=ra.map({silhouette:function(n){var t,e,r,o=n.length,a=n[0].length,i=[],u=0,s=[];for(e=0;a>e;++e){for(t=0,r=0;o>t;t++)r+=n[t][e][1];r>u&&(u=r),i.push(r)}for(e=0;a>e;++e)s[e]=(u-i[e])/2;return s},wiggle:function(n){var t,e,r,o,a,i,u,s,l,c=n.length,f=n[0],p=f.length,h=[];for(h[0]=s=l=0,e=1;p>e;++e){for(t=0,o=0;c>t;++t)o+=n[t][e][1];for(t=0,a=0,u=f[e][0]-f[e-1][0];c>t;++t){for(r=0,i=(n[t][e][1]-n[t][e-1][1])/(2*u);t>r;++r)i+=(n[r][e][1]-n[r][e-1][1])/u;a+=i*n[t][e][1]}h[e]=s-=o?a/o*u:0,l>s&&(l=s)}for(e=0;p>e;++e)h[e]-=l;return h},expand:function(n){var t,e,r,o=n.length,a=n[0].length,i=1/o,u=[];for(e=0;a>e;++e){for(t=0,r=0;o>t;t++)r+=n[t][e][1];if(r)for(t=0;o>t;t++)n[t][e][1]/=r;else for(t=0;o>t;t++)n[t][e][1]=i}for(e=0;a>e;++e)u[e]=0;return u},zero:Ur});ra.layout.histogram=function(){function n(n,a){for(var i,u,s=[],l=n.map(e,this),c=r.call(this,l,a),f=o.call(this,c,l,a),a=-1,p=l.length,h=f.length-1,d=t?1:1/p;++a0)for(a=-1;++a=c[0]&&u<=c[1]&&((i=s[ra.bisect(f,u,1,h)-1]).y+=d,i.push(n[a]));return s}var t=!0,e=Number,r=Br,o=qr;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Tn(t),n):r},n.bins=function(t){return arguments.length?(o="number"==typeof t?function(n){return jr(n,t)}:Tn(t),n):o},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ra.layout.pack=function(){function n(n,a){var i=e.call(this,n,a),u=i[0],s=o[0],l=o[1],c=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(u.x=u.y=0,Ar(u,function(n){n.r=+c(n.value)}),Ar(u,Gr),r){var f=r*(t?1:Math.max(2*u.r/s,2*u.r/l))/2;Ar(u,function(n){n.r+=f}),Ar(u,Gr),Ar(u,function(n){n.r-=f})}return function n(t,e,r,o){var a=t.children;if(t.x=e+=o*t.x,t.y=r+=o*t.y,t.r*=o,a)for(var i=-1,u=a.length;++ii;++i)r.push((a[i]=o={_:a[i],parent:t,children:(o=a[i].children)&&o.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:i}).a=o);return e.children[0]}(c);if(Ar(f,t),f.parent.m=-f.z,Sr(f,e),u)Sr(c,r);else{var p=c,h=c,d=c;Sr(c,function(n){n.xh.x&&(h=n),n.depth>d.depth&&(d=n)});var m=a(p,h)/2-p.x,v=i[0]/(h.x+a(h,p)/2+m),g=i[1]/(d.depth||1);Sr(c,function(n){n.x=(n.x+m)*v,n.y=n.depth*g})}return l}function t(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){!function(n){for(var t,e=0,r=0,o=n.children,a=o.length;--a>=0;)(t=o[a]).z+=e,t.m+=e,e+=t.s+(r+=t.c)}(n);var o=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-o):n.z=o}else r&&(n.z=r.z+a(n._,r._));n.parent.A=function(n,t,e){if(t){for(var r,o=n,i=n,u=t,s=o.parent.children[0],l=o.m,c=i.m,f=u.m,p=s.m;u=Kr(u),o=$r(o),u&&o;)s=$r(s),(i=Kr(i)).a=n,(r=u.z+f-o.z-l+a(u._,o._))>0&&(Qr(no(u,n,e),n,r),l+=r,c+=r),f+=u.m,l+=o.m,p+=s.m,c+=i.m;u&&!Kr(i)&&(i.t=u,i.m+=f-c),o&&!$r(s)&&(s.t=o,s.m+=l-p,e=n)}return e}(n,r,n.parent.A||e[0])}function e(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function r(n){n.x*=i[0],n.y=n.depth*i[1]}var o=ra.layout.hierarchy().sort(null).value(null),a=Jr,i=[1,1],u=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(u=null==(i=t)?r:null,n):u?null:i},n.nodeSize=function(t){return arguments.length?(u=null==(i=t)?null:r,n):u?i:null},_r(n,o)},ra.layout.cluster=function(){function n(n,a){var i,u=t.call(this,n,a),s=u[0],l=0;Ar(s,function(n){var t=n.children;t&&t.length?(n.x=function(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}(t),n.y=function(n){return 1+ra.max(n,function(n){return n.y})}(t)):(n.x=i?l+=e(n,i):0,n.y=0,i=n)});var c=function n(t){var e=t.children;return e&&e.length?n(e[0]):t}(s),f=function n(t){var e,r=t.children;return r&&(e=r.length)?n(r[e-1]):t}(s),p=c.x-e(c,f)/2,h=f.x+e(f,c)/2;return Ar(s,o?function(n){n.x=(n.x-s.x)*r[0],n.y=(s.y-n.y)*r[1]}:function(n){n.x=(n.x-p)/(h-p)*r[0],n.y=(1-(s.y?n.y/s.y:1))*r[1]}),u}var t=ra.layout.hierarchy().sort(null).value(null),e=Jr,r=[1,1],o=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(o=null==(r=t),n):o?null:r},n.nodeSize=function(t){return arguments.length?(o=null!=(r=t),n):o?r:null},_r(n,t)},ra.layout.treemap=function(){function n(n,t){for(var e,r,o=-1,a=n.length;++ot?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var a=e.children;if(a&&a.length){var i,u,s,l=f(e),c=[],p=a.slice(),d=1/0,m="slice"===h?l.dx:"dice"===h?l.dy:"slice-dice"===h?1&e.depth?l.dy:l.dx:Math.min(l.dx,l.dy);for(n(p,l.dx*l.dy/e.value),c.area=0;(s=p.length)>0;)c.push(i=p[s-1]),c.area+=i.area,"squarify"!==h||(u=r(c,m))<=d?(p.pop(),d=u):(c.area-=c.pop().area,o(c,m,l,!1),m=Math.min(l.dx,l.dy),c.length=c.area=0,d=1/0);c.length&&(o(c,m,l,!0),c.length=c.area=0),a.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var a,i=f(t),u=r.slice(),s=[];for(n(u,i.dx*i.dy/t.value),s.area=0;a=u.pop();)s.push(a),s.area+=a.area,null!=a.z&&(o(s,a.z?i.dx:i.dy,i,!u.length),s.length=s.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,o=0,a=1/0,i=-1,u=n.length;++ie&&(a=e),e>o&&(o=e));return t*=t,(r*=r)?Math.max(t*o*d/r,r/(t*a*d)):1/0}function o(n,t,e,r){var o,a=-1,i=n.length,u=e.x,l=e.y,c=t?s(n.area/t):0;if(t==e.dx){for((r||c>e.dy)&&(c=e.dy);++ae.dx)&&(c=e.dx);++ae&&(t=1),1>e&&(n=0),function(){var e,r,o;do{e=2*Math.random()-1,r=2*Math.random()-1,o=e*e+r*r}while(!o||o>1);return n+t*e*Math.sqrt(-2*Math.log(o)/o)}},logNormal:function(){var n=ra.random.normal.apply(ra,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ra.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ra.scale={};var du={floor:w,ceil:w};ra.scale.linear=function(){return function n(t,e,r,o){function a(){var n=Math.min(t.length,e.length)>2?so:ao,a=o?gr:vr;return u=n(t,e,a,r),s=n(e,t,a,Qe),i}function i(n){return u(n)}var u,s;return i.invert=function(n){return s(n)},i.domain=function(n){return arguments.length?(t=n.map(Number),a()):t},i.range=function(n){return arguments.length?(e=n,a()):e},i.rangeRound=function(n){return i.range(n).interpolate(cr)},i.clamp=function(n){return arguments.length?(o=n,a()):o},i.interpolate=function(n){return arguments.length?(r=n,a()):r},i.ticks=function(n){return po(t,n)},i.tickFormat=function(n,e){return ho(t,n,e)},i.nice=function(n){return co(t,n),a()},i.copy=function(){return n(t,e,r,o)},a()}([0,1],[0,1],Qe,!1)};var mu={s:1,g:1,p:1,r:1,e:1};ra.scale.log=function(){return function n(t,e,r,o){function a(n){return(r?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(e)}function i(n){return r?Math.pow(e,n):-Math.pow(e,-n)}function u(n){return t(a(n))}return u.invert=function(n){return i(t.invert(n))},u.domain=function(n){return arguments.length?(r=n[0]>=0,t.domain((o=n.map(Number)).map(a)),u):o},u.base=function(n){return arguments.length?(e=+n,t.domain(o.map(a)),u):e},u.nice=function(){var n=io(o.map(a),r?Math:gu);return t.domain(n),o=n.map(i),u},u.ticks=function(){var n=ro(o),t=[],u=n[0],s=n[1],l=Math.floor(a(u)),c=Math.ceil(a(s)),f=e%1?2:e;if(isFinite(c-l)){if(r){for(;c>l;l++)for(var p=1;f>p;p++)t.push(i(l)*p);t.push(i(l))}else for(t.push(i(l));l++0;p--)t.push(i(l)*p);for(l=0;t[l]s;c--);t=t.slice(l,c)}return t},u.tickFormat=function(n,t){if(!arguments.length)return vu;arguments.length<2?t=vu:"function"!=typeof t&&(t=ra.format(t));var r=Math.max(1,e*n/u.ticks().length);return function(n){var o=n/i(Math.round(a(n)));return e-.5>o*e&&(o*=e),r>=o?t(n):""}},u.copy=function(){return n(t.copy(),e,r,o)},lo(u,t)}(ra.scale.linear().domain([0,1]),10,!0,[1,10])};var vu=ra.format(".0e"),gu={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ra.scale.pow=function(){return function n(t,e,r){function o(n){return t(a(n))}var a=vo(e),i=vo(1/e);return o.invert=function(n){return i(t.invert(n))},o.domain=function(n){return arguments.length?(t.domain((r=n.map(Number)).map(a)),o):r},o.ticks=function(n){return po(r,n)},o.tickFormat=function(n,t){return ho(r,n,t)},o.nice=function(n){return o.domain(co(r,n))},o.exponent=function(n){return arguments.length?(a=vo(e=n),i=vo(1/e),t.domain(r.map(a)),o):e},o.copy=function(){return n(t.copy(),e,r)},lo(o,t)}(ra.scale.linear(),1,[0,1])},ra.scale.sqrt=function(){return ra.scale.pow().exponent(.5)},ra.scale.ordinal=function(){return function n(t,e){function r(n){return i[((a.get(n)||("range"===e.t?a.set(n,t.push(n)):NaN))-1)%i.length]}function o(n,e){return ra.range(t.length).map(function(t){return n+e*t})}var a,i,u;return r.domain=function(n){if(!arguments.length)return t;t=[],a=new h;for(var o,i=-1,u=n.length;++i(n=e.indexOf(n))?[NaN,NaN]:[n>0?a[n-1]:t[0],n(n=r.indexOf(n))?NaN:n/i+t,n+1/i]},o.copy=function(){return n(t,e,r)},a()}(0,1,[0,1])},ra.scale.threshold=function(){return function n(t,e){function r(n){return n>=n?e[ra.bisect(t,n)]:void 0}return r.domain=function(n){return arguments.length?(t=n,r):t},r.range=function(n){return arguments.length?(e=n,r):e},r.invertExtent=function(n){return n=e.indexOf(n),[t[n-1],t[n]]},r.copy=function(){return n(t,e)},r}([.5],[0,1])},ra.scale.identity=function(){return function n(t){function e(n){return+n}return e.invert=e,e.domain=e.range=function(n){return arguments.length?(t=n.map(e),e):t},e.ticks=function(n){return po(t,n)},e.tickFormat=function(n,e){return ho(t,n,e)},e.copy=function(){return n(t)},e}([0,1])},ra.svg={},ra.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),l=Math.max(0,+r.apply(this,arguments)),c=i.apply(this,arguments)-La,f=u.apply(this,arguments)-La,p=Math.abs(f-c),h=c>f?0:1;if(n>l&&(d=l,l=n,n=d),p>=Ca)return t(l,h)+(n?t(n,1-h):"")+"Z";var d,m,v,g,y,b,x,M,w,k,_,S,A=0,T=0,E=[];if((g=(+s.apply(this,arguments)||0)/2)&&(v=a===wu?Math.sqrt(n*n+l*l):+a.apply(this,arguments),h||(T*=-1),l&&(T=rn(v/l*Math.sin(g))),n&&(A=rn(v/n*Math.sin(g)))),l){y=l*Math.cos(c+T),b=l*Math.sin(c+T),x=l*Math.cos(f-T),M=l*Math.sin(f-T);var R=Math.abs(f-c-2*T)<=Na?0:1;if(T&&ko(y,b,x,M)===h^R){var P=(c+f)/2;y=l*Math.cos(P),b=l*Math.sin(P),x=M=null}}else y=b=0;if(n){w=n*Math.cos(f-A),k=n*Math.sin(f-A),_=n*Math.cos(c+A),S=n*Math.sin(c+A);var N=Math.abs(c-f+2*A)<=Na?0:1;if(A&&ko(w,k,_,S)===1-h^N){var O=(c+f)/2;w=n*Math.cos(O),k=n*Math.sin(O),_=S=null}}else w=k=0;if(p>Ra&&(d=Math.min(Math.abs(l-n)/2,+o.apply(this,arguments)))>.001){m=l>n^h?0:1;var C=d,L=d;if(Na>p){var U=null==_?[w,k]:null==x?[y,b]:be([y,b],[_,S],[x,M],[w,k]),D=y-U[0],z=b-U[1],F=x-U[0],q=M-U[1],j=1/Math.sin(Math.acos((D*F+z*q)/(Math.sqrt(D*D+z*z)*Math.sqrt(F*F+q*q)))/2),B=Math.sqrt(U[0]*U[0]+U[1]*U[1]);L=Math.min(d,(n-B)/(j-1)),C=Math.min(d,(l-B)/(j+1))}if(null!=x){var I=_o(null==_?[w,k]:[_,S],[y,b],l,C,h),H=_o([x,M],[w,k],l,C,h);d===C?E.push("M",I[0],"A",C,",",C," 0 0,",m," ",I[1],"A",l,",",l," 0 ",1-h^ko(I[1][0],I[1][1],H[1][0],H[1][1]),",",h," ",H[1],"A",C,",",C," 0 0,",m," ",H[0]):E.push("M",I[0],"A",C,",",C," 0 1,",m," ",H[0])}else E.push("M",y,",",b);if(null!=_){var V=_o([y,b],[_,S],n,-L,h),X=_o([w,k],null==x?[y,b]:[x,M],n,-L,h);d===L?E.push("L",X[0],"A",L,",",L," 0 0,",m," ",X[1],"A",n,",",n," 0 ",h^ko(X[1][0],X[1][1],V[1][0],V[1][1]),",",1-h," ",V[1],"A",L,",",L," 0 0,",m," ",V[0]):E.push("L",X[0],"A",L,",",L," 0 0,",m," ",V[0])}else E.push("L",w,",",k)}else E.push("M",y,",",b),null!=x&&E.push("A",l,",",l," 0 ",R,",",h," ",x,",",M),E.push("L",w,",",k),null!=_&&E.push("A",n,",",n," 0 ",N,",",1-h," ",_,",",S);return E.push("Z"),E.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=yo,r=bo,o=go,a=wu,i=xo,u=Mo,s=wo;return n.innerRadius=function(t){return arguments.length?(e=Tn(t),n):e},n.outerRadius=function(t){return arguments.length?(r=Tn(t),n):r},n.cornerRadius=function(t){return arguments.length?(o=Tn(t),n):o},n.padRadius=function(t){return arguments.length?(a=t==wu?wu:Tn(t),n):a},n.startAngle=function(t){return arguments.length?(i=Tn(t),n):i},n.endAngle=function(t){return arguments.length?(u=Tn(t),n):u},n.padAngle=function(t){return arguments.length?(s=Tn(t),n):s},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+i.apply(this,arguments)+ +u.apply(this,arguments))/2-La;return[Math.cos(t)*n,Math.sin(t)*n]},n};var wu="auto";ra.svg.line=function(){return So(w)};var ku=ra.map({linear:Ao,"linear-closed":To,step:function(n){for(var t=0,e=n.length,r=n[0],o=[r[0],",",r[1]];++t1&&o.push("H",r[0]),o.join("")},"step-before":Eo,"step-after":Ro,basis:Oo,"basis-open":function(n){if(n.length<4)return Ao(n);for(var t,e=[],r=-1,o=n.length,a=[0],i=[0];++r<3;)t=n[r],a.push(t[0]),i.push(t[1]);for(e.push(Co(Au,a)+","+Co(Au,i)),--r;++rNa)+",1 "+t}function r(n,t,e,r){return"Q 0,0 "+r}var o=ie,a=ue,i=qo,u=xo,s=Mo;return n.radius=function(t){return arguments.length?(i=Tn(t),n):i},n.source=function(t){return arguments.length?(o=Tn(t),n):o},n.target=function(t){return arguments.length?(a=Tn(t),n):a},n.startAngle=function(t){return arguments.length?(u=Tn(t),n):u},n.endAngle=function(t){return arguments.length?(s=Tn(t),n):s},n},ra.svg.diagonal=function(){function n(n,o){var a=t.call(this,n,o),i=e.call(this,n,o),u=(a.y+i.y)/2,s=[a,{x:a.x,y:u},{x:i.x,y:u},i];return"M"+(s=s.map(r))[0]+"C"+s[1]+" "+s[2]+" "+s[3]}var t=ie,e=ue,r=jo;return n.source=function(e){return arguments.length?(t=Tn(e),n):t},n.target=function(t){return arguments.length?(e=Tn(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ra.svg.diagonal.radial=function(){var n=ra.svg.diagonal(),t=jo,e=n.projection;return n.projection=function(n){return arguments.length?e(function(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-La;return[e*Math.cos(r),e*Math.sin(r)]}}(t=n)):t},n},ra.svg.symbol=function(){function n(n,r){return(Tu.get(t.call(this,n,r))||Ho)(e.call(this,n,r))}var t=Io,e=Bo;return n.type=function(e){return arguments.length?(t=Tn(e),n):t},n.size=function(t){return arguments.length?(e=Tn(t),n):e},n};var Tu=ra.map({circle:Ho,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Ru)),e=t*Ru;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Eu),e=t*Eu/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Eu),e=t*Eu/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ra.svg.symbolTypes=Tu.keys();var Eu=Math.sqrt(3),Ru=Math.tan(30*Ua);wa.transition=function(n){for(var t,e,r=Pu||++Lu,o=Wo(n),a=[],i=Nu||{time:Date.now(),ease:ar,delay:0,duration:250},u=-1,s=this.length;++uo;o++){r.push(t=[]);for(var i=this[o],u=0,s=i.length;s>u;u++)(e=i[u])&&n.call(e,e.__data__,u,o)&&t.push(e)}return Xo(r,this.namespace,this.id)},Cu.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):G(this,null==t?function(t){t[r][e].tween.remove(n)}:function(o){o[r][e].tween.set(n,t)})},Cu.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?mr:Qe,a=ra.ns.qualify(n);return Go(this,"attr."+n,t,a.local?function(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}:function(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})})},Cu.attrTween=function(n,t){var e=ra.ns.qualify(n);return this.tween("attr."+n,e.local?function(n,r){var o=t.call(this,n,r,this.getAttributeNS(e.space,e.local));return o&&function(n){this.setAttributeNS(e.space,e.local,o(n))}}:function(n,r){var o=t.call(this,n,r,this.getAttribute(e));return o&&function(n){this.setAttribute(e,o(n))}})},Cu.style=function(n,t,e){function r(){this.style.removeProperty(n)}var o=arguments.length;if(3>o){if("string"!=typeof n){for(e in 2>o&&(t=""),n)this.style(e,n[e],t);return this}e=""}return Go(this,"style."+n,t,function(t){return null==t?r:(t+="",function(){var r,o=i(this).getComputedStyle(this,null).getPropertyValue(n);return o!==t&&(r=Qe(o,t),function(t){this.style.setProperty(n,r(t),e)})})})},Cu.styleTween=function(n,t,e){return arguments.length<3&&(e=""),this.tween("style."+n,function(r,o){var a=t.call(this,r,o,i(this).getComputedStyle(this,null).getPropertyValue(n));return a&&function(t){this.style.setProperty(n,a(t),e)}})},Cu.text=function(n){return Go(this,"text",n,Yo)},Cu.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Cu.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ra.ease.apply(ra,arguments)),G(this,function(r){r[e][t].ease=n}))},Cu.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:G(this,"function"==typeof n?function(r,o,a){r[e][t].delay=+n.call(r,r.__data__,o,a)}:(n=+n,function(r){r[e][t].delay=n}))},Cu.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:G(this,"function"==typeof n?function(r,o,a){r[e][t].duration=Math.max(1,n.call(r,r.__data__,o,a))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Cu.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var o=Nu,a=Pu;try{Pu=e,G(this,function(t,o,a){Nu=t[r][e],n.call(t,t.__data__,o,a)})}finally{Nu=o,Pu=a}}else G(this,function(o){var a=o[r][e];(a.event||(a.event=ra.dispatch("start","end","interrupt"))).on(n,t)});return this},Cu.transition=function(){for(var n,t,e,r=this.id,o=++Lu,a=this.namespace,i=[],u=0,s=this.length;s>u;u++){i.push(n=[]);for(var l=this[u],c=0,f=l.length;f>c;c++)(t=l[c])&&(e=t[a][r],Zo(t,c,a,o,{time:e.time,ease:e.ease,delay:e.delay+e.duration,duration:e.duration})),n.push(t)}return Xo(i,a,o)},ra.svg.axis=function(){function n(n){n.each(function(){var n,l=ra.select(this),c=this.__chart__||e,f=this.__chart__=e.copy(),p=null==s?f.ticks?f.ticks.apply(f,u):f.domain():s,h=null==t?f.tickFormat?f.tickFormat.apply(f,u):w:t,d=l.selectAll(".tick").data(p,f),m=d.enter().insert("g",".domain").attr("class","tick").style("opacity",Ra),v=ra.transition(d.exit()).style("opacity",Ra).remove(),g=ra.transition(d.order()).style("opacity",1),y=Math.max(o,0)+i,b=oo(f),x=l.selectAll(".domain").data([0]),M=(x.enter().append("path").attr("class","domain"),ra.transition(x));m.append("line"),m.append("text");var k,_,S,A,T=m.select("line"),E=g.select("line"),R=d.select("text").text(h),P=m.select("text"),N=g.select("text"),O="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=Jo,k="x",S="y",_="x2",A="y2",R.attr("dy",0>O?"0em":".71em").style("text-anchor","middle"),M.attr("d","M"+b[0]+","+O*a+"V0H"+b[1]+"V"+O*a)):(n=$o,k="y",S="x",_="y2",A="x2",R.attr("dy",".32em").style("text-anchor",0>O?"end":"start"),M.attr("d","M"+O*a+","+b[0]+"H0V"+b[1]+"H"+O*a)),T.attr(A,O*o),P.attr(S,O*y),E.attr(_,0).attr(A,O*o),N.attr(k,0).attr(S,O*y),f.rangeBand){var C=f,L=C.rangeBand()/2;c=f=function(n){return C(n)+L}}else c.rangeBand?c=f:v.call(n,f,c);m.call(n,c,f),g.call(n,f,f)})}var t,e=ra.scale.linear(),r=Uu,o=6,a=6,i=3,u=[10],s=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Du?t+"":Uu,n):r},n.ticks=function(){return arguments.length?(u=aa(arguments),n):u},n.tickValues=function(t){return arguments.length?(s=t,n):s},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(o=+t,a=+arguments[e-1],n):o},n.innerTickSize=function(t){return arguments.length?(o=+t,n):o},n.outerTickSize=function(t){return arguments.length?(a=+t,n):a},n.tickPadding=function(t){return arguments.length?(i=+t,n):i},n.tickSubdivide=function(){return arguments.length&&n},n};var Uu="bottom",Du={top:1,right:1,bottom:1,left:1};ra.svg.brush=function(){function n(a){a.each(function(){var a=ra.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",o).on("touchstart.brush",o),i=a.selectAll(".background").data([0]);i.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),a.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var u=a.selectAll(".resize").data(m,w);u.exit().remove(),u.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return zu[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),u.style("display",n.empty()?"none":null);var s,f=ra.transition(a),p=ra.transition(i);l&&(s=oo(l),p.attr("x",s[0]).attr("width",s[1]-s[0]),e(f)),c&&(s=oo(c),p.attr("y",s[0]).attr("height",s[1]-s[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+f[+/e$/.test(n)]+","+p[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",f[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",f[1]-f[0])}function r(n){n.select(".extent").attr("y",p[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",p[1]-p[0])}function o(){function o(){var n=ra.mouse(b),o=!1;y&&(n[0]+=y[0],n[1]+=y[1]),A||(ra.event.altKey?(g||(g=[(f[0]+f[1])/2,(p[0]+p[1])/2]),R[0]=f[+(n[0]c?(o=r,r=c):o=c),m[0]!=r||m[1]!=o?(e?u=null:a=null,m[0]=r,m[1]=o,!0):void 0}function v(){o(),w.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ra.select("body").style("cursor",null),P.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),T(),M({type:"brushend"})}var g,y,b=this,x=ra.select(ra.event.target),M=s.of(b,arguments),w=ra.select(b),k=x.datum(),_=!/^(n|s)$/.test(k)&&l,S=!/^(e|w)$/.test(k)&&c,A=x.classed("extent"),T=$(b),R=ra.mouse(b),P=ra.select(i(b)).on("keydown.brush",function(){32==ra.event.keyCode&&(A||(g=null,R[0]-=f[1],R[1]-=p[1],A=2),E())}).on("keyup.brush",function(){32==ra.event.keyCode&&2==A&&(R[0]+=f[1],R[1]+=p[1],A=0,E())});if(ra.event.changedTouches?P.on("touchmove.brush",o).on("touchend.brush",v):P.on("mousemove.brush",o).on("mouseup.brush",v),w.interrupt().selectAll("*").interrupt(),A)R[0]=f[0]-R[0],R[1]=p[0]-R[1];else if(k){var N=+/w$/.test(k),O=+/^n/.test(k);y=[f[1-N]-R[0],p[1-O]-R[1]],R[0]=f[N],R[1]=p[O]}else ra.event.altKey&&(g=R.slice());w.style("pointer-events","none").selectAll(".resize").style("display",null),ra.select("body").style("cursor",x.style("cursor")),M({type:"brushstart"}),o()}var a,u,s=P(n,"brushstart","brush","brushend"),l=null,c=null,f=[0,0],p=[0,0],h=!0,d=!0,m=Fu[0];return n.event=function(n){n.each(function(){var n=s.of(this,arguments),t={x:f,y:p,i:a,j:u},e=this.__chart__||t;this.__chart__=t,Pu?ra.select(this).transition().each("start.brush",function(){a=e.i,u=e.j,f=e.x,p=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=nr(f,t.x),r=nr(p,t.y);return a=u=null,function(o){f=t.x=e(o),p=t.y=r(o),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){a=t.i,u=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(m=Fu[!(l=t)<<1|!c],n):l},n.y=function(t){return arguments.length?(m=Fu[!l<<1|!(c=t)],n):c},n.clamp=function(t){return arguments.length?(l&&c?(h=!!t[0],d=!!t[1]):l?h=!!t:c&&(d=!!t),n):l&&c?[h,d]:l?h:c?d:null},n.extent=function(t){var e,r,o,i,s;return arguments.length?(l&&(e=t[0],r=t[1],c&&(e=e[0],r=r[0]),a=[e,r],l.invert&&(e=l(e),r=l(r)),e>r&&(s=e,e=r,r=s),(e!=f[0]||r!=f[1])&&(f=[e,r])),c&&(o=t[0],i=t[1],l&&(o=o[1],i=i[1]),u=[o,i],c.invert&&(o=c(o),i=c(i)),o>i&&(s=o,o=i,i=s),(o!=p[0]||i!=p[1])&&(p=[o,i])),n):(l&&(a?(e=a[0],r=a[1]):(e=f[0],r=f[1],l.invert&&(e=l.invert(e),r=l.invert(r)),e>r&&(s=e,e=r,r=s))),c&&(u?(o=u[0],i=u[1]):(o=p[0],i=p[1],c.invert&&(o=c.invert(o),i=c.invert(i)),o>i&&(s=o,o=i,i=s))),l&&c?[[e,o],[r,i]]:l?[e,r]:c&&[o,i])},n.clear=function(){return n.empty()||(f=[0,0],p=[0,0],a=u=null),n},n.empty=function(){return!!l&&f[0]==f[1]||!!c&&p[0]==p[1]},ra.rebind(n,s,"on")};var zu={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Fu=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],qu=oi.format=ci.timeFormat,ju=qu.utc,Bu=ju("%Y-%m-%dT%H:%M:%S.%LZ");qu.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Ko:Bu,Ko.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},Ko.toString=Bu.toString,oi.second=zn(function(n){return new ai(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),oi.seconds=oi.second.range,oi.seconds.utc=oi.second.utc.range,oi.minute=zn(function(n){return new ai(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),oi.minutes=oi.minute.range,oi.minutes.utc=oi.minute.utc.range,oi.hour=zn(function(n){var t=n.getTimezoneOffset()/60;return new ai(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),oi.hours=oi.hour.range,oi.hours.utc=oi.hour.utc.range,oi.month=zn(function(n){return(n=oi.day(n)).setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),oi.months=oi.month.range,oi.months.utc=oi.month.utc.range;var Iu=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Hu=[[oi.second,1],[oi.second,5],[oi.second,15],[oi.second,30],[oi.minute,1],[oi.minute,5],[oi.minute,15],[oi.minute,30],[oi.hour,1],[oi.hour,3],[oi.hour,6],[oi.hour,12],[oi.day,1],[oi.day,2],[oi.week,1],[oi.month,1],[oi.month,3],[oi.year,1]],Vu=qu.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",_t]]),Xu={range:function(n,t,e){return ra.range(Math.ceil(n/e)*e,+t,e).map(na)},floor:w,ceil:w};Hu.year=oi.year,oi.scale=function(){return Qo(ra.scale.linear(),Hu,Vu)};var Gu=Hu.map(function(n){return[n[0].utc,n[1]]}),Yu=ju.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",_t]]);Gu.year=oi.year.utc,oi.scale.utc=function(){return Qo(ra.scale.linear(),Gu,Yu)},ra.text=En(function(n){return n.responseText}),ra.json=function(n,t){return Rn(n,"application/json",ta,t)},ra.html=function(n,t){return Rn(n,"text/html",ea,t)},ra.xml=En(function(n){return n.responseXML}),this.d3=ra,void 0===(o="function"==typeof(r=ra)?r.call(t,e,t,n):r)||(n.exports=o)}()},function(n,t,e){var r=e(3);"string"==typeof r&&(r=[[n.id,r,""]]),e(5)(r,{}),r.locals&&(n.exports=r.locals)},function(n,t,e){(n.exports=e(4)()).push([n.id,"svg {\n display: block;\n min-width: 100%;\n width: 100%;\n min-height: 100%;\n}\n\ncircle.node {\n stroke: #ccc;\n stroke-width: 1px;\n opacity: 1;\n fill: white;\n}\n\npolygon.node {\n stroke: #ccc;\n stroke-width: 1px;\n opacity: 1;\n fill: white;\n}\n\ncircle.node.label {\n stroke: transparent;\n stroke-width: 0;\n fill: white;\n display: inline;\n}\n\ncircle.outline_node {\n stroke-width: 1px;\n fill: red;\n}\n\ncircle.protein {\n fill: gray;\n fill-opacity: 0.5;\n stroke-width: 4;\n}\n\ncircle.hidden_outline {\n stroke-width: 0px;\n}\n\n\nline.link {\n stroke: #999;\n stroke-opacity: 0.8;\n stroke-width: 2;\n}\n\nline.pseudoknot {\n stroke: red;\n}\n\nline.basepair {\n stroke: red;\n}\n\nline.intermolecule {\n stroke: blue;\n}\n\nline.chain_chain {\n stroke-dasharray: 3,3;\n}\n\nline.fake {\n stroke: green;\n}\n\n.transparent {\n fill: transparent;\n stroke-width: 0;\n stroke-opacity: 0;\n opacity: 0;\n visibility: hidden;\n}\n\n.drag_line {\n stroke: #999;\n stroke-width: 2;\n pointer-events: none;\n}\n\n.drag_line_hidden {\n stroke: #999;\n stroke-width: 0;\n pointer-events: none;\n}\n\n.d3-tip {\n line-height: 1;\n font-weight: bold;\n padding: 6px;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border-radius: 4px;\n pointer-events: none;\n }\n\ntext.node-label {\n font-weight: bold;\n font-family: Tahoma, Geneva, sans-serif;\n color: rgb(100,100,100);\n pointer-events: none;\n}\n\ntext {\n pointer-events: none;\n}\n\ng.gnode {\n\n}\n\ncircle.outline_node.selected {\n visibility: visible;\n}\n\ncircle.outline_node {\n visibility: hidden;\n}\n\n.brush .extent {\n fill-opacity: .1;\n stroke: #fff;\n shape-rendering: crispEdges;\n}\n\n.noselect {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n",""])},function(n,t){n.exports=function(){var n=[];return n.toString=function(){for(var n=[],t=0;t=0&&g.splice(t,1)}function u(n){var t=document.createElement("style");return t.type="text/css",a(n,t),t}function s(n){var t=document.createElement("link");return t.rel="stylesheet",a(n,t),t}function l(n,t){var e,r,o;if(t.singleton){var a=v++;e=m||(m=u(t)),r=c.bind(null,e,a,!1),o=c.bind(null,e,a,!0)}else n.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=s(t),r=function(n,t){var e=t.css,r=(t.media,t.sourceMap);r&&(e+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var o=new Blob([e],{type:"text/css"}),a=n.href;n.href=URL.createObjectURL(o),a&&URL.revokeObjectURL(a)}.bind(null,e),o=function(){i(e),e.href&&URL.revokeObjectURL(e.href)}):(e=u(t),r=function(n,t){var e=t.css,r=t.media;if(t.sourceMap,r&&n.setAttribute("media",r),n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}.bind(null,e),o=function(){i(e)});return r(n),function(t){if(t){if(t.css===n.css&&t.media===n.media&&t.sourceMap===n.sourceMap)return;r(n=t)}else o()}}function c(n,t,e,r){var o=e?"":r.css;if(n.styleSheet)n.styleSheet.cssText=y(t,o);else{var a=document.createTextNode(o),i=n.childNodes;i[t]&&n.removeChild(i[t]),i.length?n.insertBefore(a,i[t]):n.appendChild(a)}}var f={},p=function(n){var t;return function(){return void 0===t&&(t=n.apply(this,arguments)),t}},h=p(function(){return/msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase())}),d=p(function(){return document.head||document.getElementsByTagName("head")[0]}),m=null,v=0,g=[];n.exports=function(n,t){void 0===(t=t||{}).singleton&&(t.singleton=h()),void 0===t.insertAt&&(t.insertAt="bottom");var e=o(n);return r(e,t),function(n){for(var a=[],i=0;i0&&"*"==a.dotbracket[a.dotbracket.length-1]&&(a.dotbracket=a.dotbracket.slice(0,a.dotbracket.length-1),a.circular=!0),a.uid=r(),a.elements=[],a.pseudoknotPairs=[],a.nucsToNodes={},a.addUids=function(n){for(var t=a.nodes.filter(function(n){return"nucleotide"==n.nodeType}),e=0;e=0;)t.push(e),n=n.substring(0,e)+"oo"+n.substring(e+1,n.length);return{targetString:n,breaks:t}};var s=a.removeBreaks(a.dotbracket);a.dotbracket=s.targetString,a.dotBracketBreaks=s.breaks,s=a.removeBreaks(a.seq),a.seq=s.targetString,a.seqBreaks=s.breaks,a.calculateStartNumberArray=function(){a.startNumberArray=[];for(var n=0;n=0&&(e=!0);e?a.elements[t][2].map(function(n){0!=n&&(a.nodes[n-1].elemType="e")}):a.elements[t][2].map(function(n){0!=n&&(a.nodes[n-1].elemType=a.elements[t][0])})}return a},a.getPositions=function(n){for(var t=[],e=a.nodes.filter(function(t){return t.nodeType==n}),r=0;r=4}),e=0;ea.dotbracket.length)){a.links.push({source:a.nodes[n[f]-1],target:a.nodes[a.nodes.length-1],linkType:"fake",value:e,uid:r()}),n.length>4&&a.links.push({source:a.nodes[n[f]-1],target:a.nodes[n[(f+Math.floor(n.length/2))%n.length]-1],linkType:"fake",value:2*e,uid:r()});var p=3.14159*(n.length-2)/n.length,h=2*Math.cos(1.570795-p/2);a.links.push({source:a.nodes[n[f]-1],target:a.nodes[n[(f+2)%n.length]-1],linkType:"fake",value:h});var d=a.nodes[n[f]-1];"x"in d&&(s+=d.x,l+=d.y,c+=1)}return c>0&&(u.x=s/c,u.y=l/c,u.px=u.x,u.py=u.y),a},a.connectFakeNodes=function(){for(var n={},t=a.nodes.filter(function(n){return"middle"==n.nodeType}),e=new Set,r=1;r<=a.nodes.length;r++)n[r]=[];for(var r=0;r=0||a.dotBracketBreaks.indexOf(e-2)>=0)&&(u=""),a.nodes.push({name:u,num:e+a.startNumberArray[e-1]-1,radius:5,rna:a,nodeType:"nucleotide",structName:a.structName,elemType:t[e],uid:r(),linked:!1})}for(var e=0;e1&&-1===a.dotBracketBreaks.indexOf(e-1)&&-1==a.dotBracketBreaks.indexOf(e-2)&&-1==a.dotBracketBreaks.indexOf(e-3)&&(a.links.push({source:a.nodes[e-2],target:a.nodes[e-1],linkType:"backbone",value:1,uid:r()}),a.nodes[e-1].linked=!0);for(var e=0;er)return[];for(;0===n[e];e++)i.push(e);for(;0===n[r];r--)s.push(r);if(e>r){if(i.push(e),0===t)return[["e",t,i.sort(u)]];for(var l=!1,c=[],f=[],p=0;p=0&&(l=!0);return[["h",t,i.sort(u)]]}if(n[e]!=r){var h=i,p=e;for(h.push(p);r>=p;){for(o=o.concat(a.ptToElements(n,t,p,n[p])),h.push(n[p]),p=n[p]+1;0===n[p]&&r>=p;p++)h.push(p);h.push(p)}return h.pop(),(h=h.concat(s)).length>0&&(0===t?o.push(["e",t,h.sort(u)]):o.push(["m",t,h.sort(u)])),o}if(n[e]===r){i.push(e),s.push(r);var d=i.concat(s);d.length>4&&(0===t?o.push(["e",t,i.concat(s).sort(u)]):o.push(["i",t,i.concat(s).sort(u)]))}for(var m=[];n[e]===r&&r>e;)m.push(e),m.push(r),e+=1,r-=1,t+=1;return i=[e-1],s=[r+1],o.push(["s",t,m.sort(u)]),o.concat(a.ptToElements(n,t,e,r))},a.addLabels=function(n,t){if(0===arguments.length&&(n=1,t=10),1===arguments.length&&(t=10),0===t)return a;0>=t&&console.log("The label interval entered in invalid:",t);for(var e=1;e<=a.pairtable[0];e++)if(e%t==0){var o,i,u,s,l=a.nodes[e-1];1==a.rnaLength?(s=[l.x-15,l.y],u=[l.x-15,l.y]):(o=1==e?a.nodes[a.rnaLength-1]:a.nodes[e-2],i=e==a.rnaLength?a.nodes[0]:a.nodes[e],0!==a.pairtable[i.num]&&0!==a.pairtable[o.num]&&0!==a.pairtable[l.num]&&(o=i=a.nodes[a.pairtable[l.num]-1]),0===a.pairtable[l.num]||0!==a.pairtable[i.num]&&0!==a.pairtable[o.num]?(s=[i.x-l.x,i.y-l.y],u=[o.x-l.x,o.y-l.y]):(s=[l.x-i.x,l.y-i.y],u=[l.x-o.x,l.y-o.y]));var c=[s[0]+u[0],s[1]+u[1]],f=Math.sqrt(c[0]*c[0]+c[1]*c[1]),p=[c[0]/f,c[1]/f],h=[-15*p[0],-15*p[1]],d=a.nodes[e-1].x+h[0],m=a.nodes[e-1].y+h[1],v={name:e+a.startNumberArray[e-1]-1,num:-1,radius:6,rna:a,nodeType:"label",structName:a.structName,elemType:"l",x:d,y:m,px:d,py:m,uid:r()},g={source:a.nodes[e-1],target:v,value:1,linkType:"label_link",uid:r()};a.nodes.push(v),a.links.push(g)}return a},a.recalculateElements=function(){if(a.removePseudoknots(),a.elements=a.ptToElements(a.pairtable,0,1,a.dotbracket.length),a.circular&&(externalLoop=a.elements.filter(function(n){return"e"==n[0]||void 0}),externalLoop.length>0)){eloop=externalLoop[0],nucs=eloop[2].sort(u),prev=nucs[0],hloop=!0,numGreater=0;for(var n=1;n1&&(numGreater+=1),prev=nucs[n];1==numGreater?eloop[0]="h":2==numGreater?eloop[0]="i":eloop[0]="m"}return a},a.reassignLinkUids=function(){for(var n=0;n1&&(a.pseudoknotPairs=a.pseudoknotPairs.concat(i.rnaUtilities.removePseudoknotsFromPairtable(a.pairtable))),a},a.addPseudoknots=function(){for(var n=a.pairtable,t=a.pseudoknotPairs,e=0;e0&&a.recalculateElements()}Object.defineProperty(t,"__esModule",{value:!0}),t.ProteinGraph=o,t.RNAGraph=a,t.moleculesToJson=function(n){for(var t={},e=[],i=[],u=0;uabcdefghijklmnopqrstuvwxyz".split(""),n.inverseBrackets=function(n){for(var t={},e=0;e=r;r++){e[r]=new Array(t+1);for(var o=r;t>=o;o++)e[r][o]=0}for(var a=0,r=t-0-1;r>0;r--)for(var o=r+0+1;t>=o;o++){a=e[r][o-1];for(var i=o-0-1;i>=r;i--)n[i]===o&&(a=Math.max(a,(i>r?e[r][i-1]:0)+1+(o-i-1>0?e[i+1][o-1]:0)));e[r][o]=a}return a=e[1][t],e},n.backtrackMaximumMatching=function(t,e){var r=Array.apply(null,Array(t.length)).map(function(){return 0});return n.mmBt(t,r,e,1,t.length-1),r},n.mmBt=function(t,e,r,o,a){var i=t[o][a];if(!(0>a-o-1)){if(t[o][a-1]==i)return void n.mmBt(t,e,r,o,a-1);for(var u=a-0-1;u>=o;u--)if(r[a]===u){var s=u>o?t[o][u-1]:0,l=a-u-1>0?t[u+1][a-1]:0;if(s+l+1==i)return e[u]=a,e[a]=u,u>o&&n.mmBt(t,e,r,o,u-1),void n.mmBt(t,e,r,u+1,a-1)}console.log("FAILED!!!"+o+","+a+": backtracking failed!")}},n.dotbracketToPairtable=function(t){var e=Array.apply(null,new Array(t.length+1)).map(Number.prototype.valueOf,0);e[0]=t.length;for(var r={},o=0;o0)throw"Unmatched base at position "+r[c][0];return e},n.insertIntoStack=function(n,t,e){for(var r=0;n[r].length>0&&n[r][n[r].length-1]r?n.bracketLeft[n.insertIntoStack(e,r,t[r])]:n.bracketRight[n.deleteFromStack(e,r)]}return a},n.findUnmatched=function(t,e,r){for(var o=[],a=[],i=e,u=r,s=e;r>=s;s++)0!==t[s]&&(t[s]r)&&a.push([s,t[s]]);for(var s=i;u>=s;s++){for(;0===t[s]&&u>=s;)s++;for(r=t[s];t[s]===r;)s++,r--;o=o.concat(n.findUnmatched(t,s,r))}return a.length>0&&o.push(a),o},n.removePseudoknotsFromPairtable=function(t){for(var e=n.maximumMatching(t),r=n.backtrackMaximumMatching(e,t),o=[],a=1;aa)return[];for(;0===t[o];o++)s.push(o);for(;0===t[a];a--)l.push(a);if(o>a){if(s.push(o),0===e)return[["e",e,s.sort(r)]];for(var c=!1,f=[],p=[],h=0;h=0&&(c=!0);return[["h",e,s.sort(r)]]}if(t[o]!=a){var d=s,h=o;for(d.push(h);a>=h;){for(u=u.concat(n.ptToElements(t,e,h,t[h],i)),d.push(t[h]),h=t[h]+1;0===t[h]&&a>=h;h++)d.push(h);d.push(h)}return d.pop(),(d=d.concat(l)).length>0&&(0===e?u.push(["e",e,d.sort(r)]):u.push(["m",e,d.sort(r)])),u}if(t[o]===a){s.push(o),l.push(a);var m=s.concat(l);m.length>4&&(0===e?u.push(["e",e,s.concat(l).sort(r)]):u.push(["i",e,s.concat(l).sort(r)]))}for(var v=[];t[o]===a&&a>o;)v.push(o),v.push(a),o+=1,a-=1,e+=1;return s=[o-1],l=[a+1],u.push(["s",e,v.sort(r)]),u.concat(n.ptToElements(t,e,o,a,i))}}Object.defineProperty(t,"__esModule",{value:!0}),t.arraysEqual=function(n,t){if(n===t)return!0;if(null===n||null===t)return!1;if(n.length!=t.length)return!1;for(var e=0;e=u;u++)e.push(u);else console.log("Malformed range (too many dashes):",n)}return e},t.parseColorText=function(n){for(var e=n.split("\n"),r="",o=1,a={colorValues:{"":{}},range:["white","steelblue"]},i=[],u=0;u"!=e[u][0])for(var s=e[u].trim().split(/[\s]+/),l=0;ln&&(r=n),n>o&&(o=n));for(a in t.colorsJson.colorValues[e])"number"==typeof(n=t.colorsJson.colorValues[e][a])&&(t.colorsJson.colorValues[e][a]=(n-r)/(o-r))}return t},t.parseColorText(t.colorsText),t};var r=function(n,t){return n-t};t.rnaUtilities=new e}])},function(n,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.simpleXyCoordinates=function(n){var t,e,r,o=[],a=[];e=n[0];var i=Array.apply(null,new Array(e+5)).map(Number.prototype.valueOf,0),u=Array.apply(null,new Array(16+Math.floor(e/5))).map(Number.prototype.valueOf,0),s=Array.apply(null,new Array(16+Math.floor(e/5))).map(Number.prototype.valueOf,0),l=0,c=0,f=Math.PI/2;(function n(t,e,r){var o,a,p,h,d,m,v,g,y,b,x,M,w=2,k=0,_=0,S=Array.apply(null,new Array(3+2*Math.floor((e-t)/5))).map(Number.prototype.valueOf,0);for(o=t-1,e++;t!=e;)if((a=r[t])&&0!=t){w+=2,p=t,h=a,S[++k]=p,S[++k]=h,t=a+1,d=p,m=h,g=0;do{p++,h--,g++}while(r[p]==h&&r[p]>p);if(v=g-2,g>=2&&(i[d+1+v]+=f,i[m-1-v]+=f,i[d]+=f,i[m]+=f,g>2))for(;v>=1;v--)i[d+v]=Math.PI,i[m-v]=Math.PI;s[++c]=g,h>=p&&n(p,h,r)}else t++,w++,_++;for(M=Math.PI*(w-2)/w,S[++k]=e,y=0>o?0:o,b=1;k>=b;b++){for(x=S[b]-y,v=0;x>=v;v++)i[y+v]+=M;if(b>k)break;y=S[++b]}u[++l]=_})(0,e+1,n),u[l]-=2,r=0,o[0]=100,a[0]=100;var p=[];for(p.push([o[0],a[0]]),t=1;e>t;t++)o[t]=o[t-1]+15*Math.cos(r),a[t]=a[t-1]+15*Math.sin(r),p.push([o[t],a[t]]),r+=Math.PI-i[t+1];return p}}])},function(n,t,e){"use strict";var r=e(24);function o(){}n.exports=function(){function n(n,t,e,o,a,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return n}n.isRequired=n;var e={array:n,bool:n,func:n,number:n,object:n,string:n,symbol:n,any:n,arrayOf:t,element:n,instanceOf:t,node:n,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return e.checkPropTypes=o,e.PropTypes=e,e}},function(n,t,e){"use strict";n.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(n,t,e){"use strict";var r=e(7),o=e(26),a=e(27),i=e(6),u=e(8),s=e(21),l=e(28);function c(n,t){return t=t.split("// __split__"),new o.Program(n,t[0],t[1])}n.exports=function(n,t,e){var f,p,h,d,m,v,g,y,b,x,M,w,k,_,S,A,T,E,R,P,N,O,C,L,U,D,z,F=this,q=null,j=null,B=null,I=null,H=null,V=null,X=0,G=!1,Y=!1;function W(n){h.viewport(0,0,e,e);var o=u.clone(n);o.zoom=1/f,o.translation.x=0,o.translation.y=0;for(var a=r.mat4.create(),i=0;i<3;i++){var s=r.vec3.random(r.vec3.create(),1);r.mat4.rotate(a,a,10*Math.random(),s)}o.rotation=r.mat4.multiply(r.mat4.create(),a,o.rotation),T.bind(),h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT);var l=u.getRect(o),c=r.mat4.create();r.mat4.ortho(c,l.left,l.right,l.bottom,l.top,0,f);var p=r.mat4.create();r.mat4.lookAt(p,[0,0,0],[0,0,-1],[0,1,0]);var d=r.mat4.create();r.mat4.translate(d,d,[0,0,-f/2]),r.mat4.multiply(d,d,o.rotation),N.setUniform("uProjection","Matrix4fv",!1,c),N.setUniform("uView","Matrix4fv",!1,p),N.setUniform("uModel","Matrix4fv",!1,d),N.setUniform("uBottomLeft","2fv",[l.left,l.bottom]),N.setUniform("uTopRight","2fv",[l.right,l.top]),N.setUniform("uAtomScale","1f",2.5*o.atomScale),N.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),N.setUniform("uRes","1f",e),N.setUniform("uDepth","1f",f),N.setUniform("uMode","1i",0),N.setUniform("uAtomShade","1f",n.atomShade),q.render(),n.bonds&&null!=j&&(O.setUniform("uProjection","Matrix4fv",!1,c),O.setUniform("uView","Matrix4fv",!1,p),O.setUniform("uModel","Matrix4fv",!1,d),O.setUniform("uRotation","Matrix4fv",!1,o.rotation),O.setUniform("uDepth","1f",f),O.setUniform("uBottomLeft","2fv",[l.left,l.bottom]),O.setUniform("uTopRight","2fv",[l.right,l.top]),O.setUniform("uRes","1f",e),O.setUniform("uBondRadius","1f",2.5*u.getBondRadius(n)),O.setUniform("uBondShade","1f",n.bondShade),O.setUniform("uAtomScale","1f",2.5*n.atomScale),O.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),O.setUniform("uMode","1i",0),j.render()),h.viewport(0,0,t,t);var y=u.getRect(n),x=u.getRect(o),M=r.mat4.invert(r.mat4.create(),a);E.bind(),h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT),C.setUniform("uSceneDepth","1i",v.index),C.setUniform("uSceneNormal","1i",m.index),C.setUniform("uRandRotDepth","1i",g.index),C.setUniform("uAccumulator","1i",b.index),C.setUniform("uSceneBottomLeft","2fv",[y.left,y.bottom]),C.setUniform("uSceneTopRight","2fv",[y.right,y.top]),C.setUniform("uRotBottomLeft","2fv",[x.left,x.bottom]),C.setUniform("uRotTopRight","2fv",[x.right,x.top]),C.setUniform("uRes","1f",t),C.setUniform("uDepth","1f",f),C.setUniform("uRot","Matrix4fv",!1,a),C.setUniform("uInvRot","Matrix4fv",!1,M),C.setUniform("uSampleCount","1i",X),B.render(),b.activate(),b.bind(),h.copyTexImage2D(h.TEXTURE_2D,0,h.RGBA,0,0,t,t,0)}F.getAOProgress=function(){return X/1024},F.initialize=function(){n.width=n.height=t,(h=n.getContext("webgl")).enable(h.DEPTH_TEST),h.enable(h.CULL_FACE),h.clearColor(0,0,0,0),h.clearDepth(1),h.viewport(0,0,t,t),window.gl=h,o.getExtensions(h,["EXT_frag_depth","WEBGL_depth_texture"]),F.createTextures(),N=c(h,l.shaders.atom),O=c(h,l.shaders.bond),z=c(h,l.shaders["textured-quad"]),C=c(h,l.shaders.accumulator),L=c(h,l.shaders.ao),U=c(h,l.shaders.fxaa),D=c(h,l.shaders.dof);var e=[-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0],r=o.buildAttribs(h,{aPosition:3});r.aPosition.buffer.set(new Float32Array(e));var a=e.length/9;new o.Renderable(h,z,r,a),B=new o.Renderable(h,C,r,a),I=new o.Renderable(h,L,r,a),V=new o.Renderable(h,U,r,a),H=new o.Renderable(h,D,r,a),0},F.createTextures=function(){y=new o.Texture(h,0,null,e,e),g=new o.Texture(h,1,null,e,e,{internalFormat:h.DEPTH_COMPONENT,format:h.DEPTH_COMPONENT,type:h.UNSIGNED_SHORT}),T=new o.Framebuffer(h,[y],g),d=new o.Texture(h,2,null,t,t),m=new o.Texture(h,3,null,t,t),v=new o.Texture(h,4,null,t,t,{internalFormat:h.DEPTH_COMPONENT,format:h.DEPTH_COMPONENT,type:h.UNSIGNED_SHORT}),S=new o.Framebuffer(h,[d],v),A=new o.Framebuffer(h,[m],v),b=new o.Texture(h,5,null,t,t),x=new o.Texture(h,6,null,t,t),E=new o.Framebuffer(h,[x]),_=new o.Texture(h,7,null,t,t),P=new o.Framebuffer(h,[_]),M=new o.Texture(h,8,null,t,t),w=new o.Texture(h,9,null,t,t),R=new o.Framebuffer(h,[w]),k=new o.Texture(h,10,null,t,t),new o.Framebuffer(h,[k])},F.setResolution=function(r,o){e=o,t=r,n.width=n.height=t,h.viewport(0,0,t,t),F.createTextures()},F.setSystem=function(n,t){function e(n){for(var t=[],e=0;e<36;e++)t.push.apply(t,n);return t}p=n;for(var r=o.buildAttribs(h,{aImposter:3,aPosition:3,aRadius:1,aColor:3}),u=[],s=[],l=[],c=[],f=0;f0)){r=o.buildAttribs(h,{aImposter:3,aPosA:3,aPosB:3,aRadA:1,aRadB:1,aColA:3,aColB:3}),u=[];var g=[],y=[],b=[],x=[],M=[],w=[];for(f=0;ft.bondThreshold)break;u.push.apply(u,a.position),g.push.apply(g,e([k.posA.x,k.posA.y,k.posA.z])),y.push.apply(y,e([k.posB.x,k.posB.y,k.posB.z])),b.push.apply(b,e([k.radA])),x.push.apply(x,e([k.radB])),M.push.apply(M,e([k.colA.r,k.colA.g,k.colA.b])),w.push.apply(w,e([k.colB.r,k.colB.g,k.colB.b]))}r.aImposter.buffer.set(new Float32Array(u)),r.aPosA.buffer.set(new Float32Array(g)),r.aPosB.buffer.set(new Float32Array(y)),r.aRadA.buffer.set(new Float32Array(b)),r.aRadB.buffer.set(new Float32Array(x)),r.aColA.buffer.set(new Float32Array(M)),r.aColB.buffer.set(new Float32Array(w));v=u.length/9;j=new o.Renderable(h,O,r,v)}},F.reset=function(){X=0,G=!1,Y=!1,b.reset(),x.reset()},F.render=function(n){if(void 0!==p&&null!=q){if(f=2*s.getRadius(p),G)if(Y)for(var e=0;e1024);e++)W(n),X++;else!function(n){Y=!0,h.viewport(0,0,t,t),A.bind(),h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT);var e=u.getRect(n),o=r.mat4.create();r.mat4.ortho(o,e.left,e.right,e.bottom,e.top,0,f);var a=r.mat4.create();r.mat4.lookAt(a,[0,0,0],[0,0,-1],[0,1,0]);var i=r.mat4.create();r.mat4.translate(i,i,[0,0,-f/2]),r.mat4.multiply(i,i,n.rotation),N.setUniform("uProjection","Matrix4fv",!1,o),N.setUniform("uView","Matrix4fv",!1,a),N.setUniform("uModel","Matrix4fv",!1,i),N.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),N.setUniform("uTopRight","2fv",[e.right,e.top]),N.setUniform("uAtomScale","1f",2.5*n.atomScale),N.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),N.setUniform("uRes","1f",t),N.setUniform("uDepth","1f",f),N.setUniform("uMode","1i",1),N.setUniform("uAtomShade","1f",n.atomShade),q.render(),n.bonds&&null!=j&&(A.bind(),O.setUniform("uProjection","Matrix4fv",!1,o),O.setUniform("uView","Matrix4fv",!1,a),O.setUniform("uModel","Matrix4fv",!1,i),O.setUniform("uRotation","Matrix4fv",!1,n.rotation),O.setUniform("uDepth","1f",f),O.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),O.setUniform("uTopRight","2fv",[e.right,e.top]),O.setUniform("uRes","1f",t),O.setUniform("uBondRadius","1f",2.5*u.getBondRadius(n)),O.setUniform("uBondShade","1f",n.bondShade),O.setUniform("uAtomScale","1f",2.5*n.atomScale),O.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),O.setUniform("uMode","1i",1),j.render())}(n);else!function(n){G=!0,h.viewport(0,0,t,t),S.bind(),h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT);var e=u.getRect(n),o=r.mat4.create();r.mat4.ortho(o,e.left,e.right,e.bottom,e.top,0,f);var a=r.mat4.create();r.mat4.lookAt(a,[0,0,0],[0,0,-1],[0,1,0]);var i=r.mat4.create();r.mat4.translate(i,i,[0,0,-f/2]),r.mat4.multiply(i,i,n.rotation),N.setUniform("uProjection","Matrix4fv",!1,o),N.setUniform("uView","Matrix4fv",!1,a),N.setUniform("uModel","Matrix4fv",!1,i),N.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),N.setUniform("uTopRight","2fv",[e.right,e.top]),N.setUniform("uAtomScale","1f",2.5*n.atomScale),N.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),N.setUniform("uRes","1f",t),N.setUniform("uDepth","1f",f),N.setUniform("uMode","1i",0),N.setUniform("uAtomShade","1f",n.atomShade),q.render(),n.bonds&&null!=j&&(S.bind(),O.setUniform("uProjection","Matrix4fv",!1,o),O.setUniform("uView","Matrix4fv",!1,a),O.setUniform("uModel","Matrix4fv",!1,i),O.setUniform("uRotation","Matrix4fv",!1,n.rotation),O.setUniform("uDepth","1f",f),O.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),O.setUniform("uTopRight","2fv",[e.right,e.top]),O.setUniform("uRes","1f",t),O.setUniform("uBondRadius","1f",2.5*u.getBondRadius(n)),O.setUniform("uBondShade","1f",n.bondShade),O.setUniform("uAtomScale","1f",2.5*n.atomScale),O.setUniform("uRelativeAtomScale","1f",n.relativeAtomScale),O.setUniform("uMode","1i",0),j.render())}(n);!function(n){h.viewport(0,0,t,t),n.fxaa>0||n.dofStrength>0?P.bind():h.bindFramebuffer(h.FRAMEBUFFER,null);if(h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT),L.setUniform("uSceneColor","1i",d.index),L.setUniform("uSceneDepth","1i",v.index),L.setUniform("uAccumulatorOut","1i",x.index),L.setUniform("uRes","1f",t),L.setUniform("uAO","1f",2*n.ao),L.setUniform("uBrightness","1f",2*n.brightness),L.setUniform("uOutlineStrength","1f",n.outline),I.render(),n.fxaa>0){n.dofStrength>0?R.bind():h.bindFramebuffer(h.FRAMEBUFFER,null);for(var e=0;e0&&(h.bindFramebuffer(h.FRAMEBUFFER,null),h.clear(h.COLOR_BUFFER_BIT|h.DEPTH_BUFFER_BIT),n.fxaa>0?D.setUniform("uColor","1i",M.index):D.setUniform("uColor","1i",_.index),D.setUniform("uDepth","1i",v.index),D.setUniform("uDOFPosition","1f",n.dofPosition),D.setUniform("uDOFStrength","1f",n.dofStrength),D.setUniform("uRes","1f",t),H.render())}(n)}},F.initialize()}},function(n,t){function e(n){var t=this;t.initialize=function(){t.buffer=n.createBuffer()},t.bind=function(){n.bindBuffer(n.ARRAY_BUFFER,t.buffer)},t.set=function(e){t.bind(),n.bufferData(n.ARRAY_BUFFER,e,n.STATIC_DRAW)},t.initialize()}n.exports.buildAttribs=function(n,t){var r={};for(var o in t)r[o]={buffer:new e(n),size:t[o]};return r},n.exports.getExtensions=function(n,t){for(var e={},r=0;r1){for(var a=[],i=0;i 0.0) {\n float depth = texture2D(uSceneDepth, p).r;\n float r = 1.0/511.0;\n float d0 = abs(texture2D(uSceneDepth, p + vec2(-r, 0)).r - depth);\n float d1 = abs(texture2D(uSceneDepth, p + vec2( r, 0)).r - depth);\n float d2 = abs(texture2D(uSceneDepth, p + vec2( 0, -r)).r - depth);\n float d3 = abs(texture2D(uSceneDepth, p + vec2( 0, r)).r - depth);\n float d = max(d0, d1);\n d = max(d, d2);\n d = max(d, d3);\n sceneColor.rgb *= pow(1.0 - d, uOutlineStrength * 32.0);\n sceneColor.a = max(step(0.003, d), sceneColor.a);\n }\n vec4 dAccum = texture2D(uAccumulatorOut, p);\n float shade = max(0.0, 1.0 - (dAccum.r + dAccum.g + dAccum.b + dAccum.a) * 0.25 * uAO);\n shade = pow(shade, 2.0);\n gl_FragColor = vec4(uBrightness * sceneColor.rgb * shade, sceneColor.a);\n}\n",atom:"#version 100\nprecision highp float;\n\nattribute vec3 aImposter;\nattribute vec3 aPosition;\nattribute float aRadius;\nattribute vec3 aColor;\n\nuniform mat4 uView;\nuniform mat4 uProjection;\nuniform mat4 uModel;\nuniform float uAtomScale;\nuniform float uRelativeAtomScale;\nuniform float uAtomShade;\n\nvarying vec3 vColor;\nvarying vec3 vPosition;\nvarying float vRadius;\n\nvoid main() {\n vRadius = uAtomScale * (1.0 + (aRadius - 1.0) * uRelativeAtomScale);\n gl_Position = uProjection * uView * uModel * vec4(vRadius * aImposter + aPosition, 1.0);\n vColor = mix(aColor, vec3(1,1,1), uAtomShade);\n vPosition = vec3(uModel * vec4(aPosition, 1));\n}\n\n\n// __split__\n\n\n#version 100\n#extension GL_EXT_frag_depth: enable\nprecision highp float;\n\nuniform vec2 uBottomLeft;\nuniform vec2 uTopRight;\nuniform float uRes;\nuniform float uDepth;\nuniform int uMode;\n\nvarying vec3 vPosition;\nvarying float vRadius;\nvarying vec3 vColor;\n\nvec2 res = vec2(uRes, uRes);\n\nfloat raySphereIntersect(vec3 r0, vec3 rd) {\n float a = dot(rd, rd);\n vec3 s0_r0 = r0 - vPosition;\n float b = 2.0 * dot(rd, s0_r0);\n float c = dot(s0_r0, s0_r0) - (vRadius * vRadius);\n float disc = b*b - 4.0*a*c;\n if (disc <= 0.0) {\n return -1.0;\n }\n return (-b - sqrt(disc))/(2.0*a);\n}\n\nvoid main() {\n vec3 r0 = vec3(uBottomLeft + (gl_FragCoord.xy/res) * (uTopRight - uBottomLeft), 0.0);\n vec3 rd = vec3(0, 0, -1);\n float t = raySphereIntersect(r0, rd);\n if (t < 0.0) {\n discard;\n }\n vec3 coord = r0 + rd * t;\n vec3 normal = normalize(coord - vPosition);\n if (uMode == 0) {\n gl_FragColor = vec4(vColor, 1);\n } else if (uMode == 1) {\n gl_FragColor = vec4(normal * 0.5 + 0.5, 1.0);\n }\n gl_FragDepthEXT = -coord.z/uDepth;\n}\n",blur:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\nuniform int leftRight;\n\nvoid main() {\n vec2 dir;\n if (leftRight == 1) {\n dir = vec2(1,0)/uRes;\n } else {\n dir = vec2(0,1)/uRes;\n }\n const int range = 16;\n vec4 sample = vec4(0,0,0,0);\n for (int i = -range; i <= range; i++) {\n vec2 p = gl_FragCoord.xy/uRes + dir * float(i);\n sample += texture2D(uTexture, p);\n }\n sample /= float(range) * 2.0 + 1.0;\n gl_FragColor = sample;\n}\n",bond:"#version 100\nprecision highp float;\n\nattribute vec3 aImposter;\nattribute vec3 aPosA;\nattribute vec3 aPosB;\nattribute float aRadA;\nattribute float aRadB;\nattribute vec3 aColA;\nattribute vec3 aColB;\n\nuniform mat4 uView;\nuniform mat4 uProjection;\nuniform mat4 uModel;\nuniform mat4 uRotation;\nuniform float uBondRadius;\nuniform float uAtomScale;\nuniform float uRelativeAtomScale;\n\nvarying vec3 vNormal;\nvarying vec3 vPosA, vPosB;\nvarying float vRadA, vRadB;\nvarying vec3 vColA, vColB;\nvarying float vRadius;\n\nmat3 alignVector(vec3 a, vec3 b) {\n vec3 v = cross(a, b);\n float s = length(v);\n float c = dot(a, b);\n mat3 I = mat3(\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 1\n );\n mat3 vx = mat3(\n 0, v.z, -v.y,\n -v.z, 0, v.x,\n v.y, -v.x, 0\n );\n return I + vx + vx * vx * ((1.0 - c) / (s * s));\n}\n\nvoid main() {\n vRadius = uBondRadius;\n vec3 pos = vec3(aImposter);\n // Scale the box in x and z to be bond-radius.\n pos = pos * vec3(vRadius, 1, vRadius);\n // Shift the origin-centered cube so that the bottom is at the origin.\n pos = pos + vec3(0, 1, 0);\n // Stretch the box in y so that it is the length of the bond.\n pos = pos * vec3(1, length(aPosA - aPosB) * 0.5, 1);\n // Find the rotation that aligns vec3(0, 1, 0) with vec3(uPosB - uPosA) and apply it.\n vec3 a = normalize(vec3(-0.000001, 1.000001, 0.000001));\n vec3 b = normalize(aPosB - aPosA);\n mat3 R = alignVector(a, b);\n pos = R * pos;\n // Shift the cube so that the bottom is centered at the middle of atom A.\n pos = pos + aPosA;\n\n vec4 position = uModel * vec4(pos, 1);\n gl_Position = uProjection * uView * position;\n vPosA = aPosA;\n vPosB = aPosB;\n vRadA = uAtomScale * (1.0 + (aRadA - 1.0) * uRelativeAtomScale);\n vRadB = uAtomScale * (1.0 + (aRadB - 1.0) * uRelativeAtomScale);\n vColA = aColA;\n vColB = aColB;\n}\n\n\n// __split__\n\n\n#version 100\n#extension GL_EXT_frag_depth: enable\nprecision highp float;\n\nuniform mat4 uRotation;\nuniform vec2 uBottomLeft;\nuniform vec2 uTopRight;\nuniform float uDepth;\nuniform float uRes;\nuniform float uBondShade;\nuniform int uMode;\n\nvarying vec3 vPosA, vPosB;\nvarying float vRadA, vRadB;\nvarying vec3 vColA, vColB;\nvarying float vRadius;\n\nmat3 alignVector(vec3 a, vec3 b) {\n vec3 v = cross(a, b);\n float s = length(v);\n float c = dot(a, b);\n mat3 I = mat3(\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 1\n );\n mat3 vx = mat3(\n 0, v.z, -v.y,\n -v.z, 0, v.x,\n v.y, -v.x, 0\n );\n return I + vx + vx * vx * ((1.0 - c) / (s * s));\n}\n\nvoid main() {\n\n vec2 res = vec2(uRes, uRes);\n vec3 r0 = vec3(uBottomLeft + (gl_FragCoord.xy/res) * (uTopRight - uBottomLeft), uDepth/2.0);\n vec3 rd = vec3(0, 0, -1);\n\n vec3 i = normalize(vPosB - vPosA);\n i = vec3(uRotation * vec4(i, 0));\n vec3 j = normalize(vec3(-0.000001, 1.000001, 0.000001));\n mat3 R = alignVector(i, j);\n\n vec3 r0p = r0 - vec3(uRotation * vec4(vPosA, 0));\n r0p = R * r0p;\n vec3 rdp = R * rd;\n\n float a = dot(rdp.xz, rdp.xz);\n float b = 2.0 * dot(rdp.xz, r0p.xz);\n float c = dot(r0p.xz, r0p.xz) - vRadius*vRadius;\n float disc = b*b - 4.0*a*c;\n if (disc <= 0.0) {\n discard;\n }\n float t = (-b - sqrt(disc))/(2.0*a);\n if (t < 0.0) {\n discard;\n }\n\n vec3 coord = r0p + rdp * t;\n if (coord.y < 0.0 || coord.y > length(vPosA - vPosB)) {\n discard;\n }\n\n vec3 color;\n if (coord.y < vRadA + 0.5 * (length(vPosA - vPosB) - (vRadA + vRadB))) {\n color = vColA;\n } else {\n color = vColB;\n }\n\n color = mix(color, vec3(1,1,1), uBondShade);\n\n R = alignVector(j, i);\n vec3 normal = normalize(R * vec3(coord.x, 0, coord.z));\n\n coord = r0 + rd * t;\n if (uMode == 0) {\n gl_FragColor = vec4(color, 1);\n } else if (uMode == 1) {\n gl_FragColor = vec4(normal * 0.5 + 0.5, 1.0);\n }\n gl_FragDepthEXT = -(coord.z - uDepth/2.0)/uDepth;\n}\n",dof:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uColor;\nuniform sampler2D uDepth;\nuniform float uRes;\nuniform float uDOFPosition;\nuniform float uDOFStrength;\nuniform int leftRight;\n\nvoid main() {\n\n vec2 samples[64];\n samples[0] = vec2(0.857612, 0.019885);\n samples[1] = vec2(0.563809, -0.028071);\n samples[2] = vec2(0.825599, -0.346856);\n samples[3] = vec2(0.126584, -0.380959);\n samples[4] = vec2(0.782948, 0.594322);\n samples[5] = vec2(0.292148, -0.543265);\n samples[6] = vec2(0.130700, 0.330220);\n samples[7] = vec2(0.236088, 0.159604);\n samples[8] = vec2(-0.305259, 0.810505);\n samples[9] = vec2(0.269616, 0.923026);\n samples[10] = vec2(0.484486, 0.371845);\n samples[11] = vec2(-0.638057, 0.080447);\n samples[12] = vec2(0.199629, 0.667280);\n samples[13] = vec2(-0.861043, -0.370583);\n samples[14] = vec2(-0.040652, -0.996174);\n samples[15] = vec2(0.330458, -0.282111);\n samples[16] = vec2(0.647795, -0.214354);\n samples[17] = vec2(0.030422, -0.189908);\n samples[18] = vec2(0.177430, -0.721124);\n samples[19] = vec2(-0.461163, -0.327434);\n samples[20] = vec2(-0.410012, -0.734504);\n samples[21] = vec2(-0.616334, -0.626069);\n samples[22] = vec2(0.590759, -0.726479);\n samples[23] = vec2(-0.590794, 0.805365);\n samples[24] = vec2(-0.924561, -0.163739);\n samples[25] = vec2(-0.323028, 0.526960);\n samples[26] = vec2(0.642128, 0.752577);\n samples[27] = vec2(0.173625, -0.952386);\n samples[28] = vec2(0.759014, 0.330311);\n samples[29] = vec2(-0.360526, -0.032013);\n samples[30] = vec2(-0.035320, 0.968156);\n samples[31] = vec2(0.585478, -0.431068);\n samples[32] = vec2(-0.244766, -0.906947);\n samples[33] = vec2(-0.853096, 0.184615);\n samples[34] = vec2(-0.089061, 0.104648);\n samples[35] = vec2(-0.437613, 0.285308);\n samples[36] = vec2(-0.654098, 0.379841);\n samples[37] = vec2(-0.128663, 0.456572);\n samples[38] = vec2(0.015980, -0.568170);\n samples[39] = vec2(-0.043966, -0.771940);\n samples[40] = vec2(0.346512, -0.071238);\n samples[41] = vec2(-0.207921, -0.209121);\n samples[42] = vec2(-0.624075, -0.189224);\n samples[43] = vec2(-0.120618, 0.689339);\n samples[44] = vec2(-0.664679, -0.410200);\n samples[45] = vec2(0.371945, -0.880573);\n samples[46] = vec2(-0.743251, 0.629998);\n samples[47] = vec2(-0.191926, -0.413946);\n samples[48] = vec2(0.449574, 0.833373);\n samples[49] = vec2(0.299587, 0.449113);\n samples[50] = vec2(-0.900432, 0.399319);\n samples[51] = vec2(0.762613, -0.544796);\n samples[52] = vec2(0.606462, 0.174233);\n samples[53] = vec2(0.962185, -0.167019);\n samples[54] = vec2(0.960990, 0.249552);\n samples[55] = vec2(0.570397, 0.559146);\n samples[56] = vec2(-0.537514, 0.555019);\n samples[57] = vec2(0.108491, -0.003232);\n samples[58] = vec2(-0.237693, -0.615428);\n samples[59] = vec2(-0.217313, 0.261084);\n samples[60] = vec2(-0.998966, 0.025692);\n samples[61] = vec2(-0.418554, -0.527508);\n samples[62] = vec2(-0.822629, -0.567797);\n samples[63] = vec2(0.061945, 0.522105);\n\n float invRes = 1.0/uRes;\n vec2 coord = gl_FragCoord.xy * invRes;\n\n float strength = uDOFStrength * uRes/768.0;\n\n float depth = texture2D(uDepth, coord).r;\n float range = uDOFPosition - depth;\n float scale = abs(range);\n\n vec4 sample = texture2D(uColor, coord);\n float count = 1.0;\n for(int i = 0; i < 64; i++) {\n vec2 p = samples[i];\n p = coord + scale * 64.0 * strength * p * invRes;\n float d = texture2D(uDepth, p).r;\n float r = uDOFPosition - d;\n float s = abs(r);\n sample += texture2D(uColor, p) * s;\n count += s;\n }\n\n gl_FragColor = sample/count;\n}",fxaa:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\n\nvoid main() {\n float FXAA_SPAN_MAX = 8.0;\n float FXAA_REDUCE_MUL = 1.0/8.0;\n float FXAA_REDUCE_MIN = 1.0/128.0;\n\n vec2 texCoords = gl_FragCoord.xy/uRes;\n\n vec4 rgbNW = texture2D(uTexture, texCoords + (vec2(-1.0, -1.0) / uRes));\n vec4 rgbNE = texture2D(uTexture, texCoords + (vec2(1.0, -1.0) / uRes));\n vec4 rgbSW = texture2D(uTexture, texCoords + (vec2(-1.0, 1.0) / uRes));\n vec4 rgbSE = texture2D(uTexture, texCoords + (vec2(1.0, 1.0) / uRes));\n vec4 rgbM = texture2D(uTexture, texCoords);\n\n vec4 luma = vec4(0.299, 0.587, 0.114, 1.0);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);\n\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) / uRes;\n\n vec4 rgbA = (1.0/2.0) * \n (texture2D(uTexture, texCoords.xy + dir * (1.0/3.0 - 0.5)) + \n texture2D(uTexture, texCoords.xy + dir * (2.0/3.0 - 0.5)));\n vec4 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * \n (texture2D(uTexture, texCoords.xy + dir * (0.0/3.0 - 0.5)) +\n texture2D(uTexture, texCoords.xy + dir * (3.0/3.0 - 0.5)));\n float lumaB = dot(rgbB, luma);\n\n if((lumaB < lumaMin) || (lumaB > lumaMax)){\n gl_FragColor = rgbA;\n } else {\n gl_FragColor = rgbB;\n }\n\n}","textured-quad":"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\n\nvoid main() {\n gl_FragColor = texture2D(uTexture, gl_FragCoord.xy/uRes);\n}\n"};n.exports={shaders:r}},function(n,t,e){"use strict";var r=e(8);n.exports=function(n){if(arguments.length>1)throw"Error: The Speck Interactions module has changed!";if(0===arguments.length||"object"!=typeof n)throw"Error: Arguments not provided to interactions";var t=void 0===n.scrollZoom||n.scrollZoom,e=n.container,o=n.getRotation,a=n.setRotation,i=n.getTranslation,u=n.setTranslation,s=n.getZoom,l=n.setZoom,c=n.refreshView,f={buttonDown:!1,shiftDown:!1,lastX:0,lastY:0};function p(n){0===n.button&&(f={buttonDown:!0,shiftDown:f.shiftDown,lastX:n.clientX,lastY:n.clientY})}function h(n){if(0===n.button){if(!f.buttonDown)return;f.buttonDown=!1}}function d(n){f.shiftDown=n.shiftKey}function m(n){if(f.buttonDown&&0!==n.buttons){n.preventDefault();var t=n.clientX-f.lastX,e=n.clientY-f.lastY;if(0!==t||0!==e){if(f.lastX=n.clientX,f.lastY=n.clientY,f.shiftDown){var l=i(),p=.001/s();u({x:l.x-t*p,y:l.y+e*p})}else{var h={rotation:new Float32Array(o())};r.rotate(h,t,e),a(h.rotation)}c()}}}function v(n){n.preventDefault(),l(s()*(n.deltaY<0?1/.9:.9)),c()}return e.addEventListener("mousedown",p),window.addEventListener("mouseup",h),window.addEventListener("keydown",d),window.addEventListener("keyup",d),window.addEventListener("mousemove",m),t&&e.addEventListener("wheel",v),function(){e.removeEventListener("mousedown",p),window.removeEventListener("mouseup",h),window.removeEventListener("keydown",d),window.removeEventListener("keyup",d),window.removeEventListener("mousemove",m),e.removeEventListener("wheel",v)}}},function(n,t){n.exports={default:{atomScale:.6,relativeAtomScale:1,bondScale:.5,ao:.75,aoRes:256,brightness:.5,outline:0,spf:32,bonds:!1,bondThreshold:1.2,bondShade:.5,atomShade:.5,dofStrength:0,dofPosition:.5,fxaa:1},stickball:{atomScale:.24,relativeAtomScale:.64,bondScale:.5,bonds:!0,bondThreshold:1.2},toon:{ao:0,spf:0,brightness:.5,outline:1},licorice:{atomScale:.1,relativeAtomScale:0,bondScale:1,bonds:!0,bondThreshold:1.2}}},function(n,t,e){"use strict";e.r(t);var r=e(10),o=e(18),a=e(1),i=e.n(a),u=e(0),s=e.n(u),l=e(22),c=e(43);function f(n){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n})(n)}function p(n,t){for(var e=0;e=0;)t=p[e],Object(i.a)(t,n)&&!d(r,t)&&(r[r.length]=t),e-=1;return r}):Object(s.a)(function(n){return Object(n)!==n?[]:Object.keys(n)}),v=Object(s.a)(function(n){return null===n?"Null":void 0===n?"Undefined":Object.prototype.toString.call(n).slice(8,-1)});function g(n,t,e,r){var i=o(n);function u(n,t){return y(n,t,e.slice(),r.slice())}return!a(function(n,t){return!a(u,t,n)},o(t),i)}function y(n,t,e,r){if(u(n,t))return!0;var o,a,s=v(n);if(s!==v(t))return!1;if(null==n||null==t)return!1;if("function"==typeof n["fantasy-land/equals"]||"function"==typeof t["fantasy-land/equals"])return"function"==typeof n["fantasy-land/equals"]&&n["fantasy-land/equals"](t)&&"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](n);if("function"==typeof n.equals||"function"==typeof t.equals)return"function"==typeof n.equals&&n.equals(t)&&"function"==typeof t.equals&&t.equals(n);switch(s){case"Arguments":case"Array":case"Object":if("function"==typeof n.constructor&&"Promise"===(o=n.constructor,null==(a=String(o).match(/^function (\w*)/))?"":a[1]))return n===t;break;case"Boolean":case"Number":case"String":if(typeof n!=typeof t||!u(n.valueOf(),t.valueOf()))return!1;break;case"Date":if(!u(n.valueOf(),t.valueOf()))return!1;break;case"Error":return n.name===t.name&&n.message===t.message;case"RegExp":if(n.source!==t.source||n.global!==t.global||n.ignoreCase!==t.ignoreCase||n.multiline!==t.multiline||n.sticky!==t.sticky||n.unicode!==t.unicode)return!1}for(var l=e.length-1;l>=0;){if(e[l]===n)return r[l]===t;l-=1}switch(s){case"Map":return n.size===t.size&&g(n.entries(),t.entries(),e.concat([n]),r.concat([t]));case"Set":return n.size===t.size&&g(n.values(),t.values(),e.concat([n]),r.concat([t]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var c=m(n);if(c.length!==m(t).length)return!1;var f=e.concat([n]),p=r.concat([t]);for(l=c.length-1;l>=0;){var h=c[l];if(!Object(i.a)(h,t)||!y(t[h],n[h],f,p))return!1;l-=1}return!0}var b=Object(r.a)(function(n,t){return y(n,t,[],[])});t.a=b}]); \ No newline at end of file +window.dash_bio=function(t){function n(n){for(var e,o,a=n[0],i=n[1],u=0,s=[];u0&&(o=1/Math.sqrt(o),t[0]=n[0]*o,t[1]=n[1]*o),t},u.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]},u.cross=function(t,n,e){var r=n[0]*e[1]-n[1]*e[0];return t[0]=t[1]=0,t[2]=r,t},u.lerp=function(t,n,e,r){var o=n[0],a=n[1];return t[0]=o+r*(e[0]-o),t[1]=a+r*(e[1]-a),t},u.random=function(t,n){n=n||1;var e=2*r()*Math.PI;return t[0]=Math.cos(e)*n,t[1]=Math.sin(e)*n,t},u.transformMat2=function(t,n,e){var r=n[0],o=n[1];return t[0]=e[0]*r+e[2]*o,t[1]=e[1]*r+e[3]*o,t},u.transformMat2d=function(t,n,e){var r=n[0],o=n[1];return t[0]=e[0]*r+e[2]*o+e[4],t[1]=e[1]*r+e[3]*o+e[5],t},u.transformMat3=function(t,n,e){var r=n[0],o=n[1];return t[0]=e[0]*r+e[3]*o+e[6],t[1]=e[1]*r+e[4]*o+e[7],t},u.transformMat4=function(t,n,e){var r=n[0],o=n[1];return t[0]=e[0]*r+e[4]*o+e[12],t[1]=e[1]*r+e[5]*o+e[13],t},u.forEach=(i=u.create(),function(t,n,e,r,o,a){var u,s;for(n||(n=2),e||(e=0),s=r?Math.min(r*n+e,t.length):t.length,u=e;u0&&(a=1/Math.sqrt(a),t[0]=n[0]*a,t[1]=n[1]*a,t[2]=n[2]*a),t},s.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]},s.cross=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=e[0],u=e[1],s=e[2];return t[0]=o*s-a*u,t[1]=a*i-r*s,t[2]=r*u-o*i,t},s.lerp=function(t,n,e,r){var o=n[0],a=n[1],i=n[2];return t[0]=o+r*(e[0]-o),t[1]=a+r*(e[1]-a),t[2]=i+r*(e[2]-i),t},s.random=function(t,n){n=n||1;var e=2*r()*Math.PI,o=2*r()-1,a=Math.sqrt(1-o*o)*n;return t[0]=Math.cos(e)*a,t[1]=Math.sin(e)*a,t[2]=o*n,t},s.transformMat4=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=e[3]*r+e[7]*o+e[11]*a+e[15];return i=i||1,t[0]=(e[0]*r+e[4]*o+e[8]*a+e[12])/i,t[1]=(e[1]*r+e[5]*o+e[9]*a+e[13])/i,t[2]=(e[2]*r+e[6]*o+e[10]*a+e[14])/i,t},s.transformMat3=function(t,n,e){var r=n[0],o=n[1],a=n[2];return t[0]=r*e[0]+o*e[3]+a*e[6],t[1]=r*e[1]+o*e[4]+a*e[7],t[2]=r*e[2]+o*e[5]+a*e[8],t},s.transformQuat=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=e[0],u=e[1],s=e[2],l=e[3],c=l*r+u*a-s*o,f=l*o+s*r-i*a,h=l*a+i*o-u*r,p=-i*r-u*o-s*a;return t[0]=c*l+p*-i+f*-s-h*-u,t[1]=f*l+p*-u+h*-i-c*-s,t[2]=h*l+p*-s+c*-u-f*-i,t},s.rotateX=function(t,n,e,r){var o=[],a=[];return o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],a[0]=o[0],a[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),a[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=a[0]+e[0],t[1]=a[1]+e[1],t[2]=a[2]+e[2],t},s.rotateY=function(t,n,e,r){var o=[],a=[];return o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],a[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),a[1]=o[1],a[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=a[0]+e[0],t[1]=a[1]+e[1],t[2]=a[2]+e[2],t},s.rotateZ=function(t,n,e,r){var o=[],a=[];return o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],a[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),a[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),a[2]=o[2],t[0]=a[0]+e[0],t[1]=a[1]+e[1],t[2]=a[2]+e[2],t},s.forEach=function(){var t=s.create();return function(n,e,r,o,a,i){var u,s;for(e||(e=3),r||(r=0),s=o?Math.min(o*e+r,n.length):n.length,u=r;u1?0:Math.acos(o)},s.str=function(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"},void 0!==t&&(t.vec3=s);var l={create:function(){var t=new e(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t},clone:function(t){var n=new e(4);return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n},fromValues:function(t,n,r,o){var a=new e(4);return a[0]=t,a[1]=n,a[2]=r,a[3]=o,a},copy:function(t,n){return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t},set:function(t,n,e,r,o){return t[0]=n,t[1]=e,t[2]=r,t[3]=o,t},add:function(t,n,e){return t[0]=n[0]+e[0],t[1]=n[1]+e[1],t[2]=n[2]+e[2],t[3]=n[3]+e[3],t},subtract:function(t,n,e){return t[0]=n[0]-e[0],t[1]=n[1]-e[1],t[2]=n[2]-e[2],t[3]=n[3]-e[3],t}};l.sub=l.subtract,l.multiply=function(t,n,e){return t[0]=n[0]*e[0],t[1]=n[1]*e[1],t[2]=n[2]*e[2],t[3]=n[3]*e[3],t},l.mul=l.multiply,l.divide=function(t,n,e){return t[0]=n[0]/e[0],t[1]=n[1]/e[1],t[2]=n[2]/e[2],t[3]=n[3]/e[3],t},l.div=l.divide,l.min=function(t,n,e){return t[0]=Math.min(n[0],e[0]),t[1]=Math.min(n[1],e[1]),t[2]=Math.min(n[2],e[2]),t[3]=Math.min(n[3],e[3]),t},l.max=function(t,n,e){return t[0]=Math.max(n[0],e[0]),t[1]=Math.max(n[1],e[1]),t[2]=Math.max(n[2],e[2]),t[3]=Math.max(n[3],e[3]),t},l.scale=function(t,n,e){return t[0]=n[0]*e,t[1]=n[1]*e,t[2]=n[2]*e,t[3]=n[3]*e,t},l.scaleAndAdd=function(t,n,e,r){return t[0]=n[0]+e[0]*r,t[1]=n[1]+e[1]*r,t[2]=n[2]+e[2]*r,t[3]=n[3]+e[3]*r,t},l.distance=function(t,n){var e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],a=n[3]-t[3];return Math.sqrt(e*e+r*r+o*o+a*a)},l.dist=l.distance,l.squaredDistance=function(t,n){var e=n[0]-t[0],r=n[1]-t[1],o=n[2]-t[2],a=n[3]-t[3];return e*e+r*r+o*o+a*a},l.sqrDist=l.squaredDistance,l.length=function(t){var n=t[0],e=t[1],r=t[2],o=t[3];return Math.sqrt(n*n+e*e+r*r+o*o)},l.len=l.length,l.squaredLength=function(t){var n=t[0],e=t[1],r=t[2],o=t[3];return n*n+e*e+r*r+o*o},l.sqrLen=l.squaredLength,l.negate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=-n[3],t},l.inverse=function(t,n){return t[0]=1/n[0],t[1]=1/n[1],t[2]=1/n[2],t[3]=1/n[3],t},l.normalize=function(t,n){var e=n[0],r=n[1],o=n[2],a=n[3],i=e*e+r*r+o*o+a*a;return i>0&&(i=1/Math.sqrt(i),t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=n[3]*i),t},l.dot=function(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3]},l.lerp=function(t,n,e,r){var o=n[0],a=n[1],i=n[2],u=n[3];return t[0]=o+r*(e[0]-o),t[1]=a+r*(e[1]-a),t[2]=i+r*(e[2]-i),t[3]=u+r*(e[3]-u),t},l.random=function(t,n){return n=n||1,t[0]=r(),t[1]=r(),t[2]=r(),t[3]=r(),l.normalize(t,t),l.scale(t,t,n),t},l.transformMat4=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=n[3];return t[0]=e[0]*r+e[4]*o+e[8]*a+e[12]*i,t[1]=e[1]*r+e[5]*o+e[9]*a+e[13]*i,t[2]=e[2]*r+e[6]*o+e[10]*a+e[14]*i,t[3]=e[3]*r+e[7]*o+e[11]*a+e[15]*i,t},l.transformQuat=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=e[0],u=e[1],s=e[2],l=e[3],c=l*r+u*a-s*o,f=l*o+s*r-i*a,h=l*a+i*o-u*r,p=-i*r-u*o-s*a;return t[0]=c*l+p*-i+f*-s-h*-u,t[1]=f*l+p*-u+h*-i-c*-s,t[2]=h*l+p*-s+c*-u-f*-i,t},l.forEach=function(){var t=l.create();return function(n,e,r,o,a,i){var u,s;for(e||(e=4),r||(r=0),s=o?Math.min(o*e+r,n.length):n.length,u=r;u.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(s.cross(d,n,e),t[0]=d[0],t[1]=d[1],t[2]=d[2],t[3]=1+r,y.normalize(t,t))}),y.setAxes=(v=h.create(),function(t,n,e,r){return v[0]=e[0],v[3]=e[1],v[6]=e[2],v[1]=r[0],v[4]=r[1],v[7]=r[2],v[2]=-n[0],v[5]=-n[1],v[8]=-n[2],y.normalize(t,y.fromMat3(t,v))}),y.clone=l.clone,y.fromValues=l.fromValues,y.copy=l.copy,y.set=l.set,y.identity=function(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t},y.setAxisAngle=function(t,n,e){e*=.5;var r=Math.sin(e);return t[0]=r*n[0],t[1]=r*n[1],t[2]=r*n[2],t[3]=Math.cos(e),t},y.add=l.add,y.multiply=function(t,n,e){var r=n[0],o=n[1],a=n[2],i=n[3],u=e[0],s=e[1],l=e[2],c=e[3];return t[0]=r*c+i*u+o*l-a*s,t[1]=o*c+i*s+a*u-r*l,t[2]=a*c+i*l+r*s-o*u,t[3]=i*c-r*u-o*s-a*l,t},y.mul=y.multiply,y.scale=l.scale,y.rotateX=function(t,n,e){e*=.5;var r=n[0],o=n[1],a=n[2],i=n[3],u=Math.sin(e),s=Math.cos(e);return t[0]=r*s+i*u,t[1]=o*s+a*u,t[2]=a*s-o*u,t[3]=i*s-r*u,t},y.rotateY=function(t,n,e){e*=.5;var r=n[0],o=n[1],a=n[2],i=n[3],u=Math.sin(e),s=Math.cos(e);return t[0]=r*s-a*u,t[1]=o*s+i*u,t[2]=a*s+r*u,t[3]=i*s-o*u,t},y.rotateZ=function(t,n,e){e*=.5;var r=n[0],o=n[1],a=n[2],i=n[3],u=Math.sin(e),s=Math.cos(e);return t[0]=r*s+o*u,t[1]=o*s-r*u,t[2]=a*s+i*u,t[3]=i*s-a*u,t},y.calculateW=function(t,n){var e=n[0],r=n[1],o=n[2];return t[0]=e,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-e*e-r*r-o*o)),t},y.dot=l.dot,y.lerp=l.lerp,y.slerp=function(t,n,e,r){var o,a,i,u,s,l=n[0],c=n[1],f=n[2],h=n[3],p=e[0],d=e[1],m=e[2],g=e[3];return(a=l*p+c*d+f*m+h*g)<0&&(a=-a,p=-p,d=-d,m=-m,g=-g),1-a>1e-6?(o=Math.acos(a),i=Math.sin(o),u=Math.sin((1-r)*o)/i,s=Math.sin(r*o)/i):(u=1-r,s=r),t[0]=u*l+s*p,t[1]=u*c+s*d,t[2]=u*f+s*m,t[3]=u*h+s*g,t},y.invert=function(t,n){var e=n[0],r=n[1],o=n[2],a=n[3],i=e*e+r*r+o*o+a*a,u=i?1/i:0;return t[0]=-e*u,t[1]=-r*u,t[2]=-o*u,t[3]=a*u,t},y.conjugate=function(t,n){return t[0]=-n[0],t[1]=-n[1],t[2]=-n[2],t[3]=n[3],t},y.length=l.length,y.len=y.length,y.squaredLength=l.squaredLength,y.sqrLen=y.squaredLength,y.normalize=l.normalize,y.fromMat3=function(t,n){var e,r=n[0]+n[4]+n[8];if(r>0)e=Math.sqrt(r+1),t[3]=.5*e,e=.5/e,t[0]=(n[5]-n[7])*e,t[1]=(n[6]-n[2])*e,t[2]=(n[1]-n[3])*e;else{var o=0;n[4]>n[0]&&(o=1),n[8]>n[3*o+o]&&(o=2);var a=(o+1)%3,i=(o+2)%3;e=Math.sqrt(n[3*o+o]-n[3*a+a]-n[3*i+i]+1),t[o]=.5*e,e=.5/e,t[3]=(n[3*a+i]-n[3*i+a])*e,t[a]=(n[3*a+o]+n[3*o+a])*e,t[i]=(n[3*i+o]+n[3*o+i])*e}return t},y.str=function(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"},void 0!==t&&(t.quat=y)}(e.exports)}()},function(t,n,e){"use strict";var r=e(7),o=e(6),a=e(20);function i(t,n,e){return Math.min(n,Math.max(t,e))}t.exports.new=function(){return{aspect:1,zoom:.125,translation:{x:0,y:0},atomScale:.6,relativeAtomScale:1,bondScale:.5,rotation:r.mat4.create(),ao:.75,aoRes:256,brightness:.5,outline:0,spf:32,bonds:!1,bondThreshold:1.2,bondShade:.5,atomShade:.5,resolution:768,dofStrength:0,dofPosition:.5,fxaa:1}},t.exports.center=function(t,n){for(var e=-1/0,a=1/0,i=-1/0,u=1/0,s=0;sn&&(n=u,t.farAtom=r)}return t.farAtom});t.exports.getRadius=function(t){var n=u(t),e=a.MAX_ATOM_RADIUS,r=2.5*Math.sqrt(e*e+e*e+e*e);return Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)+r}},function(t,n,e){var o;o=function(){return function(t){var n={};function e(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}return e.m=t,e.c=n,e.p="",e(0)}([function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.rnaPlot=n.RNAGraph=void 0;var o=e(1);Object.defineProperty(n,"RNAGraph",{enumerable:!0,get:function(){return o.RNAGraph}});var a=e(3);Object.defineProperty(n,"rnaPlot",{enumerable:!0,get:function(){return a.rnaPlot}}),n.FornaContainer=function(t,n){var e=this;if(e.options={displayAllLinks:!1,labelInterval:10,applyForce:!0,chargeDistance:110,friction:.35,middleCharge:-30,otherCharge:-30,linkDistanceMultiplier:15,initialSize:null,layout:"standard-polygonal",allowPanningAndZooming:!0,transitionDuration:500,resizeSvgOnResize:!0},arguments.length>1)for(var a in n)e.options.hasOwnProperty(a)&&(e.options[a]=n[a]);null!==e.options.initialSize?(e.options.svgW=e.options.initialSize[0],e.options.svgH=e.options.initialSize[1]):(e.options.svgW=800,e.options.svgH=800);l.default.scale.category20();var u=null,s=null,p=l.default.scale.linear().domain([0,e.options.svgW]).range([0,e.options.svgW]),d=l.default.scale.linear().domain([0,e.options.svgH]).range([0,e.options.svgH]),m=e.graph={nodes:[],links:[]};function g(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function v(t){var n=t,e=t.prevNode;if(null!==e&&t.linked){var r=[-(n.x-e.x),-(n.y-e.y)],o=[-(r=[r[0]/g(r),r[1]/g(r)])[1],r[0]],a=[t.radius*r[0],t.radius*r[1]],i="M"+(a[0]+6*(r[0]+o[0])/2)+","+(a[1]+6*(r[1]+o[1])/2)+"L"+a[0]+","+a[1]+"L"+(a[0]+6*(r[0]-o[0])/2)+","+(a[1]+6*(r[1]-o[1])/2);l.default.select(this).attr("d",i)}}function y(t){return"basepair"==t.linkType||"backbone"==t.linkType||"pseudoknot"==t.linkType||"label_link"==t.linkType||"external"==t.linkType||"chain_chain"==t.linkType}function b(t,n,e){if(t.hasOwnProperty(n.num)){var r=parseFloat(t[n.num]);return isNaN(r)?t[n.num]:e(r)}return"white"}e.linkStrengths={pseudoknot:0,proteinChain:0,chainChain:0,intermolecule:10,external:0,other:10},e.displayParameters={displayBackground:"true",displayNumbering:"true",displayNodeOutline:"true",displayNodeLabel:"true",displayLinks:"true",displayPseudoknotLinks:"true",displayProteinLinks:"true"},e.colorScheme="structure",e.customColors={},e.animation=e.options.applyForce,e.deaf=!1,e.rnas={},e.extraLinks=[],Array.prototype.equals=function(t){if(!t)return!1;if(this.length!=t.length)return!1;for(var n=0,e=this.length;n0?l.default.max(e.graph.nodes.map(function(t){return t.x})):0,o=l.default.min(t.nodes.map(function(t){return t.x})),t.nodes.forEach(function(t){t.x+=r-o+20,t.px+=r-o})),t.nodes.forEach(function(n){n.rna=t}),e.rnas[t.uid]=t,e.recalculateGraph(),e.update(),e.centerView(),t},e.transitionRNA=function(t,n){var r=e.options.transitionDuration,o=e.graph.nodes.filter(function(t){return"nucleotide"==t.nodeType}).map(function(t){return t.uid}),a={uids:o},i=e.createInitialLayout(t,a),u=S.selectAll("g.gnode").data(i.nodes,D),r=e.options.transitionDuration;0===r?u.attr("transform",function(t){return"translate("+[t.x,t.y]+")"}):u.transition().attr("transform",function(t){return"translate("+[t.x,t.y]+")"}).duration(r);var s=k.selectAll("line.link").data(i.links.filter(y),U),l=e.createNewNodes(u.enter()).attr("transform",function(t){return void 0!==t.x&&void 0!==t.y?"translate("+[0,0]+")":""});if(0===r?u.exit().remove():u.exit().transition().attr("transform",function(t){return void 0!==t.x&&void 0!==t.y?"translate("+[0,0]+")":""}),u.select("path").each(v),e.graph.nodes=u.data(),e.updateStyle(),e.centerView(r),s.exit().remove(),0===r){s.attr("x1",function(t){return t.source.x}).attr("y1",function(t){return t.source.y}).attr("x2",function(t){return t.target.x}).attr("y2",function(t){return t.target.y});e.createNewLinks(s.enter());e.graph.links=s.data(),e.updateStyle()}else s.transition().attr("x1",function(t){return t.source.x}).attr("y1",function(t){return t.source.y}).attr("x2",function(t){return t.target.x}).attr("y2",function(t){return t.target.y}).duration(r).call(function(t,n){0===t.size()&&setTimeout(n,r);var e=0;t.each(function(){++e}).each("end",function(){--e||n.apply(this,arguments)})},function(){e.createNewLinks(s.enter());e.graph.links=s.data(),e.updateStyle(),void 0!==n&&n()});0===r?l.attr("transform",function(t){return void 0!==t.x&&void 0!==t.y?"translate("+[t.x,t.y]+")":""}):l.transition().attr("transform",function(t){return void 0!==t.x&&void 0!==t.y?"translate("+[t.x,t.y]+")":""})},e.recalculateGraph=function(){for(var t in e.graph.nodes=[],e.graph.links=[],e.rnas)e.graph.nodes=e.graph.nodes.concat(e.rnas[t].nodes),e.graph.links=e.graph.links.concat(e.rnas[t].links);for(var n={},r=0;r0?(maxX=l.default.max(e.graph.nodes.map(function(t){return t.x})),maxY=l.default.max(e.graph.nodes.map(function(t){return t.y}))):(maxX=0,maxY=0),t.nodes.forEach(function(t){t.rna.uid in e.rnas||(e.rnas[t.rna.uid]=t.rna),t.x+=maxX,t.px+=maxX}),r=new o.RNAGraph("",""),r.nodes=t.nodes,r.links=t.links,e.recalculateGraph(),e.update(),e.centerView()},e.addCustomColors=function(t){e.customColors=t},e.addCustomColorsText=function(t){var n=new f.ColorScheme(t);e.customColors=n.colorsJson,e.changeColorScheme("custom")},e.clearNodes=function(){e.graph.nodes=[],e.graph.links=[],e.rnas={},e.extraLinks=[],e.update()},e.toJSON=function(){var t={rnas:e.rnas,extraLinks:e.extraLinks},n=JSON.stringify(t,function(t,n){return"rna"==t?void 0:n},"\t");return n},e.fromJSON=function(t){var n,a;try{var i=JSON.parse(t);n=i.rnas,a=i.extraLinks}catch(t){throw t}for(var u in n)"rna"==n[u].type?(r=new o.RNAGraph,r.seq=n[u].seq,r.dotbracket=n[u].dotbracket,r.circular=n[u].circular,r.pairtable=n[u].pairtable,r.uid=n[u].uid,r.structName=n[u].structName,r.nodes=n[u].nodes,r.links=n[u].links,r.rnaLength=n[u].rnaLength,r.elements=n[u].elements,r.nucsToNodes=n[u].nucsToNodes,r.pseudoknotPairs=n[u].pseudoknotPairs):(r=new ProteinGraph,r.size=n[u].size,r.nodes=n[u].nodes,r.uid=n[u].uid),e.addRNAJSON(r,!1);a.forEach(function(t){e.extraLinks.push(t)}),e.recalculateGraph(),e.update()},e.setSize=function(){if(null==e.options.initialSize){var n=l.default.select(t).node().offsetHeight,r=l.default.select(t).node().offsetWidth;e.options.svgW=r,e.options.svgH=n,p.range([0,r]).domain([0,r]),d.range([0,n]).domain([0,n]),e.zoomer.x(p).y(d),e.brusher.x(p).y(d),e.centerView(),e.options.resizeSvgOnResize&&x.attr("width",r).attr("height",n)}},e.setOutlineColor=function(t){var n=S.selectAll("g.gnode").select("[node_type=nucleotide]");n.style("fill",t)},e.changeColorScheme=function(t){var n=S.selectAll("[node_type=protein]");n.classed("protein",!0).attr("r",function(t){return t.radius});S.selectAll("g.gnode"),S.selectAll("g.gnode").selectAll("circle");var r=S.selectAll("g.gnode").select("[node_type=nucleotide]");if(e.colorScheme=t,"sequence"==t){var o=l.default.scale.ordinal().range(["#dbdb8d","#98df8a","#ff9896","#aec7e8","#aec7e8"]).domain(["A","C","G","U","T"]);r.style("fill",function(t){return o(t.name)})}else if("structure"==t){var o=l.default.scale.category10().domain(["s","m","i","e","t","h","x"]).range(["lightgreen","#ff9896","#dbdb8d","lightsalmon","lightcyan","lightblue","transparent"]);r.style("fill",function(t){return o(t.elemType)})}else if("positions"==t)r.style("fill",function(t){var n=l.default.scale.linear().range(["#98df8a","#dbdb8d","#ff9896"]).interpolate(l.default.interpolateLab).domain([1,1+(t.rna.rnaLength-1)/2,t.rna.rnaLength]);return n(t.num)});else if("custom"==t){if(void 0!==e.customColors&&"domain"in e.customColors&&"range"in e.customColors)var o=l.default.scale.linear().interpolate(l.default.interpolateLab).domain(e.customColors.domain).range(e.customColors.range);r.style("fill",function(t){if(void 0===e.customColors||!e.customColors.hasOwnProperty("colorValues"))return"white";if(e.customColors.colorValues.hasOwnProperty(t.structName)&&e.customColors.colorValues[t.structName].hasOwnProperty(t.num)){var n=e.customColors.colorValues[t.structName];return b(n,t,o)}if(e.customColors.colorValues.hasOwnProperty("")){var r=e.customColors.colorValues[""];return b(r,t,o)}return"white"})}},window.addEventListener("resize",e.setSize,!1),e.zoomer=l.default.behavior.zoom().scaleExtent([.1,10]).x(p).y(d).on("zoomstart",function(){var t=S.selectAll("g.gnode").selectAll(".outline_node");t.each(function(t){t.selected=!1,t.previouslySelected=!1}),t.classed("selected",!1)}).on("zoom",function(){_.attr("transform","translate("+l.default.event.translate+") scale("+l.default.event.scale+")")}),l.default.select(t).select("svg").remove();var x=l.default.select(t).classed("forna-container",!0).attr("tabindex",1).on("keydown.brush",O).on("keyup.brush",L).each(function(){this.focus()}).append("svg:svg").attr("width",e.options.svgW).attr("height",e.options.svgH).attr("id","plotting-area");e.options.svg=x;var M=x.append("svg:g").on("mousemove",function(){if(!u)return;mpos=l.default.mouse(_.node()),A.attr("x1",u.x).attr("y1",u.y).attr("x2",mpos[0]).attr("y2",mpos[1])}).on("mousedown",function(){}).on("mouseup",function(){u&&A.attr("class","drag_line_hidden");E()});e.options.allowPanningAndZooming&&M.call(e.zoomer);var w=M.append("g").datum(function(){return{selected:!1,previouslySelected:!1}}).attr("class","brush"),_=M.append("svg:g"),k=_.append("svg:g"),S=_.append("svg:g");e.brusher=l.default.svg.brush().x(p).y(d).on("brushstart",function(t){var n=S.selectAll("g.gnode").selectAll(".outline_node");n.each(function(t){t.previouslySelected=R&&t.selected})}).on("brush",function(){var t=S.selectAll("g.gnode").selectAll(".outline_node"),n=l.default.event.target.extent();t.classed("selected",function(t){return t.selected=e.options.applyForce&&t.previouslySelected^(n[0][0]<=t.x&&t.xr||sa||l-1){if(t.source.rna==t.target.rna){var n=t.source.rna;n.addPseudoknots(),n.pairtable[t.source.num]=0,n.pairtable[t.target.num]=0,z(n)}else extraLinkIndex=e.extraLinks.indexOf(t),e.extraLinks.splice(extraLinkIndex,1);e.recalculateGraph()}e.update()}(t)}};e.addLink=function(t){t.source.rna==t.target.rna?(r=t.source.rna,r.pairtable[t.source.num]=t.target.num,r.pairtable[t.target.num]=t.source.num,z(r)):(t.linkType="intermolecule",e.extraLinks.push(t)),e.recalculateGraph(),e.update()};var q=function(t){if(!l.default.event.defaultPrevented){if(!R){var n=S.selectAll("g.gnode").selectAll(".outline_node");n.classed("selected",function(t){return t.selected=e.options.applyForce&&(t.previouslySelected=!1)})}l.default.select(this).select("circle").classed("selected",t.selected=e.options.applyForce&&!t.previouslySelected)}},j=function(t){if(u){if((s=t)==u)return void E();var n={source:u,target:s,linkType:"basepair",value:1,uid:generateUUID()};for(i=0;i0&&"*"==u.dotbracket[u.dotbracket.length-1]&&(u.dotbracket=u.dotbracket.slice(0,u.dotbracket.length-1),u.circular=!0),u.uid=a(),u.elements=[],u.pseudoknotPairs=[],u.nucsToNodes={},u.addUids=function(t){for(var n=u.nodes.filter(function(t){return"nucleotide"==t.nodeType}),e=0;e=0;)n.push(e),t=t.substring(0,e)+"oo"+t.substring(e+1,t.length);return{targetString:t,breaks:n}};var s=u.removeBreaks(u.dotbracket);u.dotbracket=s.targetString,u.dotBracketBreaks=s.breaks,s=u.removeBreaks(u.seq),u.seq=s.targetString,u.seqBreaks=s.breaks,u.calculateStartNumberArray=function(){u.startNumberArray=[];for(var t=0;t=0&&(e=!0);e?u.elements[n][2].map(function(t){0!=t&&(u.nodes[t-1].elemType="e")}):u.elements[n][2].map(function(t){0!=t&&(u.nodes[t-1].elemType=u.elements[n][0])})}return u},u.getPositions=function(t){for(var n=[],e=u.nodes.filter(function(n){return n.nodeType==t}),r=0;r=4}),e=0;eu.dotbracket.length)){u.links.push({source:u.nodes[t[f]-1],target:u.nodes[u.nodes.length-1],linkType:"fake",value:e,uid:a()}),t.length>4&&u.links.push({source:u.nodes[t[f]-1],target:u.nodes[t[(f+Math.floor(t.length/2))%t.length]-1],linkType:"fake",value:2*e,uid:a()});var h=3.14159*(t.length-2)/t.length,p=2*Math.cos(1.570795-h/2);u.links.push({source:u.nodes[t[f]-1],target:u.nodes[t[(f+2)%t.length]-1],linkType:"fake",value:p});var d=u.nodes[t[f]-1];"x"in d&&(s+=d.x,l+=d.y,c+=1)}return c>0&&(i.x=s/c,i.y=l/c,i.px=i.x,i.py=i.y),u},u.connectFakeNodes=function(){for(var t={},n=u.nodes.filter(function(t){return"middle"==t.nodeType}),e=new Set,r=1;r<=u.nodes.length;r++)t[r]=[];for(r=0;r=0||u.dotBracketBreaks.indexOf(e-2)>=0)&&(i=""),u.nodes.push({name:i,num:e+u.startNumberArray[e-1]-1,radius:5,rna:u,nodeType:"nucleotide",structName:u.structName,elemType:n[e],uid:a(),linked:!1})}for(e=0;e1&&-1===u.dotBracketBreaks.indexOf(e-1)&&-1==u.dotBracketBreaks.indexOf(e-2)&&-1==u.dotBracketBreaks.indexOf(e-3)&&(u.links.push({source:u.nodes[e-2],target:u.nodes[e-1],linkType:"backbone",value:1,uid:a()}),u.nodes[e-1].linked=!0);for(e=0;er)return[];for(;0===t[e];e++)i.push(e);for(;0===t[r];r--)s.push(r);if(e>r){if(i.push(e),0===n)return[["e",n,i.sort(o)]];for(var l=!1,c=[],f=[],h=0;h=0&&(l=!0);return[["h",n,i.sort(o)]]}if(t[e]!=r){var p=i;h=e;for(p.push(h);h<=r;){for(a=a.concat(u.ptToElements(t,n,h,t[h])),p.push(t[h]),h=t[h]+1;0===t[h]&&h<=r;h++)p.push(h);p.push(h)}return p.pop(),(p=p.concat(s)).length>0&&(0===n?a.push(["e",n,p.sort(o)]):a.push(["m",n,p.sort(o)])),a}t[e]===r&&(i.push(e),s.push(r),i.concat(s).length>4&&(0===n?a.push(["e",n,i.concat(s).sort(o)]):a.push(["i",n,i.concat(s).sort(o)])));for(var d=[];t[e]===r&&e0)){eloop=externalLoop[0],nucs=eloop[2].sort(o),prev=nucs[0],hloop=!0,numGreater=0;for(var t=1;t1&&(numGreater+=1),prev=nucs[t];1==numGreater?eloop[0]="h":2==numGreater?eloop[0]="i":eloop[0]="m"}return u},u.reassignLinkUids=function(){for(var t=0;t1&&(u.pseudoknotPairs=u.pseudoknotPairs.concat(r.rnaUtilities.removePseudoknotsFromPairtable(u.pairtable))),u},u.addPseudoknots=function(){for(var t=u.pairtable,n=u.pseudoknotPairs,e=0;e0&&u.recalculateElements()}void 0===String.prototype.trim&&(String.prototype.trim=function(){return String(this).replace(/^\s+|\s+$/g,"")})},function(t,n,e){t.exports=function(t){function n(r){if(e[r])return e[r].exports;var o=e[r]={exports:{},id:r,loaded:!1};return t[r].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var e={};return n.m=t,n.c=e,n.p="",n(0)}([function(t,n,e){t.exports=e(1)},function(t,n){"use strict";function e(){var t=this;t.bracketLeft="([{abcdefghijklmnopqrstuvwxyz".split(""),t.inverseBrackets=function(t){for(var n={},e=0;e=r;r++){e[r]=new Array(n+1);for(var o=r;n>=o;o++)e[r][o]=0}for(var a=0,r=n-0-1;r>0;r--)for(var o=r+0+1;n>=o;o++){a=e[r][o-1];for(var i=o-0-1;i>=r;i--)t[i]===o&&(a=Math.max(a,(i>r?e[r][i-1]:0)+1+(o-i-1>0?e[i+1][o-1]:0)));e[r][o]=a}return a=e[1][n],e},t.backtrackMaximumMatching=function(n,e){var r=Array.apply(null,Array(n.length)).map(function(){return 0});return t.mmBt(n,r,e,1,n.length-1),r},t.mmBt=function(n,e,r,o,a){var i=n[o][a];if(!(0>a-o-1)){if(n[o][a-1]==i)return void t.mmBt(n,e,r,o,a-1);for(var u=a-0-1;u>=o;u--)if(r[a]===u){var s=u>o?n[o][u-1]:0,l=a-u-1>0?n[u+1][a-1]:0;if(s+l+1==i)return e[u]=a,e[a]=u,u>o&&t.mmBt(n,e,r,o,u-1),void t.mmBt(n,e,r,u+1,a-1)}console.log("FAILED!!!"+o+","+a+": backtracking failed!")}},t.dotbracketToPairtable=function(n){var e=Array.apply(null,new Array(n.length+1)).map(Number.prototype.valueOf,0);e[0]=n.length;for(var r={},o=0;o0)throw"Unmatched base at position "+r[c][0];return e},t.insertIntoStack=function(t,n,e){for(var r=0;t[r].length>0&&t[r][t[r].length-1]r?t.bracketLeft[t.insertIntoStack(e,r,n[r])]:t.bracketRight[t.deleteFromStack(e,r)]}return a},t.findUnmatched=function(n,e,r){for(var o=[],a=[],i=e,u=r,s=e;r>=s;s++)0!==n[s]&&(n[s]r)&&a.push([s,n[s]]);for(var s=i;u>=s;s++){for(;0===n[s]&&u>=s;)s++;for(r=n[s];n[s]===r;)s++,r--;o=o.concat(t.findUnmatched(n,s,r))}return a.length>0&&o.push(a),o},t.removePseudoknotsFromPairtable=function(n){for(var e=t.maximumMatching(n),r=t.backtrackMaximumMatching(e,n),o=[],a=1;aa)return[];for(;0===n[o];o++)s.push(o);for(;0===n[a];a--)l.push(a);if(o>a){if(s.push(o),0===e)return[["e",e,s.sort(r)]];for(var c=!1,f=[],h=[],p=0;p=0&&(c=!0);return[["h",e,s.sort(r)]]}if(n[o]!=a){var d=s,p=o;for(d.push(p);a>=p;){for(u=u.concat(t.ptToElements(n,e,p,n[p],i)),d.push(n[p]),p=n[p]+1;0===n[p]&&a>=p;p++)d.push(p);d.push(p)}return d.pop(),(d=d.concat(l)).length>0&&(0===e?u.push(["e",e,d.sort(r)]):u.push(["m",e,d.sort(r)])),u}if(n[o]===a){s.push(o),l.push(a);var m=s.concat(l);m.length>4&&(0===e?u.push(["e",e,s.concat(l).sort(r)]):u.push(["i",e,s.concat(l).sort(r)]))}for(var g=[];n[o]===a&&a>o;)g.push(o),g.push(a),o+=1,a-=1,e+=1;return s=[o-1],l=[a+1],u.push(["s",e,g.sort(r)]),u.concat(t.ptToElements(n,e,o,a,i))}}Object.defineProperty(n,"__esModule",{value:!0}),n.arraysEqual=function(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t.length!=n.length)return!1;for(var e=0;e=u;u++)e.push(u);else console.log("Malformed range (too many dashes):",t)}return e},n.parseColorText=function(t){for(var e=t.split("\n"),r="",o=1,a={colorValues:{"":{}},range:["white","steelblue"]},i=[],u=0;u"!=e[u][0])for(var s=e[u].trim().split(/[\s]+/),l=0;lt&&(r=t),t>o&&(o=t));for(a in n.colorsJson.colorValues[e])"number"==typeof(t=n.colorsJson.colorValues[e][a])&&(n.colorsJson.colorValues[e][a]=(t-r)/(o-r))}return n},n.parseColorText(n.colorsText),n};var r=function(t,n){return t-n};n.rnaUtilities=new e}])},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.rnaPlot=function(){var t,n,e={width:400,height:400,nucleotideRadius:5,rnaEdgePadding:0,labelInterval:0,showNucleotideLabels:!0,startNucleotideNumber:1,bundleExternalLinks:!1};function a(a){a.each(function(a){var i=new r.RNAGraph(a.sequence,a.structure,a.name).recalculateElements().elementsToJson().addName(a.name);a.rnaGraph=i;for(var u=new o.NAView,s=u.naview_xy_coordinates(i.pairtable),l=[],c=0;c2&&void 0!==arguments[2]?arguments[2]:"",i=d3.extent(r),u=d3.extent(o);""!=a&&(u[1]+=30);i[0]-=e.nucleotideRadius+e.rnaEdgePadding,u[0]-=e.nucleotideRadius+e.rnaEdgePadding,i[1]+=e.nucleotideRadius+e.rnaEdgePadding,u[1]+=e.nucleotideRadius+e.rnaEdgePadding;var s,l=i[1]-i[0],c=u[1]-u[0],f=l-e.width,h=c-e.height;function p(t,n,e){var r=(t.range()[1]-t.range()[0])/(t.domain()[1]-t.domain()[0]),o=(n[1]-n[0])*r,a=(e[1]-e[0]-o)/2;return{scaleFactor:r,scale:d3.scale.linear().domain(n).range([e[0]+a,e[1]-a])}}f>h?(t=d3.scale.linear().domain(i).range([0,e.width]),s=p(t,u,[0,e.height]),n=s.scale):(n=d3.scale.linear().domain(u).range([0,e.height]),s=p(n,i,[0,e.width]),t=s.scale);t.range()[0],t.domain()[0],n.range()[0],n.domain()[0];return"translate("+-(t.domain()[0]*s.scaleFactor-t.range()[0])+","+-(n.domain()[0]*s.scaleFactor-n.range()[0])+")scale("+s.scaleFactor+")"}(i.nodes.map(function(t){return t.x}),i.nodes.map(function(t){return t.y})),d=d3.select(this).append("g").attr("transform",p),m=i.nodes.filter(function(t){return"nucleotide"==t.nodeType}),g=i.nodes.filter(function(t){return"label"==t.nodeType}),v=i.links;!function(t,n){n=n.filter(function(t){return null!==t.source&&null!==t.target});t.selectAll(".rna-link").data(n).enter().append("svg:line").attr("x1",function(t){return t.source.x}).attr("x2",function(t){return t.target.x}).attr("y1",function(t){return t.source.y}).attr("y2",function(t){return t.target.y}).attr("link-type",function(t){return t.linkType}).attr("extra-link-type",function(t){return t.extraLinkType}).classed("rna-link",!0)}(d,v),function(t,n){var r=t.selectAll(".rna-base").data(n).enter().append("svg:g").attr("transform",function(t){return"translate("+t.x+","+t.y+")"});r.append("svg:circle").attr("r",e.nucleotideRadius).classed("rna-base",!0);if(e.showNucleotideLabels)r.append("svg:text").text(function(t){return t.name}).attr("text-anchor","middle").attr("dominant-baseline","central").classed("nucleotide-label",!0).append("svg:title").text(function(t){return t.struct_name+":"+t.num})}(d,m),function(t,n){t.selectAll(".rnaLabel").data(n).enter().append("svg:g").attr("transform",function(t){return"translate("+t.x+","+t.y+")"}).append("svg:text").text(function(t){return t.name}).attr("text-anchor","middle").attr("font-weight","bold").attr("dominant-baseline","central").classed("number-label",!0)}(d,g),f=d,h=a.name,f.append("svg:text").attr("transform","translate("+t.invert(e.width/2)+","+n.invert(e.height)+")").attr("dy",-10).classed("rna-name",!0).text(h),e.bundleExternalLinks&&function(t,n){var e={},r=[];n=n.filter(function(t){return"correct"==t.linkType||"incorrect"==t.linkType||"extra"==t.linkType}),t.selectAll("[link-type=extra]").remove();for(var o=0;oh);if(g=v-2,v>=2&&(i[d+1+g]+=f,i[m-1-g]+=f,i[d]+=f,i[m]+=f,v>2))for(;g>=1;g--)i[d+g]=Math.PI,i[m-g]=Math.PI;s[++c]=v,h<=p&&t(h,p,r)}else n++,w++,k++;for(M=Math.PI*(w-2)/w,S[++_]=e,y=o<0?0:o,b=1;b<=_;b++){for(x=S[b]-y,g=0;g<=x;g++)i[y+g]+=M;if(b>_)break;y=S[++b]}u[++l]=k})(0,e+1,t),u[l]-=2,r=0,o[0]=100,a[0]=100;var h=[];for(h.push([o[0],a[0]]),n=1;n=0&&(1==++n?e=r:e>r&&(e=r));return t.setMark(!1),e+1}s.prototype.naview_xy_coordinates=function(t){var n,e=[],r=[];if(0===t.length||0===t[0])return 0;this.nbase=t[0],this.bases=[];for(var o=0;on&&e++;0==e&&(this.bases[1].setMate(this.nbase),this.bases[this.nbase].setMate(1))},s.prototype.find_regions=function(){var t,n=null,e=null;t=this.nbase+1;var r=[];for(n=0;nthis.nbase&&(n=0)}while(n!=t);return i},s.prototype.find_central_loop=function(){var t=new u.Loop,n=null,e=null,r=null;for(function(){var t=new u.Loop,n=null,e=null;for(n=0;nn?(e=t.getDepth(),n=t.getNconnection(),this.root=t):t.getDepth()>e&&t.getNconnection()==n&&(e=t.getDepth(),this.root=t)},s.prototype.traverse_loop=function(t,n){var e,r,o,a,i,u,s,l,c,f,h,p,d,m,g,v,y,b,x,M,w,_,k,S,A,E,T,R,N,P,C,O,L,U,D,z,F,q,j,B,I,X,Y,H,V,G,W,Z,J,$,K,Q,tt,nt,et,rt,ot,at,it,ut,st,lt,ct,ft,ht,pt,dt,mt,gt,vt=0;u=2*Math.PI/(this.nbase+1),b=null,P=-1;var yt=0;for(k=0;null!=(v=t.getConnection(yt));yt++,k++)e=-Math.sin(u*v.getStart()),r=Math.cos(u*v.getStart()),o=-Math.sin(u*v.getEnd()),a=Math.cos(u*v.getEnd())-r,i=e-o,s=Math.sqrt(a*a+i*i),v.setXrad(a/s),v.setYrad(i/s),v.setAngle(Math.atan2(i,a)),v.getAngle()<0&&v.setAngle(v.getAngle()+2*Math.PI),null!=n&&n.getRegion()==v.getRegion()&&(b=v,P=k);t:for(;;){this.determine_radius(t,this.lencut),l=t.getRadius()/this.RADIUS_REDUCTION_FACTOR,null==n?c=f=0:(h=(this.bases[b.getStart()].getX()+this.bases[b.getEnd()].getX())/2,p=(this.bases[b.getStart()].getY()+this.bases[b.getEnd()].getY())/2,c=h-l*b.getXrad(),f=p-l*b.getYrad()),T=-1==P?0:P,v=t.getConnection(T),E=0,C=!1;do{if((w=T-1)<0&&(w=t.getNconnection()-1),x=t.getConnection(w),this.connected_connection(x,v)?(T=w,v=x):C=!0,++E>t.getNconnection()){for(A=-1,k=0;k=t.getNconnection()&&(w=0),v=t.getConnection(k),(ht=(y=t.getConnection(w)).getAngle()-v.getAngle())<0&&(ht+=2*Math.PI),ht>A&&(A=ht,vt=k);R=vt,(T=vt+1)>=t.getNconnection()&&(T=0),(v=t.getConnection(R)).setBroken(!0),C=!0}}while(!C);for(O=!1,G=T;!O;){for(E=0,C=!1,R=T,L=!1;!C;)if(v=t.getConnection(R),R==P&&(L=!0),(w=R+1)>=t.getNconnection()&&(w=0),y=t.getConnection(w),this.connected_connection(v,y)){if(++E>=t.getNconnection())break;R=w}else C=!0;for(k=W=Z=N=this.find_ic_middle(T,R,n,b,t),C=!1,$=0;!C;)(k=$<0?W:0==$?N:Z)>=0&&(v=t.getConnection(k),null!=n&&b==v||(0==$?(d=v.getAngle()-Math.asin(.5/l),m=v.getAngle()+Math.asin(.5/l),this.bases[v.getStart()].setX(c+l*Math.cos(d)),this.bases[v.getStart()].setY(f+l*Math.sin(d)),this.bases[v.getEnd()].setX(c+l*Math.cos(m)),this.bases[v.getEnd()].setY(f+l*Math.sin(m))):$<0?((w=k+1)>=t.getNconnection()&&(w=0),v=t.getConnection(k),y=t.getConnection(w),et=v.getXrad(),rt=v.getYrad(),ht=(v.getAngle()+y.getAngle())/2,v.getAngle()>y.getAngle()&&(ht-=Math.PI),it=Math.cos(ht),lt=Math.sin(ht),ct=-it,(S=y.getAngle()-v.getAngle())<0&&(S+=2*Math.PI),ft=v.isExtruded()?S<=Math.PI/2?2:1.5:1,this.bases[v.getEnd()].setX(this.bases[y.getStart()].getX()+ft*lt),this.bases[v.getEnd()].setY(this.bases[y.getStart()].getY()+ft*ct),this.bases[v.getStart()].setX(this.bases[v.getEnd()].getX()+rt),this.bases[v.getStart()].setY(this.bases[v.getEnd()].getY()-et)):((w=k-1)<0&&(w=t.getNconnection()-1),v=t.getConnection(w),ot=(y=t.getConnection(k)).getXrad(),at=y.getYrad(),ht=(v.getAngle()+y.getAngle())/2,v.getAngle()>y.getAngle()&&(ht-=Math.PI),it=Math.cos(ht),lt=-Math.sin(ht),ct=it,(S=y.getAngle()-v.getAngle())<0&&(S+=2*Math.PI),ft=v.isExtruded()?S<=Math.PI/2?2:1.5:1,this.bases[y.getStart()].setX(this.bases[v.getEnd()].getX()+ft*lt),this.bases[y.getStart()].setY(this.bases[v.getEnd()].getY()+ft*ct),this.bases[y.getEnd()].setX(this.bases[y.getStart()].getX()-at),this.bases[y.getEnd()].setY(this.bases[y.getStart()].getY()+ot)))),$<0?(Z==R?Z=-1:Z>=0&&++Z>=t.getNconnection()&&(Z=0),$=1):(W==T?W=-1:W>=0&&--W<0&&(W=t.getNconnection()-1),$=-1),C=-1==W&&-1==Z;if((J=R+1)>=t.getNconnection()&&(J=0),R!=T&&(T!=G||J!=G))if(v=t.getConnection(T),y=t.getConnection(R),Q=this.bases[y.getEnd()].getX()-this.bases[v.getStart()].getX(),tt=this.bases[y.getEnd()].getY()-this.bases[v.getStart()].getY(),D=this.bases[v.getStart()].getX()+Q/2,z=this.bases[v.getStart()].getY()+tt/2,j=Q/(nt=Math.sqrt(Q*Q+tt*tt)),B=tt/nt,I=c-D,X=f-z,F=(Y=(I/=nt=Math.sqrt(Q*Q+tt*tt))*j+(X/=nt)*B)*j-I,q=Y*B-X,F/=nt=Math.sqrt(F*F+q*q),q/=nt,Q=this.bases[v.getStart()].getX()-c,tt=this.bases[v.getStart()].getY()-f,(ht=Math.atan2(tt,Q))<0&&(ht+=2*Math.PI),Q=this.bases[y.getEnd()].getX()-c,tt=this.bases[y.getEnd()].getY()-f,(pt=Math.atan2(tt,Q))<0&&(pt+=2*Math.PI),ptMath.PI?-1:1)*l*F,V=f+U*l*q,L)c-=H-D,f-=V-z;else for(k=T;M=(v=t.getConnection(k)).getStart(),this.bases[M].setX(this.bases[M].getX()+H-D),this.bases[M].setY(this.bases[M].getY()+V-z),M=v.getEnd(),this.bases[M].setX(this.bases[M].getX()+H-D),this.bases[M].setY(this.bases[M].getY()+V-z),k!=R;)++k>=t.getNconnection()&&(k=0);O=(T=J)==G}for(k=0;k=t.getNconnection()&&(w=0),y=t.getConnection(w),Q=this.bases[v.getEnd()].getX()-c,tt=this.bases[v.getEnd()].getY()-f,st=Math.sqrt(Q*Q+tt*tt),(ht=Math.atan2(tt,Q))<0&&(ht+=2*Math.PI),Q=this.bases[y.getStart()].getX()-c,tt=this.bases[y.getStart()].getY()-f,ut=Math.sqrt(Q*Q+tt*tt),(pt=Math.atan2(tt,Q))<0&&(pt+=2*Math.PI),ptMath.PI)if(v.isExtruded())console.log("Warning from traverse_loop. Loop "+t.getNumber()+" has crossed regions\n");else if(y.getStart()-v.getEnd()!=1){v.setExtruded(!0);continue t}if(v.isExtruded())this.construct_extruded_segment(v,y);else for((_=y.getStart()-v.getEnd())<0&&(_+=this.nbase+1),u=K/_,w=1;w<_;w++)(M=v.getEnd()+w)>this.nbase&&(M-=this.nbase+1),nt=st+(ut-st)*((g=ht+w*u)-ht)/K,this.bases[M].setX(c+nt*Math.cos(g)),this.bases[M].setY(f+nt*Math.sin(g))}break}for(k=0;k=t.getNconnection()&&(w=0),v=t.getConnection(k),y=t.getConnection(w),_+=2,dt+=this.bases[v.getStart()].getX()+this.bases[v.getEnd()].getX(),mt+=this.bases[v.getStart()].getY()+this.bases[v.getEnd()].getY(),!v.isExtruded())for(w=v.getEnd()+1;w!=y.getStart();w++)w>this.nbase&&(w-=this.nbase+1),_++,dt+=this.bases[w].getX(),mt+=this.bases[w].getY();t.setX(dt/_),t.setY(mt/_)},s.prototype.determine_radius=function(t,n){var e,r,a,i,u,s,l,c,f,h,p,d=0,m=new o.Connection,g=new o.Connection;do{for(e=1e10,u=0,i=0,c=0;c=t.getNconnection()&&(f=0),g=t.getConnection(f),h=m.getEnd(),(p=g.getStart())1&&(e=l,d=c);(s=i/u)<.7071068&&(s=.7071068),e*s0?s=t.getRadius():t.setRadius(s)},s.prototype.find_ic_middle=function(t,n,e,r,o){var a,i,u,s,l;for(a=0,i=-1,u=t,l=!1;!l;)a++>2*o.getNconnection()&&console.log("Infinite loop in 'find_ic_middle'"),null!=e&&o.getConnection(u)==r&&(i=u),l=u==n,++u>=o.getNconnection()&&(u=0);if(-1==i){for(s=1,u=t;s<(a+1)/2;s++)++u>=o.getNconnection()&&(u=0);i=u}return i},s.prototype.construct_extruded_segment=function(t,n){var e,r,o,a,i,u,s,l,c,f,h,p,d,m,g,v,y,b;if(e=t.getAngle(),(o=r=n.getAngle())=1.5&&h<=Math.PI/2&&((v=d+1)>this.nbase&&(v-=this.nbase+1),(y=m-1)<0&&(y+=this.nbase+1),this.bases[v].setX(this.bases[d].getX()+.5*i),this.bases[v].setY(this.bases[d].getY()+.5*u),this.bases[y].setX(this.bases[m].getX()-.5*i),this.bases[y].setY(this.bases[m].getY()-.5*u),d=v,m=y);do{b=!1,this.construct_circle_segment(d,m),(v=d+1)>this.nbase&&(v-=this.nbase+1),i=this.bases[v].getX()-this.bases[d].getX(),u=this.bases[v].getY()-this.bases[d].getY(),(s=Math.atan2(u,i))<0&&(s+=2*Math.PI),(p=s-e)<0&&(p+=2*Math.PI),p>Math.PI&&(b=!0),(y=m-1)<0&&(y+=this.nbase+1),i=this.bases[y].getX()-this.bases[m].getX(),u=this.bases[y].getY()-this.bases[m].getY(),(l=Math.atan2(u,i))<0&&(l+=2*Math.PI),(p=r-l)<0&&(p+=2*Math.PI),p>Math.PI&&(b=!0),b&&(c=this.minf2(a,e+.5),this.bases[v].setX(this.bases[d].getX()+Math.cos(c)),this.bases[v].setY(this.bases[d].getY()+Math.sin(c)),d=v,c=this.maxf2(a,o-.5),this.bases[y].setX(this.bases[m].getX()+Math.cos(c)),this.bases[y].setY(this.bases[m].getY()+Math.sin(c)),m=y,g-=2)}while(b&&g>1)}},s.prototype.construct_circle_segment=function(t,n){var e,r,o,a,i,u,s,l,c,f,h,p,d,m,g;if(e=this.bases[n].getX()-this.bases[t].getX(),r=this.bases[n].getY()-this.bases[t].getY(),o=Math.sqrt(e*e+r*r),(d=n-t)<0&&(d+=this.nbase+1),o>=d)for(e/=o,r/=o,m=1;mthis.nbase&&(g-=this.nbase+1),this.bases[g].setX(this.bases[t].getX()+e*m/d),this.bases[g].setY(this.bases[t].getY()+r*m/d);else for(this.find_center_for_arc(d-1,o),e/=o,r/=o,a=this.bases[t].getX()+e*o/2,i=this.bases[t].getY()+r*o/2,u=r,s=-e,l=a+this._h*u,c=i+this._h*s,f=this.bases[t].getX()-l,h=this.bases[t].getY()-c,o=Math.sqrt(f*f+h*h),p=Math.atan2(h,f),m=1;mthis.nbase&&(g-=this.nbase+1),this.bases[g].setX(l+o*Math.cos(p+m*this.angleinc)),this.bases[g].setY(c+o*Math.sin(p+m*this.angleinc))},s.prototype.find_center_for_arc=function(t,n){var e,r,o,a,i,u,s,l;o=-(r=(t+1)/Math.PI)-n/(t+1.000001-n),n<1&&(o=0),l=0;do{e=(r+o)/2,i=1-.5/((a=Math.sqrt(e*e+n*n/4))*a),Math.abs(i)>1&&console.log("Unexpected large magnitude discriminant = "+i+" "+a),(s=(u=Math.acos(i))*(t+1)+2*Math.acos(e/a)-2*Math.PI)>0?o=e:r=e}while(Math.abs(s)>1e-4&&++l=this.MAXITER&&(noIterationFailureYet&&(console.log("Iteration failed in find_center_for_arc"),noIterationFailureYet=!1),e=0,u=0),this._h=e,this.angleinc=u},s.prototype.generate_region=function(t){var n,e,r,o,a,i;for(i=t.getRegion(),n=0,t.getStart()==i.getStart1()?(e=i.getStart1(),r=i.getEnd1()):(e=i.getStart2(),r=i.getEnd2()),(this.bases[t.getStart()].getX()>this.ANUM-100||this.bases[t.getEnd()].getX()>this.ANUM-100)&&console.log("Bad region passed to generate_region. Coordinates not defined."),o=e+1;o<=r;o++)n++,this.bases[o].setX(this.bases[t.getStart()].getX()+this.HELIX_FACTOR*n*t.getXrad()),this.bases[o].setY(this.bases[t.getStart()].getY()+this.HELIX_FACTOR*n*t.getYrad()),a=this.bases[o].getMate(),this.bases[a].setX(this.bases[t.getEnd()].getX()+this.HELIX_FACTOR*n*t.getXrad()),this.bases[a].setY(this.bases[t.getEnd()].getY()+this.HELIX_FACTOR*n*t.getYrad())},s.prototype.minf2=function(t,n){return tn?t:n},s.prototype.connected_connection=function(t,n){return!!t.isExtruded()||t.getEnd()+1==n.getStart()}},function(t,n){"use strict";function e(){this.radius=null,this.loopnumber=null,this.next=null,this.prev=null}Object.defineProperty(n,"__esModule",{value:!0}),n.Radloop=e,e.prototype.getRadius=function(){return this.radius},e.prototype.setRadius=function(t){this.radius=t},e.prototype.getLoopnumber=function(){return this.loopnumber},e.prototype.setLoopnumber=function(t){this.loopnumber=t},e.prototype.getNext=function(){return this.next},e.prototype.setNext=function(t){this.next=t},e.prototype.getPrev=function(){return this.prev},e.prototype.setPrev=function(t){this.prev=t}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Connection=a;var r=e(8),o=e(9);function a(){this.loop=new r.Loop,this.region=new o.Region,this.start=null,this.end=null,this.xrad=null,this.yrad=null,this.angle=null,this.extruded=null,this.broken=null,this._isNull=!1}a.prototype.isNull=function(){return this._isNull},a.prototype.setNull=function(t){this._isNull=t},a.prototype.getLoop=function(){return this.loop},a.prototype.setLoop=function(t){this.loop=t},a.prototype.getRegion=function(){return this.region},a.prototype.setRegion=function(t){this.region=t},a.prototype.getStart=function(){return this.start},a.prototype.setStart=function(t){this.start=t},a.prototype.getEnd=function(){return this.end},a.prototype.setEnd=function(t){this.end=t},a.prototype.getXrad=function(){return this.xrad},a.prototype.setXrad=function(t){this.xrad=t},a.prototype.getYrad=function(){return this.yrad},a.prototype.setYrad=function(t){this.yrad=t},a.prototype.getAngle=function(){return this.angle},a.prototype.setAngle=function(t){this.angle=t},a.prototype.isExtruded=function(){return this.extruded},a.prototype.setExtruded=function(t){this.extruded=t},a.prototype.isBroken=function(){return this.broken},a.prototype.setBroken=function(t){this.broken=t}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Loop=o;var r=e(7);function o(){this.nconnection=null,this.connections=[],this._connections=[],this.number=null,this.depth=null,this.mark=null,this.x=null,this.y=null,this.radius=null}o.prototype.getNconnection=function(){return this.nconnection},o.prototype.setNconnection=function(t){this.nconnection=t},o.prototype.setConnection=function(t,n){null!=n?this._connections[t]=n:(this._connections[t]||(this._connections[t]=new r.Connection),this._connections[t].setNull(!0))},o.prototype.getConnection=function(t){var n=e(7);this._connections[t]||(this._connections[t]=new n);var r=this._connections[t];return r.isNull()?null:r},o.prototype.addConnection=function(t,n){this._connections.push(n)},o.prototype.getNumber=function(){return this.number},o.prototype.setNumber=function(t){this.number=t},o.prototype.getDepth=function(){return this.depth},o.prototype.setDepth=function(t){this.depth=t},o.prototype.isMark=function(){return this.mark},o.prototype.setMark=function(t){this.mark=t},o.prototype.getX=function(){return this.x},o.prototype.setX=function(t){this.x=t},o.prototype.getY=function(){return this.y},o.prototype.setY=function(t){this.y=t},o.prototype.getRadius=function(){return this.radius},o.prototype.setRadius=function(t){this.radius=t}},function(t,n){"use strict";function e(){this._start1=null,this._end1=null,this._start2=null,this._end2=null}Object.defineProperty(n,"__esModule",{value:!0}),n.Region=e,e.prototype.getStart1=function(){return this._start1},e.prototype.setStart1=function(t){this._start1=t},e.prototype.getEnd1=function(){return this._end1},e.prototype.setEnd1=function(t){this._end1=t},e.prototype.getStart2=function(){return this._start2},e.prototype.setStart2=function(t){this._start2=t},e.prototype.getEnd2=function(){return this._end2},e.prototype.setEnd2=function(t){this._end2=t}},function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Base=o;var r=e(9);function o(){this.mate=null,this.x=null,this.y=null,this.extracted=null,this.region=new r.Region}o.prototype.getMate=function(){return this.mate},o.prototype.setMate=function(t){this.mate=t},o.prototype.getX=function(){return this.x},o.prototype.setX=function(t){this.x=t},o.prototype.getY=function(){return this.y},o.prototype.setY=function(t){this.y=t},o.prototype.isExtracted=function(){return this.extracted},o.prototype.setExtracted=function(t){this.extracted=t},o.prototype.getRegion=function(){return this.region},o.prototype.setRegion=function(t){this.region=t}},function(t,n,e){var r=e(12);"string"==typeof r&&(r=[[t.id,r,""]]);e(14)(r,{});r.locals&&(t.exports=r.locals)},function(t,n,e){(t.exports=e(13)()).push([t.id,'.forna-container .structure-background-rect {\r\n stroke: black;\r\n stroke-width: 5;\r\n fill: transparent;\r\n}\r\n\r\n.forna-container circle.rna-base {\r\n stroke: #ccc;\r\n stroke-width: 1px;\r\n opacity: 1;\r\n fill: white;\r\n}\r\n\r\n.forna-container circle.rna-base.label {\r\n stroke: transparent;\r\n stroke-width: 0;\r\n fill: white;\r\n}\r\n\r\n.forna-container line.link {\r\n stroke: #999;\r\n stroke-opacity: 0.8;\r\n stroke-width: 2;\r\n}\r\n\r\n.forna-container line.rna-link {\r\n stroke: #999;\r\n stroke-opacity: 0.8;\r\n stroke-width: 2;\r\n}\r\n\r\n.forna-container .overlay {\r\n fill: transparent;\r\n}\r\n\r\n.forna-container .rna-name {\r\n text-anchor: middle;\r\n dy: -10;\r\n font-family: Tahoma, Geneva, sans-serif;\r\n font-size: 8pt;\r\n}\r\n\r\n.forna-container line.rna-link[link-type="backbone"] {\r\n stroke: transparent;\r\n}\r\n\r\n.forna-container line.rna-link[link-type="basepair"] {\r\n stroke: transparent;\r\n}\r\n\r\n.forna-container line.rna-link[link-type="fake"] {\r\n stroke: transparent;\r\n}\r\n\r\n.forna-container line.rna-link[link-type="extra"] {\r\n stroke: grey;\r\n}\r\n\r\n.forna-container line.rna-link[extra-link-type="correct"] {\r\n stroke: green;\r\n}\r\n\r\n.forna-container line.rna-link[extra-link-type="incorrect"] {\r\n stroke: green;\r\n}\r\n\r\n\r\n.forna-container path {\r\n stroke-width: 2;\r\n}\r\n\r\n.forna-container path[extra-link-type="correct"] {\r\n stroke: green;\r\n}\r\n\r\n.forna-container path[extra-link-type="incorrect"] {\r\n stroke: red;\r\n}\r\n\r\n\r\n.forna-container line.basepair {\r\n stroke: red;\r\n}\r\n\r\n.forna-container line.intermolecule {\r\n stroke: blue;\r\n}\r\n\r\n.forna-container line.chain_chain {\r\n stroke-dasharray: 3,3;\r\n}\r\n\r\n.forna-container line.fake {\r\n stroke: green;\r\n}\r\n\r\n.forna-container .transparent {\r\n fill: transparent;\r\n stroke-width: 0;\r\n stroke-opacity: 0;\r\n opacity: 0;\r\n}\r\n\r\n.forna-container .d3-tip {\r\n line-height: 1;\r\n font-weight: bold;\r\n padding: 6px;\r\n background: rgba(0, 0, 0, 0.6);\r\n color: #fff;\r\n border-radius: 4px;\r\n pointer-events: none;\r\n}\r\n\r\n.forna-container text.nucleotide-label {\r\n font-size: 5.5pt;\r\n font-weight: bold;\r\n font-family: Tahoma, Geneva, sans-serif;\r\n color: rgb(100,100,100);\r\n pointer-events: none;\r\n}\r\n\r\n.forna-container text.number-label {\r\n font-size: 5.5pt;\r\n font-weight: bold;\r\n font-family: Tahoma, Geneva, sans-serif;\r\n color: rgb(100,100,100);\r\n pointer-events: none;\r\n}\r\n\r\n.forna-container text {\r\n pointer-events: none;\r\n}\r\n\r\n.forna-container g.gnode {\r\n\r\n}\r\n\r\n.forna-container .brush .extent {\r\n fill-opacity: .1;\r\n stroke: #fff;\r\n shape-rendering: crispEdges;\r\n}\r\n\r\n.forna-container .noselect {\r\n -webkit-touch-callout: none;\r\n -webkit-user-select: none;\r\n -khtml-user-select: none;\r\n -moz-user-select: none;\r\n -ms-user-select: none;\r\n user-select: none;\r\n}\r\n',""])},function(t,n){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],n=0;n=0&&l.splice(n,1)}function d(t){var n=document.createElement("style");return n.type="text/css",h(t,n),n}function m(t,n){var e,r,o;if(n.singleton){var a=s++;e=u||(u=d(n)),r=y.bind(null,e,a,!1),o=y.bind(null,e,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(e=function(t){var n=document.createElement("link");return n.rel="stylesheet",h(t,n),n}(n),r=function(t,n){var e=n.css,r=n.sourceMap;r&&(e+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(r))))+" */");var o=new Blob([e],{type:"text/css"}),a=t.href;t.href=URL.createObjectURL(o),a&&URL.revokeObjectURL(a)}.bind(null,e),o=function(){p(e),e.href&&URL.revokeObjectURL(e.href)}):(e=d(n),r=function(t,n){var e=n.css,r=n.media;r&&t.setAttribute("media",r);if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}.bind(null,e),o=function(){p(e)});return r(t),function(n){if(n){if(n.css===t.css&&n.media===t.media&&n.sourceMap===t.sourceMap)return;r(t=n)}else o()}}t.exports=function(t,n){void 0===(n=n||{}).singleton&&(n.singleton=a()),void 0===n.insertAt&&(n.insertAt="bottom");var e=f(t);return c(e,n),function(t){for(var o=[],a=0;an?1:t>=n?0:NaN}function v(t){return null===t?NaN:+t}function y(t){return!isNaN(t)}function b(t){return{left:function(n,e,r,o){for(arguments.length<3&&(r=0),arguments.length<4&&(o=n.length);r>>1;t(n[a],e)<0?r=a+1:o=a}return r},right:function(n,e,r,o){for(arguments.length<3&&(r=0),arguments.length<4&&(o=n.length);r>>1;t(n[a],e)>0?o=a:r=a+1}return r}}}a.ascending=g,a.descending=function(t,n){return nt?1:n>=t?0:NaN},a.min=function(t,n){var e,r,o=-1,a=t.length;if(1===arguments.length){for(;++o=r){e=r;break}for(;++or&&(e=r)}else{for(;++o=r){e=r;break}for(;++or&&(e=r)}return e},a.max=function(t,n){var e,r,o=-1,a=t.length;if(1===arguments.length){for(;++o=r){e=r;break}for(;++oe&&(e=r)}else{for(;++o=r){e=r;break}for(;++oe&&(e=r)}return e},a.extent=function(t,n){var e,r,o,a=-1,i=t.length;if(1===arguments.length){for(;++a=r){e=o=r;break}for(;++ar&&(e=r),o=r){e=o=r;break}for(;++ar&&(e=r),o1)return i/(s-1)},a.deviation=function(){var t=a.variance.apply(this,arguments);return t?Math.sqrt(t):t};var x=b(g);function M(t){return t.length}a.bisectLeft=x.left,a.bisect=a.bisectRight=x.right,a.bisector=function(t){return b(1===t.length?function(n,e){return g(t(n),e)}:t)},a.shuffle=function(t,n,e){(a=arguments.length)<3&&(e=t.length,a<2&&(n=0));for(var r,o,a=e-n;a;)o=Math.random()*a--|0,r=t[a+n],t[a+n]=t[o+n],t[o+n]=r;return t},a.permute=function(t,n){for(var e=n.length,r=new Array(e);e--;)r[e]=t[n[e]];return r},a.pairs=function(t){for(var n=0,e=t.length-1,r=t[0],o=new Array(e<0?0:e);n=0;)for(n=(r=t[o]).length;--n>=0;)e[--i]=r[n];return e};var w=Math.abs;function _(t,n){for(var e in n)Object.defineProperty(t.prototype,e,{value:n[e],enumerable:!1})}function k(){this._=Object.create(null)}a.range=function(t,n,e){if(arguments.length<3&&(e=1,arguments.length<2&&(n=t,t=0)),(n-t)/e==1/0)throw new Error("infinite range");var r,o=[],a=function(t){var n=1;for(;t*n%1;)n*=10;return n}(w(e)),i=-1;if(t*=a,n*=a,(e*=a)<0)for(;(r=t+e*++i)>n;)o.push(r/a);else for(;(r=t+e*++i)=r.length)return n?n.call(e,a):t?a.sort(t):a;for(var s,l,c,f,h=-1,p=a.length,d=r[u++],m=new k;++h=r.length)return n;var a=[],i=o[e++];return n.forEach(function(n,r){a.push({key:n,values:t(r,e)})}),i?a.sort(function(t,n){return i(t.key,n.key)}):a}(i(a.map,t,0),0)},e.key=function(t){return r.push(t),e},e.sortKeys=function(t){return o[r.length-1]=t,e},e.sortValues=function(n){return t=n,e},e.rollup=function(t){return n=t,e},e},a.set=function(t){var n=new L;if(t)for(var e=0,r=t.length;e=0&&(r=t.slice(e+1),t=t.slice(0,e)),t)return arguments.length<2?this[t].on(r):this[t].on(r,n);if(2===arguments.length){if(null==n)for(t in this)this.hasOwnProperty(t)&&this[t].on(r,null);return this}},a.event=null,a.requote=function(t){return t.replace(H,"\\$&")};var H=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,V={}.__proto__?function(t,n){t.__proto__=n}:function(t,n){for(var e in n)t[e]=n[e]};function G(t){return V(t,$),t}var W=function(t,n){return n.querySelector(t)},Z=function(t,n){return n.querySelectorAll(t)},J=function(t,n){var e=t.matches||t[z(t,"matchesSelector")];return(J=function(t,n){return e.call(t,n)})(t,n)};"function"==typeof Sizzle&&(W=function(t,n){return Sizzle(t,n)[0]||null},Z=Sizzle,J=Sizzle.matchesSelector),a.selection=function(){return a.select(s.documentElement)};var $=a.selection.prototype=[];function K(t){return"function"==typeof t?t:function(){return W(t,this)}}function Q(t){return"function"==typeof t?t:function(){return Z(t,this)}}$.select=function(t){var n,e,r,o,a=[];t=K(t);for(var i=-1,u=this.length;++i=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),nt.hasOwnProperty(e)?{space:nt[e],local:t}:t}},$.attr=function(t,n){if(arguments.length<2){if("string"==typeof t){var e=this.node();return(t=a.ns.qualify(t)).local?e.getAttributeNS(t.space,t.local):e.getAttribute(t)}for(n in t)this.each(et(n,t[n]));return this}return this.each(et(t,n))},$.classed=function(t,n){if(arguments.length<2){if("string"==typeof t){var e=this.node(),r=(t=at(t)).length,o=-1;if(n=e.classList){for(;++o=0;)(e=r[o])&&(a&&a!==e.nextSibling&&a.parentNode.insertBefore(e,a),a=e);return this},$.sort=function(t){t=function(t){arguments.length||(t=g);return function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}.apply(this,arguments);for(var n=-1,e=this.length;++n0&&(t=t.slice(0,o));var s=yt.get(t);function l(){var n=this[r];n&&(this.removeEventListener(t,n,n.$),delete this[r])}return s&&(t=s,i=xt),o?n?function(){var o=i(n,u(arguments));l.call(this),this.addEventListener(t,this[r]=o,o.$=e),o._=n}:l:n?q:function(){var n,e=new RegExp("^__on([^.]+)"+a.requote(t)+"$");for(var r in this)if(n=r.match(e)){var o=this[r];this.removeEventListener(n[1],o,o.$),delete this[r]}}}a.selection.enter=mt,a.selection.enter.prototype=gt,gt.append=$.append,gt.empty=$.empty,gt.node=$.node,gt.call=$.call,gt.size=$.size,gt.select=function(t){for(var n,e,r,o,a,i=[],u=-1,s=this.length;++u=r&&(r=n+1);!(i=u[r])&&++r0?1:t<0?-1:0}function Dt(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function zt(t){return t>1?0:t<-1?Rt:Math.acos(t)}function Ft(t){return t>1?Ct:t<-1?-Ct:Math.asin(t)}function qt(t){return((t=Math.exp(t))+1/t)/2}function jt(t){return(t=Math.sin(t/2))*t}var Bt=Math.SQRT2;a.interpolateZoom=function(t,n){var e,r,o=t[0],a=t[1],i=t[2],u=n[0],s=n[1],l=n[2],c=u-o,f=s-a,h=c*c+f*f;if(h0&&(t=t.transition().duration(m)),t.call(w.event)}function E(){u&&u.domain(i.range().map(function(t){return(t-h.x)/h.k}).map(i.invert)),f&&f.domain(l.range().map(function(t){return(t-h.y)/h.k}).map(l.invert))}function T(t){g++||t({type:"zoomstart"})}function R(t){E(),t({type:"zoom",scale:h.k,translate:[h.x,h.y]})}function N(t){--g||(t({type:"zoomend"}),n=null)}function P(){var t=this,n=M.of(t,arguments),e=0,r=a.select(c(t)).on(y,function(){e=1,S(a.mouse(t),o),R(n)}).on(b,function(){r.on(y,null).on(b,null),i(e),N(n)}),o=_(a.mouse(t)),i=_t(t);mu.call(t),T(n)}function C(){var t,n=this,e=M.of(n,arguments),r={},i=0,u=".zoom-"+a.event.changedTouches[0].identifier,s="touchmove"+u,l="touchend"+u,c=[],f=a.select(n),p=_t(n);function d(){var e=a.touches(n);return t=h.k,e.forEach(function(t){t.identifier in r&&(r[t.identifier]=_(t))}),e}function m(){var t=a.event.target;a.select(t).on(s,g).on(l,y),c.push(t);for(var e=a.event.changedTouches,u=0,f=e.length;u1){v=p[0];var b=p[1],x=v[0]-b[0],M=v[1]-b[1];i=x*x+M*M}}function g(){var u,s,l,c,f=a.touches(n);mu.call(n);for(var h=0,p=f.length;h360?t-=360:t<0&&(t+=360),t<60?r+(o-r)*t/60:t<180?o:t<240?r+(o-r)*(240-t)/60:r}(t))}return t=isNaN(t)?0:(t%=360)<0?t+360:t,n=isNaN(n)?0:n<0?0:n>1?1:n,r=2*(e=e<0?0:e>1?1:e)-(o=e<=.5?e*(1+n):e+n-e*n),new cn(a(t+120),a(t),a(t-120))}function Zt(t,n,e){return this instanceof Zt?(this.h=+t,this.c=+n,void(this.l=+e)):arguments.length<2?t instanceof Zt?new Zt(t.h,t.c,t.l):an(t instanceof Kt?t.l:(t=vn((t=a.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new Zt(t,n,e)}Gt.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,this.l/t)},Gt.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Vt(this.h,this.s,t*this.l)},Gt.rgb=function(){return Wt(this.h,this.s,this.l)},a.hcl=Zt;var Jt=Zt.prototype=new Ht;function $t(t,n,e){return isNaN(t)&&(t=0),isNaN(n)&&(n=0),new Kt(e,Math.cos(t*=Ot)*n,Math.sin(t)*n)}function Kt(t,n,e){return this instanceof Kt?(this.l=+t,this.a=+n,void(this.b=+e)):arguments.length<2?t instanceof Kt?new Kt(t.l,t.a,t.b):t instanceof Zt?$t(t.h,t.c,t.l):vn((t=cn(t)).r,t.g,t.b):new Kt(t,n,e)}Jt.brighter=function(t){return new Zt(this.h,this.c,Math.min(100,this.l+Qt*(arguments.length?t:1)))},Jt.darker=function(t){return new Zt(this.h,this.c,Math.max(0,this.l-Qt*(arguments.length?t:1)))},Jt.rgb=function(){return $t(this.h,this.c,this.l).rgb()},a.lab=Kt;var Qt=18,tn=.95047,nn=1,en=1.08883,rn=Kt.prototype=new Ht;function on(t,n,e){var r=(t+16)/116,o=r+n/500,a=r-e/200;return new cn(ln(3.2404542*(o=un(o)*tn)-1.5371385*(r=un(r)*nn)-.4985314*(a=un(a)*en)),ln(-.969266*o+1.8760108*r+.041556*a),ln(.0556434*o-.2040259*r+1.0572252*a))}function an(t,n,e){return t>0?new Zt(Math.atan2(e,n)*Lt,Math.sqrt(n*n+e*e),t):new Zt(NaN,NaN,t)}function un(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function sn(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function ln(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function cn(t,n,e){return this instanceof cn?(this.r=~~t,this.g=~~n,void(this.b=~~e)):arguments.length<2?t instanceof cn?new cn(t.r,t.g,t.b):mn(""+t,cn,Wt):new cn(t,n,e)}function fn(t){return new cn(t>>16,t>>8&255,255&t)}function hn(t){return fn(t)+""}rn.brighter=function(t){return new Kt(Math.min(100,this.l+Qt*(arguments.length?t:1)),this.a,this.b)},rn.darker=function(t){return new Kt(Math.max(0,this.l-Qt*(arguments.length?t:1)),this.a,this.b)},rn.rgb=function(){return on(this.l,this.a,this.b)},a.rgb=cn;var pn=cn.prototype=new Ht;function dn(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function mn(t,n,e){var r,o,a,i=0,u=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(o=r[2].split(","),r[1]){case"hsl":return e(parseFloat(o[0]),parseFloat(o[1])/100,parseFloat(o[2])/100);case"rgb":return n(bn(o[0]),bn(o[1]),bn(o[2]))}return(a=xn.get(t))?n(a.r,a.g,a.b):(null==t||"#"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(i=(3840&a)>>4,i|=i>>4,u=240&a,u|=u>>4,s=15&a,s|=s<<4):7===t.length&&(i=(16711680&a)>>16,u=(65280&a)>>8,s=255&a)),n(i,u,s))}function gn(t,n,e){var r,o,a=Math.min(t/=255,n/=255,e/=255),i=Math.max(t,n,e),u=i-a,s=(i+a)/2;return u?(o=s<.5?u/(i+a):u/(2-i-a),r=t==i?(n-e)/u+(n0&&s<1?0:r),new Vt(r,o,s)}function vn(t,n,e){var r=sn((.4124564*(t=yn(t))+.3575761*(n=yn(n))+.1804375*(e=yn(e)))/tn),o=sn((.2126729*t+.7151522*n+.072175*e)/nn);return Kt(116*o-16,500*(r-o),200*(o-sn((.0193339*t+.119192*n+.9503041*e)/en)))}function yn(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function bn(t){var n=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*n):n}pn.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var n=this.r,e=this.g,r=this.b,o=30;return n||e||r?(n&&n=200&&n<300||304===n){try{t=e.call(o,l)}catch(t){return void i.error.call(o,t)}i.load.call(o,t)}else i.error.call(o,l)}return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(t)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=f:l.onreadystatechange=function(){l.readyState>3&&f()},l.onprogress=function(t){var n=a.event;a.event=t;try{i.progress.call(o,l)}finally{a.event=n}},o.header=function(t,n){return t=(t+"").toLowerCase(),arguments.length<2?s[t]:(null==n?delete s[t]:s[t]=n+"",o)},o.mimeType=function(t){return arguments.length?(n=null==t?null:t+"",o):n},o.responseType=function(t){return arguments.length?(c=t,o):c},o.response=function(t){return e=t,o},["get","post"].forEach(function(t){o[t]=function(){return o.send.apply(o,[t].concat(u(arguments)))}}),o.send=function(e,r,a){if(2===arguments.length&&"function"==typeof r&&(a=r,r=null),l.open(e,t,!0),null==n||"accept"in s||(s.accept=n+",*/*"),l.setRequestHeader)for(var u in s)l.setRequestHeader(u,s[u]);return null!=n&&l.overrideMimeType&&l.overrideMimeType(n),null!=c&&(l.responseType=c),null!=a&&o.on("error",a).on("load",function(t){a(null,t)}),i.beforesend.call(o,l),l.send(null==r?null:r),o},o.abort=function(){return l.abort(),o},a.rebind(o,i,"on"),null==r?o:o.get(function(t){return 1===t.length?function(n,e){t(null==n?e:null)}:t}(r))}xn.forEach(function(t,n){xn.set(t,fn(n))}),a.functor=Mn,a.xhr=wn(U),a.dsv=function(t,n){var e=new RegExp('["'+t+"\n]"),r=t.charCodeAt(0);function o(t,e,r){arguments.length<3&&(r=e,e=null);var o=_n(t,n,null==e?a:i(e),r);return o.row=function(t){return arguments.length?o.response(null==(e=t)?a:i(t)):e},o}function a(t){return o.parse(t.responseText)}function i(t){return function(n){return o.parse(n.responseText,t)}}function u(n){return n.map(s).join(t)}function s(t){return e.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}return o.parse=function(t,n){var e;return o.parseRows(t,function(t,r){if(e)return e(t,r-1);var o=new Function("d","return {"+t.map(function(t,n){return JSON.stringify(t)+": d["+n+"]"}).join(",")+"}");e=n?function(t,e){return n(o(t),e)}:o})},o.parseRows=function(t,n){var e,o,a={},i={},u=[],s=t.length,l=0,c=0;function f(){if(l>=s)return i;if(o)return o=!1,a;var n=l;if(34===t.charCodeAt(n)){for(var e=n;e++24?(isFinite(n)&&(clearTimeout(En),En=setTimeout(Nn,n)),An=0):(An=1,Tn(Nn))}function Pn(){for(var t=Date.now(),n=kn;n;)t>=n.t&&n.c(t-n.t)&&(n.c=null),n=n.n;return t}function Cn(){for(var t,n=kn,e=1/0;n;)n.c?(n.t8?function(t){return t/e}:function(t){return t*e},symbol:t}});a.formatPrefix=function(t,n){var e=0;return(t=+t)&&(t<0&&(t*=-1),n&&(t=a.round(t,On(t,n))),e=1+Math.floor(1e-12+Math.log(t)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),Ln[8+e/3]};var Un=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Dn=a.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,n){return t.toPrecision(n)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},r:function(t,n){return(t=a.round(t,On(t,n))).toFixed(Math.max(0,Math.min(20,On(t*(1+1e-15),n))))}});function zn(t){return t+""}var Fn=a.time={},qn=Date;function jn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}jn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){Bn.setUTCDate.apply(this._,arguments)},setDay:function(){Bn.setUTCDay.apply(this._,arguments)},setFullYear:function(){Bn.setUTCFullYear.apply(this._,arguments)},setHours:function(){Bn.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){Bn.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){Bn.setUTCMinutes.apply(this._,arguments)},setMonth:function(){Bn.setUTCMonth.apply(this._,arguments)},setSeconds:function(){Bn.setUTCSeconds.apply(this._,arguments)},setTime:function(){Bn.setTime.apply(this._,arguments)}};var Bn=Date.prototype;function In(t,n,e){function r(n){var e=t(n),r=a(e,1);return n-e1)for(;i68?1900:2e3),e+o[0].length):-1}function ne(t,n,e){return/^[+-]\d{4}$/.test(n=n.slice(e,e+5))?(t.Z=-n,e+5):-1}function ee(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function re(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function oe(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+3));return r?(t.j=+r[0],e+r[0].length):-1}function ae(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function ie(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function ue(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function se(t,n,e){Hn.lastIndex=0;var r=Hn.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function le(t){var n=t.getTimezoneOffset(),e=n>0?"-":"+",r=w(n)/60|0,o=w(n)%60;return e+Gn(r,"0",2)+Gn(o,"0",2)}function ce(t,n,e){Vn.lastIndex=0;var r=Vn.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function fe(t){for(var n=t.length,e=-1;++e0&&u>0&&(s+u+1>n&&(u=Math.max(1,n-s)),a.push(t.substring(o-=u,o+u)),!((s+=u+1)>n));)u=r[i=(i+1)%r.length];return a.reverse().join(e)}:U;return function(t){var e=Un.exec(t),r=e[1]||" ",u=e[2]||">",s=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],h=e[7],p=e[8],d=e[9],m=1,g="",v="",y=!1,b=!0;switch(p&&(p=+p.substring(1)),(c||"0"===r&&"="===u)&&(c=r="0",u="="),d){case"n":h=!0,d="g";break;case"%":m=100,v="%",d="f";break;case"p":m=100,v="%",d="r";break;case"b":case"o":case"x":case"X":"#"===l&&(g="0"+d.toLowerCase());case"c":b=!1;case"d":y=!0,p=0;break;case"s":m=-1,d="r"}"$"===l&&(g=o[0],v=o[1]),"r"!=d||p||(d="g"),null!=p&&("g"==d?p=Math.max(1,Math.min(21,p)):"e"!=d&&"f"!=d||(p=Math.max(0,Math.min(20,p)))),d=Dn.get(d)||zn;var x=c&&h;return function(t){var e=v;if(y&&t%1)return"";var o=t<0||0===t&&1/t<0?(t=-t,"-"):"-"===s?"":s;if(m<0){var l=a.formatPrefix(t,p);t=l.scale(t),e=l.symbol+v}else t*=m;var M,w,_=(t=d(t,p)).lastIndexOf(".");if(_<0){var k=b?t.lastIndexOf("e"):-1;k<0?(M=t,w=""):(M=t.substring(0,k),w=t.substring(k))}else M=t.substring(0,_),w=n+t.substring(_+1);!c&&h&&(M=i(M,1/0));var S=g.length+M.length+w.length+(x?0:o.length),A=S"===u?A+o+t:"^"===u?A.substring(0,S>>=1)+o+t+A.substring(S):o+(x?t:A+t))+e}}}(t),timeFormat:function(t){var n=t.dateTime,e=t.date,r=t.time,o=t.periods,i=t.days,u=t.shortDays,s=t.months,l=t.shortMonths;function c(t){var n=t.length;function e(e){for(var r,o,a,i=[],u=-1,s=0;++u=l)return-1;if(37===(o=n.charCodeAt(u++))){if(i=n.charAt(u++),!(a=w[i in Yn?n.charAt(u++):i])||(r=a(t,e,r))<0)return-1}else if(o!=e.charCodeAt(r++))return-1}return r}c.utc=function(t){var n=c(t);function e(t){try{var e=new(qn=jn);return e._=t,n(e)}finally{qn=Date}}return e.parse=function(t){try{qn=jn;var e=n.parse(t);return e&&e._}finally{qn=Date}},e.toString=n.toString,e},c.multi=c.utc.multi=fe;var h=a.map(),p=Wn(i),d=Zn(i),m=Wn(u),g=Zn(u),v=Wn(s),y=Zn(s),b=Wn(l),x=Zn(l);o.forEach(function(t,n){h.set(t.toLowerCase(),n)});var M={a:function(t){return u[t.getDay()]},A:function(t){return i[t.getDay()]},b:function(t){return l[t.getMonth()]},B:function(t){return s[t.getMonth()]},c:c(n),d:function(t,n){return Gn(t.getDate(),n,2)},e:function(t,n){return Gn(t.getDate(),n,2)},H:function(t,n){return Gn(t.getHours(),n,2)},I:function(t,n){return Gn(t.getHours()%12||12,n,2)},j:function(t,n){return Gn(1+Fn.dayOfYear(t),n,3)},L:function(t,n){return Gn(t.getMilliseconds(),n,3)},m:function(t,n){return Gn(t.getMonth()+1,n,2)},M:function(t,n){return Gn(t.getMinutes(),n,2)},p:function(t){return o[+(t.getHours()>=12)]},S:function(t,n){return Gn(t.getSeconds(),n,2)},U:function(t,n){return Gn(Fn.sundayOfYear(t),n,2)},w:function(t){return t.getDay()},W:function(t,n){return Gn(Fn.mondayOfYear(t),n,2)},x:c(e),X:c(r),y:function(t,n){return Gn(t.getFullYear()%100,n,2)},Y:function(t,n){return Gn(t.getFullYear()%1e4,n,4)},Z:le,"%":function(){return"%"}},w={a:function(t,n,e){m.lastIndex=0;var r=m.exec(n.slice(e));return r?(t.w=g.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){p.lastIndex=0;var r=p.exec(n.slice(e));return r?(t.w=d.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){b.lastIndex=0;var r=b.exec(n.slice(e));return r?(t.m=x.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){v.lastIndex=0;var r=v.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,n,e){return f(t,M.c.toString(),n,e)},d:re,e:re,H:ae,I:ae,j:oe,L:se,m:ee,M:ie,p:function(t,n,e){var r=h.get(n.slice(e,e+=2).toLowerCase());return null==r?-1:(t.p=r,e)},S:ue,U:$n,w:Jn,W:Kn,x:function(t,n,e){return f(t,M.x.toString(),n,e)},X:function(t,n,e){return f(t,M.X.toString(),n,e)},y:te,Y:Qn,Z:ne,"%":ce};return c}(t)}};var he=a.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function pe(){}a.format=he.numberFormat,a.geo={},pe.prototype={s:0,t:0,add:function(t){me(t,this.t,de),me(de.s,this.s,this),this.s?this.t+=de.t:this.s=de.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var de=new pe;function me(t,n,e){var r=e.s=t+n,o=r-t,a=r-o;e.t=t-a+(n-o)}function ge(t,n){t&&ye.hasOwnProperty(t.type)&&ye[t.type](t,n)}a.geo.stream=function(t,n){t&&ve.hasOwnProperty(t.type)?ve[t.type](t,n):ge(t,n)};var ve={Feature:function(t,n){ge(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,o=e.length;++r=0?1:-1,u=i*a,s=Math.cos(n),l=Math.sin(n),c=o*l,f=r*s+c*Math.cos(u),h=c*i*Math.sin(u);Oe.add(Math.atan2(h,f)),e=t,r=s,o=l}Le.point=function(i,u){Le.point=a,e=(t=i)*Ot,r=Math.cos(u=(n=u)*Ot/2+Rt/4),o=Math.sin(u)},Le.lineEnd=function(){a(t,n)}}function De(t){var n=t[0],e=t[1],r=Math.cos(e);return[r*Math.cos(n),r*Math.sin(n),Math.sin(e)]}function ze(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function Fe(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function qe(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function je(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function Be(t){var n=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}function Ie(t){return[Math.atan2(t[1],t[0]),Ft(t[2])]}function Xe(t,n){return w(t[0]-n[0])Et?r=90:l<-Et&&(n=-90),f[0]=t,f[1]=e}};function p(o,a){c.push(f=[t=o,e=o]),ar&&(r=a)}function d(a,i){var u=De([a*Ot,i*Ot]);if(s){var l=Fe(s,u),c=Fe([l[1],-l[0],0],l);Be(c),c=Ie(c);var f=a-o,h=f>0?1:-1,d=c[0]*Lt*h,m=w(f)>180;if(m^(h*or&&(r=g);else if(m^(h*o<(d=(d+360)%360-180)&&dr&&(r=i);m?ax(t,e)&&(e=a):x(a,e)>x(t,e)&&(t=a):e>=t?(ae&&(e=a)):a>o?x(t,a)>x(t,e)&&(e=a):x(a,e)>x(t,e)&&(t=a)}else p(a,i);s=u,o=a}function m(){h.point=d}function g(){f[0]=t,f[1]=e,h.point=p,s=null}function v(t,n){if(s){var e=t-o;l+=w(e)>180?e+(e>0?360:-360):e}else i=t,u=n;Le.point(t,n),d(t,n)}function y(){Le.lineStart()}function b(){v(i,u),Le.lineEnd(),w(l)>Et&&(t=-(e=180)),f[0]=t,f[1]=e,s=null}function x(t,n){return(n-=t)<0?n+360:n}function M(t,n){return t[0]-n[0]}function _(t,n){return n[0]<=n[1]?n[0]<=t&&t<=n[1]:tx(m[0],m[1])&&(m[1]=p[1]),x(p[0],m[1])>x(m[0],m[1])&&(m[0]=p[0])):u.push(m=p);for(var s,l,p,d=-1/0,m=(i=0,u[l=u.length-1]);i<=l;m=p,++i)p=u[i],(s=x(m[1],p[0]))>d&&(d=s,t=p[0],e=m[1])}return c=f=null,t===1/0||n===1/0?[[NaN,NaN],[NaN,NaN]]:[[t,n],[e,r]]}}(),a.geo.centroid=function(t){we=_e=ke=Se=Ae=Ee=Te=Re=Ne=Pe=Ce=0,a.geo.stream(t,Ye);var n=Ne,e=Pe,r=Ce,o=n*n+e*e+r*r;return o=0;--u)o.point((f=c[u])[0],f[1]);else r(p.x,p.p.x,-1,o);p=p.p}c=(p=p.o).z,d=!d}while(!p.v);o.lineEnd()}}}function Qe(t){if(n=t.length){for(var n,e,r=0,o=t[0];++r=0?1:-1,_=w*M,k=_>Rt,S=d*b;if(Oe.add(Math.atan2(S*w*Math.sin(_),m*x+S*Math.cos(_))),a+=k?M+w*Nt:M,k^h>=e^v>=e){var A=Fe(De(f),De(t));Be(A);var E=Fe(o,A);Be(E);var T=(k^M>=0?-1:1)*Ft(E[2]);(r>T||r===T&&(A[0]||A[1]))&&(i+=k^M>=0?1:-1)}if(!g++)break;h=v,d=b,m=x,f=t}}return(a<-Et||a0){for(b||(i.polygonStart(),b=!0),i.lineStart();++a1&&2&n&&e.push(e.pop().concat(e.shift())),u.push(e.filter(er))}return c}}function er(t){return t.length>1}function rr(){var t,n=[];return{lineStart:function(){n.push(t=[])},point:function(n,e){t.push([n,e])},lineEnd:q,buffer:function(){var e=n;return n=[],t=null,e},rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))}}}function or(t,n){return((t=t.x)[0]<0?t[1]-Ct-Et:Ct-t[1])-((n=n.x)[0]<0?n[1]-Ct-Et:Ct-n[1])}var ar=nr($e,function(t){var n,e=NaN,r=NaN,o=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(a,i){var u=a>0?Rt:-Rt,s=w(a-e);w(s-Rt)0?Ct:-Ct),t.point(o,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(a,r),n=0):o!==u&&s>=Rt&&(w(e-o)Et?Math.atan((Math.sin(n)*(a=Math.cos(r))*Math.sin(e)-Math.sin(r)*(o=Math.cos(n))*Math.sin(t))/(o*a*i)):(n+r)/2}(e,r,a,i),t.point(o,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=a,r=i),o=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}},function(t,n,e,r){var o;if(null==t)o=e*Ct,r.point(-Rt,o),r.point(0,o),r.point(Rt,o),r.point(Rt,0),r.point(Rt,-o),r.point(0,-o),r.point(-Rt,-o),r.point(-Rt,0),r.point(-Rt,o);else if(w(t[0]-n[0])>Et){var a=t[0]0)){if(a/=h,h<0){if(a0){if(a>f)return;a>c&&(c=a)}if(a=e-s,h||!(a<0)){if(a/=h,h<0){if(a>f)return;a>c&&(c=a)}else if(h>0){if(a0)){if(a/=p,p<0){if(a0){if(a>f)return;a>c&&(c=a)}if(a=r-l,p||!(a<0)){if(a/=p,p<0){if(a>f)return;a>c&&(c=a)}else if(p>0){if(a0&&(o.a={x:s+c*h,y:l+c*p}),f<1&&(o.b={x:s+f*h,y:l+f*p}),o}}}}}}var ur=1e9;function sr(t,n,e,r){return function(s){var l,c,f,h,p,d,m,g,v,y,b,x=s,M=rr(),w=ir(t,n,e,r),_={point:A,lineStart:function(){_.point=E,c&&c.push(f=[]);y=!0,v=!1,m=g=NaN},lineEnd:function(){l&&(E(h,p),d&&v&&M.rejoin(),l.push(M.buffer()));_.point=A,v&&s.lineEnd()},polygonStart:function(){s=M,l=[],c=[],b=!0},polygonEnd:function(){s=x,l=a.merge(l);var n=function(t){for(var n=0,e=c.length,r=t[1],o=0;or&&Dt(l,a,t)>0&&++n:a[1]<=r&&Dt(l,a,t)<0&&--n,l=a;return 0!==n}([t,r]),e=b&&n,o=l.length;(e||o)&&(s.polygonStart(),e&&(s.lineStart(),k(null,null,1,s),s.lineEnd()),o&&Ke(l,i,n,k,s),s.polygonEnd()),l=c=f=null}};function k(a,i,s,l){var c=0,f=0;if(null==a||(c=o(a,s))!==(f=o(i,s))||u(a,i)<0^s>0)do{l.point(0===c||3===c?t:e,c>1?r:n)}while((c=(c+s+4)%4)!==f);else l.point(i[0],i[1])}function S(o,a){return t<=o&&o<=e&&n<=a&&a<=r}function A(t,n){S(t,n)&&s.point(t,n)}function E(t,n){var e=S(t=Math.max(-ur,Math.min(ur,t)),n=Math.max(-ur,Math.min(ur,n)));if(c&&f.push([t,n]),y)h=t,p=n,d=e,y=!1,e&&(s.lineStart(),s.point(t,n));else if(e&&v)s.point(t,n);else{var r={a:{x:m,y:g},b:{x:t,y:n}};w(r)?(v||(s.lineStart(),s.point(r.a.x,r.a.y)),s.point(r.b.x,r.b.y),e||s.lineEnd(),b=!1):e&&(s.lineStart(),s.point(t,n),b=!1)}m=t,g=n,v=e}return _};function o(r,o){return w(r[0]-t)0?0:3:w(r[0]-e)0?2:1:w(r[1]-n)0?1:0:o>0?3:2}function i(t,n){return u(t.x,n.x)}function u(t,n){var e=o(t,1),r=o(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}}function lr(t){var n=0,e=Rt/3,r=Or(t),o=r(n,e);return o.parallels=function(t){return arguments.length?r(n=t[0]*Rt/180,e=t[1]*Rt/180):[n/Rt*180,e/Rt*180]},o}function cr(t,n){var e=Math.sin(t),r=(e+Math.sin(n))/2,o=1+e*(2*r-e),a=Math.sqrt(o)/r;function i(t,n){var e=Math.sqrt(o-2*r*Math.sin(n))/r;return[e*Math.sin(t*=r),a-e*Math.cos(t)]}return i.invert=function(t,n){var e=a-n;return[Math.atan2(t,e)/r,Ft((o-(t*t+e*e)*r*r)/(2*r))]},i}a.geo.clipExtent=function(){var t,n,e,r,o,a,i={stream:function(t){return o&&(o.valid=!1),(o=a(t)).valid=!0,o},extent:function(u){return arguments.length?(a=sr(t=+u[0][0],n=+u[0][1],e=+u[1][0],r=+u[1][1]),o&&(o.valid=!1,o=null),i):[[t,n],[e,r]]}};return i.extent([[0,0],[960,500]])},(a.geo.conicEqualArea=function(){return lr(cr)}).raw=cr,a.geo.albers=function(){return a.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},a.geo.albersUsa=function(){var t,n,e,r,o=a.geo.albers(),i=a.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),u=a.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),s={point:function(n,e){t=[n,e]}};function l(o){var a=o[0],i=o[1];return t=null,n(a,i),t||(e(a,i),t)||r(a,i),t}return l.invert=function(t){var n=o.scale(),e=o.translate(),r=(t[0]-e[0])/n,a=(t[1]-e[1])/n;return(a>=.12&&a<.234&&r>=-.425&&r<-.214?i:a>=.166&&a<.234&&r>=-.214&&r<-.115?u:o).invert(t)},l.stream=function(t){var n=o.stream(t),e=i.stream(t),r=u.stream(t);return{point:function(t,o){n.point(t,o),e.point(t,o),r.point(t,o)},sphere:function(){n.sphere(),e.sphere(),r.sphere()},lineStart:function(){n.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){n.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){n.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){n.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},l.precision=function(t){return arguments.length?(o.precision(t),i.precision(t),u.precision(t),l):o.precision()},l.scale=function(t){return arguments.length?(o.scale(t),i.scale(.35*t),u.scale(t),l.translate(o.translate())):o.scale()},l.translate=function(t){if(!arguments.length)return o.translate();var a=o.scale(),c=+t[0],f=+t[1];return n=o.translate(t).clipExtent([[c-.455*a,f-.238*a],[c+.455*a,f+.238*a]]).stream(s).point,e=i.translate([c-.307*a,f+.201*a]).clipExtent([[c-.425*a+Et,f+.12*a+Et],[c-.214*a-Et,f+.234*a-Et]]).stream(s).point,r=u.translate([c-.205*a,f+.212*a]).clipExtent([[c-.214*a+Et,f+.166*a+Et],[c-.115*a-Et,f+.234*a-Et]]).stream(s).point,l},l.scale(1070)};var fr,hr,pr,dr,mr,gr,vr={point:q,lineStart:q,lineEnd:q,polygonStart:function(){hr=0,vr.lineStart=yr},polygonEnd:function(){vr.lineStart=vr.lineEnd=vr.point=q,fr+=w(hr/2)}};function yr(){var t,n,e,r;function o(t,n){hr+=r*t-e*n,e=t,r=n}vr.point=function(a,i){vr.point=o,t=e=a,n=r=i},vr.lineEnd=function(){o(t,n)}}var br={point:function(t,n){tmr&&(mr=t);ngr&&(gr=n)},lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q};function xr(){var t=Mr(4.5),n=[],e={point:r,lineStart:function(){e.point=o},lineEnd:i,polygonStart:function(){e.lineEnd=u},polygonEnd:function(){e.lineEnd=i,e.point=r},pointRadius:function(n){return t=Mr(n),e},result:function(){if(n.length){var t=n.join("");return n=[],t}}};function r(e,r){n.push("M",e,",",r,t)}function o(t,r){n.push("M",t,",",r),e.point=a}function a(t,e){n.push("L",t,",",e)}function i(){e.point=r}function u(){n.push("Z")}return e}function Mr(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}var wr,_r={point:kr,lineStart:Sr,lineEnd:Ar,polygonStart:function(){_r.lineStart=Er},polygonEnd:function(){_r.point=kr,_r.lineStart=Sr,_r.lineEnd=Ar}};function kr(t,n){ke+=t,Se+=n,++Ae}function Sr(){var t,n;function e(e,r){var o=e-t,a=r-n,i=Math.sqrt(o*o+a*a);Ee+=i*(t+e)/2,Te+=i*(n+r)/2,Re+=i,kr(t=e,n=r)}_r.point=function(r,o){_r.point=e,kr(t=r,n=o)}}function Ar(){_r.point=kr}function Er(){var t,n,e,r;function o(t,n){var o=t-e,a=n-r,i=Math.sqrt(o*o+a*a);Ee+=i*(e+t)/2,Te+=i*(r+n)/2,Re+=i,Ne+=(i=r*t-e*n)*(e+t),Pe+=i*(r+n),Ce+=3*i,kr(e=t,r=n)}_r.point=function(a,i){_r.point=o,kr(t=e=a,n=r=i)},_r.lineEnd=function(){o(t,n)}}function Tr(t){var n=4.5,e={point:r,lineStart:function(){e.point=o},lineEnd:i,polygonStart:function(){e.lineEnd=u},polygonEnd:function(){e.lineEnd=i,e.point=r},pointRadius:function(t){return n=t,e},result:q};function r(e,r){t.moveTo(e+n,r),t.arc(e,r,n,0,Nt)}function o(n,r){t.moveTo(n,r),e.point=a}function a(n,e){t.lineTo(n,e)}function i(){e.point=r}function u(){t.closePath()}return e}function Rr(t){var n=.5,e=Math.cos(30*Ot),r=16;function o(n){return(r?function(n){var e,o,i,u,s,l,c,f,h,p,d,m,g={point:v,lineStart:y,lineEnd:x,polygonStart:function(){n.polygonStart(),g.lineStart=M},polygonEnd:function(){n.polygonEnd(),g.lineStart=y}};function v(e,r){e=t(e,r),n.point(e[0],e[1])}function y(){f=NaN,g.point=b,n.lineStart()}function b(e,o){var i=De([e,o]),u=t(e,o);a(f,h,c,p,d,m,f=u[0],h=u[1],c=e,p=i[0],d=i[1],m=i[2],r,n),n.point(f,h)}function x(){g.point=v,n.lineEnd()}function M(){y(),g.point=w,g.lineEnd=_}function w(t,n){b(e=t,n),o=f,i=h,u=p,s=d,l=m,g.point=b}function _(){a(f,h,c,p,d,m,o,i,e,u,s,l,r,n),g.lineEnd=x,x()}return g}:function(n){return Pr(n,function(e,r){e=t(e,r),n.point(e[0],e[1])})})(n)}function a(r,o,i,u,s,l,c,f,h,p,d,m,g,v){var y=c-r,b=f-o,x=y*y+b*b;if(x>4*n&&g--){var M=u+p,_=s+d,k=l+m,S=Math.sqrt(M*M+_*_+k*k),A=Math.asin(k/=S),E=w(w(k)-1)n||w((y*P+b*C)/x-.5)>.3||u*p+s*d+l*m0&&16,o):Math.sqrt(n)},o}function Nr(t){this.stream=t}function Pr(t,n){return{point:n,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function Cr(t){return Or(function(){return t})()}function Or(t){var n,e,r,o,i,u,s=Rr(function(t,e){return[(t=n(t,e))[0]*l+o,i-t[1]*l]}),l=150,c=480,f=250,h=0,p=0,d=0,m=0,g=0,v=ar,y=U,b=null,x=null;function M(t){return[(t=r(t[0]*Ot,t[1]*Ot))[0]*l+o,i-t[1]*l]}function _(t){return(t=r.invert((t[0]-o)/l,(i-t[1])/l))&&[t[0]*Lt,t[1]*Lt]}function k(){r=Je(e=zr(d,m,g),n);var t=n(h,p);return o=c-t[0]*l,i=f+t[1]*l,S()}function S(){return u&&(u.valid=!1,u=null),M}return M.stream=function(t){return u&&(u.valid=!1),(u=Lr(v(e,s(y(t))))).valid=!0,u},M.clipAngle=function(t){return arguments.length?(v=null==t?(b=t,ar):function(t){var n=Math.cos(t),e=n>0,r=w(n)>Et;return nr(o,function(t){var n,u,s,l,c;return{lineStart:function(){l=s=!1,c=1},point:function(f,h){var p,d=[f,h],m=o(f,h),g=e?m?0:i(f,h):m?i(f+(f<0?Rt:-Rt),h):0;if(!n&&(l=s=m)&&t.lineStart(),m!==s&&(p=a(n,d),(Xe(n,p)||Xe(d,p))&&(d[0]+=Et,d[1]+=Et,m=o(d[0],d[1]))),m!==s)c=0,m?(t.lineStart(),p=a(d,n),t.point(p[0],p[1])):(p=a(n,d),t.point(p[0],p[1]),t.lineEnd()),n=p;else if(r&&n&&e^m){var v;g&u||!(v=a(d,n,!0))||(c=0,e?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1])))}!m||n&&Xe(n,d)||t.point(d[0],d[1]),n=d,s=m,u=g},lineEnd:function(){s&&t.lineEnd(),n=null},clean:function(){return c|(l&&s)<<1}}},Br(t,6*Ot),e?[0,-t]:[-Rt,t-Rt]);function o(t,e){return Math.cos(t)*Math.cos(e)>n}function a(t,e,r){var o=[1,0,0],a=Fe(De(t),De(e)),i=ze(a,a),u=a[0],s=i-u*u;if(!s)return!r&&t;var l=n*i/s,c=-n*u/s,f=Fe(o,a),h=je(o,l);qe(h,je(a,c));var p=f,d=ze(h,p),m=ze(p,p),g=d*d-m*(ze(h,h)-1);if(!(g<0)){var v=Math.sqrt(g),y=je(p,(-d-v)/m);if(qe(y,h),y=Ie(y),!r)return y;var b,x=t[0],M=e[0],_=t[1],k=e[1];M0^y[1]<(w(y[0]-x)Rt^(x<=y[0]&&y[0]<=M)){var E=je(p,(-d+v)/m);return qe(E,h),[y,Ie(E)]}}}function i(n,r){var o=e?t:Rt-t,a=0;return n<-o?a|=1:n>o&&(a|=2),r<-o?a|=4:r>o&&(a|=8),a}}((b=+t)*Ot),S()):b},M.clipExtent=function(t){return arguments.length?(x=t,y=t?sr(t[0][0],t[0][1],t[1][0],t[1][1]):U,S()):x},M.scale=function(t){return arguments.length?(l=+t,k()):l},M.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],k()):[c,f]},M.center=function(t){return arguments.length?(h=t[0]%360*Ot,p=t[1]%360*Ot,k()):[h*Lt,p*Lt]},M.rotate=function(t){return arguments.length?(d=t[0]%360*Ot,m=t[1]%360*Ot,g=t.length>2?t[2]%360*Ot:0,k()):[d*Lt,m*Lt,g*Lt]},a.rebind(M,s,"precision"),function(){return n=t.apply(this,arguments),M.invert=n.invert&&_,k()}}function Lr(t){return Pr(t,function(n,e){t.point(n*Ot,e*Ot)})}function Ur(t,n){return[t,n]}function Dr(t,n){return[t>Rt?t-Nt:t<-Rt?t+Nt:t,n]}function zr(t,n,e){return t?n||e?Je(qr(t),jr(n,e)):qr(t):n||e?jr(n,e):Dr}function Fr(t){return function(n,e){return[(n+=t)>Rt?n-Nt:n<-Rt?n+Nt:n,e]}}function qr(t){var n=Fr(t);return n.invert=Fr(-t),n}function jr(t,n){var e=Math.cos(t),r=Math.sin(t),o=Math.cos(n),a=Math.sin(n);function i(t,n){var i=Math.cos(n),u=Math.cos(t)*i,s=Math.sin(t)*i,l=Math.sin(n),c=l*e+u*r;return[Math.atan2(s*o-c*a,u*e-l*r),Ft(c*o+s*a)]}return i.invert=function(t,n){var i=Math.cos(n),u=Math.cos(t)*i,s=Math.sin(t)*i,l=Math.sin(n),c=l*o-s*a;return[Math.atan2(s*o+l*a,u*e+c*r),Ft(c*e-u*r)]},i}function Br(t,n){var e=Math.cos(t),r=Math.sin(t);return function(o,a,i,u){var s=i*n;null!=o?(o=Ir(e,o),a=Ir(e,a),(i>0?oa)&&(o+=i*Nt)):(o=t+i*Nt,a=t-.5*s);for(var l,c=o;i>0?c>a:c2?t[2]*Ot:0),n.invert=function(n){return(n=t.invert(n[0]*Ot,n[1]*Ot))[0]*=Lt,n[1]*=Lt,n},n},Dr.invert=Ur,a.geo.circle=function(){var t,n,e=[0,0],r=6;function o(){var t="function"==typeof e?e.apply(this,arguments):e,r=zr(-t[0]*Ot,-t[1]*Ot,0).invert,o=[];return n(null,null,1,{point:function(t,n){o.push(t=r(t,n)),t[0]*=Lt,t[1]*=Lt}}),{type:"Polygon",coordinates:[o]}}return o.origin=function(t){return arguments.length?(e=t,o):e},o.angle=function(e){return arguments.length?(n=Br((t=+e)*Ot,r*Ot),o):t},o.precision=function(e){return arguments.length?(n=Br(t*Ot,(r=+e)*Ot),o):r},o.angle(90)},a.geo.distance=function(t,n){var e,r=(n[0]-t[0])*Ot,o=t[1]*Ot,a=n[1]*Ot,i=Math.sin(r),u=Math.cos(r),s=Math.sin(o),l=Math.cos(o),c=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((e=f*i)*e+(e=l*c-s*f*u)*e),s*c+l*f*u)},a.geo.graticule=function(){var t,n,e,r,o,i,u,s,l,c,f,h,p=10,d=p,m=90,g=360,v=2.5;function y(){return{type:"MultiLineString",coordinates:b()}}function b(){return a.range(Math.ceil(r/m)*m,e,m).map(f).concat(a.range(Math.ceil(s/g)*g,u,g).map(h)).concat(a.range(Math.ceil(n/p)*p,t,p).filter(function(t){return w(t%m)>Et}).map(l)).concat(a.range(Math.ceil(i/d)*d,o,d).filter(function(t){return w(t%g)>Et}).map(c))}return y.lines=function(){return b().map(function(t){return{type:"LineString",coordinates:t}})},y.outline=function(){return{type:"Polygon",coordinates:[f(r).concat(h(u).slice(1),f(e).reverse().slice(1),h(s).reverse().slice(1))]}},y.extent=function(t){return arguments.length?y.majorExtent(t).minorExtent(t):y.minorExtent()},y.majorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],s=+t[0][1],u=+t[1][1],r>e&&(t=r,r=e,e=t),s>u&&(t=s,s=u,u=t),y.precision(v)):[[r,s],[e,u]]},y.minorExtent=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],i=+e[0][1],o=+e[1][1],n>t&&(e=n,n=t,t=e),i>o&&(e=i,i=o,o=e),y.precision(v)):[[n,i],[t,o]]},y.step=function(t){return arguments.length?y.majorStep(t).minorStep(t):y.minorStep()},y.majorStep=function(t){return arguments.length?(m=+t[0],g=+t[1],y):[m,g]},y.minorStep=function(t){return arguments.length?(p=+t[0],d=+t[1],y):[p,d]},y.precision=function(a){return arguments.length?(v=+a,l=Xr(i,o,90),c=Yr(n,t,v),f=Xr(s,u,90),h=Yr(r,e,v),y):v},y.majorExtent([[-180,-90+Et],[180,90-Et]]).minorExtent([[-180,-80-Et],[180,80+Et]])},a.geo.greatArc=function(){var t,n,e=Hr,r=Vr;function o(){return{type:"LineString",coordinates:[t||e.apply(this,arguments),n||r.apply(this,arguments)]}}return o.distance=function(){return a.geo.distance(t||e.apply(this,arguments),n||r.apply(this,arguments))},o.source=function(n){return arguments.length?(e=n,t="function"==typeof n?null:n,o):e},o.target=function(t){return arguments.length?(r=t,n="function"==typeof t?null:t,o):r},o.precision=function(){return arguments.length?o:0},o},a.geo.interpolate=function(t,n){return e=t[0]*Ot,r=t[1]*Ot,o=n[0]*Ot,a=n[1]*Ot,i=Math.cos(r),u=Math.sin(r),s=Math.cos(a),l=Math.sin(a),c=i*Math.cos(e),f=i*Math.sin(e),h=s*Math.cos(o),p=s*Math.sin(o),d=2*Math.asin(Math.sqrt(jt(a-r)+i*s*jt(o-e))),m=1/Math.sin(d),(g=d?function(t){var n=Math.sin(t*=d)*m,e=Math.sin(d-t)*m,r=e*c+n*h,o=e*f+n*p,a=e*u+n*l;return[Math.atan2(o,r)*Lt,Math.atan2(a,Math.sqrt(r*r+o*o))*Lt]}:function(){return[e*Lt,r*Lt]}).distance=d,g;var e,r,o,a,i,u,s,l,c,f,h,p,d,m,g},a.geo.length=function(t){return wr=0,a.geo.stream(t,Gr),wr};var Gr={sphere:q,point:q,lineStart:function(){var t,n,e;function r(r,o){var a=Math.sin(o*=Ot),i=Math.cos(o),u=w((r*=Ot)-t),s=Math.cos(u);wr+=Math.atan2(Math.sqrt((u=i*Math.sin(u))*u+(u=e*a-n*i*s)*u),n*a+e*i*s),t=r,n=a,e=i}Gr.point=function(o,a){t=o*Ot,n=Math.sin(a*=Ot),e=Math.cos(a),Gr.point=r},Gr.lineEnd=function(){Gr.point=Gr.lineEnd=q}},lineEnd:q,polygonStart:q,polygonEnd:q};function Wr(t,n){function e(n,e){var r=Math.cos(n),o=Math.cos(e),a=t(r*o);return[a*o*Math.sin(n),a*Math.sin(e)]}return e.invert=function(t,e){var r=Math.sqrt(t*t+e*e),o=n(r),a=Math.sin(o),i=Math.cos(o);return[Math.atan2(t*a,r*i),Math.asin(r&&e*a/r)]},e}var Zr=Wr(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(a.geo.azimuthalEqualArea=function(){return Cr(Zr)}).raw=Zr;var Jr=Wr(function(t){var n=Math.acos(t);return n&&n/Math.sin(n)},U);function $r(t,n){var e=Math.cos(t),r=function(t){return Math.tan(Rt/4+t/2)},o=t===n?Math.sin(t):Math.log(e/Math.cos(n))/Math.log(r(n)/r(t)),a=e*Math.pow(r(t),o)/o;if(!o)return to;function i(t,n){a>0?n<-Ct+Et&&(n=-Ct+Et):n>Ct-Et&&(n=Ct-Et);var e=a/Math.pow(r(n),o);return[e*Math.sin(o*t),a-e*Math.cos(o*t)]}return i.invert=function(t,n){var e=a-n,r=Ut(o)*Math.sqrt(t*t+e*e);return[Math.atan2(t,e)/o,2*Math.atan(Math.pow(a/r,1/o))-Ct]},i}function Kr(t,n){var e=Math.cos(t),r=t===n?Math.sin(t):(e-Math.cos(n))/(n-t),o=e/r+t;if(w(r)1&&Dt(t[e[r-2]],t[e[r-1]],t[o])<=0;)--r;e[r++]=o}return e.slice(0,r)}function so(t,n){return t[0]-n[0]||t[1]-n[1]}(a.geo.stereographic=function(){return Cr(ro)}).raw=ro,oo.invert=function(t,n){return[-n,2*Math.atan(Math.exp(t))-Ct]},(a.geo.transverseMercator=function(){var t=no(oo),n=t.center,e=t.rotate;return t.center=function(t){return t?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return t?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90])}).raw=oo,a.geom={},a.geom.hull=function(t){var n=ao,e=io;if(arguments.length)return r(t);function r(t){if(t.length<3)return[];var r,o=Mn(n),a=Mn(e),i=t.length,u=[],s=[];for(r=0;r=0;--r)p.push(t[u[l[r]][2]]);for(r=+f;rEt)u=u.L;else{if(!((o=a-Eo(u,i))>Et)){r>-Et?(n=u.P,e=u):o>-Et?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}var s=wo(t);if(go.insert(n,s),n||e){if(n===e)return Co(n),e=wo(n.site),go.insert(s,e),s.edge=e.edge=Uo(n.site,s.site),Po(n),void Po(e);if(e){Co(n),Co(e);var l=n.site,c=l.x,f=l.y,h=t.x-c,p=t.y-f,d=e.site,m=d.x-c,g=d.y-f,v=2*(h*g-p*m),y=h*h+p*p,b=m*m+g*g,x={x:(g*y-p*b)/v+c,y:(h*b-m*y)/v+f};Do(e.edge,l,d,x),s.edge=Uo(l,t,null,x),e.edge=Uo(t,d,null,x),Po(n),Po(e)}else s.edge=Uo(n.site,s.site)}}function Ao(t,n){var e=t.site,r=e.x,o=e.y,a=o-n;if(!a)return r;var i=t.P;if(!i)return-1/0;var u=(e=i.site).x,s=e.y,l=s-n;if(!l)return u;var c=u-r,f=1/a-1/l,h=c/l;return f?(-h+Math.sqrt(h*h-2*f*(c*c/(-2*l)-s+l/2+o-a/2)))/f+r:(r+u)/2}function Eo(t,n){var e=t.N;if(e)return Ao(e,n);var r=t.site;return r.y===n?r.x:1/0}function To(t){this.site=t,this.edges=[]}function Ro(t,n){return n.angle-t.angle}function No(){qo(this),this.x=this.y=this.arc=this.site=this.cy=null}function Po(t){var n=t.P,e=t.N;if(n&&e){var r=n.site,o=t.site,a=e.site;if(r!==a){var i=o.x,u=o.y,s=r.x-i,l=r.y-u,c=a.x-i,f=2*(s*(g=a.y-u)-l*c);if(!(f>=-Tt)){var h=s*s+l*l,p=c*c+g*g,d=(g*h-l*p)/f,m=(s*p-c*h)/f,g=m+u,v=xo.pop()||new No;v.arc=t,v.site=o,v.x=d+i,v.y=g+Math.sqrt(d*d+m*m),v.cy=g,t.circle=v;for(var y=null,b=yo._;b;)if(v.y=u)return;if(h>d){if(a){if(a.y>=l)return}else a={x:g,y:s};e={x:g,y:l}}else{if(a){if(a.y1)if(h>d){if(a){if(a.y>=l)return}else a={x:(s-o)/r,y:s};e={x:(l-o)/r,y:l}}else{if(a){if(a.y=u)return}else a={x:i,y:r*i+o};e={x:u,y:r*u+o}}else{if(a){if(a.xEt||w(o-e)>Et)&&(u.splice(i,0,new zo((v=a.site,y=c,b=w(r-f)Et?{x:f,y:w(n-f)Et?{x:w(e-d)Et?{x:h,y:w(n-h)Et?{x:w(e-p)=e&&l.x<=o&&l.y>=r&&l.y<=i?[[e,i],[o,i],[o,r],[e,r]]:[]).point=t[u]}),n}function u(t){return t.map(function(t,n){return{x:Math.round(r(t,n)/Et)*Et,y:Math.round(o(t,n)/Et)*Et,i:n}})}return i.links=function(t){return Xo(u(t)).edges.filter(function(t){return t.l&&t.r}).map(function(n){return{source:t[n.l.i],target:t[n.r.i]}})},i.triangles=function(t){var n=[];return Xo(u(t)).cells.forEach(function(e,r){for(var o,a,i,u,s=e.site,l=e.edges.sort(Ro),c=-1,f=l.length,h=l[f-1].edge,p=h.l===s?h.r:h.l;++ca&&(o=n.slice(a,o),u[i]?u[i]+=o:u[++i]=o),(e=e[0])===(r=r[0])?u[i]?u[i]+=r:u[++i]=r:(u[++i]=null,s.push({i:i,x:Jo(e,r)})),a=Qo.lastIndex;return am&&(m=s.x),s.y>g&&(g=s.y),l.push(s.x),c.push(s.y);else for(f=0;fm&&(m=b),x>g&&(g=x),l.push(b),c.push(x)}var M=m-p,_=g-d;function k(t,n,e,r,o,a,i,u){if(!isNaN(e)&&!isNaN(r))if(t.leaf){var s=t.x,l=t.y;if(null!=s)if(w(s-e)+w(l-r)<.01)S(t,n,e,r,o,a,i,u);else{var c=t.point;t.x=t.y=t.point=null,S(t,c,s,l,o,a,i,u),S(t,n,e,r,o,a,i,u)}else t.x=e,t.y=r,t.point=n}else S(t,n,e,r,o,a,i,u)}function S(t,n,e,r,o,a,i,u){var s=.5*(o+i),l=.5*(a+u),c=e>=s,f=r>=l,h=f<<1|c;t.leaf=!1,c?o=s:i=s,f?a=l:u=l,k(t=t.nodes[h]||(t.nodes[h]={leaf:!0,nodes:[],point:null,x:null,y:null}),n,e,r,o,a,i,u)}M>_?g=d+M:m=p+_;var A={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){k(A,t,+v(t,++f),+y(t,f),p,d,m,g)}};if(A.visit=function(t){!function t(n,e,r,o,a,i){if(!n(e,r,o,a,i)){var u=.5*(r+a),s=.5*(o+i),l=e.nodes;l[0]&&t(n,l[0],r,o,u,s),l[1]&&t(n,l[1],u,o,a,s),l[2]&&t(n,l[2],r,s,u,i),l[3]&&t(n,l[3],u,s,a,i)}}(t,A,p,d,m,g)},A.find=function(t){return function(t,n,e,r,o,a,i){var u,s=1/0;return function t(l,c,f,h,p){if(!(c>a||f>i||h=M)<<1|n>=x,_=w+4;w<_;++w)if(l=b[3&w])switch(3&w){case 0:t(l,c,f,x,M);break;case 1:t(l,x,f,h,M);break;case 2:t(l,c,M,x,p);break;case 3:t(l,x,M,h,p)}}}(t,r,o,a,i),u}(A,t[0],t[1],p,d,m,g)},f=-1,null==n){for(;++f=0&&!(e=a.interpolators[r](t,n)););return e}function na(t,n){var e,r=[],o=[],a=t.length,i=n.length,u=Math.min(t.length,n.length);for(e=0;e=1)return 1;var n=t*t,e=n*t;return 4*(t<.5?e:3*(t-n)+e-.75)}function ca(t){return 1-Math.cos(t*Ct)}function fa(t){return Math.pow(2,10*(t-1))}function ha(t){return 1-Math.sqrt(1-t*t)}function pa(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function da(t,n){return n-=t,function(e){return Math.round(t+n*e)}}function ma(t){var n,e,r,o=[t.a,t.b],a=[t.c,t.d],i=va(o),u=ga(o,a),s=va(((n=a)[0]+=(r=-u)*(e=o)[0],n[1]+=r*e[1],n))||0;o[0]*a[1]=0?t.slice(0,e):t,o=e>=0?t.slice(e+1):"in";return r=ra.get(r)||ea,o=oa.get(o)||U,n=o(r.apply(null,i.call(arguments,1))),function(t){return t<=0?0:t>=1?1:n(t)}},a.interpolateHcl=function(t,n){t=a.hcl(t),n=a.hcl(n);var e=t.h,r=t.c,o=t.l,i=n.h-e,u=n.c-r,s=n.l-o;isNaN(u)&&(u=0,r=isNaN(r)?n.c:r);isNaN(i)?(i=0,e=isNaN(e)?n.h:e):i>180?i-=360:i<-180&&(i+=360);return function(t){return $t(e+i*t,r+u*t,o+s*t)+""}},a.interpolateHsl=function(t,n){t=a.hsl(t),n=a.hsl(n);var e=t.h,r=t.s,o=t.l,i=n.h-e,u=n.s-r,s=n.l-o;isNaN(u)&&(u=0,r=isNaN(r)?n.s:r);isNaN(i)?(i=0,e=isNaN(e)?n.h:e):i>180?i-=360:i<-180&&(i+=360);return function(t){return Wt(e+i*t,r+u*t,o+s*t)+""}},a.interpolateLab=function(t,n){t=a.lab(t),n=a.lab(n);var e=t.l,r=t.a,o=t.b,i=n.l-e,u=n.a-r,s=n.b-o;return function(t){return on(e+i*t,r+u*t,o+s*t)+""}},a.interpolateRound=da,a.transform=function(t){var n=s.createElementNS(a.ns.prefix.svg,"g");return(a.transform=function(t){if(null!=t){n.setAttribute("transform",t);var e=n.transform.baseVal.consolidate()}return new ma(e?e.matrix:ya)})(t)},ma.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var ya={a:1,b:0,c:0,d:1,e:0,f:0};function ba(t){return t.length?t.pop()+",":""}function xa(t,n){var e=[],r=[];return t=a.transform(t),n=a.transform(n),function(t,n,e,r){if(t[0]!==n[0]||t[1]!==n[1]){var o=e.push("translate(",null,",",null,")");r.push({i:o-4,x:Jo(t[0],n[0])},{i:o-2,x:Jo(t[1],n[1])})}else(n[0]||n[1])&&e.push("translate("+n+")")}(t.translate,n.translate,e,r),function(t,n,e,r){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),r.push({i:e.push(ba(e)+"rotate(",null,")")-2,x:Jo(t,n)})):n&&e.push(ba(e)+"rotate("+n+")")}(t.rotate,n.rotate,e,r),function(t,n,e,r){t!==n?r.push({i:e.push(ba(e)+"skewX(",null,")")-2,x:Jo(t,n)}):n&&e.push(ba(e)+"skewX("+n+")")}(t.skew,n.skew,e,r),function(t,n,e,r){if(t[0]!==n[0]||t[1]!==n[1]){var o=e.push(ba(e)+"scale(",null,",",null,")");r.push({i:o-4,x:Jo(t[0],n[0])},{i:o-2,x:Jo(t[1],n[1])})}else 1===n[0]&&1===n[1]||e.push(ba(e)+"scale("+n+")")}(t.scale,n.scale,e,r),t=n=null,function(t){for(var n,o=-1,a=r.length;++o0?e=n:(t.c=null,t.t=NaN,t=null,s.end({type:"end",alpha:e=0})):n>0&&(s.start({type:"start",alpha:e=n}),t=Rn(u.tick)),u):e},u.start=function(){var t,n,e,a=v.length,s=y.length,c=l[0],d=l[1];for(t=0;t=0;)e.push(o[r])}function La(t,n){for(var e=[t],r=[];null!=(t=e.pop());)if(r.push(t),(a=t.children)&&(o=a.length))for(var o,a,i=-1;++i=0;)i.push(c=l[s]),c.parent=a,c.depth=a.depth+1;e&&(a.value=0),a.children=l}else e&&(a.value=+e.call(r,a,a.depth)||0),delete a.children;return La(o,function(n){var r,o;t&&(r=n.children)&&r.sort(t),e&&(o=n.parent)&&(o.value+=n.value)}),u}return r.sort=function(n){return arguments.length?(t=n,r):t},r.children=function(t){return arguments.length?(n=t,r):n},r.value=function(t){return arguments.length?(e=t,r):e},r.revalue=function(t){return e&&(Oa(t,function(t){t.children&&(t.value=0)}),La(t,function(t){var n;t.children||(t.value=+e.call(r,t,t.depth)||0),(n=t.parent)&&(n.value+=t.value)})),t},r},a.layout.partition=function(){var t=a.layout.hierarchy(),n=[1,1];function e(e,r){var o=t.call(this,e,r);return function t(n,e,r,o){var a=n.children;if(n.x=e,n.y=n.depth*o,n.dx=r,n.dy=o,a&&(i=a.length)){var i,u,s,l=-1;for(r=n.value?r/n.value:0;++lu&&(u=r),i.push(r)}for(e=0;eo&&(r=e,o=n);return r}function Wa(t){return t.reduce(Za,0)}function Za(t,n){return t+n[1]}function Ja(t,n){return $a(t,Math.ceil(Math.log(n.length)/Math.LN2+1))}function $a(t,n){for(var e=-1,r=+t[0],o=(t[1]-r)/n,a=[];++e<=n;)a[e]=o*e+r;return a}function Ka(t){return[a.min(t),a.max(t)]}function Qa(t,n){return t.value-n.value}function ti(t,n){var e=t._pack_next;t._pack_next=n,n._pack_prev=t,n._pack_next=e,e._pack_prev=n}function ni(t,n){t._pack_next=n,n._pack_prev=t}function ei(t,n){var e=n.x-t.x,r=n.y-t.y,o=t.r+n.r;return.999*o*o>e*e+r*r}function ri(t){if((n=t.children)&&(s=n.length)){var n,e,r,o,a,i,u,s,l=1/0,c=-1/0,f=1/0,h=-1/0;if(n.forEach(oi),(e=n[0]).x=-e.r,e.y=0,b(e),s>1&&((r=n[1]).x=r.r,r.y=0,b(r),s>2))for(ii(e,r,o=n[2]),b(o),ti(e,o),e._pack_prev=o,ti(o,r),r=e._pack_next,a=3;a0)for(i=-1;++i=f[0]&&s<=f[1]&&((u=l[a.bisect(h,s,1,d)-1]).y+=m,u.push(o[i]));return l}return o.value=function(t){return arguments.length?(n=t,o):n},o.range=function(t){return arguments.length?(e=Mn(t),o):e},o.bins=function(t){return arguments.length?(r="number"==typeof t?function(n){return $a(n,t)}:Mn(t),o):r},o.frequency=function(n){return arguments.length?(t=!!n,o):t},o},a.layout.pack=function(){var t,n=a.layout.hierarchy().sort(Qa),e=0,r=[1,1];function o(o,a){var i=n.call(this,o,a),u=i[0],s=r[0],l=r[1],c=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(u.x=u.y=0,La(u,function(t){t.r=+c(t.value)}),La(u,ri),e){var f=e*(t?1:Math.max(2*u.r/s,2*u.r/l))/2;La(u,function(t){t.r+=f}),La(u,ri),La(u,function(t){t.r-=f})}return function t(n,e,r,o){var a=n.children;n.x=e+=o*n.x;n.y=r+=o*n.y;n.r*=o;if(a)for(var i=-1,u=a.length;++ip.x&&(p=t),t.depth>d.depth&&(d=t)});var m=n(h,p)/2-h.x,g=e[0]/(p.x+n(p,h)/2+m),v=e[1]/(d.depth||1);Oa(c,function(t){t.x=(t.x+m)*g,t.y=t.depth*v})}return l}function i(t){var e=t.children,r=t.parent.children,o=t.i?r[t.i-1]:null;if(e.length){!function(t){var n,e=0,r=0,o=t.children,a=o.length;for(;--a>=0;)(n=o[a]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(t);var a=(e[0].z+e[e.length-1].z)/2;o?(t.z=o.z+n(t._,o._),t.m=t.z-a):t.z=a}else o&&(t.z=o.z+n(t._,o._));t.parent.A=function(t,e,r){if(e){for(var o,a=t,i=t,u=e,s=a.parent.children[0],l=a.m,c=i.m,f=u.m,h=s.m;u=li(u),a=si(a),u&&a;)s=si(s),(i=li(i)).a=t,(o=u.z+f-a.z-l+n(u._,a._))>0&&(ci(fi(u,t,r),t,o),l+=o,c+=o),f+=u.m,l+=a.m,h+=s.m,c+=i.m;u&&!li(i)&&(i.t=u,i.m+=f-c),a&&!si(s)&&(s.t=a,s.m+=l-h,r=t)}return r}(t,o,t.parent.A||r[0])}function u(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e[0],t.y=t.depth*e[1]}return o.separation=function(t){return arguments.length?(n=t,o):n},o.size=function(t){return arguments.length?(r=null==(e=t)?s:null,o):r?null:e},o.nodeSize=function(t){return arguments.length?(r=null==(e=t)?null:s,o):r?e:null},Ca(o,t)},a.layout.cluster=function(){var t=a.layout.hierarchy().sort(null).value(null),n=ui,e=[1,1],r=!1;function o(o,i){var u,s=t.call(this,o,i),l=s[0],c=0;La(l,function(t){var e=t.children;e&&e.length?(t.x=function(t){return t.reduce(function(t,n){return t+n.x},0)/t.length}(e),t.y=function(t){return 1+a.max(t,function(t){return t.y})}(e)):(t.x=u?c+=n(t,u):0,t.y=0,u=t)});var f=function t(n){var e=n.children;return e&&e.length?t(e[0]):n}(l),h=function t(n){var e,r=n.children;return r&&(e=r.length)?t(r[e-1]):n}(l),p=f.x-n(f,h)/2,d=h.x+n(h,f)/2;return La(l,r?function(t){t.x=(t.x-l.x)*e[0],t.y=(l.y-t.y)*e[1]}:function(t){t.x=(t.x-p)/(d-p)*e[0],t.y=(1-(l.y?t.y/l.y:1))*e[1]}),s}return o.separation=function(t){return arguments.length?(n=t,o):n},o.size=function(t){return arguments.length?(r=null==(e=t),o):r?null:e},o.nodeSize=function(t){return arguments.length?(r=null!=(e=t),o):r?e:null},Ca(o,t)},a.layout.treemap=function(){var t,n=a.layout.hierarchy(),e=Math.round,r=[1,1],o=null,i=hi,u=!1,s="squarify",l=.5*(1+Math.sqrt(5));function c(t,n){for(var e,r,o=-1,a=t.length;++o0;)u.push(e=l[o-1]),u.area+=e.area,"squarify"!==s||(r=p(u,m))<=h?(l.pop(),h=r):(u.area-=u.pop().area,d(u,m,a,!1),m=Math.min(a.dx,a.dy),u.length=u.area=0,h=1/0);u.length&&(d(u,m,a,!0),u.length=u.area=0),n.forEach(f)}}function h(t){var n=t.children;if(n&&n.length){var e,r=i(t),o=n.slice(),a=[];for(c(o,r.dx*r.dy/t.value),a.area=0;e=o.pop();)a.push(e),a.area+=e.area,null!=e.z&&(d(a,e.z?r.dx:r.dy,r,!o.length),a.length=a.area=0);n.forEach(h)}}function p(t,n){for(var e,r=t.area,o=0,a=1/0,i=-1,u=t.length;++io&&(o=e));return n*=n,(r*=r)?Math.max(n*o*l/r,r/(n*a*l)):1/0}function d(t,n,r,o){var a,i=-1,u=t.length,s=r.x,l=r.y,c=n?e(t.area/n):0;if(n==r.dx){for((o||c>r.dy)&&(c=r.dy);++ir.dx)&&(c=r.dx);++i1);return t+n*e*Math.sqrt(-2*Math.log(o)/o)}},logNormal:function(){var t=a.random.normal.apply(a,arguments);return function(){return Math.exp(t())}},bates:function(t){var n=a.random.irwinHall(t);return function(){return n()/t}},irwinHall:function(t){return function(){for(var n=0,e=0;e2?xi:gi,u=o?wa:Ma;return a=t(n,e,u,r),i=t(e,n,u,ta),s}function s(t){return a(t)}s.invert=function(t){return i(t)};s.domain=function(t){return arguments.length?(n=t.map(Number),u()):n};s.range=function(t){return arguments.length?(e=t,u()):e};s.rangeRound=function(t){return s.range(t).interpolate(da)};s.clamp=function(t){return arguments.length?(o=t,u()):o};s.interpolate=function(t){return arguments.length?(r=t,u()):r};s.ticks=function(t){return ki(n,t)};s.tickFormat=function(t,e){return Si(n,t,e)};s.nice=function(t){return wi(n,t),u()};s.copy=function(){return t(n,e,r,o)};return u()}([0,1],[0,1],ta,!1)};var Ai={s:1,g:1,p:1,r:1,e:1};function Ei(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}a.scale.log=function(){return function t(n,e,r,o){function i(t){return(r?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function u(t){return r?Math.pow(e,t):-Math.pow(e,-t)}function s(t){return n(i(t))}s.invert=function(t){return u(n.invert(t))};s.domain=function(t){return arguments.length?(r=t[0]>=0,n.domain((o=t.map(Number)).map(i)),s):o};s.base=function(t){return arguments.length?(e=+t,n.domain(o.map(i)),s):e};s.nice=function(){var t=vi(o.map(i),r?Math:Ri);return n.domain(t),o=t.map(u),s};s.ticks=function(){var t=di(o),n=[],a=t[0],s=t[1],l=Math.floor(i(a)),c=Math.ceil(i(s)),f=e%1?2:e;if(isFinite(c-l)){if(r){for(;l0;h--)n.push(u(l)*h);for(l=0;n[l]s;c--);n=n.slice(l,c)}return n};s.tickFormat=function(t,n){if(!arguments.length)return Ti;arguments.length<2?n=Ti:"function"!=typeof n&&(n=a.format(n));var r=Math.max(1,e*t/s.ticks().length);return function(t){var o=t/u(Math.round(i(t)));return o*e0?r[t-1]:n[0],tf?0:1;if(l=Pt)return s(l,p)+(u?s(u,1-p):"")+"Z";var d,m,g,v,y,b,x,M,w,_,k,S,A=0,E=0,T=[];if((v=(+i.apply(this,arguments)||0)/2)&&(g=r===Di?Math.sqrt(u*u+l*l):+r.apply(this,arguments),p||(E*=-1),l&&(E=Ft(g/l*Math.sin(v))),u&&(A=Ft(g/u*Math.sin(v)))),l){y=l*Math.cos(c+E),b=l*Math.sin(c+E),x=l*Math.cos(f-E),M=l*Math.sin(f-E);var R=Math.abs(f-c-2*E)<=Rt?0:1;if(E&&Ii(y,b,x,M)===p^R){var N=(c+f)/2;y=l*Math.cos(N),b=l*Math.sin(N),x=M=null}}else y=b=0;if(u){w=u*Math.cos(f-A),_=u*Math.sin(f-A),k=u*Math.cos(c+A),S=u*Math.sin(c+A);var P=Math.abs(c-f+2*A)<=Rt?0:1;if(A&&Ii(w,_,k,S)===1-p^P){var C=(c+f)/2;w=u*Math.cos(C),_=u*Math.sin(C),k=S=null}}else w=_=0;if(h>Et&&(d=Math.min(Math.abs(l-u)/2,+e.apply(this,arguments)))>.001){m=u0?0:1}function Xi(t,n,e,r,o){var a=t[0]-n[0],i=t[1]-n[1],u=(o?r:-r)/Math.sqrt(a*a+i*i),s=u*i,l=-u*a,c=t[0]+s,f=t[1]+l,h=n[0]+s,p=n[1]+l,d=(c+h)/2,m=(f+p)/2,g=h-c,v=p-f,y=g*g+v*v,b=e-r,x=c*p-h*f,M=(v<0?-1:1)*Math.sqrt(Math.max(0,b*b*y-x*x)),w=(x*v-g*M)/y,_=(-x*g-v*M)/y,k=(x*v+g*M)/y,S=(-x*g+v*M)/y,A=w-d,E=_-m,T=k-d,R=S-m;return A*A+E*E>T*T+R*R&&(w=k,_=S),[[w-s,_-l],[w*e/b,_*e/b]]}function Yi(t){var n=ao,e=io,r=$e,o=Vi,a=o.key,i=.7;function u(a){var u,s=[],l=[],c=-1,f=a.length,h=Mn(n),p=Mn(e);function d(){s.push("M",o(t(l),i))}for(;++c1&&o.push("H",r[0]);return o.join("")},"step-before":Wi,"step-after":Zi,basis:Ki,"basis-open":function(t){if(t.length<4)return Vi(t);var n,e=[],r=-1,o=t.length,a=[0],i=[0];for(;++r<3;)n=t[r],a.push(n[0]),i.push(n[1]);e.push(Qi(eu,a)+","+Qi(eu,i)),--r;for(;++r9&&(o=3*n/Math.sqrt(o),i[u]=o*e,i[u+1]=o*r));u=-1;for(;++u<=s;)o=(t[Math.min(s,u+1)][0]-t[Math.max(0,u-1)][0])/(6*(1+i[u]*i[u])),a.push([o||0,i[u]*o||0]);return a}(t))}});function Vi(t){return t.length>1?t.join("L"):t+"Z"}function Gi(t){return t.join("L")+"Z"}function Wi(t){for(var n=0,e=t.length,r=t[0],o=[r[0],",",r[1]];++n1){u=n[1],a=t[s],s++,r+="C"+(o[0]+i[0])+","+(o[1]+i[1])+","+(a[0]-u[0])+","+(a[1]-u[1])+","+a[0]+","+a[1];for(var l=2;lRt)+",1 "+n}function s(t,n,e,r){return"Q 0,0 "+r}return a.radius=function(t){return arguments.length?(e=Mn(t),a):e},a.source=function(n){return arguments.length?(t=Mn(n),a):t},a.target=function(t){return arguments.length?(n=Mn(t),a):n},a.startAngle=function(t){return arguments.length?(r=Mn(t),a):r},a.endAngle=function(t){return arguments.length?(o=Mn(t),a):o},a},a.svg.diagonal=function(){var t=Hr,n=Vr,e=su;function r(r,o){var a=t.call(this,r,o),i=n.call(this,r,o),u=(a.y+i.y)/2,s=[a,{x:a.x,y:u},{x:i.x,y:u},i];return"M"+(s=s.map(e))[0]+"C"+s[1]+" "+s[2]+" "+s[3]}return r.source=function(n){return arguments.length?(t=Mn(n),r):t},r.target=function(t){return arguments.length?(n=Mn(t),r):n},r.projection=function(t){return arguments.length?(e=t,r):e},r},a.svg.diagonal.radial=function(){var t=a.svg.diagonal(),n=su,e=t.projection;return t.projection=function(t){return arguments.length?e(function(t){return function(){var n=t.apply(this,arguments),e=n[0],r=n[1]-Ct;return[e*Math.cos(r),e*Math.sin(r)]}}(n=t)):n},t},a.svg.symbol=function(){var t=cu,n=lu;function e(e,r){return(hu.get(t.call(this,e,r))||fu)(n.call(this,e,r))}return e.type=function(n){return arguments.length?(t=Mn(n),e):t},e.size=function(t){return arguments.length?(n=Mn(t),e):n},e};var hu=a.map({circle:fu,cross:function(t){var n=Math.sqrt(t/5)/2;return"M"+-3*n+","+-n+"H"+-n+"V"+-3*n+"H"+n+"V"+-n+"H"+3*n+"V"+n+"H"+n+"V"+3*n+"H"+-n+"V"+n+"H"+-3*n+"Z"},diamond:function(t){var n=Math.sqrt(t/(2*du)),e=n*du;return"M0,"+-n+"L"+e+",0 0,"+n+" "+-e+",0Z"},square:function(t){var n=Math.sqrt(t)/2;return"M"+-n+","+-n+"L"+n+","+-n+" "+n+","+n+" "+-n+","+n+"Z"},"triangle-down":function(t){var n=Math.sqrt(t/pu),e=n*pu/2;return"M0,"+e+"L"+n+","+-e+" "+-n+","+-e+"Z"},"triangle-up":function(t){var n=Math.sqrt(t/pu),e=n*pu/2;return"M0,"+-e+"L"+n+","+e+" "+-n+","+e+"Z"}});a.svg.symbolTypes=hu.keys();var pu=Math.sqrt(3),du=Math.tan(30*Ot);$.transition=function(t){for(var n,e,r=yu||++Mu,o=ku(t),a=[],i=bu||{time:Date.now(),ease:la,delay:0,duration:250},u=-1,s=this.length;++u0;)l[--h].call(t,i);if(a>=1)return f.event&&f.event.end.call(t,t.__data__,n),--c.count?delete c[r]:delete t[e],1}f||(a=o.time,i=Rn(function(t){var n=f.delay;if(i.t=n+a,n<=t)return h(t-n);i.c=h},0,a),f=c[r]={tween:new k,time:a,timer:i,delay:o.delay,duration:o.duration,ease:o.ease,index:n},o=null,++c.count)}xu.call=$.call,xu.empty=$.empty,xu.node=$.node,xu.size=$.size,a.transition=function(t,n){return t&&t.transition?yu?t.transition(n):t:a.selection().transition(t)},a.transition.prototype=xu,xu.select=function(t){var n,e,r,o=this.id,a=this.namespace,i=[];t=K(t);for(var u=-1,s=this.length;++urect,.s>rect").attr("width",i[1]-i[0])}function m(t){t.select(".extent").attr("y",u[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",u[1]-u[0])}function g(){var f,g,v=this,y=a.select(a.event.target),b=e.of(v,arguments),x=a.select(v),M=y.datum(),w=!/^(n|s)$/.test(M)&&r,_=!/^(e|w)$/.test(M)&&o,k=y.classed("extent"),S=_t(v),A=a.mouse(v),E=a.select(c(v)).on("keydown.brush",function(){32==a.event.keyCode&&(k||(f=null,A[0]-=i[1],A[1]-=u[1],k=2),I())}).on("keyup.brush",function(){32==a.event.keyCode&&2==k&&(A[0]+=i[1],A[1]+=u[1],k=0,I())});if(a.event.changedTouches?E.on("touchmove.brush",N).on("touchend.brush",C):E.on("mousemove.brush",N).on("mouseup.brush",C),x.interrupt().selectAll("*").interrupt(),k)A[0]=i[0]-A[0],A[1]=u[0]-A[1];else if(M){var T=+/w$/.test(M),R=+/^n/.test(M);g=[i[1-T]-A[0],u[1-R]-A[1]],A[0]=i[T],A[1]=u[R]}else a.event.altKey&&(f=A.slice());function N(){var t=a.mouse(v),n=!1;g&&(t[0]+=g[0],t[1]+=g[1]),k||(a.event.altKey?(f||(f=[(i[0]+i[1])/2,(u[0]+u[1])/2]),A[0]=i[+(t[0]1?{floor:function(n){for(;u(n=t.floor(n));)n=zu(n-1);return n},ceil:function(n){for(;u(n=t.ceil(n));)n=zu(+n+1);return n}}:t))},r.ticks=function(t,n){var e=di(r.domain()),a=null==t?o(e,10):"number"==typeof t?o(e,t):!t.range&&[{range:t},n];return a&&(t=a[0],n=a[1]),t.range(e[0],zu(+e[1]+1),n<1?1:n)},r.tickFormat=function(){return e},r.copy=function(){return Du(t.copy(),n,e)},Mi(r,t)}function zu(t){return new Date(t)}Cu.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?Uu:Lu,Uu.parse=function(t){var n=new Date(t);return isNaN(n)?null:n},Uu.toString=Lu.toString,Fn.second=In(function(t){return new qn(1e3*Math.floor(t/1e3))},function(t,n){t.setTime(t.getTime()+1e3*Math.floor(n))},function(t){return t.getSeconds()}),Fn.seconds=Fn.second.range,Fn.seconds.utc=Fn.second.utc.range,Fn.minute=In(function(t){return new qn(6e4*Math.floor(t/6e4))},function(t,n){t.setTime(t.getTime()+6e4*Math.floor(n))},function(t){return t.getMinutes()}),Fn.minutes=Fn.minute.range,Fn.minutes.utc=Fn.minute.utc.range,Fn.hour=In(function(t){var n=t.getTimezoneOffset()/60;return new qn(36e5*(Math.floor(t/36e5-n)+n))},function(t,n){t.setTime(t.getTime()+36e5*Math.floor(n))},function(t){return t.getHours()}),Fn.hours=Fn.hour.range,Fn.hours.utc=Fn.hour.utc.range,Fn.month=In(function(t){return(t=Fn.day(t)).setDate(1),t},function(t,n){t.setMonth(t.getMonth()+n)},function(t){return t.getMonth()}),Fn.months=Fn.month.range,Fn.months.utc=Fn.month.utc.range;var Fu=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],qu=[[Fn.second,1],[Fn.second,5],[Fn.second,15],[Fn.second,30],[Fn.minute,1],[Fn.minute,5],[Fn.minute,15],[Fn.minute,30],[Fn.hour,1],[Fn.hour,3],[Fn.hour,6],[Fn.hour,12],[Fn.day,1],[Fn.day,2],[Fn.week,1],[Fn.month,1],[Fn.month,3],[Fn.year,1]],ju=Cu.multi([[".%L",function(t){return t.getMilliseconds()}],[":%S",function(t){return t.getSeconds()}],["%I:%M",function(t){return t.getMinutes()}],["%I %p",function(t){return t.getHours()}],["%a %d",function(t){return t.getDay()&&1!=t.getDate()}],["%b %d",function(t){return 1!=t.getDate()}],["%B",function(t){return t.getMonth()}],["%Y",$e]]),Bu={range:function(t,n,e){return a.range(Math.ceil(t/e)*e,+n,e).map(zu)},floor:U,ceil:U};qu.year=Fn.year,Fn.scale=function(){return Du(a.scale.linear(),qu,ju)};var Iu=qu.map(function(t){return[t[0].utc,t[1]]}),Xu=Ou.multi([[".%L",function(t){return t.getUTCMilliseconds()}],[":%S",function(t){return t.getUTCSeconds()}],["%I:%M",function(t){return t.getUTCMinutes()}],["%I %p",function(t){return t.getUTCHours()}],["%a %d",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],["%b %d",function(t){return 1!=t.getUTCDate()}],["%B",function(t){return t.getUTCMonth()}],["%Y",$e]]);function Yu(t){return JSON.parse(t.responseText)}function Hu(t){var n=s.createRange();return n.selectNode(s.body),n.createContextualFragment(t.responseText)}Iu.year=Fn.year.utc,Fn.scale.utc=function(){return Du(a.scale.linear(),Iu,Xu)},a.text=wn(function(t){return t.responseText}),a.json=function(t,n){return _n(t,"application/json",Yu,n)},a.html=function(t,n){return _n(t,"text/html",Hu,n)},a.xml=wn(function(t){return t.responseXML}),this.d3=a,void 0===(o="function"==typeof(r=a)?r.call(n,e,n,t):r)||(t.exports=o)}()}])},t.exports=o()},function(t,n,e){"use strict";var r=e(24);function o(){}t.exports=function(){function t(t,n,e,o,a,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function n(){return t}t.isRequired=t;var e={array:t,bool:t,func:t,number:t,object:t,string:t,symbol:t,any:t,arrayOf:n,element:t,instanceOf:n,node:t,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n};return e.checkPropTypes=o,e.PropTypes=e,e}},function(t,n,e){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(t,n,e){"use strict";var r=e(7),o=e(26),a=e(27),i=e(6),u=e(8),s=e(21),l=e(28);function c(t,n){return n=n.split("// __split__"),new o.Program(t,n[0],n[1])}t.exports=function(t,n,e){var f,h,p,d,m,g,v,y,b,x,M,w,_,k,S,A,E,T,R,N,P,C,O,L,U,D,z,F=this,q=null,j=null,B=null,I=null,X=null,Y=null,H=0,V=!1,G=!1;function W(t){p.viewport(0,0,e,e);var o=u.clone(t);o.zoom=1/f,o.translation.x=0,o.translation.y=0;for(var a=r.mat4.create(),i=0;i<3;i++){var s=r.vec3.random(r.vec3.create(),1);r.mat4.rotate(a,a,10*Math.random(),s)}o.rotation=r.mat4.multiply(r.mat4.create(),a,o.rotation),E.bind(),p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT);var l=u.getRect(o),c=r.mat4.create();r.mat4.ortho(c,l.left,l.right,l.bottom,l.top,0,f);var h=r.mat4.create();r.mat4.lookAt(h,[0,0,0],[0,0,-1],[0,1,0]);var d=r.mat4.create();r.mat4.translate(d,d,[0,0,-f/2]),r.mat4.multiply(d,d,o.rotation),P.setUniform("uProjection","Matrix4fv",!1,c),P.setUniform("uView","Matrix4fv",!1,h),P.setUniform("uModel","Matrix4fv",!1,d),P.setUniform("uBottomLeft","2fv",[l.left,l.bottom]),P.setUniform("uTopRight","2fv",[l.right,l.top]),P.setUniform("uAtomScale","1f",2.5*o.atomScale),P.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),P.setUniform("uRes","1f",e),P.setUniform("uDepth","1f",f),P.setUniform("uMode","1i",0),P.setUniform("uAtomShade","1f",t.atomShade),q.render(),t.bonds&&null!=j&&(C.setUniform("uProjection","Matrix4fv",!1,c),C.setUniform("uView","Matrix4fv",!1,h),C.setUniform("uModel","Matrix4fv",!1,d),C.setUniform("uRotation","Matrix4fv",!1,o.rotation),C.setUniform("uDepth","1f",f),C.setUniform("uBottomLeft","2fv",[l.left,l.bottom]),C.setUniform("uTopRight","2fv",[l.right,l.top]),C.setUniform("uRes","1f",e),C.setUniform("uBondRadius","1f",2.5*u.getBondRadius(t)),C.setUniform("uBondShade","1f",t.bondShade),C.setUniform("uAtomScale","1f",2.5*t.atomScale),C.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),C.setUniform("uMode","1i",0),j.render()),p.viewport(0,0,n,n);var y=u.getRect(t),x=u.getRect(o),M=r.mat4.invert(r.mat4.create(),a);T.bind(),p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT),O.setUniform("uSceneDepth","1i",g.index),O.setUniform("uSceneNormal","1i",m.index),O.setUniform("uRandRotDepth","1i",v.index),O.setUniform("uAccumulator","1i",b.index),O.setUniform("uSceneBottomLeft","2fv",[y.left,y.bottom]),O.setUniform("uSceneTopRight","2fv",[y.right,y.top]),O.setUniform("uRotBottomLeft","2fv",[x.left,x.bottom]),O.setUniform("uRotTopRight","2fv",[x.right,x.top]),O.setUniform("uRes","1f",n),O.setUniform("uDepth","1f",f),O.setUniform("uRot","Matrix4fv",!1,a),O.setUniform("uInvRot","Matrix4fv",!1,M),O.setUniform("uSampleCount","1i",H),B.render(),b.activate(),b.bind(),p.copyTexImage2D(p.TEXTURE_2D,0,p.RGBA,0,0,n,n,0)}F.getAOProgress=function(){return H/1024},F.initialize=function(){t.width=t.height=n,(p=t.getContext("webgl")).enable(p.DEPTH_TEST),p.enable(p.CULL_FACE),p.clearColor(0,0,0,0),p.clearDepth(1),p.viewport(0,0,n,n),window.gl=p,o.getExtensions(p,["EXT_frag_depth","WEBGL_depth_texture"]),F.createTextures(),P=c(p,l.shaders.atom),C=c(p,l.shaders.bond),z=c(p,l.shaders["textured-quad"]),O=c(p,l.shaders.accumulator),L=c(p,l.shaders.ao),U=c(p,l.shaders.fxaa),D=c(p,l.shaders.dof);var e=[-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0],r=o.buildAttribs(p,{aPosition:3});r.aPosition.buffer.set(new Float32Array(e));var a=e.length/9;new o.Renderable(p,z,r,a),B=new o.Renderable(p,O,r,a),I=new o.Renderable(p,L,r,a),Y=new o.Renderable(p,U,r,a),X=new o.Renderable(p,D,r,a),0},F.createTextures=function(){y=new o.Texture(p,0,null,e,e),v=new o.Texture(p,1,null,e,e,{internalFormat:p.DEPTH_COMPONENT,format:p.DEPTH_COMPONENT,type:p.UNSIGNED_SHORT}),E=new o.Framebuffer(p,[y],v),d=new o.Texture(p,2,null,n,n),m=new o.Texture(p,3,null,n,n),g=new o.Texture(p,4,null,n,n,{internalFormat:p.DEPTH_COMPONENT,format:p.DEPTH_COMPONENT,type:p.UNSIGNED_SHORT}),S=new o.Framebuffer(p,[d],g),A=new o.Framebuffer(p,[m],g),b=new o.Texture(p,5,null,n,n),x=new o.Texture(p,6,null,n,n),T=new o.Framebuffer(p,[x]),k=new o.Texture(p,7,null,n,n),N=new o.Framebuffer(p,[k]),M=new o.Texture(p,8,null,n,n),w=new o.Texture(p,9,null,n,n),R=new o.Framebuffer(p,[w]),_=new o.Texture(p,10,null,n,n),new o.Framebuffer(p,[_])},F.setResolution=function(r,o){e=o,n=r,t.width=t.height=n,p.viewport(0,0,n,n),F.createTextures()},F.setSystem=function(t,n){function e(t){for(var n=[],e=0;e<36;e++)n.push.apply(n,t);return n}h=t;for(var r=o.buildAttribs(p,{aImposter:3,aPosition:3,aRadius:1,aColor:3}),u=[],s=[],l=[],c=[],f=0;f0)){r=o.buildAttribs(p,{aImposter:3,aPosA:3,aPosB:3,aRadA:1,aRadB:1,aColA:3,aColB:3}),u=[];var v=[],y=[],b=[],x=[],M=[],w=[];for(f=0;fn.bondThreshold)break;u.push.apply(u,a.position),v.push.apply(v,e([_.posA.x,_.posA.y,_.posA.z])),y.push.apply(y,e([_.posB.x,_.posB.y,_.posB.z])),b.push.apply(b,e([_.radA])),x.push.apply(x,e([_.radB])),M.push.apply(M,e([_.colA.r,_.colA.g,_.colA.b])),w.push.apply(w,e([_.colB.r,_.colB.g,_.colB.b]))}r.aImposter.buffer.set(new Float32Array(u)),r.aPosA.buffer.set(new Float32Array(v)),r.aPosB.buffer.set(new Float32Array(y)),r.aRadA.buffer.set(new Float32Array(b)),r.aRadB.buffer.set(new Float32Array(x)),r.aColA.buffer.set(new Float32Array(M)),r.aColB.buffer.set(new Float32Array(w));g=u.length/9;j=new o.Renderable(p,C,r,g)}},F.reset=function(){H=0,V=!1,G=!1,b.reset(),x.reset()},F.render=function(t){if(void 0!==h&&null!=q){if(f=2*s.getRadius(h),V)if(G)for(var e=0;e1024);e++)W(t),H++;else!function(t){G=!0,p.viewport(0,0,n,n),A.bind(),p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT);var e=u.getRect(t),o=r.mat4.create();r.mat4.ortho(o,e.left,e.right,e.bottom,e.top,0,f);var a=r.mat4.create();r.mat4.lookAt(a,[0,0,0],[0,0,-1],[0,1,0]);var i=r.mat4.create();r.mat4.translate(i,i,[0,0,-f/2]),r.mat4.multiply(i,i,t.rotation),P.setUniform("uProjection","Matrix4fv",!1,o),P.setUniform("uView","Matrix4fv",!1,a),P.setUniform("uModel","Matrix4fv",!1,i),P.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),P.setUniform("uTopRight","2fv",[e.right,e.top]),P.setUniform("uAtomScale","1f",2.5*t.atomScale),P.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),P.setUniform("uRes","1f",n),P.setUniform("uDepth","1f",f),P.setUniform("uMode","1i",1),P.setUniform("uAtomShade","1f",t.atomShade),q.render(),t.bonds&&null!=j&&(A.bind(),C.setUniform("uProjection","Matrix4fv",!1,o),C.setUniform("uView","Matrix4fv",!1,a),C.setUniform("uModel","Matrix4fv",!1,i),C.setUniform("uRotation","Matrix4fv",!1,t.rotation),C.setUniform("uDepth","1f",f),C.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),C.setUniform("uTopRight","2fv",[e.right,e.top]),C.setUniform("uRes","1f",n),C.setUniform("uBondRadius","1f",2.5*u.getBondRadius(t)),C.setUniform("uBondShade","1f",t.bondShade),C.setUniform("uAtomScale","1f",2.5*t.atomScale),C.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),C.setUniform("uMode","1i",1),j.render())}(t);else!function(t){V=!0,p.viewport(0,0,n,n),S.bind(),p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT);var e=u.getRect(t),o=r.mat4.create();r.mat4.ortho(o,e.left,e.right,e.bottom,e.top,0,f);var a=r.mat4.create();r.mat4.lookAt(a,[0,0,0],[0,0,-1],[0,1,0]);var i=r.mat4.create();r.mat4.translate(i,i,[0,0,-f/2]),r.mat4.multiply(i,i,t.rotation),P.setUniform("uProjection","Matrix4fv",!1,o),P.setUniform("uView","Matrix4fv",!1,a),P.setUniform("uModel","Matrix4fv",!1,i),P.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),P.setUniform("uTopRight","2fv",[e.right,e.top]),P.setUniform("uAtomScale","1f",2.5*t.atomScale),P.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),P.setUniform("uRes","1f",n),P.setUniform("uDepth","1f",f),P.setUniform("uMode","1i",0),P.setUniform("uAtomShade","1f",t.atomShade),q.render(),t.bonds&&null!=j&&(S.bind(),C.setUniform("uProjection","Matrix4fv",!1,o),C.setUniform("uView","Matrix4fv",!1,a),C.setUniform("uModel","Matrix4fv",!1,i),C.setUniform("uRotation","Matrix4fv",!1,t.rotation),C.setUniform("uDepth","1f",f),C.setUniform("uBottomLeft","2fv",[e.left,e.bottom]),C.setUniform("uTopRight","2fv",[e.right,e.top]),C.setUniform("uRes","1f",n),C.setUniform("uBondRadius","1f",2.5*u.getBondRadius(t)),C.setUniform("uBondShade","1f",t.bondShade),C.setUniform("uAtomScale","1f",2.5*t.atomScale),C.setUniform("uRelativeAtomScale","1f",t.relativeAtomScale),C.setUniform("uMode","1i",0),j.render())}(t);!function(t){p.viewport(0,0,n,n),t.fxaa>0||t.dofStrength>0?N.bind():p.bindFramebuffer(p.FRAMEBUFFER,null);if(p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT),L.setUniform("uSceneColor","1i",d.index),L.setUniform("uSceneDepth","1i",g.index),L.setUniform("uAccumulatorOut","1i",x.index),L.setUniform("uRes","1f",n),L.setUniform("uAO","1f",2*t.ao),L.setUniform("uBrightness","1f",2*t.brightness),L.setUniform("uOutlineStrength","1f",t.outline),I.render(),t.fxaa>0){t.dofStrength>0?R.bind():p.bindFramebuffer(p.FRAMEBUFFER,null);for(var e=0;e0&&(p.bindFramebuffer(p.FRAMEBUFFER,null),p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT),t.fxaa>0?D.setUniform("uColor","1i",M.index):D.setUniform("uColor","1i",k.index),D.setUniform("uDepth","1i",g.index),D.setUniform("uDOFPosition","1f",t.dofPosition),D.setUniform("uDOFStrength","1f",t.dofStrength),D.setUniform("uRes","1f",n),X.render())}(t)}},F.initialize()}},function(t,n){function e(t){var n=this;n.initialize=function(){n.buffer=t.createBuffer()},n.bind=function(){t.bindBuffer(t.ARRAY_BUFFER,n.buffer)},n.set=function(e){n.bind(),t.bufferData(t.ARRAY_BUFFER,e,t.STATIC_DRAW)},n.initialize()}t.exports.buildAttribs=function(t,n){var r={};for(var o in n)r[o]={buffer:new e(t),size:n[o]};return r},t.exports.getExtensions=function(t,n){for(var e={},r=0;r1){for(var a=[],i=0;i 0.0) {\n float depth = texture2D(uSceneDepth, p).r;\n float r = 1.0/511.0;\n float d0 = abs(texture2D(uSceneDepth, p + vec2(-r, 0)).r - depth);\n float d1 = abs(texture2D(uSceneDepth, p + vec2( r, 0)).r - depth);\n float d2 = abs(texture2D(uSceneDepth, p + vec2( 0, -r)).r - depth);\n float d3 = abs(texture2D(uSceneDepth, p + vec2( 0, r)).r - depth);\n float d = max(d0, d1);\n d = max(d, d2);\n d = max(d, d3);\n sceneColor.rgb *= pow(1.0 - d, uOutlineStrength * 32.0);\n sceneColor.a = max(step(0.003, d), sceneColor.a);\n }\n vec4 dAccum = texture2D(uAccumulatorOut, p);\n float shade = max(0.0, 1.0 - (dAccum.r + dAccum.g + dAccum.b + dAccum.a) * 0.25 * uAO);\n shade = pow(shade, 2.0);\n gl_FragColor = vec4(uBrightness * sceneColor.rgb * shade, sceneColor.a);\n}\n",atom:"#version 100\nprecision highp float;\n\nattribute vec3 aImposter;\nattribute vec3 aPosition;\nattribute float aRadius;\nattribute vec3 aColor;\n\nuniform mat4 uView;\nuniform mat4 uProjection;\nuniform mat4 uModel;\nuniform float uAtomScale;\nuniform float uRelativeAtomScale;\nuniform float uAtomShade;\n\nvarying vec3 vColor;\nvarying vec3 vPosition;\nvarying float vRadius;\n\nvoid main() {\n vRadius = uAtomScale * (1.0 + (aRadius - 1.0) * uRelativeAtomScale);\n gl_Position = uProjection * uView * uModel * vec4(vRadius * aImposter + aPosition, 1.0);\n vColor = mix(aColor, vec3(1,1,1), uAtomShade);\n vPosition = vec3(uModel * vec4(aPosition, 1));\n}\n\n\n// __split__\n\n\n#version 100\n#extension GL_EXT_frag_depth: enable\nprecision highp float;\n\nuniform vec2 uBottomLeft;\nuniform vec2 uTopRight;\nuniform float uRes;\nuniform float uDepth;\nuniform int uMode;\n\nvarying vec3 vPosition;\nvarying float vRadius;\nvarying vec3 vColor;\n\nvec2 res = vec2(uRes, uRes);\n\nfloat raySphereIntersect(vec3 r0, vec3 rd) {\n float a = dot(rd, rd);\n vec3 s0_r0 = r0 - vPosition;\n float b = 2.0 * dot(rd, s0_r0);\n float c = dot(s0_r0, s0_r0) - (vRadius * vRadius);\n float disc = b*b - 4.0*a*c;\n if (disc <= 0.0) {\n return -1.0;\n }\n return (-b - sqrt(disc))/(2.0*a);\n}\n\nvoid main() {\n vec3 r0 = vec3(uBottomLeft + (gl_FragCoord.xy/res) * (uTopRight - uBottomLeft), 0.0);\n vec3 rd = vec3(0, 0, -1);\n float t = raySphereIntersect(r0, rd);\n if (t < 0.0) {\n discard;\n }\n vec3 coord = r0 + rd * t;\n vec3 normal = normalize(coord - vPosition);\n if (uMode == 0) {\n gl_FragColor = vec4(vColor, 1);\n } else if (uMode == 1) {\n gl_FragColor = vec4(normal * 0.5 + 0.5, 1.0);\n }\n gl_FragDepthEXT = -coord.z/uDepth;\n}\n",blur:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\nuniform int leftRight;\n\nvoid main() {\n vec2 dir;\n if (leftRight == 1) {\n dir = vec2(1,0)/uRes;\n } else {\n dir = vec2(0,1)/uRes;\n }\n const int range = 16;\n vec4 sample = vec4(0,0,0,0);\n for (int i = -range; i <= range; i++) {\n vec2 p = gl_FragCoord.xy/uRes + dir * float(i);\n sample += texture2D(uTexture, p);\n }\n sample /= float(range) * 2.0 + 1.0;\n gl_FragColor = sample;\n}\n",bond:"#version 100\nprecision highp float;\n\nattribute vec3 aImposter;\nattribute vec3 aPosA;\nattribute vec3 aPosB;\nattribute float aRadA;\nattribute float aRadB;\nattribute vec3 aColA;\nattribute vec3 aColB;\n\nuniform mat4 uView;\nuniform mat4 uProjection;\nuniform mat4 uModel;\nuniform mat4 uRotation;\nuniform float uBondRadius;\nuniform float uAtomScale;\nuniform float uRelativeAtomScale;\n\nvarying vec3 vNormal;\nvarying vec3 vPosA, vPosB;\nvarying float vRadA, vRadB;\nvarying vec3 vColA, vColB;\nvarying float vRadius;\n\nmat3 alignVector(vec3 a, vec3 b) {\n vec3 v = cross(a, b);\n float s = length(v);\n float c = dot(a, b);\n mat3 I = mat3(\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 1\n );\n mat3 vx = mat3(\n 0, v.z, -v.y,\n -v.z, 0, v.x,\n v.y, -v.x, 0\n );\n return I + vx + vx * vx * ((1.0 - c) / (s * s));\n}\n\nvoid main() {\n vRadius = uBondRadius;\n vec3 pos = vec3(aImposter);\n // Scale the box in x and z to be bond-radius.\n pos = pos * vec3(vRadius, 1, vRadius);\n // Shift the origin-centered cube so that the bottom is at the origin.\n pos = pos + vec3(0, 1, 0);\n // Stretch the box in y so that it is the length of the bond.\n pos = pos * vec3(1, length(aPosA - aPosB) * 0.5, 1);\n // Find the rotation that aligns vec3(0, 1, 0) with vec3(uPosB - uPosA) and apply it.\n vec3 a = normalize(vec3(-0.000001, 1.000001, 0.000001));\n vec3 b = normalize(aPosB - aPosA);\n mat3 R = alignVector(a, b);\n pos = R * pos;\n // Shift the cube so that the bottom is centered at the middle of atom A.\n pos = pos + aPosA;\n\n vec4 position = uModel * vec4(pos, 1);\n gl_Position = uProjection * uView * position;\n vPosA = aPosA;\n vPosB = aPosB;\n vRadA = uAtomScale * (1.0 + (aRadA - 1.0) * uRelativeAtomScale);\n vRadB = uAtomScale * (1.0 + (aRadB - 1.0) * uRelativeAtomScale);\n vColA = aColA;\n vColB = aColB;\n}\n\n\n// __split__\n\n\n#version 100\n#extension GL_EXT_frag_depth: enable\nprecision highp float;\n\nuniform mat4 uRotation;\nuniform vec2 uBottomLeft;\nuniform vec2 uTopRight;\nuniform float uDepth;\nuniform float uRes;\nuniform float uBondShade;\nuniform int uMode;\n\nvarying vec3 vPosA, vPosB;\nvarying float vRadA, vRadB;\nvarying vec3 vColA, vColB;\nvarying float vRadius;\n\nmat3 alignVector(vec3 a, vec3 b) {\n vec3 v = cross(a, b);\n float s = length(v);\n float c = dot(a, b);\n mat3 I = mat3(\n 1, 0, 0,\n 0, 1, 0,\n 0, 0, 1\n );\n mat3 vx = mat3(\n 0, v.z, -v.y,\n -v.z, 0, v.x,\n v.y, -v.x, 0\n );\n return I + vx + vx * vx * ((1.0 - c) / (s * s));\n}\n\nvoid main() {\n\n vec2 res = vec2(uRes, uRes);\n vec3 r0 = vec3(uBottomLeft + (gl_FragCoord.xy/res) * (uTopRight - uBottomLeft), uDepth/2.0);\n vec3 rd = vec3(0, 0, -1);\n\n vec3 i = normalize(vPosB - vPosA);\n i = vec3(uRotation * vec4(i, 0));\n vec3 j = normalize(vec3(-0.000001, 1.000001, 0.000001));\n mat3 R = alignVector(i, j);\n\n vec3 r0p = r0 - vec3(uRotation * vec4(vPosA, 0));\n r0p = R * r0p;\n vec3 rdp = R * rd;\n\n float a = dot(rdp.xz, rdp.xz);\n float b = 2.0 * dot(rdp.xz, r0p.xz);\n float c = dot(r0p.xz, r0p.xz) - vRadius*vRadius;\n float disc = b*b - 4.0*a*c;\n if (disc <= 0.0) {\n discard;\n }\n float t = (-b - sqrt(disc))/(2.0*a);\n if (t < 0.0) {\n discard;\n }\n\n vec3 coord = r0p + rdp * t;\n if (coord.y < 0.0 || coord.y > length(vPosA - vPosB)) {\n discard;\n }\n\n vec3 color;\n if (coord.y < vRadA + 0.5 * (length(vPosA - vPosB) - (vRadA + vRadB))) {\n color = vColA;\n } else {\n color = vColB;\n }\n\n color = mix(color, vec3(1,1,1), uBondShade);\n\n R = alignVector(j, i);\n vec3 normal = normalize(R * vec3(coord.x, 0, coord.z));\n\n coord = r0 + rd * t;\n if (uMode == 0) {\n gl_FragColor = vec4(color, 1);\n } else if (uMode == 1) {\n gl_FragColor = vec4(normal * 0.5 + 0.5, 1.0);\n }\n gl_FragDepthEXT = -(coord.z - uDepth/2.0)/uDepth;\n}\n",dof:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uColor;\nuniform sampler2D uDepth;\nuniform float uRes;\nuniform float uDOFPosition;\nuniform float uDOFStrength;\nuniform int leftRight;\n\nvoid main() {\n\n vec2 samples[64];\n samples[0] = vec2(0.857612, 0.019885);\n samples[1] = vec2(0.563809, -0.028071);\n samples[2] = vec2(0.825599, -0.346856);\n samples[3] = vec2(0.126584, -0.380959);\n samples[4] = vec2(0.782948, 0.594322);\n samples[5] = vec2(0.292148, -0.543265);\n samples[6] = vec2(0.130700, 0.330220);\n samples[7] = vec2(0.236088, 0.159604);\n samples[8] = vec2(-0.305259, 0.810505);\n samples[9] = vec2(0.269616, 0.923026);\n samples[10] = vec2(0.484486, 0.371845);\n samples[11] = vec2(-0.638057, 0.080447);\n samples[12] = vec2(0.199629, 0.667280);\n samples[13] = vec2(-0.861043, -0.370583);\n samples[14] = vec2(-0.040652, -0.996174);\n samples[15] = vec2(0.330458, -0.282111);\n samples[16] = vec2(0.647795, -0.214354);\n samples[17] = vec2(0.030422, -0.189908);\n samples[18] = vec2(0.177430, -0.721124);\n samples[19] = vec2(-0.461163, -0.327434);\n samples[20] = vec2(-0.410012, -0.734504);\n samples[21] = vec2(-0.616334, -0.626069);\n samples[22] = vec2(0.590759, -0.726479);\n samples[23] = vec2(-0.590794, 0.805365);\n samples[24] = vec2(-0.924561, -0.163739);\n samples[25] = vec2(-0.323028, 0.526960);\n samples[26] = vec2(0.642128, 0.752577);\n samples[27] = vec2(0.173625, -0.952386);\n samples[28] = vec2(0.759014, 0.330311);\n samples[29] = vec2(-0.360526, -0.032013);\n samples[30] = vec2(-0.035320, 0.968156);\n samples[31] = vec2(0.585478, -0.431068);\n samples[32] = vec2(-0.244766, -0.906947);\n samples[33] = vec2(-0.853096, 0.184615);\n samples[34] = vec2(-0.089061, 0.104648);\n samples[35] = vec2(-0.437613, 0.285308);\n samples[36] = vec2(-0.654098, 0.379841);\n samples[37] = vec2(-0.128663, 0.456572);\n samples[38] = vec2(0.015980, -0.568170);\n samples[39] = vec2(-0.043966, -0.771940);\n samples[40] = vec2(0.346512, -0.071238);\n samples[41] = vec2(-0.207921, -0.209121);\n samples[42] = vec2(-0.624075, -0.189224);\n samples[43] = vec2(-0.120618, 0.689339);\n samples[44] = vec2(-0.664679, -0.410200);\n samples[45] = vec2(0.371945, -0.880573);\n samples[46] = vec2(-0.743251, 0.629998);\n samples[47] = vec2(-0.191926, -0.413946);\n samples[48] = vec2(0.449574, 0.833373);\n samples[49] = vec2(0.299587, 0.449113);\n samples[50] = vec2(-0.900432, 0.399319);\n samples[51] = vec2(0.762613, -0.544796);\n samples[52] = vec2(0.606462, 0.174233);\n samples[53] = vec2(0.962185, -0.167019);\n samples[54] = vec2(0.960990, 0.249552);\n samples[55] = vec2(0.570397, 0.559146);\n samples[56] = vec2(-0.537514, 0.555019);\n samples[57] = vec2(0.108491, -0.003232);\n samples[58] = vec2(-0.237693, -0.615428);\n samples[59] = vec2(-0.217313, 0.261084);\n samples[60] = vec2(-0.998966, 0.025692);\n samples[61] = vec2(-0.418554, -0.527508);\n samples[62] = vec2(-0.822629, -0.567797);\n samples[63] = vec2(0.061945, 0.522105);\n\n float invRes = 1.0/uRes;\n vec2 coord = gl_FragCoord.xy * invRes;\n\n float strength = uDOFStrength * uRes/768.0;\n\n float depth = texture2D(uDepth, coord).r;\n float range = uDOFPosition - depth;\n float scale = abs(range);\n\n vec4 sample = texture2D(uColor, coord);\n float count = 1.0;\n for(int i = 0; i < 64; i++) {\n vec2 p = samples[i];\n p = coord + scale * 64.0 * strength * p * invRes;\n float d = texture2D(uDepth, p).r;\n float r = uDOFPosition - d;\n float s = abs(r);\n sample += texture2D(uColor, p) * s;\n count += s;\n }\n\n gl_FragColor = sample/count;\n}",fxaa:"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\n\nvoid main() {\n float FXAA_SPAN_MAX = 8.0;\n float FXAA_REDUCE_MUL = 1.0/8.0;\n float FXAA_REDUCE_MIN = 1.0/128.0;\n\n vec2 texCoords = gl_FragCoord.xy/uRes;\n\n vec4 rgbNW = texture2D(uTexture, texCoords + (vec2(-1.0, -1.0) / uRes));\n vec4 rgbNE = texture2D(uTexture, texCoords + (vec2(1.0, -1.0) / uRes));\n vec4 rgbSW = texture2D(uTexture, texCoords + (vec2(-1.0, 1.0) / uRes));\n vec4 rgbSE = texture2D(uTexture, texCoords + (vec2(1.0, 1.0) / uRes));\n vec4 rgbM = texture2D(uTexture, texCoords);\n\n vec4 luma = vec4(0.299, 0.587, 0.114, 1.0);\n float lumaNW = dot(rgbNW, luma);\n float lumaNE = dot(rgbNE, luma);\n float lumaSW = dot(rgbSW, luma);\n float lumaSE = dot(rgbSE, luma);\n float lumaM = dot(rgbM, luma);\n\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0/(min(abs(dir.x), abs(dir.y)) + dirReduce);\n\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX), dir * rcpDirMin)) / uRes;\n\n vec4 rgbA = (1.0/2.0) * \n (texture2D(uTexture, texCoords.xy + dir * (1.0/3.0 - 0.5)) + \n texture2D(uTexture, texCoords.xy + dir * (2.0/3.0 - 0.5)));\n vec4 rgbB = rgbA * (1.0/2.0) + (1.0/4.0) * \n (texture2D(uTexture, texCoords.xy + dir * (0.0/3.0 - 0.5)) +\n texture2D(uTexture, texCoords.xy + dir * (3.0/3.0 - 0.5)));\n float lumaB = dot(rgbB, luma);\n\n if((lumaB < lumaMin) || (lumaB > lumaMax)){\n gl_FragColor = rgbA;\n } else {\n gl_FragColor = rgbB;\n }\n\n}","textured-quad":"#version 100\nprecision highp float;\n\nattribute vec3 aPosition;\n\nvoid main() {\n gl_Position = vec4(aPosition, 1);\n}\n\n\n// __split__\n\n\n#version 100\nprecision highp float;\n\nuniform sampler2D uTexture;\nuniform float uRes;\n\nvoid main() {\n gl_FragColor = texture2D(uTexture, gl_FragCoord.xy/uRes);\n}\n"};t.exports={shaders:r}},function(t,n,e){"use strict";var r=e(8);t.exports=function(t){if(arguments.length>1)throw"Error: The Speck Interactions module has changed!";if(0===arguments.length||"object"!=typeof t)throw"Error: Arguments not provided to interactions";var n=void 0===t.scrollZoom||t.scrollZoom,e=t.container,o=t.getRotation,a=t.setRotation,i=t.getTranslation,u=t.setTranslation,s=t.getZoom,l=t.setZoom,c=t.refreshView,f={buttonDown:!1,shiftDown:!1,lastX:0,lastY:0};function h(t){0===t.button&&(f={buttonDown:!0,shiftDown:f.shiftDown,lastX:t.clientX,lastY:t.clientY})}function p(t){if(0===t.button){if(!f.buttonDown)return;f.buttonDown=!1}}function d(t){f.shiftDown=t.shiftKey}function m(t){if(f.buttonDown&&0!==t.buttons){t.preventDefault();var n=t.clientX-f.lastX,e=t.clientY-f.lastY;if(0!==n||0!==e){if(f.lastX=t.clientX,f.lastY=t.clientY,f.shiftDown){var l=i(),h=.001/s();u({x:l.x-n*h,y:l.y+e*h})}else{var p={rotation:new Float32Array(o())};r.rotate(p,n,e),a(p.rotation)}c()}}}function g(t){t.preventDefault(),l(s()*(t.deltaY<0?1/.9:.9)),c()}return e.addEventListener("mousedown",h),window.addEventListener("mouseup",p),window.addEventListener("keydown",d),window.addEventListener("keyup",d),window.addEventListener("mousemove",m),n&&e.addEventListener("wheel",g),function(){e.removeEventListener("mousedown",h),window.removeEventListener("mouseup",p),window.removeEventListener("keydown",d),window.removeEventListener("keyup",d),window.removeEventListener("mousemove",m),e.removeEventListener("wheel",g)}}},function(t,n){t.exports={default:{atomScale:.6,relativeAtomScale:1,bondScale:.5,ao:.75,aoRes:256,brightness:.5,outline:0,spf:32,bonds:!1,bondThreshold:1.2,bondShade:.5,atomShade:.5,dofStrength:0,dofPosition:.5,fxaa:1},stickball:{atomScale:.24,relativeAtomScale:.64,bondScale:.5,bonds:!0,bondThreshold:1.2},toon:{ao:0,spf:0,brightness:.5,outline:1},licorice:{atomScale:.1,relativeAtomScale:0,bondScale:1,bonds:!0,bondThreshold:1.2}}},function(t,n,e){"use strict";e.r(n);var r=e(10),o=e(18),a=e(1),i=e.n(a),u=e(0),s=e.n(u),l=e(22),c=e(43);function f(t){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,n){for(var e=0;e=0;)n=h[e],Object(i.a)(n,t)&&!d(r,n)&&(r[r.length]=n),e-=1;return r}):Object(s.a)(function(t){return Object(t)!==t?[]:Object.keys(t)}),g=Object(s.a)(function(t){return null===t?"Null":void 0===t?"Undefined":Object.prototype.toString.call(t).slice(8,-1)});function v(t,n,e,r){var i=o(t);function u(t,n){return y(t,n,e.slice(),r.slice())}return!a(function(t,n){return!a(u,n,t)},o(n),i)}function y(t,n,e,r){if(u(t,n))return!0;var o,a,s=g(t);if(s!==g(n))return!1;if(null==t||null==n)return!1;if("function"==typeof t["fantasy-land/equals"]||"function"==typeof n["fantasy-land/equals"])return"function"==typeof t["fantasy-land/equals"]&&t["fantasy-land/equals"](n)&&"function"==typeof n["fantasy-land/equals"]&&n["fantasy-land/equals"](t);if("function"==typeof t.equals||"function"==typeof n.equals)return"function"==typeof t.equals&&t.equals(n)&&"function"==typeof n.equals&&n.equals(t);switch(s){case"Arguments":case"Array":case"Object":if("function"==typeof t.constructor&&"Promise"===(o=t.constructor,null==(a=String(o).match(/^function (\w*)/))?"":a[1]))return t===n;break;case"Boolean":case"Number":case"String":if(typeof t!=typeof n||!u(t.valueOf(),n.valueOf()))return!1;break;case"Date":if(!u(t.valueOf(),n.valueOf()))return!1;break;case"Error":return t.name===n.name&&t.message===n.message;case"RegExp":if(t.source!==n.source||t.global!==n.global||t.ignoreCase!==n.ignoreCase||t.multiline!==n.multiline||t.sticky!==n.sticky||t.unicode!==n.unicode)return!1}for(var l=e.length-1;l>=0;){if(e[l]===t)return r[l]===n;l-=1}switch(s){case"Map":return t.size===n.size&&v(t.entries(),n.entries(),e.concat([t]),r.concat([n]));case"Set":return t.size===n.size&&v(t.values(),n.values(),e.concat([t]),r.concat([n]));case"Arguments":case"Array":case"Object":case"Boolean":case"Number":case"String":case"Date":case"Error":case"RegExp":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"ArrayBuffer":break;default:return!1}var c=m(t);if(c.length!==m(n).length)return!1;var f=e.concat([t]),h=r.concat([n]);for(l=c.length-1;l>=0;){var p=c[l];if(!Object(i.a)(p,n)||!y(n[p],t[p],f,h))return!1;l-=1}return!0}var b=Object(r.a)(function(t,n){return y(t,n,[],[])});n.a=b}]); \ No newline at end of file diff --git a/dash_bio/package-info.json b/dash_bio/package-info.json index 2f57f6db5..4333709cc 100644 --- a/dash_bio/package-info.json +++ b/dash_bio/package-info.json @@ -1 +1 @@ -{"name": "dash_bio", "version": "0.4.0", "author": "The Plotly Team "} \ No newline at end of file +{"name": "dash_bio", "version": "0.4.1", "author": "The Plotly Team "} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 55d7f094b..4cfd279e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dash-bio", - "version": "0.3.0", + "version": "0.4.0-rc3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6279,9 +6279,8 @@ } }, "fornac": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/fornac/-/fornac-1.1.8.tgz", - "integrity": "sha1-jlGBqAm5V60qULUrL0GtTeCDcwg=", + "version": "git://github.com/plotly/fornac.git#9868d6943344199761ba94341d3ef01961a01f7c", + "from": "git://github.com/plotly/fornac.git", "requires": { "d3": "~3.5.13", "jquery": "~2.2.0" diff --git a/package.json b/package.json index 81a7a83f4..29dac55b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dash-bio", - "version": "0.4.0", + "version": "0.4.1", "description": "Dash components for bioinformatics", "repository": { "type": "git", @@ -30,7 +30,7 @@ "dependencies": { "circos": "git+https://github.com/matthewchan15/circosJS.git#matthewchan15-zoom-pan-svg", "fast-memoize": "^2.5.1", - "fornac": "^1.1.8", + "fornac": "git://github.com/plotly/fornac.git#9868d6943344199761ba94341d3ef01961a01f7c", "ideogram": "git+https://github.com/eweitz/ideogram.git#7d9b2ab91b91ef35db93bdeb529d4760de63292f", "molecule-2d-for-react": "git://github.com/plotly/molecule-2d-for-react.git", "molecule-3d-for-react": "git://github.com/plotly/molecule-3d-for-react.git", @@ -85,4 +85,4 @@ "node": ">=8.11.0", "npm": ">=6.1.0" } -} \ No newline at end of file +}