2014-11-13 19:53:31 +01:00
! function ( ) { function n ( n , t ) { return t > n ? - 1 : n > t ? 1 : n >= t ? 0 : 0 / 0 } function t ( n ) { return null === n ? 0 / 0 : + n } function e ( n ) { return ! isNaN ( n ) } function r ( n ) { return { left : function ( t , e , r , u ) { for ( arguments . length < 3 && ( r = 0 ) , arguments . length < 4 && ( u = t . length ) ; u > r ; ) { var i = r + u >>> 1 ; n ( t [ i ] , e ) < 0 ? r = i + 1 : u = i } return r } , right : function ( t , e , r , u ) { for ( arguments . length < 3 && ( r = 0 ) , arguments . length < 4 && ( u = t . length ) ; u > r ; ) { var i = r + u >>> 1 ; n ( t [ i ] , e ) > 0 ? u = i : r = i + 1 } return r } } } function u ( n ) { return n . length } function i ( n ) { for ( var t = 1 ; n * t % 1 ; ) t *= 10 ; return t } function o ( n , t ) { for ( var e in t ) Object . defineProperty ( n . prototype , e , { value : t [ e ] , enumerable : ! 1 } ) } function a ( ) { this . _ = Object . create ( null ) } function c ( n ) { return ( n += "" ) === la || n [ 0 ] === sa ? sa + n : n } function l ( n ) { return ( n += "" ) [ 0 ] === sa ? n . slice ( 1 ) : n } function s ( n ) { return c ( n ) in this . _ } function f ( n ) { return ( n = c ( n ) ) in this . _ && delete this . _ [ n ] } function h ( ) { var n = [ ] ; for ( var t in this . _ ) n . push ( l ( t ) ) ; return n } function g ( ) { var n = 0 ; for ( var t in this . _ ) ++ n ; return n } function p ( ) { for ( var n in this . _ ) return ! 1 ; return ! 0 } function v ( ) { this . _ = Object . create ( null ) } function d ( n , t , e ) { return function ( ) { var r = e . apply ( t , arguments ) ; return r === t ? n : r } } function m ( n , t ) { if ( t in n ) return t ; t = t . charAt ( 0 ) . toUpperCase ( ) + t . slice ( 1 ) ; for ( var e = 0 , r = fa . length ; r > e ; ++ e ) { var u = fa [ e ] + t ; if ( u in n ) return u } } function y ( ) { } function x ( ) { } function M ( n ) { function t ( ) { for ( var t , r = e , u = - 1 , i = r . length ; ++ u < i ; ) ( t = r [ u ] . on ) && t . apply ( this , arguments ) ; return n } var e = [ ] , r = new a ; return t . on = function ( t , u ) { var i , o = r . get ( t ) ; return arguments . length < 2 ? o && o . on : ( o && ( o . on = null , e = e . slice ( 0 , i = e . indexOf ( o ) ) . concat ( e . slice ( i + 1 ) ) , r . remove ( t ) ) , u && e . push ( r . set ( t , { on : u } ) ) , n ) } , t } function _ ( ) { Bo . event . preventDefault ( ) } function b ( ) { for ( var n , t = Bo . event ; n = t . sourceEvent ; ) t = n ; return t } function w ( n ) { for ( var t = new x , e = 0 , r = arguments . length ; ++ e < r ; ) t [ arguments [ e ] ] = M ( t ) ; return t . of = function ( e , r ) { return function ( u ) { try { var i = u . sourceEvent = Bo . event ; u . target = n , Bo . event = u , t [ u . type ] . apply ( e , r ) } finally { Bo . event = i } } } , t } function S ( n ) { return ga ( n , ya ) , n } function k ( n ) { return "function" == typeof n ? n : function ( ) { return pa ( n , this ) } } function E ( n ) { return "function" == typeof n ? n : function ( ) { return va ( n , this ) } } function A ( n , t ) { function e ( ) { this . removeAttribute ( n ) } function r ( ) { this . removeAttributeNS ( n . space , n . local ) } function u ( ) { this . setAttribute ( n , t ) } function i ( ) { this . setAttributeNS ( n . space , n . local , t ) } function o ( ) { var e = t . apply ( this , arguments ) ; null == e ? this . removeAttribute ( n ) : this . setAttribute ( n , e ) } function a ( ) { var e = t . apply ( this , arguments ) ; null == e ? this . removeAttributeNS ( n . space , n . local ) : this . setAttributeNS ( n . space , n . local , e ) } return n = Bo . ns . qualify ( n ) , null == t ? n . local ? r : e : "function" == typeof t ? n . local ? a : o : n . local ? i : u } function C ( n ) { return n . trim ( ) . replace ( /\s+/g , " " ) } function N ( n ) { return new RegExp ( "(?:^|\\s+)" + Bo . requote ( n ) + "(?:\\s+|$)" , "g" ) } function z ( n ) { return ( n + "" ) . trim ( ) . split ( /^|\s+/ ) } function L ( n , t ) { function e ( ) { for ( var e = - 1 ; ++ e < u ; ) n [ e ] ( this , t ) } function r ( ) { for ( var e = - 1 , r = t . apply ( this , arguments ) ; ++ e < u ; ) n [ e ] ( this , r ) } n = z ( n ) . map ( T ) ; var u = n . length ; return "function" == typeof t ? r : e } function T ( n ) { var t = N ( n ) ; return function ( e , r ) { if ( u = e . classList ) return r ? u . add ( n ) : u . remove ( n ) ; var u = e . getAttribute ( "class" ) || "" ; r ? ( t . lastIndex = 0 , t . test ( u ) || e . setAttribute ( "class" , C ( u + " " + n ) ) ) : e . setAttribute ( "class" , C ( u . replace ( t , " " ) ) ) } } function q ( n , t , e ) { function r ( ) { this . style . removeProperty ( n ) } function u ( ) { this . style . setProperty ( n , t , e ) } function i ( ) { var r = t . apply ( this , arguments ) ; null == r ? this . style . removeProperty ( n ) : this . style . setProperty ( n , r , e ) } return null == t ? r : "function" == typeof t ? i : u } function R ( n , t ) { function e ( ) { delete this [ n ] } function r ( ) { this [ n ] = t } function u ( ) { var e = t . apply ( this , arguments ) ; null == e ? delete this [ n ] : this [ n ] = e } return null == t ? e : "function" == typeof t ? u : r } function D ( n ) { return "function" == typeof n ? n : ( n = Bo . ns . qualify ( n ) ) . local ? function ( ) { return this . ownerDocument . createElementNS ( n . space , n . local ) } : function ( ) { return this . ownerDocument . createElementNS ( this . namespaceURI , n ) } } function P ( n ) { return { _ _data _ _ : n } } function U ( n ) { return function ( ) { return ma ( this , n ) } } function j ( t ) { return arguments . length || ( t = n ) , function ( n , e ) { return n && e ? t ( n . _ _data _ _ , e . _ _data _ _ ) : ! n - ! e } } function F ( n , t ) { for ( var
( T * T / M > i || ca ( ( y * z + x * L ) / M - . 5 ) > . 3 || o > a * g + c * p + l * v ) && ( u ( t , e , r , a , c , l , C , N , E , _ /= S , b /= S , w , d , m ) , m . point ( C , N ) , u ( C , N , E , _ , b , w , s , f , h , g , p , v , d , m ) ) } } var i = . 5 , o = Math . cos ( 30 * La ) , a = 16 ; return t . precision = function ( n ) { return arguments . length ? ( a = ( i = n * n ) > 0 && 16 , t ) : Math . sqrt ( i ) } , t } function tr ( n ) { var t = nr ( function ( t , e ) { return n ( [ t * Ta , e * Ta ] ) } ) ; return function ( n ) { return or ( t ( n ) ) } } function er ( n ) { this . stream = n } function rr ( 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 ur ( n ) { return ir ( function ( ) { return n } ) ( ) } function ir ( n ) { function t ( n ) { return n = a ( n [ 0 ] * La , n [ 1 ] * La ) , [ n [ 0 ] * h + c , l - n [ 1 ] * h ] } function e ( n ) { return n = a . invert ( ( n [ 0 ] - c ) / h , ( l - n [ 1 ] ) / h ) , n && [ n [ 0 ] * Ta , n [ 1 ] * Ta ] } function r ( ) { a = Ye ( o = lr ( m , y , x ) , i ) ; var n = i ( v , d ) ; return c = g - n [ 0 ] * h , l = p + n [ 1 ] * h , u ( ) } function u ( ) { return s && ( s . valid = ! 1 , s = null ) , t } var i , o , a , c , l , s , f = nr ( function ( n , t ) { return n = i ( n , t ) , [ n [ 0 ] * h + c , l - n [ 1 ] * h ] } ) , h = 150 , g = 480 , p = 250 , v = 0 , d = 0 , m = 0 , y = 0 , x = 0 , M = Cc , _ = Et , b = null , w = null ; return t . stream = function ( n ) { return s && ( s . valid = ! 1 ) , s = or ( M ( o , f ( _ ( n ) ) ) ) , s . valid = ! 0 , s } , t . clipAngle = function ( n ) { return arguments . length ? ( M = null == n ? ( b = n , Cc ) : Fe ( ( b = + n ) * La ) , u ( ) ) : b } , t . clipExtent = function ( n ) { return arguments . length ? ( w = n , _ = n ? Oe ( n [ 0 ] [ 0 ] , n [ 0 ] [ 1 ] , n [ 1 ] [ 0 ] , n [ 1 ] [ 1 ] ) : Et , u ( ) ) : w } , t . scale = function ( n ) { return arguments . length ? ( h = + n , r ( ) ) : h } , t . translate = function ( n ) { return arguments . length ? ( g = + n [ 0 ] , p = + n [ 1 ] , r ( ) ) : [ g , p ] } , t . center = function ( n ) { return arguments . length ? ( v = n [ 0 ] % 360 * La , d = n [ 1 ] % 360 * La , r ( ) ) : [ v * Ta , d * Ta ] } , t . rotate = function ( n ) { return arguments . length ? ( m = n [ 0 ] % 360 * La , y = n [ 1 ] % 360 * La , x = n . length > 2 ? n [ 2 ] % 360 * La : 0 , r ( ) ) : [ m * Ta , y * Ta , x * Ta ] } , Bo . rebind ( t , f , "precision" ) , function ( ) { return i = n . apply ( this , arguments ) , t . invert = i . invert && e , r ( ) } } function or ( n ) { return rr ( n , function ( t , e ) { n . point ( t * La , e * La ) } ) } function ar ( n , t ) { return [ n , t ] } function cr ( n , t ) { return [ n > Ea ? n - Aa : - Ea > n ? n + Aa : n , t ] } function lr ( n , t , e ) { return n ? t || e ? Ye ( fr ( n ) , hr ( t , e ) ) : fr ( n ) : t || e ? hr ( t , e ) : cr } function sr ( n ) { return function ( t , e ) { return t += n , [ t > Ea ? t - Aa : - Ea > t ? t + Aa : t , e ] } } function fr ( n ) { var t = sr ( n ) ; return t . invert = sr ( - n ) , t } function hr ( n , t ) { function e ( n , t ) { var e = Math . cos ( t ) , a = Math . cos ( n ) * e , c = Math . sin ( n ) * e , l = Math . sin ( t ) , s = l * r + a * u ; return [ Math . atan2 ( c * i - s * o , a * r - l * u ) , nt ( s * i + c * o ) ] } var r = Math . cos ( n ) , u = Math . sin ( n ) , i = Math . cos ( t ) , o = Math . sin ( t ) ; return e . invert = function ( n , t ) { var e = Math . cos ( t ) , a = Math . cos ( n ) * e , c = Math . sin ( n ) * e , l = Math . sin ( t ) , s = l * i - c * o ; return [ Math . atan2 ( c * i + l * o , a * r + s * u ) , nt ( s * r - a * u ) ] } , e } function gr ( n , t ) { var e = Math . cos ( n ) , r = Math . sin ( n ) ; return function ( u , i , o , a ) { var c = o * t ; null != u ? ( u = pr ( e , u ) , i = pr ( e , i ) , ( o > 0 ? i > u : u > i ) && ( u += o * Aa ) ) : ( u = n + o * Aa , i = n - . 5 * c ) ; for ( var l , s = u ; o > 0 ? s > i : i > s ; s -= c ) a . point ( ( l = Me ( [ e , - r * Math . cos ( s ) , - r * Math . sin ( s ) ] ) ) [ 0 ] , l [ 1 ] ) } } function pr ( n , t ) { var e = pe ( t ) ; e [ 0 ] -= n , xe ( e ) ; var r = Q ( - e [ 1 ] ) ; return ( ( - e [ 2 ] < 0 ? - r : r ) + 2 * Math . PI - Na ) % ( 2 * Math . PI ) } function vr ( n , t , e ) { var r = Bo . range ( n , t - Na , e ) . concat ( t ) ; return function ( n ) { return r . map ( function ( t ) { return [ n , t ] } ) } } function dr ( n , t , e ) { var r = Bo . range ( n , t - Na , e ) . concat ( t ) ; return function ( n ) { return r . map ( function ( t ) { return [ t , n ] } ) } } function mr ( n ) { return n . source } function yr ( n ) { return n . target } function xr ( n , t , e , r ) { var u = Math . cos ( t ) , i = Math . sin ( t ) , o = Math . cos ( r ) , a = Math . sin ( r ) , c = u * Math . cos ( n ) , l = u * Math . sin ( n ) , s = o * Math . cos ( e ) , f = o * Math . sin ( e ) , h = 2 * Math . asin ( Math . sqrt ( ut ( r - t ) + u * o * ut ( e - n ) ) ) , g = 1 / Math . sin ( h ) , p = h ? function ( n ) { var t = Math . sin ( n *= h ) * g , e = Math . sin ( h - n ) * g , r = e * c + t * s , u = e * l + t * f , o = e * i + t * a ; return [ Math . atan2 ( u , r ) * Ta , Math . atan2 ( o , Math . sqrt ( r * r + u * u ) ) * Ta ] } : function ( ) { return [ n * Ta , t * Ta ] } ; return p . distance = h , p } function Mr ( ) { function n ( n , u ) { var i = Math . sin ( u *= La ) , o = Math . cos ( u ) , a = ca ( ( n *= La ) - t ) , c = Math . cos ( a ) ; Fc += Math . atan2 ( Math . sqrt ( ( a = o * Math . sin ( a ) ) * a + ( a = r * i - e * o * c ) * a ) , e * i + r * o * c ) , t = n , e = i , r = o } var t , e , r ; Hc . point = function ( u , i ) { t = u * La , e = Math . sin ( i *= La ) , r = Math . cos ( i ) , Hc . point = n } , Hc . lineEnd = function ( ) { Hc . point = Hc . lineEnd = y } } function _r ( n , t ) { function e ( t , e ) { var r = Math . cos ( t ) , u = Math . cos ( e ) , i = n ( r * u ) ; return [ i * u * Math . sin ( t ) , i * Math . sin ( e ) ] } return e . invert = function ( n , e ) { var r = Math . sqrt ( n * n + e * e ) , u = t ( r ) , i = Math . sin ( u ) , o = Math . cos ( u ) ; return [ Math . atan2 ( n * i , r * o ) , Math . asi
} ) , Bo . timer ( function ( ) { return p . c = c ( r || 1 ) ? Ae : c , 1 } , 0 , o ) , void 0 ) } function c ( r ) { if ( u . active !== e ) return l ( ) ; for ( var o = r / g , a = f ( o ) , c = v . length ; c > 0 ; ) v [ -- c ] . call ( n , a ) ; return o >= 1 ? ( i . event && i . event . end . call ( n , s , t ) , l ( ) ) : void 0 } function l ( ) { return -- u . count ? delete u [ e ] : delete n . _ _transition _ _ , 1 } var s = n . _ _data _ _ , f = i . ease , h = i . delay , g = i . duration , p = Ka , v = [ ] ; return p . t = h + o , r >= h ? a ( r - h ) : ( p . c = a , void 0 ) } , 0 , o ) } } function Oo ( n , t , e ) { n . attr ( "transform" , function ( n ) { var r = t ( n ) ; return "translate(" + ( isFinite ( r ) ? r : e ( n ) ) + ",0)" } ) } function Yo ( n , t , e ) { n . attr ( "transform" , function ( n ) { var r = t ( n ) ; return "translate(0," + ( isFinite ( r ) ? r : e ( n ) ) + ")" } ) } function Io ( n ) { return n . toISOString ( ) } function Zo ( n , t , e ) { function r ( t ) { return n ( t ) } function u ( n , e ) { var r = n [ 1 ] - n [ 0 ] , u = r / e , i = Bo . bisect ( Ol , u ) ; return i == Ol . length ? [ t . year , Zi ( n . map ( function ( n ) { return n / 31536e6 } ) , e ) [ 2 ] ] : i ? t [ u / Ol [ i - 1 ] < Ol [ i ] / u ? i - 1 : i ] : [ Zl , Zi ( n , e ) [ 2 ] ] } return r . invert = function ( t ) { return Vo ( n . invert ( t ) ) } , r . domain = function ( t ) { return arguments . length ? ( n . domain ( t ) , r ) : n . domain ( ) . map ( Vo ) } , r . nice = function ( n , t ) { function e ( e ) { return ! isNaN ( e ) && ! n . range ( e , Vo ( + e + 1 ) , t ) . length } var i = r . domain ( ) , o = Di ( i ) , a = null == n ? u ( o , 10 ) : "number" == typeof n && u ( o , n ) ; return a && ( n = a [ 0 ] , t = a [ 1 ] ) , r . domain ( ji ( i , t > 1 ? { floor : function ( t ) { for ( ; e ( t = n . floor ( t ) ) ; ) t = Vo ( t - 1 ) ; return t } , ceil : function ( t ) { for ( ; e ( t = n . ceil ( t ) ) ; ) t = Vo ( + t + 1 ) ; return t } } : n ) ) } , r . ticks = function ( n , t ) { var e = Di ( r . domain ( ) ) , i = null == n ? u ( e , 10 ) : "number" == typeof n ? u ( e , n ) : ! n . range && [ { range : n } , t ] ; return i && ( n = i [ 0 ] , t = i [ 1 ] ) , n . range ( e [ 0 ] , Vo ( + e [ 1 ] + 1 ) , 1 > t ? 1 : t ) } , r . tickFormat = function ( ) { return e } , r . copy = function ( ) { return Zo ( n . copy ( ) , t , e ) } , Yi ( r , n ) } function Vo ( n ) { return new Date ( n ) } function Xo ( n ) { return JSON . parse ( n . responseText ) } function $o ( n ) { var t = Go . createRange ( ) ; return t . selectNode ( Go . body ) , t . createContextualFragment ( n . responseText ) } var Bo = { version : "3.4.13" } ; Date . now || ( Date . now = function ( ) { return + new Date } ) ; var Wo = [ ] . slice , Jo = function ( n ) { return Wo . call ( n ) } , Go = document , Ko = Go . documentElement , Qo = window ; try { Jo ( Ko . childNodes ) [ 0 ] . nodeType } catch ( na ) { Jo = function ( n ) { for ( var t = n . length , e = new Array ( t ) ; t -- ; ) e [ t ] = n [ t ] ; return e } } try { Go . createElement ( "div" ) . style . setProperty ( "opacity" , 0 , "" ) } catch ( ta ) { var ea = Qo . Element . prototype , ra = ea . setAttribute , ua = ea . setAttributeNS , ia = Qo . CSSStyleDeclaration . prototype , oa = ia . setProperty ; ea . setAttribute = function ( n , t ) { ra . call ( this , n , t + "" ) } , ea . setAttributeNS = function ( n , t , e ) { ua . call ( this , n , t , e + "" ) } , ia . setProperty = function ( n , t , e ) { oa . call ( this , n , t + "" , e ) } } Bo . ascending = n , Bo . descending = function ( n , t ) { return n > t ? - 1 : t > n ? 1 : t >= n ? 0 : 0 / 0 } , Bo . min = function ( n , t ) { var e , r , u = - 1 , i = n . length ; if ( 1 === arguments . length ) { for ( ; ++ u < i && ! ( null != ( e = n [ u ] ) && e >= e ) ; ) e = void 0 ; for ( ; ++ u < i ; ) null != ( r = n [ u ] ) && e > r && ( e = r ) } else { for ( ; ++ u < i && ! ( null != ( e = t . call ( n , n [ u ] , u ) ) && e >= e ) ; ) e = void 0 ; for ( ; ++ u < i ; ) null != ( r = t . call ( n , n [ u ] , u ) ) && e > r && ( e = r ) } return e } , Bo . max = function ( n , t ) { var e , r , u = - 1 , i = n . length ; if ( 1 === arguments . length ) { for ( ; ++ u < i && ! ( null != ( e = n [ u ] ) && e >= e ) ; ) e = void 0 ; for ( ; ++ u < i ; ) null != ( r = n [ u ] ) && r > e && ( e = r ) } else { for ( ; ++ u < i && ! ( null != ( e = t . call ( n , n [ u ] , u ) ) && e >= e ) ; ) e = void 0 ; for ( ; ++ u < i ; ) null != ( r = t . call ( n , n [ u ] , u ) ) && r > e && ( e = r ) } return e } , Bo . extent = function ( n , t ) { var e , r , u , i = - 1 , o = n . length ; if ( 1 === arguments . length ) { for ( ; ++ i < o && ! ( null != ( e = u = n [ i ] ) && e >= e ) ; ) e = u = void 0 ; for ( ; ++ i < o ; ) null != ( r = n [ i ] ) && ( e > r && ( e = r ) , r > u && ( u = r ) ) } else { for ( ; ++ i < o && ! ( null != ( e = u = t . call ( n , n [ i ] , i ) ) && e >= e ) ; ) e = void 0 ; for ( ; ++ i < o ; ) null != ( r = t . call ( n , n [ i ] , i ) ) && ( e > r && ( e = r ) , r > u && ( u = r ) ) } return [ e , u ] } , Bo . sum = function ( n , t ) { var r , u = 0 , i = n . length , o = - 1 ; if ( 1 === arguments . length ) for ( ; ++ o < i ; ) e ( r = + n [ o ] ) && ( u += r ) ; else for ( ; ++ o < i ; ) e ( r = + t . call ( n , n [ o ] , o ) ) && ( u += r ) ; return u } , Bo . mean = function ( n , r ) { var u , i = 0 , o = n . length , a = - 1 , c = o ; if ( 1 === arguments . length ) for ( ; ++ a < o ; ) e ( u = t ( n [ a ] ) ) ? i += u : -- c ; else for ( ; ++ a < o ; ) e ( u = t ( r . call ( n , n [ a ] , a ) ) ) ? i += u : -- c ; return c ? i / c : void 0 } , Bo . quantile = function ( n , t ) { var e = ( n . length - 1 ) * t + 1 , r = Math . floor ( e ) , u = + n [ r - 1 ] , i = e - r ; return i ? u + i * ( n [ r ] - u ) : u } , Bo . median = function ( r , u ) { var i , o = [ ] , a = r . length , c = - 1 ; if ( 1 === arguments . length ) for ( ; ++ c < a ; ) e ( i = t ( r [ c ] ) ) && o . push ( i ) ; else for ( ; ++ c < a ; ) e ( i = t ( u . call ( r , r [ c ] , c ) ) ) && o . push ( i ) ; return o . length ? Bo . quantile ( o . sort ( n ) , . 5 ) : void 0 } ; var aa = r ( n ) ; Bo . bisectLeft = aa . left , Bo . bisect = Bo . bisectRight = aa .
var t = x . length ; if ( t ) { x . sort ( c ) ; for ( var e , r = 1 , u = x [ 0 ] , i = [ u ] ; t > r ; ++ r ) e = x [ r ] , l ( e [ 0 ] , u ) || l ( e [ 1 ] , u ) ? ( a ( u [ 0 ] , e [ 1 ] ) > a ( u [ 0 ] , u [ 1 ] ) && ( u [ 1 ] = e [ 1 ] ) , a ( e [ 0 ] , u [ 1 ] ) > a ( u [ 0 ] , u [ 1 ] ) && ( u [ 0 ] = e [ 0 ] ) ) : i . push ( u = e ) ; for ( var o , e , p = - 1 / 0 , t = i . length - 1 , r = 0 , u = i [ t ] ; t >= r ; u = e , ++ r ) e = i [ r ] , ( o = a ( u [ 1 ] , e [ 0 ] ) ) > p && ( p = o , s = e [ 0 ] , h = u [ 1 ] ) } return x = M = null , 1 / 0 === s || 1 / 0 === f ? [ [ 0 / 0 , 0 / 0 ] , [ 0 / 0 , 0 / 0 ] ] : [ [ s , f ] , [ h , g ] ] } } ( ) , Bo . geo . centroid = function ( n ) { dc = mc = yc = xc = Mc = _c = bc = wc = Sc = kc = Ec = 0 , Bo . geo . stream ( n , Ac ) ; var t = Sc , e = kc , r = Ec , u = t * t + e * e + r * r ; return za > u && ( t = _c , e = bc , r = wc , Na > mc && ( t = yc , e = xc , r = Mc ) , u = t * t + e * e + r * r , za > u ) ? [ 0 / 0 , 0 / 0 ] : [ Math . atan2 ( e , t ) * Ta , nt ( r / Math . sqrt ( u ) ) * Ta ] } ; var dc , mc , yc , xc , Mc , _c , bc , wc , Sc , kc , Ec , Ac = { sphere : y , point : be , lineStart : Se , lineEnd : ke , polygonStart : function ( ) { Ac . lineStart = Ee } , polygonEnd : function ( ) { Ac . lineStart = Se } } , Cc = Le ( Ae , De , Ue , [ - Ea , - Ea / 2 ] ) , Nc = 1e9 ; Bo . geo . clipExtent = function ( ) { var n , t , e , r , u , i , o = { stream : function ( n ) { return u && ( u . valid = ! 1 ) , u = i ( n ) , u . valid = ! 0 , u } , extent : function ( a ) { return arguments . length ? ( i = Oe ( n = + a [ 0 ] [ 0 ] , t = + a [ 0 ] [ 1 ] , e = + a [ 1 ] [ 0 ] , r = + a [ 1 ] [ 1 ] ) , u && ( u . valid = ! 1 , u = null ) , o ) : [ [ n , t ] , [ e , r ] ] } } ; return o . extent ( [ [ 0 , 0 ] , [ 960 , 500 ] ] ) } , ( Bo . geo . conicEqualArea = function ( ) { return Ie ( Ze ) } ) . raw = Ze , Bo . geo . albers = function ( ) { return Bo . geo . conicEqualArea ( ) . rotate ( [ 96 , 0 ] ) . center ( [ - . 6 , 38.7 ] ) . parallels ( [ 29.5 , 45.5 ] ) . scale ( 1070 ) } , Bo . geo . albersUsa = function ( ) { function n ( n ) { var i = n [ 0 ] , o = n [ 1 ] ; return t = null , e ( i , o ) , t || ( r ( i , o ) , t ) || u ( i , o ) , t } var t , e , r , u , i = Bo . geo . albers ( ) , o = Bo . geo . conicEqualArea ( ) . rotate ( [ 154 , 0 ] ) . center ( [ - 2 , 58.5 ] ) . parallels ( [ 55 , 65 ] ) , a = Bo . geo . conicEqualArea ( ) . rotate ( [ 157 , 0 ] ) . center ( [ - 3 , 19.9 ] ) . parallels ( [ 8 , 18 ] ) , c = { point : function ( n , e ) { t = [ n , e ] } } ; return n . invert = function ( n ) { var t = i . scale ( ) , e = i . translate ( ) , r = ( n [ 0 ] - e [ 0 ] ) / t , u = ( n [ 1 ] - e [ 1 ] ) / t ; return ( u >= . 12 && . 234 > u && r >= - . 425 && - . 214 > r ? o : u >= . 166 && . 234 > u && r >= - . 214 && - . 115 > r ? a : i ) . invert ( n ) } , n . stream = function ( n ) { var t = i . stream ( n ) , e = o . stream ( n ) , r = a . stream ( n ) ; return { point : function ( n , u ) { t . point ( n , u ) , e . point ( n , u ) , r . point ( n , u ) } , 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 ? ( i . precision ( t ) , o . precision ( t ) , a . precision ( t ) , n ) : i . precision ( ) } , n . scale = function ( t ) { return arguments . length ? ( i . scale ( t ) , o . scale ( . 35 * t ) , a . scale ( t ) , n . translate ( i . translate ( ) ) ) : i . scale ( ) } , n . translate = function ( t ) { if ( ! arguments . length ) return i . translate ( ) ; var l = i . scale ( ) , s = + t [ 0 ] , f = + t [ 1 ] ; return e = i . translate ( t ) . clipExtent ( [ [ s - . 455 * l , f - . 238 * l ] , [ s + . 455 * l , f + . 238 * l ] ] ) . stream ( c ) . point , r = o . translate ( [ s - . 307 * l , f + . 201 * l ] ) . clipExtent ( [ [ s - . 425 * l + Na , f + . 12 * l + Na ] , [ s - . 214 * l - Na , f + . 234 * l - Na ] ] ) . stream ( c ) . point , u = a . translate ( [ s - . 205 * l , f + . 212 * l ] ) . clipExtent ( [ [ s - . 214 * l + Na , f + . 166 * l + Na ] , [ s - . 115 * l - Na , f + . 234 * l - Na ] ] ) . stream ( c ) . point , n } , n . scale ( 1070 ) } ; var zc , Lc , Tc , qc , Rc , Dc , Pc = { point : y , lineStart : y , lineEnd : y , polygonStart : function ( ) { Lc = 0 , Pc . lineStart = Ve } , polygonEnd : function ( ) { Pc . lineStart = Pc . lineEnd = Pc . point = y , zc += ca ( Lc / 2 ) } } , Uc = { point : Xe , lineStart : y , lineEnd : y , polygonStart : y , polygonEnd : y } , jc = { point : We , lineStart : Je , lineEnd : Ge , polygonStart : function ( ) { jc . lineStart = Ke } , polygonEnd : function ( ) { jc . point = We , jc . lineStart = Je , jc . lineEnd = Ge } } ; Bo . geo . path = function ( ) { function n ( n ) { return n && ( "function" == typeof a && i . pointRadius ( + a . apply ( this , arguments ) ) , o && o . valid || ( o = u ( i ) ) , Bo . geo . stream ( n , o ) ) , i . result ( ) } function t ( ) { return o = null , n } var e , r , u , i , o , a = 4.5 ; return n . area = function ( n ) { return zc = 0 , Bo . geo . stream ( n , u ( Pc ) ) , zc } , n . centroid = function ( n ) { return yc = xc = Mc = _c = bc = wc = Sc = kc = Ec = 0 , Bo . geo . stream ( n , u ( jc ) ) , Ec ? [ Sc / Ec , kc / Ec ] : wc ? [ _c / wc , bc / wc ] : Mc ? [ yc / Mc , xc / Mc ] : [ 0 / 0 , 0 / 0 ] } , n . bounds = function ( n ) { return Rc = Dc = - ( Tc = qc = 1 / 0 ) , Bo . geo . stream ( n , u ( Uc ) ) , [ [ Tc , qc ] , [ Rc , Dc ] ] } , n . projection = function ( n ) { return arguments . length ? ( u = ( e = n ) ? n . stream || tr ( n ) : Et , t ( ) ) : e } , n . context = function ( n ) { return arguments . length ? ( i = null == ( r = n ) ? new $e : new Qe ( n ) , "function" != typeof a && i . pointRadius ( a ) , t ( ) ) : r } , n . pointRadius = function ( t ) { return arguments . length ? ( a = "function" == typeof t ? t : ( i . pointR
} , Bo . scale . quantize = function ( ) { return no ( 0 , 1 , [ 0 , 1 ] ) } , Bo . scale . threshold = function ( ) { return to ( [ . 5 ] , [ 0 , 1 ] ) } , Bo . scale . identity = function ( ) { return eo ( [ 0 , 1 ] ) } , Bo . svg = { } , Bo . svg . arc = function ( ) { function n ( ) { var n = t . apply ( this , arguments ) , i = e . apply ( this , arguments ) , o = r . apply ( this , arguments ) + _l , a = u . apply ( this , arguments ) + _l , c = ( o > a && ( c = o , o = a , a = c ) , a - o ) , l = Ea > c ? "0" : "1" , s = Math . cos ( o ) , f = Math . sin ( o ) , h = Math . cos ( a ) , g = Math . sin ( a ) ; return c >= bl ? n ? "M0," + i + "A" + i + "," + i + " 0 1,1 0," + - i + "A" + i + "," + i + " 0 1,1 0," + i + "M0," + n + "A" + n + "," + n + " 0 1,0 0," + - n + "A" + n + "," + n + " 0 1,0 0," + n + "Z" : "M0," + i + "A" + i + "," + i + " 0 1,1 0," + - i + "A" + i + "," + i + " 0 1,1 0," + i + "Z" : n ? "M" + i * s + "," + i * f + "A" + i + "," + i + " 0 " + l + ",1 " + i * h + "," + i * g + "L" + n * h + "," + n * g + "A" + n + "," + n + " 0 " + l + ",0 " + n * s + "," + n * f + "Z" : "M" + i * s + "," + i * f + "A" + i + "," + i + " 0 " + l + ",1 " + i * h + "," + i * g + "L0,0" + "Z" } var t = ro , e = uo , r = io , u = oo ; return n . innerRadius = function ( e ) { return arguments . length ? ( t = kt ( e ) , n ) : t } , n . outerRadius = function ( t ) { return arguments . length ? ( e = kt ( t ) , n ) : e } , n . startAngle = function ( t ) { return arguments . length ? ( r = kt ( t ) , n ) : r } , n . endAngle = function ( t ) { return arguments . length ? ( u = kt ( t ) , n ) : u } , n . centroid = function ( ) { var n = ( t . apply ( this , arguments ) + e . apply ( this , arguments ) ) / 2 , i = ( r . apply ( this , arguments ) + u . apply ( this , arguments ) ) / 2 + _l ; return [ Math . cos ( i ) * n , Math . sin ( i ) * n ] } , n } ; var _l = - Ca , bl = Aa - Na ; Bo . svg . line = function ( ) { return ao ( Et ) } ; var wl = Bo . map ( { linear : co , "linear-closed" : lo , step : so , "step-before" : fo , "step-after" : ho , basis : xo , "basis-open" : Mo , "basis-closed" : _o , bundle : bo , cardinal : vo , "cardinal-open" : go , "cardinal-closed" : po , monotone : Co } ) ; wl . forEach ( function ( n , t ) { t . key = n , t . closed = /-closed$/ . test ( n ) } ) ; var Sl = [ 0 , 2 / 3 , 1 / 3 , 0 ] , kl = [ 0 , 1 / 3 , 2 / 3 , 0 ] , El = [ 0 , 1 / 6 , 2 / 3 , 1 / 6 ] ; Bo . svg . line . radial = function ( ) { var n = ao ( No ) ; return n . radius = n . x , delete n . x , n . angle = n . y , delete n . y , n } , fo . reverse = ho , ho . reverse = fo , Bo . svg . area = function ( ) { return zo ( Et ) } , Bo . svg . area . radial = function ( ) { var n = zo ( No ) ; return n . radius = n . x , delete n . x , n . innerRadius = n . x0 , delete n . x0 , n . outerRadius = n . x1 , delete n . x1 , n . angle = n . y , delete n . y , n . startAngle = n . y0 , delete n . y0 , n . endAngle = n . y1 , delete n . y1 , n } , Bo . svg . chord = function ( ) { function n ( n , a ) { var c = t ( this , i , n , a ) , l = t ( this , o , n , a ) ; return "M" + c . p0 + r ( c . r , c . p1 , c . a1 - c . a0 ) + ( e ( c , l ) ? u ( c . r , c . p1 , c . r , c . p0 ) : u ( c . r , c . p1 , l . r , l . p0 ) + r ( l . r , l . p1 , l . a1 - l . a0 ) + u ( l . r , l . p1 , c . r , c . p0 ) ) + "Z" } function t ( n , t , e , r ) { var u = t . call ( n , e , r ) , i = a . call ( n , u , r ) , o = c . call ( n , u , r ) + _l , s = l . call ( n , u , r ) + _l ; return { r : i , a0 : o , a1 : s , p0 : [ i * Math . cos ( o ) , i * Math . sin ( o ) ] , p1 : [ i * Math . cos ( s ) , i * Math . sin ( s ) ] } } function e ( n , t ) { return n . a0 == t . a0 && n . a1 == t . a1 } function r ( n , t , e ) { return "A" + n + "," + n + " 0 " + + ( e > Ea ) + ",1 " + t } function u ( n , t , e , r ) { return "Q 0,0 " + r } var i = mr , o = yr , a = Lo , c = io , l = oo ; return n . radius = function ( t ) { return arguments . length ? ( a = kt ( t ) , n ) : a } , n . source = function ( t ) { return arguments . length ? ( i = kt ( t ) , n ) : i } , n . target = function ( t ) { return arguments . length ? ( o = kt ( t ) , n ) : o } , n . startAngle = function ( t ) { return arguments . length ? ( c = kt ( t ) , n ) : c } , n . endAngle = function ( t ) { return arguments . length ? ( l = kt ( t ) , n ) : l } , n } , Bo . svg . diagonal = function ( ) { function n ( n , u ) { var i = t . call ( this , n , u ) , o = e . call ( this , n , u ) , a = ( i . y + o . y ) / 2 , c = [ i , { x : i . x , y : a } , { x : o . x , y : a } , o ] ; return c = c . map ( r ) , "M" + c [ 0 ] + "C" + c [ 1 ] + " " + c [ 2 ] + " " + c [ 3 ] } var t = mr , e = yr , r = To ; return n . source = function ( e ) { return arguments . length ? ( t = kt ( e ) , n ) : t } , n . target = function ( t ) { return arguments . length ? ( e = kt ( t ) , n ) : e } , n . projection = function ( t ) { return arguments . length ? ( r = t , n ) : r } , n } , Bo . svg . diagonal . radial = function ( ) { var n = Bo . svg . diagonal ( ) , t = To , e = n . projection ; return n . projection = function ( n ) { return arguments . length ? e ( qo ( t = n ) ) : t } , n } , Bo . svg . symbol = function ( ) { function n ( n , r ) { return ( Al . get ( t . call ( this , n , r ) ) || Po ) ( e . call ( this , n , r ) ) } var t = Do , e = Ro ; return n . type = function ( e ) { return arguments . length ? ( t = kt ( e ) , n ) : t } , n . size = function ( t ) { return arguments . length ? ( e = kt ( t ) , n ) : e } , n } ; var Al = Bo . map ( { circle : Po , 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 * Ll ) ) , e = t * Ll ; return "M0," + - t + "L" + e + ",0" + " 0," + t + " " + - e + ",0" + "Z" } , 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 ) {
! function ( e ) { if ( "object" == typeof exports && "undefined" != typeof module ) module . exports = e ( ) ; else if ( "function" == typeof define && define . amd ) define ( [ ] , e ) ; else { var f ; "undefined" != typeof window ? f = window : "undefined" != typeof global ? f = global : "undefined" != typeof self && ( f = self ) , f . dagreD3 = e ( ) } } ( function ( ) { var define , module , exports ; return function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ( { 1 : [ function ( require , module , exports ) { / * *
* @ license
* Copyright ( c ) 2012 - 2013 Chris Pettitt
*
* Permission is hereby granted , free of charge , to any person obtaining a copy
* of this software and associated documentation files ( the "Software" ) , to deal
* in the Software without restriction , including without limitation the rights
* to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
* copies of the Software , and to permit persons to whom the Software is
* furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED "AS IS" , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
* LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE .
* /
2014-11-21 08:03:43 +01:00
module . exports = { graphlib : require ( "./lib/graphlib" ) , dagre : require ( "./lib/dagre" ) , intersect : require ( "./lib/intersect" ) , render : require ( "./lib/render" ) , util : require ( "./lib/util" ) , version : require ( "./lib/version" ) } } , { "./lib/dagre" : 8 , "./lib/graphlib" : 9 , "./lib/intersect" : 10 , "./lib/render" : 23 , "./lib/util" : 25 , "./lib/version" : 26 } ] , 2 : [ function ( require , module , exports ) { var util = require ( "./util" ) ; module . exports = { "default" : normal , normal : normal , vee : vee } ; function normal ( parent , id , edge , type ) { var marker = parent . append ( "marker" ) . attr ( "id" , id ) . attr ( "viewBox" , "0 0 10 10" ) . attr ( "refX" , 9 ) . attr ( "refY" , 5 ) . attr ( "markerUnits" , "strokeWidth" ) . attr ( "markerWidth" , 8 ) . attr ( "markerHeight" , 6 ) . attr ( "orient" , "auto" ) ; var path = marker . append ( "path" ) . attr ( "d" , "M 0 0 L 10 5 L 0 10 z" ) . style ( "stroke-width" , 1 ) . style ( "stroke-dasharray" , "1,0" ) ; util . applyStyle ( path , edge [ type + "Style" ] ) } function vee ( parent , id , edge , type ) { var marker = parent . append ( "marker" ) . attr ( "id" , id ) . attr ( "viewBox" , "0 0 10 10" ) . attr ( "refX" , 9 ) . attr ( "refY" , 5 ) . attr ( "markerUnits" , "strokeWidth" ) . attr ( "markerWidth" , 8 ) . attr ( "markerHeight" , 6 ) . attr ( "orient" , "auto" ) ; var path = marker . append ( "path" ) . attr ( "d" , "M 0 0 L 10 5 L 0 10 L 4 5 z" ) . style ( "stroke-width" , 1 ) . style ( "stroke-dasharray" , "1,0" ) ; util . applyStyle ( path , edge [ type + "Style" ] ) } } , { "./util" : 25 } ] , 3 : [ function ( require , module , exports ) { var util = require ( "./util" ) ; module . exports = createClusters ; function createClusters ( selection , g ) { var clusters = g . nodes ( ) . filter ( function ( v ) { return util . isSubgraph ( g , v ) } ) , svgClusters = selection . selectAll ( "g.cluster" ) . data ( clusters , function ( v ) { return v } ) ; svgClusters . enter ( ) . append ( "g" ) . attr ( "class" , "cluster" ) . style ( "opacity" , 0 ) . append ( "rect" ) ; util . applyTransition ( svgClusters . exit ( ) , g ) . style ( "opacity" , 0 ) . remove ( ) ; util . applyTransition ( svgClusters , g ) . style ( "opacity" , 1 ) ; util . applyTransition ( svgClusters . selectAll ( "rect" ) , g ) . attr ( "width" , function ( v ) { return g . node ( v ) . width } ) . attr ( "height" , function ( v ) { return g . node ( v ) . height } ) . attr ( "x" , function ( v ) { var node = g . node ( v ) ; return node . x - node . width / 2 } ) . attr ( "y" , function ( v ) { var node = g . node ( v ) ; return node . y - node . height / 2 } ) } } , { "./util" : 25 } ] , 4 : [ function ( require , module , exports ) { "use strict" ; var _ = require ( "./lodash" ) , addLabel = require ( "./label/add-label" ) , util = require ( "./util" ) , d3 = require ( "./d3" ) ; module . exports = createEdgeLabels ; function createEdgeLabels ( selection , g ) { var svgEdgeLabels = selection . selectAll ( "g.edgeLabel" ) . data ( g . edges ( ) , function ( e ) { return util . edgeToId ( e ) } ) . classed ( "update" , true ) ; svgEdgeLabels . selectAll ( "*" ) . remove ( ) ; svgEdgeLabels . enter ( ) . append ( "g" ) . classed ( "edgeLabel" , true ) . style ( "opacity" , 0 ) ; svgEdgeLabels . each ( function ( e ) { var edge = g . edge ( e ) , label = addLabel ( d3 . select ( this ) , g . edge ( e ) , 0 , 0 ) . classed ( "label" , true ) , bbox = label . node ( ) . getBBox ( ) ; if ( edge . labelId ) { label . attr ( "id" , edge . labelId ) } if ( ! _ . has ( edge , "width" ) ) { edge . width = bbox . width } if ( ! _ . has ( edge , "height" ) ) { edge . height = bbox . height } } ) ; util . applyTransition ( svgEdgeLabels . exit ( ) , g ) . style ( "opacity" , 0 ) . remove ( ) ; return svgEdgeLabels } } , { "./d3" : 7 , "./label/add-label" : 18 , "./lodash" : 20 , "./util" : 25 } ] , 5 : [ function ( require , module , exports ) { "use strict" ; var _ = require ( "./lodash" ) , intersectNode = require ( "./intersect/intersect-node" ) , util = require ( "./util" ) , d3 = require ( "./d3" ) ; module . exports = createEdgePaths ; function createEdgePaths ( selection , g , arrows ) { var svgPaths = selection . selectAll ( "g.edgePath" ) . data ( g . edges ( ) , function ( e ) { return util . edgeToId ( e ) } ) . classed ( "update" , true ) ; enter ( svgPaths , g ) ; exit ( svgPaths , g ) ; util . applyTransition ( svgPaths , g ) . style ( "opacity" , 1 ) ; svgPaths . selectAll ( "path.path" ) . each ( function ( e ) { var edge = g . edge ( e ) ; edge . arrowheadId = _ . uniqueId ( "arrowhead" ) ; var domEdge = d3 . select ( this ) . attr ( "marker-end" , function ( ) { return "url(#" + edge . arrowheadId + ")" } ) . style ( "fill" , "none" ) ; util . applyTransition ( domEdge , g ) . attr ( "d" , function ( e ) { return calcPoints ( g , e ) } ) ; if ( edge . id ) { domEdge . attr ( "id" , edge . id ) } util . applyStyle ( domEdge , edge . style ) } ) ; svgPaths . selectAll ( "defs *" ) . remove ( ) ; svgPaths . selectAll ( "defs" ) . each ( function ( e ) { var edge = g . edge ( e ) , arrowhead = arrows [ edge . arrowhead ] ; arrowhead ( d3 . select ( this ) , edge . arrowheadId , edge , "arrowhead" ) } ) ; return svgPaths } function calcPoints ( g , e ) { var edge = g . edg
2014-11-13 19:53:31 +01:00
} _ . each ( g . nodes ( ) , function ( v ) { getExtremes ( g . node ( v ) ) } ) ; _ . each ( g . edges ( ) , function ( e ) { var edge = g . edge ( e ) ; if ( _ . has ( edge , "x" ) ) { getExtremes ( edge ) } } ) ; minX -= marginX ; minY -= marginY ; _ . each ( g . nodes ( ) , function ( v ) { var node = g . node ( v ) ; node . x -= minX ; node . y -= minY } ) ; _ . each ( g . edges ( ) , function ( e ) { var edge = g . edge ( e ) ; _ . each ( edge . points , function ( p ) { p . x -= minX ; p . y -= minY } ) ; if ( _ . has ( edge , "x" ) ) { edge . x -= minX } if ( _ . has ( edge , "y" ) ) { edge . y -= minY } } ) ; graphLabel . width = maxX - minX + marginX ; graphLabel . height = maxY - minY + marginY } function assignNodeIntersects ( g ) { _ . each ( g . edges ( ) , function ( e ) { var edge = g . edge ( e ) , nodeV = g . node ( e . v ) , nodeW = g . node ( e . w ) , p1 , p2 ; if ( ! edge . points ) { edge . points = [ ] ; p1 = nodeW ; p2 = nodeV } else { p1 = edge . points [ 0 ] ; p2 = edge . points [ edge . points . length - 1 ] } edge . points . unshift ( util . intersectRect ( nodeV , p1 ) ) ; edge . points . push ( util . intersectRect ( nodeW , p2 ) ) } ) } function fixupEdgeLabelCoords ( g ) { _ . each ( g . edges ( ) , function ( e ) { var edge = g . edge ( e ) ; if ( _ . has ( edge , "x" ) ) { if ( edge . labelpos === "l" || edge . labelpos === "r" ) { edge . width -= edge . labeloffset } switch ( edge . labelpos ) { case "l" : edge . x -= edge . width / 2 + edge . labeloffset ; break ; case "r" : edge . x += edge . width / 2 + edge . labeloffset ; break } } } ) } function reversePointsForReversedEdges ( g ) { _ . each ( g . edges ( ) , function ( e ) { var edge = g . edge ( e ) ; if ( edge . reversed ) { edge . points . reverse ( ) } } ) } function removeBorderNodes ( g ) { _ . each ( g . nodes ( ) , function ( v ) { if ( g . children ( v ) . length ) { var node = g . node ( v ) , t = g . node ( node . borderTop ) , b = g . node ( node . borderBottom ) , l = g . node ( _ . last ( node . borderLeft ) ) , r = g . node ( _ . last ( node . borderRight ) ) ; node . width = Math . abs ( r . x - l . x ) ; node . height = Math . abs ( b . y - t . y ) ; node . x = l . x + node . width / 2 ; node . y = t . y + node . height / 2 } } ) ; _ . each ( g . nodes ( ) , function ( v ) { if ( g . node ( v ) . dummy === "border" ) { g . removeNode ( v ) } } ) } function removeSelfEdges ( g ) { _ . each ( g . edges ( ) , function ( e ) { if ( e . v === e . w ) { var node = g . node ( e . v ) ; if ( ! node . selfEdges ) { node . selfEdges = [ ] } node . selfEdges . push ( { e : e , label : g . edge ( e ) } ) ; g . removeEdge ( e ) } } ) } function insertSelfEdges ( g ) { var layers = util . buildLayerMatrix ( g ) ; _ . each ( layers , function ( layer ) { var orderShift = 0 ; _ . each ( layer , function ( v , i ) { var node = g . node ( v ) ; node . order = i + orderShift ; _ . each ( node . selfEdges , function ( selfEdge ) { util . addDummyNode ( g , "selfedge" , { width : selfEdge . label . width , height : selfEdge . label . height , rank : node . rank , order : i + ++ orderShift , e : selfEdge . e , label : selfEdge . label } , "_se" ) } ) ; delete node . selfEdges } ) } ) } function positionSelfEdges ( g ) { _ . each ( g . nodes ( ) , function ( v ) { var node = g . node ( v ) ; if ( node . dummy === "selfedge" ) { var selfNode = g . node ( node . e . v ) , x = selfNode . x + selfNode . width / 2 , y = selfNode . y , dx = node . x - x , dy = selfNode . height / 2 ; g . setEdge ( node . e , node . label ) ; g . removeNode ( v ) ; node . label . points = [ { x : x + 2 * dx / 3 , y : y - dy } , { x : x + 5 * dx / 6 , y : y - dy } , { x : x + dx , y : y } , { x : x + 5 * dx / 6 , y : y + dy } , { x : x + 2 * dx / 3 , y : y + dy } ] ; node . label . x = node . x ; node . label . y = node . y } } ) } function selectNumberAttrs ( obj , attrs ) { return _ . mapValues ( _ . pick ( obj , attrs ) , Number ) } function canonicalize ( attrs ) { var newAttrs = { } ; _ . each ( attrs , function ( v , k ) { newAttrs [ k . toLowerCase ( ) ] = v } ) ; return newAttrs } } , { "./acyclic" : 28 , "./add-border-segments" : 29 , "./coordinate-system" : 30 , "./graphlib" : 33 , "./lodash" : 36 , "./nesting-graph" : 37 , "./normalize" : 38 , "./order" : 43 , "./parent-dummy-chains" : 48 , "./position" : 50 , "./rank" : 52 , "./util" : 55 } ] , 36 : [ function ( require , module , exports ) { module . exports = require ( 20 ) } , { "/Users/cpettitt/projects/dagre-d3/lib/lodash.js" : 20 , lodash : 77 } ] , 37 : [ function ( require , module , exports ) { var _ = require ( "./lodash" ) , util = require ( "./util" ) ; module . exports = { run : run , cleanup : cleanup } ; function run ( g ) { var root = util . addDummyNode ( g , "root" , { } , "_root" ) , depths = treeDepths ( g ) , height = _ . max ( depths ) - 1 , nodeSep = 2 * height + 1 ; g . graph ( ) . nestingRoot = root ; _ . each ( g . edges ( ) , function ( e ) { g . edge ( e ) . minlen *= nodeSep } ) ; var weight = sumWeights ( g ) + 1 ; _ . each ( g . children ( ) , function ( child ) { dfs ( g , root , nodeSep , weight , height , depths , child ) } ) ; g . graph ( ) . nodeRankFactor = nodeSep } function dfs ( g , root , nodeSep , weight , height , depths , v ) { var children = g . children ( v ) ; if ( ! children . length ) { if ( v !== root ) { g . setEdge ( root , v , { weight : 0 , minlen : nodeSep } ) } return } var top = util . addBorderNode ( g , "_bt" ) , bottom = util . addBorderNode ( g , "_bb" ) , label = g . node ( v ) ; g . setParent ( top , v ) ; label . borderTop = top ; g . setParent ( bottom , v ) ; label . borderBottom = bottom ; _ . each ( children , function ( c
2014-11-21 08:03:43 +01:00
} ) ) ; _ . each ( g . nodes ( ) , function ( v ) { var node = g . node ( v ) ; if ( _ . has ( node , "rank" ) ) { node . rank -= min } } ) } function removeEmptyRanks ( g ) { var offset = _ . min ( _ . map ( g . nodes ( ) , function ( v ) { return g . node ( v ) . rank } ) ) ; var layers = [ ] ; _ . each ( g . nodes ( ) , function ( v ) { var rank = g . node ( v ) . rank - offset ; if ( ! _ . has ( layers , rank ) ) { layers [ rank ] = [ ] } layers [ rank ] . push ( v ) } ) ; var delta = 0 , nodeRankFactor = g . graph ( ) . nodeRankFactor ; _ . each ( layers , function ( vs , i ) { if ( _ . isUndefined ( vs ) && i % nodeRankFactor !== 0 ) { -- delta } else if ( delta ) { _ . each ( vs , function ( v ) { g . node ( v ) . rank += delta } ) } } ) } function addBorderNode ( g , prefix , rank , order ) { var node = { width : 0 , height : 0 } ; if ( arguments . length >= 4 ) { node . rank = rank ; node . order = order } return addDummyNode ( g , "border" , node , prefix ) } function maxRank ( g ) { return _ . max ( _ . map ( g . nodes ( ) , function ( v ) { var rank = g . node ( v ) . rank ; if ( ! _ . isUndefined ( rank ) ) { return rank } } ) ) } function partition ( collection , fn ) { var result = { lhs : [ ] , rhs : [ ] } ; _ . each ( collection , function ( value ) { if ( fn ( value ) ) { result . lhs . push ( value ) } else { result . rhs . push ( value ) } } ) ; return result } function time ( name , fn ) { var start = _ . now ( ) ; try { return fn ( ) } finally { console . log ( name + " time: " + ( _ . now ( ) - start ) + "ms" ) } } function notime ( name , fn ) { return fn ( ) } } , { "./graphlib" : 33 , "./lodash" : 36 } ] , 56 : [ function ( require , module , exports ) { module . exports = "0.6.1" } , { } ] , 57 : [ function ( require , module , exports ) { var lib = require ( "./lib" ) ; module . exports = { Graph : lib . Graph , json : require ( "./lib/json" ) , alg : require ( "./lib/alg" ) , version : lib . version } } , { "./lib" : 73 , "./lib/alg" : 64 , "./lib/json" : 74 } ] , 58 : [ function ( require , module , exports ) { var _ = require ( "../lodash" ) ; module . exports = components ; function components ( g ) { var visited = { } , cmpts = [ ] , cmpt ; function dfs ( v ) { if ( _ . has ( visited , v ) ) return ; visited [ v ] = true ; cmpt . push ( v ) ; _ . each ( g . successors ( v ) , dfs ) ; _ . each ( g . predecessors ( v ) , dfs ) } _ . each ( g . nodes ( ) , function ( v ) { cmpt = [ ] ; dfs ( v ) ; if ( cmpt . length ) { cmpts . push ( cmpt ) } } ) ; return cmpts } } , { "../lodash" : 75 } ] , 59 : [ function ( require , module , exports ) { var _ = require ( "../lodash" ) ; module . exports = dfs ; function dfs ( g , vs , order ) { if ( ! _ . isArray ( vs ) ) { vs = [ vs ] } var acc = [ ] , visited = { } ; _ . each ( vs , function ( v ) { if ( ! g . hasNode ( v ) ) { throw new Error ( "Graph does not have node: " + v ) } doDfs ( g , v , order === "post" , visited , acc ) } ) ; return acc } function doDfs ( g , v , postorder , visited , acc ) { if ( ! _ . has ( visited , v ) ) { visited [ v ] = true ; if ( ! postorder ) { acc . push ( v ) } _ . each ( g . neighbors ( v ) , function ( w ) { doDfs ( g , w , postorder , visited , acc ) } ) ; if ( postorder ) { acc . push ( v ) } } } } , { "../lodash" : 75 } ] , 60 : [ function ( require , module , exports ) { var dijkstra = require ( "./dijkstra" ) , _ = require ( "../lodash" ) ; module . exports = dijkstraAll ; function dijkstraAll ( g , weightFunc , edgeFunc ) { return _ . transform ( g . nodes ( ) , function ( acc , v ) { acc [ v ] = dijkstra ( g , v , weightFunc , edgeFunc ) } , { } ) } } , { "../lodash" : 75 , "./dijkstra" : 61 } ] , 61 : [ function ( require , module , exports ) { var _ = require ( "../lodash" ) , PriorityQueue = require ( "../data/priority-queue" ) ; module . exports = dijkstra ; var DEFAULT _WEIGHT _FUNC = _ . constant ( 1 ) ; function dijkstra ( g , source , weightFn , edgeFn ) { return runDijkstra ( g , String ( source ) , weightFn || DEFAULT _WEIGHT _FUNC , edgeFn || function ( v ) { return g . outEdges ( v ) } ) } function runDijkstra ( g , source , weightFn , edgeFn ) { var results = { } , pq = new PriorityQueue , v , vEntry ; var updateNeighbors = function ( edge ) { var w = edge . v !== v ? edge . v : edge . w , wEntry = results [ w ] , weight = weightFn ( edge ) , distance = vEntry . distance + weight ; if ( weight < 0 ) { throw new Error ( "dijkstra does not allow negative edge weights. " + "Bad edge: " + edge + " Weight: " + weight ) } if ( distance < wEntry . distance ) { wEntry . distance = distance ; wEntry . predecessor = v ; pq . decrease ( w , distance ) } } ; g . nodes ( ) . forEach ( function ( v ) { var distance = v === source ? 0 : Number . POSITIVE _INFINITY ; results [ v ] = { distance : distance } ; pq . add ( v , distance ) } ) ; while ( pq . size ( ) > 0 ) { v = pq . removeMin ( ) ; vEntry = results [ v ] ; if ( vEntry . distance === Number . POSITIVE _INFINITY ) { break } edgeFn ( v ) . forEach ( updateNeighbors ) } return results } } , { "../data/priority-queue" : 71 , "../lodash" : 75 } ] , 62 : [ function ( require , module , exports ) { var _ = require ( "../lodash" ) , tarjan = require ( "./tarjan" ) ; module . exports = findCycles ; function findCycles ( g ) { return _ . filter ( tarjan ( g ) , function ( cmpt ) { return cmpt . length > 1 } ) } } , { "../lodash" : 75 , "./tarjan" : 69 } ] , 63 : [ function ( require , module , exports ) { var _ = require ( "../lodash" ) ; module . exports = f
} } var initedStack = ! stackA ; stackA || ( stackA = getArray ( ) ) ; stackB || ( stackB = getArray ( ) ) ; var length = stackA . length ; while ( length -- ) { if ( stackA [ length ] == a ) { return stackB [ length ] == b } } var size = 0 ; result = true ; stackA . push ( a ) ; stackB . push ( b ) ; if ( isArr ) { length = a . length ; size = b . length ; result = size == length ; if ( result || isWhere ) { while ( size -- ) { var index = length , value = b [ size ] ; if ( isWhere ) { while ( index -- ) { if ( result = baseIsEqual ( a [ index ] , value , callback , isWhere , stackA , stackB ) ) { break } } } else if ( ! ( result = baseIsEqual ( a [ size ] , value , callback , isWhere , stackA , stackB ) ) ) { break } } } } else { forIn ( b , function ( value , key , b ) { if ( hasOwnProperty . call ( b , key ) ) { size ++ ; return result = hasOwnProperty . call ( a , key ) && baseIsEqual ( a [ key ] , value , callback , isWhere , stackA , stackB ) } } ) ; if ( result && ! isWhere ) { forIn ( a , function ( value , key , a ) { if ( hasOwnProperty . call ( a , key ) ) { return result = -- size > - 1 } } ) } } stackA . pop ( ) ; stackB . pop ( ) ; if ( initedStack ) { releaseArray ( stackA ) ; releaseArray ( stackB ) } return result } function baseMerge ( object , source , callback , stackA , stackB ) { ( isArray ( source ) ? forEach : forOwn ) ( source , function ( source , key ) { var found , isArr , result = source , value = object [ key ] ; if ( source && ( ( isArr = isArray ( source ) ) || isPlainObject ( source ) ) ) { var stackLength = stackA . length ; while ( stackLength -- ) { if ( found = stackA [ stackLength ] == source ) { value = stackB [ stackLength ] ; break } } if ( ! found ) { var isShallow ; if ( callback ) { result = callback ( value , source ) ; if ( isShallow = typeof result != "undefined" ) { value = result } } if ( ! isShallow ) { value = isArr ? isArray ( value ) ? value : [ ] : isPlainObject ( value ) ? value : { } } stackA . push ( source ) ; stackB . push ( value ) ; if ( ! isShallow ) { baseMerge ( value , source , callback , stackA , stackB ) } } } else { if ( callback ) { result = callback ( value , source ) ; if ( typeof result == "undefined" ) { result = source } } if ( typeof result != "undefined" ) { value = result } } object [ key ] = value } ) } function baseRandom ( min , max ) { return min + floor ( nativeRandom ( ) * ( max - min + 1 ) ) } function baseUniq ( array , isSorted , callback ) { var index = - 1 , indexOf = getIndexOf ( ) , length = array ? array . length : 0 , result = [ ] ; var isLarge = ! isSorted && length >= largeArraySize && indexOf === baseIndexOf , seen = callback || isLarge ? getArray ( ) : result ; if ( isLarge ) { var cache = createCache ( seen ) ; indexOf = cacheIndexOf ; seen = cache } while ( ++ index < length ) { var value = array [ index ] , computed = callback ? callback ( value , index , array ) : value ; if ( isSorted ? ! index || seen [ seen . length - 1 ] !== computed : indexOf ( seen , computed ) < 0 ) { if ( callback || isLarge ) { seen . push ( computed ) } result . push ( value ) } } if ( isLarge ) { releaseArray ( seen . array ) ; releaseObject ( seen ) } else if ( callback ) { releaseArray ( seen ) } return result } function createAggregator ( setter ) { return function ( collection , callback , thisArg ) { var result = { } ; callback = lodash . createCallback ( callback , thisArg , 3 ) ; var index = - 1 , length = collection ? collection . length : 0 ; if ( typeof length == "number" ) { while ( ++ index < length ) { var value = collection [ index ] ; setter ( result , value , callback ( value , index , collection ) , collection ) } } else { forOwn ( collection , function ( value , key , collection ) { setter ( result , value , callback ( value , key , collection ) , collection ) } ) } return result } } function createWrapper ( func , bitmask , partialArgs , partialRightArgs , thisArg , arity ) { var isBind = bitmask & 1 , isBindKey = bitmask & 2 , isCurry = bitmask & 4 , isCurryBound = bitmask & 8 , isPartial = bitmask & 16 , isPartialRight = bitmask & 32 ; if ( ! isBindKey && ! isFunction ( func ) ) { throw new TypeError } if ( isPartial && ! partialArgs . length ) { bitmask &= ~ 16 ; isPartial = partialArgs = false } if ( isPartialRight && ! partialRightArgs . length ) { bitmask &= ~ 32 ; isPartialRight = partialRightArgs = false } var bindData = func && func . _ _bindData _ _ ; if ( bindData && bindData !== true ) { bindData = slice ( bindData ) ; if ( bindData [ 2 ] ) { bindData [ 2 ] = slice ( bindData [ 2 ] ) } if ( bindData [ 3 ] ) { bindData [ 3 ] = slice ( bindData [ 3 ] ) } if ( isBind && ! ( bindData [ 1 ] & 1 ) ) { bindData [ 4 ] = thisArg } if ( ! isBind && bindData [ 1 ] & 1 ) { bitmask |= 8 } if ( isCurry && ! ( bindData [ 1 ] & 4 ) ) { bindData [ 5 ] = arity } if ( isPartial ) { push . apply ( bindData [ 2 ] || ( bindData [ 2 ] = [ ] ) , partialArgs ) } if ( isPartialRight ) { unshift . apply ( bindData [ 3 ] || ( bindData [ 3 ] = [ ] ) , partialRightArgs ) } bindData [ 1 ] |= bitmask ; return createWrapper . apply ( null , bindData ) } var creater = bitmask == 1 || bitmask === 17 ? baseBind : baseCreateWrapper ; return creater ( [ func , bitmask , partialArgs , partialRightArgs , thisArg , arity ] ) } function escapeHtmlChar ( match ) { return htmlEscapes [ match ] } functi
func = null ; return result } } function partial ( func ) { return createWrapper ( func , 16 , slice ( arguments , 1 ) ) } function partialRight ( func ) { return createWrapper ( func , 32 , null , slice ( arguments , 1 ) ) } function throttle ( func , wait , options ) { var leading = true , trailing = true ; if ( ! isFunction ( func ) ) { throw new TypeError } if ( options === false ) { leading = false } else if ( isObject ( options ) ) { leading = "leading" in options ? options . leading : leading ; trailing = "trailing" in options ? options . trailing : trailing } debounceOptions . leading = leading ; debounceOptions . maxWait = wait ; debounceOptions . trailing = trailing ; return debounce ( func , wait , debounceOptions ) } function wrap ( value , wrapper ) { return createWrapper ( wrapper , 16 , [ value ] ) } function constant ( value ) { return function ( ) { return value } } function createCallback ( func , thisArg , argCount ) { var type = typeof func ; if ( func == null || type == "function" ) { return baseCreateCallback ( func , thisArg , argCount ) } if ( type != "object" ) { return property ( func ) } var props = keys ( func ) , key = props [ 0 ] , a = func [ key ] ; if ( props . length == 1 && a === a && ! isObject ( a ) ) { return function ( object ) { var b = object [ key ] ; return a === b && ( a !== 0 || 1 / a == 1 / b ) } } return function ( object ) { var length = props . length , result = false ; while ( length -- ) { if ( ! ( result = baseIsEqual ( object [ props [ length ] ] , func [ props [ length ] ] , null , true ) ) ) { break } } return result } } function escape ( string ) { return string == null ? "" : String ( string ) . replace ( reUnescapedHtml , escapeHtmlChar ) } function identity ( value ) { return value } function mixin ( object , source , options ) { var chain = true , methodNames = source && functions ( source ) ; if ( ! source || ! options && ! methodNames . length ) { if ( options == null ) { options = source } ctor = lodashWrapper ; source = object ; object = lodash ; methodNames = functions ( source ) } if ( options === false ) { chain = false } else if ( isObject ( options ) && "chain" in options ) { chain = options . chain } var ctor = object , isFunc = isFunction ( ctor ) ; forEach ( methodNames , function ( methodName ) { var func = object [ methodName ] = source [ methodName ] ; if ( isFunc ) { ctor . prototype [ methodName ] = function ( ) { var chainAll = this . _ _chain _ _ , value = this . _ _wrapped _ _ , args = [ value ] ; push . apply ( args , arguments ) ; var result = func . apply ( object , args ) ; if ( chain || chainAll ) { if ( value === result && isObject ( result ) ) { return this } result = new ctor ( result ) ; result . _ _chain _ _ = chainAll } return result } } } ) } function noConflict ( ) { context . _ = oldDash ; return this } function noop ( ) { } var now = isNative ( now = Date . now ) && now || function ( ) { return ( new Date ) . getTime ( ) } ; var parseInt = nativeParseInt ( whitespace + "08" ) == 8 ? nativeParseInt : function ( value , radix ) { return nativeParseInt ( isString ( value ) ? value . replace ( reLeadingSpacesAndZeros , "" ) : value , radix || 0 ) } ; function property ( key ) { return function ( object ) { return object [ key ] } } function random ( min , max , floating ) { var noMin = min == null , noMax = max == null ; if ( floating == null ) { if ( typeof min == "boolean" && noMax ) { floating = min ; min = 1 } else if ( ! noMax && typeof max == "boolean" ) { floating = max ; noMax = true } } if ( noMin && noMax ) { max = 1 } min = + min || 0 ; if ( noMax ) { max = min ; min = 0 } else { max = + max || 0 } if ( floating || min % 1 || max % 1 ) { var rand = nativeRandom ( ) ; return nativeMin ( min + rand * ( max - min + parseFloat ( "1e-" + ( ( rand + "" ) . length - 1 ) ) ) , max ) } return baseRandom ( min , max ) } function result ( object , key ) { if ( object ) { var value = object [ key ] ; return isFunction ( value ) ? object [ key ] ( ) : value } } function template ( text , data , options ) { var settings = lodash . templateSettings ; text = String ( text || "" ) ; options = defaults ( { } , options , settings ) ; var imports = defaults ( { } , options . imports , settings . imports ) , importsKeys = keys ( imports ) , importsValues = values ( imports ) ; var isEvaluating , index = 0 , interpolate = options . interpolate || reNoMatch , source = "__p += '" ; var reDelimiters = RegExp ( ( options . escape || reNoMatch ) . source + "|" + interpolate . source + "|" + ( interpolate === reInterpolate ? reEsTemplate : reNoMatch ) . source + "|" + ( options . evaluate || reNoMatch ) . source + "|$" , "g" ) ; text . replace ( reDelimiters , function ( match , escapeValue , interpolateValue , esTemplateValue , evaluateValue , offset ) { interpolateValue || ( interpolateValue = esTemplateValue ) ; source += text . slice ( index , offset ) . replace ( reUnescapedString , escapeStringChar ) ; if ( escapeValue ) { source += "' +\n__e(" + escapeValue + ") +\n'" } if ( evaluateValue ) { isEvaluating = true ; source += "';\n" + evaluateValue + ";\n__p += '" } if ( interpolateValue ) { source += "' +\n((__t = (" + interpolateValue + " ) ) == null
2014-12-23 18:06:07 +01:00
! function e ( t , r , n ) { function i ( u , o ) { if ( ! r [ u ] ) { if ( ! t [ u ] ) { var s = "function" == typeof require && require ; if ( ! o && s ) return s ( u , ! 0 ) ; if ( a ) return a ( u , ! 0 ) ; throw new Error ( "Cannot find module '" + u + "'" ) } var c = r [ u ] = { exports : { } } ; t [ u ] [ 0 ] . call ( c . exports , function ( e ) { var r = t [ u ] [ 1 ] [ e ] ; return i ( r ? r : e ) } , c , c . exports , e , t , r , n ) } return r [ u ] . exports } for ( var a = "function" == typeof require && require , u = 0 ; u < n . length ; u ++ ) i ( n [ u ] ) ; return i } ( { 1 : [ function ( e , t ) { t . exports = { graphlib : e ( "./lib/graphlib" ) , dagre : e ( "./lib/dagre" ) , intersect : e ( "./lib/intersect" ) , render : e ( "./lib/render" ) , util : e ( "./lib/util" ) , version : e ( "./lib/version" ) } } , { "./lib/dagre" : 8 , "./lib/graphlib" : 9 , "./lib/intersect" : 10 , "./lib/render" : 23 , "./lib/util" : 25 , "./lib/version" : 26 } ] , 2 : [ function ( e , t ) { function r ( e , t , r , n ) { var a = e . append ( "marker" ) . attr ( "id" , t ) . attr ( "viewBox" , "0 0 10 10" ) . attr ( "refX" , 9 ) . attr ( "refY" , 5 ) . attr ( "markerUnits" , "strokeWidth" ) . attr ( "markerWidth" , 8 ) . attr ( "markerHeight" , 6 ) . attr ( "orient" , "auto" ) , u = a . append ( "path" ) . attr ( "d" , "M 0 0 L 10 5 L 0 10 z" ) . style ( "stroke-width" , 1 ) . style ( "stroke-dasharray" , "1,0" ) ; i . applyStyle ( u , r [ n + "Style" ] ) } function n ( e , t , r , n ) { var a = e . append ( "marker" ) . attr ( "id" , t ) . attr ( "viewBox" , "0 0 10 10" ) . attr ( "refX" , 9 ) . attr ( "refY" , 5 ) . attr ( "markerUnits" , "strokeWidth" ) . attr ( "markerWidth" , 8 ) . attr ( "markerHeight" , 6 ) . attr ( "orient" , "auto" ) , u = a . append ( "path" ) . attr ( "d" , "M 0 0 L 10 5 L 0 10 L 4 5 z" ) . style ( "stroke-width" , 1 ) . style ( "stroke-dasharray" , "1,0" ) ; i . applyStyle ( u , r [ n + "Style" ] ) } var i = e ( "./util" ) ; t . exports = { "default" : r , normal : r , vee : n } } , { "./util" : 25 } ] , 3 : [ function ( e , t ) { function r ( e , t ) { var r = t . nodes ( ) . filter ( function ( e ) { return n . isSubgraph ( t , e ) } ) , i = e . selectAll ( "g.cluster" ) . data ( r , function ( e ) { return e } ) ; i . enter ( ) . append ( "g" ) . attr ( "class" , "cluster" ) . style ( "opacity" , 0 ) . append ( "rect" ) , n . applyTransition ( i . exit ( ) , t ) . style ( "opacity" , 0 ) . remove ( ) , n . applyTransition ( i , t ) . style ( "opacity" , 1 ) , n . applyTransition ( i . selectAll ( "rect" ) , t ) . attr ( "width" , function ( e ) { return t . node ( e ) . width } ) . attr ( "height" , function ( e ) { return t . node ( e ) . height } ) . attr ( "x" , function ( e ) { var r = t . node ( e ) ; return r . x - r . width / 2 } ) . attr ( "y" , function ( e ) { var r = t . node ( e ) ; return r . y - r . height / 2 } ) } var n = e ( "./util" ) ; t . exports = r } , { "./util" : 25 } ] , 4 : [ function ( e , t ) { "use strict" ; function r ( e , t ) { var r = e . selectAll ( "g.edgeLabel" ) . data ( t . edges ( ) , function ( e ) { return a . edgeToId ( e ) } ) . classed ( "update" , ! 0 ) ; return r . selectAll ( "*" ) . remove ( ) , r . enter ( ) . append ( "g" ) . classed ( "edgeLabel" , ! 0 ) . style ( "opacity" , 0 ) , r . each ( function ( e ) { var r = t . edge ( e ) , a = i ( u . select ( this ) , t . edge ( e ) , 0 , 0 ) . classed ( "label" , ! 0 ) , o = a . node ( ) . getBBox ( ) ; r . labelId && a . attr ( "id" , r . labelId ) , n . has ( r , "width" ) || ( r . width = o . width ) , n . has ( r , "height" ) || ( r . height = o . height ) } ) , a . applyTransition ( r . exit ( ) , t ) . style ( "opacity" , 0 ) . remove ( ) , r } var n = e ( "./lodash" ) , i = e ( "./label/add-label" ) , a = e ( "./util" ) , u = e ( "./d3" ) ; t . exports = r } , { "./d3" : 7 , "./label/add-label" : 18 , "./lodash" : 20 , "./util" : 25 } ] , 5 : [ function ( e , t ) { "use strict" ; function r ( e , t , r ) { var i = e . selectAll ( "g.edgePath" ) . data ( t . edges ( ) , function ( e ) { return l . edgeToId ( e ) } ) . classed ( "update" , ! 0 ) ; return u ( i , t ) , o ( i , t ) , l . applyTransition ( i , t ) . style ( "opacity" , 1 ) , i . selectAll ( "path.path" ) . each ( function ( e ) { var r = t . edge ( e ) ; r . arrowheadId = s . uniqueId ( "arrowhead" ) ; var i = h . select ( this ) . attr ( "marker-end" , function ( ) { return "url(#" + r . arrowheadId + ")" } ) . style ( "fill" , "none" ) ; l . applyTransition ( i , t ) . attr ( "d" , function ( e ) { return n ( t , e ) } ) , r . id && i . attr ( "id" , r . id ) , l . applyStyle ( i , r . style ) } ) , i . selectAll ( "defs *" ) . remove ( ) , i . selectAll ( "defs" ) . each ( function ( e ) { var n = t . edge ( e ) , i = r [ n . arrowhead ] ; i ( h . select ( this ) , n . arrowheadId , n , "arrowhead" ) } ) , i } function n ( e , t ) { var r = e . edge ( t ) , n = e . node ( t . v ) , a = e . node ( t . w ) , u = r . points . slice ( 1 , r . points . length - 1 ) ; return u . unshift ( c ( n , u [ 0 ] ) ) , u . push ( c ( a , u [ u . length - 1 ] ) ) , i ( r , u ) } function i ( e , t ) { var r = h . svg . line ( ) . x ( function ( e ) { return e . x } ) . y ( function ( e ) { return e . y } ) ; return s . has ( e , "lineInterpolate" ) && r . interpolate ( e . lineInterpolate ) , s . has ( e , "lineTension" ) && r . tension ( Number ( e . lineTension ) ) , r ( t ) } function a ( e ) { var t = e . getBBox ( ) , r = e . getTransformToElement ( e . ownerSVGElement ) . translate ( t . width / 2 , t . height / 2 ) ; return { x : r . e , y : r . f } } function u ( e , t ) { var r = e . enter ( ) . append ( "g" ) . attr ( "class" , "edgePath" ) . style ( "opacity" , 0
} return v } function n ( e , t ) { a . each ( e , function ( e ) { e . vs = a . flatten ( e . vs . map ( function ( e ) { return t [ e ] ? t [ e ] . vs : e } ) , ! 0 ) } ) } function i ( e , t ) { a . isUndefined ( e . barycenter ) ? ( e . barycenter = t . barycenter , e . weight = t . weight ) : ( e . barycenter = ( e . barycenter * e . weight + t . barycenter * t . weight ) / ( e . weight + t . weight ) , e . weight += t . weight ) } var a = e ( "../lodash" ) , u = e ( "./barycenter" ) , o = e ( "./resolve-conflicts" ) , s = e ( "./sort" ) ; t . exports = r } , { "../lodash" : 36 , "./barycenter" : 40 , "./resolve-conflicts" : 45 , "./sort" : 47 } ] , 47 : [ function ( e , t ) { function r ( e , t ) { var r = u . partition ( e , function ( e ) { return a . has ( e , "barycenter" ) } ) , o = r . lhs , s = a . sortBy ( r . rhs , function ( e ) { return - e . i } ) , c = [ ] , l = 0 , h = 0 , d = 0 ; o . sort ( i ( ! ! t ) ) , d = n ( c , s , d ) , a . each ( o , function ( e ) { d += e . vs . length , c . push ( e . vs ) , l += e . barycenter * e . weight , h += e . weight , d = n ( c , s , d ) } ) ; var p = { vs : a . flatten ( c , ! 0 ) } ; return h && ( p . barycenter = l / h , p . weight = h ) , p } function n ( e , t , r ) { for ( var n ; t . length && ( n = a . last ( t ) ) . i <= r ; ) t . pop ( ) , e . push ( n . vs ) , r ++ ; return r } function i ( e ) { return function ( t , r ) { return t . barycenter < r . barycenter ? - 1 : t . barycenter > r . barycenter ? 1 : e ? r . i - t . i : t . i - r . i } } var a = e ( "../lodash" ) , u = e ( "../util" ) ; t . exports = r } , { "../lodash" : 36 , "../util" : 55 } ] , 48 : [ function ( e , t ) { function r ( e ) { var t = i ( e ) ; a . each ( e . graph ( ) . dummyChains , function ( r ) { for ( var i = e . node ( r ) , a = i . edgeObj , u = n ( e , t , a . v , a . w ) , o = u . path , s = u . lca , c = 0 , l = o [ c ] , h = ! 0 ; r !== a . w ; ) { if ( i = e . node ( r ) , h ) { for ( ; ( l = o [ c ] ) !== s && e . node ( l ) . maxRank < i . rank ; ) c ++ ; l === s && ( h = ! 1 ) } if ( ! h ) { for ( ; c < o . length - 1 && e . node ( l = o [ c + 1 ] ) . minRank <= i . rank ; ) c ++ ; l = o [ c ] } e . setParent ( r , l ) , r = e . successors ( r ) [ 0 ] } } ) } function n ( e , t , r , n ) { var i , a , u = [ ] , o = [ ] , s = Math . min ( t [ r ] . low , t [ n ] . low ) , c = Math . max ( t [ r ] . lim , t [ n ] . lim ) ; i = r ; do i = e . parent ( i ) , u . push ( i ) ; while ( i && ( t [ i ] . low > s || c > t [ i ] . lim ) ) ; for ( a = i , i = n ; ( i = e . parent ( i ) ) !== a ; ) o . push ( i ) ; return { path : u . concat ( o . reverse ( ) ) , lca : a } } function i ( e ) { function t ( i ) { var u = n ; a . each ( e . children ( i ) , t ) , r [ i ] = { low : u , lim : n ++ } } var r = { } , n = 0 ; return a . each ( e . children ( ) , t ) , r } var a = e ( "./lodash" ) ; t . exports = r } , { "./lodash" : 36 } ] , 49 : [ function ( e , t ) { "use strict" ; function r ( e , t ) { function r ( t , r ) { var u = 0 , o = 0 , s = t . length , c = y . last ( r ) ; return y . each ( r , function ( t , l ) { var h = i ( e , t ) , d = h ? e . node ( h ) . order : s ; ( h || t === c ) && ( y . each ( r . slice ( o , l + 1 ) , function ( t ) { y . each ( e . predecessors ( t ) , function ( r ) { var i = e . node ( r ) , o = i . order ; ! ( u > o || o > d ) || i . dummy && e . node ( t ) . dummy || a ( n , r , t ) } ) } ) , o = l + 1 , u = d ) } ) , r } var n = { } ; return y . reduce ( t , r ) , n } function n ( e , t ) { function r ( t , r , n , u , o ) { var s ; y . each ( y . range ( r , n ) , function ( r ) { s = t [ r ] , e . node ( s ) . dummy && y . each ( e . predecessors ( s ) , function ( t ) { var r = e . node ( t ) ; r . dummy && ( r . order < u || r . order > o ) && a ( i , t , s ) } ) } ) } function n ( t , n ) { var i , a = - 1 , u = 0 ; return y . each ( n , function ( o , s ) { if ( "border" === e . node ( o ) . dummy ) { var c = e . predecessors ( o ) ; c . length && ( i = e . node ( c [ 0 ] ) . order , r ( n , u , s , a , i ) , u = s , a = i ) } r ( n , u , n . length , i , t . length ) } ) , n } var i = { } ; return y . reduce ( t , n ) , i } function i ( e , t ) { return e . node ( t ) . dummy ? y . find ( e . predecessors ( t ) , function ( t ) { return e . node ( t ) . dummy } ) : void 0 } function a ( e , t , r ) { if ( t > r ) { var n = t ; t = r , r = n } var i = e [ t ] ; i || ( e [ t ] = i = { } ) , i [ r ] = ! 0 } function u ( e , t , r ) { if ( t > r ) { var n = t ; t = r , r = n } return y . has ( e [ t ] , r ) } function o ( e , t , r , n ) { var i = { } , a = { } , o = { } ; return y . each ( t , function ( e ) { y . each ( e , function ( e , t ) { i [ e ] = e , a [ e ] = e , o [ e ] = t } ) } ) , y . each ( t , function ( e ) { var t = - 1 ; y . each ( e , function ( e ) { var s = n ( e ) ; if ( s . length ) { s = y . sortBy ( s , function ( e ) { return o [ e ] } ) ; for ( var c = ( s . length - 1 ) / 2 , l = Math . floor ( c ) , h = Math . ceil ( c ) ; h >= l ; ++ l ) { var d = s [ l ] ; a [ e ] === e && t < o [ d ] && ! u ( r , e , d ) && ( a [ d ] = e , a [ e ] = i [ e ] = i [ d ] , t = o [ d ] ) } } } ) } ) , { root : i , align : a } } function s ( e , t , r , n , i ) { var a = { } , u = { } , o = { } , s = { } , l = { } , h = e . graph ( ) , d = f ( h . nodesep , h . edgesep , i ) ; return y . each ( t , function ( e ) { y . each ( e , function ( t , r ) { o [ t ] = t , a [ t ] = Number . POSITIVE _INFINITY , l [ t ] = e [ r - 1 ] } ) } ) , y . each ( e . nodes ( ) , function ( i ) { r [ i ] === i && c ( e , t , d , r , n , a , u , o , l , s , i ) } ) , y . each ( t , function ( e ) { y . each ( e , function ( e ) { if ( s [ e ] = s [ r [ e ] ] , e === r [ e ] && a [ o [ r [ e ] ] ] < Number . POSITIVE _INFINITY ) { s [ e ] += a [ o [ r [ e ] ] ] ; var t = u [ o [ r [ e ] ] ] ; t && a [ t ] !== Number . POSITIVE _INFINITY && ( s [ e ] += a [ t ] ) } } ) } ) , s } function c ( e , t , r , n , i , a , u , o , s , l , h ) { if ( ! y . has ( l , h ) ) { l [ h ] = 0 ; var d , p = h ; do { if ( s [ p ] ) { d = n [ s [ p ] ] , c ( e , t , r , n , i , a , u , o , s , l , d ) , o [ h ] === h && ( o [ h ] = o [ d ] ) ; var f = r ( e , p , s [ p ] ) ; o [ h ] !== o [ d ] ? ( a [ o [ d ] ] = Math . min ( a [ o [ d ] ] , l [ h ] - l [ d ] - f ) , u [ o [ d ] ] = o [ h ] ) : l [ h ] = Math . max ( l [ h ] , l [ d ] + f ) } p = i [ p ] } while ( p !== h ) } } function l ( e , t ) { retur
return u && ( e = u . v , t = u . w , delete this . _edgeLabels [ n ] , delete this . _edgeObjs [ n ] , i ( this . _preds [ t ] , e ) , i ( this . _sucs [ e ] , t ) , delete this . _in [ t ] [ n ] , delete this . _out [ e ] [ n ] , this . _edgeCount -- ) , this } , r . prototype . inEdges = function ( e , t ) { var r = this . _in [ e ] ; if ( r ) { var n = s . values ( r ) ; return t ? s . filter ( n , function ( e ) { return e . v === t } ) : n } } , r . prototype . outEdges = function ( e , t ) { var r = this . _out [ e ] ; if ( r ) { var n = s . values ( r ) ; return t ? s . filter ( n , function ( e ) { return e . w === t } ) : n } } , r . prototype . nodeEdges = function ( e , t ) { var r = this . inEdges ( e , t ) ; return r ? r . concat ( this . outEdges ( e , t ) ) : void 0 } } , { "./lodash" : 95 } ] , 93 : [ function ( e , t , r ) { arguments [ 4 ] [ 73 ] [ 0 ] . apply ( r , arguments ) } , { "./graph" : 92 , "./version" : 96 } ] , 94 : [ function ( e , t , r ) { arguments [ 4 ] [ 74 ] [ 0 ] . apply ( r , arguments ) } , { "./graph" : 92 , "./lodash" : 95 } ] , 95 : [ function ( e , t ) { t . exports = e ( 20 ) } , { lodash : 101 } ] , 96 : [ function ( e , t ) { t . exports = "0.9.1" } , { } ] , 97 : [ function ( ) { } , { } ] , 98 : [ function ( e , t , r ) { ( function ( e ) { function t ( e , t ) { for ( var r = 0 , n = e . length - 1 ; n >= 0 ; n -- ) { var i = e [ n ] ; "." === i ? e . splice ( n , 1 ) : ".." === i ? ( e . splice ( n , 1 ) , r ++ ) : r && ( e . splice ( n , 1 ) , r -- ) } if ( t ) for ( ; r -- ; r ) e . unshift ( ".." ) ; return e } function n ( e , t ) { if ( e . filter ) return e . filter ( t ) ; for ( var r = [ ] , n = 0 ; n < e . length ; n ++ ) t ( e [ n ] , n , e ) && r . push ( e [ n ] ) ; return r } var i = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ , a = function ( e ) { return i . exec ( e ) . slice ( 1 ) } ; r . resolve = function ( ) { for ( var r = "" , i = ! 1 , a = arguments . length - 1 ; a >= - 1 && ! i ; a -- ) { var u = a >= 0 ? arguments [ a ] : e . cwd ( ) ; if ( "string" != typeof u ) throw new TypeError ( "Arguments to path.resolve must be strings" ) ; u && ( r = u + "/" + r , i = "/" === u . charAt ( 0 ) ) } return r = t ( n ( r . split ( "/" ) , function ( e ) { return ! ! e } ) , ! i ) . join ( "/" ) , ( i ? "/" : "" ) + r || "." } , r . normalize = function ( e ) { var i = r . isAbsolute ( e ) , a = "/" === u ( e , - 1 ) ; return e = t ( n ( e . split ( "/" ) , function ( e ) { return ! ! e } ) , ! i ) . join ( "/" ) , e || i || ( e = "." ) , e && a && ( e += "/" ) , ( i ? "/" : "" ) + e } , r . isAbsolute = function ( e ) { return "/" === e . charAt ( 0 ) } , r . join = function ( ) { var e = Array . prototype . slice . call ( arguments , 0 ) ; return r . normalize ( n ( e , function ( e ) { if ( "string" != typeof e ) throw new TypeError ( "Arguments to path.join must be strings" ) ; return e } ) . join ( "/" ) ) } , r . relative = function ( e , t ) { function n ( e ) { for ( var t = 0 ; t < e . length && "" === e [ t ] ; t ++ ) ; for ( var r = e . length - 1 ; r >= 0 && "" === e [ r ] ; r -- ) ; return t > r ? [ ] : e . slice ( t , r - t + 1 ) } e = r . resolve ( e ) . substr ( 1 ) , t = r . resolve ( t ) . substr ( 1 ) ; for ( var i = n ( e . split ( "/" ) ) , a = n ( t . split ( "/" ) ) , u = Math . min ( i . length , a . length ) , o = u , s = 0 ; u > s ; s ++ ) if ( i [ s ] !== a [ s ] ) { o = s ; break } for ( var c = [ ] , s = o ; s < i . length ; s ++ ) c . push ( ".." ) ; return c = c . concat ( a . slice ( o ) ) , c . join ( "/" ) } , r . sep = "/" , r . delimiter = ":" , r . dirname = function ( e ) { var t = a ( e ) , r = t [ 0 ] , n = t [ 1 ] ; return r || n ? ( n && ( n = n . substr ( 0 , n . length - 1 ) ) , r + n ) : "." } , r . basename = function ( e , t ) { var r = a ( e ) [ 2 ] ; return t && r . substr ( - 1 * t . length ) === t && ( r = r . substr ( 0 , r . length - t . length ) ) , r } , r . extname = function ( e ) { return a ( e ) [ 3 ] } ; var u = "b" === "ab" . substr ( - 1 ) ? function ( e , t , r ) { return e . substr ( t , r ) } : function ( e , t , r ) { return 0 > t && ( t = e . length + t ) , e . substr ( t , r ) } } ) . call ( this , e ( "1YiZ5S" ) ) } , { "1YiZ5S" : 99 } ] , 99 : [ function ( e , t ) { function r ( ) { } var n = t . exports = { } ; n . nextTick = function ( ) { var e = "undefined" != typeof window && window . setImmediate , t = "undefined" != typeof window && window . postMessage && window . addEventListener ; if ( e ) return function ( e ) { return window . setImmediate ( e ) } ; if ( t ) { var r = [ ] ; return window . addEventListener ( "message" , function ( e ) { var t = e . source ; if ( ( t === window || null === t ) && "process-tick" === e . data && ( e . stopPropagation ( ) , r . length > 0 ) ) { var n = r . shift ( ) ; n ( ) } } , ! 0 ) , function ( e ) { r . push ( e ) , window . postMessage ( "process-tick" , "*" ) } } return function ( e ) { setTimeout ( e , 0 ) } } ( ) , n . title = "browser" , n . browser = ! 0 , n . env = { } , n . argv = [ ] , n . on = r , n . addListener = r , n . once = r , n . off = r , n . removeListener = r , n . removeAllListeners = r , n . emit = r , n . binding = function ( ) { throw new Error ( "process.binding is not supported" ) } , n . cwd = function ( ) { return "/" } , n . chdir = function ( ) { throw new Error ( "process.chdir is not supported" ) } } , { } ] , 100 : [ function ( e , t , r ) { ( function ( e ) { ! function ( n ) { var i = "object" == typeof r && r , a = "object" == typeof t && t && t . exports == i && t , u = "object" == typeof e && e ; ( u . global === u || u . window === u ) && ( n = u ) ; var o = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g , s = /[\x01-\x7F]/g , c = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g , l = / < \ u 2 0 D 2 | = \ u 2 0 E 5 | > \ u 2 0 D 2 | \ u 2 0 5 F \ u 2 0 0 A | \ u 2 1 9 D \ u
} , D = function ( e , t ) { for ( var r = - 1 , n = e . length ; ++ r < n ; ) if ( e [ r ] == t ) return ! 0 ; return ! 1 } , k = function ( e , t ) { if ( ! e ) return t ; var r , n = { } ; for ( r in t ) n [ r ] = _ ( e , r ) ? e [ r ] : t [ r ] ; return n } , C = function ( e , t ) { var r = "" ; return e >= 55296 && 57343 >= e || e > 1114111 ? ( t && B ( "character reference outside the permissible Unicode range" ) , "<22> " ) : _ ( b , e ) ? ( t && B ( "disallowed character reference" ) , b [ e ] ) : ( t && D ( A , e ) && B ( "disallowed character reference" ) , e > 65535 && ( e -= 65536 , r += w ( e >>> 10 & 1023 | 55296 ) , e = 56320 | 1023 & e ) , r += w ( e ) ) } , F = function ( e ) { return "&#x" + e . charCodeAt ( 0 ) . toString ( 16 ) . toUpperCase ( ) + ";" } , B = function ( e ) { throw Error ( "Parse error: " + e ) } , S = function ( e , t ) { t = k ( t , S . options ) ; var r = t . strict ; r && g . test ( e ) && B ( "forbidden code point" ) ; var n = t . encodeEverything , i = t . useNamedReferences , a = t . allowUnsafeSymbols ; return n ? ( e = e . replace ( s , function ( e ) { return i && _ ( h , e ) ? "&" + h [ e ] + ";" : F ( e ) } ) , i && ( e = e . replace ( />\u20D2/g , ">⃒" ) . replace ( /<\u20D2/g , "<⃒" ) . replace ( /fj/g , "fj" ) ) , i && ( e = e . replace ( l , function ( e ) { return "&" + h [ e ] + ";" } ) ) ) : i ? ( a || ( e = e . replace ( d , function ( e ) { return "&" + h [ e ] + ";" } ) ) , e = e . replace ( />\u20D2/g , ">⃒" ) . replace ( /<\u20D2/g , "<⃒" ) , e = e . replace ( l , function ( e ) { return "&" + h [ e ] + ";" } ) ) : a || ( e = e . replace ( d , F ) ) , e . replace ( o , function ( e ) { var t = e . charCodeAt ( 0 ) , r = e . charCodeAt ( 1 ) , n = 1024 * ( t - 55296 ) + r - 56320 + 65536 ; return "&#x" + n . toString ( 16 ) . toUpperCase ( ) + ";" } ) . replace ( c , F ) } ; S . options = { allowUnsafeSymbols : ! 1 , encodeEverything : ! 1 , strict : ! 1 , useNamedReferences : ! 1 } ; var L = function ( e , t ) { t = k ( t , L . options ) ; var r = t . strict ; return r && f . test ( e ) && B ( "malformed character reference" ) , e . replace ( y , function ( e , n , i , a , u , o , s , c ) { var l , h , d , p , f ; return n ? ( l = n , h = i , r && ! h && B ( "character reference was not terminated by a semicolon" ) , C ( l , r ) ) : a ? ( d = a , h = u , r && ! h && B ( "character reference was not terminated by a semicolon" ) , l = parseInt ( d , 16 ) , C ( l , r ) ) : o ? ( p = o , _ ( m , p ) ? m [ p ] : ( r && B ( "named character reference was not terminated by a semicolon" ) , e ) ) : ( p = s , f = c , f && t . isAttributeValue ? ( r && "=" == f && B ( "`&` did not start a character reference" ) , e ) : ( r && B ( "named character reference was not terminated by a semicolon" ) , v [ p ] + ( f || "" ) ) ) } ) } ; L . options = { isAttributeValue : ! 1 , strict : ! 1 } ; var T = function ( e ) { return e . replace ( d , function ( e ) { return p [ e ] } ) } , N = { version : "0.5.0" , encode : S , decode : L , escape : T , unescape : L } ; if ( "function" == typeof define && "object" == typeof define . amd && define . amd ) define ( function ( ) { return N } ) ; else if ( i && ! i . nodeType ) if ( a ) a . exports = N ; else for ( var q in N ) _ ( N , q ) && ( i [ q ] = N [ q ] ) ; else n . he = N } ( this ) } ) . call ( this , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } ) } , { } ] , 101 : [ function ( e , t , r ) { ( function ( e ) { ( function ( ) { function n ( e , t , r ) { for ( var n = ( r || 0 ) - 1 , i = e ? e . length : 0 ; ++ n < i ; ) if ( e [ n ] === t ) return n ; return - 1 } function i ( e , t ) { var r = typeof t ; if ( e = e . cache , "boolean" == r || null == t ) return e [ t ] ? 0 : - 1 ; "number" != r && "string" != r && ( r = "object" ) ; var i = "number" == r ? t : A + t ; return e = ( e = e [ r ] ) && e [ i ] , "object" == r ? e && n ( e , t ) > - 1 ? 0 : - 1 : e ? 0 : - 1 } function a ( e ) { var t = this . cache , r = typeof e ; if ( "boolean" == r || null == e ) t [ e ] = ! 0 ; else { "number" != r && "string" != r && ( r = "object" ) ; var n = "number" == r ? e : A + e , i = t [ r ] || ( t [ r ] = { } ) ; "object" == r ? ( i [ n ] || ( i [ n ] = [ ] ) ) . push ( e ) : i [ n ] = ! 0 } } function u ( e ) { return e . charCodeAt ( 0 ) } function o ( e , t ) { for ( var r = e . criteria , n = t . criteria , i = - 1 , a = r . length ; ++ i < a ; ) { var u = r [ i ] , o = n [ i ] ; if ( u !== o ) { if ( u > o || "undefined" == typeof u ) return 1 ; if ( o > u || "undefined" == typeof o ) return - 1 } } return e . index - t . index } function s ( e ) { var t = - 1 , r = e . length , n = e [ 0 ] , i = e [ r / 2 | 0 ] , u = e [ r - 1 ] ; if ( n && "object" == typeof n && i && "object" == typeof i && u && "object" == typeof u ) return ! 1 ; var o = h ( ) ; o [ "false" ] = o [ "null" ] = o [ "true" ] = o . undefined = ! 1 ; var s = h ( ) ; for ( s . array = e , s . cache = o , s . push = a ; ++ t < r ; ) s . push ( e [ t ] ) ; return s } function c ( e ) { return "\\" + K [ e ] } function l ( ) { return m . pop ( ) || [ ] } function h ( ) { return v . pop ( ) || { array : null , cache : null , criteria : null , "false" : ! 1 , index : 0 , "null" : ! 1 , number : null , object : null , push : null , string : null , "true" : ! 1 , undefined : ! 1 , value : null } } function d ( e ) { e . length = 0 , m . length < E && m . push ( e ) } function p ( e ) { var t = e . cache ; t && p ( t ) , e . array = e . cache = e . criteria = e . object = e . number = e . string = e . value = null , v . length < E && v . push ( e ) } function f ( e , t , r ) { t || ( t = 0 ) , "undefined" == typeof r && ( r = e ? e . length : 0 ) ; for ( var n = - 1 , i = r - t || 0 , a = Array ( 0 > i ? 0 : i ) ; ++ n < i ; ) a [ n ] = e [ t + n ] ; return a } fu
} , { } ] , 103 : [ function ( e , t , r ) { var n = e ( "./graphDb" ) , i = e ( "./parser/flow" ) , a = e ( "./parser/dot" ) , u = e ( "dagre-d3" ) ; r . addVertices = function ( e , t ) { var r = Object . keys ( e ) , n = function ( e , t ) { var r ; for ( r = 0 ; r < t . length ; r ++ ) "undefined" != typeof t [ r ] && ( e = e + t [ r ] + ";" ) ; return e } ; r . forEach ( function ( r ) { var i , a = e [ r ] , u = "" ; a . classes . length > 0 && ( u = a . classes . join ( " " ) ) ; var o = "" ; o = n ( o , a . styles ) , i = "undefined" == typeof a . text ? a . id : a . text ; var s = 0 , c = "" ; switch ( a . type ) { case "round" : s = 5 , c = "rect" ; break ; case "square" : c = "rect" ; break ; case "diamond" : c = "question" ; break ; case "odd" : c = "rect_left_inv_arrow" ; break ; case "circle" : c = "circle" ; break ; default : c = "rect" } t . setNode ( a . id , { labelType : "html" , shape : c , label : i , rx : s , ry : s , "class" : u , style : o , id : a . id } ) } ) } , r . addEdges = function ( e , t ) { var r , n = 0 ; e . forEach ( function ( e ) { n ++ , r = "arrow_open" === e . type ? "none" : "normal" ; var i = "" ; "undefined" != typeof e . style && e . style . forEach ( function ( e ) { i = i + e + ";" } ) , "undefined" == typeof e . text ? "undefined" == typeof e . style ? t . setEdge ( e . start , e . end , { style : "stroke: #333; stroke-width: 1.5px;fill:none" , arrowheadStyle : "fill: #333" , arrowhead : r } , n ) : t . setEdge ( e . start , e . end , { style : i , arrowheadStyle : "fill: #333" , arrowhead : r } , n ) : "undefined" == typeof e . style ? t . setEdge ( e . start , e . end , { labelType : "html" , style : "stroke: #333; stroke-width: 1.5px;fill:none" , labelpos : "c" , label : '<span style="background:#e8e8e8">' + e . text + "</span>" , arrowheadStyle : "fill: #333" , arrowhead : r } , n ) : t . setEdge ( e . start , e . end , { labelType : "html" , style : i , arrowheadStyle : "fill: #333" , label : e . text , arrowhead : r } , n ) } ) } , r . getClasses = function ( e , t ) { var r ; n . clear ( ) , r = t ? a . parser : i . parser , r . yy = n , r . parse ( e ) ; var u = n . getClasses ( ) ; return "undefined" == typeof u . default && ( u . default = { id : "default" } , u . default . styles = [ "fill:#eaeaea" , "stroke:#666" , "stroke-width:1.5px" ] ) , u } , r . draw = function ( e , t , o ) { var s ; n . clear ( ) , s = o ? a . parser : i . parser , s . yy = n , s . parse ( e ) ; var c ; c = n . getDirection ( ) , "undefined" == typeof c && ( c = "TD" ) ; var l = new u . graphlib . Graph ( { multigraph : ! 0 } ) . setGraph ( { rankdir : c , marginx : 20 , marginy : 20 } ) . setDefaultEdgeLabel ( function ( ) { return { } } ) , h = n . getVertices ( ) , d = n . getEdges ( ) ; r . addVertices ( h , l ) , r . addEdges ( d , l ) ; var p = new u . render ; p . shapes ( ) . question = function ( e , t , r ) { var n = t . width , i = t . height , a = . 8 * ( n + i ) , o = [ { x : a / 2 , y : 0 } , { x : a , y : - a / 2 } , { x : a / 2 , y : - a } , { x : 0 , y : - a / 2 } ] , s = e . insert ( "polygon" , ":first-child" ) . attr ( "points" , o . map ( function ( e ) { return e . x + "," + e . y } ) . join ( " " ) ) . attr ( "rx" , 5 ) . attr ( "ry" , 5 ) . attr ( "transform" , "translate(" + - a / 2 + "," + 2 * a / 4 + ")" ) ; return r . intersect = function ( e ) { return u . intersect . polygon ( r , o , e ) } , s } , p . shapes ( ) . rect _left _inv _arrow = function ( e , t , r ) { var n = t . width , i = t . height , a = [ { x : - i / 2 , y : 0 } , { x : n , y : 0 } , { x : n , y : - i } , { x : - i / 2 , y : - i } , { x : 0 , y : - i / 2 } ] , o = e . insert ( "polygon" , ":first-child" ) . attr ( "points" , a . map ( function ( e ) { return e . x + "," + e . y } ) . join ( " " ) ) . attr ( "transform" , "translate(" + - n / 2 + "," + 2 * i / 4 + ")" ) ; return r . intersect = function ( e ) { return u . intersect . polygon ( r , a , e ) } , o } , p . arrows ( ) . none = function ( e , t , r , n ) { var i = e . append ( "marker" ) . attr ( "id" , t ) . attr ( "viewBox" , "0 0 10 10" ) . attr ( "refX" , 9 ) . attr ( "refY" , 5 ) . attr ( "markerUnits" , "strokeWidth" ) . attr ( "markerWidth" , 8 ) . attr ( "markerHeight" , 6 ) . attr ( "orient" , "auto" ) , a = i . append ( "path" ) . attr ( "d" , "M 0 0 L 0 0 L 0 0 z" ) ; u . util . applyStyle ( a , r [ n + "Style" ] ) } ; var f = d3 . select ( "#" + t ) ; svgGroup = d3 . select ( "#" + t + " g" ) , p ( d3 . select ( "#" + t + " g" ) , l ) ; var g = document . querySelector ( "#mermaidChart0" ) ; f . attr ( "height" , l . graph ( ) . height ) , f . attr ( "width" , l . graph ( ) . width ) , f . attr ( "viewBox" , g . getBBox ( ) . x + " 0 " + l . graph ( ) . width + " " + l . graph ( ) . height ) } } , { "./graphDb" : 104 , "./parser/dot" : 105 , "./parser/flow" : 106 , "dagre-d3" : 1 } ] , 104 : [ function ( require , module , exports ) { var vertices = { } , edges = [ ] , classes = [ ] , direction , funs = [ ] ; exports . addVertex = function ( e , t , r , n ) { "undefined" != typeof e && 0 !== e . trim ( ) . length && ( "undefined" == typeof vertices [ e ] && ( vertices [ e ] = { id : e , styles : [ ] , classes : [ ] } ) , "undefined" != typeof t && ( vertices [ e ] . text = t ) , "undefined" != typeof r && ( vertices [ e ] . type = r ) , "undefined" != typeof r && ( vertices [ e ] . type = r ) , "undefined" != typeof n && null !== n && n . forEach ( function ( t ) { vertices [ e ] . styles . push ( t ) } ) ) } , exports . addLink = function ( e , t , r , n ) { var i = { start : e , end : t , type : void 0 , text : "" } ; n = r . text , "undefined" != typeof n && ( i . text = n ) , "undefined" != typeof r && ( i . type = r . type ) , edges . push ( i
this . trace ( e ) } , parse : function ( e ) { function t ( ) { var e ; return e = f . lex ( ) || d , "number" != typeof e && ( e = r . symbols _ [ e ] || e ) , e } var r = this , n = [ 0 ] , i = [ null ] , a = [ ] , u = this . table , o = "" , s = 0 , c = 0 , l = 0 , h = 2 , d = 1 , p = a . slice . call ( arguments , 1 ) , f = Object . create ( this . lexer ) , g = { yy : { } } ; for ( var y in this . yy ) Object . prototype . hasOwnProperty . call ( this . yy , y ) && ( g . yy [ y ] = this . yy [ y ] ) ; f . setInput ( e , g . yy ) , g . yy . lexer = f , g . yy . parser = this , "undefined" == typeof f . yylloc && ( f . yylloc = { } ) ; var m = f . yylloc ; a . push ( m ) ; var v = f . options && f . options . ranges ; this . parseError = "function" == typeof g . yy . parseError ? g . yy . parseError : Object . getPrototypeOf ( this ) . parseError ; for ( var b , A , w , E , x , _ , D , k , C , F = { } ; ; ) { if ( w = n [ n . length - 1 ] , this . defaultActions [ w ] ? E = this . defaultActions [ w ] : ( ( null === b || "undefined" == typeof b ) && ( b = t ( ) ) , E = u [ w ] && u [ w ] [ b ] ) , "undefined" == typeof E || ! E . length || ! E [ 0 ] ) { var B = "" ; C = [ ] ; for ( _ in u [ w ] ) this . terminals _ [ _ ] && _ > h && C . push ( "'" + this . terminals _ [ _ ] + "'" ) ; B = f . showPosition ? "Parse error on line " + ( s + 1 ) + ":\n" + f . showPosition ( ) + "\nExpecting " + C . join ( ", " ) + ", got '" + ( this . terminals _ [ b ] || b ) + "'" : "Parse error on line " + ( s + 1 ) + ": Unexpected " + ( b == d ? "end of input" : "'" + ( this . terminals _ [ b ] || b ) + "'" ) , this . parseError ( B , { text : f . match , token : this . terminals _ [ b ] || b , line : f . yylineno , loc : m , expected : C } ) } if ( E [ 0 ] instanceof Array && E . length > 1 ) throw new Error ( "Parse Error: multiple actions possible at state: " + w + ", token: " + b ) ; switch ( E [ 0 ] ) { case 1 : n . push ( b ) , i . push ( f . yytext ) , a . push ( f . yylloc ) , n . push ( E [ 1 ] ) , b = null , A ? ( b = A , A = null ) : ( c = f . yyleng , o = f . yytext , s = f . yylineno , m = f . yylloc , l > 0 && l -- ) ; break ; case 2 : if ( D = this . productions _ [ E [ 1 ] ] [ 1 ] , F . $ = i [ i . length - D ] , F . _$ = { first _line : a [ a . length - ( D || 1 ) ] . first _line , last _line : a [ a . length - 1 ] . last _line , first _column : a [ a . length - ( D || 1 ) ] . first _column , last _column : a [ a . length - 1 ] . last _column } , v && ( F . _$ . range = [ a [ a . length - ( D || 1 ) ] . range [ 0 ] , a [ a . length - 1 ] . range [ 1 ] ] ) , x = this . performAction . apply ( F , [ o , c , s , g . yy , E [ 1 ] , i , a ] . concat ( p ) ) , "undefined" != typeof x ) return x ; D && ( n = n . slice ( 0 , - 1 * D * 2 ) , i = i . slice ( 0 , - 1 * D ) , a = a . slice ( 0 , - 1 * D ) ) , n . push ( this . productions _ [ E [ 1 ] ] [ 0 ] ) , i . push ( F . $ ) , a . push ( F . _$ ) , k = u [ n [ n . length - 2 ] ] [ n [ n . length - 1 ] ] , n . push ( k ) ; break ; case 3 : return ! 0 } } return ! 0 } } , Dt = function ( ) { var e = { EOF : 1 , parseError : function ( e , t ) { if ( ! this . yy . parser ) throw new Error ( e ) ; this . yy . parser . parseError ( e , t ) } , setInput : function ( e , t ) { return this . yy = t || this . yy || { } , this . _input = e , this . _more = this . _backtrack = this . done = ! 1 , this . yylineno = this . yyleng = 0 , this . yytext = this . matched = this . match = "" , this . conditionStack = [ "INITIAL" ] , this . yylloc = { first _line : 1 , first _column : 0 , last _line : 1 , last _column : 0 } , this . options . ranges && ( this . yylloc . range = [ 0 , 0 ] ) , this . offset = 0 , this } , input : function ( ) { var e = this . _input [ 0 ] ; this . yytext += e , this . yyleng ++ , this . offset ++ , this . match += e , this . matched += e ; var t = e . match ( /(?:\r\n?|\n).*/g ) ; return t ? ( this . yylineno ++ , this . yylloc . last _line ++ ) : this . yylloc . last _column ++ , this . options . ranges && this . yylloc . range [ 1 ] ++ , this . _input = this . _input . slice ( 1 ) , e } , unput : function ( e ) { var t = e . length , r = e . split ( /(?:\r\n?|\n)/g ) ; this . _input = e + this . _input , this . yytext = this . yytext . substr ( 0 , this . yytext . length - t ) , this . offset -= t ; var n = this . match . split ( /(?:\r\n?|\n)/g ) ; this . match = this . match . substr ( 0 , this . match . length - 1 ) , this . matched = this . matched . substr ( 0 , this . matched . length - 1 ) , r . length - 1 && ( this . yylineno -= r . length - 1 ) ; var i = this . yylloc . range ; return this . yylloc = { first _line : this . yylloc . first _line , last _line : this . yylineno + 1 , first _column : this . yylloc . first _column , last _column : r ? ( r . length === n . length ? this . yylloc . first _column : 0 ) + n [ n . length - r . length ] . length - r [ 0 ] . length : this . yylloc . first _column - t } , this . options . ranges && ( this . yylloc . range = [ i [ 0 ] , i [ 0 ] + this . yyleng - t ] ) , this . yyleng = this . yytext . length , this } , more : function ( ) { return this . _more = ! 0 , this } , reject : function ( ) { return this . options . backtrack _lexer ? ( this . _backtrack = ! 0 , this ) : this . parseError ( "Lexical error on line " + ( this . yylineno + 1 ) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this . showPosition ( ) , { text : "" , token : null , line : this . yylineno } ) } , less : function ( e ) { this . unput ( this . match . slice ( e ) ) } , pastInput : function ( ) { var e = this . matched . substr ( 0 , this . matched . length - this . match . length ) ; return ( e . l
r . drawRect ( e , n ) ; t . y = t . y + t . labelMargin , t . x = t . x + . 5 * t . labelMargin , t . fill = "white" , r . drawText ( e , t ) } , r . getTextObj = function ( ) { var e = { x : 0 , y : 0 , fill : "black" , "text-anchor" : "start" , style : "#666" , width : 100 , height : 100 , textMargin : 0 , rx : 0 , ry : 0 } ; return e } , r . getNoteRect = function ( ) { var e = { x : 0 , y : 0 , fill : "#EDF2AE" , stroke : "#666" , width : 100 , anchor : "start" , height : 100 , rx : 0 , ry : 0 } ; return e } } , { } ] , 111 : [ function ( e , t , r ) { ( function ( t ) { var n = e ( "./diagrams/flowchart/graphDb" ) , i = e ( "./diagrams/flowchart/parser/flow" ) , a = e ( "./utils" ) , u = e ( "./diagrams/flowchart/flowRenderer" ) , o = e ( "./diagrams/sequenceDiagram/sequenceRenderer" ) , s = e ( "he" ) , c = function ( ) { var e , t = document . querySelectorAll ( ".mermaid" ) , r = 0 ; for ( e = 0 ; e < t . length ; e ++ ) { var i = t [ e ] ; if ( ! i . getAttribute ( "data-processed" ) ) { i . setAttribute ( "data-processed" , ! 0 ) ; var c ; c = "mermaidChart" + r , r ++ ; var l = i . innerHTML ; l = l . replace ( />/g , ">" ) , l = l . replace ( /</g , "<" ) , l = s . decode ( l ) . trim ( ) , i . innerHTML = '<svg id="' + c + '" width="100%" xmlns="http://www.w3.org/2000/svg"><g /></svg>' ; var h = a . detectType ( l ) , d = { } ; switch ( h ) { case "graph" : d = u . getClasses ( l , ! 1 ) , u . draw ( l , c , ! 1 ) , a . cloneCssStyles ( i . firstChild , d ) , n . bindFunctions ( ) ; break ; case "dotGraph" : d = u . getClasses ( l , ! 0 ) , u . draw ( l , c , ! 0 ) , a . cloneCssStyles ( i . firstChild , d ) ; break ; case "sequenceDiagram" : o . draw ( l , c ) , a . cloneCssStyles ( i . firstChild , [ ] ) } } } } ; r . tester = function ( ) { } , r . version = function ( ) { return e ( "../package.json" ) . version } ; var l = function ( e , t ) { return "undefined" == typeof t ? ! 1 : e === t } ; "undefined" != typeof document && document . addEventListener ( "DOMContentLoaded" , function ( ) { "undefined" != typeof mermaid _config ? l ( ! 0 , mermaid _config . startOnLoad ) && c ( ) : c ( ) } , ! 1 ) , t . mermaid = { init : function ( ) { c ( ) } , version : function ( ) { return r . version ( ) } , getParser : function ( ) { return i . parser } } } ) . call ( this , "undefined" != typeof self ? self : "undefined" != typeof window ? window : { } ) } , { "../package.json" : 102 , "./diagrams/flowchart/flowRenderer" : 103 , "./diagrams/flowchart/graphDb" : 104 , "./diagrams/flowchart/parser/flow" : 106 , "./diagrams/sequenceDiagram/sequenceRenderer" : 109 , "./utils" : 112 , he : 100 } ] , 112 : [ function ( e , t ) { t . exports . detectType = function ( e ) { return e . match ( /^\s*sequenceDiagram/ ) ? ( console . log ( "Detected sequenceDiagram syntax" ) , "sequenceDiagram" ) : e . match ( /^\s*sequence/ ) ? "sequence" : e . match ( /^\s*digraph/ ) ? ( console . log ( "Detected flow syntax" ) , "dotGraph" ) : "graph" } , t . exports . cloneCssStyles = function ( e , t ) { for ( var r = "" , n = document . styleSheets , i = 0 ; i < n . length ; i ++ ) if ( "mermaid-svg-internal-css" !== n [ i ] . title ) { var a = n [ i ] . cssRules ; if ( null !== a ) for ( var u = 0 ; u < a . length ; u ++ ) { var o = a [ u ] ; if ( "undefined" != typeof o . style ) { var s = e . querySelectorAll ( o . selectorText ) ; s . length > 0 && ( r += o . selectorText + " { " + o . style . cssText + " }\n" ) } } } var c = "" , l = "" ; for ( var h in t ) t . hasOwnProperty ( h ) && "undefined" != typeof h && ( "default" === h ? c = ".node { " + t [ h ] . styles . join ( "; " ) + "; }\n" : l += "." + h + " { " + t [ h ] . styles . join ( "; " ) + "; }\n" ) ; if ( "" !== r || "" !== c || "" !== l ) { var d = document . createElement ( "style" ) ; d . setAttribute ( "type" , "text/css" ) , d . setAttribute ( "title" , "mermaid-svg-internal-css" ) , d . innerHTML = "/* <![CDATA[ */\n" , "" !== c && ( d . innerHTML += c ) , "" !== r && ( d . innerHTML += r ) , "" !== l && ( d . innerHTML += l ) , d . innerHTML += "/* ]]> */\n" , e . insertBefore ( d , e . firstChild ) } } } , { } ] } , { } , [ 111 ] ) ;